screw-up 0.10.0 → 0.12.0

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/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../node_modules/tar-vern/dist/index.js","../src/cli-internal.ts","../src/cli.ts"],"sourcesContent":["/*!\n * name: tar-vern\n * version: 0.3.0\n * description: Tape archiver library for Typescript\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/tar-vern.git\n */\nimport { Readable } from \"stream\";\nimport { createGzip } from \"zlib\";\nimport { createReadStream, createWriteStream } from \"fs\";\nimport { stat } from \"fs/promises\";\nconst getUName = (candidateName, candidateId, reflectStat) => {\n return candidateName ?? (reflectStat === \"all\" ? candidateId.toString() : \"root\");\n};\nconst getBuffer = (data) => {\n return Buffer.isBuffer(data) ? data : Buffer.from(data, \"utf8\");\n};\nconst createDirectoryItem = async (path, reflectStat, options) => {\n const rs = reflectStat ?? \"none\";\n if (rs !== \"none\" && options?.directoryPath) {\n const stats = await stat(options.directoryPath);\n const mode = options?.mode ?? stats.mode;\n const uid = options?.uid ?? stats.uid;\n const gid = options?.gid ?? stats.gid;\n const date = options?.date ?? stats.mtime;\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n } else {\n const mode = options?.mode ?? 493;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = getUName(options?.uname, void 0, rs);\n const gname = getUName(options?.gname, void 0, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n }\n};\nconst createFileItem = async (path, content, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content\n };\n};\nconst createReadableFileItem = async (path, readable, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of readable) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable\n }\n };\n }\n};\nconst createGeneratorFileItem = async (path, generator, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of generator) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"generator\",\n length,\n generator\n }\n };\n }\n};\nconst createReadFileItem = async (path, filePath, reflectStat, options) => {\n const rs = reflectStat ?? \"exceptName\";\n const stats = await stat(filePath);\n const reader = createReadStream(filePath);\n const mode = options?.mode ?? (rs !== \"none\" ? stats.mode : void 0);\n const uid = options?.uid ?? (rs !== \"none\" ? stats.uid : void 0);\n const gid = options?.gid ?? (rs !== \"none\" ? stats.gid : void 0);\n const date = options?.date ?? (rs !== \"none\" ? stats.mtime : void 0);\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return await createReadableFileItem(path, reader, {\n length: stats.size,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n });\n};\nconst storeReaderToFile = (reader, path) => {\n const writer = createWriteStream(path);\n reader.pipe(writer);\n return new Promise((res, rej) => {\n writer.on(\"finish\", res);\n writer.on(\"error\", rej);\n reader.on(\"error\", rej);\n });\n};\nconst utf8ByteLength = (str) => {\n return Buffer.byteLength(str, \"utf8\");\n};\nconst truncateUtf8Safe = (str, maxBytes) => {\n let total = 0;\n let i = 0;\n while (i < str.length) {\n const codePoint = str.codePointAt(i);\n const char = String.fromCodePoint(codePoint);\n const charBytes = Buffer.byteLength(char, \"utf8\");\n if (total + charBytes > maxBytes) break;\n total += charBytes;\n i += char.length;\n }\n return str.slice(0, i);\n};\nconst MAX_NAME = 100;\nconst MAX_PREFIX = 155;\nconst splitPath = (path) => {\n if (utf8ByteLength(path) <= MAX_NAME) {\n return { prefix: \"\", name: path };\n }\n const parts = path.split(\"/\");\n let name = parts.pop() ?? \"\";\n let prefix = parts.join(\"/\");\n if (utf8ByteLength(name) > MAX_NAME) {\n name = truncateUtf8Safe(name, MAX_NAME);\n }\n while (utf8ByteLength(prefix) > MAX_PREFIX) {\n prefix = truncateUtf8Safe(prefix, MAX_PREFIX);\n }\n return { prefix, name };\n};\nconst getOctalBytes = (value, length) => {\n const str = value.toString(8).padStart(length - 1, \"0\") + \"\\0\";\n return Buffer.from(str, \"ascii\");\n};\nconst getPaddedBytes = (buffer) => {\n const extra = buffer.length % 512;\n if (extra === 0) {\n return buffer;\n } else {\n return Buffer.concat([buffer, Buffer.alloc(512 - extra, 0)]);\n }\n};\nconst terminatorBytes = Buffer.alloc(1024, 0);\nconst createTarHeader = (type, path, size, mode, uname, gname, uid, gid, date) => {\n const buffer = Buffer.alloc(512, 0);\n const { name, prefix } = splitPath(path);\n buffer.write(name, 0, 100, \"utf8\");\n getOctalBytes(mode & 4095, 8).copy(buffer, 100);\n getOctalBytes(uid, 8).copy(buffer, 108);\n getOctalBytes(gid, 8).copy(buffer, 116);\n getOctalBytes(size, 12).copy(buffer, 124);\n getOctalBytes(Math.floor(date.getTime() / 1e3), 12).copy(buffer, 136);\n Buffer.from(\" \", \"ascii\").copy(buffer, 148);\n if (type === \"file\") {\n buffer.write(\"0\", 156, 1, \"ascii\");\n } else {\n buffer.write(\"5\", 156, 1, \"ascii\");\n }\n buffer.write(\"ustar\\0\", 257, 6, \"ascii\");\n buffer.write(\"00\", 263, 2, \"ascii\");\n buffer.write(uname, 265, 32, \"utf8\");\n buffer.write(gname, 297, 32, \"utf8\");\n buffer.write(prefix, 345, 155, \"utf8\");\n let sum = 0;\n for (let i = 0; i < 512; i++) {\n sum += buffer[i];\n }\n getOctalBytes(sum, 8).copy(buffer, 148);\n return buffer;\n};\nconst createTarPacker = (entryItemGenerator, compressionType, signal) => {\n const entryItemIterator = async function* () {\n for await (const entryItem of entryItemGenerator) {\n signal?.throwIfAborted();\n switch (entryItem.kind) {\n // Entry is a file\n case \"file\": {\n const entryItemContent = entryItem.content;\n if (typeof entryItemContent === \"string\" || Buffer.isBuffer(entryItemContent)) {\n const contentBytes = getBuffer(entryItemContent);\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n contentBytes.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n const totalPaddedContentBytes = getPaddedBytes(contentBytes);\n yield totalPaddedContentBytes;\n } else {\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n entryItemContent.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n let position = 0;\n switch (entryItemContent.kind) {\n // Content is a generator\n case \"generator\": {\n for await (const contentBytes of entryItemContent.generator) {\n signal?.throwIfAborted();\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n // Content is a readable stream\n case \"readable\": {\n for await (const content of entryItemContent.readable) {\n signal?.throwIfAborted();\n const contentBytes = getBuffer(content);\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n }\n if (position % 512 !== 0) {\n signal?.throwIfAborted();\n yield Buffer.alloc(512 - position % 512, 0);\n }\n }\n break;\n }\n // Entry is a directory\n case \"directory\": {\n const tarHeaderBytes = createTarHeader(\n \"directory\",\n entryItem.path,\n 0,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n break;\n }\n }\n }\n yield terminatorBytes;\n };\n const ct = compressionType ?? \"none\";\n switch (ct) {\n // No compression\n case \"none\": {\n return Readable.from(entryItemIterator());\n }\n // Gzip compression\n case \"gzip\": {\n const gzipStream = createGzip({ level: 9 });\n const entryItemStream = Readable.from(entryItemIterator());\n entryItemStream.pipe(gzipStream);\n return gzipStream;\n }\n }\n};\nexport {\n createDirectoryItem,\n createFileItem,\n createGeneratorFileItem,\n createReadFileItem,\n createReadableFileItem,\n createTarPacker,\n getBuffer,\n storeReaderToFile\n};\n//# sourceMappingURL=index.js.map\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { resolve } from 'path';\nimport { glob } from 'glob';\nimport { existsSync } from 'fs';\nimport { mkdir, lstat } from 'fs/promises';\nimport { createTarPacker, createReadFileItem, createFileItem, storeReaderToFile } from 'tar-vern';\nimport { resolveRawPackageJsonObject, PackageResolutionResult } from './internal.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create pack entry generator that collects and yields entries on-demand\n * @param targetDir - Target directory to pack\n * @param resolvedPackageJson - Resolved package.json object\n * @param readmeReplacementPath - Optional path to replacement README file\n * @returns Pack entry generator\n */\nconst createPackEntryGenerator = async function* (targetDir: string, resolvedPackageJson: any, readmeReplacementPath: string | undefined) {\n // First yield package.json content\n const packageJsonContent = JSON.stringify(resolvedPackageJson, null, 2);\n yield await createFileItem('package/package.json', packageJsonContent);\n\n // Get distribution files in package.json\n const distributionFileGlobs = resolvedPackageJson?.files as string[] ?? ['**/*'];\n \n // Convert directory patterns to recursive patterns (like npm pack does)\n const packingFilePaths = (await Promise.all(\n distributionFileGlobs.map(async (pattern) => {\n const fullPath = resolve(targetDir, pattern);\n try {\n if (existsSync(fullPath) && (await lstat(fullPath)).isDirectory()) {\n return await glob(`${pattern}/**/*`, { cwd: targetDir });\n }\n return await glob(pattern, { cwd: targetDir });\n } catch (error) {\n // If there's an error accessing the path, treat as glob pattern\n return await glob(pattern, { cwd: targetDir });\n }\n }))).flat();\n\n // Yield target packing files\n for (const packingFilePath of packingFilePaths) {\n // Except package.json (already yielded)\n if (packingFilePath !== 'package.json') {\n // Is file regular?\n const fullPath = resolve(targetDir, packingFilePath);\n const stat = await lstat(fullPath);\n if (stat.isFile()) {\n // Handle README.md replacement\n if (packingFilePath === 'README.md' && readmeReplacementPath) {\n // Use replacement file but keep README.md as the archive entry name\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n } else {\n // Yield regular file\n yield await createReadFileItem(`package/${packingFilePath}`, fullPath);\n }\n }\n }\n }\n\n // Handle case where README.md doesn't exist in files but we have a replacement\n if (readmeReplacementPath && !packingFilePaths.includes('README.md')) {\n // Add README.md to the archive using replacement file\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n }\n};\n\n\n/**\n * Pack assets into a tar archive\n * @param targetDir - Target directory to pack\n * @param outputDir - Output directory to write the tarball\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param readmeReplacementPath - Optional path to replacement README file\n * @returns Package metadata (package.json) or undefined if failed\n */\nexport const packAssets = async (\n targetDir: string,\n outputDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>,\n readmeReplacementPath: string | undefined) : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata with source tracking\n let result: PackageResolutionResult;\n try {\n result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n } catch (error) {\n // If package.json cannot be read (e.g., file doesn't exist), return undefined\n // This matches npm pack behavior which requires package.json\n return undefined;\n }\n\n const { packageJson: resolvedPackageJson, sourceMap } = result;\n\n // Check if package is private\n if (resolvedPackageJson?.private) {\n return undefined;\n }\n\n // Determine README replacement path\n // Priority: CLI option > package.json.readme > none\n let finalReadmeReplacementPath = readmeReplacementPath;\n if (!finalReadmeReplacementPath && resolvedPackageJson?.readme) {\n // Get the correct base directory for readme field\n const readmeSourceDir = sourceMap.get('readme') ?? targetDir;\n const packageReadmePath = resolve(readmeSourceDir, resolvedPackageJson.readme);\n if (existsSync(packageReadmePath)) {\n finalReadmeReplacementPath = packageReadmePath;\n }\n }\n\n // Validate README replacement path before creating generator\n if (finalReadmeReplacementPath && !existsSync(finalReadmeReplacementPath)) {\n throw new Error(`README replacement file not found: ${finalReadmeReplacementPath}`);\n }\n\n // Get package name\n const outputFileName = `${resolvedPackageJson?.name?.replace('/', '-') ?? \"package\"}-${resolvedPackageJson?.version ?? \"0.0.0\"}.tgz`;\n\n // Ensure output directory exists\n if (!existsSync(outputDir)) {\n await mkdir(outputDir, { recursive: true });\n }\n\n // Create tar packer with generator and gzip compression\n const packer = createTarPacker(\n createPackEntryGenerator(targetDir, resolvedPackageJson, finalReadmeReplacementPath),\n 'gzip');\n\n // Write compressed tar archive to file\n const outputFile = resolve(outputDir, outputFileName);\n await storeReaderToFile(packer, outputFile);\n\n return resolvedPackageJson;\n};\n\n/**\n * Get computed package.json object\n * @param targetDir - Target directory to resolve package metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @returns Computed package.json object or undefined if failed\n */\nexport const getComputedPackageJsonObject = async (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>) : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata\n const result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n return result.packageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport interface ParsedArgs {\n command?: string;\n positional: string[];\n options: Record<string, string | boolean>;\n}\n\nexport const parseArgs = (argv: string[]): ParsedArgs => {\n const args = argv.slice(2); // Remove 'node' and script path\n const result: ParsedArgs = {\n positional: [],\n options: {}\n };\n\n if (args.length === 0) {\n return result;\n }\n\n // Don't treat options as command\n if (args[0].startsWith('-')) {\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n return result;\n }\n\n result.command = args[0];\n let i = 1;\n\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n\n return result;\n};\n","#!/usr/bin/env node\n\n// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { join, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { mkdtemp, rm, stat } from 'fs/promises';\nimport { spawn } from 'child_process';\nimport { packAssets, parseArgs, ParsedArgs, getComputedPackageJsonObject } from './cli-internal.js';\n\ndeclare const __VERSION__: string;\ndeclare const __AUTHOR__: string;\ndeclare const __REPOSITORY_URL__: string;\ndeclare const __LICENSE__: string;\n\n// Package metadata fields that should be inherited from parent\nconst defaultInheritableFields = new Set([\n 'version',\n 'description', \n 'author',\n 'license',\n 'repository',\n 'keywords',\n 'homepage',\n 'bugs',\n 'readme'\n]);\n\n// Parse inheritable fields from CLI option string\nconst parseInheritableFields = (inheritableFieldsOption: string | boolean | undefined): Set<string> => {\n if (typeof inheritableFieldsOption !== 'string') {\n return defaultInheritableFields;\n }\n if (!inheritableFieldsOption.trim()) {\n return new Set(); // Empty set for empty string (no inheritance)\n }\n return new Set(inheritableFieldsOption.split(',').map(field => field.trim()).filter(field => field.length > 0));\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showHelp = () => {\n console.log(`screw-up - Easy package metadata inserter CLI [${__VERSION__}]\nCopyright (c) ${__AUTHOR__}\nRepository: ${__REPOSITORY_URL__}\nLicense: ${__LICENSE__}\n\nUsage: screw-up <command> [options]\n\nCommands:\n pack [directory] Pack the project into a tar archive\n publish [directory|package.tgz] Publish the project\n dump [directory] Dump computed package.json as JSON\n\nOptions:\n -h, --help Show help\n\nPack Options:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent (default: version,description,author,license,repository,keywords,homepage,bugs,readme)\n --no-wds Do not check working directory status to increase version\n\nPublish Options:\n All npm publish options are supported (e.g., --dry-run, --tag, --access, --registry)\n\nExamples:\n screw-up pack # Pack current directory\n screw-up pack ./my-project # Pack specific directory\n screw-up pack --pack-destination ./dist # Pack to specific output directory\n screw-up pack --readme ./README_pack.md # Pack with custom README\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with npm options\n`);\n};\n\nconst showPackHelp = () => {\n console.log(`Usage: screw-up pack [options] [directory]\n\nPack the project into a tar archive\n\nArguments:\n directory Directory to pack (default: current directory)\n\nOptions:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n -h, --help Show help for pack command\n`);\n};\n\nconst showPublishHelp = () => {\n console.log(`Usage: screw-up publish [options] [directory|package.tgz]\n\nPublish the project\n\nArguments:\n directory|package.tgz Directory to pack and publish, or existing tarball to publish\n\nOptions:\n All npm publish options are supported, including:\n --dry-run Perform a dry run\n --tag <tag> Tag for the published version\n --access <access> Access level (public or restricted)\n --registry <registry> Registry URL\n -h, --help Show help for publish command\n\nExamples:\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with options\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst packCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPackHelp();\n return;\n }\n\n const directory = args.positional[0];\n const packDestination = args.options['pack-destination'] as string;\n const readmeOption = args.options['readme'] as string;\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n const targetDir = resolve(directory ?? process.cwd());\n const outputDir = packDestination ? resolve(packDestination) : process.cwd();\n const readmeReplacementPath = readmeOption ? resolve(readmeOption) : undefined;\n \n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n console.log(`[screw-up/cli]: pack: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath);\n if (metadata) {\n console.log(`[screw-up/cli]: pack: Archive created successfully: ${outputDir}`);\n } else {\n console.error(`[screw-up/cli]: pack: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: pack: Failed to create archive:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst publishCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPublishHelp();\n return;\n }\n\n const runNpmPublish = async (tarballPath: string, npmOptions: string[]) => {\n console.log(`[screw-up/cli]: publish: Publishing ${tarballPath} to npm...`);\n \n const publishArgs = ['publish', tarballPath, ...npmOptions];\n \n // For testing: log the command that would be executed\n if (process.env.SCREW_UP_TEST_MODE === 'true') {\n console.log(`[screw-up/cli]: TEST_MODE: Would execute: npm ${publishArgs.join(' ')}`);\n console.log(`[screw-up/cli]: TEST_MODE: Tarball path: ${tarballPath}`);\n console.log(`[screw-up/cli]: TEST_MODE: Options: ${npmOptions.join(' ')}`);\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n return;\n }\n \n const npmProcess = spawn('npm', publishArgs, { stdio: 'inherit' });\n \n return new Promise<void>((resolve, reject) => {\n npmProcess.on('close', (code) => {\n if (code === 0) {\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n resolve();\n } else {\n reject(new Error(`npm publish failed with exit code ${code}`));\n }\n });\n npmProcess.on('error', reject);\n });\n };\n\n const path = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n // Convert parsed options to npm options\n const npmOptions: string[] = [];\n Object.entries(args.options).forEach(([key, value]) => {\n if (key === 'help' || key === 'h' || key === 'no-wds' || key === 'inheritable-fields') return; // Skip help, no-wds, and inheritable-fields options\n\n if (value === true) {\n npmOptions.push(`--${key}`);\n } else {\n npmOptions.push(`--${key}`, value as string);\n }\n });\n\n try {\n if (!path) {\n // No argument provided - generate tarball from current directory and publish\n const targetDir = process.cwd();\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else if (existsSync(path)) {\n const pathStat = await stat(path);\n \n if (pathStat.isFile() && (path.endsWith('.tgz') || path.endsWith('.tar.gz'))) {\n // Argument is a tarball file - publish directly\n await runNpmPublish(resolve(path), npmOptions);\n } else if (pathStat.isDirectory()) {\n // Argument is a directory - generate tarball from directory and publish\n const targetDir = resolve(path);\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else {\n console.error(`[screw-up/cli]: publish: Invalid path - must be a directory or .tgz/.tar.gz file: ${path}`);\n process.exit(1);\n }\n } else {\n console.error(`[screw-up/cli]: publish: Path does not exist: ${path}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: publish: Failed to publish:', error);\n process.exit(1);\n }\n};\n\nconst showDumpHelp = () => {\n console.log(`Usage: screw-up dump [options] [directory]\n\nDump computed package.json as JSON\n\nArguments:\n directory Directory to dump package.json from (default: current directory)\n\nOptions:\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n -h, --help Show help for dump command\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst dumpCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showDumpHelp();\n return;\n }\n\n const directory = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n const targetDir = resolve(directory ?? process.cwd());\n\n try {\n const computedPackageJson = await getComputedPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus, inheritableFields);\n if (computedPackageJson) {\n console.log(JSON.stringify(computedPackageJson, null, 2));\n } else {\n console.error(`[screw-up/cli]: dump: Unable to read package.json from: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: dump: Failed to dump package.json:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst main = async () => {\n const args = parseArgs(process.argv);\n\n // Handle global help or when no command is provided\n if (args.options.help || args.options.h || !args.command || \n args.command === 'help' || args.command === '--help') {\n showHelp();\n return;\n }\n\n switch (args.command) {\n case 'pack':\n await packCommand(args);\n break;\n case 'publish':\n await publishCommand(args);\n break;\n case 'dump':\n await dumpCommand(args);\n break;\n default:\n console.error(`Unknown command: ${args.command}`);\n console.error('Run \"screw-up --help\" for usage information.');\n process.exit(1);\n }\n};\n\nmain().catch((error) => {\n console.error('CLI error:', error);\n process.exit(1);\n});\n"],"names":["stat","i","npmOptions","resolve"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"cli.js","sources":["../node_modules/tar-vern/dist/index.js","../src/cli-internal.ts","../src/cli.ts"],"sourcesContent":["/*!\n * name: tar-vern\n * version: 0.3.0\n * description: Tape archiver library for Typescript\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/tar-vern.git\n */\nimport { Readable } from \"stream\";\nimport { createGzip } from \"zlib\";\nimport { createReadStream, createWriteStream } from \"fs\";\nimport { stat } from \"fs/promises\";\nconst getUName = (candidateName, candidateId, reflectStat) => {\n return candidateName ?? (reflectStat === \"all\" ? candidateId.toString() : \"root\");\n};\nconst getBuffer = (data) => {\n return Buffer.isBuffer(data) ? data : Buffer.from(data, \"utf8\");\n};\nconst createDirectoryItem = async (path, reflectStat, options) => {\n const rs = reflectStat ?? \"none\";\n if (rs !== \"none\" && options?.directoryPath) {\n const stats = await stat(options.directoryPath);\n const mode = options?.mode ?? stats.mode;\n const uid = options?.uid ?? stats.uid;\n const gid = options?.gid ?? stats.gid;\n const date = options?.date ?? stats.mtime;\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n } else {\n const mode = options?.mode ?? 493;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = getUName(options?.uname, void 0, rs);\n const gname = getUName(options?.gname, void 0, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n }\n};\nconst createFileItem = async (path, content, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content\n };\n};\nconst createReadableFileItem = async (path, readable, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of readable) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable\n }\n };\n }\n};\nconst createGeneratorFileItem = async (path, generator, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of generator) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"generator\",\n length,\n generator\n }\n };\n }\n};\nconst createReadFileItem = async (path, filePath, reflectStat, options) => {\n const rs = reflectStat ?? \"exceptName\";\n const stats = await stat(filePath);\n const reader = createReadStream(filePath);\n const mode = options?.mode ?? (rs !== \"none\" ? stats.mode : void 0);\n const uid = options?.uid ?? (rs !== \"none\" ? stats.uid : void 0);\n const gid = options?.gid ?? (rs !== \"none\" ? stats.gid : void 0);\n const date = options?.date ?? (rs !== \"none\" ? stats.mtime : void 0);\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return await createReadableFileItem(path, reader, {\n length: stats.size,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n });\n};\nconst storeReaderToFile = (reader, path) => {\n const writer = createWriteStream(path);\n reader.pipe(writer);\n return new Promise((res, rej) => {\n writer.on(\"finish\", res);\n writer.on(\"error\", rej);\n reader.on(\"error\", rej);\n });\n};\nconst utf8ByteLength = (str) => {\n return Buffer.byteLength(str, \"utf8\");\n};\nconst truncateUtf8Safe = (str, maxBytes) => {\n let total = 0;\n let i = 0;\n while (i < str.length) {\n const codePoint = str.codePointAt(i);\n const char = String.fromCodePoint(codePoint);\n const charBytes = Buffer.byteLength(char, \"utf8\");\n if (total + charBytes > maxBytes) break;\n total += charBytes;\n i += char.length;\n }\n return str.slice(0, i);\n};\nconst MAX_NAME = 100;\nconst MAX_PREFIX = 155;\nconst splitPath = (path) => {\n if (utf8ByteLength(path) <= MAX_NAME) {\n return { prefix: \"\", name: path };\n }\n const parts = path.split(\"/\");\n let name = parts.pop() ?? \"\";\n let prefix = parts.join(\"/\");\n if (utf8ByteLength(name) > MAX_NAME) {\n name = truncateUtf8Safe(name, MAX_NAME);\n }\n while (utf8ByteLength(prefix) > MAX_PREFIX) {\n prefix = truncateUtf8Safe(prefix, MAX_PREFIX);\n }\n return { prefix, name };\n};\nconst getOctalBytes = (value, length) => {\n const str = value.toString(8).padStart(length - 1, \"0\") + \"\\0\";\n return Buffer.from(str, \"ascii\");\n};\nconst getPaddedBytes = (buffer) => {\n const extra = buffer.length % 512;\n if (extra === 0) {\n return buffer;\n } else {\n return Buffer.concat([buffer, Buffer.alloc(512 - extra, 0)]);\n }\n};\nconst terminatorBytes = Buffer.alloc(1024, 0);\nconst createTarHeader = (type, path, size, mode, uname, gname, uid, gid, date) => {\n const buffer = Buffer.alloc(512, 0);\n const { name, prefix } = splitPath(path);\n buffer.write(name, 0, 100, \"utf8\");\n getOctalBytes(mode & 4095, 8).copy(buffer, 100);\n getOctalBytes(uid, 8).copy(buffer, 108);\n getOctalBytes(gid, 8).copy(buffer, 116);\n getOctalBytes(size, 12).copy(buffer, 124);\n getOctalBytes(Math.floor(date.getTime() / 1e3), 12).copy(buffer, 136);\n Buffer.from(\" \", \"ascii\").copy(buffer, 148);\n if (type === \"file\") {\n buffer.write(\"0\", 156, 1, \"ascii\");\n } else {\n buffer.write(\"5\", 156, 1, \"ascii\");\n }\n buffer.write(\"ustar\\0\", 257, 6, \"ascii\");\n buffer.write(\"00\", 263, 2, \"ascii\");\n buffer.write(uname, 265, 32, \"utf8\");\n buffer.write(gname, 297, 32, \"utf8\");\n buffer.write(prefix, 345, 155, \"utf8\");\n let sum = 0;\n for (let i = 0; i < 512; i++) {\n sum += buffer[i];\n }\n getOctalBytes(sum, 8).copy(buffer, 148);\n return buffer;\n};\nconst createTarPacker = (entryItemGenerator, compressionType, signal) => {\n const entryItemIterator = async function* () {\n for await (const entryItem of entryItemGenerator) {\n signal?.throwIfAborted();\n switch (entryItem.kind) {\n // Entry is a file\n case \"file\": {\n const entryItemContent = entryItem.content;\n if (typeof entryItemContent === \"string\" || Buffer.isBuffer(entryItemContent)) {\n const contentBytes = getBuffer(entryItemContent);\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n contentBytes.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n const totalPaddedContentBytes = getPaddedBytes(contentBytes);\n yield totalPaddedContentBytes;\n } else {\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n entryItemContent.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n let position = 0;\n switch (entryItemContent.kind) {\n // Content is a generator\n case \"generator\": {\n for await (const contentBytes of entryItemContent.generator) {\n signal?.throwIfAborted();\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n // Content is a readable stream\n case \"readable\": {\n for await (const content of entryItemContent.readable) {\n signal?.throwIfAborted();\n const contentBytes = getBuffer(content);\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n }\n if (position % 512 !== 0) {\n signal?.throwIfAborted();\n yield Buffer.alloc(512 - position % 512, 0);\n }\n }\n break;\n }\n // Entry is a directory\n case \"directory\": {\n const tarHeaderBytes = createTarHeader(\n \"directory\",\n entryItem.path,\n 0,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n break;\n }\n }\n }\n yield terminatorBytes;\n };\n const ct = compressionType ?? \"none\";\n switch (ct) {\n // No compression\n case \"none\": {\n return Readable.from(entryItemIterator());\n }\n // Gzip compression\n case \"gzip\": {\n const gzipStream = createGzip({ level: 9 });\n const entryItemStream = Readable.from(entryItemIterator());\n entryItemStream.pipe(gzipStream);\n return gzipStream;\n }\n }\n};\nexport {\n createDirectoryItem,\n createFileItem,\n createGeneratorFileItem,\n createReadFileItem,\n createReadableFileItem,\n createTarPacker,\n getBuffer,\n storeReaderToFile\n};\n//# sourceMappingURL=index.js.map\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { resolve } from 'path';\nimport { glob } from 'glob';\nimport { existsSync } from 'fs';\nimport { mkdir, lstat } from 'fs/promises';\nimport { createTarPacker, createReadFileItem, createFileItem, storeReaderToFile } from 'tar-vern';\nimport { resolveRawPackageJsonObject, PackageResolutionResult, findWorkspaceRoot, collectWorkspaceSiblings, replacePeerDependenciesWildcards } from './internal.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create pack entry generator that collects and yields entries on-demand\n * @param targetDir - Target directory to pack\n * @param resolvedPackageJson - Resolved package.json object\n * @param readmeReplacementPath - Optional path to replacement README file\n * @returns Pack entry generator\n */\nconst createPackEntryGenerator = async function* (targetDir: string, resolvedPackageJson: any, readmeReplacementPath: string | undefined) {\n // First yield package.json content\n const packageJsonContent = JSON.stringify(resolvedPackageJson, null, 2);\n yield await createFileItem('package/package.json', packageJsonContent);\n\n // Get distribution files in package.json\n const distributionFileGlobs = resolvedPackageJson?.files as string[] ?? ['**/*'];\n \n // Convert directory patterns to recursive patterns (like npm pack does)\n const packingFilePaths = (await Promise.all(\n distributionFileGlobs.map(async (pattern) => {\n const fullPath = resolve(targetDir, pattern);\n try {\n if (existsSync(fullPath) && (await lstat(fullPath)).isDirectory()) {\n return await glob(`${pattern}/**/*`, { cwd: targetDir });\n }\n return await glob(pattern, { cwd: targetDir });\n } catch (error) {\n // If there's an error accessing the path, treat as glob pattern\n return await glob(pattern, { cwd: targetDir });\n }\n }))).flat();\n\n // Yield target packing files\n for (const packingFilePath of packingFilePaths) {\n // Except package.json (already yielded)\n if (packingFilePath !== 'package.json') {\n // Is file regular?\n const fullPath = resolve(targetDir, packingFilePath);\n const stat = await lstat(fullPath);\n if (stat.isFile()) {\n // Handle README.md replacement\n if (packingFilePath === 'README.md' && readmeReplacementPath) {\n // Use replacement file but keep README.md as the archive entry name\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n } else {\n // Yield regular file\n yield await createReadFileItem(`package/${packingFilePath}`, fullPath);\n }\n }\n }\n }\n\n // Handle case where README.md doesn't exist in files but we have a replacement\n if (readmeReplacementPath && !packingFilePaths.includes('README.md')) {\n // Add README.md to the archive using replacement file\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n }\n};\n\n\n/**\n * Pack assets into a tar archive\n * @param targetDir - Target directory to pack\n * @param outputDir - Output directory to write the tarball\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param readmeReplacementPath - Optional path to replacement README file\n * @param replacePeerDepsWildcards - Replace \"*\" in peerDependencies with actual versions\n * @param peerDepsVersionPrefix - Version prefix for replaced peerDependencies\n * @returns Package metadata (package.json) or undefined if failed\n */\nexport const packAssets = async (\n targetDir: string,\n outputDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>,\n readmeReplacementPath: string | undefined,\n replacePeerDepsWildcards: boolean = true,\n peerDepsVersionPrefix: string = \"^\") : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata with source tracking\n let result: PackageResolutionResult;\n try {\n result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n } catch (error) {\n // If package.json cannot be read (e.g., file doesn't exist), return undefined\n // This matches npm pack behavior which requires package.json\n return undefined;\n }\n\n let { packageJson: resolvedPackageJson, sourceMap } = result;\n\n // Check if package is private\n if (resolvedPackageJson?.private) {\n return undefined;\n }\n\n // Replace peerDependencies wildcards if enabled and in workspace\n if (replacePeerDepsWildcards) {\n const workspaceRoot = await findWorkspaceRoot(targetDir);\n if (workspaceRoot) {\n const siblings = await collectWorkspaceSiblings(workspaceRoot);\n if (siblings.size > 0) {\n resolvedPackageJson = replacePeerDependenciesWildcards(\n resolvedPackageJson,\n siblings,\n peerDepsVersionPrefix\n );\n }\n }\n }\n\n // Determine README replacement path\n // Priority: CLI option > package.json.readme > none\n let finalReadmeReplacementPath = readmeReplacementPath;\n if (!finalReadmeReplacementPath && resolvedPackageJson?.readme) {\n // Get the correct base directory for readme field\n const readmeSourceDir = sourceMap.get('readme') ?? targetDir;\n const packageReadmePath = resolve(readmeSourceDir, resolvedPackageJson.readme);\n if (existsSync(packageReadmePath)) {\n finalReadmeReplacementPath = packageReadmePath;\n }\n }\n\n // Validate README replacement path before creating generator\n if (finalReadmeReplacementPath && !existsSync(finalReadmeReplacementPath)) {\n throw new Error(`README replacement file not found: ${finalReadmeReplacementPath}`);\n }\n\n // Get package name\n const outputFileName = `${resolvedPackageJson?.name?.replace('/', '-') ?? \"package\"}-${resolvedPackageJson?.version ?? \"0.0.0\"}.tgz`;\n\n // Ensure output directory exists\n if (!existsSync(outputDir)) {\n await mkdir(outputDir, { recursive: true });\n }\n\n // Create tar packer with generator and gzip compression\n const packer = createTarPacker(\n createPackEntryGenerator(targetDir, resolvedPackageJson, finalReadmeReplacementPath),\n 'gzip');\n\n // Write compressed tar archive to file\n const outputFile = resolve(outputDir, outputFileName);\n await storeReaderToFile(packer, outputFile);\n\n return resolvedPackageJson;\n};\n\n/**\n * Get computed package.json object\n * @param targetDir - Target directory to resolve package metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @returns Computed package.json object or undefined if failed\n */\nexport const getComputedPackageJsonObject = async (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>) : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata\n const result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n return result.packageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport interface ParsedArgs {\n command?: string;\n positional: string[];\n options: Record<string, string | boolean>;\n}\n\nexport const parseArgs = (argv: string[]): ParsedArgs => {\n const args = argv.slice(2); // Remove 'node' and script path\n const result: ParsedArgs = {\n positional: [],\n options: {}\n };\n\n if (args.length === 0) {\n return result;\n }\n\n // Don't treat options as command\n if (args[0].startsWith('-')) {\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n return result;\n }\n\n result.command = args[0];\n let i = 1;\n\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n\n return result;\n};\n","#!/usr/bin/env node\n\n// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { join, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { mkdtemp, rm, stat } from 'fs/promises';\nimport { spawn } from 'child_process';\nimport { packAssets, parseArgs, ParsedArgs, getComputedPackageJsonObject } from './cli-internal.js';\n\ndeclare const __VERSION__: string;\ndeclare const __AUTHOR__: string;\ndeclare const __REPOSITORY_URL__: string;\ndeclare const __LICENSE__: string;\n\n// Package metadata fields that should be inherited from parent\nconst defaultInheritableFields = new Set([\n 'version',\n 'description', \n 'author',\n 'license',\n 'repository',\n 'keywords',\n 'homepage',\n 'bugs',\n 'readme'\n]);\n\n// Parse inheritable fields from CLI option string\nconst parseInheritableFields = (inheritableFieldsOption: string | boolean | undefined): Set<string> => {\n if (typeof inheritableFieldsOption !== 'string') {\n return defaultInheritableFields;\n }\n if (!inheritableFieldsOption.trim()) {\n return new Set(); // Empty set for empty string (no inheritance)\n }\n return new Set(inheritableFieldsOption.split(',').map(field => field.trim()).filter(field => field.length > 0));\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showHelp = () => {\n console.log(`screw-up - Easy package metadata inserter CLI [${__VERSION__}]\nCopyright (c) ${__AUTHOR__}\nRepository: ${__REPOSITORY_URL__}\nLicense: ${__LICENSE__}\n\nUsage: screw-up <command> [options]\n\nCommands:\n pack [directory] Pack the project into a tar archive\n publish [directory|package.tgz] Publish the project\n dump [directory] Dump computed package.json as JSON\n\nOptions:\n -h, --help Show help\n\nPack Options:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent (default: version,description,author,license,repository,keywords,homepage,bugs,readme)\n --no-wds Do not check working directory status to increase version\n --no-replace-peer-deps Disable replacing \"*\" in peerDependencies with actual versions\n --peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: \"^\")\n\nPublish Options:\n All npm publish options are supported (e.g., --dry-run, --tag, --access, --registry)\n\nExamples:\n screw-up pack # Pack current directory\n screw-up pack ./my-project # Pack specific directory\n screw-up pack --pack-destination ./dist # Pack to specific output directory\n screw-up pack --readme ./README_pack.md # Pack with custom README\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with npm options\n`);\n};\n\nconst showPackHelp = () => {\n console.log(`Usage: screw-up pack [options] [directory]\n\nPack the project into a tar archive\n\nArguments:\n directory Directory to pack (default: current directory)\n\nOptions:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n --no-replace-peer-deps Disable replacing \"*\" in peerDependencies with actual versions\n --peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: \"^\")\n -h, --help Show help for pack command\n`);\n};\n\nconst showPublishHelp = () => {\n console.log(`Usage: screw-up publish [options] [directory|package.tgz]\n\nPublish the project\n\nArguments:\n directory|package.tgz Directory to pack and publish, or existing tarball to publish\n\nOptions:\n All npm publish options are supported, including:\n --dry-run Perform a dry run\n --tag <tag> Tag for the published version\n --access <access> Access level (public or restricted)\n --registry <registry> Registry URL\n -h, --help Show help for publish command\n\nExamples:\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with options\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst packCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPackHelp();\n return;\n }\n\n const directory = args.positional[0];\n const packDestination = args.options['pack-destination'] as string;\n const readmeOption = args.options['readme'] as string;\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix = args.options['peer-deps-prefix'] as string ?? \"^\";\n\n const targetDir = resolve(directory ?? process.cwd());\n const outputDir = packDestination ? resolve(packDestination) : process.cwd();\n const readmeReplacementPath = readmeOption ? resolve(readmeOption) : undefined;\n \n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n console.log(`[screw-up/cli]: pack: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards, peerDepsVersionPrefix);\n if (metadata) {\n console.log(`[screw-up/cli]: pack: Archive created successfully: ${outputDir}`);\n } else {\n console.error(`[screw-up/cli]: pack: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: pack: Failed to create archive:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst publishCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPublishHelp();\n return;\n }\n\n const runNpmPublish = async (tarballPath: string, npmOptions: string[]) => {\n console.log(`[screw-up/cli]: publish: Publishing ${tarballPath} to npm...`);\n \n const publishArgs = ['publish', tarballPath, ...npmOptions];\n \n // For testing: log the command that would be executed\n if (process.env.SCREW_UP_TEST_MODE === 'true') {\n console.log(`[screw-up/cli]: TEST_MODE: Would execute: npm ${publishArgs.join(' ')}`);\n console.log(`[screw-up/cli]: TEST_MODE: Tarball path: ${tarballPath}`);\n console.log(`[screw-up/cli]: TEST_MODE: Options: ${npmOptions.join(' ')}`);\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n return;\n }\n \n const npmProcess = spawn('npm', publishArgs, { stdio: 'inherit' });\n \n return new Promise<void>((resolve, reject) => {\n npmProcess.on('close', (code) => {\n if (code === 0) {\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n resolve();\n } else {\n reject(new Error(`npm publish failed with exit code ${code}`));\n }\n });\n npmProcess.on('error', reject);\n });\n };\n\n const path = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix = args.options['peer-deps-prefix'] as string ?? \"^\";\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n // Convert parsed options to npm options\n const npmOptions: string[] = [];\n Object.entries(args.options).forEach(([key, value]) => {\n if (key === 'help' || key === 'h' || key === 'no-wds' || key === 'inheritable-fields' || key === 'no-replace-peer-deps' || key === 'peer-deps-prefix') return; // Skip screw-up specific options\n\n if (value === true) {\n npmOptions.push(`--${key}`);\n } else {\n npmOptions.push(`--${key}`, value as string);\n }\n });\n\n try {\n if (!path) {\n // No argument provided - generate tarball from current directory and publish\n const targetDir = process.cwd();\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined, replacePeerDepsWildcards, peerDepsVersionPrefix);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else if (existsSync(path)) {\n const pathStat = await stat(path);\n \n if (pathStat.isFile() && (path.endsWith('.tgz') || path.endsWith('.tar.gz'))) {\n // Argument is a tarball file - publish directly\n await runNpmPublish(resolve(path), npmOptions);\n } else if (pathStat.isDirectory()) {\n // Argument is a directory - generate tarball from directory and publish\n const targetDir = resolve(path);\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined, replacePeerDepsWildcards, peerDepsVersionPrefix);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else {\n console.error(`[screw-up/cli]: publish: Invalid path - must be a directory or .tgz/.tar.gz file: ${path}`);\n process.exit(1);\n }\n } else {\n console.error(`[screw-up/cli]: publish: Path does not exist: ${path}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: publish: Failed to publish:', error);\n process.exit(1);\n }\n};\n\nconst showDumpHelp = () => {\n console.log(`Usage: screw-up dump [options] [directory]\n\nDump computed package.json as JSON\n\nArguments:\n directory Directory to dump package.json from (default: current directory)\n\nOptions:\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n -h, --help Show help for dump command\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst dumpCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showDumpHelp();\n return;\n }\n\n const directory = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n const targetDir = resolve(directory ?? process.cwd());\n\n try {\n const computedPackageJson = await getComputedPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus, inheritableFields);\n if (computedPackageJson) {\n console.log(JSON.stringify(computedPackageJson, null, 2));\n } else {\n console.error(`[screw-up/cli]: dump: Unable to read package.json from: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: dump: Failed to dump package.json:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst main = async () => {\n const args = parseArgs(process.argv);\n\n // Handle global help or when no command is provided\n if (args.options.help || args.options.h || !args.command || \n args.command === 'help' || args.command === '--help') {\n showHelp();\n return;\n }\n\n switch (args.command) {\n case 'pack':\n await packCommand(args);\n break;\n case 'publish':\n await publishCommand(args);\n break;\n case 'dump':\n await dumpCommand(args);\n break;\n default:\n console.error(`Unknown command: ${args.command}`);\n console.error('Run \"screw-up --help\" for usage information.');\n process.exit(1);\n }\n};\n\nmain().catch((error) => {\n console.error('CLI error:', error);\n process.exit(1);\n});\n"],"names":["stat","i","npmOptions","resolve"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  const promises = require("fs/promises");
3
3
  const path = require("path");
4
- const internal = require("./internal-Dli6fSLz.cjs");
4
+ const internal = require("./internal-Di0s8LQa.cjs");
5
5
  const generateBanner = (metadata, outputKeys) => {
6
6
  const parts = [];
7
7
  for (const key of outputKeys) {
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { readdir, readFile, writeFile, mkdir } from "fs/promises";
2
2
  import { join, dirname } from "path";
3
- import { r as resolvePackageMetadata } from "./internal-CzKyZ9wb.js";
3
+ import { r as resolvePackageMetadata } from "./internal-BaMzTKS2.js";
4
4
  const generateBanner = (metadata, outputKeys) => {
5
5
  const parts = [];
6
6
  for (const key of outputKeys) {
@@ -1,7 +1,8 @@
1
1
  import * as fs from "fs";
2
2
  import { existsSync } from "fs";
3
3
  import { readFile } from "fs/promises";
4
- import { join, dirname } from "path";
4
+ import { dirname, join } from "path";
5
+ import { glob } from "glob";
5
6
  import * as git from "isomorphic-git";
6
7
  var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
7
8
  var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
@@ -1367,6 +1368,10 @@ var dayjs_min = { exports: {} };
1367
1368
  })(dayjs_min);
1368
1369
  var dayjs_minExports = dayjs_min.exports;
1369
1370
  const dayjs = /* @__PURE__ */ getDefaultExportFromCjs(dayjs_minExports);
1371
+ const parseVersionComponent = (value) => {
1372
+ const num = parseInt(value, 10);
1373
+ return num < 0 || num > 65535 ? void 0 : num;
1374
+ };
1370
1375
  const parseVersion = (tagName) => {
1371
1376
  const cleanTag = tagName.replace(/^v/i, "");
1372
1377
  const versionRegex = /^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?$/;
@@ -1374,18 +1379,34 @@ const parseVersion = (tagName) => {
1374
1379
  if (!match) {
1375
1380
  return void 0;
1376
1381
  }
1382
+ const major = parseVersionComponent(match[1]);
1383
+ if (major === void 0) {
1384
+ return void 0;
1385
+ }
1377
1386
  const version = {
1378
- major: parseInt(match[1], 10),
1387
+ major,
1379
1388
  original: tagName
1380
1389
  };
1381
1390
  if (match[2] !== void 0) {
1382
- version.minor = parseInt(match[2], 10);
1391
+ const minor = parseVersionComponent(match[2]);
1392
+ if (minor === void 0) {
1393
+ return void 0;
1394
+ }
1395
+ version.minor = minor;
1383
1396
  }
1384
1397
  if (match[3] !== void 0) {
1385
- version.build = parseInt(match[3], 10);
1398
+ const build = parseVersionComponent(match[3]);
1399
+ if (build === void 0) {
1400
+ return void 0;
1401
+ }
1402
+ version.build = build;
1386
1403
  }
1387
1404
  if (match[4] !== void 0) {
1388
- version.revision = parseInt(match[4], 10);
1405
+ const revision = parseVersionComponent(match[4]);
1406
+ if (revision === void 0) {
1407
+ return void 0;
1408
+ }
1409
+ version.revision = revision;
1389
1410
  }
1390
1411
  return version;
1391
1412
  };
@@ -1435,14 +1456,6 @@ const formatVersion = (version) => {
1435
1456
  }
1436
1457
  return result;
1437
1458
  };
1438
- const isGitRepository = async (repositoryPath) => {
1439
- try {
1440
- await git.statusMatrix({ fs, dir: repositoryPath });
1441
- return true;
1442
- } catch (e) {
1443
- return false;
1444
- }
1445
- };
1446
1459
  const getCommit = async (repositoryPath, hash) => {
1447
1460
  try {
1448
1461
  const commit = await git.readCommit({ fs, dir: repositoryPath, oid: hash });
@@ -1609,20 +1622,23 @@ const lookupVersionLabelRecursive = async (cwd, commit, reachedCommits) => {
1609
1622
  };
1610
1623
  const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus) => {
1611
1624
  const metadata = {};
1612
- if (!await isGitRepository(repositoryPath)) {
1625
+ let gitRootPath;
1626
+ try {
1627
+ gitRootPath = await git.findRoot({ fs, filepath: repositoryPath });
1628
+ } catch (e) {
1613
1629
  return metadata;
1614
1630
  }
1615
1631
  try {
1616
- const currentCommit = await getCurrentCommit(repositoryPath);
1632
+ const currentCommit = await getCurrentCommit(gitRootPath);
1617
1633
  if (!currentCommit) {
1618
1634
  return metadata;
1619
1635
  }
1620
1636
  const reachedCommits = /* @__PURE__ */ new Map();
1621
- let version = await lookupVersionLabelRecursive(repositoryPath, currentCommit, reachedCommits);
1637
+ let version = await lookupVersionLabelRecursive(gitRootPath, currentCommit, reachedCommits);
1622
1638
  const gitMetadata = { tags: [], branches: [] };
1623
1639
  metadata.git = gitMetadata;
1624
1640
  if (version) {
1625
- const hasModified = checkWorkingDirectoryStatus && await hasModifiedFiles(repositoryPath);
1641
+ const hasModified = checkWorkingDirectoryStatus && await hasModifiedFiles(gitRootPath);
1626
1642
  if (hasModified) {
1627
1643
  version = incrementLastVersionComponent(version);
1628
1644
  }
@@ -1636,9 +1652,9 @@ const getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus) => {
1636
1652
  date: dayjs(currentCommit.date).format("YYYY-MM-DDTHH:mm:ssZ[Z]"),
1637
1653
  message: currentCommit.message
1638
1654
  };
1639
- const relatedTags = await getRelatedTags(repositoryPath, currentCommit.hash);
1655
+ const relatedTags = await getRelatedTags(gitRootPath, currentCommit.hash);
1640
1656
  gitMetadata.tags = relatedTags.map((tag) => tag.name);
1641
- const relatedBranches = await getRelatedBranches(repositoryPath, currentCommit.hash);
1657
+ const relatedBranches = await getRelatedBranches(gitRootPath, currentCommit.hash);
1642
1658
  gitMetadata.branches = relatedBranches;
1643
1659
  } catch (error) {
1644
1660
  console.warn("Failed to extract git metadata:", error);
@@ -1680,6 +1696,59 @@ const findWorkspaceRoot = async (startPath) => {
1680
1696
  }
1681
1697
  return void 0;
1682
1698
  };
1699
+ const collectWorkspaceSiblings = async (workspaceRoot) => {
1700
+ const siblings = /* @__PURE__ */ new Map();
1701
+ try {
1702
+ const rootPackageJsonPath = join(workspaceRoot, "package.json");
1703
+ const content = await readFile(rootPackageJsonPath, "utf-8");
1704
+ const rootPackageJson = JSON.parse(content);
1705
+ const workspacePatterns = rootPackageJson.workspaces;
1706
+ if (!workspacePatterns || !Array.isArray(workspacePatterns)) {
1707
+ return siblings;
1708
+ }
1709
+ const workspaceDirs = /* @__PURE__ */ new Set();
1710
+ for (const pattern of workspacePatterns) {
1711
+ const matches = await glob(pattern, {
1712
+ cwd: workspaceRoot
1713
+ });
1714
+ matches.forEach((match) => workspaceDirs.add(match));
1715
+ }
1716
+ for (const workspaceDir of workspaceDirs) {
1717
+ const packageJsonPath = join(workspaceRoot, workspaceDir, "package.json");
1718
+ if (existsSync(packageJsonPath)) {
1719
+ try {
1720
+ const packageContent = await readFile(packageJsonPath, "utf-8");
1721
+ const packageJson = JSON.parse(packageContent);
1722
+ if (packageJson.name && packageJson.version) {
1723
+ siblings.set(packageJson.name, {
1724
+ name: packageJson.name,
1725
+ version: packageJson.version,
1726
+ path: join(workspaceRoot, workspaceDir)
1727
+ });
1728
+ }
1729
+ } catch (error) {
1730
+ console.warn(`Failed to read package.json from ${packageJsonPath}:`, error);
1731
+ }
1732
+ }
1733
+ }
1734
+ } catch (error) {
1735
+ console.warn(`Failed to collect workspace siblings from ${workspaceRoot}:`, error);
1736
+ }
1737
+ return siblings;
1738
+ };
1739
+ const replacePeerDependenciesWildcards = (packageJson, siblings, versionPrefix) => {
1740
+ const modifiedPackageJson = JSON.parse(JSON.stringify(packageJson));
1741
+ if (!modifiedPackageJson.peerDependencies || typeof modifiedPackageJson.peerDependencies !== "object") {
1742
+ return modifiedPackageJson;
1743
+ }
1744
+ for (const [depName, depVersion] of Object.entries(modifiedPackageJson.peerDependencies)) {
1745
+ if (depVersion === "*" && siblings.has(depName)) {
1746
+ const sibling = siblings.get(depName);
1747
+ modifiedPackageJson.peerDependencies[depName] = `${versionPrefix}${sibling.version}`;
1748
+ }
1749
+ }
1750
+ return modifiedPackageJson;
1751
+ };
1683
1752
  const mergePackageMetadata = async (parentMetadata, childMetadata, repositoryPath, checkWorkingDirectoryStatus) => {
1684
1753
  const metadata = await getGitMetadata(repositoryPath, checkWorkingDirectoryStatus);
1685
1754
  const merged = {};
@@ -1811,6 +1880,9 @@ const resolveRawPackageJsonObject = async (projectRoot, checkWorkingDirectorySta
1811
1880
  };
1812
1881
  export {
1813
1882
  resolveRawPackageJsonObject as a,
1883
+ replacePeerDependenciesWildcards as b,
1884
+ collectWorkspaceSiblings as c,
1885
+ findWorkspaceRoot as f,
1814
1886
  resolvePackageMetadata as r
1815
1887
  };
1816
- //# sourceMappingURL=internal-CzKyZ9wb.js.map
1888
+ //# sourceMappingURL=internal-BaMzTKS2.js.map