{"version":3,"file":"index.mjs","sources":["../src/ability-manager/utils/descriptor.ts","../src/error/constants.ts","../src/error/entities/header.ts","../src/ability-manager/error.ts","../src/ability-manager/utils/meta.ts","../src/utils/duplicate-slashes.ts","../src/utils/glob.ts","../src/utils/has-own-property.ts","../src/utils/nanoid.ts","../src/utils/object.ts","../src/utils/object-property.ts","../src/utils/proxy-connection.ts","../src/utils/self-id.ts","../src/utils/url.ts","../src/utils/uuid.ts","../src/ability-manager/utils/shape.ts","../src/ability-manager/module.ts","../src/domains/key/constants.ts","../src/domains/key/utils.ts","../src/domains/auth/constants.ts","../src/domains/auth/error.ts","../src/domains/auth/utils/sub.ts","../src/domains/auth/utils/sub-kind.ts","../src/domains/access-token/constants.ts","../src/domains/authorization-code/constants.ts","../src/domains/client/api.ts","../src/domains/client-scope/api.ts","../src/domains/identity-provider/utils.ts","../src/domains/identity-provider/api.ts","../src/domains/identity-provider/constants.ts","../src/domains/identity-provider-role/api.ts","../src/domains/permission/api.ts","../src/domains/permission/constants.ts","../src/domains/permission/utils.ts","../src/domains/realm/api.ts","../src/domains/realm/constants.ts","../src/domains/realm/utils.ts","../src/domains/robot/api.ts","../src/domains/robot/constants.ts","../src/domains/robot/error.ts","../src/domains/robot-permission/api.ts","../src/domains/robot-role/api.ts","../src/domains/role/api.ts","../src/domains/role/utils.ts","../src/domains/role-attribute/api.ts","../src/domains/role-permission/api.ts","../src/domains/scope/api.ts","../src/domains/scope/constants.ts","../src/domains/scope/utils.ts","../src/domains/user/api.ts","../src/domains/user/error.ts","../src/domains/user/utils.ts","../src/domains/user-attribute/api.ts","../src/domains/user-permission/api.ts","../src/domains/user-role/api.ts","../src/domains/contstants.ts","../src/domains/utils.ts","../src/http/client/module.ts","../src/http/client/utils.ts","../src/http/cookies.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { AbilityDescriptor } from '../type';\n\nexport function extendPermissionDescriptor(descriptor: AbilityDescriptor) {\n    if (typeof descriptor.target === 'undefined') {\n        descriptor.target = null;\n    }\n\n    if (typeof descriptor.inverse === 'undefined') {\n        descriptor.inverse = null;\n    }\n\n    return descriptor;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ErrorCode {\n    ABILITY_INVALID = 'invalid_ability',\n\n    HEADER_INVALID = 'invalid_header',\n    HEADER_AUTH_TYPE_UNSUPPORTED = 'unsupported_auth_header_type',\n\n    CREDENTIALS_INVALID = 'invalid_credentials',\n\n    ENTITY_INACTIVE = 'inactive_entity',\n\n    TOKEN_REDIRECT_URI_MISMATCH = 'redirect_uri_mismatch',\n    TOKEN_INVALID = 'invalid_token',\n    TOKEN_INACTIVE = 'inactive_token',\n    TOKEN_EXPIRED = 'expired_token',\n    TOKEN_CLIENT_INVALID = 'invalid_client',\n    TOKEN_GRANT_INVALID = 'invalid_grant',\n    TOKEN_GRANT_TYPE_UNSUPPORTED = 'unsupported_token_grant_type',\n    TOKEN_SCOPE_INVALID = 'invalid_scope',\n    TOKEN_SUB_KIND_INVALID = 'invalid_token_sub_kind',\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Options } from '@ebec/http';\nimport { BadRequestError, mergeOptions } from '@ebec/http';\nimport type { AuthorizationHeaderType } from 'hapic';\nimport { ErrorCode } from '../constants';\n\nexport class HeaderError extends BadRequestError {\n    constructor(options?: Options) {\n        super(mergeOptions({\n            code: ErrorCode.HEADER_INVALID,\n        }, options));\n    }\n\n    static unsupportedHeaderType(type: `${AuthorizationHeaderType}`) {\n        return new HeaderError({\n            code: ErrorCode.HEADER_AUTH_TYPE_UNSUPPORTED,\n            message: `The authorization header type ${type} is not supported.`,\n        });\n    }\n}\n","/*\n * Copyright (c) 2021-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Options } from '@ebec/http';\nimport { BaseError, mergeOptions } from '@ebec/http';\nimport { ErrorCode } from '../error';\n\nexport class AbilityError extends BaseError {\n    constructor(options?: Options) {\n        super(mergeOptions({\n            code: ErrorCode.ABILITY_INVALID,\n        }, (options || {})));\n    }\n\n    static buildMeta() {\n        return new AbilityError({\n            message: 'The ability meta could not be built.',\n        });\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport { pascalCase } from 'change-case';\nimport type { AbilityID } from '../type';\nimport { AbilityError } from '../error';\n\n/**\n * Build ability-meta object from permission name.\n *\n * @param name\n * @param delimiter\n *\n * @throws AbilityError\n */\nexport function buildAbilityMetaFromName(\n    name: string,\n    delimiter = '_',\n) : AbilityID {\n    const parts : string[] = name.split(delimiter);\n    if (parts.length < 2) {\n        throw AbilityError.buildMeta();\n    }\n\n    const action : string = parts.pop();\n    const subject : string = pascalCase(parts.join(' '));\n\n    return {\n        action,\n        subject,\n    };\n}\n\nexport function buildNameFromAbilityID(meta: AbilityID) : string {\n    return `${meta.subject}_${meta.subject}`;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function removeDuplicateForwardSlashesFromURL(str: string) : string {\n    return str.replace(/([^:]\\/)\\/+/g, '$1');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport minimatch from 'minimatch';\n\nexport function isGlobMatch(target: string, pattern: string | string[]) {\n    const patterns = Array.isArray(pattern) ? pattern : [pattern];\n    for (let i = 0; i < patterns.length; i++) {\n        if (minimatch(target, patterns[i])) {\n            return true;\n        }\n    }\n\n    return false;\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function isPropertySet<X extends Record<string, any>, K extends keyof X>(\n    obj: X,\n    prop: K,\n) : boolean {\n    return hasOwnProperty(obj, prop);\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { customAlphabet } from 'nanoid';\n\nexport function createNanoID(alphabet?: string) : string;\nexport function createNanoID(len?: number) : string;\nexport function createNanoID(alphabet?: string, len?: number) : string;\nexport function createNanoID(alphabetOrLen?: string | number, len?: number) : string {\n    if (typeof alphabetOrLen === 'string') {\n        return customAlphabet(alphabetOrLen, len || 21)();\n    }\n\n    if (typeof alphabetOrLen === 'number') {\n        return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', alphabetOrLen)();\n    }\n\n    return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', len || 21)();\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isObject(input: unknown) : input is Record<string, any> {\n    return !!input &&\n        typeof input === 'object' &&\n        !Array.isArray(input);\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isPropertySet } from './has-own-property';\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;\n        }\n    }\n\n    return data;\n}\n\nexport function deleteUndefinedObjectProperties<T extends Record<string, any>>(data: T) : T {\n    const keys : string[] = Object.keys(data);\n\n    for (let i = 0; i < keys.length; i++) {\n        if (typeof data[keys[i]] === 'undefined') {\n            delete data[keys[i]];\n        }\n    }\n\n    return data;\n}\n\nexport function extractObjectProperty<T extends Record<string, any>, K extends keyof T>(\n    data: T | undefined,\n    key: K,\n) : T[K] | undefined {\n    if (!data) {\n        return undefined;\n    }\n\n    if (isPropertySet(data, key)) {\n        return data[key];\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport type ProxyConnectionConfig = {\n    protocol: 'http' | 'https',\n    host: string,\n    port: number,\n    auth: {\n        username: string,\n        password: string,\n    }\n};\n\nexport function parseProxyConnectionString(\n    input: string,\n) : ProxyConnectionConfig | undefined {\n    const match = input\n        .match(/(?:(https|http):\\/\\/)(?:(\\w+)(?::(\\w+))?@)?(?:([^:]+))(?::(\\d{1,5}))?$/);\n\n    if (!match) {\n        return undefined;\n    }\n\n    return {\n        protocol: match[1] as 'http' | 'https',\n        host: match[4],\n        port: parseInt(match[5], 10),\n        auth: {\n            username: match[2],\n            password: match[3],\n        },\n    };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isSelfId(id: string) {\n    return id === '@me' ||\n        id === '@self';\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function makeURLPublicAccessible(url: string) {\n    return url.replace('0.0.0.0', '127.0.0.1');\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isUUID(input: string) : boolean {\n    // eslint-disable-next-line prefer-regex-literals\n    const regexp = new RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i);\n    return regexp.test(input);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { AbilityID } from '../type';\nimport { hasOwnProperty } from '../../utils';\n\nexport function isAbilityID(input: unknown) : input is AbilityID {\n    return typeof input === 'object' &&\n        hasOwnProperty(input, 'action') &&\n        hasOwnProperty(input, 'subject') &&\n        (\n            typeof input.subject === 'string' ||\n                typeof input.subject === 'object'\n        );\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { MongoQuery } from '@ucast/mongo2js';\nimport { guard } from '@ucast/mongo2js';\n\nimport type {\n    Ability,\n    AbilityDescriptor,\n    AbilityID,\n} from './type';\nimport {\n    buildAbilityMetaFromName,\n    buildNameFromAbilityID,\n    extendPermissionDescriptor,\n    isAbilityID,\n} from './utils';\n\nexport class AbilityManager {\n    protected items: Ability[];\n\n    // ----------------------------------------------\n\n    constructor(input: AbilityDescriptor[] | AbilityDescriptor = []) {\n        this.set(input);\n    }\n\n    // ----------------------------------------------\n\n    /**\n     * Check if permission is assigned with field and condition restriction.\n     *\n     * @param action\n     * @param subject\n     * @param field\n     */\n    verify(\n        action: AbilityID | string,\n        subject?: Record<string, any>,\n        field?: string,\n    ) : boolean {\n        if (isAbilityID(action)) {\n            action = buildNameFromAbilityID(action);\n        }\n\n        const item = this.getOne(action, {\n            withoutInverse: true,\n            subject,\n            field,\n        });\n\n        return !!item;\n    }\n\n    /**\n     * Check if permission is assigned without field or condition restriction.\n     *\n     * @param action\n     * @param withoutInverse\n     */\n    has(\n        action: AbilityID | AbilityID[] | string | string[],\n        withoutInverse = true,\n    ) : boolean {\n        if (Array.isArray(action)) {\n            return action.some((item) => this.has(item));\n        }\n\n        if (typeof action !== 'string') {\n            action = buildNameFromAbilityID(action);\n        }\n\n        const item = this.getOne(action, {\n            withoutInverse,\n        });\n\n        return !!item;\n    }\n\n    // ----------------------------------------------\n\n    satisfy(\n        predicate: MongoQuery<Ability> | string,\n        subject?: Record<string, any>,\n    ) {\n        const item = this.getOne(predicate, {\n            subject,\n        });\n\n        return !!item;\n    }\n\n    // ----------------------------------------------\n\n    getTarget(value: MongoQuery<Ability> | string) : string | null | undefined {\n        let predicate : MongoQuery<Ability>;\n\n        if (typeof value === 'string') {\n            predicate = { name: { $eq: value } };\n        } else {\n            predicate = value;\n        }\n\n        predicate.target = { $eq: null };\n        let item = this.getOne(predicate);\n        if (item) {\n            return item.target;\n        }\n\n        delete predicate.target;\n        item = this.getOne(predicate);\n        return item ? item.target : undefined;\n    }\n\n    matchTarget(id: string | MongoQuery<Ability>, target?: string) {\n        let basePredicate : MongoQuery<Ability>;\n        if (typeof id === 'string') {\n            basePredicate = {\n                name: {\n                    $eq: id,\n                },\n            };\n        } else {\n            basePredicate = id;\n        }\n\n        return [null, target].some((value) => this.satisfy({\n            ...basePredicate,\n            target: {\n                $eq: value,\n            },\n        }));\n    }\n\n    // ----------------------------------------------\n\n    getPower(\n        id: string | MongoQuery<Ability>,\n        direction: 'max' | 'min' = 'max',\n    ) : undefined | number {\n        let sortFn : (a : Ability, b: Ability) => number;\n\n        if (direction === 'min') {\n            sortFn = (a, b) => a.power - b.power;\n        } else {\n            sortFn = (a, b) => b.power - a.power;\n        }\n\n        const item = this.getOne(id, {\n            withoutInverse: true,\n            sortFn,\n        });\n\n        return item ? item.power : undefined;\n    }\n\n    // ----------------------------------------------\n\n    getMany() : Ability[] {\n        return this.items;\n    }\n\n    getOne(\n        predicate: MongoQuery<Ability> | string,\n        options?: {\n            withoutInverse?: boolean,\n            field?: string,\n            subject?: Record<string, any>,\n            sortFn?: (a: Ability, b: Ability) => number,\n        },\n    ) : Ability | undefined {\n        if (typeof predicate === 'string') {\n            predicate = {\n                name: {\n                    $eq: predicate,\n                },\n            };\n        }\n\n        const test = guard<Ability>(predicate);\n\n        options = options || {};\n\n        if (typeof options.sortFn !== 'undefined') {\n            this.items.sort(options.sortFn);\n        }\n\n        for (let i = 0; i < this.items.length; i++) {\n            if (\n                !test(this.items[i])\n            ) {\n                // eslint-disable-next-line no-continue\n                continue;\n            }\n\n            if (\n                this.items[i].condition &&\n                options.subject\n            ) {\n                const conditionTest = guard(this.items[i].condition);\n                if (!conditionTest(options.subject)) {\n                    // eslint-disable-next-line no-continue\n                    continue;\n                }\n            }\n\n            if (\n                this.items[i].fields &&\n                options.field\n            ) {\n                const index = this.items[i].fields.indexOf(options.field);\n                if (index === -1) {\n                    // eslint-disable-next-line no-continue\n                    continue;\n                }\n            }\n\n            if (\n                options.withoutInverse &&\n                this.items[i].inverse\n            ) {\n                // eslint-disable-next-line no-continue\n                continue;\n            }\n\n            return this.items[i];\n        }\n\n        return undefined;\n    }\n\n    set(\n        input: AbilityDescriptor[] | AbilityDescriptor,\n        merge?: boolean,\n    ) {\n        const configurations = Array.isArray(input) ?\n            input :\n            [input];\n\n        const items : Ability[] = [];\n\n        for (let i = 0; i < configurations.length; i++) {\n            configurations[i] = extendPermissionDescriptor(configurations[i]);\n\n            items[i] = {\n                ...configurations[i],\n                ...buildAbilityMetaFromName(configurations[i].name),\n            };\n        }\n\n        if (merge) {\n            // todo: check if unique !\n            this.items = [...this.items, ...items];\n        } else {\n            this.items = items;\n        }\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum KeyType {\n    /**\n     * Octet/Byte sequence (used to represent symmetric keys)\n     */\n    OCT = 'oct',\n    /**\n     * RSA\n     */\n    RSA = 'rsa',\n    /**\n     * Elliptic Curve\n     */\n    EC = 'ec',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nfunction wrapPem(\n    type: 'PRIVATE KEY' | 'PUBLIC KEY',\n    input: string | ArrayBuffer | Buffer,\n) {\n    if (typeof input !== 'string') {\n        input = Buffer.from(input).toString('base64');\n    }\n\n    return `-----BEGIN ${type}-----\\n${input}\\n-----END ${type}-----`;\n}\n\nexport function wrapPrivateKeyPem(input: string | ArrayBuffer | Buffer) {\n    return wrapPem('PRIVATE KEY', input);\n}\n\nexport function wrapPublicKeyPem(input: string | ArrayBuffer | Buffer) {\n    return wrapPem('PUBLIC KEY', input);\n}\n\n// ------------------------------------------------------------\n\nfunction unwrapPem(\n    type: 'PRIVATE KEY' | 'PUBLIC KEY',\n    input: string,\n) {\n    if (typeof input !== 'string') {\n        input = Buffer.from(input).toString('base64');\n    }\n\n    input = input.replace(`-----BEGIN ${type}-----\\n`, '');\n\n    input = input.replace(`\\n-----END ${type}-----\\n`, '');\n    input = input.replace(`-----END ${type}-----\\n`, '');\n    input = input.replace(`\\n-----END ${type}-----`, '');\n\n    return input;\n}\n\nexport function unwrapPrivateKeyPem(input: string) {\n    return unwrapPem('PRIVATE KEY', input);\n}\n\nexport function unwrapPublicKeyPem(input: string) {\n    return unwrapPem('PUBLIC KEY', input);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum OAuth2TokenKind {\n    ACCESS = 'access_token',\n    ID_TOKEN = 'id_token',\n    REFRESH = 'refresh_token',\n}\n\nexport enum OAuth2SubKind {\n    CLIENT = 'client',\n    USER = 'user',\n    ROBOT = 'robot',\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Options } from '@ebec/http';\nimport { BadRequestError, mergeOptions } from '@ebec/http';\nimport { ErrorCode } from '../../error';\nimport type { OAuth2SubKind } from './constants';\n\nexport class TokenError extends BadRequestError {\n    constructor(options?: Options) {\n        super(mergeOptions((options || {}), {\n            code: ErrorCode.TOKEN_INVALID,\n            message: 'The Token is invalid.',\n        }));\n    }\n\n    // -------------------------------------------------\n\n    static subKindInvalid() {\n        return new TokenError({\n            code: ErrorCode.TOKEN_SUB_KIND_INVALID,\n            message: 'The token sub kind is invalid.',\n        });\n    }\n\n    static expired() {\n        return new TokenError({\n            statusCode: 401,\n            code: ErrorCode.TOKEN_EXPIRED,\n            message: 'The token has been expired.',\n        });\n    }\n\n    static kindInvalid() {\n        return new TokenError({\n            message: 'The token kind is invalid.',\n        });\n    }\n\n    static notActiveBefore(date: string) {\n        return new TokenError({\n            statusCode: 401,\n            code: ErrorCode.TOKEN_INACTIVE,\n            message: `The token is not active before: ${date}.`,\n            date,\n        });\n    }\n\n    static payloadInvalid(message?: string) {\n        return new TokenError({\n            code: ErrorCode.TOKEN_INVALID,\n            message: message || 'The token payload is malformed.',\n        });\n    }\n\n    // -------------------------------------------------\n\n    static accessTokenRequired() {\n        return new TokenError({\n            message: 'An access token is required to authenticate.',\n        });\n    }\n\n    static clientInvalid() {\n        return new TokenError({\n            message: 'Client authentication failed.',\n            code: ErrorCode.TOKEN_CLIENT_INVALID,\n        });\n    }\n\n    static grantInvalid() {\n        return new TokenError({\n            message: 'The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token ' +\n                'is invalid, expired, revoked, does not match the redirection URI used in the authorization request, ' +\n                'or was issued to another client.',\n            code: ErrorCode.TOKEN_GRANT_INVALID,\n        });\n    }\n\n    static grantTypeUnsupported() {\n        return new TokenError({\n            message: 'The authorization grant type is not supported by the authorization server.',\n            code: ErrorCode.TOKEN_GRANT_TYPE_UNSUPPORTED,\n            hint: 'Check that all required parameters have been provided',\n        });\n    }\n\n    static refreshTokenInvalid() {\n        return new TokenError({\n            message: 'The refresh token is invalid.',\n        });\n    }\n\n    static requestInvalid(message?: string) {\n        return new TokenError({\n            message: message || 'The request is missing a required parameter, includes an unsupported parameter value, ' +\n                'repeats a parameter, or is otherwise malformed.',\n            hint: 'Check that all parameters have been provided correctly',\n        });\n    }\n\n    static scopeInvalid() {\n        return new TokenError({\n            message: ' The requested scope is invalid, unknown or malformed.',\n            code: ErrorCode.TOKEN_SCOPE_INVALID,\n        });\n    }\n\n    static redirectUriMismatch() {\n        return new TokenError({\n            message: 'The redirect URI is missing or do not match',\n            code: ErrorCode.TOKEN_REDIRECT_URI_MISMATCH,\n        });\n    }\n\n    static responseTypeUnsupported() {\n        return new TokenError({\n            message: 'The authorization server does not support obtaining an access token using this method.',\n        });\n    }\n\n    static targetInactive(kind: `${OAuth2SubKind}`) {\n        return new TokenError({\n            message: `The target token ${kind} is not active.`,\n        });\n    }\n\n    static signingKeyMissing() {\n        return new TokenError({\n            message: 'A token signing key could not be retrieved.',\n        });\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function getOAuth2SubByEntity<T extends {\n    robot_id: string | null,\n    user_id: string | null,\n    client_id: string | null\n}>(entity: T) : string {\n    return entity.robot_id || entity.user_id || entity.client_id;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { OAuth2SubKind } from '../constants';\n\nexport function getOAuth2SubKindByEntity<T extends {\n    robot_id: string | null,\n    user_id: string | null\n    client_id: string | null\n}>(entity: T) : OAuth2SubKind {\n    if (entity.robot_id) {\n        return OAuth2SubKind.ROBOT;\n    }\n\n    if (entity.user_id) {\n        return OAuth2SubKind.USER;\n    }\n\n    return OAuth2SubKind.CLIENT;\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum OAuth2TokenGrant {\n    AUTHORIZATION_CODE = 'authorization_code',\n    CLIENT_CREDENTIALS = 'client_credentials',\n    PASSWORD = 'password',\n    ROBOT_CREDENTIALS = 'robot_credentials',\n    REFRESH_TOKEN = 'refresh_token',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum OAuth2AuthorizationResponseType {\n    NONE = 'none',\n    CODE = 'code',\n    TOKEN = 'token',\n    ID_TOKEN = 'id_token',\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ClientDriverInstance } from 'hapic';\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Client } from './types';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { CollectionResourceResponse, DomainAPI, SingleResourceResponse } from '../types-base';\n\nexport class ClientAPI implements DomainAPI<Client> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(\n        options?: BuildInput<Client>,\n    ): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<Client>> {\n        const response = await this.client.post(`clients/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport type { ClientScope } from './types';\nimport type { CollectionResourceResponse, DomainAPISlim, SingleResourceResponse } from '../types-base';\n\nexport class ClientScopeAPI implements DomainAPISlim<ClientScope> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<ClientScope>) : Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<ClientScope>> {\n        const response = await this.client.post('client-scopes', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function buildIdentityProviderAuthorizeCallbackPath(id: string | number) {\n    return `/identity-providers/${id}/authorize-callback`;\n}\n\nexport function buildIdentityProviderAuthorizePath(id: string | number) {\n    return `/identity-providers/${id}/authorize-url`;\n}\n\nexport function isValidIdentityProviderSub(sub: string) : boolean {\n    return /^[a-z0-9-_]{3,36}$/.test(sub);\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport type { IdentityProvider } from './types';\nimport { nullifyEmptyObjectProperties, removeDuplicateForwardSlashesFromURL } from '../../utils';\nimport type { CollectionResourceResponse, DomainAPI, SingleResourceResponse } from '../types-base';\nimport { buildIdentityProviderAuthorizePath } from './utils';\n\nexport class IdentityProviderAPI implements DomainAPI<IdentityProvider> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    getAuthorizeUri(baseUrl: string, id: IdentityProvider['id']): string {\n        return removeDuplicateForwardSlashesFromURL(`${baseUrl}/${buildIdentityProviderAuthorizePath(id)}`);\n    }\n\n    async getMany(record?: BuildInput<IdentityProvider>): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<IdentityProvider>> {\n        const response = await this.client.post(`identity-providers/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum IdentityProviderProtocol {\n    LDAP = 'ldap',\n    OAUTH2 = 'oauth2',\n    OIDC = 'oidc',\n}\n\nexport enum IdentityProviderProtocolConfig {\n    FACEBOOK = 'facebook',\n    GITHUB = 'github',\n    GITLAB = 'gitlab',\n    GOOGLE = 'google',\n    PAYPAL = 'paypal',\n    STACKOVERFLOW = 'stackoverflow',\n    TWITTER = 'twitter',\n}\n\nexport enum IdentityProviderFlow {\n    DIRECT = 'direct',\n    INDIRECT = 'indirect',\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { IdentityProviderRole } from './types';\nimport type { CollectionResourceResponse, DomainAPI, SingleResourceResponse } from '../types-base';\n\nexport class IdentityProviderRoleAPI implements DomainAPI<IdentityProviderRole> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data: BuildInput<IdentityProviderRole>): Promise<CollectionResourceResponse<IdentityProviderRole>> {\n        const response = await this.client.get(`identity-provider-roles${buildQuery(data)}`);\n\n        return response.data;\n    }\n\n    async getOne(id: IdentityProviderRole['id']): Promise<SingleResourceResponse<IdentityProviderRole>> {\n        const response = await this.client.get(`identity-provider-roles/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: IdentityProviderRole['id']): Promise<SingleResourceResponse<IdentityProviderRole>> {\n        const response = await this.client.delete(`identity-provider-roles/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<IdentityProviderRole>): Promise<SingleResourceResponse<IdentityProviderRole>> {\n        const response = await this.client.post('identity-provider-roles', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async update(\n        id: IdentityProviderRole['id'],\n        data: Partial<IdentityProviderRole>,\n    ): Promise<SingleResourceResponse<IdentityProviderRole>> {\n        const response = await this.client.post(`identity-provider-roles/${id}`, data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport type { Permission } from './types';\nimport type { CollectionResourceResponse, DomainAPI, SingleResourceResponse } from '../types-base';\n\nexport class PermissionAPI implements DomainAPI<Permission> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<Permission>): Promise<CollectionResourceResponse<Permission>> {\n        const response = await this.client.get(`permissions${buildQuery(data)}`);\n        return response.data;\n    }\n\n    async delete(id: Permission['id']): Promise<SingleResourceResponse<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}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Permission>): Promise<SingleResourceResponse<Permission>> {\n        const response = await this.client.post('permissions', data);\n\n        return response.data;\n    }\n\n    async update(id: Permission['id'], data: Partial<Permission>): Promise<SingleResourceResponse<Permission>> {\n        const response = await this.client.post(`permissions/${id}`, data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum PermissionName {\n    CLIENT_ADD = 'client_add',\n    CLIENT_DROP = 'client_drop',\n    CLIENT_EDIT = 'client_edit',\n\n    PROVIDER_ADD = 'provider_add',\n    PROVIDER_DROP = 'provider_drop',\n    PROVIDER_EDIT = 'provider_edit',\n\n    PERMISSION_ADD = 'permission_add',\n    PERMISSION_DROP = 'permission_drop',\n    PERMISSION_EDIT = 'permission_edit',\n\n    REALM_ADD = 'realm_add',\n    REALM_DROP = 'realm_drop',\n    REALM_EDIT = 'realm_edit',\n\n    ROBOT_ADD = 'robot_add',\n    ROBOT_DROP = 'robot_drop',\n    ROBOT_EDIT = 'robot_edit',\n\n    ROBOT_PERMISSION_ADD = 'robot_permission_add',\n    ROBOT_PERMISSION_DROP = 'robot_permission_drop',\n\n    ROBOT_ROLE_ADD = 'robot_role_add',\n    ROBOT_ROLE_DROP = 'robot_role_drop',\n    ROBOT_ROLE_EDIT = 'robot_role_edit',\n\n    ROLE_ADD = 'role_add',\n    ROLE_DROP = 'role_drop',\n    ROLE_EDIT = 'role_edit',\n\n    ROLE_PERMISSION_ADD = 'role_permission_add',\n    ROLE_PERMISSION_DROP = 'role_permission_drop',\n\n    SCOPE_ADD = 'scope_add',\n    SCOPE_DROP = 'scope_drop',\n    SCOPE_EDIT = 'scope_edit',\n\n    TOKEN_VERIFY = 'token_verify',\n\n    USER_ADD = 'user_add',\n    USER_DROP = 'user_drop',\n    USER_EDIT = 'user_edit',\n\n    USER_PERMISSION_ADD = 'user_permission_add',\n    USER_PERMISSION_DROP = 'user_permission_drop',\n\n    USER_ROLE_ADD = 'user_role_add',\n    USER_ROLE_DROP = 'user_role_drop',\n    USER_ROLE_EDIT = 'user_role_edit',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { MongoQuery } from '@ucast/mongo2js';\nimport type { PermissionRelation } from './types';\nimport type { AbilityDescriptor } from '../../ability-manager';\n\nexport function buildPermissionMetaCondition(input: string | null): MongoQuery {\n    if (typeof input === 'undefined') {\n        return {};\n    }\n\n    // todo: verify object shape\n\n    return JSON.parse(input);\n}\n\nexport function buildPermissionMetaFields(input: string | null): string[] | undefined {\n    if (!input) {\n        return undefined;\n    }\n\n    const data = JSON.parse(input);\n    if (!isFieldsArray(data) || data.length === 0) {\n        return undefined;\n    }\n\n    return data;\n}\n\nfunction isFieldsArray(input: unknown): input is string[] {\n    if (!Array.isArray(input)) {\n        return false;\n    }\n\n    const items = input.map((item) => typeof input === 'string');\n\n    return items.length === input.length;\n}\n\n// todo: replace CURRENT_DATE with evaluation of Date.now()\n\nexport function buildPermissionDescriptorFromRelation(entity: PermissionRelation): AbilityDescriptor {\n    if (typeof entity.permission === 'undefined') {\n        throw new Error('The permission relation is mandatory.');\n    }\n\n    return {\n        name: entity.permission.name,\n        condition: buildPermissionMetaCondition(entity.condition),\n        power: entity.power,\n        fields: buildPermissionMetaFields(entity.fields),\n        inverse: entity.negation,\n        target: entity.target,\n    };\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { Realm } from './types';\nimport type { CollectionResourceResponse, DomainAPI, SingleResourceResponse } from '../types-base';\n\nexport class RealmAPI implements DomainAPI<Realm> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<Realm>): Promise<CollectionResourceResponse<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<SingleResourceResponse<Realm>> {\n        const response = await this.client.get(`realms/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: Realm['id']): Promise<SingleResourceResponse<Realm>> {\n        const response = await this.client.delete(`realms/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Realm>): Promise<SingleResourceResponse<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<SingleResourceResponse<Realm>> {\n        const response = await this.client.post(`realms/${realmId}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const REALM_MASTER_NAME = 'master';\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isPropertySet } from '../../utils';\nimport { REALM_MASTER_NAME } from './constants';\n\n/**\n * Check if a realm resource is writable.\n *\n * @param realm\n * @param resourceRealmId\n */\nexport function isRealmResourceWritable(\n    realm?: { id: string, name?: string},\n    resourceRealmId?: null | string | string[],\n) : boolean {\n    if (Array.isArray(resourceRealmId)) {\n        for (let i = 0; i < resourceRealmId.length; i++) {\n            if (isRealmResourceWritable(realm, resourceRealmId[i])) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    if (!realm) {\n        return false;\n    }\n\n    if (\n        isPropertySet(realm, 'name') &&\n        realm.name === REALM_MASTER_NAME\n    ) {\n        return true;\n    }\n\n    return realm.id === resourceRealmId;\n}\n\n/**\n * Check if realm resource is readable.\n *\n * @param realm\n * @param resourceRealmId\n */\nexport function isRealmResourceReadable(\n    realm?: { id: string, name?: string },\n    resourceRealmId?: string | string[],\n) : boolean {\n    if (Array.isArray(resourceRealmId)) {\n        if (resourceRealmId.length === 0) {\n            return true;\n        }\n\n        for (let i = 0; i < resourceRealmId.length; i++) {\n            if (isRealmResourceReadable(realm, resourceRealmId[i])) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    if (typeof realm === 'undefined') {\n        return false;\n    }\n\n    if (\n        isPropertySet(realm, 'name') &&\n        realm.name === REALM_MASTER_NAME\n    ) {\n        return true;\n    }\n\n    return !resourceRealmId ||\n        realm.id === resourceRealmId;\n}\n\nexport function isValidRealmName(name: string) : boolean {\n    return /^[a-zA-Z0-9-_]{3,128}$/.test(name);\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ClientDriverInstance } from 'hapic';\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { Robot } from './types';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { CollectionResourceResponse, DomainAPI, SingleResourceResponse } from '../types-base';\n\nexport class RobotAPI implements DomainAPI<Robot> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(\n        options?: BuildInput<Robot>,\n    ): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<Robot>> {\n        const response = await this.client.post(`robots/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n\n    async integrity(\n        id: Robot['id'] | Robot['name'],\n    ): Promise<SingleResourceResponse<Robot>> {\n        const { data: response } = await this.client\n            .get(`robots/${id}/integrity`);\n\n        return response;\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const ROBOT_SYSTEM_NAME = 'SYSTEM';\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError } from '@ebec/http';\nimport { ErrorCode } from '../../error';\n\nexport class RobotError extends BadRequestError {\n    static credentialsInvalid() {\n        return new RobotError({\n            code: ErrorCode.CREDENTIALS_INVALID,\n            message: 'The robot credentials are invalid.',\n        });\n    }\n\n    static inactive() {\n        return new RobotError({\n            code: ErrorCode.ENTITY_INACTIVE,\n            message: 'The robot account is inactive.',\n        });\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport type { RobotPermission } from './types';\nimport type {\n    CollectionResourceResponse, DomainAPISlim, SingleResourceResponse,\n} from '../types-base';\n\nexport class RobotPermissionAPI implements DomainAPISlim<RobotPermission> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<RobotPermission>) : Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<RobotPermission>> {\n        const response = await this.client.post('robot-permissions', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport type { RobotRole } from './types';\nimport type {\n    CollectionResourceResponse, DomainAPISlim, SingleResourceResponse,\n} from '../types-base';\n\nexport class RobotRoleAPI implements DomainAPISlim<RobotRole> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data: BuildInput<RobotRole>): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<RobotRole>> {\n        const response = await this.client.post('robot-roles', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { Role } from './types';\nimport type {\n    CollectionResourceResponse, DomainAPI, SingleResourceResponse,\n} from '../types-base';\n\nexport class RoleAPI implements DomainAPI<Role> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<Role>): Promise<CollectionResourceResponse<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<SingleResourceResponse<Role>> {\n        const response = await this.client.get(`roles/${roleId}`);\n\n        return response.data;\n    }\n\n    async delete(roleId: Role['id']): Promise<SingleResourceResponse<Role>> {\n        const response = await this.client.delete(`roles/${roleId}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Role>): Promise<SingleResourceResponse<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<SingleResourceResponse<Role>> {\n        const response = await this.client.post(`roles/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isValidRoleName(name: string) : boolean {\n    return /^[A-Za-z0-9-_]{3,128}$/.test(name);\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { RoleAttribute } from './types';\nimport type {\n    CollectionResourceResponse, DomainAPI, SingleResourceResponse,\n} from '../types-base';\n\nexport class RoleAttributeAPI implements DomainAPI<RoleAttribute> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<RoleAttribute>): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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.\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 { ClientDriverInstance } from 'hapic';\nimport type { RolePermission } from './types';\nimport type { CollectionResourceResponse, DomainAPISlim, SingleResourceResponse } from '../types-base';\n\nexport class RolePermissionAPI implements DomainAPISlim<RolePermission> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<RolePermission>) : Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<RolePermission>> {\n        const response = await this.client.post('role-permissions', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { Scope } from './types';\nimport type {\n    CollectionResourceResponse, DomainAPI, SingleResourceResponse,\n} from '../types-base';\n\nexport class ScopeAPI implements DomainAPI<Scope> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<Scope>): Promise<CollectionResourceResponse<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<SingleResourceResponse<Scope>> {\n        const response = await this.client.get(`scopes/${id}`);\n\n        return response.data;\n    }\n\n    async delete(id: Scope['id']): Promise<SingleResourceResponse<Scope>> {\n        const response = await this.client.delete(`scopes/${id}`);\n\n        return response.data;\n    }\n\n    async create(data: Partial<Scope>): Promise<SingleResourceResponse<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<SingleResourceResponse<Scope>> {\n        const response = await this.client.post(`scopes/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ScopeName {\n    /**\n     * Full permissions (userinfo & id-token)\n     */\n    GLOBAL = 'global',\n\n    /**\n     * for Openid usage (id-token)\n     */\n    OPEN_ID = 'openid',\n\n    /**\n     * /users/@me with email (userinfo & id-token)\n     */\n    EMAIL = 'email',\n\n    /**\n     * Roles array (id-token)\n     */\n    ROLES = 'roles',\n\n    /**\n     * /users/@me without email (userinfo & id-token)\n     */\n    IDENTITY = 'identity',\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ScopeName } from './constants';\n\nexport function transformOAuth2ScopeToArray(scope?: string | string[]) : string[] {\n    if (!scope) {\n        return [];\n    }\n\n    if (Array.isArray(scope)) {\n        return scope;\n    }\n\n    return scope.split(/\\s+|,+/);\n}\n\nexport function hasOAuth2OpenIDScope(scope?: string | string[]) : boolean {\n    return transformOAuth2ScopeToArray(scope).indexOf(ScopeName.OPEN_ID) !== -1;\n}\n\nexport function isOAuth2ScopeAllowed(\n    available?: string | string[],\n    required?: string[] | string,\n) : boolean {\n    available = transformOAuth2ScopeToArray(available);\n\n    if (available.indexOf(ScopeName.GLOBAL) !== -1) {\n        return true;\n    }\n\n    if (available.length === 0) {\n        return false;\n    }\n\n    required = transformOAuth2ScopeToArray(required);\n    for (let i = 0; i < required.length; i++) {\n        if (available.indexOf(required[i]) === -1) {\n            return false;\n        }\n    }\n\n    return true;\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { User } from './types';\nimport type { CollectionResourceResponse, DomainAPI, SingleResourceResponse } from '../types-base';\n\nexport class UserAPI implements DomainAPI<User> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(\n        options?: BuildInput<User>,\n    ): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<User>> {\n        const response = await this.client.post(`users/${id}`, nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BadRequestError } from '@ebec/http';\nimport { ErrorCode } from '../../error';\n\nexport class UserError extends BadRequestError {\n    static credentialsInvalid() {\n        return new UserError({\n            code: ErrorCode.CREDENTIALS_INVALID,\n            message: 'The user credentials are invalid.',\n        });\n    }\n\n    static inactive() {\n        return new UserError({\n            code: ErrorCode.ENTITY_INACTIVE,\n            message: 'The user account is inactive.',\n        });\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isValidUserName(name: string) : boolean {\n    if (/\\s/g.test(name)) {\n        return false;\n    }\n\n    return /^[A-Za-z0-9-_.]{3,36}$/.test(name) &&\n        name.toLowerCase().indexOf('bot') === -1 &&\n        name.toLowerCase().indexOf('system') === -1 &&\n        name.toLowerCase() !== 'everyone' &&\n        name.toLowerCase() !== 'here';\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport { nullifyEmptyObjectProperties } from '../../utils';\nimport type { UserAttribute } from './types';\nimport type {\n    CollectionResourceResponse, DomainAPI, SingleResourceResponse,\n} from '../types-base';\n\nexport class UserAttributeAPI implements DomainAPI<UserAttribute> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<UserAttribute>): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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.\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 { ClientDriverInstance } from 'hapic';\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { UserPermission } from './types';\nimport type { CollectionResourceResponse, DomainAPISlim, SingleResourceResponse } from '../types-base';\nimport { nullifyEmptyObjectProperties } from '../../utils';\n\nexport class UserPermissionAPI implements DomainAPISlim<UserPermission> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data?: BuildInput<UserPermission>) : Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<UserPermission>> {\n        const response = await this.client.post('user-permissions', nullifyEmptyObjectProperties(data));\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { BuildInput } from 'rapiq';\nimport { buildQuery } from 'rapiq';\nimport type { ClientDriverInstance } from 'hapic';\nimport type { UserRole } from './types';\nimport type { CollectionResourceResponse, DomainAPISlim, SingleResourceResponse } from '../types-base';\n\nexport class UserRoleAPI implements DomainAPISlim<UserRole> {\n    protected client: ClientDriverInstance;\n\n    constructor(client: ClientDriverInstance) {\n        this.client = client;\n    }\n\n    async getMany(data: BuildInput<UserRole>): Promise<CollectionResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<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<SingleResourceResponse<UserRole>> {\n        const response = await this.client.post('user-roles', data);\n\n        return response.data;\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum DomainType {\n    CLIENT = 'client',\n    CLIENT_SCOPE = 'clientScope',\n    IDENTITY_PROVIDER = 'identityProvider',\n    IDENTITY_PROVIDER_ACCOUNT = 'identityProviderAccount',\n    IDENTITY_PROVIDER_ATTRIBUTE = 'identityProviderAttribute',\n    IDENTITY_PROVIDER_ROLE = 'identityProviderRole',\n    PERMISSION = 'permission',\n    REALM = 'realm',\n    ROBOT = 'robot',\n    ROBOT_PERMISSION = 'robotPermission',\n    ROBOT_ROLE = 'robotRole',\n    ROLE = 'role',\n    ROLE_ATTRIBUTE = 'roleAttribute',\n    ROLE_PERMISSION = 'rolePermission',\n    SCOPE = 'scope', // todo: add\n    USER = 'user',\n    USER_ATTRIBUTE = 'userAttribute',\n    USER_PERMISSION = 'userPermission',\n    USER_ROLE = 'userRole',\n}\n\nexport enum DomainEventName {\n    CREATED = 'created',\n    DELETED = 'deleted',\n    UPDATED = 'updated',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventName, DomainType } from './contstants';\nimport type { DomainEventFullName } from './types';\n\nexport function buildDomainEventFullName<T extends `${DomainType}`>(\n    type: T,\n    event: `${DomainEventName}`,\n) : DomainEventFullName<T> {\n    const eventCapitalized = event.substring(0, 1).toUpperCase() + event.substring(1);\n\n    return type + eventCapitalized as DomainEventFullName<T>;\n}\n\nexport function buildDomainChannelName(type: string, id?: string | number) {\n    return `${type}${id ? `:${id}` : ''}`;\n}\n\nexport function buildDomainNamespaceName(id: string) {\n    return `/realm#${id}`;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ConfigInput } from 'hapic';\nimport { Client as BaseClient } from 'hapic';\nimport { Client as OAuth2Client } from '@hapic/oauth2';\n\nimport {\n    ClientAPI,\n    ClientScopeAPI,\n    IdentityProviderAPI,\n    IdentityProviderRoleAPI,\n    PermissionAPI,\n    RealmAPI,\n    RobotAPI,\n    RobotPermissionAPI,\n    RobotRoleAPI,\n    RoleAPI, RoleAttributeAPI,\n    RolePermissionAPI,\n    ScopeAPI,\n    UserAPI,\n    UserAttributeAPI,\n    UserPermissionAPI,\n    UserRoleAPI,\n} from '../../domains';\n\nexport class HTTPClient extends BaseClient {\n    public readonly oauth2 : OAuth2Client;\n\n    public readonly client : ClientAPI;\n\n    public readonly clientScope : ClientScopeAPI;\n\n    public readonly identityProvider : IdentityProviderAPI;\n\n    public readonly identityProviderRole : IdentityProviderRoleAPI;\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 userAttribute: UserAttributeAPI;\n\n    public readonly userPermission : UserPermissionAPI;\n\n    public readonly userRole : UserRoleAPI;\n\n    constructor(config: ConfigInput) {\n        super(config);\n\n        this.oauth2 = new OAuth2Client({\n            options: {\n                authorization_endpoint: new URL('authorize', this.driver.defaults.baseURL).href,\n                introspection_endpoint: new URL('token/introspect', this.driver.defaults.baseURL).href,\n                token_endpoint: new URL('token', this.driver.defaults.baseURL).href,\n                userinfo_endpoint: new URL('users/@me', this.driver.defaults.baseURL).href,\n            },\n        });\n\n        this.client = new ClientAPI(this.driver);\n        this.clientScope = new ClientScopeAPI(this.driver);\n\n        this.identityProvider = new IdentityProviderAPI(this.driver);\n        this.identityProviderRole = new IdentityProviderRoleAPI(this.driver);\n\n        this.permission = new PermissionAPI(this.driver);\n\n        this.realm = new RealmAPI(this.driver);\n\n        this.robot = new RobotAPI(this.driver);\n        this.robotPermission = new RobotPermissionAPI(this.driver);\n        this.robotRole = new RobotRoleAPI(this.driver);\n\n        this.role = new RoleAPI(this.driver);\n        this.roleAttribute = new RoleAttributeAPI(this.driver);\n        this.rolePermission = new RolePermissionAPI(this.driver);\n\n        this.scope = new ScopeAPI(this.driver);\n\n        this.user = new UserAPI(this.driver);\n        this.userAttribute = new UserAttributeAPI(this.driver);\n        this.userPermission = new UserPermissionAPI(this.driver);\n        this.userRole = new UserRoleAPI(this.driver);\n    }\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { DomainType } from '../../domains';\nimport type { HTTPClient } from './module';\n\nexport function useHTTPClientAPI(\n    client: HTTPClient,\n    name: `${DomainType}`,\n) {\n    switch (name) {\n        case DomainType.CLIENT:\n            return client.client;\n        case DomainType.IDENTITY_PROVIDER:\n            return client.identityProvider;\n        case DomainType.IDENTITY_PROVIDER_ROLE:\n            return client.identityProviderRole;\n        case DomainType.PERMISSION:\n            return client.permission;\n        case DomainType.REALM:\n            return client.realm;\n        case DomainType.ROBOT:\n            return client.robot;\n        case DomainType.ROBOT_PERMISSION:\n            return client.robotPermission;\n        case DomainType.ROLE:\n            return client.role;\n        case DomainType.ROLE_ATTRIBUTE:\n            return client.roleAttribute;\n        case DomainType.ROLE_PERMISSION:\n            return client.rolePermission;\n        case DomainType.SCOPE:\n            return client.scope;\n        case DomainType.USER:\n            return client.user;\n        case DomainType.USER_ATTRIBUTE:\n            return client.userAttribute;\n        case DomainType.USER_PERMISSION:\n            return client.userPermission;\n        case DomainType.USER_ROLE:\n            return client.userRole;\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum CookieName {\n    ACCESS_TOKEN = 'access_token',\n    ACCESS_TOKEN_EXPIRE_DATE = 'access_token_expire_date',\n    REFRESH_TOKEN = 'refresh_token',\n}\n"],"names":["extendPermissionDescriptor","descriptor","target","inverse","ErrorCode","ABILITY_INVALID","HEADER_INVALID","HEADER_AUTH_TYPE_UNSUPPORTED","CREDENTIALS_INVALID","ENTITY_INACTIVE","TOKEN_REDIRECT_URI_MISMATCH","TOKEN_INVALID","TOKEN_INACTIVE","TOKEN_EXPIRED","TOKEN_CLIENT_INVALID","TOKEN_GRANT_INVALID","TOKEN_GRANT_TYPE_UNSUPPORTED","TOKEN_SCOPE_INVALID","TOKEN_SUB_KIND_INVALID","HeaderError","BadRequestError","unsupportedHeaderType","type","code","message","constructor","options","mergeOptions","AbilityError","BaseError","buildMeta","buildAbilityMetaFromName","name","delimiter","parts","split","length","action","pop","subject","pascalCase","join","buildNameFromAbilityID","meta","removeDuplicateForwardSlashesFromURL","str","replace","isGlobMatch","pattern","patterns","Array","isArray","i","minimatch","hasOwnProperty","obj","prop","Object","prototype","call","isPropertySet","createNanoID","alphabetOrLen","len","customAlphabet","isObject","input","nullifyEmptyObjectProperties","data","keys","deleteUndefinedObjectProperties","extractObjectProperty","key","undefined","parseProxyConnectionString","match","protocol","host","port","parseInt","auth","username","password","isSelfId","id","makeURLPublicAccessible","url","isUUID","regexp","RegExp","test","isAbilityID","AbilityManager","verify","field","item","getOne","withoutInverse","has","some","satisfy","predicate","getTarget","value","$eq","matchTarget","basePredicate","getPower","direction","sortFn","a","b","power","getMany","items","guard","sort","condition","conditionTest","fields","index","indexOf","set","merge","configurations","KeyType","OCT","RSA","EC","wrapPem","Buffer","from","toString","wrapPrivateKeyPem","wrapPublicKeyPem","unwrapPem","unwrapPrivateKeyPem","unwrapPublicKeyPem","OAuth2TokenKind","ACCESS","ID_TOKEN","REFRESH","OAuth2SubKind","CLIENT","USER","ROBOT","TokenError","subKindInvalid","expired","statusCode","kindInvalid","notActiveBefore","date","payloadInvalid","accessTokenRequired","clientInvalid","grantInvalid","grantTypeUnsupported","hint","refreshTokenInvalid","requestInvalid","scopeInvalid","redirectUriMismatch","responseTypeUnsupported","targetInactive","kind","signingKeyMissing","getOAuth2SubByEntity","entity","robot_id","user_id","client_id","getOAuth2SubKindByEntity","OAuth2TokenGrant","AUTHORIZATION_CODE","CLIENT_CREDENTIALS","PASSWORD","ROBOT_CREDENTIALS","REFRESH_TOKEN","OAuth2AuthorizationResponseType","NONE","CODE","TOKEN","asyncGeneratorStep","ClientAPI","_asyncToGenerator","response","client","get","buildQuery","delete","create","post","update","ClientScopeAPI","buildIdentityProviderAuthorizeCallbackPath","buildIdentityProviderAuthorizePath","isValidIdentityProviderSub","sub","IdentityProviderAPI","getAuthorizeUri","baseUrl","record","IdentityProviderProtocol","LDAP","OAUTH2","OIDC","IdentityProviderProtocolConfig","FACEBOOK","GITHUB","GITLAB","GOOGLE","PAYPAL","STACKOVERFLOW","TWITTER","IdentityProviderFlow","DIRECT","INDIRECT","IdentityProviderRoleAPI","PermissionAPI","PermissionName","CLIENT_ADD","CLIENT_DROP","CLIENT_EDIT","PROVIDER_ADD","PROVIDER_DROP","PROVIDER_EDIT","PERMISSION_ADD","PERMISSION_DROP","PERMISSION_EDIT","REALM_ADD","REALM_DROP","REALM_EDIT","ROBOT_ADD","ROBOT_DROP","ROBOT_EDIT","ROBOT_PERMISSION_ADD","ROBOT_PERMISSION_DROP","ROBOT_ROLE_ADD","ROBOT_ROLE_DROP","ROBOT_ROLE_EDIT","ROLE_ADD","ROLE_DROP","ROLE_EDIT","ROLE_PERMISSION_ADD","ROLE_PERMISSION_DROP","SCOPE_ADD","SCOPE_DROP","SCOPE_EDIT","TOKEN_VERIFY","USER_ADD","USER_DROP","USER_EDIT","USER_PERMISSION_ADD","USER_PERMISSION_DROP","USER_ROLE_ADD","USER_ROLE_DROP","USER_ROLE_EDIT","buildPermissionMetaCondition","JSON","parse","buildPermissionMetaFields","isFieldsArray","map","buildPermissionDescriptorFromRelation","permission","Error","negation","RealmAPI","realmId","REALM_MASTER_NAME","isRealmResourceWritable","realm","resourceRealmId","isRealmResourceReadable","isValidRealmName","RobotAPI","integrity","ROBOT_SYSTEM_NAME","RobotError","credentialsInvalid","inactive","RobotPermissionAPI","RobotRoleAPI","RoleAPI","roleId","isValidRoleName","RoleAttributeAPI","RolePermissionAPI","ScopeAPI","ScopeName","GLOBAL","OPEN_ID","EMAIL","ROLES","IDENTITY","transformOAuth2ScopeToArray","scope","hasOAuth2OpenIDScope","isOAuth2ScopeAllowed","available","required","UserAPI","UserError","isValidUserName","toLowerCase","UserAttributeAPI","UserPermissionAPI","UserRoleAPI","DomainType","CLIENT_SCOPE","IDENTITY_PROVIDER","IDENTITY_PROVIDER_ACCOUNT","IDENTITY_PROVIDER_ATTRIBUTE","IDENTITY_PROVIDER_ROLE","PERMISSION","REALM","ROBOT_PERMISSION","ROBOT_ROLE","ROLE","ROLE_ATTRIBUTE","ROLE_PERMISSION","SCOPE","USER_ATTRIBUTE","USER_PERMISSION","USER_ROLE","DomainEventName","CREATED","DELETED","UPDATED","buildDomainEventFullName","event","eventCapitalized","substring","toUpperCase","buildDomainChannelName","buildDomainNamespaceName","HTTPClient","BaseClient","config","oauth2","OAuth2Client","authorization_endpoint","URL","driver","defaults","baseURL","href","introspection_endpoint","token_endpoint","userinfo_endpoint","clientScope","identityProvider","identityProviderRole","robot","robotPermission","robotRole","role","roleAttribute","rolePermission","user","userAttribute","userPermission","userRole","useHTTPClientAPI","CookieName","ACCESS_TOKEN","ACCESS_TOKEN_EXPIRE_DATE"],"mappings":"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"}