@funish/basis
Version:
A unified development toolkit with CLI for package management, versioning, publishing, linting, and git hooks management for JavaScript/TypeScript projects.
179 lines (170 loc) • 6.03 kB
TypeScript
import { B as BasisConfig, I as InitOptions, V as VersionOptions, P as PublishOptions, a as VersionUpdateResult, b as PublishResult, C as CommitMessage, G as GitConfig, c as GitConfigData, L as LintConfig } from './shared/basis.DoHZYvYm.js';
export { f as CommitMsgConfig, j as GitConfigSection, i as GitConfigValue, l as PublishConfig, g as VALID_GIT_HOOKS, h as ValidGitHook, k as VersionConfig, e as defaultConfig, d as defineBasisConfig } from './shared/basis.DoHZYvYm.js';
import * as c12 from 'c12';
import { LoadConfigOptions } from 'c12';
/**
* Basis core utilities for programmatic usage
* Only includes methods that provide actual value beyond simple function calls
*/
declare class Basis {
private config;
private cwd;
constructor(cwd?: string);
/**
* Get current working directory
*/
getCwd(): string;
/**
* Set working directory and reset cached config
*/
setCwd(cwd: string): void;
/**
* Load configuration from file or cache
*/
getConfig(): Promise<BasisConfig>;
/**
* Reload configuration from file
*/
reloadConfig(): Promise<BasisConfig>;
/**
* Run complete project setup (init + git setup)
*/
setup(options?: InitOptions): Promise<boolean>;
/**
* Run complete release workflow (lint + version + publish)
*/
release(versionOptions?: VersionOptions, publishOptions?: PublishOptions): Promise<{
version: VersionUpdateResult;
publish: PublishResult;
}>;
}
/**
* Create a new Basis instance
*/
declare function createBasis(cwd?: string): Basis;
/**
* Parse commit message into structured format
*/
declare function parseCommitMessage(message: string): CommitMessage | null;
/**
* Validate commit message against rules
*/
declare function validateCommitMessage(message: string, config?: GitConfig["commitMsg"]): {
valid: boolean;
errors: string[];
};
/**
* Lint commit message from Git
*/
declare function lintCommitMessage(cwd?: string, config?: GitConfig["commitMsg"]): Promise<boolean>;
/**
* Read Git configuration from .git/config using ini parser
*/
declare function readGitConfig(cwd?: string): Promise<GitConfigData>;
/**
* Write Git configuration to .git/config using ini format
*/
declare function writeGitConfig(config: GitConfigData, cwd?: string): Promise<void>;
/**
* Setup Git configuration with backup and safe merging
*/
declare function setupGitConfig(cwd?: string, config?: GitConfig["config"]): Promise<boolean>;
/**
* Reset Git configuration with backup
*/
declare function resetGitConfig(cwd?: string, keepUser?: boolean, options?: {
updateConfig?: boolean;
}): Promise<boolean>;
/**
* Setup Git hooks
*/
declare function setupGitHooks(cwd?: string, config?: GitConfig["hooks"]): Promise<boolean>;
/**
* Initialize Git repository
*/
declare function initGitRepo(cwd?: string): Promise<boolean>;
/**
* Run comprehensive Git setup
*/
declare function setupGit(cwd?: string): Promise<boolean>;
/**
* Remove Git hooks
*/
declare function removeGitHooks(cwd?: string, hooksToRemove?: string[], options?: {
updateConfig?: boolean;
}): Promise<boolean>;
/**
* Initialize basis configuration in the current project
*/
declare function init(cwd?: string, options?: InitOptions): Promise<boolean>;
/**
* Get staged files (only existing files, not deleted ones)
*/
declare function getStagedFiles(): string[];
/**
* Get all project files based on patterns using fast-glob
*/
declare function getProjectFiles(cwd: string, patterns?: string[], exclude?: string[]): Promise<string[]>;
/**
* Lint staged files
*/
declare function lintStaged(cwd?: string, config?: LintConfig["staged"]): Promise<boolean>;
/**
* Lint entire project using commands (similar to staged but for all project files)
*/
declare function lintProject(cwd?: string, config?: LintConfig["project"]): Promise<boolean>;
/**
* Check dependencies
*/
declare function lintDependencies(cwd?: string, config?: LintConfig["dependencies"], fix?: boolean): Promise<boolean>;
/**
* Check project structure
*/
declare function lintStructure(cwd?: string, config?: LintConfig["structure"], fix?: boolean): Promise<boolean>;
/**
* Check documentation
*/
declare function lintDocs(cwd?: string, config?: LintConfig["docs"], fix?: boolean): Promise<boolean>;
/**
* Run all lint checks
*/
declare function lintAll(cwd?: string, fix?: boolean): Promise<boolean>;
/**
* Publish package to npm registry
*/
declare function publishPackage(cwd: string, options?: PublishOptions): Promise<PublishResult>;
/**
* Update package.json version
*/
declare function updatePackageVersion(cwd: string, options?: VersionOptions): Promise<VersionUpdateResult>;
declare function loadConfig(options?: LoadConfigOptions<BasisConfig>): Promise<c12.ResolvedConfig<BasisConfig, c12.ConfigLayerMeta>>;
/**
* Check if file or directory exists
*/
declare function fileExists(path: string): Promise<boolean>;
/**
* Get package manager specific commands
*/
declare function getPackageManagerCommands(packageManager: string): {
outdated: string;
audit: string;
execPrefix: string;
remove: string;
update: string;
auditFix: string;
} | {
outdated: string;
audit: null;
execPrefix: string;
remove: string;
update: string;
auditFix: null;
} | {
outdated: null;
audit: null;
execPrefix: string;
remove: null;
update: null;
auditFix: null;
};
export { Basis, BasisConfig, CommitMessage, GitConfig, GitConfigData, InitOptions, LintConfig, PublishOptions, PublishResult, VersionOptions, VersionUpdateResult, createBasis, fileExists, getPackageManagerCommands, getProjectFiles, getStagedFiles, init, initGitRepo, lintAll, lintCommitMessage, lintDependencies, lintDocs, lintProject, lintStaged, lintStructure, loadConfig, parseCommitMessage, publishPackage, readGitConfig, removeGitHooks, resetGitConfig, setupGit, setupGitConfig, setupGitHooks, updatePackageVersion, validateCommitMessage, writeGitConfig };