discovery.ts

Source file discovery — exports-first with glob fallback.

Used by analyzeFromFiles to locate source files from a project root. Build tool integrations using analyze should construct SourceFileInfo[] from their own module graph instead.

@see exports.ts for discoverFromExports (package.json exports → source files) @see files.ts for globFiles (glob-based discovery)

Declarations
#

4 declarations

view source

discoverSourceFiles
#

discovery.ts view source

(options: DiscoverSourceFilesOptions): Promise<DiscoverSourceFilesResult>

Discover source files from a project root.

Used internally by analyzeFromFiles for the discovery step. Standalone consumers can call it directly when they want the discovered file list without running full analysis.

Strategy is selected by discovery: - 'auto' (default) — try exports first, fall back to glob. - 'exports' — exports only; throws if exports is missing or resolves to no source files. Combining with include is a configuration error and also throws. - 'glob' — glob only; include parameterizes the search.

Exclusion globs come from sourceOptions.exclude (the single source of truth, also applied at analysis time by isSource()).

options

discovery configuration

returns

Promise<DiscoverSourceFilesResult>

discovered files (content loaded) and any diagnostics from the exports step

throws

  • Error - in strict `'exports'` mode when `exports` is missing or

examples

const sourceOptions = createSourceOptions(process.cwd()); const {files, diagnostics} = await discoverSourceFiles({sourceOptions});

DiscoverSourceFilesOptions
#

discovery.ts view source

DiscoverSourceFilesOptions

Options for discoverSourceFiles.

sourceOptions

Source options used to resolve the source directory for exports-based discovery.

sourceOptions.projectRoot is the resolution base for include globs and the sourceOptions.exclude glob patterns. Build via createSourceOptions (which normalizes) or pass a normalized return from normalizeSourceOptions.

sourceOptions.exclude is the single source of truth for exclusion globs — applied at both this discovery stage and analysis time (via isSource()).

include

Glob patterns to include (relative to projectRoot).

Filter for glob-based discovery. When discovery is 'auto' (default), providing include collapses the chain to glob immediately. Combining include with discovery: 'exports' throws.

When omitted, the glob fallback derives an include pattern from sourceOptions.sourcePaths via deriveIncludePatterns, so custom sourcePaths (e.g., ['packages/foo']) discover files instead of silently defaulting to src/lib.

type Array<string>

discovery

Discovery strategy.

distDir

Dist directory name relative to projectRoot, used for exports-based discovery.

Maps dist paths from package.json exports back to source paths.

type string

log

Optional logger for status messages.

DiscoverSourceFilesResult
#

discovery.ts view source

DiscoverSourceFilesResult

files

Discovered source files with content already loaded.

type Array<SourceFileInfo>

diagnostics

Diagnostics collected during discovery (e.g., malformed package.json exports).

type Array<Diagnostic>

Discovery
#

discovery.ts view source

Discovery

Discovery strategy for source files.

- 'auto' (default) — try package.json exports first, fall back to glob patterns when exports is missing or resolves to nothing - 'exports' — package.json exports only, throw if exports is missing or resolves to no source files (strict mode for libraries that should always declare their public surface via exports) - 'glob' — skip exports entirely, use glob patterns

Providing include patterns implies 'glob' semantics regardless of mode — when discovery: 'auto' and include is set, the auto fallback chain collapses to glob immediately. Combining discovery: 'exports' with include is a configuration error (the modes are contradictory) and throws at discovery time.

Depends on
#

Imported by
#