import postcss, { ProcessOptions, Root, parse as cssParse } from 'postcss';
import postcssNested from 'postcss-nested';
import postcssJS from 'postcss-js';
import safeParser from 'postcss-safe-parser';

export type CSSObject = object;

const processor = postcss([postcssNested()]);

export function cssObjectToAst(cssObject: CSSObject, sourceFile = '') {
    const r = processor.process(cssObject, { from: sourceFile, parser: postcssJS });
    return r.root.type === 'document' ? r.root.nodes[0] : r.root;
}

export type CssParser = typeof safeParse;

export function safeParse(css: string, options: ProcessOptions = { from: 'style.st.css' }): Root {
    return safeParser(css, options);
}

export { cssParse };
