@eldrforge/shared 0.1.1-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +64 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1092 -0
- package/dist/index.js.map +1 -0
- package/dist/src/dates.d.ts +57 -0
- package/dist/src/dates.d.ts.map +1 -0
- package/dist/src/errors/ArgumentError.d.ts +6 -0
- package/dist/src/errors/ArgumentError.d.ts.map +1 -0
- package/dist/src/errors/CancellationError.d.ts +4 -0
- package/dist/src/errors/CancellationError.d.ts.map +1 -0
- package/dist/src/errors/CommandErrors.d.ts +74 -0
- package/dist/src/errors/CommandErrors.d.ts.map +1 -0
- package/dist/src/errors/ExitError.d.ts +4 -0
- package/dist/src/errors/ExitError.d.ts.map +1 -0
- package/dist/src/errors/index.d.ts +8 -0
- package/dist/src/errors/index.d.ts.map +1 -0
- package/dist/src/general.d.ts +21 -0
- package/dist/src/general.d.ts.map +1 -0
- package/dist/src/index.d.ts +16 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/logger.d.ts +10 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/safety.d.ts +28 -0
- package/dist/src/safety.d.ts.map +1 -0
- package/dist/src/stdin.d.ts +3 -0
- package/dist/src/stdin.d.ts.map +1 -0
- package/dist/src/storage.d.ts +34 -0
- package/dist/src/storage.d.ts.map +1 -0
- package/dist/src/types.d.ts +20 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/validation.d.ts +39 -0
- package/dist/src/validation.d.ts.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/logger.ts","../src/errors/ArgumentError.ts","../src/errors/CancellationError.ts","../src/errors/CommandErrors.ts","../src/errors/ExitError.ts","../src/storage.ts","../src/stdin.ts","../src/dates.ts","../src/general.ts","../src/safety.ts","../src/validation.ts"],"sourcesContent":["/**\n * Logger utilities\n * Provides optional Winston integration with console fallback\n */\n\nimport type { Logger } from './types';\n\nlet logger: Logger | undefined;\n\n/**\n * Set the logger instance\n */\nexport function setLogger(newLogger: Logger): void {\n logger = newLogger;\n}\n\n/**\n * Get the current logger or create a console fallback\n */\nexport function getLogger(): Logger {\n if (logger) {\n return logger;\n }\n\n // Console fallback\n /* eslint-disable no-console */\n return {\n error: (message: string, ...args: any[]) => console.error(message, ...args),\n warn: (message: string, ...args: any[]) => console.warn(message, ...args),\n info: (message: string, ...args: any[]) => console.log(message, ...args),\n debug: (message: string, ...args: any[]) => console.debug(message, ...args),\n };\n /* eslint-enable no-console */\n}\n\n","export class ArgumentError extends Error {\n private argumentName: string;\n constructor(argumentName: string, message: string) {\n super(`${message}`);\n this.name = 'ArgumentError';\n this.argumentName = argumentName;\n }\n\n get argument(): string {\n return this.argumentName;\n }\n}","export class CancellationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'CancellationError';\n }\n}\n","/**\n * Base class for all command-related errors\n */\nexport class CommandError extends Error {\n public readonly code: string;\n public readonly recoverable: boolean;\n public readonly originalCause?: Error;\n\n constructor(\n message: string,\n code: string,\n recoverable: boolean = false,\n cause?: Error\n ) {\n super(message);\n this.name = 'CommandError';\n this.code = code;\n this.recoverable = recoverable;\n this.originalCause = cause;\n // Also set the standard cause property for compatibility\n if (cause) {\n (this as any).cause = cause;\n }\n }\n}\n\n/**\n * Configuration-related errors (missing config, invalid settings, etc.)\n */\nexport class ConfigurationError extends CommandError {\n constructor(message: string, cause?: Error) {\n super(message, 'CONFIG_ERROR', false, cause);\n this.name = 'ConfigurationError';\n }\n}\n\n/**\n * Validation errors (invalid arguments, missing required data, etc.)\n */\nexport class ValidationError extends CommandError {\n constructor(message: string, cause?: Error) {\n super(message, 'VALIDATION_ERROR', false, cause);\n this.name = 'ValidationError';\n }\n}\n\n/**\n * User cancellation errors (user cancelled operation)\n */\nexport class UserCancellationError extends CommandError {\n constructor(message: string = 'Operation cancelled by user') {\n super(message, 'USER_CANCELLED', true);\n this.name = 'UserCancellationError';\n }\n}\n\n/**\n * External dependency errors (Git, NPM, file system, etc.)\n */\nexport class ExternalDependencyError extends CommandError {\n constructor(message: string, dependency: string, cause?: Error) {\n super(`${dependency}: ${message}`, 'EXTERNAL_DEPENDENCY_ERROR', false, cause);\n this.name = 'ExternalDependencyError';\n }\n}\n\n/**\n * File operation errors (read, write, permissions, etc.)\n */\nexport class FileOperationError extends CommandError {\n constructor(message: string, filePath: string, cause?: Error) {\n super(`File operation failed on ${filePath}: ${message}`, 'FILE_OPERATION_ERROR', false, cause);\n this.name = 'FileOperationError';\n }\n}\n\n/**\n * Pull request check failures with detailed information\n */\nexport class PullRequestCheckError extends CommandError {\n constructor(\n message: string,\n public readonly prNumber: number,\n public readonly failedChecks: Array<{\n name: string;\n conclusion: string;\n detailsUrl?: string;\n summary?: string;\n output?: {\n title?: string;\n summary?: string;\n text?: string;\n };\n }>,\n public readonly prUrl: string,\n public readonly currentBranch?: string\n ) {\n super(message, 'PR_CHECK_FAILED', true);\n this.name = 'PullRequestCheckError';\n }\n\n /**\n * Get specific instructions based on the type of failures\n */\n getRecoveryInstructions(): string[] {\n const instructions: string[] = [];\n const branchName = this.currentBranch || 'your current branch';\n\n // Analyze failure types for specific guidance\n const testFailures = this.failedChecks.filter(check =>\n check.name.toLowerCase().includes('test') ||\n check.name.toLowerCase().includes('ci') ||\n check.output?.title?.toLowerCase().includes('test')\n );\n\n const lintFailures = this.failedChecks.filter(check =>\n check.name.toLowerCase().includes('lint') ||\n check.name.toLowerCase().includes('style') ||\n check.output?.title?.toLowerCase().includes('lint')\n );\n\n const buildFailures = this.failedChecks.filter(check =>\n check.name.toLowerCase().includes('build') ||\n check.name.toLowerCase().includes('compile') ||\n check.output?.title?.toLowerCase().includes('build')\n );\n\n instructions.push('🔧 To fix these failures:');\n instructions.push('');\n\n // Specific instructions based on failure types\n if (testFailures.length > 0) {\n instructions.push('📋 Test Failures:');\n instructions.push(' • Run tests locally: `npm test` or `yarn test`');\n instructions.push(' • Fix failing tests or update test expectations');\n instructions.push(' • Consider running specific test files if identified in the failure details');\n instructions.push('');\n }\n\n if (lintFailures.length > 0) {\n instructions.push('🎨 Linting/Style Failures:');\n instructions.push(' • Run linter locally: `npm run lint` or `yarn lint`');\n instructions.push(' • Auto-fix where possible: `npm run lint:fix` or `yarn lint:fix`');\n instructions.push(' • Check code formatting: `npm run format` or `yarn format`');\n instructions.push('');\n }\n\n if (buildFailures.length > 0) {\n instructions.push('🏗️ Build Failures:');\n instructions.push(' • Run build locally: `npm run build` or `yarn build`');\n instructions.push(' • Check for TypeScript errors: `npx tsc --noEmit`');\n instructions.push(' • Review dependency issues and import paths');\n instructions.push('');\n }\n\n // General workflow instructions\n instructions.push('📤 After fixing the issues:');\n instructions.push(` 1. Stage your changes: \\`git add .\\``);\n instructions.push(` 2. Commit your fixes: \\`git commit -m \"fix: resolve PR check failures\"\\``);\n instructions.push(` 3. Push to ${branchName}: \\`git push origin ${branchName}\\``);\n instructions.push(` 4. The PR checks will automatically re-run`);\n instructions.push('');\n\n instructions.push('🔄 Re-running this command:');\n instructions.push(' • The kodrdriv publish command will automatically detect the existing PR');\n instructions.push(' • Simply run the same command again after pushing your fixes');\n instructions.push(' • You can also manually trigger checks by pushing an empty commit:');\n instructions.push(` \\`git commit --allow-empty -m \"trigger checks\" && git push origin ${branchName}\\``);\n\n return instructions;\n }\n}\n","export class ExitError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ExitError';\n }\n}\n","import * as fs from 'fs';\nimport { glob } from 'glob';\nimport path from 'path';\nimport crypto from 'crypto';\nimport { getLogger } from './logger';\n/**\n * This module exists to isolate filesystem operations from the rest of the codebase.\n * This makes testing easier by avoiding direct fs mocking in jest configuration.\n *\n * Additionally, abstracting storage operations allows for future flexibility -\n * this export utility may need to work with storage systems other than the local filesystem\n * (e.g. S3, Google Cloud Storage, etc).\n */\n\nexport interface Utility {\n exists: (path: string) => Promise<boolean>;\n isDirectory: (path: string) => Promise<boolean>;\n isFile: (path: string) => Promise<boolean>;\n isReadable: (path: string) => Promise<boolean>;\n isWritable: (path: string) => Promise<boolean>;\n isFileReadable: (path: string) => Promise<boolean>;\n isDirectoryWritable: (path: string) => Promise<boolean>;\n isDirectoryReadable: (path: string) => Promise<boolean>;\n createDirectory: (path: string) => Promise<void>;\n ensureDirectory: (path: string) => Promise<void>;\n readFile: (path: string, encoding: string) => Promise<string>;\n readStream: (path: string) => Promise<fs.ReadStream>;\n writeFile: (path: string, data: string | Buffer, encoding: string) => Promise<void>;\n rename: (oldPath: string, newPath: string) => Promise<void>;\n deleteFile: (path: string) => Promise<void>;\n forEachFileIn: (directory: string, callback: (path: string) => Promise<void>, options?: { pattern: string }) => Promise<void>;\n hashFile: (path: string, length: number) => Promise<string>;\n listFiles: (directory: string) => Promise<string[]>;\n removeDirectory: (path: string) => Promise<void>;\n}\n\nexport const create = (): Utility => {\n const logger = getLogger();\n\n const exists = async (path: string): Promise<boolean> => {\n try {\n await fs.promises.stat(path);\n return true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error: any) {\n return false;\n }\n }\n\n const isDirectory = async (path: string): Promise<boolean> => {\n const stats = await fs.promises.stat(path);\n if (!stats.isDirectory()) {\n // Log at debug level since this is expected when scanning directories\n // that contain both files and directories\n return false;\n }\n return true;\n }\n\n const isFile = async (path: string): Promise<boolean> => {\n const stats = await fs.promises.stat(path);\n if (!stats.isFile()) {\n // Log removed since this is expected when checking file types\n return false;\n }\n return true;\n }\n\n const isReadable = async (path: string): Promise<boolean> => {\n try {\n await fs.promises.access(path, fs.constants.R_OK);\n } catch (error: any) {\n logger.debug(`${path} is not readable: ${error.message}`);\n return false;\n }\n return true;\n }\n\n const isWritable = async (path: string): Promise<boolean> => {\n try {\n await fs.promises.access(path, fs.constants.W_OK);\n } catch (error: any) {\n logger.debug(`${path} is not writable: ${error.message}`);\n return false;\n }\n return true;\n }\n\n const isFileReadable = async (path: string): Promise<boolean> => {\n return await exists(path) && await isFile(path) && await isReadable(path);\n }\n\n const isDirectoryWritable = async (path: string): Promise<boolean> => {\n return await exists(path) && await isDirectory(path) && await isWritable(path);\n }\n\n const isDirectoryReadable = async (path: string): Promise<boolean> => {\n return await exists(path) && await isDirectory(path) && await isReadable(path);\n }\n\n const createDirectory = async (path: string): Promise<void> => {\n try {\n await fs.promises.mkdir(path, { recursive: true });\n } catch (mkdirError: any) {\n throw new Error(`Failed to create output directory ${path}: ${mkdirError.message} ${mkdirError.stack}`);\n }\n }\n\n const ensureDirectory = async (path: string): Promise<void> => {\n if (!(await exists(path))) {\n // Before creating the directory, check if any parent directory is blocked by a file\n try {\n await fs.promises.mkdir(path, { recursive: true });\n } catch (mkdirError: any) {\n // If mkdir fails with ENOTDIR, it means a parent directory is actually a file\n if (mkdirError.code === 'ENOTDIR') {\n // Find which parent directory is the problem\n const pathParts = path.split('/').filter(p => p !== '');\n let currentPath = '';\n for (const part of pathParts) {\n currentPath = currentPath ? `${currentPath}/${part}` : part;\n if (await exists(currentPath) && !(await isDirectory(currentPath))) {\n throw new Error(`Cannot create directory at ${path}: a file exists at ${currentPath} blocking the path`);\n }\n }\n }\n // Re-throw the original error if it's not the file-blocking-path issue or we couldn't find the blocking file\n throw new Error(`Failed to create output directory ${path}: ${mkdirError.message} ${mkdirError.stack}`);\n }\n } else {\n // Path exists, but we need to check if it's actually a directory\n if (!(await isDirectory(path))) {\n // Path exists but is not a directory (likely a file)\n throw new Error(`Cannot create directory at ${path}: a file already exists at this location`);\n }\n // If we reach here, the directory already exists, so nothing to do\n }\n }\n\n const removeDirectory = async (path: string): Promise<void> => {\n try {\n if (await exists(path)) {\n await fs.promises.rm(path, { recursive: true, force: true });\n }\n } catch (rmError: any) {\n throw new Error(`Failed to remove directory ${path}: ${rmError.message} ${rmError.stack}`);\n }\n }\n\n const readFile = async (path: string, encoding: string): Promise<string> => {\n return await fs.promises.readFile(path, { encoding: encoding as BufferEncoding });\n }\n\n const writeFile = async (path: string, data: string | Buffer, encoding: string): Promise<void> => {\n await fs.promises.writeFile(path, data, { encoding: encoding as BufferEncoding });\n }\n\n const rename = async (oldPath: string, newPath: string): Promise<void> => {\n await fs.promises.rename(oldPath, newPath);\n }\n\n const deleteFile = async (path: string): Promise<void> => {\n try {\n if (await exists(path)) {\n await fs.promises.unlink(path);\n }\n } catch (deleteError: any) {\n throw new Error(`Failed to delete file ${path}: ${deleteError.message} ${deleteError.stack}`);\n }\n }\n\n const forEachFileIn = async (directory: string, callback: (file: string) => Promise<void>, options: { pattern: string | string[] } = { pattern: '*.*' }): Promise<void> => {\n try {\n const files = await glob(options.pattern, { cwd: directory, nodir: true });\n for (const file of files) {\n await callback(path.join(directory, file));\n }\n } catch (err: any) {\n throw new Error(`Failed to glob pattern ${options.pattern} in ${directory}: ${err.message}`);\n }\n }\n\n const readStream = async (path: string): Promise<fs.ReadStream> => {\n return fs.createReadStream(path);\n }\n\n const hashFile = async (path: string, length: number): Promise<string> => {\n const file = await readFile(path, 'utf8');\n return crypto.createHash('sha256').update(file).digest('hex').slice(0, length);\n }\n\n const listFiles = async (directory: string): Promise<string[]> => {\n return await fs.promises.readdir(directory);\n }\n\n return {\n exists,\n isDirectory,\n isFile,\n isReadable,\n isWritable,\n isFileReadable,\n isDirectoryWritable,\n isDirectoryReadable,\n createDirectory,\n ensureDirectory,\n readFile,\n readStream,\n writeFile,\n rename,\n deleteFile,\n forEachFileIn,\n hashFile,\n listFiles,\n removeDirectory,\n };\n}\n","\n// Function to read from STDIN if available\nexport async function readStdin(): Promise<string | null> {\n // In test environment, allow mocking to work by skipping TTY check\n if (process.env.NODE_ENV === 'test' || process.env.VITEST === 'true') {\n return new Promise((resolve) => {\n let input = '';\n let hasData = false;\n let resolved = false;\n\n const timeout = setTimeout(() => {\n if (!hasData && !resolved) {\n resolved = true;\n cleanup();\n resolve(null);\n }\n }, 10); // Very short timeout for tests\n\n const onData = (chunk: string) => {\n hasData = true;\n clearTimeout(timeout);\n input += chunk;\n };\n\n const onEnd = () => {\n if (!resolved) {\n resolved = true;\n cleanup();\n resolve(input.trim() || null);\n }\n };\n\n const onError = () => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeout);\n cleanup();\n resolve(null);\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('end', onEnd);\n process.stdin.removeListener('error', onError);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', onData);\n process.stdin.on('end', onEnd);\n process.stdin.on('error', onError);\n process.stdin.resume();\n });\n }\n\n return new Promise((resolve) => {\n // Check if stdin is TTY (interactive terminal)\n if (process.stdin.isTTY) {\n resolve(null);\n return;\n }\n\n let input = '';\n let hasData = false;\n let resolved = false;\n\n const timeout = setTimeout(() => {\n if (!hasData && !resolved) {\n resolved = true;\n cleanup();\n resolve(null);\n }\n }, 100); // Short timeout to detect if data is available\n\n const onData = (chunk: string) => {\n hasData = true;\n clearTimeout(timeout);\n input += chunk;\n };\n\n const onEnd = () => {\n if (!resolved) {\n resolved = true;\n cleanup();\n resolve(input.trim() || null);\n }\n };\n\n const onError = () => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeout);\n cleanup();\n resolve(null);\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('end', onEnd);\n process.stdin.removeListener('error', onError);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', onData);\n process.stdin.on('end', onEnd);\n process.stdin.on('error', onError);\n\n // If no data comes in quickly, assume no stdin\n process.stdin.resume();\n });\n}\n\n// Function to prompt user for confirmation (y/n)\nexport async function promptConfirmation(message: string): Promise<boolean> {\n // In test environment, return true by default\n if (process.env.NODE_ENV === 'test' || process.env.VITEST === 'true') {\n return true;\n }\n\n // Use process.stdout.write instead of console.log to avoid linter issues\n process.stdout.write(message + '\\n');\n process.stdout.write('Please enter \"y\" for yes or \"n\" for no: ');\n\n return new Promise((resolve) => {\n const handleInput = (chunk: string) => {\n const input = chunk.toString().trim().toLowerCase();\n\n if (input === 'y' || input === 'yes') {\n cleanup();\n resolve(true);\n } else if (input === 'n' || input === 'no') {\n cleanup();\n resolve(false);\n } else {\n process.stdout.write('Please enter \"y\" for yes or \"n\" for no: ');\n // Continue listening for input\n }\n };\n\n const cleanup = () => {\n process.stdin.removeListener('data', handleInput);\n process.stdin.pause();\n };\n\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', handleInput);\n process.stdin.resume();\n });\n} ","import dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport moment from 'moment-timezone';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n/**\n * Yes, wrapping dayjs is a bit annoying and might seem overly paranoid. However, I feel strongly\n * about not letting Dayjs instances leak into the rest of the codebase. Having Dayjs objects\n * floating around the application leads to inconsistent timezone handling, makes testing more\n * difficult, and creates subtle bugs that are hard to track down.\n *\n * By wrapping dayjs completely and only exposing plain JavaScript Date objects, we get several\n * key benefits:\n * 1. Consistent timezone handling through a single configuration point\n * 2. Simpler testing since we only need to mock this one library\n * 3. Type safety - the rest of the codebase only deals with standard Date objects\n * 4. No risk of dayjs method chains creating unexpected timezone shifts\n *\n * The Library interface gives us full control over all date operations while keeping the messy\n * details of timezone manipulation contained in one place. Yes it's more code, but the peace of\n * mind is worth it.\n */\nexport interface Utility {\n now: () => Date;\n date: (date: string | number | Date | null | undefined) => Date;\n parse: (date: string | number | Date | null | undefined, format: string) => Date;\n addDays: (date: Date, days: number) => Date;\n addMonths: (date: Date, months: number) => Date;\n addYears: (date: Date, years: number) => Date;\n format: (date: Date, format: string) => string;\n subDays: (date: Date, days: number) => Date;\n subMonths: (date: Date, months: number) => Date;\n subYears: (date: Date, years: number) => Date;\n startOfMonth: (date: Date) => Date;\n endOfMonth: (date: Date) => Date;\n startOfYear: (date: Date) => Date;\n endOfYear: (date: Date) => Date;\n isBefore: (date: Date, other: Date) => boolean;\n isAfter: (date: Date, other: Date) => boolean;\n}\n\nexport const create = (parameters: { timezone: string }) => {\n const { timezone } = parameters;\n\n const now = () => {\n return date(undefined);\n }\n\n const date = (date: string | number | Date | null | undefined) => {\n let value: dayjs.Dayjs;\n if (date) {\n value = dayjs.tz(date, timezone);\n } else {\n value = dayjs().tz(timezone);\n }\n\n if (!value.isValid()) {\n throw new Error(`Invalid date: ${date}`);\n }\n\n return value.toDate();\n }\n\n const parse = (date: string | number | Date | null | undefined, format: string) => {\n const value = dayjs.tz(date, format, timezone);\n if (!value.isValid()) {\n throw new Error(`Invalid date: ${date}, expected format: ${format}`);\n }\n\n return value.toDate();\n }\n\n const addDays = (date: Date, days: number) => {\n return dayjs.tz(date, timezone).add(days, 'day').toDate();\n }\n\n const addMonths = (date: Date, months: number) => {\n return dayjs.tz(date, timezone).add(months, 'month').toDate();\n }\n\n const addYears = (date: Date, years: number) => {\n return dayjs.tz(date, timezone).add(years, 'year').toDate();\n }\n\n const format = (date: Date, format: string) => {\n return dayjs.tz(date, timezone).format(format);\n }\n\n const subDays = (date: Date, days: number) => {\n return dayjs.tz(date, timezone).subtract(days, 'day').toDate();\n }\n\n const subMonths = (date: Date, months: number) => {\n return dayjs.tz(date, timezone).subtract(months, 'month').toDate();\n }\n\n const subYears = (date: Date, years: number) => {\n return dayjs.tz(date, timezone).subtract(years, 'year').toDate();\n }\n\n const startOfMonth = (date: Date) => {\n return dayjs.tz(date, timezone).startOf('month').toDate();\n }\n\n const endOfMonth = (date: Date) => {\n return dayjs.tz(date, timezone).endOf('month').toDate();\n }\n\n const startOfYear = (date: Date) => {\n return dayjs.tz(date, timezone).startOf('year').toDate();\n }\n\n const endOfYear = (date: Date) => {\n return dayjs.tz(date, timezone).endOf('year').toDate();\n }\n\n const isBefore = (date: Date, other: Date) => {\n return dayjs.tz(date, timezone).isBefore(dayjs.tz(other, timezone));\n }\n\n const isAfter = (date: Date, other: Date) => {\n return dayjs.tz(date, timezone).isAfter(dayjs.tz(other, timezone));\n }\n\n return { now, date, parse, addDays, addMonths, addYears, format, subDays, subMonths, subYears, startOfMonth, endOfMonth, startOfYear, endOfYear, isBefore, isAfter };\n}\n\nexport const validTimezones = () => {\n return moment.tz.names();\n}\n","/**\n * General utility functions\n */\n\n// Utility function for deep merging two objects.\nexport function deepMerge(target: any, source: any): any {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue; // Skip prototype-polluting keys\n }\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n if (!target[key]) {\n target[key] = {};\n }\n deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\n\n// Recursive implementation of JSON.stringify\nexport const stringifyJSON = function (obj: any, options: { depth: number } = { depth: 0 }): string {\n\n if (options.depth > 10) {\n return '{\"error\": \"Maximum depth reached\"}';\n }\n\n const arrOfKeyVals: string[] = [];\n const arrVals: string[] = [];\n let objKeys: string[] = [];\n\n /*********CHECK FOR PRIMITIVE TYPES**********/\n if (typeof obj === 'number' || typeof obj === 'boolean' || obj === null)\n return '' + obj;\n else if (typeof obj === 'string')\n return '\"' + obj + '\"';\n\n /*********CHECK FOR ARRAY**********/\n else if (Array.isArray(obj)) {\n //check for empty array\n if (obj[0] === undefined)\n return '[]';\n else {\n obj.forEach(function (el) {\n arrVals.push(stringifyJSON(el, { depth: options.depth + 1 }));\n });\n return '[' + arrVals + ']';\n }\n }\n /*********CHECK FOR OBJECT**********/\n else if (obj instanceof Object) {\n //get object keys\n objKeys = Object.keys(obj);\n //set key output;\n objKeys.forEach(function (key) {\n const keyOut = '\"' + key + '\":';\n const keyValOut = obj[key];\n //skip functions and undefined properties\n if (keyValOut instanceof Function || keyValOut === undefined)\n arrOfKeyVals.push('');\n else if (typeof keyValOut === 'string')\n arrOfKeyVals.push(keyOut + '\"' + keyValOut + '\"');\n else if (typeof keyValOut === 'boolean' || typeof keyValOut === 'number' || keyValOut === null)\n arrOfKeyVals.push(keyOut + keyValOut);\n //check for nested objects, call recursively until no more objects\n else if (keyValOut instanceof Object) {\n arrOfKeyVals.push(keyOut + stringifyJSON(keyValOut, { depth: options.depth + 1 }));\n }\n });\n return '{' + arrOfKeyVals + '}';\n }\n return '';\n};\n\n// Version increment functions\nexport const incrementPatchVersion = (version: string): string => {\n // Remove 'v' prefix if present\n const cleanVersion = version.startsWith('v') ? version.slice(1) : version;\n\n // Split into major.minor.patch and handle pre-release identifiers\n const parts = cleanVersion.split('.');\n if (parts.length < 3) {\n throw new Error(`Invalid version string: ${version}`);\n }\n\n // Handle pre-release versions like \"4.6.24-dev.0\"\n // Split the patch part on '-' to separate patch number from pre-release\n const patchPart = parts[2];\n let patchNumber: number;\n\n if (patchPart.startsWith('-')) {\n // Handle negative patch numbers like \"-1\" or \"-5\" or \"-1-dev.0\"\n const negativeComponents = patchPart.split('-');\n if (negativeComponents.length === 2) {\n // \"-1\" format\n patchNumber = parseInt(negativeComponents[1]);\n } else if (negativeComponents.length > 2) {\n // \"-1-dev.0\" format - take the number after first dash\n patchNumber = parseInt(negativeComponents[1]);\n } else {\n throw new Error(`Invalid version string: ${version}`);\n }\n } else if (patchPart.includes('-')) {\n // Normal case with possible prerelease: \"24-dev.0\" or \"24\"\n const patchComponents = patchPart.split('-');\n patchNumber = parseInt(patchComponents[0]);\n } else {\n // Simple patch number: \"24\"\n patchNumber = parseInt(patchPart);\n }\n\n if (isNaN(patchNumber)) {\n throw new Error(`Invalid patch number in version: ${version}`);\n }\n\n const incrementedPatch = patchNumber + 1;\n return `${parts[0]}.${parts[1]}.${incrementedPatch}`;\n};\n\nexport const incrementMinorVersion = (version: string): string => {\n // Remove 'v' prefix if present\n const cleanVersion = version.startsWith('v') ? version.slice(1) : version;\n\n const parts = cleanVersion.split('.');\n if (parts.length < 3) {\n throw new Error(`Invalid version string: ${version}`);\n }\n\n const major = parts[0];\n const minor = parseInt(parts[1]);\n if (isNaN(minor)) {\n throw new Error(`Invalid minor version in: ${version}`);\n }\n\n return `${major}.${minor + 1}.0`;\n};\n\nexport const incrementMajorVersion = (version: string): string => {\n // Remove 'v' prefix if present\n const cleanVersion = version.startsWith('v') ? version.slice(1) : version;\n\n const parts = cleanVersion.split('.');\n if (parts.length < 3) {\n throw new Error(`Invalid version string: ${version}`);\n }\n\n const major = parseInt(parts[0]);\n if (isNaN(major)) {\n throw new Error(`Invalid major version in: ${version}`);\n }\n\n return `${major + 1}.0.0`;\n};\n\nexport const validateVersionString = (version: string): boolean => {\n // Simple validation: x.y.z format (with optional v prefix)\n const cleanVersion = version.startsWith('v') ? version.slice(1) : version;\n return /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$/.test(cleanVersion);\n};\n\nexport const calculateTargetVersion = (currentVersion: string, targetVersion: string): string => {\n switch (targetVersion) {\n case 'patch':\n return incrementPatchVersion(currentVersion);\n case 'minor':\n return incrementMinorVersion(currentVersion);\n case 'major':\n return incrementMajorVersion(currentVersion);\n default:\n // Explicit version provided\n if (!validateVersionString(targetVersion)) {\n throw new Error(`Invalid version format: ${targetVersion}. Expected format: \"x.y.z\" or one of: \"patch\", \"minor\", \"major\"`);\n }\n return targetVersion.startsWith('v') ? targetVersion.slice(1) : targetVersion;\n }\n};\n\nexport const incrementPrereleaseVersion = (version: string, tag: string): string => {\n const cleanVersion = version.startsWith('v') ? version.slice(1) : version;\n\n // Split on dots but only use first 3 parts for major.minor.patch\n // This handles cases like \"1.2.3-dev.5\" correctly\n const dotParts = cleanVersion.split('.');\n if (dotParts.length < 3) {\n throw new Error(`Invalid version string: ${version}`);\n }\n\n const major = dotParts[0];\n const minor = dotParts[1];\n\n // Reconstruct the patch part - everything after the second dot\n const patchAndPrerelease = dotParts.slice(2).join('.');\n const patchComponents = patchAndPrerelease.split('-');\n const patchNumber = patchComponents[0];\n\n if (patchComponents.length > 1) {\n // Already has prerelease (e.g., \"3-dev.0\" or \"3-test.2\")\n const prereleaseString = patchComponents.slice(1).join('-'); // Handle multiple dashes\n const prereleaseComponents = prereleaseString.split('.');\n const existingTag = prereleaseComponents[0];\n const existingPrereleaseVersion = prereleaseComponents[1];\n\n if (existingTag === tag) {\n // Same tag, increment the prerelease version\n const prereleaseNumber = parseInt(existingPrereleaseVersion) || 0;\n return `${major}.${minor}.${patchNumber}-${tag}.${prereleaseNumber + 1}`;\n } else {\n // Different tag, start at 0\n return `${major}.${minor}.${patchNumber}-${tag}.0`;\n }\n } else {\n // No prerelease yet, add it\n return `${major}.${minor}.${patchNumber}-${tag}.0`;\n }\n};\n\nexport const convertToReleaseVersion = (version: string): string => {\n const cleanVersion = version.startsWith('v') ? version.slice(1) : version;\n\n // Split on dots but only use first 3 parts for major.minor.patch\n const dotParts = cleanVersion.split('.');\n if (dotParts.length < 3) {\n throw new Error(`Invalid version string: ${version}`);\n }\n\n const major = dotParts[0];\n const minor = dotParts[1];\n\n // Reconstruct the patch part - everything after the second dot\n const patchAndPrerelease = dotParts.slice(2).join('.');\n const patchComponents = patchAndPrerelease.split('-');\n const patchNumber = patchComponents[0];\n\n return `${major}.${minor}.${patchNumber}`;\n};\n\n// Async utility functions\nexport const sleep = (ms: number): Promise<void> => {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n\nexport const retryWithBackoff = async <T>(\n fn: () => Promise<T>,\n maxRetries: number = 3,\n initialDelay: number = 1000\n): Promise<T> => {\n let lastError: Error | undefined;\n\n for (let i = 0; i < maxRetries; i++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error as Error;\n if (i < maxRetries - 1) {\n const delay = initialDelay * Math.pow(2, i);\n await sleep(delay);\n }\n }\n }\n\n throw lastError || new Error('Retry failed');\n};\n\n// Array utilities\nexport const uniqueArray = <T>(array: T[]): T[] => {\n return Array.from(new Set(array));\n};\n\nexport const groupBy = <T>(array: T[], key: keyof T): Record<string, T[]> => {\n return array.reduce((result, item) => {\n const groupKey = String(item[key]);\n if (!result[groupKey]) {\n result[groupKey] = [];\n }\n result[groupKey].push(item);\n return result;\n }, {} as Record<string, T[]>);\n};\n\n// String utilities\nexport const truncateString = (str: string, maxLength: number, suffix: string = '...'): string => {\n if (str.length <= maxLength) {\n return str;\n }\n return str.substring(0, maxLength - suffix.length) + suffix;\n};\n\n// JSON utilities\nexport const safeJsonParse = <T = any>(jsonString: string, fallback?: T): T | null => {\n try {\n return JSON.parse(jsonString);\n } catch {\n return fallback !== undefined ? fallback : null;\n }\n};\n","import path from 'path';\nimport { getLogger } from './logger';\nimport { safeJsonParse, validatePackageJson } from '@eldrforge/git-tools';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface PackageJsonLocation {\n path: string;\n packageJson: PackageJson;\n relativePath: string;\n}\n\ninterface FileDependencyIssue {\n packagePath: string;\n dependencies: Array<{\n name: string;\n version: string;\n dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies';\n }>;\n}\n\nconst EXCLUDED_DIRECTORIES = [\n 'node_modules',\n 'dist',\n 'build',\n 'coverage',\n '.git',\n '.next',\n '.nuxt',\n 'out',\n 'public',\n 'static',\n 'assets'\n];\n\nconst findAllPackageJsonFiles = async (rootDir: string, storage: any): Promise<PackageJsonLocation[]> => {\n const logger = getLogger();\n const packageJsonFiles: PackageJsonLocation[] = [];\n\n const scanDirectory = async (currentDir: string, depth: number = 0): Promise<void> => {\n // Prevent infinite recursion and overly deep scanning\n if (depth > 5) {\n return;\n }\n\n try {\n if (!await storage.exists(currentDir) || !await storage.isDirectory(currentDir)) {\n return;\n }\n\n const items = await storage.listFiles(currentDir);\n\n // Check for package.json in current directory\n if (items.includes('package.json')) {\n const packageJsonPath = path.join(currentDir, 'package.json');\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const parsed = safeJsonParse(packageJsonContent, packageJsonPath);\n const packageJson = validatePackageJson(parsed, packageJsonPath);\n const relativePath = path.relative(rootDir, currentDir);\n\n packageJsonFiles.push({\n path: packageJsonPath,\n packageJson,\n relativePath: relativePath || '.'\n });\n\n logger.debug(`Found package.json at: ${relativePath || '.'}`);\n } catch (error: any) {\n logger.debug(`Skipped invalid package.json at ${packageJsonPath}: ${error.message}`);\n }\n }\n\n // Scan subdirectories, excluding build/generated directories\n for (const item of items) {\n if (EXCLUDED_DIRECTORIES.includes(item)) {\n continue;\n }\n\n const itemPath = path.join(currentDir, item);\n try {\n if (await storage.isDirectory(itemPath)) {\n await scanDirectory(itemPath, depth + 1);\n }\n } catch (error: any) {\n // Skip directories that can't be accessed\n logger.debug(`Skipped directory ${itemPath}: ${error.message}`);\n continue;\n }\n }\n } catch (error: any) {\n logger.debug(`Failed to scan directory ${currentDir}: ${error.message}`);\n }\n };\n\n await scanDirectory(rootDir);\n\n logger.debug(`Found ${packageJsonFiles.length} package.json file(s) in directory tree`);\n return packageJsonFiles;\n};\n\n/**\n * Checks for file: dependencies in package.json files that should not be committed\n * @param storage Storage utility instance\n * @param rootDir Root directory to scan (defaults to current working directory)\n * @returns Array of issues found, empty array if no issues\n */\nexport const checkForFileDependencies = async (storage: any, rootDir: string = process.cwd()): Promise<FileDependencyIssue[]> => {\n const logger = getLogger();\n const issues: FileDependencyIssue[] = [];\n\n try {\n const packageJsonFiles = await findAllPackageJsonFiles(rootDir, storage);\n\n for (const { packageJson, relativePath } of packageJsonFiles) {\n const fileDeps: Array<{name: string, version: string, dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies'}> = [];\n\n // Check all dependency types for file: paths\n const dependencyChecks = [\n { deps: packageJson.dependencies, type: 'dependencies' as const },\n { deps: packageJson.devDependencies, type: 'devDependencies' as const },\n { deps: packageJson.peerDependencies, type: 'peerDependencies' as const }\n ];\n\n for (const { deps, type } of dependencyChecks) {\n if (deps) {\n for (const [name, version] of Object.entries(deps)) {\n if (version.startsWith('file:')) {\n fileDeps.push({ name, version, dependencyType: type });\n }\n }\n }\n }\n\n if (fileDeps.length > 0) {\n issues.push({\n packagePath: relativePath,\n dependencies: fileDeps\n });\n }\n }\n } catch (error: any) {\n logger.debug(`Failed to check for file dependencies: ${error.message}`);\n }\n\n return issues;\n};\n\n/**\n * Logs file dependency issues in a user-friendly format\n * @param issues Array of file dependency issues\n * @param context Context for the warning (e.g., 'commit', 'link check')\n */\nexport const logFileDependencyWarning = (issues: FileDependencyIssue[], context: string = 'operation'): void => {\n const logger = getLogger();\n\n if (issues.length === 0) {\n return;\n }\n\n logger.warn(`FILE_DEPS_WARNING: Found file: dependencies that should not be committed | Context: ${context} | Count: ${issues.length} | Impact: May cause build issues`);\n for (const issue of issues) {\n logger.warn(`FILE_DEPS_PACKAGE: Package with file dependencies | Package: ${issue.packagePath}`);\n for (const dep of issue.dependencies) {\n logger.warn(`FILE_DEPS_DETAIL: Dependency details | Name: ${dep.name} | Version: ${dep.version} | Type: ${dep.dependencyType}`);\n }\n }\n logger.warn('');\n};\n\n/**\n * Provides suggestions for resolving file dependency issues\n * @param hasUnlinkCapability Whether the current context supports unlinking\n */\nexport const logFileDependencySuggestions = (hasUnlinkCapability: boolean = true): void => {\n const logger = getLogger();\n\n logger.warn('FILE_DEPS_RESOLUTION: Steps to resolve file dependency issues:');\n if (hasUnlinkCapability) {\n logger.warn(' STEP_1: Restore registry versions | Command: kodrdriv unlink');\n logger.warn(' STEP_2: Complete commit operation | Command: git commit');\n logger.warn(' STEP_3: Restore local development links | Command: kodrdriv link');\n } else {\n logger.warn(' STEP_1: Manually restore registry versions in package.json files');\n logger.warn(' STEP_2: Complete commit operation | Command: git commit');\n logger.warn(' STEP_3: Re-link local dependencies for development');\n }\n logger.warn('');\n logger.warn('FILE_DEPS_BYPASS: Alternative bypass options:');\n logger.warn(' OPTION_1: Skip file check | Flag: --skip-file-check');\n logger.warn(' OPTION_2: Skip all hooks | Command: git commit --no-verify');\n logger.warn('');\n};\n","/**\n * Runtime validation utilities for safe type handling\n */\n\nimport type { ValidationResult } from './types';\n\n/**\n * Generic validation function that validates data against a schema\n * @param data Data to validate\n * @param schema Validation schema (can be a Zod schema or custom validator)\n * @returns ValidationResult with success status and either data or error\n */\nexport const validate = <T>(\n data: unknown,\n schema: { parse: (data: unknown) => T }\n): ValidationResult<T> => {\n try {\n const validated = schema.parse(data);\n return { success: true, data: validated };\n } catch (error) {\n return { success: false, error: String(error) };\n }\n};\n\n/**\n * Validates that a value is a string\n */\nexport const validateString = (value: unknown, fieldName: string = 'value'): string => {\n if (typeof value !== 'string') {\n throw new Error(`${fieldName} must be a string`);\n }\n return value;\n};\n\n/**\n * Validates that a value is a number\n */\nexport const validateNumber = (value: unknown, fieldName: string = 'value'): number => {\n if (typeof value !== 'number' || isNaN(value)) {\n throw new Error(`${fieldName} must be a valid number`);\n }\n return value;\n};\n\n/**\n * Validates that a value is a boolean\n */\nexport const validateBoolean = (value: unknown, fieldName: string = 'value'): boolean => {\n if (typeof value !== 'boolean') {\n throw new Error(`${fieldName} must be a boolean`);\n }\n return value;\n};\n\n/**\n * Validates that a value is an array\n */\nexport const validateArray = <T>(value: unknown, fieldName: string = 'value'): T[] => {\n if (!Array.isArray(value)) {\n throw new Error(`${fieldName} must be an array`);\n }\n return value;\n};\n\n/**\n * Validates that a value is an object (and not null or array)\n */\nexport const validateObject = (value: unknown, fieldName: string = 'value'): Record<string, any> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(`${fieldName} must be an object`);\n }\n return value as Record<string, any>;\n};\n\n/**\n * Validates that a string is not empty\n */\nexport const validateNonEmptyString = (value: unknown, fieldName: string = 'value'): string => {\n const str = validateString(value, fieldName);\n if (str.trim().length === 0) {\n throw new Error(`${fieldName} must not be empty`);\n }\n return str;\n};\n\n/**\n * Validates that a value is one of the allowed values\n */\nexport const validateEnum = <T>(\n value: unknown,\n allowedValues: readonly T[],\n fieldName: string = 'value'\n): T => {\n if (!allowedValues.includes(value as T)) {\n throw new Error(\n `${fieldName} must be one of: ${allowedValues.join(', ')}. Got: ${value}`\n );\n }\n return value as T;\n};\n"],"names":["logger","setLogger","newLogger","getLogger","error","message","args","console","warn","info","log","debug","ArgumentError","Error","argument","argumentName","_define_property","name","CancellationError","CommandError","code","recoverable","cause","originalCause","ConfigurationError","ValidationError","UserCancellationError","ExternalDependencyError","dependency","FileOperationError","filePath","PullRequestCheckError","getRecoveryInstructions","instructions","branchName","currentBranch","testFailures","failedChecks","filter","check","toLowerCase","includes","output","title","lintFailures","buildFailures","push","length","prNumber","prUrl","ExitError","create","exists","path","fs","promises","stat","isDirectory","stats","isFile","isReadable","access","constants","R_OK","isWritable","W_OK","isFileReadable","isDirectoryWritable","isDirectoryReadable","createDirectory","mkdir","recursive","mkdirError","stack","ensureDirectory","pathParts","split","p","currentPath","part","removeDirectory","rm","force","rmError","readFile","encoding","writeFile","data","rename","oldPath","newPath","deleteFile","unlink","deleteError","forEachFileIn","directory","callback","options","pattern","files","glob","cwd","nodir","file","join","err","readStream","createReadStream","hashFile","crypto","createHash","update","digest","slice","listFiles","readdir","readStdin","process","env","NODE_ENV","VITEST","Promise","resolve","input","hasData","resolved","timeout","setTimeout","cleanup","onData","chunk","clearTimeout","onEnd","trim","onError","stdin","removeListener","pause","setEncoding","on","resume","isTTY","promptConfirmation","stdout","write","handleInput","toString","dayjs","extend","utc","timezone","parameters","now","date","undefined","value","tz","isValid","toDate","parse","format","addDays","days","add","addMonths","months","addYears","years","subDays","subtract","subMonths","subYears","startOfMonth","startOf","endOfMonth","endOf","startOfYear","endOfYear","isBefore","other","isAfter","validTimezones","moment","names","deepMerge","target","source","key","Object","prototype","hasOwnProperty","call","Array","isArray","stringifyJSON","obj","depth","arrOfKeyVals","arrVals","objKeys","forEach","el","keys","keyOut","keyValOut","Function","incrementPatchVersion","version","cleanVersion","startsWith","parts","patchPart","patchNumber","negativeComponents","parseInt","patchComponents","isNaN","incrementedPatch","incrementMinorVersion","major","minor","incrementMajorVersion","validateVersionString","test","calculateTargetVersion","currentVersion","targetVersion","incrementPrereleaseVersion","tag","dotParts","patchAndPrerelease","prereleaseString","prereleaseComponents","existingTag","existingPrereleaseVersion","prereleaseNumber","convertToReleaseVersion","sleep","ms","retryWithBackoff","fn","maxRetries","initialDelay","lastError","i","delay","Math","pow","uniqueArray","array","from","Set","groupBy","reduce","result","item","groupKey","String","truncateString","str","maxLength","suffix","substring","safeJsonParse","jsonString","fallback","JSON","EXCLUDED_DIRECTORIES","findAllPackageJsonFiles","rootDir","storage","packageJsonFiles","scanDirectory","currentDir","items","packageJsonPath","packageJsonContent","parsed","packageJson","validatePackageJson","relativePath","relative","itemPath","checkForFileDependencies","issues","fileDeps","dependencyChecks","deps","dependencies","type","devDependencies","peerDependencies","entries","dependencyType","packagePath","logFileDependencyWarning","context","issue","dep","logFileDependencySuggestions","hasUnlinkCapability","validate","schema","validated","success","validateString","fieldName","validateNumber","validateBoolean","validateArray","validateObject","validateNonEmptyString","validateEnum","allowedValues"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Yes, wrapping dayjs is a bit annoying and might seem overly paranoid. However, I feel strongly
|
|
3
|
+
* about not letting Dayjs instances leak into the rest of the codebase. Having Dayjs objects
|
|
4
|
+
* floating around the application leads to inconsistent timezone handling, makes testing more
|
|
5
|
+
* difficult, and creates subtle bugs that are hard to track down.
|
|
6
|
+
*
|
|
7
|
+
* By wrapping dayjs completely and only exposing plain JavaScript Date objects, we get several
|
|
8
|
+
* key benefits:
|
|
9
|
+
* 1. Consistent timezone handling through a single configuration point
|
|
10
|
+
* 2. Simpler testing since we only need to mock this one library
|
|
11
|
+
* 3. Type safety - the rest of the codebase only deals with standard Date objects
|
|
12
|
+
* 4. No risk of dayjs method chains creating unexpected timezone shifts
|
|
13
|
+
*
|
|
14
|
+
* The Library interface gives us full control over all date operations while keeping the messy
|
|
15
|
+
* details of timezone manipulation contained in one place. Yes it's more code, but the peace of
|
|
16
|
+
* mind is worth it.
|
|
17
|
+
*/
|
|
18
|
+
export interface Utility {
|
|
19
|
+
now: () => Date;
|
|
20
|
+
date: (date: string | number | Date | null | undefined) => Date;
|
|
21
|
+
parse: (date: string | number | Date | null | undefined, format: string) => Date;
|
|
22
|
+
addDays: (date: Date, days: number) => Date;
|
|
23
|
+
addMonths: (date: Date, months: number) => Date;
|
|
24
|
+
addYears: (date: Date, years: number) => Date;
|
|
25
|
+
format: (date: Date, format: string) => string;
|
|
26
|
+
subDays: (date: Date, days: number) => Date;
|
|
27
|
+
subMonths: (date: Date, months: number) => Date;
|
|
28
|
+
subYears: (date: Date, years: number) => Date;
|
|
29
|
+
startOfMonth: (date: Date) => Date;
|
|
30
|
+
endOfMonth: (date: Date) => Date;
|
|
31
|
+
startOfYear: (date: Date) => Date;
|
|
32
|
+
endOfYear: (date: Date) => Date;
|
|
33
|
+
isBefore: (date: Date, other: Date) => boolean;
|
|
34
|
+
isAfter: (date: Date, other: Date) => boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare const create: (parameters: {
|
|
37
|
+
timezone: string;
|
|
38
|
+
}) => {
|
|
39
|
+
now: () => Date;
|
|
40
|
+
date: (date: string | number | Date | null | undefined) => Date;
|
|
41
|
+
parse: (date: string | number | Date | null | undefined, format: string) => Date;
|
|
42
|
+
addDays: (date: Date, days: number) => Date;
|
|
43
|
+
addMonths: (date: Date, months: number) => Date;
|
|
44
|
+
addYears: (date: Date, years: number) => Date;
|
|
45
|
+
format: (date: Date, format: string) => string;
|
|
46
|
+
subDays: (date: Date, days: number) => Date;
|
|
47
|
+
subMonths: (date: Date, months: number) => Date;
|
|
48
|
+
subYears: (date: Date, years: number) => Date;
|
|
49
|
+
startOfMonth: (date: Date) => Date;
|
|
50
|
+
endOfMonth: (date: Date) => Date;
|
|
51
|
+
startOfYear: (date: Date) => Date;
|
|
52
|
+
endOfYear: (date: Date) => Date;
|
|
53
|
+
isBefore: (date: Date, other: Date) => boolean;
|
|
54
|
+
isAfter: (date: Date, other: Date) => boolean;
|
|
55
|
+
};
|
|
56
|
+
export declare const validTimezones: () => string[];
|
|
57
|
+
//# sourceMappingURL=dates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../src/dates.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,OAAO;IACpB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjF,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;CACjD;AAED,eAAO,MAAM,MAAM,GAAI,YAAY;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE;;iBAO/B,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS;kBAexC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,UAAU,MAAM;oBASvD,IAAI,QAAQ,MAAM;sBAIhB,IAAI,UAAU,MAAM;qBAIrB,IAAI,SAAS,MAAM;mBAIrB,IAAI,UAAU,MAAM;oBAInB,IAAI,QAAQ,MAAM;sBAIhB,IAAI,UAAU,MAAM;qBAIrB,IAAI,SAAS,MAAM;yBAIf,IAAI;uBAIN,IAAI;wBAIH,IAAI;sBAIN,IAAI;qBAIL,IAAI,SAAS,IAAI;oBAIlB,IAAI,SAAS,IAAI;CAK3C,CAAA;AAED,eAAO,MAAM,cAAc,gBAE1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArgumentError.d.ts","sourceRoot":"","sources":["../../../src/errors/ArgumentError.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;IACpC,OAAO,CAAC,YAAY,CAAS;gBACjB,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMjD,IAAI,QAAQ,IAAI,MAAM,CAErB;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CancellationError.d.ts","sourceRoot":"","sources":["../../../src/errors/CancellationError.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI9B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for all command-related errors
|
|
3
|
+
*/
|
|
4
|
+
export declare class CommandError extends Error {
|
|
5
|
+
readonly code: string;
|
|
6
|
+
readonly recoverable: boolean;
|
|
7
|
+
readonly originalCause?: Error;
|
|
8
|
+
constructor(message: string, code: string, recoverable?: boolean, cause?: Error);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Configuration-related errors (missing config, invalid settings, etc.)
|
|
12
|
+
*/
|
|
13
|
+
export declare class ConfigurationError extends CommandError {
|
|
14
|
+
constructor(message: string, cause?: Error);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Validation errors (invalid arguments, missing required data, etc.)
|
|
18
|
+
*/
|
|
19
|
+
export declare class ValidationError extends CommandError {
|
|
20
|
+
constructor(message: string, cause?: Error);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* User cancellation errors (user cancelled operation)
|
|
24
|
+
*/
|
|
25
|
+
export declare class UserCancellationError extends CommandError {
|
|
26
|
+
constructor(message?: string);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* External dependency errors (Git, NPM, file system, etc.)
|
|
30
|
+
*/
|
|
31
|
+
export declare class ExternalDependencyError extends CommandError {
|
|
32
|
+
constructor(message: string, dependency: string, cause?: Error);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* File operation errors (read, write, permissions, etc.)
|
|
36
|
+
*/
|
|
37
|
+
export declare class FileOperationError extends CommandError {
|
|
38
|
+
constructor(message: string, filePath: string, cause?: Error);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pull request check failures with detailed information
|
|
42
|
+
*/
|
|
43
|
+
export declare class PullRequestCheckError extends CommandError {
|
|
44
|
+
readonly prNumber: number;
|
|
45
|
+
readonly failedChecks: Array<{
|
|
46
|
+
name: string;
|
|
47
|
+
conclusion: string;
|
|
48
|
+
detailsUrl?: string;
|
|
49
|
+
summary?: string;
|
|
50
|
+
output?: {
|
|
51
|
+
title?: string;
|
|
52
|
+
summary?: string;
|
|
53
|
+
text?: string;
|
|
54
|
+
};
|
|
55
|
+
}>;
|
|
56
|
+
readonly prUrl: string;
|
|
57
|
+
readonly currentBranch?: string | undefined;
|
|
58
|
+
constructor(message: string, prNumber: number, failedChecks: Array<{
|
|
59
|
+
name: string;
|
|
60
|
+
conclusion: string;
|
|
61
|
+
detailsUrl?: string;
|
|
62
|
+
summary?: string;
|
|
63
|
+
output?: {
|
|
64
|
+
title?: string;
|
|
65
|
+
summary?: string;
|
|
66
|
+
text?: string;
|
|
67
|
+
};
|
|
68
|
+
}>, prUrl: string, currentBranch?: string | undefined);
|
|
69
|
+
/**
|
|
70
|
+
* Get specific instructions based on the type of failures
|
|
71
|
+
*/
|
|
72
|
+
getRecoveryInstructions(): string[];
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=CommandErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandErrors.d.ts","sourceRoot":"","sources":["../../../src/errors/CommandErrors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACnC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,WAAW,EAAE,OAAO,CAAC;IACrC,SAAgB,aAAa,CAAC,EAAE,KAAK,CAAC;gBAGlC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,OAAe,EAC5B,KAAK,CAAC,EAAE,KAAK;CAYpB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;gBACpC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI7C;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;gBACjC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI7C;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;gBACvC,OAAO,GAAE,MAAsC;CAI9D;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;gBACzC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAIjE;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;gBACpC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI/D;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;aAG/B,QAAQ,EAAE,MAAM;aAChB,YAAY,EAAE,KAAK,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE;YACL,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,IAAI,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACL,CAAC;aACc,KAAK,EAAE,MAAM;aACb,aAAa,CAAC,EAAE,MAAM;gBAdtC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,KAAK,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE;YACL,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,IAAI,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACL,CAAC,EACc,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,YAAA;IAM1C;;OAEG;IACH,uBAAuB,IAAI,MAAM,EAAE;CAmEtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExitError.d.ts","sourceRoot":"","sources":["../../../src/errors/ExitError.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI9B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error types for @eldrforge packages
|
|
3
|
+
*/
|
|
4
|
+
export { ArgumentError } from './ArgumentError';
|
|
5
|
+
export { CancellationError } from './CancellationError';
|
|
6
|
+
export { CommandError, ConfigurationError, ValidationError, UserCancellationError, ExternalDependencyError, FileOperationError, PullRequestCheckError } from './CommandErrors';
|
|
7
|
+
export { ExitError } from './ExitError';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* General utility functions
|
|
3
|
+
*/
|
|
4
|
+
export declare function deepMerge(target: any, source: any): any;
|
|
5
|
+
export declare const stringifyJSON: (obj: any, options?: {
|
|
6
|
+
depth: number;
|
|
7
|
+
}) => string;
|
|
8
|
+
export declare const incrementPatchVersion: (version: string) => string;
|
|
9
|
+
export declare const incrementMinorVersion: (version: string) => string;
|
|
10
|
+
export declare const incrementMajorVersion: (version: string) => string;
|
|
11
|
+
export declare const validateVersionString: (version: string) => boolean;
|
|
12
|
+
export declare const calculateTargetVersion: (currentVersion: string, targetVersion: string) => string;
|
|
13
|
+
export declare const incrementPrereleaseVersion: (version: string, tag: string) => string;
|
|
14
|
+
export declare const convertToReleaseVersion: (version: string) => string;
|
|
15
|
+
export declare const sleep: (ms: number) => Promise<void>;
|
|
16
|
+
export declare const retryWithBackoff: <T>(fn: () => Promise<T>, maxRetries?: number, initialDelay?: number) => Promise<T>;
|
|
17
|
+
export declare const uniqueArray: <T>(array: T[]) => T[];
|
|
18
|
+
export declare const groupBy: <T>(array: T[], key: keyof T) => Record<string, T[]>;
|
|
19
|
+
export declare const truncateString: (str: string, maxLength: number, suffix?: string) => string;
|
|
20
|
+
export declare const safeJsonParse: <T = any>(jsonString: string, fallback?: T) => T | null;
|
|
21
|
+
//# sourceMappingURL=general.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/general.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAiBvD;AAGD,eAAO,MAAM,aAAa,GAAa,KAAK,GAAG,EAAE,UAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAiB,KAAG,MAmD5F,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MA0CvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MAgBvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MAevD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,OAIvD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,gBAAgB,MAAM,EAAE,eAAe,MAAM,KAAG,MAetF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,SAAS,MAAM,EAAE,KAAK,MAAM,KAAG,MAqCzE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,KAAG,MAkBzD,CAAC;AAGF,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CAE9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,CAAC,EACpC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,aAAY,MAAU,EACtB,eAAc,MAAa,KAC5B,OAAO,CAAC,CAAC,CAgBX,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,KAAG,CAAC,EAE5C,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CASvE,CAAC;AAGF,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,EAAE,SAAQ,MAAc,KAAG,MAKvF,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,CAAC,GAAG,GAAG,EAAE,YAAY,MAAM,EAAE,WAAW,CAAC,KAAG,CAAC,GAAG,IAM7E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @eldrforge/shared
|
|
3
|
+
* Shared utilities for Eldrforge tools
|
|
4
|
+
*/
|
|
5
|
+
export * from './types';
|
|
6
|
+
export { setLogger, getLogger } from './logger';
|
|
7
|
+
export * from './errors';
|
|
8
|
+
export { create as createStorage } from './storage';
|
|
9
|
+
export type { Utility as StorageUtility } from './storage';
|
|
10
|
+
export { readStdin, promptConfirmation } from './stdin';
|
|
11
|
+
export { create as createDateUtility, validTimezones } from './dates';
|
|
12
|
+
export type { Utility as DateUtility } from './dates';
|
|
13
|
+
export { deepMerge, stringifyJSON, incrementPatchVersion, incrementMinorVersion, incrementMajorVersion, validateVersionString, calculateTargetVersion, incrementPrereleaseVersion, convertToReleaseVersion, sleep, retryWithBackoff, uniqueArray, groupBy, truncateString, safeJsonParse } from './general';
|
|
14
|
+
export { checkForFileDependencies, logFileDependencyWarning, logFileDependencySuggestions } from './safety';
|
|
15
|
+
export { validate, validateString, validateNumber, validateBoolean, validateArray, validateObject, validateNonEmptyString, validateEnum } from './validation';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGhD,cAAc,UAAU,CAAC;AAGzB,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACpD,YAAY,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGxD,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACtE,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,EACH,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,cAAc,EACd,aAAa,EAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACH,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC/B,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,QAAQ,EACR,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,YAAY,EACf,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Logger } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Set the logger instance
|
|
4
|
+
*/
|
|
5
|
+
export declare function setLogger(newLogger: Logger): void;
|
|
6
|
+
/**
|
|
7
|
+
* Get the current logger or create a console fallback
|
|
8
|
+
*/
|
|
9
|
+
export declare function getLogger(): Logger;
|
|
10
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAclC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface FileDependencyIssue {
|
|
2
|
+
packagePath: string;
|
|
3
|
+
dependencies: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
version: string;
|
|
6
|
+
dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies';
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Checks for file: dependencies in package.json files that should not be committed
|
|
11
|
+
* @param storage Storage utility instance
|
|
12
|
+
* @param rootDir Root directory to scan (defaults to current working directory)
|
|
13
|
+
* @returns Array of issues found, empty array if no issues
|
|
14
|
+
*/
|
|
15
|
+
export declare const checkForFileDependencies: (storage: any, rootDir?: string) => Promise<FileDependencyIssue[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Logs file dependency issues in a user-friendly format
|
|
18
|
+
* @param issues Array of file dependency issues
|
|
19
|
+
* @param context Context for the warning (e.g., 'commit', 'link check')
|
|
20
|
+
*/
|
|
21
|
+
export declare const logFileDependencyWarning: (issues: FileDependencyIssue[], context?: string) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Provides suggestions for resolving file dependency issues
|
|
24
|
+
* @param hasUnlinkCapability Whether the current context supports unlinking
|
|
25
|
+
*/
|
|
26
|
+
export declare const logFileDependencySuggestions: (hasUnlinkCapability?: boolean) => void;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=safety.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/safety.ts"],"names":[],"mappings":"AAiBA,UAAU,mBAAmB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;KAC3E,CAAC,CAAC;CACN;AAkFD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAU,SAAS,GAAG,EAAE,UAAS,MAAsB,KAAG,OAAO,CAAC,mBAAmB,EAAE,CAuC3H,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,mBAAmB,EAAE,EAAE,UAAS,MAAoB,KAAG,IAevG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GAAI,sBAAqB,OAAc,KAAG,IAkBlF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../../src/stdin.ts"],"names":[],"mappings":"AAEA,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+GxD;AAGD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmC1E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
/**
|
|
3
|
+
* This module exists to isolate filesystem operations from the rest of the codebase.
|
|
4
|
+
* This makes testing easier by avoiding direct fs mocking in jest configuration.
|
|
5
|
+
*
|
|
6
|
+
* Additionally, abstracting storage operations allows for future flexibility -
|
|
7
|
+
* this export utility may need to work with storage systems other than the local filesystem
|
|
8
|
+
* (e.g. S3, Google Cloud Storage, etc).
|
|
9
|
+
*/
|
|
10
|
+
export interface Utility {
|
|
11
|
+
exists: (path: string) => Promise<boolean>;
|
|
12
|
+
isDirectory: (path: string) => Promise<boolean>;
|
|
13
|
+
isFile: (path: string) => Promise<boolean>;
|
|
14
|
+
isReadable: (path: string) => Promise<boolean>;
|
|
15
|
+
isWritable: (path: string) => Promise<boolean>;
|
|
16
|
+
isFileReadable: (path: string) => Promise<boolean>;
|
|
17
|
+
isDirectoryWritable: (path: string) => Promise<boolean>;
|
|
18
|
+
isDirectoryReadable: (path: string) => Promise<boolean>;
|
|
19
|
+
createDirectory: (path: string) => Promise<void>;
|
|
20
|
+
ensureDirectory: (path: string) => Promise<void>;
|
|
21
|
+
readFile: (path: string, encoding: string) => Promise<string>;
|
|
22
|
+
readStream: (path: string) => Promise<fs.ReadStream>;
|
|
23
|
+
writeFile: (path: string, data: string | Buffer, encoding: string) => Promise<void>;
|
|
24
|
+
rename: (oldPath: string, newPath: string) => Promise<void>;
|
|
25
|
+
deleteFile: (path: string) => Promise<void>;
|
|
26
|
+
forEachFileIn: (directory: string, callback: (path: string) => Promise<void>, options?: {
|
|
27
|
+
pattern: string;
|
|
28
|
+
}) => Promise<void>;
|
|
29
|
+
hashFile: (path: string, length: number) => Promise<string>;
|
|
30
|
+
listFiles: (directory: string) => Promise<string[]>;
|
|
31
|
+
removeDirectory: (path: string) => Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare const create: () => Utility;
|
|
34
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAKzB;;;;;;;GAOG;AAEH,MAAM,WAAW,OAAO;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACrD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9H,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,MAAM,QAAO,OAoLzB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for @eldrforge packages
|
|
3
|
+
*/
|
|
4
|
+
export interface Logger {
|
|
5
|
+
error: (message: string, ...args: any[]) => void;
|
|
6
|
+
warn: (message: string, ...args: any[]) => void;
|
|
7
|
+
info: (message: string, ...args: any[]) => void;
|
|
8
|
+
debug: (message: string, ...args: any[]) => void;
|
|
9
|
+
}
|
|
10
|
+
export interface StorageOptions {
|
|
11
|
+
encoding?: BufferEncoding;
|
|
12
|
+
atomic?: boolean;
|
|
13
|
+
createDirectories?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ValidationResult<T> {
|
|
16
|
+
success: boolean;
|
|
17
|
+
data?: T;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAChD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAChD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|