UNPKG

@authup/core-kit

Version:

Package containing global constants, types & interfaces.

1,088 lines (1,087 loc) 33.7 kB
import { AuthupError } from "@authup/errors"; import { Container, ContainerOptions } from "validup"; import { DecisionStrategy, ObjectLiteral } from "@authup/kit"; import { JWKType, JWTAlgorithm, OAuth2SubKind } from "@authup/specs"; //#region src/constants.d.ts declare enum ValidatorGroup { CREATE = "create", UPDATE = "update" } //#endregion //#region src/domains/realm/constants.d.ts declare const REALM_MASTER_NAME = "master"; declare const REALM_NAME_REGEX: RegExp; //#endregion //#region src/domains/realm/entity.d.ts interface Realm { id: string; name: string; display_name: string | null; description: string | null; built_in: boolean; created_at: string; updated_at: string; } //#endregion //#region src/helpers/name-valid.d.ts type NameValidOptions = { throwOnFailure?: boolean; }; declare function isNameValid(input: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/realm/helpers.d.ts declare function isRealmNameValid(name: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/realm/validator.d.ts declare class RealmValidator extends Container<Realm> { protected initialize(): void; } //#endregion //#region src/domains/key/type.d.ts interface Key { id: string; /** * OCT, RSA or EC */ type: `${JWKType}`; /** * Algorithm for signing and verifying */ signature_algorithm: `${JWTAlgorithm}`; /** * Usage priority. */ priority: number; /** * aka private key */ decryption_key?: string | null; /** * aka public key */ encryption_key: string | null; created_at: Date | string; updated_at: Date | string; realm_id: Realm['id']; realm: Realm; } //#endregion //#region src/domains/client/entity.d.ts interface Client { id: string; active: boolean; built_in: boolean; is_confidential: boolean; name: string; display_name: string | null; description: string | null; secret: string | null; secret_hashed: boolean; secret_encrypted: boolean; redirect_uri: string | null; grant_types: string | null; scope: string | null; /** * Default redirect URL. */ base_url: string | null; /** * URL prepended to relative URLs. */ root_url: string | null; created_at: string; updated_at: string; realm_id: Realm['id']; realm: Realm; } //#endregion //#region src/domains/client/error.d.ts declare class ClientError extends AuthupError { static credentialsInvalid(): ClientError; static invalid(): ClientError; static notFound(): ClientError; static inactive(): ClientError; } //#endregion //#region src/domains/client/helpers.d.ts declare function isClientNameValid(name: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/client/validator.d.ts declare class ClientValidator extends Container<Client> { protected initialize(): void; } //#endregion //#region src/domains/authorization-code/entity.d.ts interface OAuth2AuthorizationCode { id: string; code_challenge?: string | null; code_challenge_method?: string | null; scope?: string | null; redirect_uri?: string | null; id_token?: string | null; nonce?: string | null; client_id?: Client['id'] | null; sub: string; sub_kind: `${OAuth2SubKind}`; realm_id: Realm['id']; realm_name: Realm['name']; } type OAuth2AuthorizationCodeRequest = { response_type: string; client_id?: string; realm_id?: string; redirect_uri?: string; scope?: string; state?: string; nonce?: string; code_challenge?: string; code_challenge_method?: string; }; //#endregion //#region src/domains/attempt-activation/entity.d.ts interface AttemptActivation { id: string; ip_address: string; user_agent: string; token: string | null; created_at: Date | string; updated_at: Date | string; } //#endregion //#region src/domains/user/entity.d.ts interface User { id: string; name: string; name_locked: boolean; first_name: string | null; last_name: string | null; display_name: string | null; email: string; password: string | null; avatar: string | null; cover: string | null; reset_hash: string | null; reset_at: string | null; reset_expires: string | null; status: string | null; status_message: string | null; active: boolean; activate_hash: string | null; created_at: Date; updated_at: Date; client_id: Client['id'] | null; client: Client | null; realm_id: Realm['id']; realm: Realm; [key: string]: any; } //#endregion //#region src/domains/user/error.d.ts declare class UserError extends AuthupError { static credentialsInvalid(): UserError; static notFound(): UserError; static inactive(): UserError; } //#endregion //#region src/domains/user/utils.d.ts declare function isUserNameValid(input: string, options?: NameValidOptions): boolean; declare function isValidUserEmail(input: string): boolean; declare function buildUserFakeEmail(input: string): string; declare function isUserFakeEmail(input: string): boolean; //#endregion //#region src/domains/user/validator.d.ts declare class UserValidator extends Container<User> { protected initialize(): void; } //#endregion //#region src/domains/attempt-login/entity.d.ts interface AttemptLogin { id: string; ip_address: string; user_agent: string; email: string; success: boolean; user: User; user_id: User['id']; created_at: Date | string; updated_at: Date | string; } //#endregion //#region src/domains/attempt-reset/entity.d.ts interface AttemptReset { id: string; ip_address: string; user_agent: string; email: string; token: string | null; created_at: Date | string; updated_at: Date | string; } //#endregion //#region src/domains/role/constants.d.ts declare const ROLE_ADMIN_NAME = "admin"; declare const ROLE_REALM_ADMIN_NAME = "realm_admin"; //#endregion //#region src/domains/role/entity.d.ts interface Role { id: string; built_in: boolean; name: string; display_name: string | null; target: string | null; description: string | null; client_id: Client['id'] | null; client: Client | null; realm_id: Realm['id'] | null; realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/role/utils.d.ts declare function isRoleNameValid(name: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/role/validator.d.ts declare class RoleValidator extends Container<Role> { protected initialize(): void; } //#endregion //#region src/domains/client-role/entity.d.ts interface ClientRole { id: string; client_id: string; role_id: string; role: Role; role_realm_id: Realm['id'] | null; role_realm: Realm | null; client: Client; client_realm_id: Realm['id'] | null; client_realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/client-role/validator.d.ts declare class ClientRoleValidator extends Container<ClientRole> { protected initialize(): void; } //#endregion //#region src/domains/permission/constants.d.ts declare enum PermissionName { CLIENT_CREATE = "client_create", CLIENT_DELETE = "client_delete", CLIENT_UPDATE = "client_update", CLIENT_READ = "client_read", CLIENT_SELF_MANAGE = "client_self_manage", CLIENT_PERMISSION_CREATE = "client_permission_create", CLIENT_PERMISSION_DELETE = "client_permission_delete", CLIENT_PERMISSION_READ = "client_permission_read", CLIENT_PERMISSION_UPDATE = "client_permission_update", CLIENT_ROLE_CREATE = "client_role_create", CLIENT_ROLE_DELETE = "client_role_delete", CLIENT_ROLE_UPDATE = "client_role_update", CLIENT_ROLE_READ = "client_role_read", CLIENT_SCOPE_CREATE = "client_scope_create", CLIENT_SCOPE_DELETE = "client_scope_delete", CLIENT_SCOPE_READ = "client_scope_read", IDENTITY_PROVIDER_CREATE = "identity_provider_create", IDENTITY_PROVIDER_DELETE = "identity_provider_delete", IDENTITY_PROVIDER_UPDATE = "identity_provider_update", IDENTITY_PROVIDER_READ = "identity_provider_read", IDENTITY_PROVIDER_ROLE_CREATE = "identity_provider_role_create", IDENTITY_PROVIDER_ROLE_DELETE = "identity_provider_role_delete", IDENTITY_PROVIDER_ROLE_UPDATE = "identity_provider_role_update", IDENTITY_PROVIDER_ROLE_READ = "identity_provider_role_read", PERMISSION_CREATE = "permission_create", PERMISSION_DELETE = "permission_delete", PERMISSION_UPDATE = "permission_update", PERMISSION_READ = "permission_read", REALM_CREATE = "realm_create", REALM_DELETE = "realm_delete", REALM_UPDATE = "realm_update", REALM_READ = "realm_read", ROBOT_CREATE = "robot_create", ROBOT_DELETE = "robot_delete", ROBOT_UPDATE = "robot_update", ROBOT_READ = "robot_read", ROBOT_SELF_MANAGE = "robot_self_manage", ROBOT_PERMISSION_CREATE = "robot_permission_create", ROBOT_PERMISSION_DELETE = "robot_permission_delete", ROBOT_PERMISSION_READ = "robot_permission_read", ROBOT_PERMISSION_UPDATE = "robot_permission_update", ROBOT_ROLE_CREATE = "robot_role_create", ROBOT_ROLE_DELETE = "robot_role_delete", ROBOT_ROLE_UPDATE = "robot_role_update", ROBOT_ROLE_READ = "robot_role_read", ROLE_CREATE = "role_create", ROLE_DELETE = "role_delete", ROLE_UPDATE = "role_update", ROLE_READ = "role_read", ROLE_PERMISSION_CREATE = "role_permission_create", ROLE_PERMISSION_DELETE = "role_permission_delete", ROLE_PERMISSION_READ = "role_permission_read", ROLE_PERMISSION_UPDATE = "role_permission_update", SCOPE_CREATE = "scope_create", SCOPE_DELETE = "scope_delete", SCOPE_UPDATE = "scope_update", SCOPE_READ = "scope_read", USER_CREATE = "user_create", USER_DELETE = "user_delete", USER_UPDATE = "user_update", USER_READ = "user_read", USER_SELF_MANAGE = "user_self_manage", USER_PERMISSION_CREATE = "user_permission_create", USER_PERMISSION_DELETE = "user_permission_delete", USER_PERMISSION_READ = "user_permission_read", USER_PERMISSION_UPDATE = "user_permission_update", USER_ROLE_CREATE = "user_role_create", USER_ROLE_DELETE = "user_role_delete", USER_ROLE_UPDATE = "user_role_update", USER_ROLE_READ = "user_role_read" } //#endregion //#region src/domains/policy/entity.d.ts type PolicyWithType<R extends Record<string, any> = Record<string, any>, T = string> = R & { type: T; }; interface Policy { id: string; built_in: boolean; type: string; name: string; display_name: string | null; description: string | null; invert: boolean; children: PolicyWithType<Policy>[]; parent_id: Policy['id'] | null; parent: PolicyWithType<Policy> | null; realm_id: Realm['id'] | null; realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/policy/helpers.d.ts declare function isPolicyNameValid(name: string, options?: NameValidOptions): boolean; declare function isPolicy(input: Record<string, any>): input is Policy; //#endregion //#region src/domains/policy/validator.d.ts declare class PolicyValidator extends Container<Policy> { protected initialize(): void; } //#endregion //#region src/domains/permission/entity.d.ts interface PermissionRelation { policy_id: Policy['id'] | null; policy: Policy | null; permission_id: Permission['id']; permission: Permission; permission_realm_id: Realm['id'] | null; permission_realm: Realm | null; } interface Permission { id: string; built_in: boolean; name: string; display_name: string | null; description: string | null; decision_strategy: `${DecisionStrategy}` | null; client_id: Client['id'] | null; client: Client | null; realm_id: Realm['id'] | null; realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/permission/helpers.d.ts declare function isPermissionNameValid(name: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/permission/validator.d.ts declare class PermissionValidator extends Container<Permission> { protected initialize(): void; } //#endregion //#region src/domains/client-permission/entity.d.ts interface ClientPermission extends PermissionRelation { id: string; created_at: Date; updated_at: Date; client_id: string; client: Client; client_realm_id: Realm['id'] | null; client_realm: Realm | null; } //#endregion //#region src/domains/client-permission/validator.d.ts declare class ClientPermissionValidator extends Container<ClientPermission> { protected initialize(): void; } //#endregion //#region src/domains/scope/constants.d.ts declare enum ScopeName { /** * Full permissions */ GLOBAL = "global", /** * for Openid usage (id-token) */ OPEN_ID = "openid", /** * /users/@me with email (userinfo & id-token) */ EMAIL = "email", /** * Roles array (id-token) */ ROLES = "roles", /** * /users/@me without email (userinfo & id-token) */ IDENTITY = "identity" } //#endregion //#region src/domains/scope/entity.d.ts interface Scope { id: string; built_in: boolean; name: string; display_name: string | null; description: string | null; realm_id: Realm['id'] | null; realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/scope/utils.d.ts declare function isScopeNameValid(name: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/scope/validator.d.ts declare class ScopeValidator extends Container<Scope> { protected initialize(): void; } //#endregion //#region src/domains/client-scope/entity.d.ts interface ClientScope { id: string; default: boolean; client_id: Client['id']; client: Client; client_realm_id: Realm['id'] | null; client_realm: Realm | null; scope_id: Scope['id']; scope: Scope; scope_realm_id: Realm['id'] | null; scope_realm: Realm | null; } //#endregion //#region src/domains/client-scope/validator.d.ts declare class ClientScopeValidator extends Container<ClientScope> { protected initialize(): void; } //#endregion //#region src/domains/identity/constants.d.ts declare enum IdentityType { CLIENT = "client", ROBOT = "robot", USER = "user" } //#endregion //#region src/domains/robot/entity.d.ts interface Robot { id: string; secret: string; name: string; display_name: string | null; description: string; active: boolean; created_at: Date; updated_at: Date; user_id: User['id'] | null; user: User | null; client_id: Client['id'] | null; client: Client | null; realm_id: Realm['id']; realm: Realm; } //#endregion //#region src/domains/robot/helpers.d.ts declare function isRobotNameValid(name: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/robot/error.d.ts declare class RobotError extends AuthupError { static credentialsInvalid(): RobotError; static notFound(): RobotError; static inactive(): RobotError; } //#endregion //#region src/domains/robot/validator.d.ts declare class RobotValidator extends Container<Robot> { protected initialize(): void; } //#endregion //#region src/domains/identity/types.d.ts type ClientIdentity = { type: `${IdentityType.CLIENT}`; data: Client; }; type RobotIdentity = { type: `${IdentityType.ROBOT}`; data: Robot; }; type UserIdentity = { type: `${IdentityType.USER}`; data: User; }; type Identity = ClientIdentity | RobotIdentity | UserIdentity; //#endregion //#region src/domains/identity-provider/attributes-validator.d.ts declare class IdentityProviderAttributesValidator extends Container<ObjectLiteral> { constructor(options?: ContainerOptions<ObjectLiteral>); protected initialize(): void; } //#endregion //#region src/domains/identity-provider/constants.d.ts declare enum IdentityProviderProtocol { LDAP = "ldap", OAUTH2 = "oauth2", OIDC = "oidc" } declare enum IdentityProviderMappingSyncMode { /** * Synchronize on initial user login. */ ONCE = "once", /** * Synchronize on every user login. */ ALWAYS = "always", /** * Synchronize based on idp configuration. */ INHERIT = "inherit" } //#endregion //#region src/domains/identity-provider/preset/constants.d.ts declare enum IdentityProviderPreset { FACEBOOK = "facebook", GITHUB = "github", GITLAB = "gitlab", GOOGLE = "google", PAYPAL = "paypal", INSTAGRAM = "instagram", STACKOVERFLOW = "stackoverflow", TWITTER = "twitter" } //#endregion //#region src/domains/identity-provider/preset/utils.d.ts declare function getIdentityProviderProtocolForPreset(id: string): `${IdentityProviderProtocol}` | null; //#endregion //#region src/domains/identity-provider/entity.d.ts interface IdentityProvider { id: string; name: string; display_name: string | null; protocol: `${IdentityProviderProtocol}` | null; preset: `${IdentityProviderPreset}` | null; enabled: boolean; created_at: string; updated_at: string; realm_id: Realm['id']; realm: Realm; } interface IdentityProviderBaseMapping { name: string | null; value: string | null; value_is_regex: boolean; synchronization_mode: `${IdentityProviderMappingSyncMode}` | null; provider_id: IdentityProvider['id']; provider: IdentityProvider; provider_realm_id: Realm['id']; provider_realm: Realm; } //#endregion //#region src/domains/identity-provider/utils.d.ts declare function buildIdentityProviderAuthorizeCallbackPath(id: string | number): string; declare function buildIdentityProviderAuthorizePath(id: string | number): string; declare function isIdentityProviderNameValid(input: string, options?: NameValidOptions): boolean; //#endregion //#region src/domains/identity-provider/ldap/types.d.ts interface LdapIdentityProvider extends IdentityProvider { protocol: IdentityProviderProtocol.LDAP | `${IdentityProviderProtocol.LDAP}`; /** * The LDAP URL which consists of a scheme, address, and port. * Format is <scheme>://<address>:<port> or <scheme>://<address> where scheme is either ldap or ldaps. */ url: string; /** * The timeout for dialing an LDAP connection. * * @default infinity */ timeout?: number; /** * Enables use of the LDAP StartTLS process which is not commonly used. */ start_tls?: boolean; /** * Controls the TLS connection validation process. */ tls?: Record<string, any>; /** * Sets the base distinguished name container for all LDAP queries. */ base_dn: string; /** * The DN of the administrator. * * @example cn=read-only-admin,dc=example,dc=com */ user?: string; /** * The password of the administrator. */ password?: string; /** * The ldap base DN to search the user. * @example dc=example,dc=com */ user_base_dn?: string; /** * The LDAP filter to narrow down which users are valid */ user_filter?: string; /** * It will be used with the value in username to * construct a ldap filter as ({attribute}={username}) to find the user and get user details in LDAP */ user_name_attribute?: string; /** * The attribute to retrieve which contains the users email addresses. */ user_mail_attribute?: string; /** * The attribute to retrieve which is shown on the Web UI to the user when they log in. */ user_display_name_attribute?: string; /** * Ff specified with groupClass, will serve as search base for authenticated user groups */ group_base_dn?: string; /** * Similar to user_filter, but it applies to group searches. */ group_filter?: string; /** * The LDAP attribute that is used to determine the group name. */ group_name_attribute?: string; /** * If specified with groupsSearchBase, will be used as objectClass in search filter for authenticated user groups */ group_class?: string; /** * if specified with groupClass and groupsSearchBase, * will be used as member name (if not specified this defaults to member) in search filter for authenticated user groups */ group_member_attribute?: string; /** * if specified with groupClass and groupsSearchBase, * will be used as the attribute on the user object (if not specified this defaults to dn) in search filter for authenticated user groups */ group_member_user_attribute?: string; } //#endregion //#region src/domains/identity-provider/ldap/check.d.ts declare function isLdapIdentityProvider(input: IdentityProvider): input is LdapIdentityProvider; //#endregion //#region src/domains/identity-provider/ldap/validator.d.ts declare class IdentityProviderLDAPAttributesValidator extends Container<LdapIdentityProvider> { protected initialize(): void; } //#endregion //#region src/domains/identity-provider/oauth2/types.d.ts interface OAuth2IdentityProviderBase { client_id: string; client_secret: string; token_url: string; token_revoke_url?: string | null; authorize_url: string; user_info_url?: string | null; scope?: string; } interface OAuth2IdentityProvider extends IdentityProvider, OAuth2IdentityProviderBase { protocol: `${IdentityProviderProtocol.OAUTH2}`; } //#endregion //#region src/domains/identity-provider/oauth2/check.d.ts declare function isOAuth2IdentityProvider(input: IdentityProvider): input is OAuth2IdentityProvider; //#endregion //#region src/domains/identity-provider/oauth2/preset-validator.d.ts declare class IdentityProviderOAuth2PresetAttributesValidator extends Container<OAuth2IdentityProvider> { protected initialize(): void; } //#endregion //#region src/domains/identity-provider/oauth2/validator.d.ts declare class IdentityProviderOAuth2AttributesValidator extends Container<OAuth2IdentityProvider> { protected initialize(): void; } //#endregion //#region src/domains/identity-provider/oidc/types.d.ts interface OpenIDIdentityProvider extends IdentityProvider, OAuth2IdentityProviderBase { protocol: `${IdentityProviderProtocol.OIDC}`; } //#endregion //#region src/domains/identity-provider/oidc/check.d.ts declare function isOpenIDIdentityProvider(input: IdentityProvider): input is OpenIDIdentityProvider; //#endregion //#region src/domains/identity-provider/validator.d.ts declare class IdentityProviderValidator extends Container<IdentityProvider> { protected initialize(): void; } //#endregion //#region src/domains/identity-provider-attribute/entity.d.ts interface IdentityProviderAttribute { id: string; name: string; value: string | null; provider_id: IdentityProvider['id']; provider: IdentityProvider; realm_id: Realm['id'] | null; realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/identity-provider-account/entity.d.ts interface IdentityProviderAccount { id: string; provider_user_id: string; provider_user_name: string; provider_user_email: string; created_at: Date; updated_at: Date; user_id: string; user: User; user_realm_id: Realm['id'] | null; user_realm: Realm | null; provider_id: IdentityProvider['id']; provider: IdentityProvider; provider_realm_id: Realm['id'] | null; provider_realm: Realm | null; } //#endregion //#region src/domains/identity-provider-attribute-mapping/entity.d.ts interface IdentityProviderAttributeMapping extends IdentityProviderBaseMapping { id: string; target_name: string; target_value: string | null; created_at: Date; updated_at: Date; } //#endregion //#region src/domains/identity-provider-permission-mapping/entity.d.ts interface IdentityProviderPermissionMapping extends IdentityProviderBaseMapping { id: string; created_at: Date; updated_at: Date; permission_id: string; permission: Role; permission_realm_id: Realm['id'] | null; permission_realm: Realm | null; } //#endregion //#region src/domains/identity-provider-role-mapping/entity.d.ts interface IdentityProviderRoleMapping extends IdentityProviderBaseMapping { id: string; created_at: Date; updated_at: Date; role_id: string; role: Role; role_realm_id: Realm['id'] | null; role_realm: Realm | null; } //#endregion //#region src/domains/identity-provider-role-mapping/validator.d.ts declare class IdentityProviderRoleMappingValidator extends Container<IdentityProviderRoleMapping> { protected initialize(): void; } //#endregion //#region src/domains/permission-policy/entity.d.ts interface PermissionPolicy { id: string; permission_id: Permission['id']; permission: Permission; permission_realm_id: Realm['id'] | null; permission_realm: Realm | null; policy_id: Policy['id']; policy: Policy; policy_realm_id: Realm['id'] | null; policy_realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/permission-policy/validator.d.ts declare class PermissionPolicyValidator extends Container<PermissionPolicy> { protected initialize(): void; } //#endregion //#region src/domains/policy-attribute/entity.d.ts interface PolicyAttribute { id: string; name: string; value: string | null; realm_id: Policy['id'] | null; realm: Realm | null; policy_id: Policy['id']; policy: Policy; created_at: Date; updated_at: Date; } //#endregion //#region src/domains/robot-permission/entity.d.ts interface RobotPermission extends PermissionRelation { id: string; created_at: Date; updated_at: Date; robot_id: string; robot: Robot; robot_realm_id: Realm['id'] | null; robot_realm: Realm | null; } //#endregion //#region src/domains/robot-permission/validator.d.ts declare class RobotPermissionValidator extends Container<RobotPermission> { protected initialize(): void; } //#endregion //#region src/domains/robot-role/entity.d.ts interface RobotRole { id: string; robot_id: string; role_id: string; role: Role; role_realm_id: Realm['id'] | null; role_realm: Realm | null; robot: Robot; robot_realm_id: Realm['id'] | null; robot_realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/robot-role/validator.d.ts declare class RobotRoleValidator extends Container<RobotRole> { protected initialize(): void; } //#endregion //#region src/domains/role-attribute/entity.d.ts interface RoleAttribute { id: string; name: string; value: string | null; role_id: Role['id']; role: Role; realm_id: Realm['id'] | null; realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/role-permission/entity.d.ts interface RolePermission extends PermissionRelation { id: string; created_at: Date; updated_at: Date; role_id: string; role: Role; role_realm_id: Realm['id'] | null; role_realm: Realm | null; } //#endregion //#region src/domains/role-permission/validator.d.ts declare class RolePermissionValidator extends Container<RolePermission> { protected initialize(): void; } //#endregion //#region src/domains/session/entity.d.ts interface Session { /** * Public ID */ id: string; /** * Subject ID */ sub: string; /** * Subject kind (e.g. user, robot, client) */ sub_kind: string; /** * Last used ip address. */ ip_address: string; /** * Last used user agent. */ user_agent: string; /** * Expiration date (iso) */ expires_at: string; /** * Time session was renewed. */ refreshed_at: string | null; /** * Last time subject was seen. */ seen_at: string | null; /** * Last time new access-token, refresh-token created for session. */ updated_at: string; /** * Creation date of session */ created_at: string; client_id: Client['id'] | null; client: Client | null; user_id: User['id'] | null; user: User | null; robot_id: Robot['id'] | null; robot: Robot | null; realm_id: Realm['id']; realm: Realm; } //#endregion //#region src/domains/user-attribute/entity.d.ts interface UserAttribute { id: string; name: string; value: string | null; user_id: User['id']; user: User; realm_id: Realm['id']; realm: Realm; created_at: string; updated_at: string; } //#endregion //#region src/domains/user-permission/entity.d.ts interface UserPermission extends PermissionRelation { id: string; created_at: Date; updated_at: Date; user_id: User['id']; user: User; user_realm_id: Realm['id'] | null; user_realm: Realm | null; } //#endregion //#region src/domains/user-permission/validator.d.ts declare class UserPermissionValidator extends Container<UserPermission> { protected initialize(): void; } //#endregion //#region src/domains/user-role/entity.d.ts interface UserRole { id: string; role_id: Role['id']; role: Role; role_realm_id: Realm['id'] | null; role_realm: Realm | null; user_id: User['id']; user: User; user_realm_id: Realm['id'] | null; user_realm: Realm | null; created_at: string; updated_at: string; } //#endregion //#region src/domains/user-role/validator.d.ts declare class UserRoleValidator extends Container<UserRole> { protected initialize(): void; } //#endregion //#region src/domains/contstants.d.ts declare enum EntityType { CLIENT = "client", CLIENT_PERMISSION = "clientPermission", CLIENT_ROLE = "clientRole", CLIENT_SCOPE = "clientScope", IDENTITY_PROVIDER = "identityProvider", IDENTITY_PROVIDER_ACCOUNT = "identityProviderAccount", IDENTITY_PROVIDER_ATTRIBUTE = "identityProviderAttribute", IDENTITY_PROVIDER_ATTRIBUTE_MAPPING = "identityProviderAttributeMapping", IDENTITY_PROVIDER_PERMISSION_MAPPING = "identityProviderPermissionMapping", IDENTITY_PROVIDER_ROLE_MAPPING = "identityProviderRoleMapping", KEY = "key", POLICY = "policy", POLICY_ATTRIBUTE = "policyAttribute", PERMISSION = "permission", PERMISSION_POLICY = "permissionPolicy", REALM = "realm", ROBOT = "robot", ROBOT_PERMISSION = "robotPermission", ROBOT_ROLE = "robotRole", ROLE = "role", ROLE_ATTRIBUTE = "roleAttribute", ROLE_PERMISSION = "rolePermission", SCOPE = "scope", // todo: add USER = "user", USER_ATTRIBUTE = "userAttribute", USER_PERMISSION = "userPermission", USER_ROLE = "userRole" } declare enum EntityDefaultEventName { CREATED = "created", DELETED = "deleted", UPDATED = "updated" } //#endregion //#region src/domains/helpers.d.ts declare function buildEntityChannelName(entity: string, id?: string | number): string; declare function buildEntityNamespaceName(id: string): string; //#endregion //#region src/domains/types.d.ts type EntityTypeMapRaw = { [EntityType.CLIENT]: Client; [EntityType.CLIENT_PERMISSION]: ClientPermission; [EntityType.CLIENT_ROLE]: ClientRole; [EntityType.CLIENT_SCOPE]: ClientScope; [EntityType.IDENTITY_PROVIDER]: IdentityProvider; [EntityType.IDENTITY_PROVIDER_ACCOUNT]: IdentityProviderAccount; [EntityType.IDENTITY_PROVIDER_ATTRIBUTE]: IdentityProviderAttribute; [EntityType.IDENTITY_PROVIDER_ROLE_MAPPING]: IdentityProviderRoleMapping; [EntityType.POLICY]: Policy; [EntityType.POLICY_ATTRIBUTE]: PolicyAttribute; [EntityType.PERMISSION]: Permission; [EntityType.PERMISSION_POLICY]: PermissionPolicy; [EntityType.REALM]: Realm; [EntityType.ROBOT]: Robot; [EntityType.ROBOT_PERMISSION]: RobotPermission; [EntityType.ROBOT_ROLE]: RobotRole; [EntityType.ROLE]: Role; [EntityType.ROLE_ATTRIBUTE]: RoleAttribute; [EntityType.ROLE_PERMISSION]: RolePermission; [EntityType.SCOPE]: Scope; [EntityType.USER]: User; [EntityType.USER_ATTRIBUTE]: UserAttribute; [EntityType.USER_PERMISSION]: UserPermission; [EntityType.USER_ROLE]: UserRole; }; type EntityTypeMap = { [K in keyof EntityTypeMapRaw as `${K}`]: EntityTypeMapRaw[K] }; type EventRecord<T extends string, D extends Record<string, any>> = { type: T; data: D; event: string; }; //#endregion export { AttemptActivation, AttemptLogin, AttemptReset, Client, ClientError, ClientIdentity, ClientPermission, ClientPermissionValidator, ClientRole, ClientRoleValidator, ClientScope, ClientScopeValidator, ClientValidator, EntityDefaultEventName, EntityType, EntityTypeMap, EventRecord, Identity, IdentityProvider, IdentityProviderAccount, IdentityProviderAttribute, IdentityProviderAttributeMapping, IdentityProviderAttributesValidator, IdentityProviderBaseMapping, IdentityProviderLDAPAttributesValidator, IdentityProviderMappingSyncMode, IdentityProviderOAuth2AttributesValidator, IdentityProviderOAuth2PresetAttributesValidator, IdentityProviderPermissionMapping, IdentityProviderPreset, IdentityProviderProtocol, IdentityProviderRoleMapping, IdentityProviderRoleMappingValidator, IdentityProviderValidator, IdentityType, Key, LdapIdentityProvider, NameValidOptions, OAuth2AuthorizationCode, OAuth2AuthorizationCodeRequest, OAuth2IdentityProvider, OAuth2IdentityProviderBase, OpenIDIdentityProvider, Permission, PermissionName, PermissionPolicy, PermissionPolicyValidator, PermissionRelation, PermissionValidator, Policy, PolicyAttribute, PolicyValidator, PolicyWithType, REALM_MASTER_NAME, REALM_NAME_REGEX, ROLE_ADMIN_NAME, ROLE_REALM_ADMIN_NAME, Realm, RealmValidator, Robot, RobotError, RobotIdentity, RobotPermission, RobotPermissionValidator, RobotRole, RobotRoleValidator, RobotValidator, Role, RoleAttribute, RolePermission, RolePermissionValidator, RoleValidator, Scope, ScopeName, ScopeValidator, Session, User, UserAttribute, UserError, UserIdentity, UserPermission, UserPermissionValidator, UserRole, UserRoleValidator, UserValidator, ValidatorGroup, buildEntityChannelName, buildEntityNamespaceName, buildIdentityProviderAuthorizeCallbackPath, buildIdentityProviderAuthorizePath, buildUserFakeEmail, getIdentityProviderProtocolForPreset, isClientNameValid, isIdentityProviderNameValid, isLdapIdentityProvider, isNameValid, isOAuth2IdentityProvider, isOpenIDIdentityProvider, isPermissionNameValid, isPolicy, isPolicyNameValid, isRealmNameValid, isRobotNameValid, isRoleNameValid, isScopeNameValid, isUserFakeEmail, isUserNameValid, isValidUserEmail }; //# sourceMappingURL=index.d.mts.map