{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { Format, Omit } from \"ts-vista\";\n\nimport type { CodegenResult, SourceMap } from \"#/ast/codegen\";\nimport type { ParseResult } from \"#/ast/parse\";\nimport type { BundlerContext, CompilerContext } from \"#/contexts/compiler\";\nimport type {\n    BundleResult,\n    DynamicBundleOptions,\n    PresetBundleOptions,\n    UserBundleOptions,\n} from \"#/modules/bundler\";\nimport type { PreprocessResult } from \"#/modules/preprocessor\";\nimport type { ProcessResult } from \"#/modules/processor\";\n\nimport { codegen } from \"#/ast/codegen\";\nimport { parse } from \"#/ast/parse\";\nimport { createCompilerContext } from \"#/contexts/compiler\";\nimport { bundle } from \"#/modules/bundler\";\nimport { collect } from \"#/modules/collector\";\nimport { preprocess } from \"#/modules/preprocessor\";\nimport { process } from \"#/modules/processor\";\n\ntype PresetCompileOptions = Format<\n    Omit<PresetBundleOptions, \"context\"> & {\n        bundler: BundlerContext;\n    }\n>;\n\ntype UserCompileOptions = UserBundleOptions;\n\ntype DynamicCompileOptions = DynamicBundleOptions;\n\n/**\n * The options for the `compile` function.\n */\ntype CompileOptions = Format<\n    PresetCompileOptions & UserCompileOptions & DynamicCompileOptions\n>;\n\n/**\n * The result of the `compile` function.\n */\ntype CompileResult = {\n    /**\n     * The transpiled code.\n     */\n    code: string;\n    /**\n     * The CSS of the transpiled code.\n     */\n    css: string;\n    /**\n     * The CSS of the transpiled code that separated by elements.\n     */\n    cssList: string[];\n    /**\n     * The source map of the transpiled code.\n     */\n    map: SourceMap;\n};\n\nconst compile = async (\n    options: CompileOptions,\n): Promise<CompileResult | undefined> => {\n    const parsed: ParseResult = parse({\n        file: options.file,\n        code: options.code,\n    });\n\n    const context: CompilerContext = createCompilerContext({\n        bundler: options.bundler,\n        file: options.file,\n        program: parsed.program,\n    });\n\n    const { isImported, namespaces, specifiers } = collect({\n        context,\n        program: parsed.program,\n        packageName: options.packageName,\n        includedFunctions: options.includedFunctions,\n    });\n\n    if (!isImported) return void 0;\n\n    const preprocessed: PreprocessResult = preprocess({\n        context,\n        program: parsed.program,\n        namespaces,\n        includedFunctions: options.includedFunctions,\n        specifiers,\n    });\n\n    const codegenPreprocessed: CodegenResult = codegen({\n        file: options.file,\n        code: options.code,\n        program: preprocessed.program,\n    });\n\n    const bundled: BundleResult = await bundle({\n        // preset\n        context,\n        packageName: options.packageName,\n        includedFunctions: options.includedFunctions,\n        // user\n        cwd: options.cwd,\n        include: options.include,\n        exclude: options.exclude,\n        tsconfigPath: options.tsconfigPath,\n        // dynamic\n        file: options.file,\n        code: codegenPreprocessed.code,\n    });\n\n    const parsedbundle: ParseResult = parse({\n        file: options.file,\n        code: bundled.code,\n    });\n\n    const processed: ProcessResult = process({\n        context,\n        program: preprocessed.program,\n        programRef: parsedbundle.program,\n    });\n\n    const codegenResult: CodegenResult = codegen({\n        file: options.file,\n        code: options.code,\n        program: processed.program,\n    });\n\n    return {\n        code: codegenResult.code,\n        css: processed.css,\n        cssList: processed.cssList,\n        map: codegenResult.map,\n    };\n};\n\nexport type {\n    CompileOptions,\n    CompileResult,\n    DynamicCompileOptions,\n    PresetCompileOptions,\n    SourceMap,\n    UserCompileOptions,\n};\nexport { compile };\n"],"mappings":";;;;;;;;AA6DA,MAAM,UAAU,OACZ,YACqC;CACrC,MAAM,SAAsB,MAAM;EAC9B,MAAM,QAAQ;EACd,MAAM,QAAQ;CAClB,CAAC;CAED,MAAM,UAA2B,sBAAsB;EACnD,SAAS,QAAQ;EACjB,MAAM,QAAQ;EACd,SAAS,OAAO;CACpB,CAAC;CAED,MAAM,EAAE,YAAY,YAAY,eAAe,QAAQ;EACnD;EACA,SAAS,OAAO;EAChB,aAAa,QAAQ;EACrB,mBAAmB,QAAQ;CAC/B,CAAC;CAED,IAAI,CAAC,YAAY,OAAO,KAAK;CAE7B,MAAM,eAAiC,WAAW;EAC9C;EACA,SAAS,OAAO;EAChB;EACA,mBAAmB,QAAQ;EAC3B;CACJ,CAAC;CAED,MAAM,sBAAqC,QAAQ;EAC/C,MAAM,QAAQ;EACd,MAAM,QAAQ;EACd,SAAS,aAAa;CAC1B,CAAC;CAED,MAAM,UAAwB,MAAM,OAAO;EAEvC;EACA,aAAa,QAAQ;EACrB,mBAAmB,QAAQ;EAE3B,KAAK,QAAQ;EACb,SAAS,QAAQ;EACjB,SAAS,QAAQ;EACjB,cAAc,QAAQ;EAEtB,MAAM,QAAQ;EACd,MAAM,oBAAoB;CAC9B,CAAC;CAED,MAAM,eAA4B,MAAM;EACpC,MAAM,QAAQ;EACd,MAAM,QAAQ;CAClB,CAAC;CAED,MAAM,YAA2B,QAAQ;EACrC;EACA,SAAS,aAAa;EACtB,YAAY,aAAa;CAC7B,CAAC;CAED,MAAM,gBAA+B,QAAQ;EACzC,MAAM,QAAQ;EACd,MAAM,QAAQ;EACd,SAAS,UAAU;CACvB,CAAC;CAED,OAAO;EACH,MAAM,cAAc;EACpB,KAAK,UAAU;EACf,SAAS,UAAU;EACnB,KAAK,cAAc;CACvB;AACJ"}