{"version":3,"file":"binom-sdk-utils-object.mjs","sources":["../../../../../../binom/public/sdks/sdk-utils/object/src/bn-object-utils.ts","../../../../../../binom/public/sdks/sdk-utils/object/src/binom-sdk-utils-object.ts"],"sourcesContent":["export class BnObjectUtils {\n    public static isArray<T = unknown>(value: unknown, empty = true): value is T[] {\n        return Array.isArray(value) && (empty || (value as T[]).length !== 0);\n    }\n\n    public static isObject(value: unknown, empty = true): value is Record<string, unknown> {\n        return typeof value === 'object' && !Array.isArray(value) && value != null && (empty || Object.keys(value).length !== 0);\n    }\n\n    public static isFunction(value: unknown): value is Function {\n        return typeof value === 'function';\n    }\n\n    public static isDate(value: unknown): value is Date {\n        return Object.prototype.toString.call(value) === '[object Date]' && !isNaN((value as Date).getTime());\n    }\n\n    public static isEmpty(value: unknown): boolean {\n        if (value == null) return true;\n        if (typeof value === 'string') return value.trim().length === 0;\n        if (Array.isArray(value)) return value.length === 0;\n        if (this.isDate(value)) return false;\n        if (typeof value === 'object') return Object.keys(value).length === 0;\n        return false;\n    }\n\n    public static isNotEmpty(value: unknown): boolean {\n        return !this.isEmpty(value);\n    }\n\n    public static findIndexInList<T>(item: T, list: T[]): number {\n        if (!this.isArray(list)) return -1;\n        return list.indexOf(item);\n    }\n\n    public static sortList<T extends Record<string, unknown>>(list: T[], compareField: keyof T, reverse = false): void {\n        if (!compareField || !this.isArray(list)) return;\n\n        list.sort((a: T, b: T) => {\n            const aValue = a[compareField] as string | number;\n            const bValue = b[compareField] as string | number;\n\n            if (aValue < bValue) return reverse ? 1 : -1;\n            if (aValue > bValue) return reverse ? -1 : 1;\n            return 0;\n        });\n    }\n\n    public static deepEquals(x: unknown, y: unknown): boolean {\n        if (x === y) return true;\n        if (x == null || y == null) return x === y;\n        if (typeof x !== typeof y) return false;\n\n        if (typeof x === 'object') {\n            if (Array.isArray(x) !== Array.isArray(y)) return false;\n\n            if (Array.isArray(x)) {\n                const arrX = x as unknown[];\n                const arrY = y as unknown[];\n                if (arrX.length !== arrY.length) return false;\n                for (let i = 0; i < arrX.length; i++) {\n                    if (!this.deepEquals(arrX[i], arrY[i])) return false;\n                }\n                return true;\n            }\n\n            const objX = x as Record<string, unknown>;\n            const objY = y as Record<string, unknown>;\n            const keysX = Object.keys(objX);\n            const keysY = Object.keys(objY);\n\n            if (keysX.length !== keysY.length) return false;\n\n            for (const key of keysX) {\n                if (!keysY.includes(key)) return false;\n                if (!this.deepEquals(objX[key], objY[key])) return false;\n            }\n            return true;\n        }\n\n        return false;\n    }\n\n    public static getChangedKeys(current: Record<string, unknown>, previous: Record<string, unknown>): string[] {\n        if (!this.isObject(current) || !this.isObject(previous)) return [];\n\n        const changedKeys: string[] = [];\n        const allKeys = new Set([...Object.keys(current), ...Object.keys(previous)]);\n\n        for (const key of allKeys) {\n            const currentValue = current[key];\n            const previousValue = previous[key];\n\n            if (!this.deepEquals(currentValue, previousValue)) {\n                changedKeys.push(key);\n            }\n        }\n\n        return changedKeys;\n    }\n\n    // Neue Methoden hinzufügen\n    public static deepClone<T>(obj: T): T {\n        if (obj === null || typeof obj !== 'object') return obj;\n\n        if (Array.isArray(obj)) {\n            return obj.map(item => this.deepClone(item)) as T;\n        }\n\n        if (this.isDate(obj)) {\n            return new Date(obj.getTime()) as T;\n        }\n\n        const clonedObj = {} as T;\n        for (const key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                (clonedObj as Record<string, unknown>)[key] = this.deepClone((obj as Record<string, unknown>)[key]);\n            }\n        }\n        return clonedObj;\n    }\n\n    public static deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T {\n        const result = this.deepClone(target);\n\n        for (const key in source) {\n            if (Object.prototype.hasOwnProperty.call(source, key)) {\n                const sourceValue = source[key];\n                const targetValue = result[key];\n\n                if (this.isObject(sourceValue) && this.isObject(targetValue)) {\n                    (result as Record<string, unknown>)[key] = this.deepMerge(\n                        targetValue as Record<string, unknown>,\n                        sourceValue as Record<string, unknown>\n                    );\n                } else {\n                    (result as Record<string, unknown>)[key] = sourceValue;\n                }\n            }\n        }\n\n        return result;\n    }\n\n    public static getByPath<T = unknown>(obj: Record<string, unknown>, path: string): T | undefined {\n        return path.split('.').reduce<T | undefined>((current, key) => {\n            return current && typeof current === 'object' && key in current\n                ? (current as Record<string, unknown>)[key] as T\n                : undefined;\n        }, obj as T);\n    }\n\n    public static setByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n        const keys = path.split('.');\n        const lastKey = keys.pop()!;\n        const target = keys.reduce((current, key) => {\n            if (!(key in current) || typeof current[key] !== 'object' || current[key] == null) {\n                (current as Record<string, unknown>)[key] = {};\n            }\n            return (current as Record<string, unknown>)[key] as Record<string, unknown>;\n        }, obj);\n\n        (target as Record<string, unknown>)[lastKey] = value;\n    }\n\n    public static validateSchema(obj: Record<string, unknown>, schema: Record<string, { type: string; required?: boolean }>): { valid: boolean; errors: string[] } {\n        const errors: string[] = [];\n\n        for (const [key, rules] of Object.entries(schema)) {\n            const value = obj[key];\n\n            if (rules.required && (value === undefined || value === null)) {\n                errors.push(`Required field '${key}' is missing`);\n                continue;\n            }\n\n            if (value !== undefined && value !== null) {\n                const actualType = Array.isArray(value) ? 'array' : typeof value;\n                if (actualType !== rules.type) {\n                    errors.push(`Field '${key}' should be of type '${rules.type}' but got '${actualType}'`);\n                }\n            }\n        }\n\n        return { valid: errors.length === 0, errors };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"MAAa,aAAa,CAAA;AACf,IAAA,OAAO,OAAO,CAAc,KAAc,EAAE,KAAK,GAAG,IAAI,EAAA;AAC3D,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAK,KAAa,CAAC,MAAM,KAAK,CAAC,CAAC;IACzE;AAEO,IAAA,OAAO,QAAQ,CAAC,KAAc,EAAE,KAAK,GAAG,IAAI,EAAA;AAC/C,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5H;IAEO,OAAO,UAAU,CAAC,KAAc,EAAA;AACnC,QAAA,OAAO,OAAO,KAAK,KAAK,UAAU;IACtC;IAEO,OAAO,MAAM,CAAC,KAAc,EAAA;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,IAAI,CAAC,KAAK,CAAE,KAAc,CAAC,OAAO,EAAE,CAAC;IACzG;IAEO,OAAO,OAAO,CAAC,KAAc,EAAA;QAChC,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;AAC/D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;AACrE,QAAA,OAAO,KAAK;IAChB;IAEO,OAAO,UAAU,CAAC,KAAc,EAAA;AACnC,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/B;AAEO,IAAA,OAAO,eAAe,CAAI,IAAO,EAAE,IAAS,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B;IAEO,OAAO,QAAQ,CAAoC,IAAS,EAAE,YAAqB,EAAE,OAAO,GAAG,KAAK,EAAA;QACvG,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE;QAE1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAI,EAAE,CAAI,KAAI;AACrB,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAoB;AACjD,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAoB;YAEjD,IAAI,MAAM,GAAG,MAAM;gBAAE,OAAO,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,MAAM;gBAAE,OAAO,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5C,YAAA,OAAO,CAAC;AACZ,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,OAAO,UAAU,CAAC,CAAU,EAAE,CAAU,EAAA;QAC3C,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AACxB,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;YAAE,OAAO,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AAAE,YAAA,OAAO,KAAK;AAEvC,QAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK;AAEvD,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAClB,MAAM,IAAI,GAAG,CAAc;gBAC3B,MAAM,IAAI,GAAG,CAAc;AAC3B,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AAAE,oBAAA,OAAO,KAAK;AAC7C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAAE,wBAAA,OAAO,KAAK;gBACxD;AACA,gBAAA,OAAO,IAAI;YACf;YAEA,MAAM,IAAI,GAAG,CAA4B;YACzC,MAAM,IAAI,GAAG,CAA4B;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAE/B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAAE,gBAAA,OAAO,KAAK;AAE/C,YAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,KAAK;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAAE,oBAAA,OAAO,KAAK;YAC5D;AACA,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,OAAO,KAAK;IAChB;AAEO,IAAA,OAAO,cAAc,CAAC,OAAgC,EAAE,QAAiC,EAAA;AAC5F,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAAE,YAAA,OAAO,EAAE;QAElE,MAAM,WAAW,GAAa,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5E,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACvB,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;AACjC,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;AAC/C,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACzB;QACJ;AAEA,QAAA,OAAO,WAAW;IACtB;;IAGO,OAAO,SAAS,CAAI,GAAM,EAAA;AAC7B,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAO,GAAG;AAEvD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAM;QACrD;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAClB,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAM;QACvC;QAEA,MAAM,SAAS,GAAG,EAAO;AACzB,QAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnB,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AAC/C,gBAAA,SAAqC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC;YACvG;QACJ;AACA,QAAA,OAAO,SAAS;IACpB;AAEO,IAAA,OAAO,SAAS,CAAoC,MAAS,EAAE,MAAkB,EAAA;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAErC,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACtB,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;AACnD,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/B,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAE/B,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzD,oBAAA,MAAkC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CACrD,WAAsC,EACtC,WAAsC,CACzC;gBACL;qBAAO;AACF,oBAAA,MAAkC,CAAC,GAAG,CAAC,GAAG,WAAW;gBAC1D;YACJ;QACJ;AAEA,QAAA,OAAO,MAAM;IACjB;AAEO,IAAA,OAAO,SAAS,CAAc,GAA4B,EAAE,IAAY,EAAA;AAC3E,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAgB,CAAC,OAAO,EAAE,GAAG,KAAI;YAC1D,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,GAAG,IAAI;AACpD,kBAAG,OAAmC,CAAC,GAAG;kBACxC,SAAS;QACnB,CAAC,EAAE,GAAQ,CAAC;IAChB;AAEO,IAAA,OAAO,SAAS,CAAC,GAA4B,EAAE,IAAY,EAAE,KAAc,EAAA;QAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAG;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,KAAI;YACxC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;AAC9E,gBAAA,OAAmC,CAAC,GAAG,CAAC,GAAG,EAAE;YAClD;AACA,YAAA,OAAQ,OAAmC,CAAC,GAAG,CAA4B;QAC/E,CAAC,EAAE,GAAG,CAAC;AAEN,QAAA,MAAkC,CAAC,OAAO,CAAC,GAAG,KAAK;IACxD;AAEO,IAAA,OAAO,cAAc,CAAC,GAA4B,EAAE,MAA4D,EAAA;QACnH,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AAEtB,YAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAC3D,gBAAA,MAAM,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAA,YAAA,CAAc,CAAC;gBACjD;YACJ;YAEA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,OAAO,KAAK;AAChE,gBAAA,IAAI,UAAU,KAAK,KAAK,CAAC,IAAI,EAAE;AAC3B,oBAAA,MAAM,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,GAAG,CAAA,qBAAA,EAAwB,KAAK,CAAC,IAAI,CAAA,WAAA,EAAc,UAAU,CAAA,CAAA,CAAG,CAAC;gBAC3F;YACJ;QACJ;QAEA,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE;IACjD;AACH;;AC1LD;;AAEG;;;;"}