@nodesecure/scanner
Version:
A package API to run a static analysis of your module's dependencies.
48 lines • 2.45 kB
TypeScript
import type { Simplify } from "type-fest";
import type { Dependency, DependencyVersion, Payload as NodesecurePayload } from "../types.ts";
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: Dependency;
};
export type PackumentProbeNextCallback = (name: string, dependency: Dependency) => void;
export type ManifestProbeNextCallback = (spec: string, dependencyVersion: 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 EventTarget {
#private;
private dependencies;
private probes;
private cachedResult;
constructor(data: NodesecurePayload | NodesecurePayload["dependencies"], probes: [...T]);
extract(): ExtractProbeResult<T>;
extractAndMerge(): MergedExtractProbeResult<T>;
on<T extends ProbeExtractorLevel>(e: T, listener: ExtractorListener<T>): this;
on(e: "error", listener: ErrorListener): this;
}
export declare const Callbacks: {
readonly packument: (callback: PackumentProbeNextCallback) => PackumentProbeExtractor<void>;
readonly manifest: (callback: ManifestProbeNextCallback) => ManifestProbeExtractor<void>;
};
type ExtractorCallback<T extends ProbeExtractorLevel> = Parameters<(typeof Callbacks)[T]>[0];
export type ExtractorCallbackParams<T extends ProbeExtractorLevel> = Parameters<ExtractorCallback<T>>;
export type ExtractorListener<T extends ProbeExtractorLevel> = (...events: CustomEvent<ExtractorCallbackParams<T>>["detail"]) => void;
type ErrorListener = (e: Error) => void;
export {};
//# sourceMappingURL=payload.d.ts.map