|
1 | 1 | /// <reference types="node"/> |
2 | 2 |
|
3 | | -import { Options } from "node-sass"; |
| 3 | +import { CompileResult, FileImporter, Importer, Options } from "@sass/types"; |
4 | 4 |
|
5 | | -interface SassResults { |
6 | | - css: string; |
7 | | - map: string; |
8 | | - stats: { |
9 | | - entry: string; |
10 | | - start: Date; |
11 | | - end: Date; |
12 | | - duration: number; |
13 | | - includedFiles: string[]; |
14 | | - }; |
| 5 | +interface GulpSassError extends Error { |
| 6 | + messageFormatted: string; |
| 7 | + messageOriginal: string; |
| 8 | + relativePath: string; |
15 | 9 | } |
16 | 10 |
|
17 | | -interface SassOptions extends Options { |
18 | | - success?: ((results: SassResults) => any) | undefined; |
19 | | - error?: ((err: Error) => any) | undefined; |
20 | | - imagePaths?: string[] | undefined; |
21 | | -} |
| 11 | +type GulpSassOptions<sync extends "sync" | "async", TNodePackageImporter extends {}> = |
| 12 | + & Omit<Options<sync>, "importers"> |
| 13 | + & { |
| 14 | + importers?: (Importer<sync> | FileImporter<sync> | TNodePackageImporter)[]; |
| 15 | + }; |
22 | 16 |
|
23 | | -interface GulpSassOptions extends SassOptions { |
24 | | - errLogToConsole?: boolean | undefined; |
25 | | - onSuccess?: ((css: string) => any) | undefined; |
26 | | - onError?: ((err: Error) => any) | undefined; |
27 | | - sync?: boolean | undefined; |
| 17 | +interface GulpSass<TNodePackageImporter extends {}> { |
| 18 | + (opts?: GulpSassOptions<"async", TNodePackageImporter>): NodeJS.ReadWriteStream; |
| 19 | + logError(error?: GulpSassError): void; |
| 20 | + sync(options?: GulpSassOptions<"sync", TNodePackageImporter>): NodeJS.ReadWriteStream; |
28 | 21 | } |
29 | 22 |
|
30 | | -interface GulpSass { |
31 | | - (opts?: GulpSassOptions): NodeJS.ReadWriteStream; |
32 | | - logError(error?: string): void; |
33 | | - sync(options?: GulpSassOptions): NodeJS.ReadWriteStream; |
| 23 | +interface Compiler<TNodePackageImporter extends {}> { |
| 24 | + compile(path: string, options: GulpSassOptions<"sync", TNodePackageImporter>): CompileResult; |
| 25 | + compileAsync(path: string, options: GulpSassOptions<"async", TNodePackageImporter>): Promise<CompileResult>; |
| 26 | + compileString(source: string, options: GulpSassOptions<"sync", TNodePackageImporter>): CompileResult; |
| 27 | + compileStringAsync(source: string, options: GulpSassOptions<"async", TNodePackageImporter>): Promise<CompileResult>; |
34 | 28 | } |
35 | 29 |
|
36 | | -type Compiler = any; |
37 | | - |
38 | 30 | interface GulpSassFactory { |
39 | | - (compiler: Compiler): GulpSass; |
| 31 | + <TNodePackageImporter extends {}>(compiler: Compiler<TNodePackageImporter>): GulpSass<TNodePackageImporter>; |
40 | 32 | } |
41 | 33 |
|
42 | 34 | declare var _tmp: GulpSassFactory; |
|
0 commit comments