import { Compiler, createCompilerWithSourceFilesFromDirectory } from './compiler' import { App, parsePackageJson } from './app' import { createConsoleLogger, Logger } from './logger' import { FileSystem } from './fs' import { parseNowConfigFromDirectory } from './now-config' export type ProjectContext = { compiler: Compiler fs: FileSystem logger: Logger /** * Package-level properties and metadata derived from configuration files * and sources. */ app: App } export function createProjectContext( rootDir: string, fs: FileSystem, logger: Logger = createConsoleLogger() ): ProjectContext { const config = parseNowConfigFromDirectory(rootDir, fs, logger) return { compiler: createCompilerWithSourceFilesFromDirectory(rootDir, fs, config), app: { package: parsePackageJson(rootDir, fs), config, rootDir, }, fs, logger, } }