@nodesecure/mama
Version:
53 lines • 2.46 kB
TypeScript
import type { PackumentVersion, PackageJSON, WorkspacesPackageJSON, Contact } from "@nodesecure/npm-types";
type WithRequired<T, K extends keyof T> = T & {
[P in K]-?: T[P];
};
export type NonOptionalPackageJSONProperties = "dependencies" | "devDependencies" | "scripts" | "gypfile";
/**
* @see https://www.nerdycode.com/prevent-npm-executing-scripts-security/
*/
export declare const kUnsafeNPMScripts: Set<string>;
export type ManifestManagerDefaultProperties = Required<Pick<PackumentVersion, NonOptionalPackageJSONProperties>>;
export interface ManifestManagerOptions {
/**
* Optional absolute location (directory) to the manifest
*/
location?: string;
}
export type ManifestManagerDocument = PackageJSON | WorkspacesPackageJSON | PackumentVersion;
export type LocatedManifestManager<MetadataDef extends Record<string, any> = Record<string, any>> = ManifestManager<MetadataDef> & {
location: string;
};
export declare class ManifestManager<MetadataDef extends Record<string, any> = Record<string, any>> {
static Default: Readonly<ManifestManagerDefaultProperties>;
/**
* Type guard to check if a ManifestManager instance has a location
*/
static isLocated<T extends Record<string, any>>(mama: ManifestManager<T>): mama is LocatedManifestManager<T>;
metadata: MetadataDef;
document: WithRequired<ManifestManagerDocument, NonOptionalPackageJSONProperties>;
location: string | undefined;
flags: {
hasUnsafeScripts: boolean;
isNative: boolean;
};
constructor(document: ManifestManagerDocument, options?: ManifestManagerOptions);
get name(): string;
get version(): string;
get moduleType(): import("./utils/inspectModuleType.ts").PackageModuleType;
get hasZeroSemver(): boolean;
get nodejsImports(): Record<`#${string}`, string | import("@nodesecure/npm-types").NodeImport>;
get dependencies(): string[];
get devDependencies(): string[];
get spec(): `${string}@${string}`;
get author(): Contact | null;
get isWorkspace(): boolean;
get integrity(): string;
get license(): string | null;
getEntryFiles(): IterableIterator<string>;
private extractNodejsExport;
static fromPackageJSON(locationOrManifest: string | ManifestManager): Promise<ManifestManager>;
static fromPackageJSONSync(locationOrManifest: string | ManifestManager): ManifestManager;
}
export {};
//# sourceMappingURL=ManifestManager.class.d.ts.map