{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/modules/processor/index.ts"],"sourcesContent":["import type { Program } from \"oxc-parser\";\n\nimport type { CompilerContext } from \"#/contexts/compiler\";\nimport type { CollectAllKeyframesResult } from \"##/processor/keyframes/collector\";\nimport type { CollectStylesResult } from \"##/processor/style/collector\";\nimport type { ExportStylesResult } from \"##/processor/style/exporter\";\nimport type { MutateStylesResult } from \"##/processor/style/mutator\";\nimport type { CollectAllVariablesResult } from \"##/processor/variables/collector\";\nimport type { ExportAllVariablesResult } from \"##/processor/variables/exporter\";\nimport type { MutateAllVariablesResult } from \"##/processor/variables/mutator\";\n\nimport { cloneDeep } from \"es-toolkit\";\n\nimport { transformCssList } from \"#/modules/processor/css\";\nimport { collectAllKeyframes } from \"##/processor/keyframes/collector\";\nimport { exportAllKeyframes } from \"##/processor/keyframes/exporter\";\nimport { mutateAllKeyframes } from \"##/processor/keyframes/mutator\";\nimport { collectStyles } from \"##/processor/style/collector\";\nimport { exportStyles } from \"##/processor/style/exporter\";\nimport { mutateStyles } from \"##/processor/style/mutator\";\nimport { collectAllVariables } from \"##/processor/variables/collector\";\nimport { exportAllVariables } from \"##/processor/variables/exporter\";\nimport { mutateAllVariables } from \"##/processor/variables/mutator\";\n\n/**\n * Options for the `process` function.\n */\ntype ProcessOptions = {\n    /**\n     * The compiler context.\n     */\n    context: CompilerContext;\n    /**\n     * The program to be processed.\n     */\n    program: Program;\n    /**\n     * The reference program.\n     */\n    programRef: Program;\n};\n\n/**\n * Result of the `process` function.\n */\ntype ProcessResult = {\n    /**\n     * The processed program.\n     */\n    program: Program;\n    /**\n     * The processed CSS.\n     */\n    css: string;\n    /**\n     * The processed CSS separated by elements.\n     */\n    cssList: string[];\n};\n\n/**\n * Process function.\n */\nconst process = (options: ProcessOptions): ProcessResult => {\n    const programRef: Program = cloneDeep(options.programRef);\n    const program: Program = cloneDeep(options.program);\n\n    // Variables\n\n    const resultVar: CollectAllVariablesResult = collectAllVariables({\n        context: options.context,\n        program: programRef,\n    });\n\n    const resultVarMut: MutateAllVariablesResult = mutateAllVariables({\n        program,\n        variablesList: resultVar.variablesList,\n    });\n\n    const resultVarMutRef: MutateAllVariablesResult = mutateAllVariables({\n        program: programRef,\n        variablesList: resultVar.variablesList,\n    });\n\n    // Keyframes\n\n    const resultKf: CollectAllKeyframesResult = collectAllKeyframes({\n        context: options.context,\n        program: resultVarMutRef.program,\n    });\n\n    const resultKfMut: MutateAllVariablesResult = mutateAllKeyframes({\n        program: resultVarMut.program,\n        keyframesList: resultKf.keyframesList,\n    });\n\n    const resultKfMutRef: MutateAllVariablesResult = mutateAllKeyframes({\n        program: resultVarMutRef.program,\n        keyframesList: resultKf.keyframesList,\n    });\n\n    // Styles\n\n    const resultStyles: CollectStylesResult = collectStyles({\n        context: options.context,\n        program: resultKfMutRef.program,\n    });\n\n    const resultStylesMut: MutateStylesResult = mutateStyles({\n        program: resultKfMut.program,\n        styles: resultStyles.styles,\n    });\n\n    // Export\n\n    const cssList: string[] = [];\n\n    const resultVarExport: ExportAllVariablesResult = exportAllVariables({\n        variablesList: resultVar.variablesList,\n    });\n\n    cssList.push(...resultVarExport.cssList);\n\n    const resultKfExport: ExportStylesResult = exportAllKeyframes({\n        keyframesList: resultKf.keyframesList,\n    });\n\n    cssList.push(...resultKfExport.cssList);\n\n    const resultStylesExport: ExportStylesResult = exportStyles({\n        styles: resultStyles.styles,\n    });\n\n    cssList.push(...resultStylesExport.cssList);\n\n    const transformedCssList: string[] = transformCssList(cssList);\n\n    return {\n        program: resultStylesMut.program,\n        css: transformedCssList.join(\"\"),\n        cssList: transformedCssList,\n    };\n};\n\nexport type { ProcessOptions, ProcessResult };\nexport { process };\n"],"mappings":";;;;;;;;;;;;;;;AA+DA,MAAM,WAAW,YAA2C;CACxD,MAAM,aAAsB,UAAU,QAAQ,UAAU;CACxD,MAAM,UAAmB,UAAU,QAAQ,OAAO;CAIlD,MAAM,YAAuC,oBAAoB;EAC7D,SAAS,QAAQ;EACjB,SAAS;CACb,CAAC;CAED,MAAM,eAAyC,mBAAmB;EAC9D;EACA,eAAe,UAAU;CAC7B,CAAC;CAED,MAAM,kBAA4C,mBAAmB;EACjE,SAAS;EACT,eAAe,UAAU;CAC7B,CAAC;CAID,MAAM,WAAsC,oBAAoB;EAC5D,SAAS,QAAQ;EACjB,SAAS,gBAAgB;CAC7B,CAAC;CAED,MAAM,cAAwC,mBAAmB;EAC7D,SAAS,aAAa;EACtB,eAAe,SAAS;CAC5B,CAAC;CAED,MAAM,iBAA2C,mBAAmB;EAChE,SAAS,gBAAgB;EACzB,eAAe,SAAS;CAC5B,CAAC;CAID,MAAM,eAAoC,cAAc;EACpD,SAAS,QAAQ;EACjB,SAAS,eAAe;CAC5B,CAAC;CAED,MAAM,kBAAsC,aAAa;EACrD,SAAS,YAAY;EACrB,QAAQ,aAAa;CACzB,CAAC;CAID,MAAM,UAAoB,CAAC;CAE3B,MAAM,kBAA4C,mBAAmB,EACjE,eAAe,UAAU,cAC7B,CAAC;CAED,QAAQ,KAAK,GAAG,gBAAgB,OAAO;CAEvC,MAAM,iBAAqC,mBAAmB,EAC1D,eAAe,SAAS,cAC5B,CAAC;CAED,QAAQ,KAAK,GAAG,eAAe,OAAO;CAEtC,MAAM,qBAAyC,aAAa,EACxD,QAAQ,aAAa,OACzB,CAAC;CAED,QAAQ,KAAK,GAAG,mBAAmB,OAAO;CAE1C,MAAM,qBAA+B,iBAAiB,OAAO;CAE7D,OAAO;EACH,SAAS,gBAAgB;EACzB,KAAK,mBAAmB,KAAK,EAAE;EAC/B,SAAS;CACb;AACJ"}