UNPKG

@socketsecurity/lib

Version:

Core utilities and infrastructure for Socket.dev security tools

155 lines (154 loc) 7.26 kB
/** * @fileoverview Package registry management with Socket.dev specific utilities. * Provides npm package analysis, dependency resolution, and registry operations. */ import type { CategoryString } from '#types'; import { getEditablePackageJsonClass, pkgJsonToEditable, toEditablePackageJson, toEditablePackageJsonSync } from './packages/editable'; import { findTypesForSubpath, getExportFilePaths, getSubpaths, isConditionalExports, isSubpathExports, resolvePackageJsonEntryExports } from './packages/exports'; import { isolatePackage } from './packages/isolation'; import { collectIncompatibleLicenses, collectLicenseWarnings, createAstNode, createBinaryOperationNode, createLicenseNode, parseSpdxExp, resolvePackageLicenses, visitLicenses } from './packages/licenses'; import { createPackageJson, fetchPackageManifest, fetchPackagePackument } from './packages/manifest'; import { normalizePackageJson, resolveEscapedScope, resolveOriginalPackageName, unescapeScope } from './packages/normalize'; import { extractPackage, findPackageExtensions, getReleaseTag, packPackage, readPackageJson, readPackageJsonSync, resolveGitHubTgzUrl, resolvePackageName, resolveRegistryPackageName } from './packages/operations'; import { resolvePackageJsonDirname, resolvePackageJsonPath } from './packages/paths'; import { fetchPackageProvenance, getProvenanceDetails } from './packages/provenance'; import { getRepoUrlDetails, gitHubTagRefUrl, gitHubTgzUrl, isGitHubTgzSpec, isGitHubUrlSpec } from './packages/specs'; import { isBlessedPackageName, isRegistryFetcherType, isValidPackageName } from './packages/validation'; // Type for package.json exports field. type PackageExports = { [path: string]: unknown; }; // Re-export the EditablePackageJson instance type for convenient access export type EditablePackageJson = import('./packages/editable').EditablePackageJsonInstance; /** * Extended PackageJson type based on NPMCliPackageJson.Content with Socket-specific additions. * @extends NPMCliPackageJson.Content (from @npmcli/package-json) * @property socket - Optional Socket.dev specific configuration */ export type PackageJson = { // Core npm fields [key: string]: unknown; name?: string | undefined; version?: string | undefined; description?: string | undefined; main?: string | undefined; module?: string | undefined; types?: string | undefined; typings?: string | undefined; bin?: string | Record<string, string> | undefined; // Author and contributors author?: string | { name?: string; email?: string; url?: string; } | undefined; contributors?: Array<string | { name?: string; email?: string; url?: string; }> | undefined; maintainers?: Array<string | { name?: string; email?: string; url?: string; }> | undefined; // Repository and URLs repository?: string | { type?: string; url?: string; directory?: string; } | undefined; homepage?: string | undefined; bugs?: string | { url?: string; email?: string; } | undefined; // License license?: string | undefined; licenses?: Array<{ type?: string; url?: string; }> | undefined; // Scripts scripts?: Record<string, string> | undefined; // Dependencies dependencies?: Record<string, string> | undefined; devDependencies?: Record<string, string> | undefined; peerDependencies?: Record<string, string> | undefined; optionalDependencies?: Record<string, string> | undefined; bundledDependencies?: string[] | undefined; bundleDependencies?: string[] | undefined; // Package managers specific overrides?: Record<string, string> | undefined; resolutions?: Record<string, string> | undefined; pnpm?: Record<string, unknown> | undefined; // Module system exports?: PackageExports | string | string[] | undefined; imports?: Record<string, unknown> | undefined; type?: 'module' | 'commonjs' | undefined; // Publishing private?: boolean | undefined; publishConfig?: Record<string, unknown> | undefined; files?: string[] | undefined; // Engines and OS engines?: Record<string, string> | undefined; os?: string[] | undefined; cpu?: string[] | undefined; // Package manager packageManager?: string | undefined; // Workspaces workspaces?: string[] | { packages?: string[]; } | undefined; // Socket.dev specific socket?: { categories?: CategoryString | CategoryString[]; interop?: string | string[]; [key: string]: unknown; } | undefined; }; export type SaveOptions = { ignoreWhitespace?: boolean | undefined; sort?: boolean | undefined; }; export type EditablePackageJsonOptions = { normalize?: boolean | undefined; path?: string | undefined; preserve?: string[] | readonly string[] | undefined; create?: boolean | undefined; data?: PackageJson | undefined; }; export type ExtractOptions = { dest?: string | undefined; tmpPrefix?: string | undefined; signal?: AbortSignal | undefined; packumentCache?: Map<string, unknown> | undefined; preferOffline?: boolean | undefined; }; export type NormalizeOptions = { preserve?: string[] | readonly string[] | undefined; }; export type ReadPackageJsonOptions = NormalizeOptions & { editable?: boolean | undefined; normalize?: boolean | undefined; throws?: boolean | undefined; }; export type ProvenanceOptions = { signal?: AbortSignal | undefined; timeout?: number | undefined; }; export type LicenseNode = { license: string; exception?: string | undefined; inFile?: string | undefined; plus?: boolean | undefined; }; export type PacoteOptions = { signal?: AbortSignal | undefined; packumentCache?: Map<string, unknown> | undefined; preferOffline?: boolean | undefined; fullMetadata?: boolean | undefined; }; export type { IsolatePackageOptions, IsolatePackageResult, } from './packages/isolation'; export type { InternalAstNode, InternalBinaryOperationNode, InternalLicenseNode, LicenseVisitor, SpdxAstNode, SpdxBinaryOperationNode, SpdxLicenseNode, } from './packages/licenses'; export { collectIncompatibleLicenses, collectLicenseWarnings, createAstNode, createBinaryOperationNode, createLicenseNode, createPackageJson, extractPackage, fetchPackageManifest, fetchPackagePackument, fetchPackageProvenance, findPackageExtensions, findTypesForSubpath, getEditablePackageJsonClass, getExportFilePaths, getProvenanceDetails, getReleaseTag, getRepoUrlDetails, getSubpaths, gitHubTagRefUrl, gitHubTgzUrl, isBlessedPackageName, isConditionalExports, isGitHubTgzSpec, isGitHubUrlSpec, isolatePackage, isRegistryFetcherType, isSubpathExports, isValidPackageName, normalizePackageJson, packPackage, parseSpdxExp, pkgJsonToEditable, readPackageJson, readPackageJsonSync, resolveEscapedScope, resolveGitHubTgzUrl, resolveOriginalPackageName, resolvePackageName, resolvePackageJsonDirname, resolvePackageJsonPath, resolvePackageJsonEntryExports, resolvePackageLicenses, resolveRegistryPackageName, toEditablePackageJson, toEditablePackageJsonSync, unescapeScope, visitLicenses, };