UNPKG

@stylable/core

Version:

CSS for Components

40 lines (38 loc) 1.35 kB
import { cachedProcessFile, CacheItem, MinimalFS } from './cached-process-file'; import { cssParse, CssParser } from './parser'; import { processNamespace, StylableProcessor } from './stylable-processor'; import type { StylableMeta } from './stylable-meta'; import type { Diagnostics } from './diagnostics'; import { defaultFeatureFlags, type FeatureFlags } from './features/feature'; export function createStylableFileProcessor({ fileSystem, onProcess, resolveNamespace, cssParser = cssParse, cache, createDiagnostics, flags = { ...defaultFeatureFlags }, }: { fileSystem: MinimalFS; flags?: FeatureFlags; onProcess?: (meta: StylableMeta, path: string) => StylableMeta; resolveNamespace?: typeof processNamespace; cssParser?: CssParser; cache?: Record<string, CacheItem<StylableMeta>>; createDiagnostics?: (from: string) => Diagnostics; }) { return cachedProcessFile<StylableMeta>( (from, content) => { return new StylableProcessor( createDiagnostics?.(from), resolveNamespace, flags ).process(cssParser(content, { from })); }, (resolvedPath: string) => { return fileSystem.readFileSync(resolvedPath, 'utf8'); }, onProcess && [onProcess], cache ); }