{"version":3,"sources":["../../src/highlighter.ts","../../src/index.cts"],"sourcesContent":["export interface HighlightConfig {\r\n    enableColors?: boolean; // Flag to enable/disable colors\r\n    colors?: Record<string, string>; // Custom color scheme\r\n}\r\nexport class PrismaHighlighter {\r\n    private config: Required<HighlightConfig>;\r\n    private static DEFAULT_COLORS = {\r\n        reset: \"\\x1b[0m\", gray: \"\\x1b[90m\", whiteBold: \"\\x1b[1;37m\", cyanBold: \"\\x1b[1;36m\",\r\n        purple: \"\\x1b[38;5;201m\", lightPurple: \"\\x1b[38;5;177m\", purpleDark: \"\\x1b[38;5;93m\",\r\n        darkBlue: \"\\x1b[38;5;63m\", lightBlue: \"\\x1b[38;5;111m\", yellow: \"\\x1b[33m\",\r\n        yellowBold: \"\\x1b[1;33m\", yellowBright: \"\\x1b[93m\", orange: \"\\x1b[38;5;208m\",\r\n        green: \"\\x1b[32m\", greenBright: \"\\x1b[92m\", cyan: \"\\x1b[36m\", cyanLight: \"\\x1b[96m\", greenDark: \"\\x1b[38;5;22m\"\r\n    };\r\n    private static PRISMA_TYPES = new Set([\r\n        \"String\", \"Int\", \"Boolean\", \"DateTime\", \"Json\", \"Float\", \"Decimal\", \"BigInt\", \"Bytes\"\r\n    ]);\r\n    constructor(config: HighlightConfig = {}) {\r\n        this.config = {\r\n            enableColors: config.enableColors ?? true,\r\n            colors: { ...PrismaHighlighter.DEFAULT_COLORS, ...config.colors }\r\n        };\r\n    }\r\n    private colorize(text: string, color: keyof typeof PrismaHighlighter.DEFAULT_COLORS): string {\r\n        if (!this.config.enableColors) return text;\r\n        return `${this.config.colors[color] || \"\"}${text}${this.config.colors.reset}`;\r\n    }\r\n    public highlight(schema: string): string {\r\n        return schema.replace(/\\r\\n/g, \"\\n\").split(\"\\n\").map(_line => {\r\n            const line = _line.replace(/@\\w+(?=\\s|$)/g, match => this.colorize(match, \"greenBright\")\r\n            ).replace(/(@\\w+)(\\()([^()]*)(\\))/g, (_, annotation, openBracket, args, closeBracket) => {\r\n                const content = args.split(',').map((arg: string) => {\r\n                    if (/^\\s*\"([^\"]+)\"\\s*$/.test(arg)) return this.colorize(arg, \"purpleDark\");\r\n                    if (arg.includes(\":\")) {\r\n                        const [key, value] = arg.split(\":\").map(part => part.trim());\r\n                        const coloredValue = value.replace(/\\[(.*?)\\]/g, (_, inner) =>\r\n                            `${this.colorize(\"[\", \"yellowBright\")}${this.colorize(inner, \"orange\")}${this.colorize(\"]\", \"yellowBright\")}`\r\n                        );\r\n                        return `${this.colorize(key, \"yellowBright\")}: ${coloredValue}`;\r\n                    }\r\n                    return this.colorize(arg, \"cyan\");\r\n                }).join(\", \");\r\n                return this.colorize(annotation, \"yellow\") + this.colorize(openBracket, \"yellowBold\") + content + this.colorize(closeBracket, \"yellowBold\");\r\n            }).replace(/(@\\w+)(\\s*\\(\\s*)(.+)(\\s*\\))/g, (_, annotation, openBracket, value, closeBracket) => {\r\n                return this.colorize(annotation, \"yellow\") + this.colorize(openBracket, \"yellowBright\") + this.colorize(value, \"cyan\") + this.colorize(closeBracket, \"yellowBright\");\r\n            }).replace(/\\b(model|enum)\\s+([A-Z][a-zA-Z0-9_]*)/g, (_, keyword, modelName) =>\r\n                `${this.colorize(keyword, \"cyanBold\")} ${this.colorize(modelName, \"purple\")}`\r\n            ).replace(/\\/\\/(.*)$/gm, (_, comment) => this.colorize(\"// \" + comment, \"green\")\r\n            ).replace(/\\/\\*([\\s\\S]*?)\\*\\//g, (_, content) => this.colorize(`/*${content}*/`, \"greenDark\")\r\n            ).replace(/^(\\s*\\S+)(.*)$/, (match, firstPart, secondPart) => {\r\n                if (!secondPart.trim() && ![\"{\", \"}\"].includes(firstPart.trim())) return this.colorize(match, \"cyan\");\r\n                return firstPart + (secondPart || \"\").replace(\r\n                    /(?<![\"'])(?<=\\s|^)([A-Z][a-zA-Z0-9_]*)(\\?)?(\\[\\])?(?![^()]*\\))/g,\r\n                    (match, type, optional) => {\r\n                        const isOptional = optional !== undefined;\r\n                        if (PrismaHighlighter.PRISMA_TYPES.has(type)) {\r\n                            return isOptional ? this.colorize(match, \"gray\") : this.colorize(match, \"lightBlue\");\r\n                        } else {\r\n                            return isOptional ? this.colorize(match, \"lightPurple\") : this.colorize(match, \"purple\");\r\n                        }\r\n                    }\r\n                );\r\n            });\r\n            return line;\r\n        }).join(\"\\n\").replace(/\\b(generator|datasource)\\s+(\\w+)\\s*({)([\\s\\S]*?)(})/g, (match, blockType, name, openBrace, content, closeBrace) => {\r\n            const highlightedContent = content\r\n                .replace(/\\b(provider|output|url)\\b/g, key => this.colorize(key, \"yellowBright\"))\r\n                .replace(/\"([^\"]+)\"/g, (_, value) => `\"${this.colorize(value, \"gray\")}\"`);\r\n            return `${this.colorize(blockType, \"greenBright\")} ${this.colorize(name, \"purple\")} ${this.colorize(openBrace, \"gray\")}${highlightedContent}${this.colorize(closeBrace, \"gray\")}`;\r\n        });\r\n    }\r\n}\r\n\r\nconst highlighter = new PrismaHighlighter();\r\nexport default highlighter;\r\n","const highlighter = require(\"./highlighter\");\r\n\r\nmodule.exports = { ...highlighter };\r\n"],"mappings":"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","names":["_","match","highlighter"]}