import {RawSourceMap} from 'source-map-js'; import {Options, StringOptions} from './options'; /** * The result of compiling Sass to CSS. Returned by [[compile]], * [[compileAsync]], [[compileString]], and [[compileStringAsync]]. * * @category Compile */ export interface CompileResult { /** * The generated CSS. * * Note that this *never* includes a `sourceMapUrl` comment—it's up to the * caller to determine where to save the source map and how to link to it from * the stylesheet. */ css: string; /** * The canonical URLs of all the stylesheets that were loaded during the * Sass compilation. The order of these URLs is not guaranteed. */ loadedUrls: URL[]; /** * The object representation of the source map that maps locations in the * generated CSS back to locations in the Sass source code. * * This typically uses absolute `file:` URLs to refer to Sass files, although * this can be controlled by having a custom [[Importer]] return * [[ImporterResult.sourceMapUrl]]. * * This is set if and only if [[Options.sourceMap]] is `true`. */ sourceMap?: RawSourceMap; } /** * Synchronously compiles the Sass file at `path` to CSS. If it succeeds it * returns a [[CompileResult]], and if it fails it throws an [[Exception]]. * * This only allows synchronous [[Importer]]s and [[CustomFunction]]s. * * @example * * ```js * const sass = require('sass'); * * const result = sass.compile("style.scss"); * console.log(result.css); * ``` * * @category Compile * @compatibility dart: "1.45.0", node: false */ export function compile(path: string, options?: Options<'sync'>): CompileResult; /** * Asynchronously compiles the Sass file at `path` to CSS. Returns a promise * that resolves with a [[CompileResult]] if it succeeds and rejects with an * [[Exception]] if it fails. * * This only allows synchronous or asynchronous [[Importer]]s and * [[CustomFunction]]s. * * **Heads up!** When using Dart Sass, **[[compile]] is almost twice as fast as * [[compileAsync]]**, due to the overhead of making the entire evaluation * process asynchronous. * * @example * * ```js * const sass = require('sass'); * * const result = await sass.compileAsync("style.scss"); * console.log(result.css); * ``` * * @category Compile * @compatibility dart: "1.45.0", node: false */ export function compileAsync( path: string, options?: Options<'async'> ): Promise; /** * Synchronously compiles a stylesheet whose contents is `source` to CSS. If it * succeeds it returns a [[CompileResult]], and if it fails it throws an * [[Exception]]. * * This only allows synchronous [[Importer]]s and [[CustomFunction]]s. * * @example * * ```js * const sass = require('sass'); * * const result = sass.compileString(` * h1 { * font-size: 40px; * code { * font-face: Roboto Mono; * } * }`); * console.log(result.css); * ``` * * @category Compile * @compatibility dart: "1.45.0", node: false */ export function compileString( source: string, options?: StringOptions<'sync'> ): CompileResult; /** * Asynchronously compiles a stylesheet whose contents is `source` to CSS. * Returns a promise that resolves with a [[CompileResult]] if it succeeds and * rejects with an [[Exception]] if it fails. * * This only allows synchronous or asynchronous [[Importer]]s and * [[CustomFunction]]s. * * **Heads up!** When using Dart Sass, **[[compile]] is almost twice as fast as * [[compileAsync]]**, due to the overhead of making the entire evaluation * process asynchronous. * * @example * * ```js * const sass = require('sass'); * * const result = await sass.compileStringAsync(` * h1 { * font-size: 40px; * code { * font-face: Roboto Mono; * } * }`); * console.log(result.css); * ``` * * @category Compile * @compatibility dart: "1.45.0", node: false */ export function compileStringAsync( source: string, options?: StringOptions<'async'> ): Promise;