UNPKG

snyk-docker-plugin

Version:
109 lines (108 loc) 3.12 kB
/// <reference types="node" /> /// <reference types="node" /> import { Readable } from "stream"; import { Elf } from "../go-parser/types"; import { AutoDetectedUserInstructions, PluginOptions } from "../types"; export declare type ExtractCallback = (dataStream: Readable, streamSize?: number) => Promise<string | Buffer>; export declare type FileContent = string | Buffer | Elf; export declare type FileNameAndContent = Record<string, FileContent>; export interface Extractor { extractArchive(fileSystemPath: string, extractActions: ExtractAction[], options: Partial<PluginOptions>): ExtractedLayersAndManifest; getImageIdFromManifest(manifest: DockerArchiveManifest | OciArchiveManifest): string; getManifestLayers(manifest: DockerArchiveManifest | OciArchiveManifest): string[]; } export interface ExtractionResult { imageId: string; manifestLayers: string[]; extractedLayers: ExtractedLayers; rootFsLayers?: string[]; autoDetectedUserInstructions?: AutoDetectedUserInstructions; platform?: string; imageLabels?: { [key: string]: string; }; imageCreationTime?: string; } export interface ExtractedLayers { [layerName: string]: FileNameAndContent; } export interface ExtractedLayersAndManifest { layers: ExtractedLayers[]; manifest: DockerArchiveManifest | OciArchiveManifest; imageConfig: ImageConfig; } export interface DockerArchiveManifest { Config: string; RepoTags: string[]; Layers: string[]; } export interface ImageConfig { architecture: string; os: string; rootfs: { diff_ids: string[]; }; config: { Labels: { [key: string]: string; }; }; created: string; } export interface OciArchiveLayer { digest: string; } export interface OciArchiveManifest { schemaVersion: string; config: { digest: string; }; layers: OciArchiveLayer[]; } export interface OciManifestInfo { digest: string; mediaType: string; platform?: OciPlatformInfo; } export interface OciPlatformInfo { os?: string; architecture?: string; variant?: string; } export interface OciImageIndex { manifests: OciManifestInfo[]; } export interface KanikoArchiveManifest { Config: string; RepoTags: string[]; Layers: string[]; } export interface KanikoExtractionResult { imageId: string; manifestLayers: string[]; extractedLayers: KanikoExtractedLayers; rootFsLayers?: string[]; autoDetectedUserInstructions?: AutoDetectedUserInstructions; platform?: string; imageLabels?: { [key: string]: string; }; imageCreationTime?: string; } export interface KanikoExtractedLayers { [layerName: string]: FileNameAndContent; } export interface KanikoExtractedLayersAndManifest { layers: KanikoExtractedLayers[]; manifest: KanikoArchiveManifest; imageConfig: ImageConfig; } export interface ExtractAction { actionName: string; filePathMatches: (filePath: string) => boolean; callback?: ExtractCallback; } export interface DetectedImageLayers { packages: any; layers: any; }