{"version":3,"file":"index.mjs","sources":["../src/cookies.ts","../src/client/helper.ts","../src/utils/duplicate-slashes.ts","../src/utils/object-property.ts","../src/domains/base.ts","../src/domains/entities/client/module.ts","../src/domains/entities/client-permission/module.ts","../src/domains/entities/client-role/module.ts","../src/domains/entities/client-scope/module.ts","../src/domains/entities/identity-provider/module.ts","../src/domains/entities/identity-provider-role-mapping/module.ts","../src/domains/entities/policy/module.ts","../src/domains/entities/permission/module.ts","../src/domains/entities/realm/module.ts","../src/domains/entities/robot/module.ts","../src/domains/entities/robot-permission/module.ts","../src/domains/entities/robot-role/module.ts","../src/domains/entities/role/module.ts","../src/domains/entities/role-attribute/module.ts","../src/domains/entities/role-permission/module.ts","../src/domains/entities/scope/module.ts","../src/domains/entities/user/module.ts","../src/domains/entities/user-attribute/module.ts","../src/domains/entities/user-permission/module.ts","../src/domains/entities/user-role/module.ts","../src/domains/workflows/oauth2/authorize/module.ts","../src/domains/workflows/oauth2/token/module.ts","../src/domains/workflows/oauth2/user-info/module.ts","../src/client/module.ts","../src/helpers/error-code.ts","../src/hook/constants.ts","../src/token-creator/constants.ts","../src/token-creator/variations/robot.ts","../src/token-creator/variations/robot-vault.ts","../src/token-creator/variations/user.ts","../src/token-creator/module.ts","../src/hook/utils.ts","../src/hook/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-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 enum CookieName {\n    ACCESS_TOKEN = 'access_token',\n    ACCESS_TOKEN_EXPIRE_DATE = 'access_token_expire_date',\n    REFRESH_TOKEN = 'refresh_token',\n\n    USER = 'user',\n    REALM = 'realm',\n    REALM_MANAGEMENT = 'realm_management',\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\nimport type { ClientError } from 'hapic';\nimport { isClientError as isError } from 'hapic';\n\nexport function isClientError(input: unknown) : input is ClientError {\n    return isError(input);\n}\n","/*\n * Copyright (c) 2022-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 function cleanDoubleSlashes(input: string) : string {\n    if (input.indexOf('://') !== -1) {\n        return input.split('://')\n            .map((str) => cleanDoubleSlashes(str))\n            .join('://');\n    }\n\n    return input.replace(/\\/+/g, '/');\n}\n","/*\n * Copyright (c) 2021-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 function nullifyEmptyObjectProperties<T extends Record<string, any>>(data: T) : T {\n    const keys : (keyof T)[] = Object.keys(data);\n\n    for (let i = 0; i < keys.length; i++) {\n        if (data[keys[i]] === '') {\n            data[keys[i]] = null as T[keyof T];\n        }\n    }\n\n    return data;\n}\n","/*\n * Copyright (c) 2023-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\nimport { createClient, isClient } from 'hapic';\nimport type { Client, RequestBaseOptions } from 'hapic';\nimport type { BaseAPIContext } from './types-base';\n\nexport class BaseAPI {\n    protected client! : Client;\n\n    // -----------------------------------------------------------------------------------\n\n    constructor(context?: BaseAPIContext) {\n        context = context || {};\n\n        this.setClient(context.client);\n    }\n\n    // -----------------------------------------------------------------------------------\n\n    setClient(input?: Client | RequestBaseOptions) {\n        this.client = isClient(input) ?\n            input :\n            createClient(input);\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Client } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class ClientAPI extends BaseAPI implements EntityAPI<Client> {\n    async getMany(\n        options?: BuildInput<Client>,\n    ): Promise<EntityCollectionResponse<Client>> {\n        const response = await this.client\n            .get(`clients${buildQuery(options)}`);\n\n        return response.data;\n    }\n\n    async getOne(\n        id: Client['id'],\n        options?: BuildInput<Client>,\n    ): Promise<EntityRecordResponse<Client>> {\n        const response = await this.client\n            .get(`clients/${id}${buildQuery(options)}`);\n\n        return response.data;\n    }\n\n    async delete(\n        id: Client['id'],\n    ): Promise<EntityRecordResponse<Client>> {\n        const response = await this.client\n            .delete(`clients/${id}`);\n\n        return response.data;\n    }\n\n    async create(\n        data: Partial<Client>,\n    ): Promise<EntityRecordResponse<Client>> {\n        const response = await this.client\n            .post('clients', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(\n        id: Client['id'],\n        data: Partial<Client>,\n    ): Promise<EntityRecordResponse<Client>> {\n        const response = await this.client.post(`clients/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<Client>,\n    ): Promise<EntityRecordResponse<Client>> {\n        const response = await this.client.put(`clients/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientPermission } from '@authup/core-kit';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPISlim, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class ClientPermissionAPI extends BaseAPI implements EntityAPISlim<ClientPermission> {\n    async getMany(data?: BuildInput<ClientPermission>) : Promise<EntityCollectionResponse<ClientPermission>> {\n        const response = await this.client.get(`client-permissions${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async getOne(id: ClientPermission['id'], data?: BuildInput<ClientPermission>) : Promise<EntityRecordResponse<ClientPermission>> {\n        const response = await this.client.get(`client-permissions/${id}${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async delete(id: ClientPermission['id']) : Promise<EntityRecordResponse<ClientPermission>> {\n        const response = await this.client.delete(`client-permissions/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<ClientPermission>) : Promise<EntityRecordResponse<ClientPermission>> {\n        const response = await this.client.post('client-permissions', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientRole } from '@authup/core-kit';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPISlim, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class ClientRoleAPI extends BaseAPI implements EntityAPISlim<ClientRole> {\n    async getMany(data: BuildInput<ClientRole> = {}): Promise<EntityCollectionResponse<ClientRole>> {\n        const response = await this.client.get(`client-roles${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(id: ClientRole['id']): Promise<EntityRecordResponse<ClientRole>> {\n        const response = await this.client.get(`client-roles/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: ClientRole['id']): Promise<EntityRecordResponse<ClientRole>> {\n        const response = await this.client.delete(`client-roles/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<ClientRole>): Promise<EntityRecordResponse<ClientRole>> {\n        const response = await this.client.post('client-roles', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientScope } from '@authup/core-kit';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPISlim, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class ClientScopeAPI extends BaseAPI implements EntityAPISlim<ClientScope> {\n    async getMany(data?: BuildInput<ClientScope>) : Promise<EntityCollectionResponse<ClientScope>> {\n        const response = await this.client.get(`client-scopes${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async getOne(id: ClientScope['id']) : Promise<EntityRecordResponse<ClientScope>> {\n        const response = await this.client.get(`client-scopes/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: ClientScope['id']) : Promise<EntityRecordResponse<ClientScope>> {\n        const response = await this.client.delete(`client-scopes/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<ClientScope>) : Promise<EntityRecordResponse<ClientScope>> {\n        const response = await this.client.post('client-scopes', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { IdentityProvider } from '@authup/core-kit';\nimport { buildIdentityProviderAuthorizePath } from '@authup/core-kit';\nimport { cleanDoubleSlashes, nullifyEmptyObjectProperties } from '../../../utils';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\nimport { BaseAPI } from '../../base';\n\nexport class IdentityProviderAPI extends BaseAPI implements EntityAPI<IdentityProvider> {\n    getAuthorizeUri(baseUrl: string, id: IdentityProvider['id']): string {\n        return cleanDoubleSlashes(`${baseUrl}/${buildIdentityProviderAuthorizePath(id)}`);\n    }\n\n    async getMany(record?: BuildInput<IdentityProvider>): Promise<EntityCollectionResponse<IdentityProvider>> {\n        const response = await this.client.get(`identity-providers${buildQuery(record)}`);\n\n        return response.data;\n    }\n\n    async getOne(\n        id: IdentityProvider['id'],\n        record?: BuildInput<IdentityProvider>,\n    ): Promise<EntityRecordResponse<IdentityProvider>> {\n        const response = await this.client.get(`identity-providers/${id}${buildQuery(record)}`);\n\n        return response.data;\n    }\n\n    async delete(id: IdentityProvider['id']): Promise<EntityRecordResponse<IdentityProvider>> {\n        const response = await this.client.delete(`identity-providers/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<IdentityProvider>): Promise<EntityRecordResponse<IdentityProvider>> {\n        const response = await this.client.post('identity-providers', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(id: IdentityProvider['id'], data: Partial<IdentityProvider>): Promise<EntityRecordResponse<IdentityProvider>> {\n        const response = await this.client.post(`identity-providers/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<IdentityProvider>,\n    ): Promise<EntityRecordResponse<IdentityProvider>> {\n        const response = await this.client.put(`identity-providers/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { IdentityProviderRoleMapping } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class IdentityProviderRoleMappingAPI extends BaseAPI implements EntityAPI<IdentityProviderRoleMapping> {\n    async getMany(data: BuildInput<IdentityProviderRoleMapping>): Promise<EntityCollectionResponse<IdentityProviderRoleMapping>> {\n        const response = await this.client.get(`identity-provider-role-mappings${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(id: IdentityProviderRoleMapping['id']): Promise<EntityRecordResponse<IdentityProviderRoleMapping>> {\n        const response = await this.client.get(`identity-provider-role-mappings/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: IdentityProviderRoleMapping['id']): Promise<EntityRecordResponse<IdentityProviderRoleMapping>> {\n        const response = await this.client.delete(`identity-provider-role-mappings/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<IdentityProviderRoleMapping>): Promise<EntityRecordResponse<IdentityProviderRoleMapping>> {\n        const response = await this.client.post('identity-provider-role-mappings', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(\n        id: IdentityProviderRoleMapping['id'],\n        data: Partial<IdentityProviderRoleMapping>,\n    ): Promise<EntityRecordResponse<IdentityProviderRoleMapping>> {\n        const response = await this.client.post(`identity-provider-role-mappings/${id}`, data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Policy } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\nimport type {\n    BuiltInPolicyCreateRequest,\n    BuiltInPolicyResponse, BuiltInPolicyUpdateRequest, PolicyAPICheckResponse, PolicyCreateRequest, PolicyResponse, PolicyUpdateRequest,\n} from './types';\n\nexport class PolicyAPI extends BaseAPI implements EntityAPI<Policy> {\n    async getMany<\n        OUTPUT extends PolicyResponse = PolicyResponse,\n    >(data?: BuildInput<Policy & { parent_id?: string | null }>): Promise<EntityCollectionResponse<OUTPUT>> {\n        const response = await this.client.get(`policies${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async delete<\n        OUTPUT extends PolicyResponse = PolicyResponse,\n    >(id: Policy['id']): Promise<EntityRecordResponse<OUTPUT>> {\n        const response = await this.client.delete(`policies/${id}`);\n\n        return response.data;\n    }\n\n    async getOne<\n        OUTPUT extends PolicyResponse = PolicyResponse,\n    >(id: Policy['id'], record?: BuildInput<Policy>) : Promise<EntityRecordResponse<OUTPUT>> {\n        const response = await this.client.get(`policies/${id}${buildQuery(record)}`);\n\n        return response.data;\n    }\n\n    async getOneExpanded<\n        OUTPUT extends PolicyResponse = PolicyResponse,\n    >(id: Policy['id'], record?: BuildInput<Policy>) : Promise<EntityRecordResponse<OUTPUT>> {\n        const response = await this.client.get(`policies/${id}/expanded${buildQuery(record)}`);\n\n        return response.data;\n    }\n\n    async create<\n        INPUT extends PolicyCreateRequest = PolicyCreateRequest,\n        OUTPUT extends PolicyResponse = PolicyResponse,\n    >(data: INPUT): Promise<EntityRecordResponse<OUTPUT>> {\n        const response = await this.client.post('policies', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createBuiltIn(\n        data: BuiltInPolicyCreateRequest,\n    ): Promise<EntityRecordResponse<BuiltInPolicyResponse>> {\n        return this.create(data);\n    }\n\n    async update<\n        INPUT extends PolicyUpdateRequest = PolicyUpdateRequest,\n        OUTPUT extends PolicyResponse = PolicyResponse,\n    >(id: Policy['id'], data: INPUT): Promise<EntityRecordResponse<OUTPUT>> {\n        const response = await this.client.post(`policies/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async updateBuiltIn(\n        id: Policy['id'],\n        data: BuiltInPolicyUpdateRequest,\n    ): Promise<EntityRecordResponse<BuiltInPolicyResponse>> {\n        return this.update(id, data);\n    }\n\n    async createOrUpdate<\n        INPUT extends PolicyCreateRequest = PolicyCreateRequest,\n        OUTPUT extends PolicyResponse = PolicyResponse,\n    >(\n        idOrName: string,\n        data: INPUT,\n    ): Promise<EntityRecordResponse<OUTPUT>> {\n        const response = await this.client.put(`policies/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdateBuiltin(\n        idOrName: string,\n        data: BuiltInPolicyCreateRequest,\n    ): Promise<EntityRecordResponse<BuiltInPolicyResponse>> {\n        return this.createOrUpdate(idOrName, data);\n    }\n\n    async check(\n        idOrName: string,\n        data: Record<string, any> = {},\n    ) : Promise<PolicyAPICheckResponse> {\n        const response = await this.client.post(\n            `policies/${idOrName}/check`,\n            nullifyEmptyObjectProperties(data),\n        );\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Permission } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\nimport type { PermissionAPICheckResponse } from './types';\n\nexport class PermissionAPI extends BaseAPI implements EntityAPI<Permission> {\n    async getMany(data?: BuildInput<Permission>): Promise<EntityCollectionResponse<Permission>> {\n        const response = await this.client.get(`permissions${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async delete(id: Permission['id']): Promise<EntityRecordResponse<Permission>> {\n        const response = await this.client.delete(`permissions/${id}`);\n\n        return response.data;\n    }\n\n    async getOne(id: Permission['id'], record?: BuildInput<Permission>) {\n        const response = await this.client.get(`permissions/${id}${buildQuery(record)}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Permission>): Promise<EntityRecordResponse<Permission>> {\n        const response = await this.client.post('permissions', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(id: Permission['id'], data: Partial<Permission>): Promise<EntityRecordResponse<Permission>> {\n        const response = await this.client.post(`permissions/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<Permission>,\n    ): Promise<EntityRecordResponse<Permission>> {\n        const response = await this.client.put(`permissions/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async check(\n        idOrName: string,\n        data: Record<string, any> = {},\n    ) : Promise<PermissionAPICheckResponse> {\n        const response = await this.client.post(\n            `permissions/${idOrName}/check`,\n            nullifyEmptyObjectProperties(data),\n        );\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Realm } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class RealmAPI extends BaseAPI implements EntityAPI<Realm> {\n    async getMany(data?: BuildInput<Realm>): Promise<EntityCollectionResponse<Realm>> {\n        const response = await this.client.get(`realms${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(id: Realm['id']): Promise<EntityRecordResponse<Realm>> {\n        const response = await this.client.get(`realms/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: Realm['id']): Promise<EntityRecordResponse<Realm>> {\n        const response = await this.client.delete(`realms/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Realm>): Promise<EntityRecordResponse<Realm>> {\n        const response = await this.client.post('realms', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(realmId: Realm['id'], data: Partial<Realm>): Promise<EntityRecordResponse<Realm>> {\n        const response = await this.client.post(`realms/${realmId}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<Realm>,\n    ): Promise<EntityRecordResponse<Realm>> {\n        const response = await this.client.put(`realms/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Robot } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class RobotAPI extends BaseAPI implements EntityAPI<Robot> {\n    async getMany(\n        options?: BuildInput<Robot>,\n    ): Promise<EntityCollectionResponse<Robot>> {\n        const response = await this.client\n            .get(`robots${buildQuery(options)}`);\n\n        return response.data;\n    }\n\n    async getOne(\n        id: Robot['id'],\n        options?: BuildInput<Robot>,\n    ): Promise<EntityRecordResponse<Robot>> {\n        const response = await this.client\n            .get(`robots/${id}${buildQuery(options)}`);\n\n        return response.data;\n    }\n\n    async delete(\n        id: Robot['id'],\n    ): Promise<EntityRecordResponse<Robot>> {\n        const response = await this.client\n            .delete(`robots/${id}`);\n\n        return response.data;\n    }\n\n    async create(\n        data: Partial<Robot>,\n    ): Promise<EntityRecordResponse<Robot>> {\n        const response = await this.client\n            .post('robots', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(\n        id: Robot['id'],\n        data: Partial<Robot>,\n    ): Promise<EntityRecordResponse<Robot>> {\n        const response = await this.client.post(`robots/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<Robot>,\n    ): Promise<EntityRecordResponse<Robot>> {\n        const response = await this.client.put(`robots/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async integrity(\n        id: Robot['id'] | Robot['name'],\n    ): Promise<EntityRecordResponse<Robot>> {\n        const { data: response } = await this.client\n            .get(`robots/${id}/integrity`);\n\n        return response;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { RobotPermission } from '@authup/core-kit';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPISlim, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class RobotPermissionAPI extends BaseAPI implements EntityAPISlim<RobotPermission> {\n    async getMany(data?: BuildInput<RobotPermission>) : Promise<EntityCollectionResponse<RobotPermission>> {\n        const response = await this.client.get(`robot-permissions${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async getOne(id: RobotPermission['id'], data?: BuildInput<RobotPermission>) : Promise<EntityRecordResponse<RobotPermission>> {\n        const response = await this.client.get(`robot-permissions/${id}${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async delete(id: RobotPermission['id']) : Promise<EntityRecordResponse<RobotPermission>> {\n        const response = await this.client.delete(`robot-permissions/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<RobotPermission>) : Promise<EntityRecordResponse<RobotPermission>> {\n        const response = await this.client.post('robot-permissions', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { RobotRole } from '@authup/core-kit';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPISlim, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class RobotRoleAPI extends BaseAPI implements EntityAPISlim<RobotRole> {\n    async getMany(data: BuildInput<RobotRole> = {}): Promise<EntityCollectionResponse<RobotRole>> {\n        const response = await this.client.get(`robot-roles${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(id: RobotRole['id']): Promise<EntityRecordResponse<RobotRole>> {\n        const response = await this.client.get(`robot-roles/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: RobotRole['id']): Promise<EntityRecordResponse<RobotRole>> {\n        const response = await this.client.delete(`robot-roles/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<RobotRole>): Promise<EntityRecordResponse<RobotRole>> {\n        const response = await this.client.post('robot-roles', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Role } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPI, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class RoleAPI extends BaseAPI implements EntityAPI<Role> {\n    async getMany(data?: BuildInput<Role>): Promise<EntityCollectionResponse<Role>> {\n        const response = await this.client.get(`roles${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(roleId: Role['id']): Promise<EntityRecordResponse<Role>> {\n        const response = await this.client.get(`roles/${roleId}`);\n\n        return response.data;\n    }\n\n    async delete(roleId: Role['id']): Promise<EntityRecordResponse<Role>> {\n        const response = await this.client.delete(`roles/${roleId}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Role>): Promise<EntityRecordResponse<Role>> {\n        const response = await this.client.post('roles', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(id: Role['id'], data: Partial<Role>): Promise<EntityRecordResponse<Role>> {\n        const response = await this.client.post(`roles/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<Role>,\n    ): Promise<EntityRecordResponse<Role>> {\n        const response = await this.client.put(`roles/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { RoleAttribute } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPI, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class RoleAttributeAPI extends BaseAPI implements EntityAPI<RoleAttribute> {\n    async getMany(data?: BuildInput<RoleAttribute>): Promise<EntityCollectionResponse<RoleAttribute>> {\n        const response = await this.client.get(`role-attributes${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(roleId: RoleAttribute['id']): Promise<EntityRecordResponse<RoleAttribute>> {\n        const response = await this.client.get(`role-attributes/${roleId}`);\n\n        return response.data;\n    }\n\n    async delete(roleId: RoleAttribute['id']): Promise<EntityRecordResponse<RoleAttribute>> {\n        const response = await this.client.delete(`role-attributes/${roleId}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<RoleAttribute>): Promise<EntityRecordResponse<RoleAttribute>> {\n        const response = await this.client.post('role-attributes', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(id: RoleAttribute['id'], data: Partial<RoleAttribute>): Promise<EntityRecordResponse<RoleAttribute>> {\n        const response = await this.client.post(`role-attributes/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { RolePermission } from '@authup/core-kit';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPISlim, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class RolePermissionAPI extends BaseAPI implements EntityAPISlim<RolePermission> {\n    async getMany(data?: BuildInput<RolePermission>) : Promise<EntityCollectionResponse<RolePermission>> {\n        const response = await this.client.get(`role-permissions${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async getOne(id: RolePermission['id']) : Promise<EntityRecordResponse<RolePermission>> {\n        const response = await this.client.get(`role-permissions/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: RolePermission['id']) : Promise<EntityRecordResponse<RolePermission>> {\n        const response = await this.client.delete(`role-permissions/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<RolePermission>) : Promise<EntityRecordResponse<RolePermission>> {\n        const response = await this.client.post('role-permissions', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Scope } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPI, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class ScopeAPI extends BaseAPI implements EntityAPI<Scope> {\n    async getMany(data?: BuildInput<Scope>): Promise<EntityCollectionResponse<Scope>> {\n        const response = await this.client.get(`scopes${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(id: Scope['id']): Promise<EntityRecordResponse<Scope>> {\n        const response = await this.client.get(`scopes/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: Scope['id']): Promise<EntityRecordResponse<Scope>> {\n        const response = await this.client.delete(`scopes/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Scope>): Promise<EntityRecordResponse<Scope>> {\n        const response = await this.client.post('scopes', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(id: Scope['id'], data: Partial<Scope>): Promise<EntityRecordResponse<Scope>> {\n        const response = await this.client.post(`scopes/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<Scope>,\n    ): Promise<EntityRecordResponse<Scope>> {\n        const response = await this.client.put(`scopes/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { User } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class UserAPI extends BaseAPI implements EntityAPI<User> {\n    async getMany(\n        options?: BuildInput<User>,\n    ): Promise<EntityCollectionResponse<User>> {\n        const response = await this.client\n            .get(`users${buildQuery(options)}`);\n\n        return response.data;\n    }\n\n    async getOne(\n        id: User['id'],\n        options?: BuildInput<User>,\n    ): Promise<EntityRecordResponse<User>> {\n        const response = await this.client\n            .get(`users/${id}${buildQuery(options)}`);\n\n        return response.data;\n    }\n\n    async delete(\n        id: User['id'],\n    ): Promise<EntityRecordResponse<User>> {\n        const response = await this.client\n            .delete(`users/${id}`);\n\n        return response.data;\n    }\n\n    async create(\n        data: Partial<User>,\n    ): Promise<EntityRecordResponse<User>> {\n        const response = await this.client\n            .post('users', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(\n        id: User['id'],\n        data: Partial<User> & { password_repeat?: User['password'] },\n    ): Promise<EntityRecordResponse<User>> {\n        const response = await this.client.post(`users/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async createOrUpdate(\n        idOrName: string,\n        data: Partial<User> & { password_repeat?: User['password'] },\n    ): Promise<EntityRecordResponse<User>> {\n        const response = await this.client.put(`users/${idOrName}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    // ---------------------------------------------------------------------------\n\n    async activate(\n        token: string,\n    ): Promise<User> {\n        const response = await this.client.post('users/activate', {\n            token,\n        });\n\n        return response.data;\n    }\n\n    async register(\n        data: Partial<Pick<User, 'email' | 'name' | 'password' | 'realm_id'>>,\n    ): Promise<User> {\n        const response = await this.client.post('users/register', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async passwordForgot(\n        data: Partial<Pick<User, 'email' | 'name' | 'realm_id'>>,\n    ) : Promise<User> {\n        const response = await this.client.post('users/password-forgot', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async passwordReset(\n        data: Partial<Pick<User, 'email' | 'name' | 'realm_id'>> &\n        { token: string, password: string },\n    ) : Promise<User> {\n        const response = await this.client.post('users/password-reset', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { UserAttribute } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type {\n    EntityAPI, EntityCollectionResponse, EntityRecordResponse,\n} from '../../types-base';\n\nexport class UserAttributeAPI extends BaseAPI implements EntityAPI<UserAttribute> {\n    async getMany(data?: BuildInput<UserAttribute>): Promise<EntityCollectionResponse<UserAttribute>> {\n        const response = await this.client.get(`user-attributes${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(roleId: UserAttribute['id']): Promise<EntityRecordResponse<UserAttribute>> {\n        const response = await this.client.get(`user-attributes/${roleId}`);\n\n        return response.data;\n    }\n\n    async delete(roleId: UserAttribute['id']): Promise<EntityRecordResponse<UserAttribute>> {\n        const response = await this.client.delete(`user-attributes/${roleId}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<UserAttribute>): Promise<EntityRecordResponse<UserAttribute>> {\n        const response = await this.client.post('user-attributes', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(id: UserAttribute['id'], data: Partial<UserAttribute>): Promise<EntityRecordResponse<UserAttribute>> {\n        const response = await this.client.post(`user-attributes/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { UserPermission } from '@authup/core-kit';\nimport { nullifyEmptyObjectProperties } from '../../../utils';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPISlim, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class UserPermissionAPI extends BaseAPI implements EntityAPISlim<UserPermission> {\n    async getMany(data?: BuildInput<UserPermission>) : Promise<EntityCollectionResponse<UserPermission>> {\n        const response = await this.client.get(`user-permissions${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async getOne(id: UserPermission['id']) : Promise<EntityRecordResponse<UserPermission>> {\n        const response = await this.client.get(`user-permissions/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: UserPermission['id']) : Promise<EntityRecordResponse<UserPermission>> {\n        const response = await this.client.delete(`user-permissions/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<UserPermission>) : Promise<EntityRecordResponse<UserPermission>> {\n        const response = await this.client.post('user-permissions', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-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\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { UserRole } from '@authup/core-kit';\nimport { BaseAPI } from '../../base';\nimport type { EntityAPISlim, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';\n\nexport class UserRoleAPI extends BaseAPI implements EntityAPISlim<UserRole> {\n    async getMany(data: BuildInput<UserRole> = {}): Promise<EntityCollectionResponse<UserRole>> {\n        const response = await this.client.get(`user-roles${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(id: UserRole['id']): Promise<EntityRecordResponse<UserRole>> {\n        const response = await this.client.get(`user-roles/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: UserRole['id']): Promise<EntityRecordResponse<UserRole>> {\n        const response = await this.client.delete(`user-roles/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<UserRole>): Promise<EntityRecordResponse<UserRole>> {\n        const response = await this.client.post('user-roles', data);\n\n        return response.data;\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\nimport type { OAuth2AuthorizationCodeRequest } from '@authup/core-kit';\nimport { AuthorizeAPI } from '@hapic/oauth2';\nimport { nullifyEmptyObjectProperties } from '../../../../utils';\n\nexport class OAuth2AuthorizeAPI extends AuthorizeAPI {\n    async confirm(\n        data: OAuth2AuthorizationCodeRequest,\n    ) : Promise<{ url: string }> {\n        const response = await this.client.post(\n            'authorize',\n            nullifyEmptyObjectProperties(data),\n        );\n\n        return response.data;\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\nimport { TokenAPI } from '@hapic/oauth2';\n\nexport class OAuth2TokenAPI extends TokenAPI {\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\nimport { UserInfoAPI } from '@hapic/oauth2';\n\nexport class OAuth2UserInfoAPI extends UserInfoAPI {\n\n}\n","/*\n * Copyright (c) 2022-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\nimport { Client as BaseClient, HookName, isClientError } from 'hapic';\nimport type {\n    Options,\n} from '@hapic/oauth2';\nimport type { OAuth2JsonWebKey, OpenIDProviderMetadata } from '@authup/specs';\nimport {\n    ClientAPI,\n    ClientPermissionAPI,\n    ClientRoleAPI,\n    ClientScopeAPI,\n    IdentityProviderAPI,\n    IdentityProviderRoleMappingAPI,\n    OAuth2AuthorizeAPI,\n    OAuth2TokenAPI,\n    OAuth2UserInfoAPI,\n    PermissionAPI,\n    PolicyAPI,\n    RealmAPI,\n    RobotAPI,\n    RobotPermissionAPI,\n    RobotRoleAPI,\n    RoleAPI,\n    RoleAttributeAPI,\n    RolePermissionAPI,\n    ScopeAPI,\n    UserAPI,\n    UserAttributeAPI,\n    UserPermissionAPI,\n    UserRoleAPI,\n} from '../domains';\nimport type { ClientOptions } from './type';\n\nexport class Client extends BaseClient {\n    public readonly token : OAuth2TokenAPI;\n\n    public readonly authorize : OAuth2AuthorizeAPI;\n\n    public readonly client : ClientAPI;\n\n    public readonly clientPermission : ClientPermissionAPI;\n\n    public readonly clientRole : ClientRoleAPI;\n\n    public readonly clientScope : ClientScopeAPI;\n\n    public readonly identityProvider : IdentityProviderAPI;\n\n    public readonly identityProviderRoleMapping : IdentityProviderRoleMappingAPI;\n\n    public readonly policy: PolicyAPI;\n\n    public readonly permission : PermissionAPI;\n\n    public readonly realm : RealmAPI;\n\n    public readonly robot : RobotAPI;\n\n    public readonly robotPermission : RobotPermissionAPI;\n\n    public readonly robotRole : RobotRoleAPI;\n\n    public readonly role : RoleAPI;\n\n    public readonly roleAttribute : RoleAttributeAPI;\n\n    public readonly rolePermission : RolePermissionAPI;\n\n    public readonly scope: ScopeAPI;\n\n    public readonly user : UserAPI;\n\n    public readonly userInfo : OAuth2UserInfoAPI;\n\n    public readonly userAttribute: UserAttributeAPI;\n\n    public readonly userPermission : UserPermissionAPI;\n\n    public readonly userRole : UserRoleAPI;\n\n    constructor(config: ClientOptions = {}) {\n        super(config);\n\n        const options : Options = {\n            authorizationEndpoint: 'authorize',\n            introspectionEndpoint: 'token/introspect',\n            tokenEndpoint: 'token',\n            userinfoEndpoint: 'users/@me',\n        };\n\n        const baseURL = this.getBaseURL();\n\n        if (typeof baseURL === 'string') {\n            const keys = Object.keys(options);\n            for (let i = 0; i < keys.length; i++) {\n                options[keys[i]] = new URL(options[keys[i]], baseURL).href;\n            }\n        }\n\n        this.authorize = new OAuth2AuthorizeAPI({ client: this, options });\n        this.token = new OAuth2TokenAPI({ client: this, options });\n\n        this.client = new ClientAPI({ client: this });\n        this.clientPermission = new ClientPermissionAPI({ client: this });\n        this.clientRole = new ClientRoleAPI({ client: this });\n        this.clientScope = new ClientScopeAPI({ client: this });\n\n        this.identityProvider = new IdentityProviderAPI({ client: this });\n        this.identityProviderRoleMapping = new IdentityProviderRoleMappingAPI({ client: this });\n\n        this.policy = new PolicyAPI({ client: this });\n        this.permission = new PermissionAPI({ client: this });\n\n        this.realm = new RealmAPI({ client: this });\n\n        this.robot = new RobotAPI({ client: this });\n        this.robotPermission = new RobotPermissionAPI({ client: this });\n        this.robotRole = new RobotRoleAPI({ client: this });\n\n        this.role = new RoleAPI({ client: this });\n        this.roleAttribute = new RoleAttributeAPI({ client: this });\n        this.rolePermission = new RolePermissionAPI({ client: this });\n\n        this.scope = new ScopeAPI({ client: this });\n\n        this.user = new UserAPI({ client: this });\n\n        this.userInfo = new OAuth2UserInfoAPI({ client: this, options });\n        this.userAttribute = new UserAttributeAPI({ client: this });\n        this.userPermission = new UserPermissionAPI({ client: this });\n        this.userRole = new UserRoleAPI({ client: this });\n\n        this.on(HookName.RESPONSE_ERROR, ((error) => {\n            if (\n                isClientError(error) &&\n                error.response &&\n                error.response.data &&\n                    typeof error.response.data.message === 'string'\n            ) {\n                error.message = error.response.data.message;\n            }\n\n            throw error;\n        }));\n    }\n\n    async getJwks() : Promise<OAuth2JsonWebKey[]> {\n        const response = await this.get('jwks');\n\n        return response.data;\n    }\n\n    async getJwk(id: string) : Promise<OAuth2JsonWebKey> {\n        const response = await this.get(`jwks/${id}`);\n\n        return response.data;\n    }\n\n    async getWellKnownOpenIDConfiguration() : Promise<OpenIDProviderMetadata> {\n        const response = await this.get('/.well-known/openid-configuration');\n        return response.data;\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 */\nimport { isObject } from '@authup/kit';\n\nexport function getClientErrorCode(err: unknown): string | null {\n    if (!isObject(err) || !isObject(err.response)) {\n        return null;\n    }\n\n    /* istanbul ignore next */\n    if (!isObject(err.response.data) || typeof err.response.data.code !== 'string') {\n        return null;\n    }\n\n    return err.response.data.code;\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 enum ClientAuthenticationHookEventName {\n    REFRESH_FINISHED = 'refreshFinished',\n    REFRESH_FAILED = 'refreshFailed',\n\n    HEADER_SET = 'headerSet',\n    HEADER_UNSET = 'headerRemoved',\n}\n","/*\n * Copyright (c) 2023-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 enum TokenCreatorVariation {\n    USER = 'user',\n    ROBOT = 'robot',\n    ROBOT_IN_VAULT = 'robotInVault',\n}\n","/*\n * Copyright (c) 2023-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\nimport { Client } from '../../client';\nimport type { TokenCreator, TokenCreatorRobotOptions } from '../type';\n\nexport function createTokenCreatorWithRobot(\n    options: Omit<TokenCreatorRobotOptions, 'type'>,\n    client?: Client,\n): TokenCreator {\n    const api = client || new Client({ baseURL: options.baseURL });\n\n    return async () => api.token.createWithRobotCredentials({\n        id: options.id,\n        secret: options.secret,\n    }).then((response) => {\n        if (options.created) {\n            options.created(response);\n        }\n\n        return response;\n    });\n}\n","/*\n * Copyright (c) 2023-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\nimport { VaultClient } from '@hapic/vault';\nimport { isObject } from '@authup/kit';\nimport type { Robot } from '@authup/core-kit';\nimport { Client } from '../../client';\nimport type { TokenCreator, TokenCreatorRobotInVaultOptions } from '../type';\nimport { createTokenCreatorWithRobot } from './robot';\n\nexport function createTokenCreatorWithRobotInVault(\n    options: Omit<TokenCreatorRobotInVaultOptions, 'type'>,\n) : TokenCreator {\n    let client : VaultClient;\n    if (typeof options.vault === 'string') {\n        client = new VaultClient({ connectionString: options.vault });\n    } else {\n        client = options.vault;\n    }\n\n    const apiClient = new Client({ baseURL: options.baseURL });\n\n    const robotName = options.name.toLowerCase();\n\n    return async () => {\n        if (apiClient) {\n            await apiClient.robot.integrity(robotName);\n        }\n\n        const response = await client.keyValueV1.getOne<Partial<Robot>>(\n            'robots',\n            robotName,\n        );\n\n        if (\n            !isObject(response) ||\n            !isObject(response.data) ||\n            typeof response.data.id !== 'string' ||\n            typeof response.data.secret !== 'string'\n        ) {\n            throw new Error('The vault robot credentials response is malformed.');\n        }\n\n        const creator = createTokenCreatorWithRobot({\n            id: response.data.id,\n            secret: response.data.secret,\n        }, apiClient);\n\n        return creator().then((response) => {\n            if (options.created) {\n                options.created(response);\n            }\n\n            return response;\n        });\n    };\n}\n","/*\n * Copyright (c) 2023-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\nimport { Client } from '../../client';\nimport type { TokenCreator, TokenCreatorUserOptions } from '../type';\n\nexport function createTokenCreatorWithUser(options: Omit<TokenCreatorUserOptions, 'type'>) : TokenCreator {\n    const client = new Client({ baseURL: options.baseURL });\n\n    return async () => client.token.createWithPassword({\n        username: options.name,\n        password: options.password,\n        ...(options.realmId ? { realm_id: options.realmId } : {}),\n        ...(options.realmName ? { realm_name: options.realmName } : {}),\n    }).then((response) => {\n        if (options.created) {\n            options.created(response);\n        }\n\n        return response;\n    });\n}\n","/*\n * Copyright (c) 2023-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\nimport { TokenCreatorVariation } from './constants';\nimport {\n    createTokenCreatorWithRobot,\n    createTokenCreatorWithRobotInVault,\n    createTokenCreatorWithUser,\n} from './variations';\nimport type {\n    TokenCreator,\n    TokenCreatorOptions,\n} from './type';\n\nexport function createTokenCreator(options: TokenCreatorOptions) : TokenCreator {\n    switch (options.type) {\n        case TokenCreatorVariation.USER: {\n            return createTokenCreatorWithUser(options);\n        }\n        case TokenCreatorVariation.ROBOT: {\n            return createTokenCreatorWithRobot(options);\n        }\n        case TokenCreatorVariation.ROBOT_IN_VAULT: {\n            return createTokenCreatorWithRobotInVault(options);\n        }\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2023-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\nimport type { RequestOptions } from 'hapic';\n\ntype RetryState = {\n    retryCount: number\n};\nexport function getClientRequestRetryState(\n    config: Partial<RequestOptions> & { retry?: Partial<RetryState> },\n) : RetryState {\n    const currentState = config.retry || {};\n    currentState.retryCount = currentState.retryCount || 0;\n\n    config.retry = currentState;\n    return currentState as RetryState;\n}\n","/*\n * Copyright (c) 2023-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\nimport { isObject } from '@authup/kit';\nimport { isJWKErrorCode, isJWTErrorCode } from '@authup/specs';\nimport type { TokenGrantResponse } from '@hapic/oauth2';\nimport { EventEmitter } from '@posva/event-emitter';\nimport type { AuthorizationHeader, Client as BaseClient } from 'hapic';\nimport {\n    HeaderName, HookName, isClientError, setHeader, stringifyAuthorizationHeader, unsetHeader,\n} from 'hapic';\nimport { getClientErrorCode } from '../helpers';\nimport type { TokenCreator } from '../token-creator';\nimport { createTokenCreator } from '../token-creator';\nimport { ClientAuthenticationHookEventName } from './constants';\nimport type { ClientAuthenticationHookEvents, ClientAuthenticationHookOptions } from './types';\nimport { getClientRequestRetryState } from './utils';\n\nconst HOOK_SYMBOL = Symbol.for('ClientResponseHook');\n\nexport class ClientAuthenticationHook extends EventEmitter<{\n    [K in keyof ClientAuthenticationHookEvents as `${K}`]: ClientAuthenticationHookEvents[K]\n}> {\n    protected isActive : boolean;\n\n    protected authorizationHeader : AuthorizationHeader | undefined;\n\n    protected clients : BaseClient[];\n\n    protected creator: TokenCreator;\n\n    protected options : ClientAuthenticationHookOptions;\n\n    protected timer : ReturnType<typeof setTimeout> | undefined;\n\n    protected refreshPromise?: Promise<TokenGrantResponse>;\n\n    // ------------------------------------------------\n\n    constructor(options: ClientAuthenticationHookOptions) {\n        super();\n\n        this.isActive = true;\n        this.authorizationHeader = undefined;\n\n        this.clients = [];\n\n        options.timer ??= true;\n        this.options = options;\n\n        let creator : TokenCreator;\n        if (typeof options.tokenCreator === 'function') {\n            creator = options.tokenCreator;\n        } else {\n            creator = createTokenCreator({\n                ...options.tokenCreator,\n                baseURL: options.baseURL,\n            });\n        }\n\n        this.creator = creator;\n    }\n\n    // ------------------------------------------------\n\n    enable() {\n        this.isActive = true;\n    }\n\n    disable() {\n        this.isActive = false;\n    }\n\n    // ------------------------------------------------\n\n    setAuthorizationHeader(value: AuthorizationHeader) {\n        this.authorizationHeader = value;\n\n        for (let i = 0; i < this.clients.length; i++) {\n            this.clients[i].setAuthorizationHeader(value);\n        }\n\n        this.emit(ClientAuthenticationHookEventName.HEADER_SET);\n    }\n\n    unsetAuthorizationHeader() {\n        this.authorizationHeader = undefined;\n\n        for (let i = 0; i < this.clients.length; i++) {\n            this.clients[i].unsetAuthorizationHeader();\n        }\n\n        this.emit(ClientAuthenticationHookEventName.HEADER_UNSET);\n    }\n\n    // ------------------------------------------------\n\n    isAttached(client: BaseClient) {\n        return HOOK_SYMBOL in client;\n    }\n\n    attach(client: BaseClient) {\n        if (this.authorizationHeader) {\n            client.setAuthorizationHeader(this.authorizationHeader);\n        } else {\n            client.unsetAuthorizationHeader();\n        }\n\n        const index = this.clients.indexOf(client);\n        if (index === -1) {\n            this.clients.push(client);\n        }\n\n        if (!this.isAttached(client)) {\n            client[HOOK_SYMBOL] = client.on(\n                HookName.RESPONSE_ERROR,\n                (err) => {\n                    if (!this.isActive) {\n                        return Promise.reject(err);\n                    }\n\n                    const { request } = err;\n\n                    const currentState = getClientRequestRetryState(request);\n                    if (currentState.retryCount > 0) {\n                        return Promise.reject(err);\n                    }\n\n                    currentState.retryCount += 1;\n\n                    const code = getClientErrorCode(err);\n\n                    if (isJWKErrorCode(code)) {\n                        this.unsetAuthorizationHeader();\n\n                        if (request.headers) {\n                            unsetHeader(\n                                request.headers,\n                                HeaderName.AUTHORIZATION,\n                            );\n                        }\n\n                        return Promise.reject(err);\n                    }\n\n                    if (\n                        isJWTErrorCode(code) ||\n                        (isObject(err.response) && err.response.status === 401)\n                    ) {\n                        return this.refresh()\n                            .then((response) => {\n                                if (request.headers) {\n                                    setHeader(\n                                        request.headers,\n                                        HeaderName.AUTHORIZATION,\n                                        stringifyAuthorizationHeader({\n                                            type: 'Bearer',\n                                            token: response.access_token,\n                                        }),\n                                    );\n                                }\n\n                                return client.request(request);\n                            })\n                            .catch((err) => {\n                                if (request.headers) {\n                                    unsetHeader(\n                                        request.headers,\n                                        HeaderName.AUTHORIZATION,\n                                    );\n                                }\n\n                                return Promise.reject(err);\n                            });\n                    }\n\n                    return Promise.reject(err);\n                },\n            );\n        }\n    }\n\n    detach(client: BaseClient) {\n        client.unsetAuthorizationHeader();\n\n        const index = this.clients.indexOf(client);\n        if (index !== -1) {\n            this.clients.splice(index, 1);\n        }\n\n        if (this.isAttached(client)) {\n            client.off(HookName.RESPONSE_ERROR, client[HOOK_SYMBOL] as number);\n\n            delete client[HOOK_SYMBOL];\n        }\n    }\n\n    // ------------------------------------------------\n\n    setTimer(\n        expiresIn: number,\n    ) {\n        if (!this.options.timer) {\n            return;\n        }\n\n        this.clearTimer();\n\n        const refreshInMs = (expiresIn - 60) * 1000;\n        if (refreshInMs > 0) {\n            this.timer = setTimeout(\n                async () => this.refresh(),\n                refreshInMs,\n            );\n        }\n    }\n\n    clearTimer() {\n        if (this.timer) {\n            clearTimeout(this.timer);\n        }\n    }\n\n    // ------------------------------------------------\n\n    /**\n     * Refresh token\n     *\n     * @throws ClientError\n     */\n    protected async refresh() : Promise<TokenGrantResponse> {\n        if (this.refreshPromise) {\n            return this.refreshPromise;\n        }\n\n        this.refreshPromise = this.creator();\n\n        return this.refreshPromise\n            .then((response) => {\n                this.setTimer(response.expires_in);\n\n                this.emit(ClientAuthenticationHookEventName.REFRESH_FINISHED, response);\n\n                this.refreshPromise = undefined;\n\n                this.setAuthorizationHeader({\n                    type: 'Bearer',\n                    token: response.access_token,\n                });\n\n                return response;\n            })\n            .catch((e) => {\n                if (isClientError(e)) {\n                    this.emit(ClientAuthenticationHookEventName.REFRESH_FAILED, e);\n                } else {\n                    this.emit(ClientAuthenticationHookEventName.REFRESH_FAILED, null);\n                }\n\n                this.refreshPromise = undefined;\n\n                this.unsetAuthorizationHeader();\n\n                return Promise.reject(e);\n            });\n    }\n}\n"],"names":["CookieName","isClientError","input","isError","cleanDoubleSlashes","indexOf","split","map","str","join","replace","nullifyEmptyObjectProperties","data","keys","Object","i","length","BaseAPI","setClient","client","isClient","createClient","constructor","context","ClientAPI","getMany","options","response","get","buildQuery","getOne","id","delete","create","post","update","createOrUpdate","idOrName","put","ClientPermissionAPI","ClientRoleAPI","ClientScopeAPI","IdentityProviderAPI","getAuthorizeUri","baseUrl","buildIdentityProviderAuthorizePath","record","IdentityProviderRoleMappingAPI","PolicyAPI","getOneExpanded","createBuiltIn","updateBuiltIn","createOrUpdateBuiltin","check","PermissionAPI","RealmAPI","realmId","RobotAPI","integrity","RobotPermissionAPI","RobotRoleAPI","RoleAPI","roleId","RoleAttributeAPI","RolePermissionAPI","ScopeAPI","UserAPI","activate","token","register","passwordForgot","passwordReset","UserAttributeAPI","UserPermissionAPI","UserRoleAPI","OAuth2AuthorizeAPI","AuthorizeAPI","confirm","OAuth2TokenAPI","TokenAPI","OAuth2UserInfoAPI","UserInfoAPI","Client","BaseClient","getJwks","getJwk","getWellKnownOpenIDConfiguration","config","authorizationEndpoint","introspectionEndpoint","tokenEndpoint","userinfoEndpoint","baseURL","getBaseURL","URL","href","authorize","clientPermission","clientRole","clientScope","identityProvider","identityProviderRoleMapping","policy","permission","realm","robot","robotPermission","robotRole","role","roleAttribute","rolePermission","scope","user","userInfo","userAttribute","userPermission","userRole","on","HookName","RESPONSE_ERROR","error","message","getClientErrorCode","err","isObject","code","ClientAuthenticationHookEventName","TokenCreatorVariation","createTokenCreatorWithRobot","api","createWithRobotCredentials","secret","then","created","createTokenCreatorWithRobotInVault","vault","VaultClient","connectionString","apiClient","robotName","name","toLowerCase","keyValueV1","Error","creator","createTokenCreatorWithUser","createWithPassword","username","password","realm_id","realmName","realm_name","createTokenCreator","type","USER","ROBOT","ROBOT_IN_VAULT","undefined","getClientRequestRetryState","currentState","retry","retryCount","HOOK_SYMBOL","Symbol","for","ClientAuthenticationHook","EventEmitter","enable","isActive","disable","setAuthorizationHeader","value","authorizationHeader","clients","emit","HEADER_SET","unsetAuthorizationHeader","HEADER_UNSET","isAttached","attach","index","push","Promise","reject","request","isJWKErrorCode","headers","unsetHeader","HeaderName","AUTHORIZATION","isJWTErrorCode","status","refresh","setHeader","stringifyAuthorizationHeader","access_token","catch","detach","splice","off","setTimer","expiresIn","timer","clearTimer","refreshInMs","setTimeout","clearTimeout","refreshPromise","expires_in","REFRESH_FINISHED","e","REFRESH_FAILED","tokenCreator"],"mappings":"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"}