{"version":3,"file":"utils-9j3D9BLL.mjs","names":["fromError4","fromError3"],"sources":["../src/api/utils.ts"],"sourcesContent":["import { AnyNull, AnyNullClass, DbNull, DbNullClass, JsonNull, JsonNullClass } from '@zenstackhq/orm/common-types';\nimport { Decimal } from 'decimal.js';\nimport SuperJSON from 'superjson';\nimport { match } from 'ts-pattern';\nimport { ZodError } from 'zod';\nimport { fromError as fromError3 } from 'zod-validation-error/v3';\nimport { fromError as fromError4 } from 'zod-validation-error/v4';\nimport type { LogConfig, LogLevel } from '../types';\n\nexport function log(logger: LogConfig | undefined, level: LogLevel, message: string | (() => string), error?: unknown) {\n    if (!logger) {\n        return;\n    }\n\n    const getMessage = typeof message === 'function' ? message : () => message;\n\n    if (typeof logger === 'function') {\n        logger(level, getMessage(), error);\n    } else if (logger.includes(level)) {\n        const logFn = match(level)\n            .with('debug', () => console.debug)\n            .with('info', () => console.info)\n            .with('warn', () => console.warn)\n            .with('error', () => console.error)\n            .exhaustive();\n        logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `\\n${error}` : ''}`);\n    }\n}\n\n/**\n * Registers custom superjson serializers.\n */\nexport function registerCustomSerializers() {\n    SuperJSON.registerCustom<Decimal, string>(\n        {\n            isApplicable: (v): v is Decimal => Decimal.isDecimal(v),\n            serialize: (v) => v.toJSON(),\n            deserialize: (v) => new Decimal(v),\n        },\n        'Decimal',\n    );\n\n    SuperJSON.registerCustom<DbNullClass, string>(\n        {\n            isApplicable: (v): v is DbNullClass => v instanceof DbNullClass,\n            serialize: () => 'DbNull',\n            deserialize: () => DbNull,\n        },\n        'DbNull',\n    );\n\n    SuperJSON.registerCustom<JsonNullClass, string>(\n        {\n            isApplicable: (v): v is JsonNullClass => v instanceof JsonNullClass,\n            serialize: () => 'JsonNull',\n            deserialize: () => JsonNull,\n        },\n        'JsonNull',\n    );\n\n    SuperJSON.registerCustom<AnyNullClass, string>(\n        {\n            isApplicable: (v): v is AnyNullClass => v instanceof AnyNullClass,\n            serialize: () => 'AnyNull',\n            deserialize: () => AnyNull,\n        },\n        'AnyNull',\n    );\n\n    // `Buffer` is not available in edge runtime\n    if (globalThis.Buffer) {\n        SuperJSON.registerCustom<Buffer, string>(\n            {\n                isApplicable: (v): v is Buffer => Buffer.isBuffer(v),\n                serialize: (v) => v.toString('base64'),\n                deserialize: (v) => Buffer.from(v, 'base64'),\n            },\n            'Bytes',\n        );\n    }\n}\n\n/**\n * Format ZodError into a readable string\n */\nexport function getZodErrorMessage(error: ZodError): string {\n    if ('_zod' in error) {\n        return fromError4(error).toString();\n    } else {\n        return fromError3(error).toString();\n    }\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,IAAI,QAA+B,OAAiB,SAAkC,OAAiB;AACnH,KAAI,CAAC,OACD;CAGJ,MAAM,aAAa,OAAO,YAAY,aAAa,gBAAgB;AAEnE,KAAI,OAAO,WAAW,WAClB,QAAO,OAAO,YAAY,EAAE,MAAM;UAC3B,OAAO,SAAS,MAAM,CACf,OAAM,MAAM,CACrB,KAAK,eAAe,QAAQ,MAAM,CAClC,KAAK,cAAc,QAAQ,KAAK,CAChC,KAAK,cAAc,QAAQ,KAAK,CAChC,KAAK,eAAe,QAAQ,MAAM,CAClC,YAAY,CACX,wBAAwB,MAAM,IAAI,YAAY,GAAG,QAAQ,KAAK,UAAU,KAAK;;;;;AAO3F,SAAgB,4BAA4B;AACxC,WAAU,eACN;EACI,eAAe,MAAoB,QAAQ,UAAU,EAAE;EACvD,YAAY,MAAM,EAAE,QAAQ;EAC5B,cAAc,MAAM,IAAI,QAAQ,EAAE;EACrC,EACD,UACH;AAED,WAAU,eACN;EACI,eAAe,MAAwB,aAAa;EACpD,iBAAiB;EACjB,mBAAmB;EACtB,EACD,SACH;AAED,WAAU,eACN;EACI,eAAe,MAA0B,aAAa;EACtD,iBAAiB;EACjB,mBAAmB;EACtB,EACD,WACH;AAED,WAAU,eACN;EACI,eAAe,MAAyB,aAAa;EACrD,iBAAiB;EACjB,mBAAmB;EACtB,EACD,UACH;AAGD,KAAI,WAAW,OACX,WAAU,eACN;EACI,eAAe,MAAmB,OAAO,SAAS,EAAE;EACpD,YAAY,MAAM,EAAE,SAAS,SAAS;EACtC,cAAc,MAAM,OAAO,KAAK,GAAG,SAAS;EAC/C,EACD,QACH;;;;;AAOT,SAAgB,mBAAmB,OAAyB;AACxD,KAAI,UAAU,MACV,QAAOA,UAAW,MAAM,CAAC,UAAU;KAEnC,QAAOC,YAAW,MAAM,CAAC,UAAU"}