UNPKG

yarn-frozen-dependencies

Version:

A yarn plugin who freeze the workspace dependencies to prevent undesired updates.

47 lines (38 loc) 1.79 kB
import type {Workspace, Descriptor} from '@yarnpkg/core'; import {structUtils} from '@yarnpkg/core'; export type Operation = 'add' | 'remove' | 'replace'; export type OperationReporterOptions = { operation: OperationReporter['operation'], workspace: OperationReporter['workspace'], target: OperationReporter['target'], descriptor: OperationReporter['descriptor'], destinationDescriptor: OperationReporter['destinationDescriptor'] } export abstract class OperationReporter { protected operation: Operation; protected workspace: Workspace; protected target: string; protected descriptor: Descriptor; protected destinationDescriptor?: Descriptor; protected formattedFields: Record<'workspace' | 'dependency', string> protected formattedWorkspace: string; protected formattedDependency: string; constructor({operation, workspace, target, descriptor, destinationDescriptor}: OperationReporterOptions) { this.operation = operation; this.workspace = workspace; this.target = target; this.descriptor = descriptor; this.destinationDescriptor = destinationDescriptor; this.initFormattedFields(); } protected initFormattedFields = () => { this.formattedFields = { workspace: structUtils.prettyWorkspace(this.workspace.project.configuration, this.workspace), dependency: structUtils.prettyDescriptor(this.workspace.project.configuration, this.descriptor), } if (this.operation === 'replace') { this.formattedFields.dependency = `${this.formattedFields.dependency} with ${structUtils.prettyDescriptor(this.workspace.project.configuration, this.destinationDescriptor)}` } } abstract reportOperation(): void; }