screw-up 1.10.0 → 1.11.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/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../node_modules/tar-vern/dist/index.js","../src/cli-internal.ts","../src/cli.ts","../src/main.ts"],"sourcesContent":["/*!\n * name: tar-vern\n * version: 1.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 * git.commit.hash: 7ac8b1f258e17c93767650ef047a2db9f0ffd417\n */\nimport { Readable } from \"stream\";\nimport { createGzip, createGunzip } from \"zlib\";\nimport { createReadStream, createWriteStream } from \"fs\";\nimport { stat, mkdir, writeFile, readdir } from \"fs/promises\";\nimport { pipeline } from \"stream/promises\";\nimport { join, dirname } from \"path\";\nconst MAX_NAME = 100;\nconst MAX_PREFIX = 155;\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, signal) => {\n const rs = reflectStat ?? \"none\";\n if (rs !== \"none\" && options?.directoryPath) {\n signal?.throwIfAborted();\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, signal) => {\n signal?.throwIfAborted();\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, signal) => {\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 signal?.throwIfAborted();\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, { signal })\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, signal) => {\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 signal?.throwIfAborted();\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, { signal })\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, signal) => {\n const rs = reflectStat ?? \"exceptName\";\n signal?.throwIfAborted();\n const stats = await stat(filePath);\n const reader = createReadStream(filePath, { signal });\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 }, signal);\n};\nconst storeReaderToFile = async (reader, path, signal) => {\n const writer = createWriteStream(path, { signal });\n await pipeline(reader, writer, { signal });\n};\nconst getAllFilesInDirectory = async (baseDir, signal) => {\n const collectFiles = async (currentDir, relativePath) => {\n signal?.throwIfAborted();\n try {\n const entries = await readdir(currentDir, { withFileTypes: true });\n const result = [];\n const tasks = entries.map(async (entry) => {\n signal?.throwIfAborted();\n const entryRelativePath = join(relativePath, entry.name);\n if (entry.isDirectory()) {\n const entryFullPath = join(currentDir, entry.name);\n const directoryContents = await collectFiles(entryFullPath, entryRelativePath);\n return [entryRelativePath, ...directoryContents];\n } else {\n return [entryRelativePath];\n }\n });\n const allResults = await Promise.all(tasks);\n for (const entryResults of allResults) {\n result.push(...entryResults);\n }\n return result;\n } catch (error) {\n console.warn(`Warning: Could not read directory ${currentDir}:`, error);\n return [];\n }\n };\n return await collectFiles(baseDir, \"\");\n};\nconst createEntryItemGenerator = async function* (baseDir, relativePaths, includeDirectory, reflectStat, signal) {\n const rs = reflectStat ?? \"exceptName\";\n const includeDir = includeDirectory ?? true;\n const pathsToProcess = relativePaths ?? await getAllFilesInDirectory(baseDir, signal);\n for (const relativePath of pathsToProcess) {\n signal?.throwIfAborted();\n const fsPath = join(baseDir, relativePath);\n try {\n signal?.throwIfAborted();\n const stats = await stat(fsPath);\n if (includeDir && stats.isDirectory()) {\n yield await createDirectoryItem(relativePath, rs, {\n directoryPath: fsPath\n }, signal);\n } else if (stats.isFile()) {\n yield await createReadFileItem(relativePath, fsPath, rs, void 0, signal);\n }\n } catch (error) {\n console.warn(`Warning: Could not access ${fsPath}:`, error);\n continue;\n }\n }\n};\nconst extractTo = async (iterator, basePath, signal) => {\n for await (const entry of iterator) {\n signal?.throwIfAborted();\n const targetPath = join(basePath, entry.path);\n if (entry.kind === \"directory\") {\n try {\n signal?.throwIfAborted();\n await mkdir(targetPath, { recursive: true, mode: entry.mode });\n } catch (error) {\n if (error.code !== \"EEXIST\") {\n throw error;\n }\n }\n } else if (entry.kind === \"file\") {\n const parentDir = dirname(targetPath);\n signal?.throwIfAborted();\n await mkdir(parentDir, { recursive: true });\n const fileEntry = entry;\n const content = await fileEntry.getContent(\"buffer\");\n await writeFile(targetPath, content, { mode: entry.mode, signal });\n }\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 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 content = entryItemContent;\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n content.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 (content.kind) {\n // Content is a generator\n case \"generator\": {\n for await (const contentBytes of content.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 chunk of content.readable) {\n signal?.throwIfAborted();\n const contentBytes = getBuffer(chunk);\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(), { signal });\n }\n // Gzip compression\n case \"gzip\": {\n const gzipStream = createGzip({ level: 9 });\n const entryItemStream = Readable.from(entryItemIterator(), { signal });\n entryItemStream.pipe(gzipStream);\n return gzipStream;\n }\n }\n};\nconst parseOctalBytes = (buffer, offset, length) => {\n const str = buffer.subarray(offset, offset + length).toString(\"ascii\").replace(/\\0/g, \"\").trim();\n return str ? parseInt(str, 8) : 0;\n};\nconst parseString = (buffer, offset, length) => {\n return buffer.subarray(offset, offset + length).toString(\"utf8\").replace(/\\0/g, \"\").trim();\n};\nconst readExactBytes = async (iterator, size, signal) => {\n const chunks = [];\n let totalRead = 0;\n while (totalRead < size) {\n signal?.throwIfAborted();\n const { value, done } = await iterator.next();\n if (done) {\n if (totalRead === 0) {\n return void 0;\n } else {\n throw new Error(`Unexpected end of stream: expected ${size} bytes, got ${totalRead} bytes`);\n }\n }\n const chunk = getBuffer(value);\n const needed = size - totalRead;\n if (chunk.length <= needed) {\n chunks.push(chunk);\n totalRead += chunk.length;\n } else {\n chunks.push(chunk.subarray(0, needed));\n await iterator.return?.(chunk.subarray(needed));\n totalRead = size;\n }\n }\n return Buffer.concat(chunks, size);\n};\nconst skipExactBytes = async (iterator, size, signal) => {\n let totalSkipped = 0;\n while (totalSkipped < size) {\n signal?.throwIfAborted();\n const { value, done } = await iterator.next();\n if (done) {\n throw new Error(`Unexpected end of stream: expected to skip ${size} bytes, skipped ${totalSkipped} bytes`);\n }\n const chunk = getBuffer(value);\n const needed = size - totalSkipped;\n if (chunk.length <= needed) {\n totalSkipped += chunk.length;\n } else {\n await iterator.return?.(chunk.subarray(needed));\n totalSkipped = size;\n }\n }\n};\nconst skipPaddingBytesTo512Boundary = async (iterator, contentSize, signal) => {\n const padding = (512 - contentSize % 512) % 512;\n if (padding > 0) {\n await skipExactBytes(iterator, padding, signal);\n }\n};\nconst parseTarHeader = (buffer) => {\n if (buffer.every((b) => b === 0)) {\n return void 0;\n }\n const name = parseString(buffer, 0, 100);\n const mode = parseOctalBytes(buffer, 100, 8);\n const uid = parseOctalBytes(buffer, 108, 8);\n const gid = parseOctalBytes(buffer, 116, 8);\n const size = parseOctalBytes(buffer, 124, 12);\n const mtime = new Date(parseOctalBytes(buffer, 136, 12) * 1e3);\n const checksum = parseOctalBytes(buffer, 148, 8);\n const typeflag = parseString(buffer, 156, 1);\n const magic = parseString(buffer, 257, 6);\n const uname = parseString(buffer, 265, 32);\n const gname = parseString(buffer, 297, 32);\n const prefix = parseString(buffer, 345, 155);\n if (magic !== \"ustar\") {\n throw new Error(`Invalid tar format: magic=\"${magic}\"`);\n }\n let calculatedSum = 0;\n for (let i = 0; i < 512; i++) {\n if (i >= 148 && i < 156) {\n calculatedSum += 32;\n } else {\n calculatedSum += buffer[i];\n }\n }\n if (calculatedSum !== checksum) {\n throw new Error(`Invalid checksum: expected ${checksum}, got ${calculatedSum}`);\n }\n let path = prefix ? `${prefix}/${name}` : name;\n if (path.endsWith(\"/\")) {\n path = path.slice(0, -1);\n }\n const kind = typeflag === \"5\" ? \"directory\" : \"file\";\n return {\n kind,\n path,\n size,\n mode,\n uid,\n gid,\n mtime,\n uname: uname || uid.toString(),\n gname: gname || gid.toString(),\n checksum,\n consumed: false\n };\n};\nconst createBufferedAsyncIterator = (iterable, signal) => {\n const buffer = [];\n const iterator = iterable[Symbol.asyncIterator]();\n return {\n next: async () => {\n signal?.throwIfAborted();\n if (buffer.length > 0) {\n return { value: buffer.shift(), done: false };\n }\n return iterator.next();\n },\n return: async (value) => {\n if (value !== void 0) {\n buffer.unshift(value);\n }\n return { value: void 0, done: false };\n }\n };\n};\nconst createReadableFromIterator = (iterator, size, signal, consumedRef) => {\n const generator = async function* () {\n let remainingBytes = size;\n while (remainingBytes > 0) {\n signal?.throwIfAborted();\n const { value, done } = await iterator.next();\n if (done) {\n throw new Error(`Unexpected end of stream: expected ${size} bytes, remaining ${remainingBytes} bytes`);\n }\n const chunk = getBuffer(value);\n if (chunk.length <= remainingBytes) {\n remainingBytes -= chunk.length;\n yield chunk;\n } else {\n const needed = chunk.subarray(0, remainingBytes);\n const excess = chunk.subarray(remainingBytes);\n remainingBytes = 0;\n await iterator.return?.(excess);\n yield needed;\n break;\n }\n }\n await skipPaddingBytesTo512Boundary(iterator, size, signal);\n consumedRef.consumed = true;\n };\n return Readable.from(generator(), { signal });\n};\nconst createTarExtractor = async function* (readable, compressionType, signal) {\n const ct = compressionType ?? \"none\";\n let inputStream;\n switch (ct) {\n case \"gzip\":\n const gunzip = createGunzip();\n readable.pipe(gunzip);\n inputStream = gunzip;\n break;\n case \"none\":\n default:\n inputStream = readable;\n break;\n }\n const iterator = createBufferedAsyncIterator(inputStream, signal);\n let header;\n while (true) {\n signal?.throwIfAborted();\n if (header?.kind === \"file\" && !header.consumed) {\n await skipExactBytes(iterator, header.size, signal);\n await skipPaddingBytesTo512Boundary(iterator, header.size, signal);\n header.consumed = true;\n }\n let headerBuffer;\n try {\n headerBuffer = await readExactBytes(iterator, 512, signal);\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"Unexpected end of stream\")) {\n throw new Error(\"Invalid tar format: incomplete header\");\n }\n throw error;\n }\n if (headerBuffer === void 0) {\n break;\n }\n header = parseTarHeader(headerBuffer);\n if (!header) {\n const secondBlock = await readExactBytes(iterator, 512, signal);\n if (secondBlock === void 0 || secondBlock.every((b) => b === 0)) {\n break;\n }\n throw new Error(\"Invalid tar format: expected terminator block\");\n }\n if (header.kind === \"directory\") {\n yield {\n kind: \"directory\",\n path: header.path,\n mode: header.mode,\n uid: header.uid,\n gid: header.gid,\n uname: header.uname,\n gname: header.gname,\n date: header.mtime\n };\n } else {\n const currentHeader = header;\n yield {\n kind: \"file\",\n path: currentHeader.path,\n mode: currentHeader.mode,\n uid: currentHeader.uid,\n gid: currentHeader.gid,\n uname: currentHeader.uname,\n gname: currentHeader.gname,\n date: currentHeader.mtime,\n getContent: async (type) => {\n if (currentHeader.consumed) {\n throw new Error(\"Content has already been consumed. Multiple calls to getContent are not supported.\");\n }\n switch (type) {\n // For string\n case \"string\": {\n const dataBuffer = await readExactBytes(iterator, currentHeader.size, signal);\n if (dataBuffer === void 0) {\n throw new Error(`Unexpected end of stream while reading file data for ${currentHeader.path}`);\n }\n await skipPaddingBytesTo512Boundary(iterator, currentHeader.size, signal);\n currentHeader.consumed = true;\n return dataBuffer.toString(\"utf8\");\n }\n // For buffer\n case \"buffer\": {\n const dataBuffer = await readExactBytes(iterator, currentHeader.size, signal);\n if (dataBuffer === void 0) {\n throw new Error(`Unexpected end of stream while reading file data for ${currentHeader.path}`);\n }\n await skipPaddingBytesTo512Boundary(iterator, currentHeader.size, signal);\n currentHeader.consumed = true;\n return dataBuffer;\n }\n // For Readble stream\n case \"readable\": {\n const readable2 = createReadableFromIterator(iterator, currentHeader.size, signal, currentHeader);\n return readable2;\n }\n default:\n throw new Error(`Unsupported content type: ${type}`);\n }\n }\n };\n }\n }\n};\nexport {\n createDirectoryItem,\n createEntryItemGenerator,\n createFileItem,\n createGeneratorFileItem,\n createReadFileItem,\n createReadableFileItem,\n createTarExtractor,\n createTarPacker,\n extractTo,\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 { join } from 'path';\nimport { createReadStream, existsSync } from 'fs';\nimport { mkdir, mkdtemp, writeFile, copyFile, rm } from 'fs/promises';\nimport {\n createTarPacker,\n storeReaderToFile,\n extractTo,\n createTarExtractor,\n createEntryItemGenerator,\n} from 'tar-vern';\nimport { spawn } from 'child_process';\nimport { tmpdir } from 'os';\nimport {\n resolveRawPackageJsonObject,\n findWorkspaceRoot,\n collectWorkspaceSiblings,\n replacePeerDependenciesWildcards,\n Logger,\n} from './internal';\nimport { getFetchGitMetadata } from './analyzer';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Execute npm pack and return the generated tarball path\n * @param targetDir - Target directory to pack\n * @param packDestDir - Directory to store the generated tarball (must exist)\n * @returns Path to generated tarball\n */\nconst runNpmPack = async (\n targetDir: string,\n packDestDir: string\n): Promise<string> => {\n return new Promise((res, rej) => {\n const npmProcess = spawn(\n 'npm',\n ['pack', '--pack-destination', packDestDir],\n {\n cwd: targetDir,\n stdio: ['ignore', 'pipe', 'pipe'],\n }\n );\n\n let stdout = '';\n let stderr = '';\n\n npmProcess.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n npmProcess.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n npmProcess.on('close', (code) => {\n if (code === 0) {\n // npm pack outputs the filename on stdout (last line or line ending with .tgz)\n const lines = stdout.trim().split('\\n');\n // Find the line that ends with .tgz (actual filename) or use the last line\n const filename =\n lines.find((line) => line.trim().endsWith('.tgz')) ||\n lines[lines.length - 1];\n if (filename && filename.trim().endsWith('.tgz')) {\n const fullPath = join(packDestDir, filename.trim());\n res(fullPath);\n } else {\n rej(new Error('npm pack did not output a valid .tgz filename'));\n }\n } else {\n const errorMessage = `npm pack failed with exit code ${code}`;\n const fullError = stderr\n ? `${errorMessage}\\nstderr: ${stderr}`\n : errorMessage;\n if (stdout) {\n rej(new Error(`${fullError}\\nstdout: ${stdout}`));\n } else {\n rej(new Error(fullError));\n }\n }\n });\n\n npmProcess.on('error', (error) => {\n rej(new Error(`Failed to spawn npm pack: ${error.message}`));\n });\n });\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Packed result\n */\nexport interface PackedResult {\n readonly packageFileName: string;\n readonly metadata: any;\n}\n\n/**\n * Pack assets using npm pack delegation method\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 * @param alwaysOverrideVersionFromGit - Always override version from Git (default: true)\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 alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n readmeReplacementPath: string | undefined,\n replacePeerDepsWildcards: boolean,\n peerDepsVersionPrefix: string,\n logger: Logger\n): Promise<PackedResult | undefined> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n throw new Error(`Target directory is not found: ${targetDir}`);\n }\n\n let readmeReplacementCandidatePath = readmeReplacementPath;\n if (\n readmeReplacementCandidatePath &&\n !existsSync(readmeReplacementCandidatePath)\n ) {\n throw new Error(\n `README replacement file is not found: ${readmeReplacementCandidatePath}`\n );\n }\n\n // Get Git metadata fetcher function\n const fetchGitMetadata = getFetchGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n\n // Resolve package metadata with source tracking\n const result = await resolveRawPackageJsonObject(\n targetDir,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n\n let resolvedPackageJson = result.metadata;\n\n // Check if package is private\n if (resolvedPackageJson?.private) {\n return undefined;\n }\n\n // Extract README replacement directive on package.json\n const packageJsonReadme = resolvedPackageJson.readme;\n if (packageJsonReadme) {\n // When does not override by parameter (CLI)\n if (!readmeReplacementCandidatePath) {\n const packageJsonReadmeDir = result.sourceMap.get('readme');\n const packageJsonReadmePath = join(\n packageJsonReadmeDir,\n packageJsonReadme\n );\n if (!existsSync(packageJsonReadmePath)) {\n throw new Error(\n `README replacement file is not found: ${packageJsonReadmePath}`\n );\n }\n readmeReplacementCandidatePath = packageJsonReadmePath;\n }\n // Always remove it.\n delete resolvedPackageJson.readme;\n }\n\n // Replace peerDependencies wildcards if enabled and in workspace\n if (replacePeerDepsWildcards) {\n const workspaceRoot = await findWorkspaceRoot(targetDir, logger);\n if (workspaceRoot) {\n const siblings = await collectWorkspaceSiblings(\n workspaceRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n if (siblings.size > 0) {\n resolvedPackageJson = replacePeerDependenciesWildcards(\n resolvedPackageJson,\n siblings,\n peerDepsVersionPrefix\n );\n }\n }\n }\n\n // Create temporary directory for npm pack\n const baseTempDir = await mkdtemp(join(tmpdir(), 'screw-up-npm-pack-'));\n await mkdir(baseTempDir, { recursive: true });\n\n try {\n // Step 1: Execute npm pack to generate initial tarball\n const npmTarballPath = await runNpmPack(targetDir, baseTempDir);\n\n // Step 2: Extract the npm-generated tarball into staging directory\n const stagingDir = join(baseTempDir, 'staging');\n await mkdir(stagingDir, { recursive: true });\n\n const stream = createReadStream(npmTarballPath);\n await extractTo(createTarExtractor(stream, 'gzip'), stagingDir);\n\n // Step 3: Process extracted files (package.json/README replacement)\n // Replace package.json with our processed version\n const packageJsonPath = join(stagingDir, 'package', 'package.json');\n if (existsSync(packageJsonPath)) {\n await writeFile(\n packageJsonPath,\n JSON.stringify(resolvedPackageJson, null, 2)\n );\n }\n\n // Replace README.md\n if (readmeReplacementCandidatePath) {\n const readmeDestPath = join(stagingDir, 'package', 'README.md');\n await copyFile(readmeReplacementCandidatePath, readmeDestPath);\n }\n\n // Step 4: Re-create tarball with modified files\n const outputFileName = `${resolvedPackageJson?.name?.replace('/', '-') ?? 'package'}-${resolvedPackageJson?.version ?? '0.0.0'}.tgz`;\n await mkdir(outputDir, { recursive: true });\n const outputFile = join(outputDir, outputFileName);\n\n // Re-packing final tar file from the modified staging directory\n const itemGenerator = createEntryItemGenerator(stagingDir);\n const packer = createTarPacker(itemGenerator, 'gzip');\n await storeReaderToFile(packer, outputFile);\n\n // PackedResult\n return {\n packageFileName: outputFileName,\n metadata: resolvedPackageJson,\n };\n } finally {\n // Clean up temporary directory\n await rm(baseTempDir, { recursive: true, force: true });\n }\n};\n\n/**\n * Get computed package.json object\n * @param targetDir - Target directory to resolve package metadata\n * @param fetchGitMetadata - Git metadata fetcher\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 fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): 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,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n return result.metadata;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport interface ParsedArgs {\n readonly argv: string[];\n readonly command?: string;\n readonly positional: string[];\n readonly options: Record<string, string | boolean>;\n}\n\n/**\n * Parse command line arguments\n * @param args - Command line arguments\n * @param argOptionMap - Map of command options to their argument options\n * @returns Parsed arguments\n */\nexport const parseArgs = (\n args: string[],\n argOptionMap: Map<string, Set<string>>\n): ParsedArgs => {\n const result: any = {\n argv: args,\n positional: [],\n options: {},\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n // Found option bedore command\n if (!result.command) {\n // Always flag option\n result.options[optionName] = true;\n } else {\n // Detect an argument option in the command\n const argOptions = argOptionMap.get(result.command);\n if (argOptions.has(optionName)) {\n // Option has an argument\n i++;\n result.options[optionName] = args[i];\n } else {\n // Option is flag\n result.options[optionName] = true;\n }\n }\n // Sigle hyphen option is always flag\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n if (optionName.length == 1) {\n result.options[optionName] = true;\n }\n } else if (!result.command) {\n result.command = arg;\n } else {\n result.positional.push(arg);\n }\n }\n\n return result;\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 { tmpdir } from 'os';\nimport {\n packAssets,\n parseArgs,\n ParsedArgs,\n getComputedPackageJsonObject,\n} from './cli-internal';\nimport { getFetchGitMetadata } from './analyzer';\nimport { Logger } from './internal';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\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 = (\n inheritableFieldsOption: string | boolean | undefined\n): 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(\n inheritableFieldsOption\n .split(',')\n .map((field) => field.trim())\n .filter((field) => field.length > 0)\n );\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showDumpHelp = () => {\n console.info(`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 --no-git-version-override Do not override version from Git (use package.json version)\n -h, --help Show help for dump command\n`);\n};\n\nconst dumpCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showDumpHelp();\n return 1;\n }\n\n const directory = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\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 // The dump command needs clean output, so ignore debug/info/warn outputs.\n const _logger: Logger = {\n debug: (msg) => {},\n info: (msg) => {},\n warn: (msg) => {},\n error: logger.error,\n };\n\n try {\n // Get Git metadata fetcher function\n const fetchGitMetadata = getFetchGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n _logger\n );\n\n // Resolve package metadata\n const computedPackageJson = await getComputedPackageJsonObject(\n targetDir,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n _logger\n );\n\n if (computedPackageJson) {\n // Output console directly\n console.info(JSON.stringify(computedPackageJson, null, 2));\n } else {\n _logger.error(`dump: Unable to read package.json from: ${targetDir}`);\n return 1;\n }\n } catch (error) {\n _logger.error(`dump: Failed to dump package.json: ${error}`);\n return 1;\n }\n return 0;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showPackHelp = () => {\n console.info(`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-git-version-override Do not override version from Git (use package.json 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 --verbose Print verbose log\n -h, --help Show help for pack command\n`);\n};\n\nconst packCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showPackHelp();\n return 1;\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 alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const verbose = args.options['verbose'] ? true : false;\n\n const targetDir = resolve(directory ?? process.cwd());\n const outputDir = packDestination ? resolve(packDestination) : process.cwd();\n const readmeReplacementPath = readmeOption\n ? resolve(readmeOption)\n : undefined;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n if (verbose) {\n logger.info(`pack: Creating archive of ${targetDir}...`);\n }\n\n try {\n const result = await packAssets(\n targetDir,\n outputDir,\n checkWorkingDirectoryStatus,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n readmeReplacementPath,\n replacePeerDepsWildcards,\n peerDepsVersionPrefix,\n logger\n );\n if (result) {\n if (verbose) {\n logger.info(\n `pack: Archive created successfully: ${result.packageFileName}`\n );\n } else {\n logger.info(result.packageFileName);\n }\n } else {\n logger.error(`pack: Unable to find any files to pack: ${targetDir}`);\n return 1;\n }\n } catch (error) {\n logger.error(`pack: Failed to create archive: ${error}`);\n return 1;\n }\n return 0;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showPublishHelp = () => {\n console.info(`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\nconst runNpmPublish = async (\n tarballPath: string,\n npmOptions: string[],\n verbose: boolean,\n logger: Logger\n) => {\n if (verbose) {\n logger.info(`publish: Publishing ${tarballPath} to npm...`);\n }\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 logger.info(`TEST_MODE: Would execute: npm ${publishArgs.join(' ')}`);\n logger.info(`TEST_MODE: Tarball path: ${tarballPath}`);\n logger.info(`TEST_MODE: Options: ${npmOptions.join(' ')}`);\n logger.info(`publish: Successfully published ${tarballPath}`);\n return 0;\n }\n\n const npmProcess = spawn('npm', publishArgs, { stdio: 'inherit' });\n\n return new Promise<number>((resolve, reject) => {\n npmProcess.on('close', (code) => {\n if (code === 0) {\n if (verbose) {\n logger.info(`publish: Successfully published ${tarballPath}`);\n }\n resolve(code);\n } else {\n logger.error(`publish: npm publish failed: ${tarballPath}`);\n resolve(code);\n }\n });\n npmProcess.on('error', reject);\n });\n};\n\nconst publishCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showPublishHelp();\n return 1;\n }\n\n const path = args.positional[0];\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 alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const verbose = args.options['verbose'] ? true : false;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n const readmeReplacementPath = readmeOption\n ? resolve(readmeOption)\n : undefined;\n\n // Aggregate npm options, except screw-up options.\n const npmOptions: string[] = [];\n for (let i = 0; i < args.argv.length; i++) {\n const arg = args.argv[i];\n if (arg === 'publish') {\n // Skip the command itself\n } else if (\n arg === '--help' ||\n arg === '--verbose' ||\n arg === '-h' ||\n arg === '--no-wds' ||\n arg === '--no-git-version-override' ||\n arg === '--no-replace-peer-deps'\n ) {\n } else if (\n arg === '--readme' ||\n arg === '--inheritable-fields' ||\n arg === '--peer-deps-prefix'\n ) {\n i++;\n } else {\n npmOptions.push(arg);\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(join(tmpdir(), 'screw-up-publish-'));\n\n if (verbose) {\n logger.info(`publish: Creating archive of ${targetDir}...`);\n }\n\n try {\n const result = await packAssets(\n targetDir,\n outputDir,\n checkWorkingDirectoryStatus,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n readmeReplacementPath,\n replacePeerDepsWildcards,\n peerDepsVersionPrefix,\n logger\n );\n if (result?.metadata) {\n if (verbose) {\n logger.info(\n `publish: Archive created successfully: ${result.packageFileName}`\n );\n }\n const archivePath = join(outputDir, result.packageFileName);\n return await runNpmPublish(archivePath, npmOptions, verbose, logger);\n } else {\n logger.error(\n `publish: Unable to find any files to pack: ${targetDir}`\n );\n return 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 (\n pathStat.isFile() &&\n (path.endsWith('.tgz') || path.endsWith('.tar.gz'))\n ) {\n // Argument is a tarball file - publish directly\n return await runNpmPublish(resolve(path), npmOptions, verbose, logger);\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(join(tmpdir(), 'screw-up-publish-'));\n\n if (verbose) {\n logger.info(`publish: Creating archive of ${targetDir}...`);\n }\n\n try {\n const result = await packAssets(\n targetDir,\n outputDir,\n checkWorkingDirectoryStatus,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n readmeReplacementPath,\n replacePeerDepsWildcards,\n peerDepsVersionPrefix,\n logger\n );\n if (result?.metadata) {\n if (verbose) {\n logger.info(\n `publish: Archive created successfully: ${result.packageFileName}`\n );\n }\n const archivePath = join(outputDir, result.packageFileName);\n return await runNpmPublish(\n archivePath,\n npmOptions,\n verbose,\n logger\n );\n } else {\n logger.error(\n `publish: Unable to find any files to pack: ${targetDir}`\n );\n return 1;\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else {\n logger.error(\n `publish: Invalid path - must be a directory or .tgz/.tar.gz file: ${path}`\n );\n return 1;\n }\n } else {\n logger.error(`publish: Path does not exist: ${path}`);\n return 1;\n }\n } catch (error) {\n logger.error(`publish: Failed to publish: ${error}`);\n return 1;\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showHelp = async () => {\n const { author, license, repository_url, version, git_commit_hash } =\n await import('./generated/packageMetadata.js');\n console.info(`screw-up [${version}-${git_commit_hash}]\nEasy package metadata inserter CLI\nCopyright (c) ${author}\nRepository: ${repository_url}\nLicense: ${license}\n\nUsage: screw-up <command> [options]\n\nCommands:\n dump [directory] Dump computed package.json as JSON\n pack [directory] Pack the project into a tar archive\n publish [directory|package.tgz] Publish the project\n\nOptions:\n -h, --help Show help\n\nExamples:\n screw-up dump # Dump computed package.json as JSON\n screw-up pack # Pack current directory\n screw-up pack --pack-destination ./dist # Pack to specific output directory\n screw-up publish # Publish current directory\n screw-up publish package.tgz # Publish existing tarball\n`);\n};\n\nconst argOptionMap = new Map([\n ['dump', new Set(['inheritable-fields'])],\n [\n 'pack',\n new Set([\n 'pack-destination',\n 'readme',\n 'inheritable-fields',\n 'peer-deps-prefix',\n ]),\n ],\n ['publish', new Set(['inheritable-fields', 'peer-deps-prefix'])],\n]);\n\nexport const cliMain = async (\n args: string[],\n logger: Logger\n): Promise<number> => {\n const parsedArgs = parseArgs(args, argOptionMap);\n\n // Handle global help or when no command is provided\n if (\n !parsedArgs.command &&\n (parsedArgs.options.help || parsedArgs.options.h)\n ) {\n await showHelp();\n return 1;\n }\n\n switch (parsedArgs.command) {\n case 'dump':\n return await dumpCommand(parsedArgs, logger);\n case 'pack':\n return await packCommand(parsedArgs, logger);\n case 'publish':\n return await publishCommand(parsedArgs, logger);\n default:\n if (parsedArgs.command) {\n logger.error(`Unknown command: ${parsedArgs.command}`);\n } else {\n logger.error(`Unknown command`);\n }\n logger.error('Run \"screw-up --help\" for usage information.');\n return 1;\n }\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 { cliMain } from './cli';\nimport { createConsoleLogger } from './internal';\nimport { name, version } from './generated/packageMetadata';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst loggerPrefix = `${name}-cli`;\nconst logger = createConsoleLogger(loggerPrefix);\n\ncliMain(\n process.argv.slice(2), // Remove 'node' and script path\n logger\n)\n .then((code) => process.exit(code))\n .catch((error) => {\n logger.error(`CLI error: ${error}`);\n process.exit(1);\n });\n"],"names":["name","logger","argOptionMap","resolve"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"main.js","sources":["../node_modules/tar-vern/dist/index.js","../src/cli-internal.ts","../src/cli.ts","../src/main.ts"],"sourcesContent":["/*!\n * name: tar-vern\n * version: 1.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 * git.commit.hash: 7ac8b1f258e17c93767650ef047a2db9f0ffd417\n */\nimport { Readable } from \"stream\";\nimport { createGzip, createGunzip } from \"zlib\";\nimport { createReadStream, createWriteStream } from \"fs\";\nimport { stat, mkdir, writeFile, readdir } from \"fs/promises\";\nimport { pipeline } from \"stream/promises\";\nimport { join, dirname } from \"path\";\nconst MAX_NAME = 100;\nconst MAX_PREFIX = 155;\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, signal) => {\n const rs = reflectStat ?? \"none\";\n if (rs !== \"none\" && options?.directoryPath) {\n signal?.throwIfAborted();\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, signal) => {\n signal?.throwIfAborted();\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, signal) => {\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 signal?.throwIfAborted();\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, { signal })\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, signal) => {\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 signal?.throwIfAborted();\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, { signal })\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, signal) => {\n const rs = reflectStat ?? \"exceptName\";\n signal?.throwIfAborted();\n const stats = await stat(filePath);\n const reader = createReadStream(filePath, { signal });\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 }, signal);\n};\nconst storeReaderToFile = async (reader, path, signal) => {\n const writer = createWriteStream(path, { signal });\n await pipeline(reader, writer, { signal });\n};\nconst getAllFilesInDirectory = async (baseDir, signal) => {\n const collectFiles = async (currentDir, relativePath) => {\n signal?.throwIfAborted();\n try {\n const entries = await readdir(currentDir, { withFileTypes: true });\n const result = [];\n const tasks = entries.map(async (entry) => {\n signal?.throwIfAborted();\n const entryRelativePath = join(relativePath, entry.name);\n if (entry.isDirectory()) {\n const entryFullPath = join(currentDir, entry.name);\n const directoryContents = await collectFiles(entryFullPath, entryRelativePath);\n return [entryRelativePath, ...directoryContents];\n } else {\n return [entryRelativePath];\n }\n });\n const allResults = await Promise.all(tasks);\n for (const entryResults of allResults) {\n result.push(...entryResults);\n }\n return result;\n } catch (error) {\n console.warn(`Warning: Could not read directory ${currentDir}:`, error);\n return [];\n }\n };\n return await collectFiles(baseDir, \"\");\n};\nconst createEntryItemGenerator = async function* (baseDir, relativePaths, includeDirectory, reflectStat, signal) {\n const rs = reflectStat ?? \"exceptName\";\n const includeDir = includeDirectory ?? true;\n const pathsToProcess = relativePaths ?? await getAllFilesInDirectory(baseDir, signal);\n for (const relativePath of pathsToProcess) {\n signal?.throwIfAborted();\n const fsPath = join(baseDir, relativePath);\n try {\n signal?.throwIfAborted();\n const stats = await stat(fsPath);\n if (includeDir && stats.isDirectory()) {\n yield await createDirectoryItem(relativePath, rs, {\n directoryPath: fsPath\n }, signal);\n } else if (stats.isFile()) {\n yield await createReadFileItem(relativePath, fsPath, rs, void 0, signal);\n }\n } catch (error) {\n console.warn(`Warning: Could not access ${fsPath}:`, error);\n continue;\n }\n }\n};\nconst extractTo = async (iterator, basePath, signal) => {\n for await (const entry of iterator) {\n signal?.throwIfAborted();\n const targetPath = join(basePath, entry.path);\n if (entry.kind === \"directory\") {\n try {\n signal?.throwIfAborted();\n await mkdir(targetPath, { recursive: true, mode: entry.mode });\n } catch (error) {\n if (error.code !== \"EEXIST\") {\n throw error;\n }\n }\n } else if (entry.kind === \"file\") {\n const parentDir = dirname(targetPath);\n signal?.throwIfAborted();\n await mkdir(parentDir, { recursive: true });\n const fileEntry = entry;\n const content = await fileEntry.getContent(\"buffer\");\n await writeFile(targetPath, content, { mode: entry.mode, signal });\n }\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 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 content = entryItemContent;\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n content.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 (content.kind) {\n // Content is a generator\n case \"generator\": {\n for await (const contentBytes of content.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 chunk of content.readable) {\n signal?.throwIfAborted();\n const contentBytes = getBuffer(chunk);\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(), { signal });\n }\n // Gzip compression\n case \"gzip\": {\n const gzipStream = createGzip({ level: 9 });\n const entryItemStream = Readable.from(entryItemIterator(), { signal });\n entryItemStream.pipe(gzipStream);\n return gzipStream;\n }\n }\n};\nconst parseOctalBytes = (buffer, offset, length) => {\n const str = buffer.subarray(offset, offset + length).toString(\"ascii\").replace(/\\0/g, \"\").trim();\n return str ? parseInt(str, 8) : 0;\n};\nconst parseString = (buffer, offset, length) => {\n return buffer.subarray(offset, offset + length).toString(\"utf8\").replace(/\\0/g, \"\").trim();\n};\nconst readExactBytes = async (iterator, size, signal) => {\n const chunks = [];\n let totalRead = 0;\n while (totalRead < size) {\n signal?.throwIfAborted();\n const { value, done } = await iterator.next();\n if (done) {\n if (totalRead === 0) {\n return void 0;\n } else {\n throw new Error(`Unexpected end of stream: expected ${size} bytes, got ${totalRead} bytes`);\n }\n }\n const chunk = getBuffer(value);\n const needed = size - totalRead;\n if (chunk.length <= needed) {\n chunks.push(chunk);\n totalRead += chunk.length;\n } else {\n chunks.push(chunk.subarray(0, needed));\n await iterator.return?.(chunk.subarray(needed));\n totalRead = size;\n }\n }\n return Buffer.concat(chunks, size);\n};\nconst skipExactBytes = async (iterator, size, signal) => {\n let totalSkipped = 0;\n while (totalSkipped < size) {\n signal?.throwIfAborted();\n const { value, done } = await iterator.next();\n if (done) {\n throw new Error(`Unexpected end of stream: expected to skip ${size} bytes, skipped ${totalSkipped} bytes`);\n }\n const chunk = getBuffer(value);\n const needed = size - totalSkipped;\n if (chunk.length <= needed) {\n totalSkipped += chunk.length;\n } else {\n await iterator.return?.(chunk.subarray(needed));\n totalSkipped = size;\n }\n }\n};\nconst skipPaddingBytesTo512Boundary = async (iterator, contentSize, signal) => {\n const padding = (512 - contentSize % 512) % 512;\n if (padding > 0) {\n await skipExactBytes(iterator, padding, signal);\n }\n};\nconst parseTarHeader = (buffer) => {\n if (buffer.every((b) => b === 0)) {\n return void 0;\n }\n const name = parseString(buffer, 0, 100);\n const mode = parseOctalBytes(buffer, 100, 8);\n const uid = parseOctalBytes(buffer, 108, 8);\n const gid = parseOctalBytes(buffer, 116, 8);\n const size = parseOctalBytes(buffer, 124, 12);\n const mtime = new Date(parseOctalBytes(buffer, 136, 12) * 1e3);\n const checksum = parseOctalBytes(buffer, 148, 8);\n const typeflag = parseString(buffer, 156, 1);\n const magic = parseString(buffer, 257, 6);\n const uname = parseString(buffer, 265, 32);\n const gname = parseString(buffer, 297, 32);\n const prefix = parseString(buffer, 345, 155);\n if (magic !== \"ustar\") {\n throw new Error(`Invalid tar format: magic=\"${magic}\"`);\n }\n let calculatedSum = 0;\n for (let i = 0; i < 512; i++) {\n if (i >= 148 && i < 156) {\n calculatedSum += 32;\n } else {\n calculatedSum += buffer[i];\n }\n }\n if (calculatedSum !== checksum) {\n throw new Error(`Invalid checksum: expected ${checksum}, got ${calculatedSum}`);\n }\n let path = prefix ? `${prefix}/${name}` : name;\n if (path.endsWith(\"/\")) {\n path = path.slice(0, -1);\n }\n const kind = typeflag === \"5\" ? \"directory\" : \"file\";\n return {\n kind,\n path,\n size,\n mode,\n uid,\n gid,\n mtime,\n uname: uname || uid.toString(),\n gname: gname || gid.toString(),\n checksum,\n consumed: false\n };\n};\nconst createBufferedAsyncIterator = (iterable, signal) => {\n const buffer = [];\n const iterator = iterable[Symbol.asyncIterator]();\n return {\n next: async () => {\n signal?.throwIfAborted();\n if (buffer.length > 0) {\n return { value: buffer.shift(), done: false };\n }\n return iterator.next();\n },\n return: async (value) => {\n if (value !== void 0) {\n buffer.unshift(value);\n }\n return { value: void 0, done: false };\n }\n };\n};\nconst createReadableFromIterator = (iterator, size, signal, consumedRef) => {\n const generator = async function* () {\n let remainingBytes = size;\n while (remainingBytes > 0) {\n signal?.throwIfAborted();\n const { value, done } = await iterator.next();\n if (done) {\n throw new Error(`Unexpected end of stream: expected ${size} bytes, remaining ${remainingBytes} bytes`);\n }\n const chunk = getBuffer(value);\n if (chunk.length <= remainingBytes) {\n remainingBytes -= chunk.length;\n yield chunk;\n } else {\n const needed = chunk.subarray(0, remainingBytes);\n const excess = chunk.subarray(remainingBytes);\n remainingBytes = 0;\n await iterator.return?.(excess);\n yield needed;\n break;\n }\n }\n await skipPaddingBytesTo512Boundary(iterator, size, signal);\n consumedRef.consumed = true;\n };\n return Readable.from(generator(), { signal });\n};\nconst createTarExtractor = async function* (readable, compressionType, signal) {\n const ct = compressionType ?? \"none\";\n let inputStream;\n switch (ct) {\n case \"gzip\":\n const gunzip = createGunzip();\n readable.pipe(gunzip);\n inputStream = gunzip;\n break;\n case \"none\":\n default:\n inputStream = readable;\n break;\n }\n const iterator = createBufferedAsyncIterator(inputStream, signal);\n let header;\n while (true) {\n signal?.throwIfAborted();\n if (header?.kind === \"file\" && !header.consumed) {\n await skipExactBytes(iterator, header.size, signal);\n await skipPaddingBytesTo512Boundary(iterator, header.size, signal);\n header.consumed = true;\n }\n let headerBuffer;\n try {\n headerBuffer = await readExactBytes(iterator, 512, signal);\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"Unexpected end of stream\")) {\n throw new Error(\"Invalid tar format: incomplete header\");\n }\n throw error;\n }\n if (headerBuffer === void 0) {\n break;\n }\n header = parseTarHeader(headerBuffer);\n if (!header) {\n const secondBlock = await readExactBytes(iterator, 512, signal);\n if (secondBlock === void 0 || secondBlock.every((b) => b === 0)) {\n break;\n }\n throw new Error(\"Invalid tar format: expected terminator block\");\n }\n if (header.kind === \"directory\") {\n yield {\n kind: \"directory\",\n path: header.path,\n mode: header.mode,\n uid: header.uid,\n gid: header.gid,\n uname: header.uname,\n gname: header.gname,\n date: header.mtime\n };\n } else {\n const currentHeader = header;\n yield {\n kind: \"file\",\n path: currentHeader.path,\n mode: currentHeader.mode,\n uid: currentHeader.uid,\n gid: currentHeader.gid,\n uname: currentHeader.uname,\n gname: currentHeader.gname,\n date: currentHeader.mtime,\n getContent: async (type) => {\n if (currentHeader.consumed) {\n throw new Error(\"Content has already been consumed. Multiple calls to getContent are not supported.\");\n }\n switch (type) {\n // For string\n case \"string\": {\n const dataBuffer = await readExactBytes(iterator, currentHeader.size, signal);\n if (dataBuffer === void 0) {\n throw new Error(`Unexpected end of stream while reading file data for ${currentHeader.path}`);\n }\n await skipPaddingBytesTo512Boundary(iterator, currentHeader.size, signal);\n currentHeader.consumed = true;\n return dataBuffer.toString(\"utf8\");\n }\n // For buffer\n case \"buffer\": {\n const dataBuffer = await readExactBytes(iterator, currentHeader.size, signal);\n if (dataBuffer === void 0) {\n throw new Error(`Unexpected end of stream while reading file data for ${currentHeader.path}`);\n }\n await skipPaddingBytesTo512Boundary(iterator, currentHeader.size, signal);\n currentHeader.consumed = true;\n return dataBuffer;\n }\n // For Readble stream\n case \"readable\": {\n const readable2 = createReadableFromIterator(iterator, currentHeader.size, signal, currentHeader);\n return readable2;\n }\n default:\n throw new Error(`Unsupported content type: ${type}`);\n }\n }\n };\n }\n }\n};\nexport {\n createDirectoryItem,\n createEntryItemGenerator,\n createFileItem,\n createGeneratorFileItem,\n createReadFileItem,\n createReadableFileItem,\n createTarExtractor,\n createTarPacker,\n extractTo,\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 { join } from 'path';\nimport { createReadStream, existsSync } from 'fs';\nimport { mkdir, mkdtemp, writeFile, copyFile, rm } from 'fs/promises';\nimport {\n createTarPacker,\n storeReaderToFile,\n extractTo,\n createTarExtractor,\n createEntryItemGenerator,\n} from 'tar-vern';\nimport { spawn } from 'child_process';\nimport { tmpdir } from 'os';\nimport {\n resolveRawPackageJsonObject,\n findWorkspaceRoot,\n collectWorkspaceSiblings,\n replacePeerDependenciesWildcards,\n Logger,\n} from './internal';\nimport { getFetchGitMetadata } from './analyzer';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Execute npm pack and return the generated tarball path\n * @param targetDir - Target directory to pack\n * @param packDestDir - Directory to store the generated tarball (must exist)\n * @returns Path to generated tarball\n */\nconst runNpmPack = async (\n targetDir: string,\n packDestDir: string\n): Promise<string> => {\n return new Promise((res, rej) => {\n const npmProcess = spawn(\n 'npm',\n ['pack', '--pack-destination', packDestDir],\n {\n cwd: targetDir,\n stdio: ['ignore', 'pipe', 'pipe'],\n }\n );\n\n let stdout = '';\n let stderr = '';\n\n npmProcess.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n npmProcess.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n npmProcess.on('close', (code) => {\n if (code === 0) {\n // npm pack outputs the filename on stdout (last line or line ending with .tgz)\n const lines = stdout.trim().split('\\n');\n // Find the line that ends with .tgz (actual filename) or use the last line\n const filename =\n lines.find((line) => line.trim().endsWith('.tgz')) ||\n lines[lines.length - 1];\n if (filename && filename.trim().endsWith('.tgz')) {\n const fullPath = join(packDestDir, filename.trim());\n res(fullPath);\n } else {\n rej(new Error('npm pack did not output a valid .tgz filename'));\n }\n } else {\n const errorMessage = `npm pack failed with exit code ${code}`;\n const fullError = stderr\n ? `${errorMessage}\\nstderr: ${stderr}`\n : errorMessage;\n if (stdout) {\n rej(new Error(`${fullError}\\nstdout: ${stdout}`));\n } else {\n rej(new Error(fullError));\n }\n }\n });\n\n npmProcess.on('error', (error) => {\n rej(new Error(`Failed to spawn npm pack: ${error.message}`));\n });\n });\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Packed result\n */\nexport interface PackedResult {\n readonly packageFileName: string;\n readonly metadata: any;\n}\n\n/**\n * Pack assets using npm pack delegation method\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 * @param alwaysOverrideVersionFromGit - Always override version from Git (default: true)\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 alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n readmeReplacementPath: string | undefined,\n replacePeerDepsWildcards: boolean,\n peerDepsVersionPrefix: string,\n logger: Logger\n): Promise<PackedResult | undefined> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n throw new Error(`Target directory is not found: ${targetDir}`);\n }\n\n let readmeReplacementCandidatePath = readmeReplacementPath;\n if (\n readmeReplacementCandidatePath &&\n !existsSync(readmeReplacementCandidatePath)\n ) {\n throw new Error(\n `README replacement file is not found: ${readmeReplacementCandidatePath}`\n );\n }\n\n // Get Git metadata fetcher function\n const fetchGitMetadata = getFetchGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n\n // Resolve package metadata with source tracking\n const result = await resolveRawPackageJsonObject(\n targetDir,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n\n let resolvedPackageJson = result.metadata;\n\n // Check if package is private\n if (resolvedPackageJson?.private) {\n return undefined;\n }\n\n // Extract README replacement directive on package.json\n const packageJsonReadme = resolvedPackageJson.readme;\n if (packageJsonReadme) {\n // When does not override by parameter (CLI)\n if (!readmeReplacementCandidatePath) {\n const packageJsonReadmeDir = result.sourceMap.get('readme');\n const packageJsonReadmePath = join(\n packageJsonReadmeDir,\n packageJsonReadme\n );\n if (!existsSync(packageJsonReadmePath)) {\n throw new Error(\n `README replacement file is not found: ${packageJsonReadmePath}`\n );\n }\n readmeReplacementCandidatePath = packageJsonReadmePath;\n }\n // Always remove it.\n delete resolvedPackageJson.readme;\n }\n\n // Replace peerDependencies wildcards if enabled and in workspace\n if (replacePeerDepsWildcards) {\n const workspaceRoot = await findWorkspaceRoot(targetDir, logger);\n if (workspaceRoot) {\n const siblings = await collectWorkspaceSiblings(\n workspaceRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n if (siblings.size > 0) {\n resolvedPackageJson = replacePeerDependenciesWildcards(\n resolvedPackageJson,\n siblings,\n peerDepsVersionPrefix\n );\n }\n }\n }\n\n // Create temporary directory for npm pack\n const baseTempDir = await mkdtemp(join(tmpdir(), 'screw-up-npm-pack-'));\n await mkdir(baseTempDir, { recursive: true });\n\n try {\n // Step 1: Execute npm pack to generate initial tarball\n const npmTarballPath = await runNpmPack(targetDir, baseTempDir);\n\n // Step 2: Extract the npm-generated tarball into staging directory\n const stagingDir = join(baseTempDir, 'staging');\n await mkdir(stagingDir, { recursive: true });\n\n const stream = createReadStream(npmTarballPath);\n await extractTo(createTarExtractor(stream, 'gzip'), stagingDir);\n\n // Step 3: Process extracted files (package.json/README replacement)\n // Replace package.json with our processed version\n const packageJsonPath = join(stagingDir, 'package', 'package.json');\n if (existsSync(packageJsonPath)) {\n await writeFile(\n packageJsonPath,\n JSON.stringify(resolvedPackageJson, null, 2)\n );\n }\n\n // Replace README.md\n if (readmeReplacementCandidatePath) {\n const readmeDestPath = join(stagingDir, 'package', 'README.md');\n await copyFile(readmeReplacementCandidatePath, readmeDestPath);\n }\n\n // Step 4: Re-create tarball with modified files\n const outputFileName = `${resolvedPackageJson?.name?.replace('/', '-') ?? 'package'}-${resolvedPackageJson?.version ?? '0.0.0'}.tgz`;\n await mkdir(outputDir, { recursive: true });\n const outputFile = join(outputDir, outputFileName);\n\n // Re-packing final tar file from the modified staging directory\n const itemGenerator = createEntryItemGenerator(stagingDir);\n const packer = createTarPacker(itemGenerator, 'gzip');\n await storeReaderToFile(packer, outputFile);\n\n // PackedResult\n return {\n packageFileName: outputFileName,\n metadata: resolvedPackageJson,\n };\n } finally {\n // Clean up temporary directory\n await rm(baseTempDir, { recursive: true, force: true });\n }\n};\n\n/**\n * Get computed package.json object\n * @param targetDir - Target directory to resolve package metadata\n * @param fetchGitMetadata - Git metadata fetcher\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 fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): 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,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n return result.metadata;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport interface ParsedArgs {\n readonly argv: string[];\n readonly command?: string;\n readonly positional: string[];\n readonly options: Record<string, string | boolean>;\n}\n\n/**\n * Parse command line arguments\n * @param args - Command line arguments\n * @param argOptionMap - Map of command options to their argument options\n * @returns Parsed arguments\n */\nexport const parseArgs = (\n args: string[],\n argOptionMap: Map<string, Set<string>>\n): ParsedArgs => {\n const result: any = {\n argv: args,\n positional: [],\n options: {},\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n // Found option bedore command\n if (!result.command) {\n // Always flag option\n result.options[optionName] = true;\n } else {\n // Detect an argument option in the command\n const argOptions = argOptionMap.get(result.command);\n if (argOptions.has(optionName)) {\n // Option has an argument\n i++;\n result.options[optionName] = args[i];\n } else {\n // Option is flag\n result.options[optionName] = true;\n }\n }\n // Sigle hyphen option is always flag\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n if (optionName.length == 1) {\n result.options[optionName] = true;\n }\n } else if (!result.command) {\n result.command = arg;\n } else {\n result.positional.push(arg);\n }\n }\n\n return result;\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 { tmpdir } from 'os';\nimport {\n packAssets,\n parseArgs,\n ParsedArgs,\n getComputedPackageJsonObject,\n} from './cli-internal';\nimport { getFetchGitMetadata } from './analyzer';\nimport { Logger } from './internal';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\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 = (\n inheritableFieldsOption: string | boolean | undefined\n): 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(\n inheritableFieldsOption\n .split(',')\n .map((field) => field.trim())\n .filter((field) => field.length > 0)\n );\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showDumpHelp = () => {\n console.info(`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 --no-git-version-override Do not override version from Git (use package.json version)\n -h, --help Show help for dump command\n`);\n};\n\nconst dumpCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showDumpHelp();\n return 1;\n }\n\n const directory = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\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 // The dump command needs clean output, so ignore debug/info/warn outputs.\n const _logger: Logger = {\n debug: (msg) => {},\n info: (msg) => {},\n warn: (msg) => {},\n error: logger.error,\n };\n\n try {\n // Get Git metadata fetcher function\n const fetchGitMetadata = getFetchGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n _logger\n );\n\n // Resolve package metadata\n const computedPackageJson = await getComputedPackageJsonObject(\n targetDir,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n _logger\n );\n\n if (computedPackageJson) {\n // Output console directly\n console.info(JSON.stringify(computedPackageJson, null, 2));\n } else {\n _logger.error(`dump: Unable to read package.json from: ${targetDir}`);\n return 1;\n }\n } catch (error) {\n _logger.error(`dump: Failed to dump package.json: ${error}`);\n return 1;\n }\n return 0;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showPackHelp = () => {\n console.info(`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-git-version-override Do not override version from Git (use package.json 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 --verbose Print verbose log\n -h, --help Show help for pack command\n`);\n};\n\nconst packCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showPackHelp();\n return 1;\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 alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const verbose = args.options['verbose'] ? true : false;\n\n const targetDir = resolve(directory ?? process.cwd());\n const outputDir = packDestination ? resolve(packDestination) : process.cwd();\n const readmeReplacementPath = readmeOption\n ? resolve(readmeOption)\n : undefined;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n if (verbose) {\n logger.info(`pack: Creating archive of ${targetDir}...`);\n }\n\n try {\n const result = await packAssets(\n targetDir,\n outputDir,\n checkWorkingDirectoryStatus,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n readmeReplacementPath,\n replacePeerDepsWildcards,\n peerDepsVersionPrefix,\n logger\n );\n if (result) {\n if (verbose) {\n logger.info(\n `pack: Archive created successfully: ${result.packageFileName}`\n );\n } else {\n logger.info(result.packageFileName);\n }\n } else {\n logger.error(`pack: Unable to find any files to pack: ${targetDir}`);\n return 1;\n }\n } catch (error) {\n logger.error(`pack: Failed to create archive: ${error}`);\n return 1;\n }\n return 0;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showPublishHelp = () => {\n console.info(`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\nconst runNpmPublish = async (\n tarballPath: string,\n npmOptions: string[],\n verbose: boolean,\n logger: Logger\n) => {\n if (verbose) {\n logger.info(`publish: Publishing ${tarballPath} to npm...`);\n }\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 logger.info(`TEST_MODE: Would execute: npm ${publishArgs.join(' ')}`);\n logger.info(`TEST_MODE: Tarball path: ${tarballPath}`);\n logger.info(`TEST_MODE: Options: ${npmOptions.join(' ')}`);\n logger.info(`publish: Successfully published ${tarballPath}`);\n return 0;\n }\n\n const npmProcess = spawn('npm', publishArgs, { stdio: 'inherit' });\n\n return new Promise<number>((resolve, reject) => {\n npmProcess.on('close', (code) => {\n if (code === 0) {\n if (verbose) {\n logger.info(`publish: Successfully published ${tarballPath}`);\n }\n resolve(code);\n } else {\n logger.error(`publish: npm publish failed: ${tarballPath}`);\n resolve(code);\n }\n });\n npmProcess.on('error', reject);\n });\n};\n\nconst publishCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showPublishHelp();\n return 1;\n }\n\n const path = args.positional[0];\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 alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const verbose = args.options['verbose'] ? true : false;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n const readmeReplacementPath = readmeOption\n ? resolve(readmeOption)\n : undefined;\n\n // Aggregate npm options, except screw-up options.\n const npmOptions: string[] = [];\n for (let i = 0; i < args.argv.length; i++) {\n const arg = args.argv[i];\n if (arg === 'publish') {\n // Skip the command itself\n } else if (\n arg === '--help' ||\n arg === '--verbose' ||\n arg === '-h' ||\n arg === '--no-wds' ||\n arg === '--no-git-version-override' ||\n arg === '--no-replace-peer-deps'\n ) {\n } else if (\n arg === '--readme' ||\n arg === '--inheritable-fields' ||\n arg === '--peer-deps-prefix'\n ) {\n i++;\n } else {\n npmOptions.push(arg);\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(join(tmpdir(), 'screw-up-publish-'));\n\n if (verbose) {\n logger.info(`publish: Creating archive of ${targetDir}...`);\n }\n\n try {\n const result = await packAssets(\n targetDir,\n outputDir,\n checkWorkingDirectoryStatus,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n readmeReplacementPath,\n replacePeerDepsWildcards,\n peerDepsVersionPrefix,\n logger\n );\n if (result?.metadata) {\n if (verbose) {\n logger.info(\n `publish: Archive created successfully: ${result.packageFileName}`\n );\n }\n const archivePath = join(outputDir, result.packageFileName);\n return await runNpmPublish(archivePath, npmOptions, verbose, logger);\n } else {\n logger.error(\n `publish: Unable to find any files to pack: ${targetDir}`\n );\n return 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 (\n pathStat.isFile() &&\n (path.endsWith('.tgz') || path.endsWith('.tar.gz'))\n ) {\n // Argument is a tarball file - publish directly\n return await runNpmPublish(resolve(path), npmOptions, verbose, logger);\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(join(tmpdir(), 'screw-up-publish-'));\n\n if (verbose) {\n logger.info(`publish: Creating archive of ${targetDir}...`);\n }\n\n try {\n const result = await packAssets(\n targetDir,\n outputDir,\n checkWorkingDirectoryStatus,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n readmeReplacementPath,\n replacePeerDepsWildcards,\n peerDepsVersionPrefix,\n logger\n );\n if (result?.metadata) {\n if (verbose) {\n logger.info(\n `publish: Archive created successfully: ${result.packageFileName}`\n );\n }\n const archivePath = join(outputDir, result.packageFileName);\n return await runNpmPublish(\n archivePath,\n npmOptions,\n verbose,\n logger\n );\n } else {\n logger.error(\n `publish: Unable to find any files to pack: ${targetDir}`\n );\n return 1;\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else {\n logger.error(\n `publish: Invalid path - must be a directory or .tgz/.tar.gz file: ${path}`\n );\n return 1;\n }\n } else {\n logger.error(`publish: Path does not exist: ${path}`);\n return 1;\n }\n } catch (error) {\n logger.error(`publish: Failed to publish: ${error}`);\n return 1;\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showHelp = async () => {\n const { author, license, repository_url, version, git_commit_hash } =\n await import('./generated/packageMetadata.js');\n console.info(`screw-up [${version}-${git_commit_hash}]\nEasy package metadata inserter CLI\nCopyright (c) ${author}\nRepository: ${repository_url}\nLicense: ${license}\n\nUsage: screw-up <command> [options]\n\nCommands:\n dump [directory] Dump computed package.json as JSON\n pack [directory] Pack the project into a tar archive\n publish [directory|package.tgz] Publish the project\n\nOptions:\n -h, --help Show help\n\nExamples:\n screw-up dump # Dump computed package.json as JSON\n screw-up pack # Pack current directory\n screw-up pack --pack-destination ./dist # Pack to specific output directory\n screw-up publish # Publish current directory\n screw-up publish package.tgz # Publish existing tarball\n`);\n};\n\nconst argOptionMap = new Map([\n ['dump', new Set(['inheritable-fields'])],\n [\n 'pack',\n new Set([\n 'pack-destination',\n 'readme',\n 'inheritable-fields',\n 'peer-deps-prefix',\n ]),\n ],\n ['publish', new Set(['inheritable-fields', 'peer-deps-prefix'])],\n]);\n\nexport const cliMain = async (\n args: string[],\n logger: Logger\n): Promise<number> => {\n const parsedArgs = parseArgs(args, argOptionMap);\n\n // Handle global help or when no command is provided\n if (\n !parsedArgs.command &&\n (parsedArgs.options.help || parsedArgs.options.h)\n ) {\n await showHelp();\n return 1;\n }\n\n switch (parsedArgs.command) {\n case 'dump':\n return await dumpCommand(parsedArgs, logger);\n case 'pack':\n return await packCommand(parsedArgs, logger);\n case 'publish':\n return await publishCommand(parsedArgs, logger);\n default:\n if (parsedArgs.command) {\n logger.error(`Unknown command: ${parsedArgs.command}`);\n } else {\n logger.error(`Unknown command`);\n }\n logger.error('Run \"screw-up --help\" for usage information.');\n return 1;\n }\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 { cliMain } from './cli';\nimport { createConsoleLogger } from './internal';\nimport { name, version } from './generated/packageMetadata';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst loggerPrefix = `${name}-cli`;\nconst logger = createConsoleLogger(loggerPrefix);\n\ncliMain(\n process.argv.slice(2), // Remove 'node' and script path\n logger\n)\n .then((code) => process.exit(code))\n .catch((error) => {\n logger.error(`CLI error: ${error}`);\n process.exit(1);\n });\n"],"names":["name","logger","argOptionMap","resolve"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,WAAW,CAAC,eAAe,aAAa,gBAAgB;AAC5D,SAAO,wCAAkB,gBAAgB,QAAQ,YAAY,SAAQ,IAAK;AAC5E;AACA,MAAM,YAAY,CAAC,SAAS;AAC1B,SAAO,OAAO,SAAS,IAAI,IAAI,OAAO,OAAO,KAAK,MAAM,MAAM;AAChE;AACA,MAAM,sBAAsB,OAAO,MAAM,aAAa,SAAS,WAAW;;AACxE,QAAM,KAAK;AACX,MAAqB,mCAAS,eAAe;AAE3C,UAAM,QAAQ,MAAM,KAAK,QAAQ,aAAa;AAC9C,UAAM,QAAO,wCAAS,SAAT,YAAiB,MAAM;AACpC,UAAM,OAAM,wCAAS,QAAT,YAAgB,MAAM;AAClC,UAAM,OAAM,wCAAS,QAAT,YAAgB,MAAM;AAClC,UAAM,QAAO,wCAAS,SAAT,YAAiB,MAAM;AACpC,UAAM,QAAQ,SAAS,mCAAS,OAAO,MAAM,KAAK,EAAE;AACpD,UAAM,QAAQ,SAAS,mCAAS,OAAO,MAAM,KAAK,EAAE;AACpD,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACE,OAAO;AACL,UAAM,QAAO,wCAAS,SAAT,YAAiB;AAC9B,UAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,UAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,UAAM,QAAO,wCAAS,SAAT,YAAiC,oBAAI,KAAI;AACtD,UAAM,QAAQ,SAAS,mCAAS,OAAO,QAAQ,EAAE;AACjD,UAAM,QAAQ,SAAS,mCAAS,OAAO,QAAQ,EAAE;AACjD,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACE;AACF;AAqBA,MAAM,yBAAyB,OAAO,MAAM,UAAU,SAAS,WAAW;;AACxE,QAAM,QAAO,wCAAS,SAAT,YAAiB;AAC9B,QAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,QAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,QAAM,QAAO,wCAAS,SAAT,YAAiC,oBAAI,KAAI;AACtD,QAAM,SAAQ,wCAAS,UAAT,YAAkB;AAChC,QAAM,SAAQ,wCAAS,UAAT,YAAkB;AAChC,MAAI,SAAS,mCAAS;AACtB,MAAI,CAAC,QAAQ;AACX,UAAM,SAAS,CAAA;AACf,aAAS;AACT,qBAAiB,SAAS,UAAU;AAElC,YAAM,SAAS,UAAU,KAAK;AAC9B,aAAO,KAAK,MAAM;AAClB,gBAAU,OAAO;AAAA,IACnB;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN;AAAA,QACA,UAAU,SAAS,KAAK,QAAQ,EAAE,OAAM,CAAE;AAAA,MAClD;AAAA,IACA;AAAA,EACE,OAAO;AACL,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACR;AAAA,IACA;AAAA,EACE;AACF;AAmDA,MAAM,qBAAqB,OAAO,MAAM,UAAU,aAAa,SAAS,WAAW;AACjF,QAAM,KAAK;AAEX,QAAM,QAAQ,MAAM,KAAK,QAAQ;AACjC,QAAM,SAAS,iBAAiB,UAAU,EAAE,OAAM,CAAE;AACpD,QAAM,OAAyC,MAAM;AACrD,QAAM,MAAuC,MAAM;AACnD,QAAM,MAAuC,MAAM;AACnD,QAAM,OAAyC,MAAM;AACrD,QAAM,QAAQ,SAAS,mCAAS,OAAO,MAAM,KAAK,EAAE;AACpD,QAAM,QAAQ,SAAS,mCAAS,OAAO,MAAM,KAAK,EAAE;AACpD,SAAO,MAAM,uBAAuB,MAAM,QAAQ;AAAA,IAChD,QAAQ,MAAM;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK,MAAM;AACX;AACA,MAAM,oBAAoB,OAAO,QAAQ,MAAM,WAAW;AACxD,QAAM,SAAS,kBAAkB,MAAM,EAAE,OAAM,CAAE;AACjD,QAAM,SAAS,QAAQ,QAAQ,EAAE,OAAM,CAAE;AAC3C;AACA,MAAM,yBAAyB,OAAO,SAAS,WAAW;AACxD,QAAM,eAAe,OAAO,YAAY,iBAAiB;AAEvD,QAAI;AACF,YAAM,UAAU,MAAM,QAAQ,YAAY,EAAE,eAAe,MAAM;AACjE,YAAM,SAAS,CAAA;AACf,YAAM,QAAQ,QAAQ,IAAI,OAAO,UAAU;AACzC,yCAAQ;AACR,cAAM,oBAAoB,KAAK,cAAc,MAAM,IAAI;AACvD,YAAI,MAAM,eAAe;AACvB,gBAAM,gBAAgB,KAAK,YAAY,MAAM,IAAI;AACjD,gBAAM,oBAAoB,MAAM,aAAa,eAAe,iBAAiB;AAC7E,iBAAO,CAAC,mBAAmB,GAAG,iBAAiB;AAAA,QACjD,OAAO;AACL,iBAAO,CAAC,iBAAiB;AAAA,QAC3B;AAAA,MACF,CAAC;AACD,YAAM,aAAa,MAAM,QAAQ,IAAI,KAAK;AAC1C,iBAAW,gBAAgB,YAAY;AACrC,eAAO,KAAK,GAAG,YAAY;AAAA,MAC7B;AACA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,KAAK,qCAAqC,UAAU,KAAK,KAAK;AACtE,aAAO,CAAA;AAAA,IACT;AAAA,EACF;AACA,SAAO,MAAM,aAAa,SAAS,EAAE;AACvC;AACA,MAAM,2BAA2B,iBAAiB,SAAS,eAAe,kBAAkB,aAAa,QAAQ;AAC/G,QAAM,KAAoB;AAC1B,QAAM,aAAiC;AACvC,QAAM,iBAAkC,MAAM,uBAAuB,SAAS,MAAM;AACpF,aAAW,gBAAgB,gBAAgB;AAEzC,UAAM,SAAS,KAAK,SAAS,YAAY;AACzC,QAAI;AACF,uCAAQ;AACR,YAAM,QAAQ,MAAM,KAAK,MAAM;AAC/B,UAAI,cAAc,MAAM,eAAe;AACrC,cAAM,MAAM,oBAAoB,cAAc,IAAI;AAAA,UAChD,eAAe;AAAA,QACzB,GAAW,MAAM;AAAA,MACX,WAAW,MAAM,UAAU;AACzB,cAAM,MAAM,mBAAmB,cAAc,QAAQ,IAAI,QAAQ,MAAM;AAAA,MACzE;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,KAAK,6BAA6B,MAAM,KAAK,KAAK;AAC1D;AAAA,IACF;AAAA,EACF;AACF;AACA,MAAM,YAAY,OAAO,UAAU,UAAU,WAAW;AACtD,mBAAiB,SAAS,UAAU;AAElC,UAAM,aAAa,KAAK,UAAU,MAAM,IAAI;AAC5C,QAAI,MAAM,SAAS,aAAa;AAC9B,UAAI;AACF,yCAAQ;AACR,cAAM,MAAM,YAAY,EAAE,WAAW,MAAM,MAAM,MAAM,MAAM;AAAA,MAC/D,SAAS,OAAO;AACd,YAAI,MAAM,SAAS,UAAU;AAC3B,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF,WAAW,MAAM,SAAS,QAAQ;AAChC,YAAM,YAAY,QAAQ,UAAU;AAEpC,YAAM,MAAM,WAAW,EAAE,WAAW,KAAI,CAAE;AAC1C,YAAM,YAAY;AAClB,YAAM,UAAU,MAAM,UAAU,WAAW,QAAQ;AACnD,YAAM,UAAU,YAAY,SAAS,EAAE,MAAM,MAAM,MAAM,QAAQ;AAAA,IACnE;AAAA,EACF;AACF;AACA,MAAM,iBAAiB,CAAC,QAAQ;AAC9B,SAAO,OAAO,WAAW,KAAK,MAAM;AACtC;AACA,MAAM,mBAAmB,CAAC,KAAK,aAAa;AAC1C,MAAI,QAAQ;AACZ,MAAI,IAAI;AACR,SAAO,IAAI,IAAI,QAAQ;AACrB,UAAM,YAAY,IAAI,YAAY,CAAC;AACnC,UAAM,OAAO,OAAO,cAAc,SAAS;AAC3C,UAAM,YAAY,OAAO,WAAW,MAAM,MAAM;AAChD,QAAI,QAAQ,YAAY,SAAU;AAClC,aAAS;AACT,SAAK,KAAK;AAAA,EACZ;AACA,SAAO,IAAI,MAAM,GAAG,CAAC;AACvB;AACA,MAAM,YAAY,CAAC,SAAS;;AAC1B,MAAI,eAAe,IAAI,KAAK,UAAU;AACpC,WAAO,EAAE,QAAQ,IAAI,MAAM,KAAI;AAAA,EACjC;AACA,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAIA,SAAO,WAAM,IAAG,MAAT,YAAe;AAC1B,MAAI,SAAS,MAAM,KAAK,GAAG;AAC3B,MAAI,eAAeA,KAAI,IAAI,UAAU;AACnC,IAAAA,QAAO,iBAAiBA,OAAM,QAAQ;AAAA,EACxC;AACA,SAAO,eAAe,MAAM,IAAI,YAAY;AAC1C,aAAS,iBAAiB,QAAQ,UAAU;AAAA,EAC9C;AACA,SAAO,EAAE,QAAQ,MAAAA,MAAI;AACvB;AACA,MAAM,gBAAgB,CAAC,OAAO,WAAW;AACvC,QAAM,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,SAAS,GAAG,GAAG,IAAI;AAC1D,SAAO,OAAO,KAAK,KAAK,OAAO;AACjC;AACA,MAAM,iBAAiB,CAAC,WAAW;AACjC,QAAM,QAAQ,OAAO,SAAS;AAC9B,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT,OAAO;AACL,WAAO,OAAO,OAAO,CAAC,QAAQ,OAAO,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC;AAAA,EAC7D;AACF;AACA,MAAM,kBAAkB,OAAO,MAAM,MAAM,CAAC;AAC5C,MAAM,kBAAkB,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,KAAK,KAAK,SAAS;AAChF,QAAM,SAAS,OAAO,MAAM,KAAK,CAAC;AAClC,QAAM,EAAE,MAAAA,OAAM,WAAW,UAAU,IAAI;AACvC,SAAO,MAAMA,OAAM,GAAG,KAAK,MAAM;AACjC,gBAAc,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,GAAG;AAC9C,gBAAc,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG;AACtC,gBAAc,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG;AACtC,gBAAc,MAAM,EAAE,EAAE,KAAK,QAAQ,GAAG;AACxC,gBAAc,KAAK,MAAM,KAAK,QAAO,IAAK,GAAG,GAAG,EAAE,EAAE,KAAK,QAAQ,GAAG;AACpE,SAAO,KAAK,YAAY,OAAO,EAAE,KAAK,QAAQ,GAAG;AACjD,MAAI,SAAS,QAAQ;AACnB,WAAO,MAAM,KAAK,KAAK,GAAG,OAAO;AAAA,EACnC,OAAO;AACL,WAAO,MAAM,KAAK,KAAK,GAAG,OAAO;AAAA,EACnC;AACA,SAAO,MAAM,WAAW,KAAK,GAAG,OAAO;AACvC,SAAO,MAAM,MAAM,KAAK,GAAG,OAAO;AAClC,SAAO,MAAM,OAAO,KAAK,IAAI,MAAM;AACnC,SAAO,MAAM,OAAO,KAAK,IAAI,MAAM;AACnC,SAAO,MAAM,QAAQ,KAAK,KAAK,MAAM;AACrC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,WAAO,OAAO,CAAC;AAAA,EACjB;AACA,gBAAc,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG;AACtC,SAAO;AACT;AACA,MAAM,kBAAkB,CAAC,oBAAoB,iBAAiB,WAAW;AACvE,QAAM,oBAAoB,mBAAmB;AAC3C,qBAAiB,aAAa,oBAAoB;AAEhD,cAAQ,UAAU,MAAI;AAAA;AAAA,QAEpB,KAAK,QAAQ;AACX,gBAAM,mBAAmB,UAAU;AACnC,cAAI,OAAO,qBAAqB,YAAY,OAAO,SAAS,gBAAgB,GAAG;AAC7E,kBAAM,eAAe,UAAU,gBAAgB;AAC/C,kBAAM,iBAAiB;AAAA,cACrB;AAAA,cACA,UAAU;AAAA,cACV,aAAa;AAAA,cACb,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,YACxB;AACY,kBAAM;AACN,kBAAM,0BAA0B,eAAe,YAAY;AAC3D,kBAAM;AAAA,UACR,OAAO;AACL,kBAAM,UAAU;AAChB,kBAAM,iBAAiB;AAAA,cACrB;AAAA,cACA,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,YACxB;AACY,kBAAM;AACN,gBAAI,WAAW;AACf,oBAAQ,QAAQ,MAAI;AAAA;AAAA,cAElB,KAAK,aAAa;AAChB,iCAAiB,gBAAgB,QAAQ,WAAW;AAElD,wBAAM;AACN,8BAAY,aAAa;AAAA,gBAC3B;AACA;AAAA,cACF;AAAA;AAAA,cAEA,KAAK,YAAY;AACf,iCAAiB,SAAS,QAAQ,UAAU;AAE1C,wBAAM,eAAe,UAAU,KAAK;AACpC,wBAAM;AACN,8BAAY,aAAa;AAAA,gBAC3B;AACA;AAAA,cACF;AAAA,YACd;AACY,gBAAI,WAAW,QAAQ,GAAG;AAExB,oBAAM,OAAO,MAAM,MAAM,WAAW,KAAK,CAAC;AAAA,YAC5C;AAAA,UACF;AACA;AAAA,QACF;AAAA;AAAA,QAEA,KAAK,aAAa;AAChB,gBAAM,iBAAiB;AAAA,YACrB;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,UACtB;AACU,gBAAM;AACN;AAAA,QACF;AAAA,MACR;AAAA,IACI;AACA,UAAM;AAAA,EACR;AACA,QAAM,KAAK;AACX,UAAQ,IAAE;AAAA;AAAA,IAER,KAAK,QAAQ;AACX,aAAO,SAAS,KAAK,kBAAiB,GAAI,EAAE,OAAM,CAAE;AAAA,IACtD;AAAA;AAAA,IAEA,KAAK,QAAQ;AACX,YAAM,aAAa,WAAW,EAAE,OAAO,EAAC,CAAE;AAC1C,YAAM,kBAAkB,SAAS,KAAK,kBAAiB,GAAI,EAAE,QAAQ;AACrE,sBAAgB,KAAK,UAAU;AAC/B,aAAO;AAAA,IACT;AAAA,EACJ;AACA;AACA,MAAM,kBAAkB,CAAC,QAAQ,QAAQ,WAAW;AAClD,QAAM,MAAM,OAAO,SAAS,QAAQ,SAAS,MAAM,EAAE,SAAS,OAAO,EAAE,QAAQ,OAAO,EAAE,EAAE,KAAI;AAC9F,SAAO,MAAM,SAAS,KAAK,CAAC,IAAI;AAClC;AACA,MAAM,cAAc,CAAC,QAAQ,QAAQ,WAAW;AAC9C,SAAO,OAAO,SAAS,QAAQ,SAAS,MAAM,EAAE,SAAS,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,KAAI;AAC1F;AACA,MAAM,iBAAiB,OAAO,UAAU,MAAM,WAAW;;AACvD,QAAM,SAAS,CAAA;AACf,MAAI,YAAY;AAChB,SAAO,YAAY,MAAM;AAEvB,UAAM,EAAE,OAAO,KAAI,IAAK,MAAM,SAAS,KAAI;AAC3C,QAAI,MAAM;AACR,UAAI,cAAc,GAAG;AACnB,eAAO;AAAA,MACT,OAAO;AACL,cAAM,IAAI,MAAM,sCAAsC,IAAI,eAAe,SAAS,QAAQ;AAAA,MAC5F;AAAA,IACF;AACA,UAAM,QAAQ,UAAU,KAAK;AAC7B,UAAM,SAAS,OAAO;AACtB,QAAI,MAAM,UAAU,QAAQ;AAC1B,aAAO,KAAK,KAAK;AACjB,mBAAa,MAAM;AAAA,IACrB,OAAO;AACL,aAAO,KAAK,MAAM,SAAS,GAAG,MAAM,CAAC;AACrC,cAAM,cAAS,WAAT,kCAAkB,MAAM,SAAS,MAAM;AAC7C,kBAAY;AAAA,IACd;AAAA,EACF;AACA,SAAO,OAAO,OAAO,QAAQ,IAAI;AACnC;AACA,MAAM,iBAAiB,OAAO,UAAU,MAAM,WAAW;;AACvD,MAAI,eAAe;AACnB,SAAO,eAAe,MAAM;AAE1B,UAAM,EAAE,OAAO,KAAI,IAAK,MAAM,SAAS,KAAI;AAC3C,QAAI,MAAM;AACR,YAAM,IAAI,MAAM,8CAA8C,IAAI,mBAAmB,YAAY,QAAQ;AAAA,IAC3G;AACA,UAAM,QAAQ,UAAU,KAAK;AAC7B,UAAM,SAAS,OAAO;AACtB,QAAI,MAAM,UAAU,QAAQ;AAC1B,sBAAgB,MAAM;AAAA,IACxB,OAAO;AACL,cAAM,cAAS,WAAT,kCAAkB,MAAM,SAAS,MAAM;AAC7C,qBAAe;AAAA,IACjB;AAAA,EACF;AACF;AACA,MAAM,gCAAgC,OAAO,UAAU,aAAa,WAAW;AAC7E,QAAM,WAAW,MAAM,cAAc,OAAO;AAC5C,MAAI,UAAU,GAAG;AACf,UAAM,eAAe,UAAU,OAAe;AAAA,EAChD;AACF;AACA,MAAM,iBAAiB,CAAC,WAAW;AACjC,MAAI,OAAO,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG;AAChC,WAAO;AAAA,EACT;AACA,QAAMA,QAAO,YAAY,QAAQ,GAAG,GAAG;AACvC,QAAM,OAAO,gBAAgB,QAAQ,KAAK,CAAC;AAC3C,QAAM,MAAM,gBAAgB,QAAQ,KAAK,CAAC;AAC1C,QAAM,MAAM,gBAAgB,QAAQ,KAAK,CAAC;AAC1C,QAAM,OAAO,gBAAgB,QAAQ,KAAK,EAAE;AAC5C,QAAM,QAAQ,IAAI,KAAK,gBAAgB,QAAQ,KAAK,EAAE,IAAI,GAAG;AAC7D,QAAM,WAAW,gBAAgB,QAAQ,KAAK,CAAC;AAC/C,QAAM,WAAW,YAAY,QAAQ,KAAK,CAAC;AAC3C,QAAM,QAAQ,YAAY,QAAQ,KAAK,CAAC;AACxC,QAAM,QAAQ,YAAY,QAAQ,KAAK,EAAE;AACzC,QAAM,QAAQ,YAAY,QAAQ,KAAK,EAAE;AACzC,QAAM,SAAS,YAAY,QAAQ,KAAK,GAAG;AAC3C,MAAI,UAAU,SAAS;AACrB,UAAM,IAAI,MAAM,8BAA8B,KAAK,GAAG;AAAA,EACxD;AACA,MAAI,gBAAgB;AACpB,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,QAAI,KAAK,OAAO,IAAI,KAAK;AACvB,uBAAiB;AAAA,IACnB,OAAO;AACL,uBAAiB,OAAO,CAAC;AAAA,IAC3B;AAAA,EACF;AACA,MAAI,kBAAkB,UAAU;AAC9B,UAAM,IAAI,MAAM,8BAA8B,QAAQ,SAAS,aAAa,EAAE;AAAA,EAChF;AACA,MAAI,OAAO,SAAS,GAAG,MAAM,IAAIA,KAAI,KAAKA;AAC1C,MAAI,KAAK,SAAS,GAAG,GAAG;AACtB,WAAO,KAAK,MAAM,GAAG,EAAE;AAAA,EACzB;AACA,QAAM,OAAO,aAAa,MAAM,cAAc;AAC9C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,SAAS,IAAI,SAAQ;AAAA,IAC5B,OAAO,SAAS,IAAI,SAAQ;AAAA,IAC5B;AAAA,IACA,UAAU;AAAA,EACd;AACA;AACA,MAAM,8BAA8B,CAAC,UAAU,WAAW;AACxD,QAAM,SAAS,CAAA;AACf,QAAM,WAAW,SAAS,OAAO,aAAa,EAAC;AAC/C,SAAO;AAAA,IACL,MAAM,YAAY;AAEhB,UAAI,OAAO,SAAS,GAAG;AACrB,eAAO,EAAE,OAAO,OAAO,MAAK,GAAI,MAAM,MAAK;AAAA,MAC7C;AACA,aAAO,SAAS,KAAI;AAAA,IACtB;AAAA,IACA,QAAQ,OAAO,UAAU;AACvB,UAAI,UAAU,QAAQ;AACpB,eAAO,QAAQ,KAAK;AAAA,MACtB;AACA,aAAO,EAAE,OAAO,QAAQ,MAAM,MAAK;AAAA,IACrC;AAAA,EACJ;AACA;AACA,MAAM,6BAA6B,CAAC,UAAU,MAAM,QAAQ,gBAAgB;AAC1E,QAAM,YAAY,mBAAmB;;AACnC,QAAI,iBAAiB;AACrB,WAAO,iBAAiB,GAAG;AAEzB,YAAM,EAAE,OAAO,KAAI,IAAK,MAAM,SAAS,KAAI;AAC3C,UAAI,MAAM;AACR,cAAM,IAAI,MAAM,sCAAsC,IAAI,qBAAqB,cAAc,QAAQ;AAAA,MACvG;AACA,YAAM,QAAQ,UAAU,KAAK;AAC7B,UAAI,MAAM,UAAU,gBAAgB;AAClC,0BAAkB,MAAM;AACxB,cAAM;AAAA,MACR,OAAO;AACL,cAAM,SAAS,MAAM,SAAS,GAAG,cAAc;AAC/C,cAAM,SAAS,MAAM,SAAS,cAAc;AAC5C,yBAAiB;AACjB,gBAAM,cAAS,WAAT,kCAAkB;AACxB,cAAM;AACN;AAAA,MACF;AAAA,IACF;AACA,UAAM,8BAA8B,UAAU,IAAY;AAC1D,gBAAY,WAAW;AAAA,EACzB;AACA,SAAO,SAAS,KAAK,UAAS,GAAI,EAAE,OAAM,CAAE;AAC9C;AACA,MAAM,qBAAqB,iBAAiB,UAAU,iBAAiB,QAAQ;AAC7E,QAAM,KAAK;AACX,MAAI;AACJ,UAAQ,IAAE;AAAA,IACR,KAAK;AACH,YAAM,SAAS,aAAY;AAC3B,eAAS,KAAK,MAAM;AACpB,oBAAc;AACd;AAAA,IACF,KAAK;AAAA,IACL;AACE,oBAAc;AACd;AAAA,EACN;AACE,QAAM,WAAW,4BAA4B,WAAmB;AAChE,MAAI;AACJ,SAAO,MAAM;AAEX,SAAI,iCAAQ,UAAS,UAAU,CAAC,OAAO,UAAU;AAC/C,YAAM,eAAe,UAAU,OAAO,IAAY;AAClD,YAAM,8BAA8B,UAAU,OAAO,IAAY;AACjE,aAAO,WAAW;AAAA,IACpB;AACA,QAAI;AACJ,QAAI;AACF,qBAAe,MAAM,eAAe,UAAU,KAAK,MAAM;AAAA,IAC3D,SAAS,OAAO;AACd,UAAI,iBAAiB,SAAS,MAAM,QAAQ,SAAS,0BAA0B,GAAG;AAChF,cAAM,IAAI,MAAM,uCAAuC;AAAA,MACzD;AACA,YAAM;AAAA,IACR;AACA,QAAI,iBAAiB,QAAQ;AAC3B;AAAA,IACF;AACA,aAAS,eAAe,YAAY;AACpC,QAAI,CAAC,QAAQ;AACX,YAAM,cAAc,MAAM,eAAe,UAAU,GAAW;AAC9D,UAAI,gBAAgB,UAAU,YAAY,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG;AAC/D;AAAA,MACF;AACA,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AACA,QAAI,OAAO,SAAS,aAAa;AAC/B,YAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM,OAAO;AAAA,QACb,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,OAAO,OAAO;AAAA,QACd,OAAO,OAAO;AAAA,QACd,MAAM,OAAO;AAAA,MACrB;AAAA,IACI,OAAO;AACL,YAAM,gBAAgB;AACtB,YAAM;AAAA,QACJ,MAAM;AAAA,QACN,MAAM,cAAc;AAAA,QACpB,MAAM,cAAc;AAAA,QACpB,KAAK,cAAc;AAAA,QACnB,KAAK,cAAc;AAAA,QACnB,OAAO,cAAc;AAAA,QACrB,OAAO,cAAc;AAAA,QACrB,MAAM,cAAc;AAAA,QACpB,YAAY,OAAO,SAAS;AAC1B,cAAI,cAAc,UAAU;AAC1B,kBAAM,IAAI,MAAM,oFAAoF;AAAA,UACtG;AACA,kBAAQ,MAAI;AAAA;AAAA,YAEV,KAAK,UAAU;AACb,oBAAM,aAAa,MAAM,eAAe,UAAU,cAAc,IAAY;AAC5E,kBAAI,eAAe,QAAQ;AACzB,sBAAM,IAAI,MAAM,wDAAwD,cAAc,IAAI,EAAE;AAAA,cAC9F;AACA,oBAAM,8BAA8B,UAAU,cAAc,IAAY;AACxE,4BAAc,WAAW;AACzB,qBAAO,WAAW,SAAS,MAAM;AAAA,YACnC;AAAA;AAAA,YAEA,KAAK,UAAU;AACb,oBAAM,aAAa,MAAM,eAAe,UAAU,cAAc,IAAY;AAC5E,kBAAI,eAAe,QAAQ;AACzB,sBAAM,IAAI,MAAM,wDAAwD,cAAc,IAAI,EAAE;AAAA,cAC9F;AACA,oBAAM,8BAA8B,UAAU,cAAc,IAAY;AACxE,4BAAc,WAAW;AACzB,qBAAO;AAAA,YACT;AAAA;AAAA,YAEA,KAAK,YAAY;AACf,oBAAM,YAAY,2BAA2B,UAAU,cAAc,MAAM,QAAQ,aAAa;AAChG,qBAAO;AAAA,YACT;AAAA,YACA;AACE,oBAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,UACjE;AAAA,QACQ;AAAA,MACR;AAAA,IACI;AAAA,EACF;AACF;AClqBA,MAAM,aAAa,OACjB,WACA,gBACoB;AACpB,SAAO,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAC/B,UAAM,aAAa;AAAA,MACjB;AAAA,MACA,CAAC,QAAQ,sBAAsB,WAAW;AAAA,MAC1C;AAAA,QACE,KAAK;AAAA,QACL,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,MAAA;AAAA,IAClC;AAGF,QAAI,SAAS;AACb,QAAI,SAAS;AAEb,eAAW,OAAO,GAAG,QAAQ,CAAC,SAAS;AACrC,gBAAU,KAAK,SAAA;AAAA,IACjB,CAAC;AAED,eAAW,OAAO,GAAG,QAAQ,CAAC,SAAS;AACrC,gBAAU,KAAK,SAAA;AAAA,IACjB,CAAC;AAED,eAAW,GAAG,SAAS,CAAC,SAAS;AAC/B,UAAI,SAAS,GAAG;AAEd,cAAM,QAAQ,OAAO,KAAA,EAAO,MAAM,IAAI;AAEtC,cAAM,WACJ,MAAM,KAAK,CAAC,SAAS,KAAK,KAAA,EAAO,SAAS,MAAM,CAAC,KACjD,MAAM,MAAM,SAAS,CAAC;AACxB,YAAI,YAAY,SAAS,KAAA,EAAO,SAAS,MAAM,GAAG;AAChD,gBAAM,WAAW,KAAK,aAAa,SAAS,MAAM;AAClD,cAAI,QAAQ;AAAA,QACd,OAAO;AACL,cAAI,IAAI,MAAM,+CAA+C,CAAC;AAAA,QAChE;AAAA,MACF,OAAO;AACL,cAAM,eAAe,kCAAkC,IAAI;AAC3D,cAAM,YAAY,SACd,GAAG,YAAY;AAAA,UAAa,MAAM,KAClC;AACJ,YAAI,QAAQ;AACV,cAAI,IAAI,MAAM,GAAG,SAAS;AAAA,UAAa,MAAM,EAAE,CAAC;AAAA,QAClD,OAAO;AACL,cAAI,IAAI,MAAM,SAAS,CAAC;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,CAAC;AAED,eAAW,GAAG,SAAS,CAAC,UAAU;AAChC,UAAI,IAAI,MAAM,6BAA6B,MAAM,OAAO,EAAE,CAAC;AAAA,IAC7D,CAAC;AAAA,EACH,CAAC;AACH;AAwBO,MAAM,aAAa,OACxB,WACA,WACA,6BACA,8BACA,mBACA,uBACA,0BACA,uBACAC,YACsC;;AAEtC,MAAI,CAAC,WAAW,SAAS,GAAG;AAC1B,UAAM,IAAI,MAAM,kCAAkC,SAAS,EAAE;AAAA,EAC/D;AAEA,MAAI,iCAAiC;AACrC,MACE,kCACA,CAAC,WAAW,8BAA8B,GAC1C;AACA,UAAM,IAAI;AAAA,MACR,yCAAyC,8BAA8B;AAAA,IAAA;AAAA,EAE3E;AAGA,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACAA;AAAA,EAAA;AAIF,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACAA;AAAA,EAAA;AAGF,MAAI,sBAAsB,OAAO;AAGjC,MAAI,2DAAqB,SAAS;AAChC,WAAO;AAAA,EACT;AAGA,QAAM,oBAAoB,oBAAoB;AAC9C,MAAI,mBAAmB;AAErB,QAAI,CAAC,gCAAgC;AACnC,YAAM,uBAAuB,OAAO,UAAU,IAAI,QAAQ;AAC1D,YAAM,wBAAwB;AAAA,QAC5B;AAAA,QACA;AAAA,MAAA;AAEF,UAAI,CAAC,WAAW,qBAAqB,GAAG;AACtC,cAAM,IAAI;AAAA,UACR,yCAAyC,qBAAqB;AAAA,QAAA;AAAA,MAElE;AACA,uCAAiC;AAAA,IACnC;AAEA,WAAO,oBAAoB;AAAA,EAC7B;AAGA,MAAI,0BAA0B;AAC5B,UAAM,gBAAgB,MAAM,kBAAkB,WAAWA,OAAM;AAC/D,QAAI,eAAe;AACjB,YAAM,WAAW,MAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MAAA;AAEF,UAAI,SAAS,OAAO,GAAG;AACrB,8BAAsB;AAAA,UACpB;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AAGA,QAAM,cAAc,MAAM,QAAQ,KAAK,OAAA,GAAU,oBAAoB,CAAC;AACtE,QAAM,MAAM,aAAa,EAAE,WAAW,MAAM;AAE5C,MAAI;AAEF,UAAM,iBAAiB,MAAM,WAAW,WAAW,WAAW;AAG9D,UAAM,aAAa,KAAK,aAAa,SAAS;AAC9C,UAAM,MAAM,YAAY,EAAE,WAAW,MAAM;AAE3C,UAAM,SAAS,iBAAiB,cAAc;AAC9C,UAAM,UAAU,mBAAmB,QAAQ,MAAM,GAAG,UAAU;AAI9D,UAAM,kBAAkB,KAAK,YAAY,WAAW,cAAc;AAClE,QAAI,WAAW,eAAe,GAAG;AAC/B,YAAM;AAAA,QACJ;AAAA,QACA,KAAK,UAAU,qBAAqB,MAAM,CAAC;AAAA,MAAA;AAAA,IAE/C;AAGA,QAAI,gCAAgC;AAClC,YAAM,iBAAiB,KAAK,YAAY,WAAW,WAAW;AAC9D,YAAM,SAAS,gCAAgC,cAAc;AAAA,IAC/D;AAGA,UAAM,iBAAiB,IAAG,sEAAqB,SAArB,mBAA2B,QAAQ,KAAK,SAAxC,YAAgD,SAAS,KAAI,gEAAqB,YAArB,YAAgC,OAAO;AAC9H,UAAM,MAAM,WAAW,EAAE,WAAW,MAAM;AAC1C,UAAM,aAAa,KAAK,WAAW,cAAc;AAGjD,UAAM,gBAAgB,yBAAyB,UAAU;AACzD,UAAM,SAAS,gBAAgB,eAAe,MAAM;AACpD,UAAM,kBAAkB,QAAQ,UAAU;AAG1C,WAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,UAAU;AAAA,IAAA;AAAA,EAEd,UAAA;AAEE,UAAM,GAAG,aAAa,EAAE,WAAW,MAAM,OAAO,MAAM;AAAA,EACxD;AACF;AASO,MAAM,+BAA+B,OAC1C,WACA,kBACA,8BACA,mBACAA,YACiB;AAEjB,MAAI,CAAC,WAAW,SAAS,GAAG;AAC1B,WAAO;AAAA,EACT;AAGA,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACAA;AAAA,EAAA;AAEF,SAAO,OAAO;AAChB;AAiBO,MAAM,YAAY,CACvB,MACAC,kBACe;AACf,QAAM,SAAc;AAAA,IAClB,MAAM;AAAA,IACN,YAAY,CAAA;AAAA,IACZ,SAAS,CAAA;AAAA,EAAC;AAGZ,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,MAAM,KAAK,CAAC;AAClB,QAAI,IAAI,WAAW,IAAI,GAAG;AACxB,YAAM,aAAa,IAAI,MAAM,CAAC;AAE9B,UAAI,CAAC,OAAO,SAAS;AAEnB,eAAO,QAAQ,UAAU,IAAI;AAAA,MAC/B,OAAO;AAEL,cAAM,aAAaA,cAAa,IAAI,OAAO,OAAO;AAClD,YAAI,WAAW,IAAI,UAAU,GAAG;AAE9B;AACA,iBAAO,QAAQ,UAAU,IAAI,KAAK,CAAC;AAAA,QACrC,OAAO;AAEL,iBAAO,QAAQ,UAAU,IAAI;AAAA,QAC/B;AAAA,MACF;AAAA,IAEF,WAAW,IAAI,WAAW,GAAG,GAAG;AAC9B,YAAM,aAAa,IAAI,MAAM,CAAC;AAC9B,UAAI,WAAW,UAAU,GAAG;AAC1B,eAAO,QAAQ,UAAU,IAAI;AAAA,MAC/B;AAAA,IACF,WAAW,CAAC,OAAO,SAAS;AAC1B,aAAO,UAAU;AAAA,IACnB,OAAO;AACL,aAAO,WAAW,KAAK,GAAG;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;ACpUA,MAAM,+CAA+B,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,MAAM,yBAAyB,CAC7B,4BACgB;AAChB,MAAI,OAAO,4BAA4B,UAAU;AAC/C,WAAO;AAAA,EACT;AACA,MAAI,CAAC,wBAAwB,QAAQ;AACnC,+BAAW,IAAA;AAAA,EACb;AACA,SAAO,IAAI;AAAA,IACT,wBACG,MAAM,GAAG,EACT,IAAI,CAAC,UAAU,MAAM,KAAA,CAAM,EAC3B,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC;AAAA,EAAA;AAEzC;AAIA,MAAM,eAAe,MAAM;AACzB,UAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAYd;AACD;AAEA,MAAM,cAAc,OAAO,MAAkBD,YAAmB;AAC9D,MAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,GAAG;AACvC,iBAAA;AACA,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,KAAK,WAAW,CAAC;AACnC,QAAM,0BAA0B,KAAK,QAAQ,oBAAoB;AACjE,QAAM,+BAA+B,CAAC,KAAK,QAAQ,yBAAyB;AAC5E,QAAM,8BAA8B,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AAGrE,QAAM,oBAAoB,uBAAuB,uBAAuB;AAExE,QAAM,YAAY,QAAQ,gCAAa,QAAQ,KAAK;AAGpD,QAAM,UAAkB;AAAA,IACtB,OAAO,CAAC,QAAQ;AAAA,IAAC;AAAA,IACjB,MAAM,CAAC,QAAQ;AAAA,IAAC;AAAA,IAChB,MAAM,CAAC,QAAQ;AAAA,IAAC;AAAA,IAChB,OAAOA,QAAO;AAAA,EAAA;AAGhB,MAAI;AAEF,UAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAIF,UAAM,sBAAsB,MAAM;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,qBAAqB;AAEvB,cAAQ,KAAK,KAAK,UAAU,qBAAqB,MAAM,CAAC,CAAC;AAAA,IAC3D,OAAO;AACL,cAAQ,MAAM,2CAA2C,SAAS,EAAE;AACpE,aAAO;AAAA,IACT;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,sCAAsC,KAAK,EAAE;AAC3D,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAIA,MAAM,eAAe,MAAM;AACzB,UAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAiBd;AACD;AAEA,MAAM,cAAc,OAAO,MAAkBA,YAAmB;;AAC9D,MAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,GAAG;AACvC,iBAAA;AACA,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,KAAK,WAAW,CAAC;AACnC,QAAM,kBAAkB,KAAK,QAAQ,kBAAkB;AACvD,QAAM,eAAe,KAAK,QAAQ,QAAQ;AAC1C,QAAM,0BAA0B,KAAK,QAAQ,oBAAoB;AACjE,QAAM,8BAA8B,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AACrE,QAAM,+BAA+B,CAAC,KAAK,QAAQ,yBAAyB;AAC5E,QAAM,2BAA2B,CAAC,KAAK,QAAQ,sBAAsB;AACrE,QAAM,yBACH,UAAK,QAAQ,kBAAkB,MAA/B,YAA+C;AAClD,QAAM,UAAU,KAAK,QAAQ,SAAS,IAAI,OAAO;AAEjD,QAAM,YAAY,QAAQ,gCAAa,QAAQ,KAAK;AACpD,QAAM,YAAY,kBAAkB,QAAQ,eAAe,IAAI,QAAQ,IAAA;AACvE,QAAM,wBAAwB,eAC1B,QAAQ,YAAY,IACpB;AAGJ,QAAM,oBAAoB,uBAAuB,uBAAuB;AAExE,MAAI,SAAS;AACX,IAAAA,QAAO,KAAK,6BAA6B,SAAS,KAAK;AAAA,EACzD;AAEA,MAAI;AACF,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAA;AAAA,IAAA;AAEF,QAAI,QAAQ;AACV,UAAI,SAAS;AACX,QAAAA,QAAO;AAAA,UACL,uCAAuC,OAAO,eAAe;AAAA,QAAA;AAAA,MAEjE,OAAO;AACL,QAAAA,QAAO,KAAK,OAAO,eAAe;AAAA,MACpC;AAAA,IACF,OAAO;AACL,MAAAA,QAAO,MAAM,2CAA2C,SAAS,EAAE;AACnE,aAAO;AAAA,IACT;AAAA,EACF,SAAS,OAAO;AACd,IAAAA,QAAO,MAAM,mCAAmC,KAAK,EAAE;AACvD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAIA,MAAM,kBAAkB,MAAM;AAC5B,UAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAoBd;AACD;AAEA,MAAM,gBAAgB,OACpB,aACA,YACA,SACAA,YACG;AACH,MAAI,SAAS;AACX,IAAAA,QAAO,KAAK,uBAAuB,WAAW,YAAY;AAAA,EAC5D;AAEA,QAAM,cAAc,CAAC,WAAW,aAAa,GAAG,UAAU;AAG1D,MAAI,QAAQ,IAAI,uBAAuB,QAAQ;AAC7C,IAAAA,QAAO,KAAK,iCAAiC,YAAY,KAAK,GAAG,CAAC,EAAE;AACpE,IAAAA,QAAO,KAAK,4BAA4B,WAAW,EAAE;AACrD,IAAAA,QAAO,KAAK,uBAAuB,WAAW,KAAK,GAAG,CAAC,EAAE;AACzD,IAAAA,QAAO,KAAK,mCAAmC,WAAW,EAAE;AAC5D,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,MAAM,OAAO,aAAa,EAAE,OAAO,WAAW;AAEjE,SAAO,IAAI,QAAgB,CAACE,UAAS,WAAW;AAC9C,eAAW,GAAG,SAAS,CAAC,SAAS;AAC/B,UAAI,SAAS,GAAG;AACd,YAAI,SAAS;AACX,UAAAF,QAAO,KAAK,mCAAmC,WAAW,EAAE;AAAA,QAC9D;AACAE,iBAAQ,IAAI;AAAA,MACd,OAAO;AACL,QAAAF,QAAO,MAAM,gCAAgC,WAAW,EAAE;AAC1DE,iBAAQ,IAAI;AAAA,MACd;AAAA,IACF,CAAC;AACD,eAAW,GAAG,SAAS,MAAM;AAAA,EAC/B,CAAC;AACH;AAEA,MAAM,iBAAiB,OAAO,MAAkBF,YAAmB;;AACjE,MAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,GAAG;AACvC,oBAAA;AACA,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,KAAK,WAAW,CAAC;AAC9B,QAAM,eAAe,KAAK,QAAQ,QAAQ;AAC1C,QAAM,0BAA0B,KAAK,QAAQ,oBAAoB;AACjE,QAAM,8BAA8B,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AACrE,QAAM,+BAA+B,CAAC,KAAK,QAAQ,yBAAyB;AAC5E,QAAM,2BAA2B,CAAC,KAAK,QAAQ,sBAAsB;AACrE,QAAM,yBACH,UAAK,QAAQ,kBAAkB,MAA/B,YAA+C;AAClD,QAAM,UAAU,KAAK,QAAQ,SAAS,IAAI,OAAO;AAGjD,QAAM,oBAAoB,uBAAuB,uBAAuB;AACxE,QAAM,wBAAwB,eAC1B,QAAQ,YAAY,IACpB;AAGJ,QAAM,aAAuB,CAAA;AAC7B,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK,QAAQ,KAAK;AACzC,UAAM,MAAM,KAAK,KAAK,CAAC;AACvB,QAAI,QAAQ,UAAW;AAAA,aAGrB,QAAQ,YACR,QAAQ,eACR,QAAQ,QACR,QAAQ,cACR,QAAQ,+BACR,QAAQ,yBACR;AAAA,aAEA,QAAQ,cACR,QAAQ,0BACR,QAAQ,sBACR;AACA;AAAA,IACF,OAAO;AACL,iBAAW,KAAK,GAAG;AAAA,IACrB;AAAA,EACF;AAEA,MAAI;AACF,QAAI,CAAC,MAAM;AAET,YAAM,YAAY,QAAQ,IAAA;AAC1B,YAAM,YAAY,MAAM,QAAQ,KAAK,OAAA,GAAU,mBAAmB,CAAC;AAEnE,UAAI,SAAS;AACX,QAAAA,QAAO,KAAK,gCAAgC,SAAS,KAAK;AAAA,MAC5D;AAEA,UAAI;AACF,cAAM,SAAS,MAAM;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAA;AAAA,QAAA;AAEF,YAAI,iCAAQ,UAAU;AACpB,cAAI,SAAS;AACX,YAAAA,QAAO;AAAA,cACL,0CAA0C,OAAO,eAAe;AAAA,YAAA;AAAA,UAEpE;AACA,gBAAM,cAAc,KAAK,WAAW,OAAO,eAAe;AAC1D,iBAAO,MAAM,cAAc,aAAa,YAAY,SAASA,OAAM;AAAA,QACrE,OAAO;AACL,UAAAA,QAAO;AAAA,YACL,8CAA8C,SAAS;AAAA,UAAA;AAEzD,iBAAO;AAAA,QACT;AAAA,MACF,UAAA;AACE,cAAM,GAAG,WAAW,EAAE,WAAW,MAAM,OAAO,MAAM;AAAA,MACtD;AAAA,IACF,WAAW,WAAW,IAAI,GAAG;AAC3B,YAAM,WAAW,MAAM,KAAK,IAAI;AAEhC,UACE,SAAS,aACR,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,SAAS,IACjD;AAEA,eAAO,MAAM,cAAc,QAAQ,IAAI,GAAG,YAAY,SAASA,OAAM;AAAA,MACvE,WAAW,SAAS,eAAe;AAEjC,cAAM,YAAY,QAAQ,IAAI;AAC9B,cAAM,YAAY,MAAM,QAAQ,KAAK,OAAA,GAAU,mBAAmB,CAAC;AAEnE,YAAI,SAAS;AACX,UAAAA,QAAO,KAAK,gCAAgC,SAAS,KAAK;AAAA,QAC5D;AAEA,YAAI;AACF,gBAAM,SAAS,MAAM;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAA;AAAA,UAAA;AAEF,cAAI,iCAAQ,UAAU;AACpB,gBAAI,SAAS;AACX,cAAAA,QAAO;AAAA,gBACL,0CAA0C,OAAO,eAAe;AAAA,cAAA;AAAA,YAEpE;AACA,kBAAM,cAAc,KAAK,WAAW,OAAO,eAAe;AAC1D,mBAAO,MAAM;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACAA;AAAA,YAAA;AAAA,UAEJ,OAAO;AACL,YAAAA,QAAO;AAAA,cACL,8CAA8C,SAAS;AAAA,YAAA;AAEzD,mBAAO;AAAA,UACT;AAAA,QACF,UAAA;AACE,gBAAM,GAAG,WAAW,EAAE,WAAW,MAAM,OAAO,MAAM;AAAA,QACtD;AAAA,MACF,OAAO;AACL,QAAAA,QAAO;AAAA,UACL,qEAAqE,IAAI;AAAA,QAAA;AAE3E,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,MAAAA,QAAO,MAAM,iCAAiC,IAAI,EAAE;AACpD,aAAO;AAAA,IACT;AAAA,EACF,SAAS,OAAO;AACd,IAAAA,QAAO,MAAM,+BAA+B,KAAK,EAAE;AACnD,WAAO;AAAA,EACT;AACF;AAIA,MAAM,WAAW,YAAY;AAC3B,QAAM,EAAE,QAAQ,SAAS,gBAAgB,SAAS,gBAAA,IAChD,MAAM,OAAO,+BAAgC,EAAA,KAAA,OAAA,EAAA,CAAA;AAC/C,UAAQ,KAAK,aAAa,OAAO,IAAI,eAAe;AAAA;AAAA,gBAEtC,MAAM;AAAA,cACR,cAAc;AAAA,WACjB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAkBjB;AACD;AAEA,MAAM,mCAAmB,IAAI;AAAA,EAC3B,CAAC,QAAQ,oBAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAAA,EACxC;AAAA,IACE;AAAA,wBACI,IAAI;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA;AAAA,EAEH,CAAC,WAAW,oBAAI,IAAI,CAAC,sBAAsB,kBAAkB,CAAC,CAAC;AACjE,CAAC;AAEM,MAAM,UAAU,OACrB,MACAA,YACoB;AACpB,QAAM,aAAa,UAAU,MAAM,YAAY;AAG/C,MACE,CAAC,WAAW,YACX,WAAW,QAAQ,QAAQ,WAAW,QAAQ,IAC/C;AACA,UAAM,SAAA;AACN,WAAO;AAAA,EACT;AAEA,UAAQ,WAAW,SAAA;AAAA,IACjB,KAAK;AACH,aAAO,MAAM,YAAY,YAAYA,OAAM;AAAA,IAC7C,KAAK;AACH,aAAO,MAAM,YAAY,YAAYA,OAAM;AAAA,IAC7C,KAAK;AACH,aAAO,MAAM,eAAe,YAAYA,OAAM;AAAA,IAChD;AACE,UAAI,WAAW,SAAS;AACtB,QAAAA,QAAO,MAAM,oBAAoB,WAAW,OAAO,EAAE;AAAA,MACvD,OAAO;AACL,QAAAA,QAAO,MAAM,iBAAiB;AAAA,MAChC;AACA,MAAAA,QAAO,MAAM,8CAA8C;AAC3D,aAAO;AAAA,EAAA;AAEb;AC1eA,MAAM,eAAe,GAAG,IAAI;AAC5B,MAAM,SAAS,oBAAoB,YAAY;AAE/C;AAAA,EACE,QAAQ,KAAK,MAAM,CAAC;AAAA;AAAA,EACpB;AACF,EACG,KAAK,CAAC,SAAS,QAAQ,KAAK,IAAI,CAAC,EACjC,MAAM,CAAC,UAAU;AAChB,SAAO,MAAM,cAAc,KAAK,EAAE;AAClC,UAAQ,KAAK,CAAC;AAChB,CAAC;","x_google_ignoreList":[0]}
@@ -1,13 +1,13 @@
1
+ "use strict";
1
2
  /*!
2
3
  * name: screw-up
3
- * version: 1.10.0
4
+ * version: 1.11.0
4
5
  * description: Simply package metadata inserter on Vite plugin
5
6
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
7
  * license: MIT
7
8
  * repository.url: https://github.com/kekyo/screw-up.git
8
- * git.commit.hash: ed5f57c0933fcc061c70daf43aae0b41cecf358c
9
+ * git.commit.hash: bf8f6bb1acb7da0b20a7bb34d248a40372de1fcb
9
10
  */
10
- "use strict";
11
11
  const fs = require("fs");
12
12
  const fs$1 = require("fs/promises");
13
13
  const path = require("path");
@@ -2173,11 +2173,11 @@ const getFetchGitMetadata = (targetDir, checkWorkingDirectoryStatus, logger) =>
2173
2173
  };
2174
2174
  };
2175
2175
  const name = "screw-up";
2176
- const version = "1.10.0";
2176
+ const version = "1.11.0";
2177
2177
  const author = "Kouji Matsui (@kekyo@mi.kekyo.net)";
2178
2178
  const license = "MIT";
2179
2179
  const repository_url = "https://github.com/kekyo/screw-up.git";
2180
- const git_commit_hash = "ed5f57c0933fcc061c70daf43aae0b41cecf358c";
2180
+ const git_commit_hash = "bf8f6bb1acb7da0b20a7bb34d248a40372de1fcb";
2181
2181
  const packageMetadata = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2182
2182
  __proto__: null,
2183
2183
  author,
@@ -2198,4 +2198,4 @@ exports.replacePeerDependenciesWildcards = replacePeerDependenciesWildcards;
2198
2198
  exports.resolvePackageMetadata = resolvePackageMetadata;
2199
2199
  exports.resolveRawPackageJsonObject = resolveRawPackageJsonObject;
2200
2200
  exports.version = version;
2201
- //# sourceMappingURL=packageMetadata-DUEevWzF.cjs.map
2201
+ //# sourceMappingURL=packageMetadata-CbJ6UwXP.cjs.map