UNPKG

@nodesecure/scanner

Version:

A package API to run a static analysis of your module's dependencies.

42 lines 1.93 kB
import { EventEmitter } from "node:events"; import type { Simplify } from "type-fest"; import * as Scanner from "../types.js"; type MergeDeep<T extends unknown[]> = T extends [a: infer A, ...rest: infer R] ? A & MergeDeep<R> : {}; export type ExtractProbeResult<T extends ProbeExtractor<any>[]> = { [K in keyof T]: T[K] extends ProbeExtractor<any> ? ReturnType<T[K]["done"]> : never; }; export type MergedExtractProbeResult<T extends ProbeExtractor<any>[]> = Simplify<MergeDeep<ExtractProbeResult<T>>>; export type ProbeExtractorLevel = "packument" | "manifest"; export type ProbeExtractorManifestParent = { name: string; dependency: Scanner.Dependency; }; export type PackumentProbeNextCallback = (name: string, dependency: Scanner.Dependency) => void; export type ManifestProbeNextCallback = (spec: string, dependencyVersion: Scanner.DependencyVersion, parent: ProbeExtractorManifestParent) => void; export interface ProbeExtractor<Defs> { level: ProbeExtractorLevel; next(...args: any[]): void; done(): Defs; } export interface PackumentProbeExtractor<Defs> extends ProbeExtractor<Defs> { level: "packument"; next: PackumentProbeNextCallback; } export interface ManifestProbeExtractor<Defs> extends ProbeExtractor<Defs> { level: "manifest"; next: ManifestProbeNextCallback; } export declare class Payload<T extends ProbeExtractor<any>[]> extends EventEmitter { private dependencies; private probes; private cachedResult; constructor(data: Scanner.Payload | Scanner.Payload["dependencies"], probes: [...T]); extract(): ExtractProbeResult<T>; extractAndMerge(): MergedExtractProbeResult<T>; } export declare const Callbacks: { readonly packument: (callback: PackumentProbeNextCallback) => PackumentProbeExtractor<void>; readonly manifest: (callback: ManifestProbeNextCallback) => ManifestProbeExtractor<void>; }; export {}; //# sourceMappingURL=payload.d.ts.map