screw-up 1.28.0 → 1.30.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/index.cjs +543 -70
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +472 -68
- package/dist/index.mjs.map +1 -1
- package/dist/main.cjs +76 -7
- package/dist/main.cjs.map +1 -1
- package/dist/main.mjs +5 -5
- package/dist/main.mjs.map +1 -1
- package/dist/{metadata-file-DtvzENuT.js → metadata-file-CpFkBJPS.js} +75 -6
- package/dist/{metadata-file-DtvzENuT.js.map → metadata-file-CpFkBJPS.js.map} +1 -1
- package/dist/{packageMetadata-D1X6rTp_.cjs → packageMetadata-Lj9bVuVM.cjs} +5 -5
- package/dist/{packageMetadata-D1X6rTp_.cjs.map → packageMetadata-Lj9bVuVM.cjs.map} +1 -1
- package/dist/{packageMetadata-11MbeI_K.js → packageMetadata-YWwXZbaj.js} +6 -6
- package/dist/{packageMetadata-11MbeI_K.js.map → packageMetadata-YWwXZbaj.js.map} +1 -1
- package/dist/{packageMetadata-CCdz0AMJ.cjs → packageMetadata-zaiRRUve.cjs} +3 -3
- package/dist/src/analyzer.d.ts +2 -2
- package/dist/src/analyzer.d.ts.map +1 -1
- package/dist/src/cli-internal.d.ts +3 -3
- package/dist/src/cli-internal.d.ts.map +1 -1
- package/dist/src/cli.d.ts +3 -3
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/declaration-import-fix.d.ts +21 -0
- package/dist/src/declaration-import-fix.d.ts.map +1 -0
- package/dist/src/default-import-fix.d.ts +2 -2
- package/dist/src/default-import-fix.d.ts.map +1 -1
- package/dist/src/fast-tags.d.ts +2 -2
- package/dist/src/fast-tags.d.ts.map +1 -1
- package/dist/src/generated/packageMetadata.d.ts +4 -4
- package/dist/src/git-operations.d.ts +3 -3
- package/dist/src/git-operations.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/internal.d.ts +3 -3
- package/dist/src/main.d.ts +2 -2
- package/dist/src/metadata-file.d.ts +4 -4
- package/dist/src/metadata-file.d.ts.map +1 -1
- package/dist/src/text-edits.d.ts +24 -0
- package/dist/src/text-edits.d.ts.map +1 -0
- package/dist/src/types.d.ts +7 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/vite-plugin.d.ts +3 -3
- package/dist/src/vite-plugin.d.ts.map +1 -1
- package/package.json +14 -10
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","names":["Readable","path","module","exports"],"sources":["../node_modules/tar-vern/dist/index.js","../node_modules/json5/dist/index.js","../node_modules/dayjs/dayjs.min.js","../src/internal.ts","../src/fast-tags.ts","../src/git-operations.ts","../src/analyzer.ts","../src/cli-internal.ts","../src/metadata-file.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","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.JSON5 = factory());\n}(this, (function () { 'use strict';\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar _global = createCommonjsModule(function (module) {\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef\n\t});\n\n\tvar _core = createCommonjsModule(function (module) {\n\tvar core = module.exports = { version: '2.6.5' };\n\tif (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef\n\t});\n\tvar _core_1 = _core.version;\n\n\tvar _isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\tvar _anObject = function (it) {\n\t if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }\n\t return it;\n\t};\n\n\tvar _fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar _descriptors = !_fails(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\tvar document = _global.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = _isObject(document) && _isObject(document.createElement);\n\tvar _domCreate = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\tvar _ie8DomDefine = !_descriptors && !_fails(function () {\n\t return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar _toPrimitive = function (it, S) {\n\t if (!_isObject(it)) { return it; }\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar dP = Object.defineProperty;\n\n\tvar f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t _anObject(O);\n\t P = _toPrimitive(P, true);\n\t _anObject(Attributes);\n\t if (_ie8DomDefine) { try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ } }\n\t if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }\n\t if ('value' in Attributes) { O[P] = Attributes.value; }\n\t return O;\n\t};\n\n\tvar _objectDp = {\n\t\tf: f\n\t};\n\n\tvar _propertyDesc = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar _hide = _descriptors ? function (object, key, value) {\n\t return _objectDp.f(object, key, _propertyDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tvar _has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tvar _uid = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\tvar _library = false;\n\n\tvar _shared = createCommonjsModule(function (module) {\n\tvar SHARED = '__core-js_shared__';\n\tvar store = _global[SHARED] || (_global[SHARED] = {});\n\n\t(module.exports = function (key, value) {\n\t return store[key] || (store[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: _core.version,\n\t mode: _library ? 'pure' : 'global',\n\t copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar _functionToString = _shared('native-function-to-string', Function.toString);\n\n\tvar _redefine = createCommonjsModule(function (module) {\n\tvar SRC = _uid('src');\n\n\tvar TO_STRING = 'toString';\n\tvar TPL = ('' + _functionToString).split(TO_STRING);\n\n\t_core.inspectSource = function (it) {\n\t return _functionToString.call(it);\n\t};\n\n\t(module.exports = function (O, key, val, safe) {\n\t var isFunction = typeof val == 'function';\n\t if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }\n\t if (O[key] === val) { return; }\n\t if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }\n\t if (O === _global) {\n\t O[key] = val;\n\t } else if (!safe) {\n\t delete O[key];\n\t _hide(O, key, val);\n\t } else if (O[key]) {\n\t O[key] = val;\n\t } else {\n\t _hide(O, key, val);\n\t }\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, TO_STRING, function toString() {\n\t return typeof this == 'function' && this[SRC] || _functionToString.call(this);\n\t});\n\t});\n\n\tvar _aFunction = function (it) {\n\t if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }\n\t return it;\n\t};\n\n\t// optional / simple context binding\n\n\tvar _ctx = function (fn, that, length) {\n\t _aFunction(fn);\n\t if (that === undefined) { return fn; }\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar PROTOTYPE = 'prototype';\n\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\n\t var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\n\t var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n\t var key, own, out, exp;\n\t if (IS_GLOBAL) { source = name; }\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t // export native or passed\n\t out = (own ? target : source)[key];\n\t // bind timers to global for call from export context\n\t exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\n\t // extend global\n\t if (target) { _redefine(target, key, out, type & $export.U); }\n\t // export\n\t if (exports[key] != out) { _hide(exports, key, exp); }\n\t if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }\n\t }\n\t};\n\t_global.core = _core;\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tvar _export = $export;\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tvar _toInteger = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tvar _defined = function (it) {\n\t if (it == undefined) { throw TypeError(\"Can't call method on \" + it); }\n\t return it;\n\t};\n\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tvar _stringAt = function (TO_STRING) {\n\t return function (that, pos) {\n\t var s = String(_defined(that));\n\t var i = _toInteger(pos);\n\t var l = s.length;\n\t var a, b;\n\t if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n\tvar $at = _stringAt(false);\n\t_export(_export.P, 'String', {\n\t // 21.1.3.3 String.prototype.codePointAt(pos)\n\t codePointAt: function codePointAt(pos) {\n\t return $at(this, pos);\n\t }\n\t});\n\n\tvar codePointAt = _core.String.codePointAt;\n\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar _toAbsoluteIndex = function (index, length) {\n\t index = _toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\tvar fromCharCode = String.fromCharCode;\n\tvar $fromCodePoint = String.fromCodePoint;\n\n\t// length should be 1, old FF problem\n\t_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n\t // 21.1.2.2 String.fromCodePoint(...codePoints)\n\t fromCodePoint: function fromCodePoint(x) {\n\t var arguments$1 = arguments;\n\t // eslint-disable-line no-unused-vars\n\t var res = [];\n\t var aLen = arguments.length;\n\t var i = 0;\n\t var code;\n\t while (aLen > i) {\n\t code = +arguments$1[i++];\n\t if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }\n\t res.push(code < 0x10000\n\t ? fromCharCode(code)\n\t : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n\t );\n\t } return res.join('');\n\t }\n\t});\n\n\tvar fromCodePoint = _core.String.fromCodePoint;\n\n\t// This is a generated file. Do not edit.\n\tvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\n\tvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n\tvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\n\tvar unicode = {\n\t\tSpace_Separator: Space_Separator,\n\t\tID_Start: ID_Start,\n\t\tID_Continue: ID_Continue\n\t};\n\n\tvar util = {\n\t isSpaceSeparator: function isSpaceSeparator (c) {\n\t return typeof c === 'string' && unicode.Space_Separator.test(c)\n\t },\n\n\t isIdStartChar: function isIdStartChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c === '$') || (c === '_') ||\n\t unicode.ID_Start.test(c)\n\t )\n\t },\n\n\t isIdContinueChar: function isIdContinueChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c >= '0' && c <= '9') ||\n\t (c === '$') || (c === '_') ||\n\t (c === '\\u200C') || (c === '\\u200D') ||\n\t unicode.ID_Continue.test(c)\n\t )\n\t },\n\n\t isDigit: function isDigit (c) {\n\t return typeof c === 'string' && /[0-9]/.test(c)\n\t },\n\n\t isHexDigit: function isHexDigit (c) {\n\t return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n\t },\n\t};\n\n\tvar source;\n\tvar parseState;\n\tvar stack;\n\tvar pos;\n\tvar line;\n\tvar column;\n\tvar token;\n\tvar key;\n\tvar root;\n\n\tvar parse = function parse (text, reviver) {\n\t source = String(text);\n\t parseState = 'start';\n\t stack = [];\n\t pos = 0;\n\t line = 1;\n\t column = 0;\n\t token = undefined;\n\t key = undefined;\n\t root = undefined;\n\n\t do {\n\t token = lex();\n\n\t // This code is unreachable.\n\t // if (!parseStates[parseState]) {\n\t // throw invalidParseState()\n\t // }\n\n\t parseStates[parseState]();\n\t } while (token.type !== 'eof')\n\n\t if (typeof reviver === 'function') {\n\t return internalize({'': root}, '', reviver)\n\t }\n\n\t return root\n\t};\n\n\tfunction internalize (holder, name, reviver) {\n\t var value = holder[name];\n\t if (value != null && typeof value === 'object') {\n\t if (Array.isArray(value)) {\n\t for (var i = 0; i < value.length; i++) {\n\t var key = String(i);\n\t var replacement = internalize(value, key, reviver);\n\t if (replacement === undefined) {\n\t delete value[key];\n\t } else {\n\t Object.defineProperty(value, key, {\n\t value: replacement,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t } else {\n\t for (var key$1 in value) {\n\t var replacement$1 = internalize(value, key$1, reviver);\n\t if (replacement$1 === undefined) {\n\t delete value[key$1];\n\t } else {\n\t Object.defineProperty(value, key$1, {\n\t value: replacement$1,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t }\n\t }\n\n\t return reviver.call(holder, name, value)\n\t}\n\n\tvar lexState;\n\tvar buffer;\n\tvar doubleQuote;\n\tvar sign;\n\tvar c;\n\n\tfunction lex () {\n\t lexState = 'default';\n\t buffer = '';\n\t doubleQuote = false;\n\t sign = 1;\n\n\t for (;;) {\n\t c = peek();\n\n\t // This code is unreachable.\n\t // if (!lexStates[lexState]) {\n\t // throw invalidLexState(lexState)\n\t // }\n\n\t var token = lexStates[lexState]();\n\t if (token) {\n\t return token\n\t }\n\t }\n\t}\n\n\tfunction peek () {\n\t if (source[pos]) {\n\t return String.fromCodePoint(source.codePointAt(pos))\n\t }\n\t}\n\n\tfunction read () {\n\t var c = peek();\n\n\t if (c === '\\n') {\n\t line++;\n\t column = 0;\n\t } else if (c) {\n\t column += c.length;\n\t } else {\n\t column++;\n\t }\n\n\t if (c) {\n\t pos += c.length;\n\t }\n\n\t return c\n\t}\n\n\tvar lexStates = {\n\t default: function default$1 () {\n\t switch (c) {\n\t case '\\t':\n\t case '\\v':\n\t case '\\f':\n\t case ' ':\n\t case '\\u00A0':\n\t case '\\uFEFF':\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'comment';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t if (util.isSpaceSeparator(c)) {\n\t read();\n\t return\n\t }\n\n\t // This code is unreachable.\n\t // if (!lexStates[parseState]) {\n\t // throw invalidLexState(parseState)\n\t // }\n\n\t return lexStates[parseState]()\n\t },\n\n\t comment: function comment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineComment';\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'singleLineComment';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t multiLineComment: function multiLineComment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineCommentAsterisk';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t },\n\n\t multiLineCommentAsterisk: function multiLineCommentAsterisk () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t lexState = 'multiLineComment';\n\t },\n\n\t singleLineComment: function singleLineComment () {\n\t switch (c) {\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t read();\n\t },\n\n\t value: function value () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t case 'n':\n\t read();\n\t literal('ull');\n\t return newToken('null', null)\n\n\t case 't':\n\t read();\n\t literal('rue');\n\t return newToken('boolean', true)\n\n\t case 'f':\n\t read();\n\t literal('alse');\n\t return newToken('boolean', false)\n\n\t case '-':\n\t case '+':\n\t if (read() === '-') {\n\t sign = -1;\n\t }\n\n\t lexState = 'sign';\n\t return\n\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t buffer = '';\n\t lexState = 'string';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t identifierNameStartEscape: function identifierNameStartEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t break\n\n\t default:\n\t if (!util.isIdStartChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t identifierName: function identifierName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t buffer += read();\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameEscape';\n\t return\n\t }\n\n\t if (util.isIdContinueChar(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('identifier', buffer)\n\t },\n\n\t identifierNameEscape: function identifierNameEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t break\n\n\t default:\n\t if (!util.isIdContinueChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t sign: function sign$1 () {\n\t switch (c) {\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', sign * Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t zero: function zero () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\n\t case 'x':\n\t case 'X':\n\t buffer += read();\n\t lexState = 'hexadecimal';\n\t return\n\t }\n\n\t return newToken('numeric', sign * 0)\n\t },\n\n\t decimalInteger: function decimalInteger () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalPointLeading: function decimalPointLeading () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalPoint: function decimalPoint () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalFraction: function decimalFraction () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalExponent: function decimalExponent () {\n\t switch (c) {\n\t case '+':\n\t case '-':\n\t buffer += read();\n\t lexState = 'decimalExponentSign';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentSign: function decimalExponentSign () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentInteger: function decimalExponentInteger () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t hexadecimal: function hexadecimal () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t lexState = 'hexadecimalInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t hexadecimalInteger: function hexadecimalInteger () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t string: function string () {\n\t switch (c) {\n\t case '\\\\':\n\t read();\n\t buffer += escape();\n\t return\n\n\t case '\"':\n\t if (doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case \"'\":\n\t if (!doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case '\\n':\n\t case '\\r':\n\t throw invalidChar(read())\n\n\t case '\\u2028':\n\t case '\\u2029':\n\t separatorChar(c);\n\t break\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t },\n\n\t start: function start () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t // This code is unreachable since the default lexState handles eof.\n\t // case undefined:\n\t // return newToken('eof')\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t buffer = read();\n\t lexState = 'identifierName';\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameStartEscape';\n\t return\n\n\t case '}':\n\t return newToken('punctuator', read())\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t lexState = 'string';\n\t return\n\t }\n\n\t if (util.isIdStartChar(c)) {\n\t buffer += read();\n\t lexState = 'identifierName';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t if (c === ':') {\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t lexState = 'value';\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t switch (c) {\n\t case ',':\n\t case '}':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (c === ']') {\n\t return newToken('punctuator', read())\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t switch (c) {\n\t case ',':\n\t case ']':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the default lexState.\n\t // if (c === undefined) {\n\t // read()\n\t // return newToken('eof')\n\t // }\n\n\t throw invalidChar(read())\n\t },\n\t};\n\n\tfunction newToken (type, value) {\n\t return {\n\t type: type,\n\t value: value,\n\t line: line,\n\t column: column,\n\t }\n\t}\n\n\tfunction literal (s) {\n\t for (var i = 0, list = s; i < list.length; i += 1) {\n\t var c = list[i];\n\n\t var p = peek();\n\n\t if (p !== c) {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t }\n\t}\n\n\tfunction escape () {\n\t var c = peek();\n\t switch (c) {\n\t case 'b':\n\t read();\n\t return '\\b'\n\n\t case 'f':\n\t read();\n\t return '\\f'\n\n\t case 'n':\n\t read();\n\t return '\\n'\n\n\t case 'r':\n\t read();\n\t return '\\r'\n\n\t case 't':\n\t read();\n\t return '\\t'\n\n\t case 'v':\n\t read();\n\t return '\\v'\n\n\t case '0':\n\t read();\n\t if (util.isDigit(peek())) {\n\t throw invalidChar(read())\n\t }\n\n\t return '\\0'\n\n\t case 'x':\n\t read();\n\t return hexEscape()\n\n\t case 'u':\n\t read();\n\t return unicodeEscape()\n\n\t case '\\n':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return ''\n\n\t case '\\r':\n\t read();\n\t if (peek() === '\\n') {\n\t read();\n\t }\n\n\t return ''\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t throw invalidChar(read())\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t return read()\n\t}\n\n\tfunction hexEscape () {\n\t var buffer = '';\n\t var c = peek();\n\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tfunction unicodeEscape () {\n\t var buffer = '';\n\t var count = 4;\n\n\t while (count-- > 0) {\n\t var c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t }\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tvar parseStates = {\n\t start: function start () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (token.type) {\n\t case 'identifier':\n\t case 'string':\n\t key = token.value;\n\t parseState = 'afterPropertyName';\n\t return\n\n\t case 'punctuator':\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.value !== '}') {\n\t // throw invalidToken()\n\t // }\n\n\t pop();\n\t return\n\n\t case 'eof':\n\t throw invalidEOF()\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator' || token.value !== ':') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t parseState = 'beforePropertyValue';\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t if (token.type === 'punctuator' && token.value === ']') {\n\t pop();\n\t return\n\t }\n\n\t push();\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforePropertyName';\n\t return\n\n\t case '}':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforeArrayValue';\n\t return\n\n\t case ']':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'eof') {\n\t // throw invalidToken()\n\t // }\n\t },\n\t};\n\n\tfunction push () {\n\t var value;\n\n\t switch (token.type) {\n\t case 'punctuator':\n\t switch (token.value) {\n\t case '{':\n\t value = {};\n\t break\n\n\t case '[':\n\t value = [];\n\t break\n\t }\n\n\t break\n\n\t case 'null':\n\t case 'boolean':\n\t case 'numeric':\n\t case 'string':\n\t value = token.value;\n\t break\n\n\t // This code is unreachable.\n\t // default:\n\t // throw invalidToken()\n\t }\n\n\t if (root === undefined) {\n\t root = value;\n\t } else {\n\t var parent = stack[stack.length - 1];\n\t if (Array.isArray(parent)) {\n\t parent.push(value);\n\t } else {\n\t Object.defineProperty(parent, key, {\n\t value: value,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\n\t if (value !== null && typeof value === 'object') {\n\t stack.push(value);\n\n\t if (Array.isArray(value)) {\n\t parseState = 'beforeArrayValue';\n\t } else {\n\t parseState = 'beforePropertyName';\n\t }\n\t } else {\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t }\n\t}\n\n\tfunction pop () {\n\t stack.pop();\n\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t}\n\n\t// This code is unreachable.\n\t// function invalidParseState () {\n\t// return new Error(`JSON5: invalid parse state '${parseState}'`)\n\t// }\n\n\t// This code is unreachable.\n\t// function invalidLexState (state) {\n\t// return new Error(`JSON5: invalid lex state '${state}'`)\n\t// }\n\n\tfunction invalidChar (c) {\n\t if (c === undefined) {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t }\n\n\t return syntaxError((\"JSON5: invalid character '\" + (formatChar(c)) + \"' at \" + line + \":\" + column))\n\t}\n\n\tfunction invalidEOF () {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t}\n\n\t// This code is unreachable.\n\t// function invalidToken () {\n\t// if (token.type === 'eof') {\n\t// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n\t// }\n\n\t// const c = String.fromCodePoint(token.value.codePointAt(0))\n\t// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n\t// }\n\n\tfunction invalidIdentifier () {\n\t column -= 5;\n\t return syntaxError((\"JSON5: invalid identifier character at \" + line + \":\" + column))\n\t}\n\n\tfunction separatorChar (c) {\n\t console.warn((\"JSON5: '\" + (formatChar(c)) + \"' in strings is not valid ECMAScript; consider escaping\"));\n\t}\n\n\tfunction formatChar (c) {\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t if (replacements[c]) {\n\t return replacements[c]\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t return '\\\\x' + ('00' + hexString).substring(hexString.length)\n\t }\n\n\t return c\n\t}\n\n\tfunction syntaxError (message) {\n\t var err = new SyntaxError(message);\n\t err.lineNumber = line;\n\t err.columnNumber = column;\n\t return err\n\t}\n\n\tvar stringify = function stringify (value, replacer, space) {\n\t var stack = [];\n\t var indent = '';\n\t var propertyList;\n\t var replacerFunc;\n\t var gap = '';\n\t var quote;\n\n\t if (\n\t replacer != null &&\n\t typeof replacer === 'object' &&\n\t !Array.isArray(replacer)\n\t ) {\n\t space = replacer.space;\n\t quote = replacer.quote;\n\t replacer = replacer.replacer;\n\t }\n\n\t if (typeof replacer === 'function') {\n\t replacerFunc = replacer;\n\t } else if (Array.isArray(replacer)) {\n\t propertyList = [];\n\t for (var i = 0, list = replacer; i < list.length; i += 1) {\n\t var v = list[i];\n\n\t var item = (void 0);\n\n\t if (typeof v === 'string') {\n\t item = v;\n\t } else if (\n\t typeof v === 'number' ||\n\t v instanceof String ||\n\t v instanceof Number\n\t ) {\n\t item = String(v);\n\t }\n\n\t if (item !== undefined && propertyList.indexOf(item) < 0) {\n\t propertyList.push(item);\n\t }\n\t }\n\t }\n\n\t if (space instanceof Number) {\n\t space = Number(space);\n\t } else if (space instanceof String) {\n\t space = String(space);\n\t }\n\n\t if (typeof space === 'number') {\n\t if (space > 0) {\n\t space = Math.min(10, Math.floor(space));\n\t gap = ' '.substr(0, space);\n\t }\n\t } else if (typeof space === 'string') {\n\t gap = space.substr(0, 10);\n\t }\n\n\t return serializeProperty('', {'': value})\n\n\t function serializeProperty (key, holder) {\n\t var value = holder[key];\n\t if (value != null) {\n\t if (typeof value.toJSON5 === 'function') {\n\t value = value.toJSON5(key);\n\t } else if (typeof value.toJSON === 'function') {\n\t value = value.toJSON(key);\n\t }\n\t }\n\n\t if (replacerFunc) {\n\t value = replacerFunc.call(holder, key, value);\n\t }\n\n\t if (value instanceof Number) {\n\t value = Number(value);\n\t } else if (value instanceof String) {\n\t value = String(value);\n\t } else if (value instanceof Boolean) {\n\t value = value.valueOf();\n\t }\n\n\t switch (value) {\n\t case null: return 'null'\n\t case true: return 'true'\n\t case false: return 'false'\n\t }\n\n\t if (typeof value === 'string') {\n\t return quoteString(value, false)\n\t }\n\n\t if (typeof value === 'number') {\n\t return String(value)\n\t }\n\n\t if (typeof value === 'object') {\n\t return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n\t }\n\n\t return undefined\n\t }\n\n\t function quoteString (value) {\n\t var quotes = {\n\t \"'\": 0.1,\n\t '\"': 0.2,\n\t };\n\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t var product = '';\n\n\t for (var i = 0; i < value.length; i++) {\n\t var c = value[i];\n\t switch (c) {\n\t case \"'\":\n\t case '\"':\n\t quotes[c]++;\n\t product += c;\n\t continue\n\n\t case '\\0':\n\t if (util.isDigit(value[i + 1])) {\n\t product += '\\\\x00';\n\t continue\n\t }\n\t }\n\n\t if (replacements[c]) {\n\t product += replacements[c];\n\t continue\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n\t continue\n\t }\n\n\t product += c;\n\t }\n\n\t var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });\n\n\t product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n\t return quoteChar + product + quoteChar\n\t }\n\n\t function serializeObject (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var keys = propertyList || Object.keys(value);\n\t var partial = [];\n\t for (var i = 0, list = keys; i < list.length; i += 1) {\n\t var key = list[i];\n\n\t var propertyString = serializeProperty(key, value);\n\t if (propertyString !== undefined) {\n\t var member = serializeKey(key) + ':';\n\t if (gap !== '') {\n\t member += ' ';\n\t }\n\t member += propertyString;\n\t partial.push(member);\n\t }\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '{}';\n\t } else {\n\t var properties;\n\t if (gap === '') {\n\t properties = partial.join(',');\n\t final = '{' + properties + '}';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t properties = partial.join(separator);\n\t final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\n\t function serializeKey (key) {\n\t if (key.length === 0) {\n\t return quoteString(key, true)\n\t }\n\n\t var firstChar = String.fromCodePoint(key.codePointAt(0));\n\t if (!util.isIdStartChar(firstChar)) {\n\t return quoteString(key, true)\n\t }\n\n\t for (var i = firstChar.length; i < key.length; i++) {\n\t if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n\t return quoteString(key, true)\n\t }\n\t }\n\n\t return key\n\t }\n\n\t function serializeArray (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var partial = [];\n\t for (var i = 0; i < value.length; i++) {\n\t var propertyString = serializeProperty(String(i), value);\n\t partial.push((propertyString !== undefined) ? propertyString : 'null');\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '[]';\n\t } else {\n\t if (gap === '') {\n\t var properties = partial.join(',');\n\t final = '[' + properties + ']';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t var properties$1 = partial.join(separator);\n\t final = '[\\n' + indent + properties$1 + ',\\n' + stepback + ']';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\t};\n\n\tvar JSON5 = {\n\t parse: parse,\n\t stringify: stringify,\n\t};\n\n\tvar lib = JSON5;\n\n\tvar es5 = lib;\n\n\treturn es5;\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","// 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 { existsSync } from 'fs';\nimport { readFile } from 'fs/promises';\nimport { dirname, join } from 'path';\nimport { glob } from 'glob';\nimport JSON5 from 'json5';\nimport dayjs from 'dayjs';\nimport { PackageMetadata } from './types';\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 * Logger interface\n */\nexport interface Logger {\n /**\n * Log an debug message\n * @param msg - The message to log\n */\n readonly debug: (msg: string) => void;\n /**\n * Log an info message\n * @param msg - The message to log\n */\n readonly info: (msg: string) => void;\n /**\n * Log a warning message\n * @param msg - The message to log\n */\n readonly warn: (msg: string) => void;\n /**\n * Log an error message\n * @param msg - The message to log\n */\n readonly error: (msg: string) => void;\n}\n\n/**\n * Default console logger implementation\n * @param prefix - Log prefix\n * @param driver - Console logging driver instance\n */\nexport const createConsoleLogger = (prefix?: string, driver?: any): Logger => {\n const d = driver?.debug ?? (() => {});\n const i = driver?.info ?? globalThis.console.info;\n const w = driver?.warn ?? globalThis.console.warn;\n const e = driver?.error ?? globalThis.console.error;\n if (prefix) {\n return {\n debug: (msg: string) => d(`[${prefix}]: ${msg}`),\n info: (msg: string) => i(`[${prefix}]: ${msg}`),\n warn: (msg: string) => w(`[${prefix}]: ${msg}`),\n error: (msg: string) => e(`[${prefix}]: ${msg}`),\n };\n } else {\n return {\n debug: (msg: string) => d(`${msg}`),\n info: (msg: string) => i(`${msg}`),\n warn: (msg: string) => w(`${msg}`),\n error: (msg: string) => e(`${msg}`),\n };\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Result of package resolution with source tracking\n * @template T - Type of the package metadata\n */\nexport interface PackageResolutionResult<T> {\n readonly metadata: T;\n readonly sourceMap: Map<string, string>;\n}\n\n/**\n * Workspace sibling project information\n */\nexport interface WorkspaceSibling {\n readonly name: string;\n readonly version: string;\n readonly path: string;\n}\n\nconst collectStringArray = (value: unknown): string[] | undefined => {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const entries = value.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n\n return entries.length > 0 ? entries : undefined;\n};\n\nconst resolveWorkspacePatternsFromPackageJson = (\n packageJson: any\n): string[] | undefined => {\n const directPatterns = collectStringArray(packageJson?.workspaces);\n if (directPatterns) {\n return directPatterns;\n }\n\n return collectStringArray(packageJson?.workspaces?.packages);\n};\n\nconst parseYamlScalar = (value: string): string | undefined => {\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n try {\n const parsed = JSON5.parse(trimmed);\n return typeof parsed === 'string' ? parsed : undefined;\n } catch {\n const commentIndex = trimmed.indexOf(' #');\n const withoutComment =\n commentIndex >= 0 ? trimmed.slice(0, commentIndex).trim() : trimmed;\n return withoutComment || undefined;\n }\n};\n\nconst parsePnpmWorkspacePatterns = (content: string): string[] => {\n const patterns: string[] = [];\n const lines = content.split(/\\r?\\n/);\n\n let inPackagesSection = false;\n let packagesIndent = -1;\n\n for (const rawLine of lines) {\n const line = rawLine.replace(/\\t/g, ' ');\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n const indent = line.length - line.trimStart().length;\n if (!inPackagesSection) {\n const match = trimmed.match(/^packages\\s*:\\s*(.*)$/);\n if (!match) {\n continue;\n }\n\n const remaining = match[1].trim();\n if (remaining) {\n const parsed = JSON5.parse(remaining);\n if (Array.isArray(parsed)) {\n const inlinePatterns = parsed.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n patterns.push(...inlinePatterns);\n }\n break;\n }\n\n inPackagesSection = true;\n packagesIndent = indent;\n continue;\n }\n\n if (indent <= packagesIndent && !trimmed.startsWith('-')) {\n break;\n }\n\n const match = trimmed.match(/^-\\s*(.+)$/);\n if (!match) {\n continue;\n }\n\n const pattern = parseYamlScalar(match[1]);\n if (pattern) {\n patterns.push(pattern);\n }\n }\n\n return patterns;\n};\n\nconst resolveWorkspacePatterns = async (\n workspaceRoot: string,\n logger: Logger\n): Promise<string[]> => {\n try {\n const rootPackageJsonPath = join(workspaceRoot, 'package.json');\n if (existsSync(rootPackageJsonPath)) {\n const content = await readFile(rootPackageJsonPath, 'utf-8');\n const rootPackageJson = JSON5.parse(content);\n const workspacePatterns =\n resolveWorkspacePatternsFromPackageJson(rootPackageJson);\n if (workspacePatterns?.length) {\n return workspacePatterns;\n }\n }\n\n const pnpmWorkspacePath = join(workspaceRoot, 'pnpm-workspace.yaml');\n if (!existsSync(pnpmWorkspacePath)) {\n return [];\n }\n\n const pnpmWorkspaceContent = await readFile(pnpmWorkspacePath, 'utf-8');\n return parsePnpmWorkspacePatterns(pnpmWorkspaceContent);\n } catch (error) {\n logger.warn(\n `Failed to resolve workspace patterns from ${workspaceRoot}: ${error}`\n );\n return [];\n }\n};\n\n/**\n * Recursively flatten an object into dot-notation key-value pairs\n * @param obj - Object to flatten\n * @param prefix - Current key prefix\n * @param map - Store key-value entries into this\n */\nconst flattenObject = (obj: any, prefix: string, map: PackageMetadata) => {\n for (const [key, value] of Object.entries(obj)) {\n if (!value) continue;\n const fullKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'string') {\n map[fullKey] = value;\n } else if (Array.isArray(value)) {\n map[fullKey] = value.map((v) => String(v)).join(',');\n } else if (typeof value === 'object') {\n // Recursively flatten nested objects\n flattenObject(value, fullKey, map);\n } else {\n // Convert other types to string\n map[fullKey] = String(value);\n }\n }\n};\n\n/**\n * Find workspace root by looking for workspace configuration files\n * @param startPath - Starting directory path\n * @param logger - Logger instance\n * @returns Promise resolving to workspace root path or undefined if not found\n */\nexport const findWorkspaceRoot = async (\n startPath: string,\n logger: Logger\n): Promise<string | undefined> => {\n let currentPath = startPath;\n\n while (currentPath !== dirname(currentPath)) {\n const packageJsonPath = join(currentPath, 'package.json');\n\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON5.parse(content);\n\n // Check for workspace configurations\n if (\n packageJson.workspaces ||\n existsSync(join(currentPath, 'pnpm-workspace.yaml')) ||\n existsSync(join(currentPath, 'lerna.json'))\n ) {\n return currentPath;\n }\n } catch (error) {\n logger.warn(\n `Failed to parse package.json at ${packageJsonPath}: ${error}`\n );\n }\n }\n\n currentPath = dirname(currentPath);\n }\n\n return undefined;\n};\n\n/**\n * Collect workspace sibling projects\n * @param workspaceRoot - Workspace root directory\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)\n */\nexport const collectWorkspaceSiblings = async (\n workspaceRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): Promise<Map<string, WorkspaceSibling>> => {\n const siblings = new Map<string, WorkspaceSibling>();\n\n try {\n const workspacePatterns = await resolveWorkspacePatterns(\n workspaceRoot,\n logger\n );\n if (workspacePatterns.length <= 0) {\n return siblings;\n }\n\n // Find all workspace directories\n const workspaceDirs = new Set<string>();\n for (const pattern of workspacePatterns) {\n const matches = await glob(pattern, {\n cwd: workspaceRoot,\n });\n matches.forEach((match) => workspaceDirs.add(match));\n }\n\n // Read package.json from each workspace directory\n for (const workspaceDir of workspaceDirs) {\n const packageJsonPath = join(workspaceRoot, workspaceDir, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const packagePath = join(workspaceRoot, workspaceDir);\n\n // Use resolveRawPackageJsonObject to get the resolved version with Git tag consideration\n const resolvedPackage = await resolveRawPackageJsonObject(\n packagePath,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n\n const packageJson = resolvedPackage.metadata;\n\n if (packageJson.name && packageJson.version) {\n siblings.set(packageJson.name, {\n name: packageJson.name,\n version: packageJson.version,\n path: packagePath,\n });\n }\n } catch (error) {\n logger.warn(\n `Failed to resolve package.json from ${packageJsonPath}: ${error}`\n );\n }\n }\n }\n } catch (error) {\n logger.warn(\n `Failed to collect workspace siblings from ${workspaceRoot}: ${error}`\n );\n }\n\n return siblings;\n};\n\n/**\n * Replace \"*\" wildcards in peerDependencies with actual workspace sibling versions\n * @param packageJson - Package.json object to modify\n * @param siblings - Map of workspace sibling projects\n * @param versionPrefix - Version prefix to add (e.g., \"^\", \"~\", \"\")\n * @returns Modified package.json object\n */\nexport const replacePeerDependenciesWildcards = (\n packageJson: any,\n siblings: Map<string, WorkspaceSibling>,\n versionPrefix: string\n): any => {\n // Deep clone the package.json to avoid modifying the original\n const modifiedPackageJson = JSON5.parse(JSON.stringify(packageJson));\n\n if (\n !modifiedPackageJson.peerDependencies ||\n typeof modifiedPackageJson.peerDependencies !== 'object'\n ) {\n return modifiedPackageJson;\n }\n\n // Process each peer dependency\n for (const [depName, depVersion] of Object.entries(\n modifiedPackageJson.peerDependencies\n )) {\n if (depVersion === '*' && siblings.has(depName)) {\n const sibling = siblings.get(depName)!;\n modifiedPackageJson.peerDependencies[depName] =\n `${versionPrefix}${sibling.version}`;\n }\n }\n\n return modifiedPackageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Merge package metadata with inheritance (child overrides parent)\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package metadata\n * @param childMetadata - Child package metadata\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @returns Merged package metadata\n */\nexport const mergePackageMetadata = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n sourceMap: Map<string, string>,\n parentMetadata: PackageMetadata,\n childMetadata: PackageMetadata,\n parentSourceDir: string,\n childSourceDir: string,\n _repositoryPath: string\n): Promise<PackageMetadata> => {\n // Fetch git metadata\n const metadata = await fetchGitMetadata();\n\n const merged: PackageMetadata = {};\n flattenObject(metadata, '', merged);\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && metadata.version) {\n merged.version = metadata.version;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n/**\n * Merge raw package.json objects with inheritance (child overrides parent)\n * Only inherits package metadata fields, not project-specific configurations\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package object\n * @param childMetadata - Child package object\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @param repositoryPath - Path to Git repository root\n * @returns Merged package object with only metadata fields\n */\nconst mergeRawPackageJson = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n sourceMap: Map<string, string>,\n parentMetadata: any,\n childMetadata: any,\n parentSourceDir: string,\n childSourceDir: string,\n repositoryPath: string\n): Promise<any> => {\n // Fetch git metadata\n const gitMetadata = await fetchGitMetadata();\n const merged = { ...gitMetadata };\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n if (inheritableFields.has(key)) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && gitMetadata.version) {\n merged.version = gitMetadata.version;\n sourceMap.set('version', repositoryPath); // Mark as Git-sourced\n }\n\n if (!merged.version) {\n merged.version = '0.0.1';\n const gitInfo =\n typeof merged.git === 'object' && merged.git !== null ? merged.git : {};\n gitInfo.version = gitInfo.version ?? merged.version;\n gitInfo.commit = gitInfo.commit ?? {\n hash: 'unknown',\n shortHash: 'unknown',\n };\n gitInfo.tags = gitInfo.tags ?? [];\n gitInfo.branches = gitInfo.branches ?? [];\n merged.git = gitInfo;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param logger - Logger instance\n * @param readPackageMetadataFn - Function to read package metadata\n * @param mergePackageMetadataFn - Function to merge package metadata\n * @returns Promise resolving to resolved package metadata\n */\nconst resolvePackageMetadataT = async <T>(\n projectRoot: string,\n logger: Logger,\n readPackageMetadataFn: (path: string) => Promise<T>,\n mergePackageMetadataFn: (\n a: T,\n b: T,\n aDir: string,\n bDir: string,\n repositoryPath: string\n ) => Promise<T>\n): Promise<T> => {\n const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);\n\n if (!workspaceRoot) {\n // No workspace, just read local package.json\n const localPackagePath = join(projectRoot, 'package.json');\n const localMetadata = await readPackageMetadataFn(localPackagePath);\n return mergePackageMetadataFn(\n {} as T,\n localMetadata,\n '', // dummy\n projectRoot,\n projectRoot\n );\n }\n\n const projectPackagePath = join(projectRoot, 'package.json');\n\n // Start with root package metadata\n const rootPackagePath = join(workspaceRoot, 'package.json');\n const metadata = await readPackageMetadataFn(rootPackagePath);\n\n // If current project is not the root, merge with project-specific metadata\n if (\n projectPackagePath !== rootPackagePath &&\n existsSync(projectPackagePath)\n ) {\n const projectMetadata = await readPackageMetadataFn(projectPackagePath);\n return mergePackageMetadataFn(\n metadata,\n projectMetadata,\n workspaceRoot,\n projectRoot,\n projectRoot\n );\n } else {\n return mergePackageMetadataFn(\n {} as T,\n metadata,\n '', // dummy\n workspaceRoot,\n projectRoot\n );\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Read and parse package.json file\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to package metadata\n */\nconst readPackageMetadata = async (\n logger: Logger,\n packagePath: string\n): Promise<PackageMetadata> => {\n try {\n const content = await readFile(packagePath, 'utf-8');\n const json = JSON5.parse(content);\n const map: PackageMetadata = {};\n flattenObject(json, '', map);\n return map;\n } catch (error) {\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n return {};\n }\n};\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param logger - Logger instance\n * @returns Promise resolving to resolved package metadata\n */\nexport const resolvePackageMetadata = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n logger: Logger\n): Promise<PackageResolutionResult<PackageMetadata>> => {\n const sourceMap = new Map<string, string>();\n const metadata = await resolvePackageMetadataT<PackageMetadata>(\n projectRoot,\n logger,\n readPackageMetadata.bind(undefined, logger),\n mergePackageMetadata.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n sourceMap\n )\n );\n\n return {\n metadata,\n sourceMap,\n };\n};\n\n/**\n * Read and parse package.json file without flattening\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to raw package object\n */\nconst readRawPackageJson = async (\n logger: Logger,\n packagePath: string,\n ignoreNotExist: boolean = false\n): Promise<any> => {\n if (ignoreNotExist && !existsSync(packagePath)) {\n return {};\n }\n try {\n const content = await readFile(packagePath, 'utf-8');\n return JSON5.parse(content);\n } catch (error) {\n if (ignoreNotExist && (error as any)?.code === 'ENOENT') {\n return {};\n }\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n throw error;\n }\n};\n\n/**\n * Resolve raw package.json for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to resolved raw package.json object with source tracking\n */\nexport const resolveRawPackageJsonObject = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger,\n ignoreNotExist: boolean = false\n): Promise<PackageResolutionResult<any>> => {\n const sourceMap = new Map<string, string>();\n const readRawPackageJsonFn = async (packagePath: string) =>\n readRawPackageJson(logger, packagePath, ignoreNotExist);\n const packageJson = await resolvePackageMetadataT<any>(\n projectRoot,\n logger,\n readRawPackageJsonFn,\n mergeRawPackageJson.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n sourceMap\n )\n );\n\n return {\n metadata: packageJson,\n sourceMap,\n };\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 { readdir, readFile, stat } from 'fs/promises';\nimport { isAbsolute, join } from 'path';\nimport type { Logger } from './internal.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Fast tag listing implementation that reads tags directly from filesystem\n * instead of using isomorphic-git's `listTags`\n */\n\n/**\n * Parse packed-refs file to extract tags\n * @param packedRefsPath - Path to packed-refs file\n * @returns Array of tag names\n */\nconst parsePackedRefs = async (packedRefsPath: string): Promise<string[]> => {\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n const tags: string[] = [];\n\n for (const line of lines) {\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Format: <hash> refs/tags/<tagname>\n const match = line.match(/^[0-9a-f]{40}\\s+refs\\/tags\\/(.+)$/);\n if (match) {\n // Handle peeled tags (annotated tags) marked with ^{}\n const tagName = match[1];\n if (!tagName.endsWith('^{}')) {\n tags.push(tagName);\n }\n }\n }\n\n return tags;\n } catch (error) {\n // packed-refs might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Read loose tag refs from refs/tags directory\n * @param refsTagsPath - Path to refs/tags directory\n * @returns Array of tag names\n */\nconst readLooseTags = async (refsTagsPath: string): Promise<string[]> => {\n try {\n const entries = await readdir(refsTagsPath, { withFileTypes: true });\n const tags: string[] = [];\n\n for (const entry of entries) {\n if (entry.isFile()) {\n tags.push(entry.name);\n }\n }\n\n return tags;\n } catch (error) {\n // refs/tags might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Fast implementation of listTags that reads directly from filesystem\n * @param repoPath - Repository path\n * @returns Array of all tag names\n */\nexport const listTagsFast = async (repoPath: string): Promise<string[]> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n // Read the actual git dir location from .git file\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Read tags from both packed-refs and loose refs\n const [packedTags, looseTags] = await Promise.all([\n parsePackedRefs(join(actualGitDir, 'packed-refs')),\n readLooseTags(join(actualGitDir, 'refs', 'tags')),\n ]);\n\n // Combine and deduplicate tags\n const allTags = new Set<string>([...packedTags, ...looseTags]);\n\n // Sort tags for consistent output (matching git.listTags behavior)\n return Array.from(allTags).sort();\n};\n\n/**\n * Get hash for a specific tag by reading refs directly\n * @param repoPath - Repository path\n * @param tagName - Name of the tag\n * @returns The SHA-1 hash the tag points to, or null if not found\n */\nexport const resolveTagFast = async (\n repoPath: string,\n tagName: string\n): Promise<string | null> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // First try loose ref\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n return hash.trim();\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then try packed-refs\n const packedRefsPath = join(actualGitDir, 'packed-refs');\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Check if this line is for our tag\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && match[2] === tagName) {\n // Check if next line is a peeled ref (^{})\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // Return the peeled ref (points directly to commit)\n return lines[i + 1].substring(1, 41);\n }\n // Return the tag object hash\n return match[1];\n }\n }\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n return null;\n};\n\n/**\n * Batch resolve multiple tags for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to hash\n */\nexport const resolveTagsBatch = async (\n repoPath: string,\n tagNames: string[]\n): Promise<Map<string, string>> => {\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, string>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n // Check for peeled ref\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n result.set(match[2], lines[i + 1].substring(1, 41));\n } else {\n result.set(match[2], match[1]);\n }\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n result.set(tagName, hash.trim());\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n\n return result;\n};\n\n/**\n * Batch resolve multiple tags with their commit hashes for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to {oid, commitOid}\n */\nexport const resolveTagsBatchWithCommit = async (\n repoPath: string,\n tagNames: string[],\n logger: Logger\n): Promise<Map<string, { oid: string; commitOid: string }>> => {\n const startTime = Date.now();\n\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, { oid: string; commitOid: string }>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n const packedRefsStart = Date.now();\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n const tagName = match[2];\n const oid = match[1];\n\n // Check for peeled ref on next line\n let commitOid = oid; // Default: assume lightweight tag\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // This is an annotated tag, next line has the commit\n commitOid = lines[i + 1].substring(1, 41);\n }\n\n result.set(tagName, { oid, commitOid });\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n logger.debug(\n `[fast-tags] read packed-refs: ${Date.now() - packedRefsStart}ms`\n );\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n if (remainingTags.length > 0) {\n const looseRefsStart = Date.now();\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n const oid = hash.trim();\n\n // Check if this is an annotated tag by reading the object type\n let commitOid = oid;\n try {\n // Use git cat-file to check object type\n const { execSync } = require('child_process');\n const objectType = execSync(\n `git -C \"${repoPath}\" cat-file -t ${oid}`,\n { encoding: 'utf-8' }\n ).trim();\n\n if (objectType === 'tag') {\n // It's an annotated tag, extract the commit it points to\n const tagContent = execSync(\n `git -C \"${repoPath}\" cat-file -p ${oid}`,\n { encoding: 'utf-8' }\n );\n const objectMatch = tagContent.match(/^object ([0-9a-f]{40})$/m);\n if (objectMatch) {\n commitOid = objectMatch[1];\n }\n }\n } catch (error) {\n // If git cat-file fails, assume it's a lightweight tag\n logger.debug(\n `[fast-tags] Could not determine object type for ${tagName}: ${error}`\n );\n }\n\n result.set(tagName, { oid, commitOid });\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n logger.debug(\n `[fast-tags] read loose refs: ${Date.now() - looseRefsStart}ms`\n );\n }\n\n const totalTime = Date.now() - startTime;\n logger.debug(`[fast-tags] resolveTagsBatchWithCommit total: ${totalTime}ms`);\n logger.debug(`[fast-tags] Resolved ${result.size}/${tagNames.length} tags`);\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 fs from 'fs/promises';\nimport git from 'isomorphic-git';\nimport type { TagInfo, Version } from './analyzer';\nimport type { Logger } from './internal.js';\nimport {\n listTagsFast,\n resolveTagsBatch,\n resolveTagsBatchWithCommit,\n} from './fast-tags.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Git operations for tag management\n * Handles all Git interactions\n */\n\n/**\n * Tag with OID information\n */\nexport interface TagWithOid {\n name: string;\n oid: string; // The OID this tag points to (could be tag object or commit)\n targetCommit?: string; // The commit this tag ultimately points to (resolved from annotated tags)\n}\n\n/**\n * Get all tags with their OIDs\n * @param repoPath - Repository path\n * @returns Array of tags with OID information\n */\nexport const getAllTagsWithOids = async (\n repoPath: string\n): Promise<TagWithOid[]> => {\n const tags = await listTagsFast(repoPath);\n const tagHashes = await resolveTagsBatch(repoPath, tags);\n\n const result: TagWithOid[] = [];\n for (const [tagName, oid] of tagHashes.entries()) {\n result.push({ name: tagName, oid });\n }\n\n return result;\n};\n\n/**\n * Resolve tag OID to commit hash\n * @param repoPath - Repository path\n * @param tagOid - Tag OID\n * @returns Commit hash this tag points to\n */\nexport const resolveTagToCommit = async (\n repoPath: string,\n tagOid: string\n): Promise<string> => {\n try {\n // Try to read as annotated tag\n const tagObject = await git.readTag({\n fs,\n dir: repoPath,\n oid: tagOid,\n });\n\n if (tagObject?.tag?.object) {\n // Annotated tag - return the commit it points to\n return tagObject.tag.object;\n }\n } catch {\n // Not an annotated tag, must be lightweight\n }\n\n // Lightweight tag - OID is the commit\n return tagOid;\n};\n\n/**\n * Get tag information for specific tags\n * @param repoPath - Repository path\n * @param tagNames - Tag names to get information for\n * @param parseVersion - Function to parse version from tag name\n * @returns Array of TagInfo\n */\nexport const getTagsInfo = async (\n repoPath: string,\n tagNames: string[],\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<TagInfo[]> => {\n const startTime = Date.now();\n const result: TagInfo[] = [];\n\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n\n for (const tagName of tagNames) {\n const data = tagData.get(tagName);\n if (!data) {\n logger.warn(`[git-ops] Tag ${tagName} not found`);\n continue;\n }\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n result.push({\n name: tagName,\n hash: commitOid,\n version,\n });\n }\n\n logger.debug(`[git-ops] getTagsInfo: ${Date.now() - startTime}ms`);\n logger.debug(\n `[git-ops] Got info for ${result.length}/${tagNames.length} tags`\n );\n\n return result;\n};\n\n/**\n * Build complete tag cache from repository\n * @param repoPath - Repository path\n * @param parseVersion - Function to parse version from tag name\n * @returns Map of commit hash to TagInfo array\n */\nexport const buildCompleteTagCache = async (\n repoPath: string,\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<Map<string, TagInfo[]>> => {\n const totalStart = Date.now();\n const cache = new Map<string, TagInfo[]>();\n\n const listStart = Date.now();\n const tags = await listTagsFast(repoPath);\n logger.debug(`[git-ops] listTagsFast: ${Date.now() - listStart}ms`);\n logger.debug(`[git-ops] Found ${tags.length} tags`);\n\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tags, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit: ${Date.now() - resolveStart}ms`\n );\n\n const buildStart = Date.now();\n for (const tagName of tags) {\n const data = tagData.get(tagName);\n if (!data) continue;\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n const tagInfo: TagInfo = {\n name: tagName,\n hash: commitOid,\n version,\n };\n\n if (!cache.has(commitOid)) {\n cache.set(commitOid, []);\n }\n cache.get(commitOid)!.push(tagInfo);\n }\n logger.debug(`[git-ops] build cache map: ${Date.now() - buildStart}ms`);\n\n // Sort tags by name for each commit to ensure consistent ordering\n const sortStart = Date.now();\n for (const tags of cache.values()) {\n tags.sort((a, b) => a.name.localeCompare(b.name));\n }\n logger.debug(`[git-ops] sort tags: ${Date.now() - sortStart}ms`);\n\n logger.debug(\n `[git-ops] buildCompleteTagCache total: ${Date.now() - totalStart}ms`\n );\n logger.debug(`[git-ops] Built cache with ${cache.size} unique commits`);\n\n return cache;\n};\n\n/**\n * Check if a tag has moved to a different commit\n * @param repoPath - Repository path\n * @param tagName - Tag name\n * @param cachedCommit - Commit hash from cache\n * @returns True if tag has moved\n */\nexport const hasTagMoved = async (\n repoPath: string,\n tagName: string,\n cachedCommit: string\n): Promise<boolean> => {\n try {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n\n const currentCommit = await resolveTagToCommit(repoPath, oid);\n return currentCommit !== cachedCommit;\n } catch {\n // Tag doesn't exist anymore\n return true;\n }\n};\n\n/**\n * Find modified tags (tags that point to different commits)\n * @param repoPath - Repository path\n * @param tagNames - Tag names to check\n * @param cache - Current cache\n * @returns Array of modified tag names\n */\nexport const findModifiedTags = async (\n repoPath: string,\n tagNames: string[],\n cache: Map<string, TagInfo[]>,\n logger: Logger\n): Promise<string[]> => {\n const totalStart = Date.now();\n const modified: string[] = [];\n\n // Batch resolve all tags at once with commit hashes\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit in findModified: ${Date.now() - resolveStart}ms`\n );\n\n const checkStart = Date.now();\n // Process each tag\n for (const tagName of tagNames) {\n // Find tag in cache\n let cachedCommit: string | undefined;\n for (const [commit, tags] of cache.entries()) {\n const tag = tags.find((t) => t.name === tagName);\n if (tag) {\n cachedCommit = commit;\n break;\n }\n }\n\n if (cachedCommit) {\n const data = tagData.get(tagName);\n if (!data) {\n // Tag doesn't exist anymore\n modified.push(tagName);\n } else {\n const { commitOid } = data;\n if (commitOid !== cachedCommit) {\n modified.push(tagName);\n }\n }\n }\n }\n logger.debug(`[git-ops] check modified tags: ${Date.now() - checkStart}ms`);\n\n logger.debug(\n `[git-ops] findModifiedTags total: ${Date.now() - totalStart}ms`\n );\n logger.debug(\n `[git-ops] Found ${modified.length} modified tags out of ${tagNames.length}`\n );\n\n return modified;\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 * as git from 'isomorphic-git';\nimport fs from 'fs/promises';\nimport dayjs from 'dayjs';\nimport { GitMetadata } from './types.js';\nimport { Logger } from './internal.js';\nimport { buildCompleteTagCache } from './git-operations.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n// Ported from: https://github.com/kekyo/RelaxVersioner/blob/master/RelaxVersioner.Core/Analyzer.cs\n\n/**\n * Version information\n */\nexport interface Version {\n major: number;\n minor?: number;\n build?: number;\n revision?: number;\n original: string;\n}\n\n/**\n * Primitive commit information\n */\ninterface CommitInfo {\n hash: string;\n shortHash: string;\n date: string;\n message: string;\n parents: string[];\n}\n\n/**\n * Tag information\n */\nexport interface TagInfo {\n name: string;\n hash: string;\n version: Version | undefined;\n}\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parse and validate a version component\n * @param value - The string value to parse\n * @returns The parsed number or undefined if invalid (negative or > 65535)\n */\nconst parseVersionComponent = (value: string): number | undefined => {\n const num = parseInt(value, 10);\n return num < 0 || num > 65535 ? undefined : num;\n};\n\n/**\n * Parse a version tag name\n * @param tagName - The version tag name\n * @returns The parsed version or undefined if the tag name is invalid\n */\nconst parseVersion = (tagName: string): Version | undefined => {\n // Remove common prefix 'v'.\n const cleanTag = tagName.replace(/^v/i, '');\n\n // Match version pattern: major.minor[.build[.revision]].\n const versionRegex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:\\.(\\d+))?$/;\n const match = cleanTag.match(versionRegex);\n\n if (!match) {\n return undefined;\n }\n\n const major = parseVersionComponent(match[1]);\n if (major === undefined) {\n return undefined;\n }\n\n const version: Version = {\n major,\n original: tagName,\n };\n\n if (match[2] !== undefined) {\n const minor = parseVersionComponent(match[2]);\n if (minor === undefined) {\n return undefined;\n }\n version.minor = minor;\n }\n if (match[3] !== undefined) {\n const build = parseVersionComponent(match[3]);\n if (build === undefined) {\n return undefined;\n }\n version.build = build;\n }\n if (match[4] !== undefined) {\n const revision = parseVersionComponent(match[4]);\n if (revision === undefined) {\n return undefined;\n }\n version.revision = revision;\n }\n\n return version;\n};\n\n/**\n * Check if a version is valid\n * @param version - The version to check\n * @returns True if the version is valid, false otherwise\n */\nconst isValidVersion = (version: Version): boolean => {\n // At least major component and optionally minor\n return (\n version.major >= 0 && (version.minor === undefined || version.minor >= 0)\n );\n};\n\n/**\n * Compare two versions\n * @param a - The first version\n * @param b - The second version\n * @returns A negative number if a is less than b, a positive number if a is greater than b, or 0 if they are equal\n */\nconst compareVersions = (a: Version, b: Version): number => {\n // Compare major\n if (a.major !== b.major) return b.major - a.major;\n\n // Compare minor (treat undefined as 0)\n const aMinor = a.minor ?? 0;\n const bMinor = b.minor ?? 0;\n if (aMinor !== bMinor) return bMinor - aMinor;\n\n // Compare build (treat undefined as 0)\n const aBuild = a.build ?? 0;\n const bBuild = b.build ?? 0;\n if (aBuild !== bBuild) return bBuild - aBuild;\n\n // Compare revision (treat undefined as 0)\n const aRevision = a.revision ?? 0;\n const bRevision = b.revision ?? 0;\n if (aRevision !== bRevision) return bRevision - aRevision;\n\n return 0;\n};\n\n/**\n * Increment the last version component\n * @param version - The version to increment\n * @returns The incremented version\n */\nconst incrementLastVersionComponent = (version: Version): Version => {\n // Increment the rightmost existing component\n if (version.revision !== undefined) {\n return { ...version, revision: version.revision + 1 };\n }\n if (version.build !== undefined) {\n return { ...version, build: version.build + 1 };\n }\n if (version.minor !== undefined) {\n return { ...version, minor: version.minor + 1 };\n }\n\n // If only major exists, increment major\n return {\n ...version,\n major: version.major + 1,\n original: `${version.major + 1}`,\n };\n};\n\n/**\n * Format a version\n * @param version - The version to format\n * @returns The formatted version\n */\nconst formatVersion = (version: Version): string => {\n let result = `${version.major}`;\n\n if (version.minor !== undefined) {\n result += `.${version.minor}`;\n\n if (version.build !== undefined) {\n result += `.${version.build}`;\n\n if (version.revision !== undefined) {\n result += `.${version.revision}`;\n }\n }\n }\n\n return result;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get a commit by hash\n * @param repositoryPath - Local Git repository directory\n * @param hash - The hash of the commit\n * @returns The commit or undefined if the commit is not found\n */\nconst getCommit = async (\n repositoryPath: string,\n hash: string\n): Promise<CommitInfo | undefined> => {\n try {\n const commit = await git.readCommit({ fs, dir: repositoryPath, oid: hash });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get the current commit\n * @param repositoryPath - Local Git repository directory\n * @returns The current commit or undefined if the current commit is not found\n */\nconst getCurrentCommit = async (\n repositoryPath: string\n): Promise<CommitInfo | undefined> => {\n try {\n const currentOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: 'HEAD',\n });\n const commit = await git.readCommit({\n fs,\n dir: repositoryPath,\n oid: currentOid,\n });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get related tags from commit map\n * @param commitToTags - Map of commit hash to tags\n * @param commitHash - The hash of the commit\n * @returns The related tags or an empty array if no tags are found\n */\nconst getRelatedTagsFromMap = (\n commitToTags: Map<string, TagInfo[]>,\n commitHash: string\n): TagInfo[] => {\n return commitToTags.get(commitHash) || [];\n};\n\n// Removed: getRelatedTags and getRelatedTagsForVersioning functions are no longer needed as we use the commit map directly\n\n/**\n * Get the commit related branch name.\n * @param repositoryPath - Local Git repository directory\n * @param commitHash - The hash of the commit\n * @returns The commit related branch name or undefined if not found\n */\nconst getRelatedBranches = async (\n repositoryPath: string,\n commitHash: string\n): Promise<string[]> => {\n try {\n const branches = await git.listBranches({ fs, dir: repositoryPath });\n const relatedBranches: string[] = [];\n\n for (const branch of branches) {\n try {\n // Check if the branch HEAD points to the specified commit\n const branchOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: branch,\n });\n if (branchOid === commitHash) {\n relatedBranches.push(branch);\n }\n } catch {\n // Skip branches that can't be resolved\n }\n }\n\n return relatedBranches;\n } catch {\n return [];\n }\n};\n\n/**\n * Check if the repository has modified files (following RelaxVersioner logic).\n * Checks for staged files, unstaged files, and untracked files (respecting .gitignore).\n * @param repositoryPath - Local Git repository directory\n * @returns Modified files\n */\nconst getModifiedFiles = async (\n repositoryPath: string\n): Promise<git.StatusRow[]> => {\n try {\n const status = await git.statusMatrix({ fs, dir: repositoryPath });\n // statusMatrix returns [filepath, headStatus, workdirStatus, stageStatus]\n // headStatus: 0=absent, 1=present\n // workdirStatus: 0=absent, 1=present, 2=modified\n // stageStatus: 0=absent, 1=present, 2=modified, 3=added\n // By default, ignored files are excluded (ignored: false)\n return status.filter(\n ([, head, workdir, stage]) =>\n workdir === 2 || // modified in working directory (unstaged)\n stage === 2 || // modified in stage (staged)\n stage === 3 || // added to stage (staged)\n (head === 1 && workdir === 0) || // deleted from working directory\n (head === 0 && workdir === 1) // untracked files (respecting .gitignore)\n );\n } catch {\n return [];\n }\n};\n\nconst formatModifiedFile = (modifiedFile: git.StatusRow) => {\n return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Scheduled commit\n */\ninterface ScheduledCommit {\n commit: CommitInfo;\n parents: CommitInfo[];\n}\n\n/**\n * Lookup version label recursively core analyzer\n * @param cwd - The directory to check\n * @param commit - The commit to lookup\n * @param reachedCommits - The map of reached commits\n * @param commitToTags - Map of commit hash to tags for performance\n * @returns The version or undefined if no version is found\n */\nconst lookupVersionLabelRecursive = async (\n cwd: string,\n commit: CommitInfo,\n reachedCommits: Map<string, Version>,\n commitToTags: Map<string, TagInfo[]>\n): Promise<Version | undefined> => {\n // Scheduled commit analysis stack\n const scheduledStack: ScheduledCommit[] = [];\n\n let version: Version = { major: 0, minor: 0, build: 1, original: '0.0.1' };\n let currentCommit = commit;\n\n // Trace back to the parent commit repeatedly with the following conditions:\n // * If the commit has already been reached, get its version.\n // * If there is a recognizable version string in the tag, get its version.\n // * If the parent commit does not exist, get the default version.\n // * If other than the above, push the commit on the stack for later processing in reverse order.\n while (true) {\n // If the commit has already been reached, get its version.\n if (reachedCommits.has(currentCommit.hash)) {\n version = reachedCommits.get(currentCommit.hash)!;\n break;\n }\n\n // Detected mostly larger version tag.\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n const versionCandidates = relatedTags\n .filter((tag) => tag.version && isValidVersion(tag.version))\n .filter((tag) => tag.version!.minor !== undefined) // \"1.2\" or more.\n .sort((a, b) => compareVersions(a.version!, b.version!));\n if (versionCandidates.length >= 1) {\n // Found version tags, use the highest version\n version = versionCandidates[0].version!;\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Get parent commits\n let parentCommits: CommitInfo[] = [];\n try {\n const commitObj = await git.readCommit({\n fs,\n dir: cwd,\n oid: currentCommit.hash,\n });\n const parentHashes = commitObj.commit.parent || [];\n parentCommits = (\n await Promise.all(\n parentHashes.map((parentHash) => getCommit(cwd, parentHash))\n )\n ).filter((ci) => ci !== undefined);\n } catch {\n // If we can't get parent information, use default version\n }\n if (parentCommits.length === 0) {\n // No parents, this is the root commit\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Schedule this commit for later processing\n scheduledStack.push({ commit: currentCommit, parents: parentCommits });\n\n // Move to the first parent (primary branch)\n currentCommit = parentCommits[0];\n }\n\n // As long as there are commits stacked on the stack,\n // retrieve a commit from the stack, and if there is more than one parent commit for that commit:\n // * Recursively get versions from parent commits other than the primary one.\n // * Compare the versions obtained and store the largest version.\n // * Increment the version and make it the version of the current commit.\n while (scheduledStack.length >= 1) {\n const scheduled = scheduledStack.pop()!;\n const { commit: scheduledCommit, parents } = scheduled;\n\n // Handle merge commits (multiple parents)\n if (parents.length >= 2) {\n // Check alternate parent commits (feature branches)\n for (let index = 1; index < parents.length; index++) {\n const alternateParentVersion = await lookupVersionLabelRecursive(\n cwd,\n parents[index],\n reachedCommits,\n commitToTags\n );\n if (\n alternateParentVersion &&\n compareVersions(alternateParentVersion, version) < 0\n ) {\n // Use higher version from alternate parent\n version = alternateParentVersion;\n }\n }\n }\n\n // Increment version for this commit\n version = incrementLastVersionComponent(version);\n reachedCommits.set(scheduledCommit.hash, version);\n }\n\n return version;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get default Git metadata from local repository.\n * @param repositoryPath - Local Git repository directory\n * @param checkWorkingDirectoryStatus - Check working directory status to increase version\n * @param logger - Logger instance\n * @returns The metadata object with git metadata\n */\nconst getGitMetadata = async (\n repositoryPath: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n const startTime = Date.now();\n const metadata: any = {};\n\n // Try to find git root directory from the given path\n let gitRootPath: string;\n try {\n gitRootPath = await git.findRoot({ fs, filepath: repositoryPath });\n } catch {\n // No git repository found\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n try {\n // Get current commit\n const currentCommit = await getCurrentCommit(gitRootPath);\n if (!currentCommit) {\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n // Build tag map directly\n const buildStart = Date.now();\n const commitToTags = await buildCompleteTagCache(\n gitRootPath,\n (tagName: string) => {\n const version = parseVersion(tagName);\n return version && isValidVersion(version) ? version : undefined;\n },\n logger\n );\n logger.debug(\n `[screw-up] buildCompleteTagCache: ${Date.now() - buildStart}ms`\n );\n logger.debug(`Built tag map with ${commitToTags.size} commits`);\n\n // Initialize reached commits cache\n const reachedCommits = new Map<string, Version>();\n\n // Lookup version\n let version = await lookupVersionLabelRecursive(\n gitRootPath,\n currentCommit,\n reachedCommits,\n commitToTags\n );\n\n // Set git metadata into 'git' key\n const gitMetadata: GitMetadata = { tags: [], branches: [] };\n metadata.git = gitMetadata;\n\n if (version) {\n // Check for working directory changes and increment version if needed\n if (checkWorkingDirectoryStatus) {\n const modifiedFiles = await getModifiedFiles(gitRootPath);\n if (modifiedFiles.length >= 1) {\n const newVersion = incrementLastVersionComponent(version);\n logger.debug(\n `Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(', ')}]`\n );\n version = newVersion;\n }\n }\n\n const gitVersion = formatVersion(version);\n gitMetadata.version = gitVersion;\n metadata.version = gitVersion; // Fallback default version metadata\n }\n\n // Set commit information\n gitMetadata.commit = {\n hash: currentCommit.hash,\n shortHash: currentCommit.shortHash,\n date: dayjs(currentCommit.date).format('YYYY-MM-DDTHH:mm:ssZ'),\n message: currentCommit.message,\n };\n\n // Try to find the actual tag name if it exists\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n gitMetadata.tags = relatedTags.map((tag) => tag.name);\n\n // Get branch information\n const relatedBranches = await getRelatedBranches(\n gitRootPath,\n currentCommit.hash\n );\n gitMetadata.branches = relatedBranches;\n } catch (error) {\n // If any error occurs, return empty metadata\n logger.warn(`Failed to extract git metadata: ${error}`);\n }\n\n logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);\n return metadata;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get cached Git metadata fetcher function\n * @param targetDir - Target directory to resolve Git metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param logger - Logger\n * @returns Git metadata fetcher function\n */\nexport const getFetchGitMetadata = (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n let cachedMetadata: any;\n return async () => {\n if (!cachedMetadata) {\n cachedMetadata = await getGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n }\n return cachedMetadata;\n };\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 { dirname, isAbsolute, join, resolve } from 'path';\nimport { createReadStream, existsSync, statSync } from 'fs';\nimport { mkdir, mkdtemp, writeFile, copyFile, rm, readFile } 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 { glob } from 'glob';\nimport JSON5 from 'json5';\nimport {\n resolveRawPackageJsonObject,\n findWorkspaceRoot,\n collectWorkspaceSiblings,\n replacePeerDependenciesWildcards,\n Logger,\n WorkspaceSibling,\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\nconst readPackageJsonFile = async (packageJsonPath: string): Promise<any> => {\n const content = await readFile(packageJsonPath, 'utf-8');\n return JSON5.parse(content);\n};\n\nexport type PackageManagerName = 'npm' | 'pnpm';\n\nconst dependencySectionKeys = new Set([\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n 'optionalDependencies',\n]);\n\nconst clonePackageJson = (packageJson: any): any =>\n JSON5.parse(JSON.stringify(packageJson));\n\nconst mergeResolvedPackageJson = (\n packedPackageJson: any,\n resolvedPackageJson: any\n): any => {\n const mergedPackageJson = clonePackageJson(packedPackageJson);\n\n for (const [key, value] of Object.entries(resolvedPackageJson ?? {})) {\n if (dependencySectionKeys.has(key)) {\n continue;\n }\n\n mergedPackageJson[key] = value;\n }\n\n return mergedPackageJson;\n};\n\nconst workspaceProtocolPrefix = 'workspace:';\n\ninterface WorkspaceProtocolDependencyReference {\n readonly targetPackageName: string;\n readonly alias: boolean;\n}\n\nconst inferVersionPrefix = (dependencySpec: string): string => {\n if (dependencySpec.startsWith('^')) {\n return '^';\n }\n if (dependencySpec.startsWith('~')) {\n return '~';\n }\n return '';\n};\n\nconst looksLikeWorkspaceProtocolAlias = (rawSpecifier: string): boolean => {\n if (!rawSpecifier) {\n return false;\n }\n if (\n rawSpecifier === '*' ||\n rawSpecifier === '^' ||\n rawSpecifier === '~' ||\n rawSpecifier.startsWith('^') ||\n rawSpecifier.startsWith('~') ||\n /^[0-9]/.test(rawSpecifier)\n ) {\n return false;\n }\n return true;\n};\n\nconst parseWorkspaceProtocolDependencyReference = (\n dependencyName: string,\n workspaceProtocolSpecifier: string\n): WorkspaceProtocolDependencyReference | undefined => {\n if (!workspaceProtocolSpecifier.startsWith(workspaceProtocolPrefix)) {\n return undefined;\n }\n\n const rawSpecifier = workspaceProtocolSpecifier\n .slice(workspaceProtocolPrefix.length)\n .trim();\n\n if (!looksLikeWorkspaceProtocolAlias(rawSpecifier)) {\n return {\n targetPackageName: dependencyName,\n alias: false,\n };\n }\n\n if (rawSpecifier.startsWith('@')) {\n const secondAt = rawSpecifier.indexOf('@', 1);\n const targetPackageName =\n secondAt >= 0 ? rawSpecifier.slice(0, secondAt) : rawSpecifier;\n return {\n targetPackageName,\n alias: targetPackageName !== dependencyName,\n };\n }\n\n const atIndex = rawSpecifier.indexOf('@');\n const targetPackageName =\n atIndex >= 0 ? rawSpecifier.slice(0, atIndex) : rawSpecifier;\n return {\n targetPackageName,\n alias: targetPackageName !== dependencyName,\n };\n};\n\nconst formatResolvedWorkspaceDependency = (\n packedDependencySpecifier: string,\n reference: WorkspaceProtocolDependencyReference,\n sibling: WorkspaceSibling\n): string => {\n const aliasPrefix = `npm:${reference.targetPackageName}@`;\n if (packedDependencySpecifier.startsWith(aliasPrefix)) {\n const packedVersionSpecifier = packedDependencySpecifier.slice(\n aliasPrefix.length\n );\n return `${aliasPrefix}${inferVersionPrefix(packedVersionSpecifier)}${sibling.version}`;\n }\n\n return `${inferVersionPrefix(packedDependencySpecifier)}${sibling.version}`;\n};\n\nconst replaceWorkspaceProtocolDependencies = (\n packageJson: any,\n resolvedPackageJson: any,\n siblings: Map<string, WorkspaceSibling>\n): any => {\n const modifiedPackageJson = clonePackageJson(packageJson);\n\n for (const sectionKey of dependencySectionKeys) {\n const modifiedSection = modifiedPackageJson[sectionKey];\n const resolvedSection = resolvedPackageJson?.[sectionKey];\n\n if (\n !modifiedSection ||\n typeof modifiedSection !== 'object' ||\n !resolvedSection ||\n typeof resolvedSection !== 'object'\n ) {\n continue;\n }\n\n for (const [dependencyName, dependencySpecifier] of Object.entries(\n resolvedSection\n )) {\n if (typeof dependencySpecifier !== 'string') {\n continue;\n }\n\n const reference = parseWorkspaceProtocolDependencyReference(\n dependencyName,\n dependencySpecifier\n );\n if (!reference) {\n continue;\n }\n\n const sibling = siblings.get(reference.targetPackageName);\n const packedDependencySpecifier = modifiedSection[dependencyName];\n\n if (!sibling || typeof packedDependencySpecifier !== 'string') {\n continue;\n }\n\n modifiedSection[dependencyName] = formatResolvedWorkspaceDependency(\n packedDependencySpecifier,\n reference,\n sibling\n );\n }\n }\n\n return modifiedPackageJson;\n};\n\nconst getFilesArray = (packageJson: any): string[] | undefined => {\n if (!packageJson || !Array.isArray(packageJson.files)) {\n return undefined;\n }\n const entries = packageJson.files.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n return entries.length > 0 ? entries : undefined;\n};\n\nconst isGlobPattern = (pattern: string): boolean => /[*?[\\]{}()]/.test(pattern);\n\nconst normalizeFilesPattern = (\n pattern: string,\n cwd: string\n): string | undefined => {\n const trimmed = pattern.trim();\n if (!trimmed) {\n return undefined;\n }\n const isNegated = trimmed.startsWith('!');\n const raw = isNegated ? trimmed.slice(1) : trimmed;\n if (!raw) {\n return undefined;\n }\n if (isGlobPattern(raw)) {\n return trimmed;\n }\n const fullPath = join(cwd, raw);\n if (existsSync(fullPath) && statSync(fullPath).isDirectory()) {\n const dirPattern = `${raw.replace(/\\/+$/, '')}/**`;\n return isNegated ? `!${dirPattern}` : dirPattern;\n }\n return trimmed;\n};\n\nconst isSafeRelativePath = (value: string): boolean => {\n if (isAbsolute(value)) {\n return false;\n }\n const segments = value.split(/[\\\\/]+/);\n if (segments.some((segment) => segment === '..')) {\n return false;\n }\n return true;\n};\n\nconst expandFilesPatterns = async (\n patterns: string[],\n cwd: string\n): Promise<Set<string>> => {\n const includePatterns: string[] = [];\n const excludePatterns: string[] = [];\n\n for (const pattern of patterns) {\n const normalized = normalizeFilesPattern(pattern, cwd);\n if (!normalized) {\n continue;\n }\n if (normalized.startsWith('!')) {\n excludePatterns.push(normalized.slice(1));\n } else {\n includePatterns.push(normalized);\n }\n }\n\n const result = new Set<string>();\n for (const pattern of includePatterns) {\n const matches = await glob(pattern, { cwd, nodir: true });\n for (const match of matches) {\n if (isSafeRelativePath(match)) {\n result.add(match);\n }\n }\n }\n\n for (const pattern of excludePatterns) {\n const matches = await glob(pattern, { cwd, nodir: true });\n for (const match of matches) {\n result.delete(match);\n }\n }\n\n return result;\n};\n\nconst mergeFilesPatterns = (\n parentFiles: string[] | undefined,\n childFiles: string[] | undefined\n): string[] | undefined => {\n const merged: string[] = [];\n if (parentFiles?.length) {\n merged.push(...parentFiles);\n }\n if (childFiles?.length) {\n merged.push(...childFiles);\n }\n return merged.length > 0 ? merged : undefined;\n};\n\nexport interface WorkspaceFilesMergeResult {\n readonly workspaceRoot: string;\n readonly parentFiles?: string[];\n readonly childFiles?: string[];\n readonly mergedFiles?: string[];\n}\n\nexport const resolveWorkspaceFilesMerge = async (\n targetDir: string,\n logger: Logger\n): Promise<WorkspaceFilesMergeResult | undefined> => {\n const workspaceRoot = await findWorkspaceRoot(targetDir, logger);\n if (!workspaceRoot) {\n return undefined;\n }\n const rootPackagePath = join(workspaceRoot, 'package.json');\n const targetPackagePath = join(targetDir, 'package.json');\n if (resolve(rootPackagePath) === resolve(targetPackagePath)) {\n return undefined;\n }\n\n const [rootPackageJson, childPackageJson] = await Promise.all([\n readPackageJsonFile(rootPackagePath),\n readPackageJsonFile(targetPackagePath),\n ]);\n const parentFiles = getFilesArray(rootPackageJson);\n const childFiles = getFilesArray(childPackageJson);\n const mergedFiles = mergeFilesPatterns(parentFiles, childFiles);\n\n if (!parentFiles && !childFiles) {\n return undefined;\n }\n\n return {\n workspaceRoot,\n parentFiles,\n childFiles,\n mergedFiles,\n };\n};\n\nconst readPackResultPath = (\n packageManager: PackageManagerName,\n packDestDir: string,\n stdout: string\n): string => {\n if (packageManager === 'pnpm') {\n const parsed = JSON5.parse(stdout);\n const packResult = Array.isArray(parsed) ? parsed[0] : parsed;\n if (!packResult?.filename || typeof packResult.filename !== 'string') {\n throw new Error('pnpm pack did not output a valid filename');\n }\n\n return isAbsolute(packResult.filename)\n ? packResult.filename\n : join(packDestDir, packResult.filename);\n }\n\n const lines = stdout.trim().split('\\n');\n const filename =\n lines.find((line) => line.trim().endsWith('.tgz')) ||\n lines[lines.length - 1];\n if (!filename || !filename.trim().endsWith('.tgz')) {\n throw new Error('npm pack did not output a valid .tgz filename');\n }\n\n return join(packDestDir, filename.trim());\n};\n\n/**\n * Execute package manager pack and return the generated tarball path\n * @param packageManager - Package manager to use\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 runPack = async (\n packageManager: PackageManagerName,\n targetDir: string,\n packDestDir: string\n): Promise<string> => {\n const packArgs =\n packageManager === 'pnpm'\n ? ['pack', '--json', '--pack-destination', packDestDir]\n : ['pack', '--pack-destination', packDestDir];\n\n return new Promise((res, rej) => {\n const packProcess = spawn(packageManager, packArgs, {\n cwd: targetDir,\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n let stdout = '';\n let stderr = '';\n\n packProcess.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n packProcess.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n packProcess.on('close', (code) => {\n if (code === 0) {\n try {\n res(readPackResultPath(packageManager, packDestDir, stdout.trim()));\n } catch (error: any) {\n rej(error);\n }\n } else {\n const errorMessage = `${packageManager} 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 packProcess.on('error', (error) => {\n rej(\n new Error(`Failed to spawn ${packageManager} pack: ${error.message}`)\n );\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 * @param packageManager - Package manager backend used for the initial pack\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 mergeFiles: boolean = true,\n packageManager: PackageManagerName = 'npm'\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 if (!packageJsonReadmeDir) {\n throw new Error(\n `README replacement source directory is unknown: ${packageJsonReadme}`\n );\n }\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 const requiresWorkspaceSiblings =\n replacePeerDepsWildcards || packageManager === 'pnpm';\n const workspaceRoot = requiresWorkspaceSiblings\n ? await findWorkspaceRoot(targetDir, logger)\n : undefined;\n const workspaceSiblings = workspaceRoot\n ? await collectWorkspaceSiblings(\n workspaceRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n )\n : undefined;\n\n const filesMergeEnabled = mergeFiles && inheritableFields.has('files');\n const workspaceFilesMerge = filesMergeEnabled\n ? await resolveWorkspaceFilesMerge(targetDir, logger)\n : undefined;\n if (filesMergeEnabled && workspaceFilesMerge?.mergedFiles) {\n resolvedPackageJson.files = workspaceFilesMerge.mergedFiles;\n }\n\n // Create temporary directory for package manager 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 package manager pack to generate initial tarball\n const packedTarballPath = await runPack(\n packageManager,\n targetDir,\n baseTempDir\n );\n\n // Step 2: Extract the package manager generated tarball into staging directory\n const stagingDir = join(baseTempDir, 'staging');\n await mkdir(stagingDir, { recursive: true });\n\n const stream = createReadStream(packedTarballPath);\n await extractTo(createTarExtractor(stream, 'gzip'), stagingDir);\n\n // Step 3: Process extracted files (files merge/package.json/README replacement)\n const packageRoot = join(stagingDir, 'package');\n\n if (filesMergeEnabled && workspaceFilesMerge?.parentFiles?.length) {\n const parentFiles = await expandFilesPatterns(\n workspaceFilesMerge.parentFiles,\n workspaceFilesMerge.workspaceRoot\n );\n for (const parentFile of parentFiles) {\n const destPath = join(packageRoot, parentFile);\n if (existsSync(destPath)) {\n continue;\n }\n await mkdir(dirname(destPath), { recursive: true });\n await copyFile(\n join(workspaceFilesMerge.workspaceRoot, parentFile),\n destPath\n );\n }\n }\n\n // Replace package.json with our processed version\n const packageJsonPath = join(packageRoot, 'package.json');\n let finalPackageJson = resolvedPackageJson;\n if (existsSync(packageJsonPath)) {\n const packedPackageJson = await readPackageJsonFile(packageJsonPath);\n finalPackageJson = mergeResolvedPackageJson(\n packedPackageJson,\n resolvedPackageJson\n );\n if (packageManager === 'pnpm' && workspaceSiblings?.size) {\n finalPackageJson = replaceWorkspaceProtocolDependencies(\n finalPackageJson,\n resolvedPackageJson,\n workspaceSiblings\n );\n }\n if (workspaceSiblings && workspaceSiblings.size > 0) {\n finalPackageJson = replacePeerDependenciesWildcards(\n finalPackageJson,\n workspaceSiblings,\n peerDepsVersionPrefix\n );\n }\n if (packageJsonReadme) {\n delete finalPackageJson.readme;\n }\n\n await writeFile(\n packageJsonPath,\n JSON.stringify(finalPackageJson, null, 2)\n );\n }\n\n // Replace README.md\n if (readmeReplacementCandidatePath) {\n const readmeDestPath = join(packageRoot, 'README.md');\n await copyFile(readmeReplacementCandidatePath, readmeDestPath);\n }\n\n // Step 4: Re-create tarball with modified files\n const outputFileName = `${finalPackageJson?.name?.replace('/', '-') ?? 'package'}-${finalPackageJson?.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: finalPackageJson,\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 ignoreNotExist: boolean = false\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 ignoreNotExist\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 // Single hyphen option is flag unless configured with an argument\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n if (optionName.length == 1) {\n const argOptions = result.command\n ? argOptionMap.get(result.command)\n : undefined;\n if (argOptions?.has(optionName)) {\n i++;\n result.options[optionName] = args[i];\n } else {\n result.options[optionName] = true;\n }\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 { existsSync } from 'fs';\nimport { mkdir, readFile, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { Logger } from './internal';\nimport { PackageMetadata } from './types';\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 * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nexport const generateMetadataFileContent = (\n metadata: PackageMetadata,\n outputKeys: readonly string[]\n): string => {\n const lines: string[] = [];\n\n lines.push('// @ts-nocheck');\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n\n lines.push('');\n\n return lines.join('\\n');\n};\n\nexport const writeFileIfChanged = async (\n filePath: string,\n content: string,\n description: string,\n logger: Logger\n): Promise<boolean> => {\n try {\n // Check if file exists and compare content\n let shouldWrite = !existsSync(filePath);\n if (!shouldWrite) {\n try {\n const existingContent = await readFile(filePath, 'utf-8');\n shouldWrite = existingContent !== content;\n } catch {\n // File doesn't exist or couldn't read, we should write it\n shouldWrite = true;\n }\n }\n\n if (shouldWrite) {\n // Ensure directory exists\n await mkdir(dirname(filePath), { recursive: true });\n // Write file only if content has changed\n await writeFile(filePath, content);\n return true;\n } else {\n // File content is the same, no need to write\n return false;\n }\n } catch (error) {\n logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);\n return false;\n }\n};\n\nexport const ensureMetadataGitignore = async (\n metadataSourcePath: string,\n logger: Logger\n): Promise<boolean> => {\n const metadataDirectory = dirname(metadataSourcePath);\n const gitignorePath = join(metadataDirectory, '.gitignore');\n\n if (existsSync(gitignorePath)) {\n return false;\n }\n\n try {\n await mkdir(metadataDirectory, { recursive: true });\n const metadataFileName = basename(metadataSourcePath);\n const gitignoreContent = `# Auto-generated by screw-up plugin\\n${metadataFileName}\\n`;\n await writeFile(gitignorePath, gitignoreContent);\n return true;\n } catch (error) {\n logger.warn(\n `Failed to write .gitignore for metadata source: ${gitignorePath}: ${error}`\n );\n return false;\n }\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 { dirname, join, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { mkdtemp, readFile, rm, stat, writeFile } from 'fs/promises';\nimport { spawn } from 'child_process';\nimport { tmpdir } from 'os';\nimport {\n packAssets,\n parseArgs,\n ParsedArgs,\n getComputedPackageJsonObject,\n resolveWorkspaceFilesMerge,\n PackageManagerName,\n} from './cli-internal';\nimport { getFetchGitMetadata } from './analyzer';\nimport { Logger, resolvePackageMetadata } from './internal';\nimport {\n ensureMetadataGitignore,\n generateMetadataFileContent,\n writeFileIfChanged,\n} from './metadata-file';\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 'files',\n]);\n\nconst defaultOutputMetadataKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\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\nconst parseOutputMetadataKeys = (\n outputMetadataKeysOption: string | boolean | undefined\n): readonly string[] => {\n if (typeof outputMetadataKeysOption !== 'string') {\n return defaultOutputMetadataKeys;\n }\n if (!outputMetadataKeysOption.trim()) {\n return [];\n }\n return outputMetadataKeysOption\n .split(',')\n .map((key) => key.trim())\n .filter((key) => key.length > 0);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst readInputText = async (inputPath?: string): Promise<string> => {\n if (inputPath) {\n const resolvedPath = resolve(inputPath);\n return await readFile(resolvedPath, 'utf-8');\n }\n\n return await new Promise<string>((resolvePromise, rejectPromise) => {\n let data = '';\n process.stdin.setEncoding('utf-8');\n process.stdin.on('data', (chunk) => {\n data += chunk;\n });\n process.stdin.on('end', () => resolvePromise(data));\n process.stdin.on('error', (err) => rejectPromise(err));\n });\n};\n\nconst escapeRegExp = (value: string): string =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst getValueByPath = (source: any, path: string): any => {\n return path.split('.').reduce<any>((current, key) => {\n if (current === undefined || current === null) {\n return undefined;\n }\n if (typeof current !== 'object' && !Array.isArray(current)) {\n return undefined;\n }\n return (current as any)[key];\n }, source);\n};\n\nconst stringifyValue = (value: any): string | undefined => {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'object') {\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n }\n return String(value);\n};\n\nconst replacePlaceholders = (\n text: string,\n values: any,\n openBracket: string,\n closeBracket: string\n): string => {\n const pattern = new RegExp(\n `${escapeRegExp(openBracket)}(.*?)${escapeRegExp(closeBracket)}`,\n 'g'\n );\n return text.replace(pattern, (match, key) => {\n const trimmedKey = String(key).trim();\n const resolvedValue = stringifyValue(getValueByPath(values, trimmedKey));\n return resolvedValue !== undefined ? resolvedValue : match;\n });\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showFormatHelp = () => {\n console.info(`Usage: screw-up format [options] [output]\n\nFormat input text by replacing placeholders with package metadata\n\nArguments:\n output Optional output file path (default: stdout)\n\nOptions:\n -i, --input <path> Input template file (default: stdin)\n -b, --bracket <open,close> Placeholder brackets (default: {,})\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 -f, --force Allow formatting even if package.json does not exist\n -h, --help Show help for format command\n`);\n};\n\nconst parseBracketOption = (\n bracketOption: string | undefined\n): { openBracket: string; closeBracket: string } | undefined => {\n if (!bracketOption) {\n return { openBracket: '{', closeBracket: '}' };\n }\n\n const delimiterIndex = bracketOption.indexOf(',');\n if (delimiterIndex === -1) {\n return undefined;\n }\n\n const openBracket = bracketOption.slice(0, delimiterIndex);\n const closeBracket = bracketOption.slice(delimiterIndex + 1);\n\n if (!openBracket || !closeBracket) {\n return undefined;\n }\n\n return { openBracket, closeBracket };\n};\n\nconst formatCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showFormatHelp();\n return 1;\n }\n\n const outputPath = args.positional[0];\n const inputPathOption =\n (args.options['input'] as string) ?? (args.options['i'] as string);\n const bracketOption =\n (args.options['bracket'] as string) ?? (args.options['b'] as string);\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 const ignorePackageJsonNotExist =\n args.options['force'] || args.options['f'] ? true : false;\n\n const bracket = parseBracketOption(\n typeof bracketOption === 'string' ? bracketOption : undefined\n );\n if (!bracket) {\n logger.error(\n 'format: Invalid bracket option, expected \"open,close\" pattern.'\n );\n return 1;\n }\n\n const { openBracket, closeBracket } = bracket;\n\n const targetDir = resolve(process.cwd());\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n // The format 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 ignorePackageJsonNotExist\n );\n\n if (!computedPackageJson) {\n _logger.error(`format: Unable to read package.json from: ${targetDir}`);\n return 1;\n }\n\n const inputText = await readInputText(\n typeof inputPathOption === 'string' ? inputPathOption : undefined\n );\n\n const formattedText = replacePlaceholders(\n inputText,\n computedPackageJson,\n openBracket,\n closeBracket\n );\n\n if (outputPath) {\n const resolvedOutputPath = resolve(outputPath);\n await writeFile(resolvedOutputPath, formattedText);\n }\n\n process.stdout.write(formattedText);\n } catch (error) {\n _logger.error(`format: Failed to format text: ${error}`);\n return 1;\n }\n\n return 0;\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 --no-merge-files Do not merge files from parent package.json\n -f, --force Allow dumping even if package.json does not exist\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 const mergeFiles = !args.options['no-merge-files'];\n const ignorePackageJsonNotExist =\n args.options['force'] || args.options['f'] ? true : false;\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 ignorePackageJsonNotExist\n );\n\n if (computedPackageJson) {\n if (\n mergeFiles &&\n inheritableFields.has('files') &&\n existsSync(join(targetDir, 'package.json'))\n ) {\n const workspaceFilesMerge = await resolveWorkspaceFilesMerge(\n targetDir,\n _logger\n );\n if (workspaceFilesMerge?.mergedFiles) {\n computedPackageJson.files = workspaceFilesMerge.mergedFiles;\n }\n }\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 showMetadataHelp = () => {\n console.info(`Usage: screw-up metadata [options] [directory]\n\nGenerate TypeScript metadata file from package metadata\n\nArguments:\n directory Directory to resolve metadata from (default: current directory)\n\nOptions:\n --output-metadata-file-path <path> Output path for metadata file (default: src/generated/packageMetadata.ts)\n --output-metadata-keys <list> Comma-separated list of metadata keys to include\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 metadata command\n`);\n};\n\nconst metadataCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showMetadataHelp();\n return 1;\n }\n\n const directory = args.positional[0];\n const outputMetadataFilePathOption =\n args.options['output-metadata-file-path'];\n const outputMetadataKeysOption = args.options['output-metadata-keys'];\n const alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n const outputMetadataFilePath =\n typeof outputMetadataFilePathOption === 'string' &&\n outputMetadataFilePathOption.trim()\n ? outputMetadataFilePathOption\n : 'src/generated/packageMetadata.ts';\n const outputMetadataKeys = parseOutputMetadataKeys(outputMetadataKeysOption);\n\n const targetDir = resolve(directory ?? process.cwd());\n\n try {\n const fetchGitMetadata = getFetchGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n\n const result = await resolvePackageMetadata(\n targetDir,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n logger\n );\n\n const metadataSourceContent = generateMetadataFileContent(\n result.metadata,\n outputMetadataKeys\n );\n const metadataSourcePath = join(targetDir, outputMetadataFilePath);\n const metadataWritten = await writeFileIfChanged(\n metadataSourcePath,\n metadataSourceContent,\n 'metadata source file',\n logger\n );\n\n if (existsSync(metadataSourcePath)) {\n const gitignoreWritten = await ensureMetadataGitignore(\n metadataSourcePath,\n logger\n );\n if (gitignoreWritten) {\n logger.info(\n `metadata: .gitignore is generated: ${join(\n dirname(outputMetadataFilePath),\n '.gitignore'\n )}`\n );\n }\n }\n\n if (metadataWritten) {\n logger.info(\n `metadata: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n } else if (existsSync(metadataSourcePath)) {\n logger.info(\n `metadata: Metadata source file is unchanged: ${outputMetadataFilePath}`\n );\n } else {\n logger.error(\n `metadata: Failed to write metadata file: ${outputMetadataFilePath}`\n );\n return 1;\n }\n } catch (error) {\n logger.error(`metadata: Failed to generate metadata file: ${error}`);\n return 1;\n }\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 --use-pnpm Use pnpm pack and preserve workspace protocol resolution\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-merge-files Do not merge files from parent package.json\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 mergeFiles = !args.options['no-merge-files'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const packageManager: PackageManagerName = args.options['use-pnpm']\n ? 'pnpm'\n : 'npm';\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 mergeFiles,\n packageManager\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 --use-pnpm Use pnpm pack before publish; final publish still targets npm-compatible registries\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, signal) => {\n if (code === 0) {\n if (verbose) {\n logger.info(`publish: Successfully published ${tarballPath}`);\n }\n resolve(0);\n return;\n }\n\n if (signal) {\n logger.error(\n `publish: npm publish terminated by signal ${signal}: ${tarballPath}`\n );\n resolve(1);\n return;\n }\n\n const exitCode = code ?? 1;\n logger.error(\n `publish: npm publish failed with exit code ${exitCode}: ${tarballPath}`\n );\n resolve(exitCode);\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 mergeFiles = !args.options['no-merge-files'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const packageManager: PackageManagerName = args.options['use-pnpm']\n ? 'pnpm'\n : 'npm';\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 let pathSkipped = false;\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 === '--use-pnpm' ||\n arg === '-h' ||\n arg === '--no-wds' ||\n arg === '--no-git-version-override' ||\n arg === '--no-merge-files' ||\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 if (!pathSkipped && path && arg === path) {\n pathSkipped = true;\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 mergeFiles,\n packageManager\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 mergeFiles,\n packageManager\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 format [output] Format text by replacing metadata placeholders\n dump [directory] Dump computed package.json as JSON\n metadata [directory] Generate TypeScript metadata file\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 format output.txt # Format stdin template and write to file\n screw-up dump # Dump computed package.json as JSON\n screw-up metadata # Generate metadata file\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 ['metadata', new Set(['output-metadata-file-path', 'output-metadata-keys'])],\n [\n 'pack',\n new Set([\n 'pack-destination',\n 'readme',\n 'inheritable-fields',\n 'peer-deps-prefix',\n ]),\n ],\n ['format', new Set(['input', 'i', 'bracket', 'b', 'inheritable-fields'])],\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 'format':\n return await formatCommand(parsedArgs, logger);\n case 'dump':\n return await dumpCommand(parsedArgs, logger);\n case 'metadata':\n return await metadataCommand(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// 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 } 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"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.cjs","names":["Readable","path","module","exports"],"sources":["../node_modules/tar-vern/dist/index.js","../node_modules/json5/dist/index.js","../node_modules/dayjs/dayjs.min.js","../src/internal.ts","../src/fast-tags.ts","../src/git-operations.ts","../src/analyzer.ts","../src/cli-internal.ts","../src/metadata-file.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","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.JSON5 = factory());\n}(this, (function () { 'use strict';\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar _global = createCommonjsModule(function (module) {\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef\n\t});\n\n\tvar _core = createCommonjsModule(function (module) {\n\tvar core = module.exports = { version: '2.6.5' };\n\tif (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef\n\t});\n\tvar _core_1 = _core.version;\n\n\tvar _isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\tvar _anObject = function (it) {\n\t if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }\n\t return it;\n\t};\n\n\tvar _fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar _descriptors = !_fails(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\tvar document = _global.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = _isObject(document) && _isObject(document.createElement);\n\tvar _domCreate = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\tvar _ie8DomDefine = !_descriptors && !_fails(function () {\n\t return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar _toPrimitive = function (it, S) {\n\t if (!_isObject(it)) { return it; }\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar dP = Object.defineProperty;\n\n\tvar f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t _anObject(O);\n\t P = _toPrimitive(P, true);\n\t _anObject(Attributes);\n\t if (_ie8DomDefine) { try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ } }\n\t if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }\n\t if ('value' in Attributes) { O[P] = Attributes.value; }\n\t return O;\n\t};\n\n\tvar _objectDp = {\n\t\tf: f\n\t};\n\n\tvar _propertyDesc = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar _hide = _descriptors ? function (object, key, value) {\n\t return _objectDp.f(object, key, _propertyDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tvar _has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tvar _uid = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\tvar _library = false;\n\n\tvar _shared = createCommonjsModule(function (module) {\n\tvar SHARED = '__core-js_shared__';\n\tvar store = _global[SHARED] || (_global[SHARED] = {});\n\n\t(module.exports = function (key, value) {\n\t return store[key] || (store[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: _core.version,\n\t mode: _library ? 'pure' : 'global',\n\t copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar _functionToString = _shared('native-function-to-string', Function.toString);\n\n\tvar _redefine = createCommonjsModule(function (module) {\n\tvar SRC = _uid('src');\n\n\tvar TO_STRING = 'toString';\n\tvar TPL = ('' + _functionToString).split(TO_STRING);\n\n\t_core.inspectSource = function (it) {\n\t return _functionToString.call(it);\n\t};\n\n\t(module.exports = function (O, key, val, safe) {\n\t var isFunction = typeof val == 'function';\n\t if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }\n\t if (O[key] === val) { return; }\n\t if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }\n\t if (O === _global) {\n\t O[key] = val;\n\t } else if (!safe) {\n\t delete O[key];\n\t _hide(O, key, val);\n\t } else if (O[key]) {\n\t O[key] = val;\n\t } else {\n\t _hide(O, key, val);\n\t }\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, TO_STRING, function toString() {\n\t return typeof this == 'function' && this[SRC] || _functionToString.call(this);\n\t});\n\t});\n\n\tvar _aFunction = function (it) {\n\t if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }\n\t return it;\n\t};\n\n\t// optional / simple context binding\n\n\tvar _ctx = function (fn, that, length) {\n\t _aFunction(fn);\n\t if (that === undefined) { return fn; }\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar PROTOTYPE = 'prototype';\n\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\n\t var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\n\t var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n\t var key, own, out, exp;\n\t if (IS_GLOBAL) { source = name; }\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t // export native or passed\n\t out = (own ? target : source)[key];\n\t // bind timers to global for call from export context\n\t exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\n\t // extend global\n\t if (target) { _redefine(target, key, out, type & $export.U); }\n\t // export\n\t if (exports[key] != out) { _hide(exports, key, exp); }\n\t if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }\n\t }\n\t};\n\t_global.core = _core;\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tvar _export = $export;\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tvar _toInteger = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tvar _defined = function (it) {\n\t if (it == undefined) { throw TypeError(\"Can't call method on \" + it); }\n\t return it;\n\t};\n\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tvar _stringAt = function (TO_STRING) {\n\t return function (that, pos) {\n\t var s = String(_defined(that));\n\t var i = _toInteger(pos);\n\t var l = s.length;\n\t var a, b;\n\t if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n\tvar $at = _stringAt(false);\n\t_export(_export.P, 'String', {\n\t // 21.1.3.3 String.prototype.codePointAt(pos)\n\t codePointAt: function codePointAt(pos) {\n\t return $at(this, pos);\n\t }\n\t});\n\n\tvar codePointAt = _core.String.codePointAt;\n\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar _toAbsoluteIndex = function (index, length) {\n\t index = _toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\tvar fromCharCode = String.fromCharCode;\n\tvar $fromCodePoint = String.fromCodePoint;\n\n\t// length should be 1, old FF problem\n\t_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n\t // 21.1.2.2 String.fromCodePoint(...codePoints)\n\t fromCodePoint: function fromCodePoint(x) {\n\t var arguments$1 = arguments;\n\t // eslint-disable-line no-unused-vars\n\t var res = [];\n\t var aLen = arguments.length;\n\t var i = 0;\n\t var code;\n\t while (aLen > i) {\n\t code = +arguments$1[i++];\n\t if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }\n\t res.push(code < 0x10000\n\t ? fromCharCode(code)\n\t : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n\t );\n\t } return res.join('');\n\t }\n\t});\n\n\tvar fromCodePoint = _core.String.fromCodePoint;\n\n\t// This is a generated file. Do not edit.\n\tvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\n\tvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n\tvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\n\tvar unicode = {\n\t\tSpace_Separator: Space_Separator,\n\t\tID_Start: ID_Start,\n\t\tID_Continue: ID_Continue\n\t};\n\n\tvar util = {\n\t isSpaceSeparator: function isSpaceSeparator (c) {\n\t return typeof c === 'string' && unicode.Space_Separator.test(c)\n\t },\n\n\t isIdStartChar: function isIdStartChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c === '$') || (c === '_') ||\n\t unicode.ID_Start.test(c)\n\t )\n\t },\n\n\t isIdContinueChar: function isIdContinueChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c >= '0' && c <= '9') ||\n\t (c === '$') || (c === '_') ||\n\t (c === '\\u200C') || (c === '\\u200D') ||\n\t unicode.ID_Continue.test(c)\n\t )\n\t },\n\n\t isDigit: function isDigit (c) {\n\t return typeof c === 'string' && /[0-9]/.test(c)\n\t },\n\n\t isHexDigit: function isHexDigit (c) {\n\t return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n\t },\n\t};\n\n\tvar source;\n\tvar parseState;\n\tvar stack;\n\tvar pos;\n\tvar line;\n\tvar column;\n\tvar token;\n\tvar key;\n\tvar root;\n\n\tvar parse = function parse (text, reviver) {\n\t source = String(text);\n\t parseState = 'start';\n\t stack = [];\n\t pos = 0;\n\t line = 1;\n\t column = 0;\n\t token = undefined;\n\t key = undefined;\n\t root = undefined;\n\n\t do {\n\t token = lex();\n\n\t // This code is unreachable.\n\t // if (!parseStates[parseState]) {\n\t // throw invalidParseState()\n\t // }\n\n\t parseStates[parseState]();\n\t } while (token.type !== 'eof')\n\n\t if (typeof reviver === 'function') {\n\t return internalize({'': root}, '', reviver)\n\t }\n\n\t return root\n\t};\n\n\tfunction internalize (holder, name, reviver) {\n\t var value = holder[name];\n\t if (value != null && typeof value === 'object') {\n\t if (Array.isArray(value)) {\n\t for (var i = 0; i < value.length; i++) {\n\t var key = String(i);\n\t var replacement = internalize(value, key, reviver);\n\t if (replacement === undefined) {\n\t delete value[key];\n\t } else {\n\t Object.defineProperty(value, key, {\n\t value: replacement,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t } else {\n\t for (var key$1 in value) {\n\t var replacement$1 = internalize(value, key$1, reviver);\n\t if (replacement$1 === undefined) {\n\t delete value[key$1];\n\t } else {\n\t Object.defineProperty(value, key$1, {\n\t value: replacement$1,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t }\n\t }\n\n\t return reviver.call(holder, name, value)\n\t}\n\n\tvar lexState;\n\tvar buffer;\n\tvar doubleQuote;\n\tvar sign;\n\tvar c;\n\n\tfunction lex () {\n\t lexState = 'default';\n\t buffer = '';\n\t doubleQuote = false;\n\t sign = 1;\n\n\t for (;;) {\n\t c = peek();\n\n\t // This code is unreachable.\n\t // if (!lexStates[lexState]) {\n\t // throw invalidLexState(lexState)\n\t // }\n\n\t var token = lexStates[lexState]();\n\t if (token) {\n\t return token\n\t }\n\t }\n\t}\n\n\tfunction peek () {\n\t if (source[pos]) {\n\t return String.fromCodePoint(source.codePointAt(pos))\n\t }\n\t}\n\n\tfunction read () {\n\t var c = peek();\n\n\t if (c === '\\n') {\n\t line++;\n\t column = 0;\n\t } else if (c) {\n\t column += c.length;\n\t } else {\n\t column++;\n\t }\n\n\t if (c) {\n\t pos += c.length;\n\t }\n\n\t return c\n\t}\n\n\tvar lexStates = {\n\t default: function default$1 () {\n\t switch (c) {\n\t case '\\t':\n\t case '\\v':\n\t case '\\f':\n\t case ' ':\n\t case '\\u00A0':\n\t case '\\uFEFF':\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'comment';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t if (util.isSpaceSeparator(c)) {\n\t read();\n\t return\n\t }\n\n\t // This code is unreachable.\n\t // if (!lexStates[parseState]) {\n\t // throw invalidLexState(parseState)\n\t // }\n\n\t return lexStates[parseState]()\n\t },\n\n\t comment: function comment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineComment';\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'singleLineComment';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t multiLineComment: function multiLineComment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineCommentAsterisk';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t },\n\n\t multiLineCommentAsterisk: function multiLineCommentAsterisk () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t lexState = 'multiLineComment';\n\t },\n\n\t singleLineComment: function singleLineComment () {\n\t switch (c) {\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t read();\n\t },\n\n\t value: function value () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t case 'n':\n\t read();\n\t literal('ull');\n\t return newToken('null', null)\n\n\t case 't':\n\t read();\n\t literal('rue');\n\t return newToken('boolean', true)\n\n\t case 'f':\n\t read();\n\t literal('alse');\n\t return newToken('boolean', false)\n\n\t case '-':\n\t case '+':\n\t if (read() === '-') {\n\t sign = -1;\n\t }\n\n\t lexState = 'sign';\n\t return\n\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t buffer = '';\n\t lexState = 'string';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t identifierNameStartEscape: function identifierNameStartEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t break\n\n\t default:\n\t if (!util.isIdStartChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t identifierName: function identifierName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t buffer += read();\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameEscape';\n\t return\n\t }\n\n\t if (util.isIdContinueChar(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('identifier', buffer)\n\t },\n\n\t identifierNameEscape: function identifierNameEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t break\n\n\t default:\n\t if (!util.isIdContinueChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t sign: function sign$1 () {\n\t switch (c) {\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', sign * Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t zero: function zero () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\n\t case 'x':\n\t case 'X':\n\t buffer += read();\n\t lexState = 'hexadecimal';\n\t return\n\t }\n\n\t return newToken('numeric', sign * 0)\n\t },\n\n\t decimalInteger: function decimalInteger () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalPointLeading: function decimalPointLeading () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalPoint: function decimalPoint () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalFraction: function decimalFraction () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalExponent: function decimalExponent () {\n\t switch (c) {\n\t case '+':\n\t case '-':\n\t buffer += read();\n\t lexState = 'decimalExponentSign';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentSign: function decimalExponentSign () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentInteger: function decimalExponentInteger () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t hexadecimal: function hexadecimal () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t lexState = 'hexadecimalInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t hexadecimalInteger: function hexadecimalInteger () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t string: function string () {\n\t switch (c) {\n\t case '\\\\':\n\t read();\n\t buffer += escape();\n\t return\n\n\t case '\"':\n\t if (doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case \"'\":\n\t if (!doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case '\\n':\n\t case '\\r':\n\t throw invalidChar(read())\n\n\t case '\\u2028':\n\t case '\\u2029':\n\t separatorChar(c);\n\t break\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t },\n\n\t start: function start () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t // This code is unreachable since the default lexState handles eof.\n\t // case undefined:\n\t // return newToken('eof')\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t buffer = read();\n\t lexState = 'identifierName';\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameStartEscape';\n\t return\n\n\t case '}':\n\t return newToken('punctuator', read())\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t lexState = 'string';\n\t return\n\t }\n\n\t if (util.isIdStartChar(c)) {\n\t buffer += read();\n\t lexState = 'identifierName';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t if (c === ':') {\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t lexState = 'value';\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t switch (c) {\n\t case ',':\n\t case '}':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (c === ']') {\n\t return newToken('punctuator', read())\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t switch (c) {\n\t case ',':\n\t case ']':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the default lexState.\n\t // if (c === undefined) {\n\t // read()\n\t // return newToken('eof')\n\t // }\n\n\t throw invalidChar(read())\n\t },\n\t};\n\n\tfunction newToken (type, value) {\n\t return {\n\t type: type,\n\t value: value,\n\t line: line,\n\t column: column,\n\t }\n\t}\n\n\tfunction literal (s) {\n\t for (var i = 0, list = s; i < list.length; i += 1) {\n\t var c = list[i];\n\n\t var p = peek();\n\n\t if (p !== c) {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t }\n\t}\n\n\tfunction escape () {\n\t var c = peek();\n\t switch (c) {\n\t case 'b':\n\t read();\n\t return '\\b'\n\n\t case 'f':\n\t read();\n\t return '\\f'\n\n\t case 'n':\n\t read();\n\t return '\\n'\n\n\t case 'r':\n\t read();\n\t return '\\r'\n\n\t case 't':\n\t read();\n\t return '\\t'\n\n\t case 'v':\n\t read();\n\t return '\\v'\n\n\t case '0':\n\t read();\n\t if (util.isDigit(peek())) {\n\t throw invalidChar(read())\n\t }\n\n\t return '\\0'\n\n\t case 'x':\n\t read();\n\t return hexEscape()\n\n\t case 'u':\n\t read();\n\t return unicodeEscape()\n\n\t case '\\n':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return ''\n\n\t case '\\r':\n\t read();\n\t if (peek() === '\\n') {\n\t read();\n\t }\n\n\t return ''\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t throw invalidChar(read())\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t return read()\n\t}\n\n\tfunction hexEscape () {\n\t var buffer = '';\n\t var c = peek();\n\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tfunction unicodeEscape () {\n\t var buffer = '';\n\t var count = 4;\n\n\t while (count-- > 0) {\n\t var c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t }\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tvar parseStates = {\n\t start: function start () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (token.type) {\n\t case 'identifier':\n\t case 'string':\n\t key = token.value;\n\t parseState = 'afterPropertyName';\n\t return\n\n\t case 'punctuator':\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.value !== '}') {\n\t // throw invalidToken()\n\t // }\n\n\t pop();\n\t return\n\n\t case 'eof':\n\t throw invalidEOF()\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator' || token.value !== ':') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t parseState = 'beforePropertyValue';\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t if (token.type === 'punctuator' && token.value === ']') {\n\t pop();\n\t return\n\t }\n\n\t push();\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforePropertyName';\n\t return\n\n\t case '}':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforeArrayValue';\n\t return\n\n\t case ']':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'eof') {\n\t // throw invalidToken()\n\t // }\n\t },\n\t};\n\n\tfunction push () {\n\t var value;\n\n\t switch (token.type) {\n\t case 'punctuator':\n\t switch (token.value) {\n\t case '{':\n\t value = {};\n\t break\n\n\t case '[':\n\t value = [];\n\t break\n\t }\n\n\t break\n\n\t case 'null':\n\t case 'boolean':\n\t case 'numeric':\n\t case 'string':\n\t value = token.value;\n\t break\n\n\t // This code is unreachable.\n\t // default:\n\t // throw invalidToken()\n\t }\n\n\t if (root === undefined) {\n\t root = value;\n\t } else {\n\t var parent = stack[stack.length - 1];\n\t if (Array.isArray(parent)) {\n\t parent.push(value);\n\t } else {\n\t Object.defineProperty(parent, key, {\n\t value: value,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\n\t if (value !== null && typeof value === 'object') {\n\t stack.push(value);\n\n\t if (Array.isArray(value)) {\n\t parseState = 'beforeArrayValue';\n\t } else {\n\t parseState = 'beforePropertyName';\n\t }\n\t } else {\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t }\n\t}\n\n\tfunction pop () {\n\t stack.pop();\n\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t}\n\n\t// This code is unreachable.\n\t// function invalidParseState () {\n\t// return new Error(`JSON5: invalid parse state '${parseState}'`)\n\t// }\n\n\t// This code is unreachable.\n\t// function invalidLexState (state) {\n\t// return new Error(`JSON5: invalid lex state '${state}'`)\n\t// }\n\n\tfunction invalidChar (c) {\n\t if (c === undefined) {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t }\n\n\t return syntaxError((\"JSON5: invalid character '\" + (formatChar(c)) + \"' at \" + line + \":\" + column))\n\t}\n\n\tfunction invalidEOF () {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t}\n\n\t// This code is unreachable.\n\t// function invalidToken () {\n\t// if (token.type === 'eof') {\n\t// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n\t// }\n\n\t// const c = String.fromCodePoint(token.value.codePointAt(0))\n\t// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n\t// }\n\n\tfunction invalidIdentifier () {\n\t column -= 5;\n\t return syntaxError((\"JSON5: invalid identifier character at \" + line + \":\" + column))\n\t}\n\n\tfunction separatorChar (c) {\n\t console.warn((\"JSON5: '\" + (formatChar(c)) + \"' in strings is not valid ECMAScript; consider escaping\"));\n\t}\n\n\tfunction formatChar (c) {\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t if (replacements[c]) {\n\t return replacements[c]\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t return '\\\\x' + ('00' + hexString).substring(hexString.length)\n\t }\n\n\t return c\n\t}\n\n\tfunction syntaxError (message) {\n\t var err = new SyntaxError(message);\n\t err.lineNumber = line;\n\t err.columnNumber = column;\n\t return err\n\t}\n\n\tvar stringify = function stringify (value, replacer, space) {\n\t var stack = [];\n\t var indent = '';\n\t var propertyList;\n\t var replacerFunc;\n\t var gap = '';\n\t var quote;\n\n\t if (\n\t replacer != null &&\n\t typeof replacer === 'object' &&\n\t !Array.isArray(replacer)\n\t ) {\n\t space = replacer.space;\n\t quote = replacer.quote;\n\t replacer = replacer.replacer;\n\t }\n\n\t if (typeof replacer === 'function') {\n\t replacerFunc = replacer;\n\t } else if (Array.isArray(replacer)) {\n\t propertyList = [];\n\t for (var i = 0, list = replacer; i < list.length; i += 1) {\n\t var v = list[i];\n\n\t var item = (void 0);\n\n\t if (typeof v === 'string') {\n\t item = v;\n\t } else if (\n\t typeof v === 'number' ||\n\t v instanceof String ||\n\t v instanceof Number\n\t ) {\n\t item = String(v);\n\t }\n\n\t if (item !== undefined && propertyList.indexOf(item) < 0) {\n\t propertyList.push(item);\n\t }\n\t }\n\t }\n\n\t if (space instanceof Number) {\n\t space = Number(space);\n\t } else if (space instanceof String) {\n\t space = String(space);\n\t }\n\n\t if (typeof space === 'number') {\n\t if (space > 0) {\n\t space = Math.min(10, Math.floor(space));\n\t gap = ' '.substr(0, space);\n\t }\n\t } else if (typeof space === 'string') {\n\t gap = space.substr(0, 10);\n\t }\n\n\t return serializeProperty('', {'': value})\n\n\t function serializeProperty (key, holder) {\n\t var value = holder[key];\n\t if (value != null) {\n\t if (typeof value.toJSON5 === 'function') {\n\t value = value.toJSON5(key);\n\t } else if (typeof value.toJSON === 'function') {\n\t value = value.toJSON(key);\n\t }\n\t }\n\n\t if (replacerFunc) {\n\t value = replacerFunc.call(holder, key, value);\n\t }\n\n\t if (value instanceof Number) {\n\t value = Number(value);\n\t } else if (value instanceof String) {\n\t value = String(value);\n\t } else if (value instanceof Boolean) {\n\t value = value.valueOf();\n\t }\n\n\t switch (value) {\n\t case null: return 'null'\n\t case true: return 'true'\n\t case false: return 'false'\n\t }\n\n\t if (typeof value === 'string') {\n\t return quoteString(value, false)\n\t }\n\n\t if (typeof value === 'number') {\n\t return String(value)\n\t }\n\n\t if (typeof value === 'object') {\n\t return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n\t }\n\n\t return undefined\n\t }\n\n\t function quoteString (value) {\n\t var quotes = {\n\t \"'\": 0.1,\n\t '\"': 0.2,\n\t };\n\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t var product = '';\n\n\t for (var i = 0; i < value.length; i++) {\n\t var c = value[i];\n\t switch (c) {\n\t case \"'\":\n\t case '\"':\n\t quotes[c]++;\n\t product += c;\n\t continue\n\n\t case '\\0':\n\t if (util.isDigit(value[i + 1])) {\n\t product += '\\\\x00';\n\t continue\n\t }\n\t }\n\n\t if (replacements[c]) {\n\t product += replacements[c];\n\t continue\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n\t continue\n\t }\n\n\t product += c;\n\t }\n\n\t var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });\n\n\t product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n\t return quoteChar + product + quoteChar\n\t }\n\n\t function serializeObject (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var keys = propertyList || Object.keys(value);\n\t var partial = [];\n\t for (var i = 0, list = keys; i < list.length; i += 1) {\n\t var key = list[i];\n\n\t var propertyString = serializeProperty(key, value);\n\t if (propertyString !== undefined) {\n\t var member = serializeKey(key) + ':';\n\t if (gap !== '') {\n\t member += ' ';\n\t }\n\t member += propertyString;\n\t partial.push(member);\n\t }\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '{}';\n\t } else {\n\t var properties;\n\t if (gap === '') {\n\t properties = partial.join(',');\n\t final = '{' + properties + '}';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t properties = partial.join(separator);\n\t final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\n\t function serializeKey (key) {\n\t if (key.length === 0) {\n\t return quoteString(key, true)\n\t }\n\n\t var firstChar = String.fromCodePoint(key.codePointAt(0));\n\t if (!util.isIdStartChar(firstChar)) {\n\t return quoteString(key, true)\n\t }\n\n\t for (var i = firstChar.length; i < key.length; i++) {\n\t if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n\t return quoteString(key, true)\n\t }\n\t }\n\n\t return key\n\t }\n\n\t function serializeArray (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var partial = [];\n\t for (var i = 0; i < value.length; i++) {\n\t var propertyString = serializeProperty(String(i), value);\n\t partial.push((propertyString !== undefined) ? propertyString : 'null');\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '[]';\n\t } else {\n\t if (gap === '') {\n\t var properties = partial.join(',');\n\t final = '[' + properties + ']';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t var properties$1 = partial.join(separator);\n\t final = '[\\n' + indent + properties$1 + ',\\n' + stepback + ']';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\t};\n\n\tvar JSON5 = {\n\t parse: parse,\n\t stringify: stringify,\n\t};\n\n\tvar lib = JSON5;\n\n\tvar es5 = lib;\n\n\treturn es5;\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","// 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 { existsSync } from 'fs';\nimport { readFile } from 'fs/promises';\nimport { dirname, join } from 'path';\nimport { glob } from 'glob';\nimport JSON5 from 'json5';\nimport dayjs from 'dayjs';\nimport { PackageMetadata } from './types';\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 * Logger interface\n */\nexport interface Logger {\n /**\n * Log an debug message\n * @param msg - The message to log\n */\n readonly debug: (msg: string) => void;\n /**\n * Log an info message\n * @param msg - The message to log\n */\n readonly info: (msg: string) => void;\n /**\n * Log a warning message\n * @param msg - The message to log\n */\n readonly warn: (msg: string) => void;\n /**\n * Log an error message\n * @param msg - The message to log\n */\n readonly error: (msg: string) => void;\n}\n\n/**\n * Default console logger implementation\n * @param prefix - Log prefix\n * @param driver - Console logging driver instance\n */\nexport const createConsoleLogger = (prefix?: string, driver?: any): Logger => {\n const d = driver?.debug ?? (() => {});\n const i = driver?.info ?? globalThis.console.info;\n const w = driver?.warn ?? globalThis.console.warn;\n const e = driver?.error ?? globalThis.console.error;\n if (prefix) {\n return {\n debug: (msg: string) => d(`[${prefix}]: ${msg}`),\n info: (msg: string) => i(`[${prefix}]: ${msg}`),\n warn: (msg: string) => w(`[${prefix}]: ${msg}`),\n error: (msg: string) => e(`[${prefix}]: ${msg}`),\n };\n } else {\n return {\n debug: (msg: string) => d(`${msg}`),\n info: (msg: string) => i(`${msg}`),\n warn: (msg: string) => w(`${msg}`),\n error: (msg: string) => e(`${msg}`),\n };\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Result of package resolution with source tracking\n * @template T - Type of the package metadata\n */\nexport interface PackageResolutionResult<T> {\n readonly metadata: T;\n readonly sourceMap: Map<string, string>;\n}\n\n/**\n * Workspace sibling project information\n */\nexport interface WorkspaceSibling {\n readonly name: string;\n readonly version: string;\n readonly path: string;\n}\n\nconst collectStringArray = (value: unknown): string[] | undefined => {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const entries = value.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n\n return entries.length > 0 ? entries : undefined;\n};\n\nconst resolveWorkspacePatternsFromPackageJson = (\n packageJson: any\n): string[] | undefined => {\n const directPatterns = collectStringArray(packageJson?.workspaces);\n if (directPatterns) {\n return directPatterns;\n }\n\n return collectStringArray(packageJson?.workspaces?.packages);\n};\n\nconst parseYamlScalar = (value: string): string | undefined => {\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n try {\n const parsed = JSON5.parse(trimmed);\n return typeof parsed === 'string' ? parsed : undefined;\n } catch {\n const commentIndex = trimmed.indexOf(' #');\n const withoutComment =\n commentIndex >= 0 ? trimmed.slice(0, commentIndex).trim() : trimmed;\n return withoutComment || undefined;\n }\n};\n\nconst parsePnpmWorkspacePatterns = (content: string): string[] => {\n const patterns: string[] = [];\n const lines = content.split(/\\r?\\n/);\n\n let inPackagesSection = false;\n let packagesIndent = -1;\n\n for (const rawLine of lines) {\n const line = rawLine.replace(/\\t/g, ' ');\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n const indent = line.length - line.trimStart().length;\n if (!inPackagesSection) {\n const match = trimmed.match(/^packages\\s*:\\s*(.*)$/);\n if (!match) {\n continue;\n }\n\n const remaining = match[1].trim();\n if (remaining) {\n const parsed = JSON5.parse(remaining);\n if (Array.isArray(parsed)) {\n const inlinePatterns = parsed.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n patterns.push(...inlinePatterns);\n }\n break;\n }\n\n inPackagesSection = true;\n packagesIndent = indent;\n continue;\n }\n\n if (indent <= packagesIndent && !trimmed.startsWith('-')) {\n break;\n }\n\n const match = trimmed.match(/^-\\s*(.+)$/);\n if (!match) {\n continue;\n }\n\n const pattern = parseYamlScalar(match[1]);\n if (pattern) {\n patterns.push(pattern);\n }\n }\n\n return patterns;\n};\n\nconst resolveWorkspacePatterns = async (\n workspaceRoot: string,\n logger: Logger\n): Promise<string[]> => {\n try {\n const rootPackageJsonPath = join(workspaceRoot, 'package.json');\n if (existsSync(rootPackageJsonPath)) {\n const content = await readFile(rootPackageJsonPath, 'utf-8');\n const rootPackageJson = JSON5.parse(content);\n const workspacePatterns =\n resolveWorkspacePatternsFromPackageJson(rootPackageJson);\n if (workspacePatterns?.length) {\n return workspacePatterns;\n }\n }\n\n const pnpmWorkspacePath = join(workspaceRoot, 'pnpm-workspace.yaml');\n if (!existsSync(pnpmWorkspacePath)) {\n return [];\n }\n\n const pnpmWorkspaceContent = await readFile(pnpmWorkspacePath, 'utf-8');\n return parsePnpmWorkspacePatterns(pnpmWorkspaceContent);\n } catch (error) {\n logger.warn(\n `Failed to resolve workspace patterns from ${workspaceRoot}: ${error}`\n );\n return [];\n }\n};\n\n/**\n * Recursively flatten an object into dot-notation key-value pairs\n * @param obj - Object to flatten\n * @param prefix - Current key prefix\n * @param map - Store key-value entries into this\n */\nconst flattenObject = (obj: any, prefix: string, map: PackageMetadata) => {\n for (const [key, value] of Object.entries(obj)) {\n if (!value) continue;\n const fullKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'string') {\n map[fullKey] = value;\n } else if (Array.isArray(value)) {\n map[fullKey] = value.map((v) => String(v)).join(',');\n } else if (typeof value === 'object') {\n // Recursively flatten nested objects\n flattenObject(value, fullKey, map);\n } else {\n // Convert other types to string\n map[fullKey] = String(value);\n }\n }\n};\n\n/**\n * Find workspace root by looking for workspace configuration files\n * @param startPath - Starting directory path\n * @param logger - Logger instance\n * @returns Promise resolving to workspace root path or undefined if not found\n */\nexport const findWorkspaceRoot = async (\n startPath: string,\n logger: Logger\n): Promise<string | undefined> => {\n let currentPath = startPath;\n\n while (currentPath !== dirname(currentPath)) {\n const packageJsonPath = join(currentPath, 'package.json');\n\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON5.parse(content);\n\n // Check for workspace configurations\n if (\n packageJson.workspaces ||\n existsSync(join(currentPath, 'pnpm-workspace.yaml')) ||\n existsSync(join(currentPath, 'lerna.json'))\n ) {\n return currentPath;\n }\n } catch (error) {\n logger.warn(\n `Failed to parse package.json at ${packageJsonPath}: ${error}`\n );\n }\n }\n\n currentPath = dirname(currentPath);\n }\n\n return undefined;\n};\n\n/**\n * Collect workspace sibling projects\n * @param workspaceRoot - Workspace root directory\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)\n */\nexport const collectWorkspaceSiblings = async (\n workspaceRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): Promise<Map<string, WorkspaceSibling>> => {\n const siblings = new Map<string, WorkspaceSibling>();\n\n try {\n const workspacePatterns = await resolveWorkspacePatterns(\n workspaceRoot,\n logger\n );\n if (workspacePatterns.length <= 0) {\n return siblings;\n }\n\n // Find all workspace directories\n const workspaceDirs = new Set<string>();\n for (const pattern of workspacePatterns) {\n const matches = await glob(pattern, {\n cwd: workspaceRoot,\n });\n matches.forEach((match) => workspaceDirs.add(match));\n }\n\n // Read package.json from each workspace directory\n for (const workspaceDir of workspaceDirs) {\n const packageJsonPath = join(workspaceRoot, workspaceDir, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const packagePath = join(workspaceRoot, workspaceDir);\n\n // Use resolveRawPackageJsonObject to get the resolved version with Git tag consideration\n const resolvedPackage = await resolveRawPackageJsonObject(\n packagePath,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n\n const packageJson = resolvedPackage.metadata;\n\n if (packageJson.name && packageJson.version) {\n siblings.set(packageJson.name, {\n name: packageJson.name,\n version: packageJson.version,\n path: packagePath,\n });\n }\n } catch (error) {\n logger.warn(\n `Failed to resolve package.json from ${packageJsonPath}: ${error}`\n );\n }\n }\n }\n } catch (error) {\n logger.warn(\n `Failed to collect workspace siblings from ${workspaceRoot}: ${error}`\n );\n }\n\n return siblings;\n};\n\n/**\n * Replace \"*\" wildcards in peerDependencies with actual workspace sibling versions\n * @param packageJson - Package.json object to modify\n * @param siblings - Map of workspace sibling projects\n * @param versionPrefix - Version prefix to add (e.g., \"^\", \"~\", \"\")\n * @returns Modified package.json object\n */\nexport const replacePeerDependenciesWildcards = (\n packageJson: any,\n siblings: Map<string, WorkspaceSibling>,\n versionPrefix: string\n): any => {\n // Deep clone the package.json to avoid modifying the original\n const modifiedPackageJson = JSON5.parse(JSON.stringify(packageJson));\n\n if (\n !modifiedPackageJson.peerDependencies ||\n typeof modifiedPackageJson.peerDependencies !== 'object'\n ) {\n return modifiedPackageJson;\n }\n\n // Process each peer dependency\n for (const [depName, depVersion] of Object.entries(\n modifiedPackageJson.peerDependencies\n )) {\n if (depVersion === '*' && siblings.has(depName)) {\n const sibling = siblings.get(depName)!;\n modifiedPackageJson.peerDependencies[depName] =\n `${versionPrefix}${sibling.version}`;\n }\n }\n\n return modifiedPackageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Merge package metadata with inheritance (child overrides parent)\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package metadata\n * @param childMetadata - Child package metadata\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @returns Merged package metadata\n */\nexport const mergePackageMetadata = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n sourceMap: Map<string, string>,\n parentMetadata: PackageMetadata,\n childMetadata: PackageMetadata,\n parentSourceDir: string,\n childSourceDir: string,\n _repositoryPath: string\n): Promise<PackageMetadata> => {\n // Fetch git metadata\n const metadata = await fetchGitMetadata();\n\n const merged: PackageMetadata = {};\n flattenObject(metadata, '', merged);\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && metadata.version) {\n merged.version = metadata.version;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n/**\n * Merge raw package.json objects with inheritance (child overrides parent)\n * Only inherits package metadata fields, not project-specific configurations\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package object\n * @param childMetadata - Child package object\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @param repositoryPath - Path to Git repository root\n * @returns Merged package object with only metadata fields\n */\nconst mergeRawPackageJson = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n sourceMap: Map<string, string>,\n parentMetadata: any,\n childMetadata: any,\n parentSourceDir: string,\n childSourceDir: string,\n repositoryPath: string\n): Promise<any> => {\n // Fetch git metadata\n const gitMetadata = await fetchGitMetadata();\n const merged = { ...gitMetadata };\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n if (inheritableFields.has(key)) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && gitMetadata.version) {\n merged.version = gitMetadata.version;\n sourceMap.set('version', repositoryPath); // Mark as Git-sourced\n }\n\n if (!merged.version) {\n merged.version = '0.0.1';\n const gitInfo =\n typeof merged.git === 'object' && merged.git !== null ? merged.git : {};\n gitInfo.version = gitInfo.version ?? merged.version;\n gitInfo.commit = gitInfo.commit ?? {\n hash: 'unknown',\n shortHash: 'unknown',\n };\n gitInfo.tags = gitInfo.tags ?? [];\n gitInfo.branches = gitInfo.branches ?? [];\n merged.git = gitInfo;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param logger - Logger instance\n * @param readPackageMetadataFn - Function to read package metadata\n * @param mergePackageMetadataFn - Function to merge package metadata\n * @returns Promise resolving to resolved package metadata\n */\nconst resolvePackageMetadataT = async <T>(\n projectRoot: string,\n logger: Logger,\n readPackageMetadataFn: (path: string) => Promise<T>,\n mergePackageMetadataFn: (\n a: T,\n b: T,\n aDir: string,\n bDir: string,\n repositoryPath: string\n ) => Promise<T>\n): Promise<T> => {\n const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);\n\n if (!workspaceRoot) {\n // No workspace, just read local package.json\n const localPackagePath = join(projectRoot, 'package.json');\n const localMetadata = await readPackageMetadataFn(localPackagePath);\n return mergePackageMetadataFn(\n {} as T,\n localMetadata,\n '', // dummy\n projectRoot,\n projectRoot\n );\n }\n\n const projectPackagePath = join(projectRoot, 'package.json');\n\n // Start with root package metadata\n const rootPackagePath = join(workspaceRoot, 'package.json');\n const metadata = await readPackageMetadataFn(rootPackagePath);\n\n // If current project is not the root, merge with project-specific metadata\n if (\n projectPackagePath !== rootPackagePath &&\n existsSync(projectPackagePath)\n ) {\n const projectMetadata = await readPackageMetadataFn(projectPackagePath);\n return mergePackageMetadataFn(\n metadata,\n projectMetadata,\n workspaceRoot,\n projectRoot,\n projectRoot\n );\n } else {\n return mergePackageMetadataFn(\n {} as T,\n metadata,\n '', // dummy\n workspaceRoot,\n projectRoot\n );\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Read and parse package.json file\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to package metadata\n */\nconst readPackageMetadata = async (\n logger: Logger,\n packagePath: string\n): Promise<PackageMetadata> => {\n try {\n const content = await readFile(packagePath, 'utf-8');\n const json = JSON5.parse(content);\n const map: PackageMetadata = {};\n flattenObject(json, '', map);\n return map;\n } catch (error) {\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n return {};\n }\n};\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param logger - Logger instance\n * @returns Promise resolving to resolved package metadata\n */\nexport const resolvePackageMetadata = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n logger: Logger\n): Promise<PackageResolutionResult<PackageMetadata>> => {\n const sourceMap = new Map<string, string>();\n const metadata = await resolvePackageMetadataT<PackageMetadata>(\n projectRoot,\n logger,\n readPackageMetadata.bind(undefined, logger),\n mergePackageMetadata.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n sourceMap\n )\n );\n\n return {\n metadata,\n sourceMap,\n };\n};\n\n/**\n * Read and parse package.json file without flattening\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to raw package object\n */\nconst readRawPackageJson = async (\n logger: Logger,\n packagePath: string,\n ignoreNotExist: boolean = false\n): Promise<any> => {\n if (ignoreNotExist && !existsSync(packagePath)) {\n return {};\n }\n try {\n const content = await readFile(packagePath, 'utf-8');\n return JSON5.parse(content);\n } catch (error) {\n if (ignoreNotExist && (error as any)?.code === 'ENOENT') {\n return {};\n }\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n throw error;\n }\n};\n\n/**\n * Resolve raw package.json for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to resolved raw package.json object with source tracking\n */\nexport const resolveRawPackageJsonObject = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger,\n ignoreNotExist: boolean = false\n): Promise<PackageResolutionResult<any>> => {\n const sourceMap = new Map<string, string>();\n const readRawPackageJsonFn = async (packagePath: string) =>\n readRawPackageJson(logger, packagePath, ignoreNotExist);\n const packageJson = await resolvePackageMetadataT<any>(\n projectRoot,\n logger,\n readRawPackageJsonFn,\n mergeRawPackageJson.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n sourceMap\n )\n );\n\n return {\n metadata: packageJson,\n sourceMap,\n };\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 { readdir, readFile, stat } from 'fs/promises';\nimport { isAbsolute, join } from 'path';\nimport type { Logger } from './internal';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Fast tag listing implementation that reads tags directly from filesystem\n * instead of using isomorphic-git's `listTags`\n */\n\n/**\n * Parse packed-refs file to extract tags\n * @param packedRefsPath - Path to packed-refs file\n * @returns Array of tag names\n */\nconst parsePackedRefs = async (packedRefsPath: string): Promise<string[]> => {\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n const tags: string[] = [];\n\n for (const line of lines) {\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Format: <hash> refs/tags/<tagname>\n const match = line.match(/^[0-9a-f]{40}\\s+refs\\/tags\\/(.+)$/);\n if (match) {\n // Handle peeled tags (annotated tags) marked with ^{}\n const tagName = match[1];\n if (!tagName.endsWith('^{}')) {\n tags.push(tagName);\n }\n }\n }\n\n return tags;\n } catch (error) {\n // packed-refs might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Read loose tag refs from refs/tags directory\n * @param refsTagsPath - Path to refs/tags directory\n * @returns Array of tag names\n */\nconst readLooseTags = async (refsTagsPath: string): Promise<string[]> => {\n try {\n const entries = await readdir(refsTagsPath, { withFileTypes: true });\n const tags: string[] = [];\n\n for (const entry of entries) {\n if (entry.isFile()) {\n tags.push(entry.name);\n }\n }\n\n return tags;\n } catch (error) {\n // refs/tags might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Fast implementation of listTags that reads directly from filesystem\n * @param repoPath - Repository path\n * @returns Array of all tag names\n */\nexport const listTagsFast = async (repoPath: string): Promise<string[]> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n // Read the actual git dir location from .git file\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Read tags from both packed-refs and loose refs\n const [packedTags, looseTags] = await Promise.all([\n parsePackedRefs(join(actualGitDir, 'packed-refs')),\n readLooseTags(join(actualGitDir, 'refs', 'tags')),\n ]);\n\n // Combine and deduplicate tags\n const allTags = new Set<string>([...packedTags, ...looseTags]);\n\n // Sort tags for consistent output (matching git.listTags behavior)\n return Array.from(allTags).sort();\n};\n\n/**\n * Get hash for a specific tag by reading refs directly\n * @param repoPath - Repository path\n * @param tagName - Name of the tag\n * @returns The SHA-1 hash the tag points to, or null if not found\n */\nexport const resolveTagFast = async (\n repoPath: string,\n tagName: string\n): Promise<string | null> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // First try loose ref\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n return hash.trim();\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then try packed-refs\n const packedRefsPath = join(actualGitDir, 'packed-refs');\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Check if this line is for our tag\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && match[2] === tagName) {\n // Check if next line is a peeled ref (^{})\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // Return the peeled ref (points directly to commit)\n return lines[i + 1].substring(1, 41);\n }\n // Return the tag object hash\n return match[1];\n }\n }\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n return null;\n};\n\n/**\n * Batch resolve multiple tags for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to hash\n */\nexport const resolveTagsBatch = async (\n repoPath: string,\n tagNames: string[]\n): Promise<Map<string, string>> => {\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, string>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n // Check for peeled ref\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n result.set(match[2], lines[i + 1].substring(1, 41));\n } else {\n result.set(match[2], match[1]);\n }\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n result.set(tagName, hash.trim());\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n\n return result;\n};\n\n/**\n * Batch resolve multiple tags with their commit hashes for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to {oid, commitOid}\n */\nexport const resolveTagsBatchWithCommit = async (\n repoPath: string,\n tagNames: string[],\n logger: Logger\n): Promise<Map<string, { oid: string; commitOid: string }>> => {\n const startTime = Date.now();\n\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, { oid: string; commitOid: string }>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n const packedRefsStart = Date.now();\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n const tagName = match[2];\n const oid = match[1];\n\n // Check for peeled ref on next line\n let commitOid = oid; // Default: assume lightweight tag\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // This is an annotated tag, next line has the commit\n commitOid = lines[i + 1].substring(1, 41);\n }\n\n result.set(tagName, { oid, commitOid });\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n logger.debug(\n `[fast-tags] read packed-refs: ${Date.now() - packedRefsStart}ms`\n );\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n if (remainingTags.length > 0) {\n const looseRefsStart = Date.now();\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n const oid = hash.trim();\n\n // Check if this is an annotated tag by reading the object type\n let commitOid = oid;\n try {\n // Use git cat-file to check object type\n const { execSync } = require('child_process');\n const objectType = execSync(\n `git -C \"${repoPath}\" cat-file -t ${oid}`,\n { encoding: 'utf-8' }\n ).trim();\n\n if (objectType === 'tag') {\n // It's an annotated tag, extract the commit it points to\n const tagContent = execSync(\n `git -C \"${repoPath}\" cat-file -p ${oid}`,\n { encoding: 'utf-8' }\n );\n const objectMatch = tagContent.match(/^object ([0-9a-f]{40})$/m);\n if (objectMatch) {\n commitOid = objectMatch[1];\n }\n }\n } catch (error) {\n // If git cat-file fails, assume it's a lightweight tag\n logger.debug(\n `[fast-tags] Could not determine object type for ${tagName}: ${error}`\n );\n }\n\n result.set(tagName, { oid, commitOid });\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n logger.debug(\n `[fast-tags] read loose refs: ${Date.now() - looseRefsStart}ms`\n );\n }\n\n const totalTime = Date.now() - startTime;\n logger.debug(`[fast-tags] resolveTagsBatchWithCommit total: ${totalTime}ms`);\n logger.debug(`[fast-tags] Resolved ${result.size}/${tagNames.length} tags`);\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 fs from 'fs/promises';\nimport git from 'isomorphic-git';\nimport type { TagInfo, Version } from './analyzer';\nimport type { Logger } from './internal';\nimport {\n listTagsFast,\n resolveTagsBatch,\n resolveTagsBatchWithCommit,\n} from './fast-tags';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Git operations for tag management\n * Handles all Git interactions\n */\n\n/**\n * Tag with OID information\n */\nexport interface TagWithOid {\n name: string;\n oid: string; // The OID this tag points to (could be tag object or commit)\n targetCommit?: string; // The commit this tag ultimately points to (resolved from annotated tags)\n}\n\n/**\n * Get all tags with their OIDs\n * @param repoPath - Repository path\n * @returns Array of tags with OID information\n */\nexport const getAllTagsWithOids = async (\n repoPath: string\n): Promise<TagWithOid[]> => {\n const tags = await listTagsFast(repoPath);\n const tagHashes = await resolveTagsBatch(repoPath, tags);\n\n const result: TagWithOid[] = [];\n for (const [tagName, oid] of tagHashes.entries()) {\n result.push({ name: tagName, oid });\n }\n\n return result;\n};\n\n/**\n * Resolve tag OID to commit hash\n * @param repoPath - Repository path\n * @param tagOid - Tag OID\n * @returns Commit hash this tag points to\n */\nexport const resolveTagToCommit = async (\n repoPath: string,\n tagOid: string\n): Promise<string> => {\n try {\n // Try to read as annotated tag\n const tagObject = await git.readTag({\n fs,\n dir: repoPath,\n oid: tagOid,\n });\n\n if (tagObject?.tag?.object) {\n // Annotated tag - return the commit it points to\n return tagObject.tag.object;\n }\n } catch {\n // Not an annotated tag, must be lightweight\n }\n\n // Lightweight tag - OID is the commit\n return tagOid;\n};\n\n/**\n * Get tag information for specific tags\n * @param repoPath - Repository path\n * @param tagNames - Tag names to get information for\n * @param parseVersion - Function to parse version from tag name\n * @returns Array of TagInfo\n */\nexport const getTagsInfo = async (\n repoPath: string,\n tagNames: string[],\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<TagInfo[]> => {\n const startTime = Date.now();\n const result: TagInfo[] = [];\n\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n\n for (const tagName of tagNames) {\n const data = tagData.get(tagName);\n if (!data) {\n logger.warn(`[git-ops] Tag ${tagName} not found`);\n continue;\n }\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n result.push({\n name: tagName,\n hash: commitOid,\n version,\n });\n }\n\n logger.debug(`[git-ops] getTagsInfo: ${Date.now() - startTime}ms`);\n logger.debug(\n `[git-ops] Got info for ${result.length}/${tagNames.length} tags`\n );\n\n return result;\n};\n\n/**\n * Build complete tag cache from repository\n * @param repoPath - Repository path\n * @param parseVersion - Function to parse version from tag name\n * @returns Map of commit hash to TagInfo array\n */\nexport const buildCompleteTagCache = async (\n repoPath: string,\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<Map<string, TagInfo[]>> => {\n const totalStart = Date.now();\n const cache = new Map<string, TagInfo[]>();\n\n const listStart = Date.now();\n const tags = await listTagsFast(repoPath);\n logger.debug(`[git-ops] listTagsFast: ${Date.now() - listStart}ms`);\n logger.debug(`[git-ops] Found ${tags.length} tags`);\n\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tags, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit: ${Date.now() - resolveStart}ms`\n );\n\n const buildStart = Date.now();\n for (const tagName of tags) {\n const data = tagData.get(tagName);\n if (!data) continue;\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n const tagInfo: TagInfo = {\n name: tagName,\n hash: commitOid,\n version,\n };\n\n if (!cache.has(commitOid)) {\n cache.set(commitOid, []);\n }\n cache.get(commitOid)!.push(tagInfo);\n }\n logger.debug(`[git-ops] build cache map: ${Date.now() - buildStart}ms`);\n\n // Sort tags by name for each commit to ensure consistent ordering\n const sortStart = Date.now();\n for (const tags of cache.values()) {\n tags.sort((a, b) => a.name.localeCompare(b.name));\n }\n logger.debug(`[git-ops] sort tags: ${Date.now() - sortStart}ms`);\n\n logger.debug(\n `[git-ops] buildCompleteTagCache total: ${Date.now() - totalStart}ms`\n );\n logger.debug(`[git-ops] Built cache with ${cache.size} unique commits`);\n\n return cache;\n};\n\n/**\n * Check if a tag has moved to a different commit\n * @param repoPath - Repository path\n * @param tagName - Tag name\n * @param cachedCommit - Commit hash from cache\n * @returns True if tag has moved\n */\nexport const hasTagMoved = async (\n repoPath: string,\n tagName: string,\n cachedCommit: string\n): Promise<boolean> => {\n try {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n\n const currentCommit = await resolveTagToCommit(repoPath, oid);\n return currentCommit !== cachedCommit;\n } catch {\n // Tag doesn't exist anymore\n return true;\n }\n};\n\n/**\n * Find modified tags (tags that point to different commits)\n * @param repoPath - Repository path\n * @param tagNames - Tag names to check\n * @param cache - Current cache\n * @returns Array of modified tag names\n */\nexport const findModifiedTags = async (\n repoPath: string,\n tagNames: string[],\n cache: Map<string, TagInfo[]>,\n logger: Logger\n): Promise<string[]> => {\n const totalStart = Date.now();\n const modified: string[] = [];\n\n // Batch resolve all tags at once with commit hashes\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit in findModified: ${Date.now() - resolveStart}ms`\n );\n\n const checkStart = Date.now();\n // Process each tag\n for (const tagName of tagNames) {\n // Find tag in cache\n let cachedCommit: string | undefined;\n for (const [commit, tags] of cache.entries()) {\n const tag = tags.find((t) => t.name === tagName);\n if (tag) {\n cachedCommit = commit;\n break;\n }\n }\n\n if (cachedCommit) {\n const data = tagData.get(tagName);\n if (!data) {\n // Tag doesn't exist anymore\n modified.push(tagName);\n } else {\n const { commitOid } = data;\n if (commitOid !== cachedCommit) {\n modified.push(tagName);\n }\n }\n }\n }\n logger.debug(`[git-ops] check modified tags: ${Date.now() - checkStart}ms`);\n\n logger.debug(\n `[git-ops] findModifiedTags total: ${Date.now() - totalStart}ms`\n );\n logger.debug(\n `[git-ops] Found ${modified.length} modified tags out of ${tagNames.length}`\n );\n\n return modified;\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 * as git from 'isomorphic-git';\nimport fs from 'fs/promises';\nimport dayjs from 'dayjs';\nimport { GitMetadata } from './types';\nimport { Logger } from './internal';\nimport { buildCompleteTagCache } from './git-operations';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n// Ported from: https://github.com/kekyo/RelaxVersioner/blob/master/RelaxVersioner.Core/Analyzer.cs\n\n/**\n * Version information\n */\nexport interface Version {\n major: number;\n minor?: number;\n build?: number;\n revision?: number;\n original: string;\n}\n\n/**\n * Primitive commit information\n */\ninterface CommitInfo {\n hash: string;\n shortHash: string;\n date: string;\n message: string;\n parents: string[];\n}\n\n/**\n * Tag information\n */\nexport interface TagInfo {\n name: string;\n hash: string;\n version: Version | undefined;\n}\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parse and validate a version component\n * @param value - The string value to parse\n * @returns The parsed number or undefined if invalid (negative or > 65535)\n */\nconst parseVersionComponent = (value: string): number | undefined => {\n const num = parseInt(value, 10);\n return num < 0 || num > 65535 ? undefined : num;\n};\n\n/**\n * Parse a version tag name\n * @param tagName - The version tag name\n * @returns The parsed version or undefined if the tag name is invalid\n */\nconst parseVersion = (tagName: string): Version | undefined => {\n // Remove common prefix 'v'.\n const cleanTag = tagName.replace(/^v/i, '');\n\n // Match version pattern: major.minor[.build[.revision]].\n const versionRegex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:\\.(\\d+))?$/;\n const match = cleanTag.match(versionRegex);\n\n if (!match) {\n return undefined;\n }\n\n const major = parseVersionComponent(match[1]);\n if (major === undefined) {\n return undefined;\n }\n\n const version: Version = {\n major,\n original: tagName,\n };\n\n if (match[2] !== undefined) {\n const minor = parseVersionComponent(match[2]);\n if (minor === undefined) {\n return undefined;\n }\n version.minor = minor;\n }\n if (match[3] !== undefined) {\n const build = parseVersionComponent(match[3]);\n if (build === undefined) {\n return undefined;\n }\n version.build = build;\n }\n if (match[4] !== undefined) {\n const revision = parseVersionComponent(match[4]);\n if (revision === undefined) {\n return undefined;\n }\n version.revision = revision;\n }\n\n return version;\n};\n\n/**\n * Check if a version is valid\n * @param version - The version to check\n * @returns True if the version is valid, false otherwise\n */\nconst isValidVersion = (version: Version): boolean => {\n // At least major component and optionally minor\n return (\n version.major >= 0 && (version.minor === undefined || version.minor >= 0)\n );\n};\n\n/**\n * Compare two versions\n * @param a - The first version\n * @param b - The second version\n * @returns A negative number if a is less than b, a positive number if a is greater than b, or 0 if they are equal\n */\nconst compareVersions = (a: Version, b: Version): number => {\n // Compare major\n if (a.major !== b.major) return b.major - a.major;\n\n // Compare minor (treat undefined as 0)\n const aMinor = a.minor ?? 0;\n const bMinor = b.minor ?? 0;\n if (aMinor !== bMinor) return bMinor - aMinor;\n\n // Compare build (treat undefined as 0)\n const aBuild = a.build ?? 0;\n const bBuild = b.build ?? 0;\n if (aBuild !== bBuild) return bBuild - aBuild;\n\n // Compare revision (treat undefined as 0)\n const aRevision = a.revision ?? 0;\n const bRevision = b.revision ?? 0;\n if (aRevision !== bRevision) return bRevision - aRevision;\n\n return 0;\n};\n\n/**\n * Increment the last version component\n * @param version - The version to increment\n * @returns The incremented version\n */\nconst incrementLastVersionComponent = (version: Version): Version => {\n // Increment the rightmost existing component\n if (version.revision !== undefined) {\n return { ...version, revision: version.revision + 1 };\n }\n if (version.build !== undefined) {\n return { ...version, build: version.build + 1 };\n }\n if (version.minor !== undefined) {\n return { ...version, minor: version.minor + 1 };\n }\n\n // If only major exists, increment major\n return {\n ...version,\n major: version.major + 1,\n original: `${version.major + 1}`,\n };\n};\n\n/**\n * Format a version\n * @param version - The version to format\n * @returns The formatted version\n */\nconst formatVersion = (version: Version): string => {\n let result = `${version.major}`;\n\n if (version.minor !== undefined) {\n result += `.${version.minor}`;\n\n if (version.build !== undefined) {\n result += `.${version.build}`;\n\n if (version.revision !== undefined) {\n result += `.${version.revision}`;\n }\n }\n }\n\n return result;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get a commit by hash\n * @param repositoryPath - Local Git repository directory\n * @param hash - The hash of the commit\n * @returns The commit or undefined if the commit is not found\n */\nconst getCommit = async (\n repositoryPath: string,\n hash: string\n): Promise<CommitInfo | undefined> => {\n try {\n const commit = await git.readCommit({ fs, dir: repositoryPath, oid: hash });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get the current commit\n * @param repositoryPath - Local Git repository directory\n * @returns The current commit or undefined if the current commit is not found\n */\nconst getCurrentCommit = async (\n repositoryPath: string\n): Promise<CommitInfo | undefined> => {\n try {\n const currentOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: 'HEAD',\n });\n const commit = await git.readCommit({\n fs,\n dir: repositoryPath,\n oid: currentOid,\n });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get related tags from commit map\n * @param commitToTags - Map of commit hash to tags\n * @param commitHash - The hash of the commit\n * @returns The related tags or an empty array if no tags are found\n */\nconst getRelatedTagsFromMap = (\n commitToTags: Map<string, TagInfo[]>,\n commitHash: string\n): TagInfo[] => {\n return commitToTags.get(commitHash) || [];\n};\n\n// Removed: getRelatedTags and getRelatedTagsForVersioning functions are no longer needed as we use the commit map directly\n\n/**\n * Get the commit related branch name.\n * @param repositoryPath - Local Git repository directory\n * @param commitHash - The hash of the commit\n * @returns The commit related branch name or undefined if not found\n */\nconst getRelatedBranches = async (\n repositoryPath: string,\n commitHash: string\n): Promise<string[]> => {\n try {\n const branches = await git.listBranches({ fs, dir: repositoryPath });\n const relatedBranches: string[] = [];\n\n for (const branch of branches) {\n try {\n // Check if the branch HEAD points to the specified commit\n const branchOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: branch,\n });\n if (branchOid === commitHash) {\n relatedBranches.push(branch);\n }\n } catch {\n // Skip branches that can't be resolved\n }\n }\n\n return relatedBranches;\n } catch {\n return [];\n }\n};\n\n/**\n * Check if the repository has modified files (following RelaxVersioner logic).\n * Checks for staged files, unstaged files, and untracked files (respecting .gitignore).\n * @param repositoryPath - Local Git repository directory\n * @returns Modified files\n */\nconst isModifiedFile = ([, head, workdir, stage]: git.StatusRow): boolean => {\n return (\n workdir === 2 || // modified in working directory (unstaged)\n stage === 2 || // modified in stage (staged)\n stage === 3 || // added to stage (staged)\n (head === 1 && workdir === 0) || // deleted from working directory\n (head === 0 && workdir === 1) // untracked files (respecting .gitignore)\n );\n};\n\nconst getStatusRow = async (\n filepath: string,\n entries: Array<git.WalkerEntry | null>\n): Promise<git.StatusRow | undefined> => {\n const [head, workdir, stage] = entries;\n const [headType, workdirType, stageType] = await Promise.all([\n head ? head.type() : undefined,\n workdir ? workdir.type() : undefined,\n stage ? stage.type() : undefined,\n ]);\n\n const isBlob = [headType, workdirType, stageType].includes('blob');\n\n if ((headType === 'tree' || headType === 'special') && !isBlob) {\n return undefined;\n }\n if (headType === 'commit') {\n return undefined;\n }\n if ((workdirType === 'tree' || workdirType === 'special') && !isBlob) {\n return undefined;\n }\n if (stageType === 'commit') {\n return undefined;\n }\n if ((stageType === 'tree' || stageType === 'special') && !isBlob) {\n return undefined;\n }\n\n const headOid = headType === 'blob' ? await head!.oid() : undefined;\n const stageOid = stageType === 'blob' ? await stage!.oid() : undefined;\n\n let workdirOid: string | undefined;\n if (headType !== 'blob' && workdirType === 'blob' && stageType !== 'blob') {\n // Any unique marker works here as long as it differs from HEAD and STAGE.\n workdirOid = '42';\n } else if (workdirType === 'blob') {\n workdirOid = await workdir!.oid();\n }\n\n const entry = [undefined, headOid, workdirOid, stageOid];\n const statusValues = entry.map((value) => entry.indexOf(value));\n\n return [\n filepath,\n statusValues[1] as git.StatusRow[1],\n statusValues[2] as git.StatusRow[2],\n statusValues[3] as git.StatusRow[3],\n ];\n};\n\nconst reduceModifiedFiles = async (\n parent: git.StatusRow | undefined,\n children: git.StatusRow[][]\n): Promise<git.StatusRow[]> => {\n const modifiedFiles = parent ? [parent] : [];\n for (const child of children) {\n modifiedFiles.push(...child);\n }\n return modifiedFiles;\n};\n\nconst iterateSequentially: git.WalkerIterate = async (walk, children) => {\n const results = [];\n // Avoid the default unbounded Promise fan-out on large packed repositories.\n for (const child of children) {\n results.push(await walk(child));\n }\n return results;\n};\n\nconst getModifiedFiles = async (\n repositoryPath: string\n): Promise<git.StatusRow[]> => {\n try {\n return (await git.walk({\n fs,\n dir: repositoryPath,\n trees: [git.TREE({ ref: 'HEAD' }), git.WORKDIR(), git.STAGE()],\n map: async (\n filepath,\n entries\n ): Promise<git.StatusRow | null | undefined> => {\n const [head, workdir, stage] = entries;\n if (!head && !stage && workdir) {\n const ignored = await git.isIgnored({\n fs,\n dir: repositoryPath,\n filepath,\n });\n if (ignored) {\n return null;\n }\n }\n\n const statusRow = await getStatusRow(filepath, entries);\n if (!statusRow || !isModifiedFile(statusRow)) {\n return undefined;\n }\n return statusRow;\n },\n reduce: reduceModifiedFiles,\n iterate: iterateSequentially,\n })) as git.StatusRow[];\n } catch {\n return [];\n }\n};\n\nconst formatModifiedFile = (modifiedFile: git.StatusRow) => {\n return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Scheduled commit\n */\ninterface ScheduledCommit {\n commit: CommitInfo;\n parents: CommitInfo[];\n}\n\n/**\n * Lookup version label recursively core analyzer\n * @param cwd - The directory to check\n * @param commit - The commit to lookup\n * @param reachedCommits - The map of reached commits\n * @param commitToTags - Map of commit hash to tags for performance\n * @returns The version or undefined if no version is found\n */\nconst lookupVersionLabelRecursive = async (\n cwd: string,\n commit: CommitInfo,\n reachedCommits: Map<string, Version>,\n commitToTags: Map<string, TagInfo[]>\n): Promise<Version | undefined> => {\n // Scheduled commit analysis stack\n const scheduledStack: ScheduledCommit[] = [];\n\n let version: Version = { major: 0, minor: 0, build: 1, original: '0.0.1' };\n let currentCommit = commit;\n\n // Trace back to the parent commit repeatedly with the following conditions:\n // * If the commit has already been reached, get its version.\n // * If there is a recognizable version string in the tag, get its version.\n // * If the parent commit does not exist, get the default version.\n // * If other than the above, push the commit on the stack for later processing in reverse order.\n while (true) {\n // If the commit has already been reached, get its version.\n if (reachedCommits.has(currentCommit.hash)) {\n version = reachedCommits.get(currentCommit.hash)!;\n break;\n }\n\n // Detected mostly larger version tag.\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n const versionCandidates = relatedTags\n .filter((tag) => tag.version && isValidVersion(tag.version))\n .filter((tag) => tag.version!.minor !== undefined) // \"1.2\" or more.\n .sort((a, b) => compareVersions(a.version!, b.version!));\n if (versionCandidates.length >= 1) {\n // Found version tags, use the highest version\n version = versionCandidates[0].version!;\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Get parent commits\n let parentCommits: CommitInfo[] = [];\n try {\n const commitObj = await git.readCommit({\n fs,\n dir: cwd,\n oid: currentCommit.hash,\n });\n const parentHashes = commitObj.commit.parent || [];\n parentCommits = (\n await Promise.all(\n parentHashes.map((parentHash) => getCommit(cwd, parentHash))\n )\n ).filter((ci) => ci !== undefined);\n } catch {\n // If we can't get parent information, use default version\n }\n if (parentCommits.length === 0) {\n // No parents, this is the root commit\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Schedule this commit for later processing\n scheduledStack.push({ commit: currentCommit, parents: parentCommits });\n\n // Move to the first parent (primary branch)\n currentCommit = parentCommits[0];\n }\n\n // As long as there are commits stacked on the stack,\n // retrieve a commit from the stack, and if there is more than one parent commit for that commit:\n // * Recursively get versions from parent commits other than the primary one.\n // * Compare the versions obtained and store the largest version.\n // * Increment the version and make it the version of the current commit.\n while (scheduledStack.length >= 1) {\n const scheduled = scheduledStack.pop()!;\n const { commit: scheduledCommit, parents } = scheduled;\n\n // Handle merge commits (multiple parents)\n if (parents.length >= 2) {\n // Check alternate parent commits (feature branches)\n for (let index = 1; index < parents.length; index++) {\n const alternateParentVersion = await lookupVersionLabelRecursive(\n cwd,\n parents[index],\n reachedCommits,\n commitToTags\n );\n if (\n alternateParentVersion &&\n compareVersions(alternateParentVersion, version) < 0\n ) {\n // Use higher version from alternate parent\n version = alternateParentVersion;\n }\n }\n }\n\n // Increment version for this commit\n version = incrementLastVersionComponent(version);\n reachedCommits.set(scheduledCommit.hash, version);\n }\n\n return version;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get default Git metadata from local repository.\n * @param repositoryPath - Local Git repository directory\n * @param checkWorkingDirectoryStatus - Check working directory status to increase version\n * @param logger - Logger instance\n * @returns The metadata object with git metadata\n */\nconst getGitMetadata = async (\n repositoryPath: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n const startTime = Date.now();\n const metadata: any = {};\n\n // Try to find git root directory from the given path\n let gitRootPath: string;\n try {\n gitRootPath = await git.findRoot({ fs, filepath: repositoryPath });\n } catch {\n // No git repository found\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n try {\n // Get current commit\n const currentCommit = await getCurrentCommit(gitRootPath);\n if (!currentCommit) {\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n // Build tag map directly\n const buildStart = Date.now();\n const commitToTags = await buildCompleteTagCache(\n gitRootPath,\n (tagName: string) => {\n const version = parseVersion(tagName);\n return version && isValidVersion(version) ? version : undefined;\n },\n logger\n );\n logger.debug(\n `[screw-up] buildCompleteTagCache: ${Date.now() - buildStart}ms`\n );\n logger.debug(`Built tag map with ${commitToTags.size} commits`);\n\n // Initialize reached commits cache\n const reachedCommits = new Map<string, Version>();\n\n // Lookup version\n let version = await lookupVersionLabelRecursive(\n gitRootPath,\n currentCommit,\n reachedCommits,\n commitToTags\n );\n\n // Set git metadata into 'git' key\n const gitMetadata: GitMetadata = { tags: [], branches: [] };\n metadata.git = gitMetadata;\n\n if (version) {\n // Check for working directory changes and increment version if needed\n if (checkWorkingDirectoryStatus) {\n const modifiedFiles = await getModifiedFiles(gitRootPath);\n if (modifiedFiles.length >= 1) {\n const newVersion = incrementLastVersionComponent(version);\n logger.debug(\n `Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(', ')}]`\n );\n version = newVersion;\n }\n }\n\n const gitVersion = formatVersion(version);\n gitMetadata.version = gitVersion;\n metadata.version = gitVersion; // Fallback default version metadata\n }\n\n // Set commit information\n gitMetadata.commit = {\n hash: currentCommit.hash,\n shortHash: currentCommit.shortHash,\n date: dayjs(currentCommit.date).format('YYYY-MM-DDTHH:mm:ssZ'),\n message: currentCommit.message,\n };\n\n // Try to find the actual tag name if it exists\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n gitMetadata.tags = relatedTags.map((tag) => tag.name);\n\n // Get branch information\n const relatedBranches = await getRelatedBranches(\n gitRootPath,\n currentCommit.hash\n );\n gitMetadata.branches = relatedBranches;\n } catch (error) {\n // If any error occurs, return empty metadata\n logger.warn(`Failed to extract git metadata: ${error}`);\n }\n\n logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);\n return metadata;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get cached Git metadata fetcher function\n * @param targetDir - Target directory to resolve Git metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param logger - Logger\n * @returns Git metadata fetcher function\n */\nexport const getFetchGitMetadata = (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n let cachedMetadata: any;\n return async () => {\n if (!cachedMetadata) {\n cachedMetadata = await getGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n }\n return cachedMetadata;\n };\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 { dirname, isAbsolute, join, resolve } from 'path';\nimport { createReadStream, existsSync, statSync } from 'fs';\nimport { mkdir, mkdtemp, writeFile, copyFile, rm, readFile } 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 { glob } from 'glob';\nimport JSON5 from 'json5';\nimport {\n resolveRawPackageJsonObject,\n findWorkspaceRoot,\n collectWorkspaceSiblings,\n replacePeerDependenciesWildcards,\n Logger,\n WorkspaceSibling,\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\nconst readPackageJsonFile = async (packageJsonPath: string): Promise<any> => {\n const content = await readFile(packageJsonPath, 'utf-8');\n return JSON5.parse(content);\n};\n\nexport type PackageManagerName = 'npm' | 'pnpm';\n\nconst dependencySectionKeys = new Set([\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n 'optionalDependencies',\n]);\n\nconst clonePackageJson = (packageJson: any): any =>\n JSON5.parse(JSON.stringify(packageJson));\n\nconst mergeResolvedPackageJson = (\n packedPackageJson: any,\n resolvedPackageJson: any\n): any => {\n const mergedPackageJson = clonePackageJson(packedPackageJson);\n\n for (const [key, value] of Object.entries(resolvedPackageJson ?? {})) {\n if (dependencySectionKeys.has(key)) {\n continue;\n }\n\n mergedPackageJson[key] = value;\n }\n\n return mergedPackageJson;\n};\n\nconst workspaceProtocolPrefix = 'workspace:';\n\ninterface WorkspaceProtocolDependencyReference {\n readonly targetPackageName: string;\n readonly alias: boolean;\n}\n\nconst inferVersionPrefix = (dependencySpec: string): string => {\n if (dependencySpec.startsWith('^')) {\n return '^';\n }\n if (dependencySpec.startsWith('~')) {\n return '~';\n }\n return '';\n};\n\nconst looksLikeWorkspaceProtocolAlias = (rawSpecifier: string): boolean => {\n if (!rawSpecifier) {\n return false;\n }\n if (\n rawSpecifier === '*' ||\n rawSpecifier === '^' ||\n rawSpecifier === '~' ||\n rawSpecifier.startsWith('^') ||\n rawSpecifier.startsWith('~') ||\n /^[0-9]/.test(rawSpecifier)\n ) {\n return false;\n }\n return true;\n};\n\nconst parseWorkspaceProtocolDependencyReference = (\n dependencyName: string,\n workspaceProtocolSpecifier: string\n): WorkspaceProtocolDependencyReference | undefined => {\n if (!workspaceProtocolSpecifier.startsWith(workspaceProtocolPrefix)) {\n return undefined;\n }\n\n const rawSpecifier = workspaceProtocolSpecifier\n .slice(workspaceProtocolPrefix.length)\n .trim();\n\n if (!looksLikeWorkspaceProtocolAlias(rawSpecifier)) {\n return {\n targetPackageName: dependencyName,\n alias: false,\n };\n }\n\n if (rawSpecifier.startsWith('@')) {\n const secondAt = rawSpecifier.indexOf('@', 1);\n const targetPackageName =\n secondAt >= 0 ? rawSpecifier.slice(0, secondAt) : rawSpecifier;\n return {\n targetPackageName,\n alias: targetPackageName !== dependencyName,\n };\n }\n\n const atIndex = rawSpecifier.indexOf('@');\n const targetPackageName =\n atIndex >= 0 ? rawSpecifier.slice(0, atIndex) : rawSpecifier;\n return {\n targetPackageName,\n alias: targetPackageName !== dependencyName,\n };\n};\n\nconst formatResolvedWorkspaceDependency = (\n packedDependencySpecifier: string,\n reference: WorkspaceProtocolDependencyReference,\n sibling: WorkspaceSibling\n): string => {\n const aliasPrefix = `npm:${reference.targetPackageName}@`;\n if (packedDependencySpecifier.startsWith(aliasPrefix)) {\n const packedVersionSpecifier = packedDependencySpecifier.slice(\n aliasPrefix.length\n );\n return `${aliasPrefix}${inferVersionPrefix(packedVersionSpecifier)}${sibling.version}`;\n }\n\n return `${inferVersionPrefix(packedDependencySpecifier)}${sibling.version}`;\n};\n\nconst replaceWorkspaceProtocolDependencies = (\n packageJson: any,\n resolvedPackageJson: any,\n siblings: Map<string, WorkspaceSibling>\n): any => {\n const modifiedPackageJson = clonePackageJson(packageJson);\n\n for (const sectionKey of dependencySectionKeys) {\n const modifiedSection = modifiedPackageJson[sectionKey];\n const resolvedSection = resolvedPackageJson?.[sectionKey];\n\n if (\n !modifiedSection ||\n typeof modifiedSection !== 'object' ||\n !resolvedSection ||\n typeof resolvedSection !== 'object'\n ) {\n continue;\n }\n\n for (const [dependencyName, dependencySpecifier] of Object.entries(\n resolvedSection\n )) {\n if (typeof dependencySpecifier !== 'string') {\n continue;\n }\n\n const reference = parseWorkspaceProtocolDependencyReference(\n dependencyName,\n dependencySpecifier\n );\n if (!reference) {\n continue;\n }\n\n const sibling = siblings.get(reference.targetPackageName);\n const packedDependencySpecifier = modifiedSection[dependencyName];\n\n if (!sibling || typeof packedDependencySpecifier !== 'string') {\n continue;\n }\n\n modifiedSection[dependencyName] = formatResolvedWorkspaceDependency(\n packedDependencySpecifier,\n reference,\n sibling\n );\n }\n }\n\n return modifiedPackageJson;\n};\n\nconst getFilesArray = (packageJson: any): string[] | undefined => {\n if (!packageJson || !Array.isArray(packageJson.files)) {\n return undefined;\n }\n const entries = packageJson.files.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n return entries.length > 0 ? entries : undefined;\n};\n\nconst isGlobPattern = (pattern: string): boolean => /[*?[\\]{}()]/.test(pattern);\n\nconst normalizeFilesPattern = (\n pattern: string,\n cwd: string\n): string | undefined => {\n const trimmed = pattern.trim();\n if (!trimmed) {\n return undefined;\n }\n const isNegated = trimmed.startsWith('!');\n const raw = isNegated ? trimmed.slice(1) : trimmed;\n if (!raw) {\n return undefined;\n }\n if (isGlobPattern(raw)) {\n return trimmed;\n }\n const fullPath = join(cwd, raw);\n if (existsSync(fullPath) && statSync(fullPath).isDirectory()) {\n const dirPattern = `${raw.replace(/\\/+$/, '')}/**`;\n return isNegated ? `!${dirPattern}` : dirPattern;\n }\n return trimmed;\n};\n\nconst isSafeRelativePath = (value: string): boolean => {\n if (isAbsolute(value)) {\n return false;\n }\n const segments = value.split(/[\\\\/]+/);\n if (segments.some((segment) => segment === '..')) {\n return false;\n }\n return true;\n};\n\nconst expandFilesPatterns = async (\n patterns: string[],\n cwd: string\n): Promise<Set<string>> => {\n const includePatterns: string[] = [];\n const excludePatterns: string[] = [];\n\n for (const pattern of patterns) {\n const normalized = normalizeFilesPattern(pattern, cwd);\n if (!normalized) {\n continue;\n }\n if (normalized.startsWith('!')) {\n excludePatterns.push(normalized.slice(1));\n } else {\n includePatterns.push(normalized);\n }\n }\n\n const result = new Set<string>();\n for (const pattern of includePatterns) {\n const matches = await glob(pattern, { cwd, nodir: true });\n for (const match of matches) {\n if (isSafeRelativePath(match)) {\n result.add(match);\n }\n }\n }\n\n for (const pattern of excludePatterns) {\n const matches = await glob(pattern, { cwd, nodir: true });\n for (const match of matches) {\n result.delete(match);\n }\n }\n\n return result;\n};\n\nconst mergeFilesPatterns = (\n parentFiles: string[] | undefined,\n childFiles: string[] | undefined\n): string[] | undefined => {\n const merged: string[] = [];\n if (parentFiles?.length) {\n merged.push(...parentFiles);\n }\n if (childFiles?.length) {\n merged.push(...childFiles);\n }\n return merged.length > 0 ? merged : undefined;\n};\n\nexport interface WorkspaceFilesMergeResult {\n readonly workspaceRoot: string;\n readonly parentFiles?: string[];\n readonly childFiles?: string[];\n readonly mergedFiles?: string[];\n}\n\nexport const resolveWorkspaceFilesMerge = async (\n targetDir: string,\n logger: Logger\n): Promise<WorkspaceFilesMergeResult | undefined> => {\n const workspaceRoot = await findWorkspaceRoot(targetDir, logger);\n if (!workspaceRoot) {\n return undefined;\n }\n const rootPackagePath = join(workspaceRoot, 'package.json');\n const targetPackagePath = join(targetDir, 'package.json');\n if (resolve(rootPackagePath) === resolve(targetPackagePath)) {\n return undefined;\n }\n\n const [rootPackageJson, childPackageJson] = await Promise.all([\n readPackageJsonFile(rootPackagePath),\n readPackageJsonFile(targetPackagePath),\n ]);\n const parentFiles = getFilesArray(rootPackageJson);\n const childFiles = getFilesArray(childPackageJson);\n const mergedFiles = mergeFilesPatterns(parentFiles, childFiles);\n\n if (!parentFiles && !childFiles) {\n return undefined;\n }\n\n return {\n workspaceRoot,\n parentFiles,\n childFiles,\n mergedFiles,\n };\n};\n\nconst readPackResultPath = (\n packageManager: PackageManagerName,\n packDestDir: string,\n stdout: string\n): string => {\n if (packageManager === 'pnpm') {\n const parsed = JSON5.parse(stdout);\n const packResult = Array.isArray(parsed) ? parsed[0] : parsed;\n if (!packResult?.filename || typeof packResult.filename !== 'string') {\n throw new Error('pnpm pack did not output a valid filename');\n }\n\n return isAbsolute(packResult.filename)\n ? packResult.filename\n : join(packDestDir, packResult.filename);\n }\n\n const lines = stdout.trim().split('\\n');\n const filename =\n lines.find((line) => line.trim().endsWith('.tgz')) ||\n lines[lines.length - 1];\n if (!filename || !filename.trim().endsWith('.tgz')) {\n throw new Error('npm pack did not output a valid .tgz filename');\n }\n\n return join(packDestDir, filename.trim());\n};\n\n/**\n * Execute package manager pack and return the generated tarball path\n * @param packageManager - Package manager to use\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 runPack = async (\n packageManager: PackageManagerName,\n targetDir: string,\n packDestDir: string\n): Promise<string> => {\n const packArgs =\n packageManager === 'pnpm'\n ? ['pack', '--json', '--pack-destination', packDestDir]\n : ['pack', '--pack-destination', packDestDir];\n\n return new Promise((res, rej) => {\n const packProcess = spawn(packageManager, packArgs, {\n cwd: targetDir,\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n let stdout = '';\n let stderr = '';\n\n packProcess.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n packProcess.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n packProcess.on('close', (code) => {\n if (code === 0) {\n try {\n res(readPackResultPath(packageManager, packDestDir, stdout.trim()));\n } catch (error: any) {\n rej(error);\n }\n } else {\n const errorMessage = `${packageManager} 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 packProcess.on('error', (error) => {\n rej(\n new Error(`Failed to spawn ${packageManager} pack: ${error.message}`)\n );\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 * @param packageManager - Package manager backend used for the initial pack\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 mergeFiles: boolean = true,\n packageManager: PackageManagerName = 'npm'\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 if (!packageJsonReadmeDir) {\n throw new Error(\n `README replacement source directory is unknown: ${packageJsonReadme}`\n );\n }\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 const requiresWorkspaceSiblings =\n replacePeerDepsWildcards || packageManager === 'pnpm';\n const workspaceRoot = requiresWorkspaceSiblings\n ? await findWorkspaceRoot(targetDir, logger)\n : undefined;\n const workspaceSiblings = workspaceRoot\n ? await collectWorkspaceSiblings(\n workspaceRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n )\n : undefined;\n\n const filesMergeEnabled = mergeFiles && inheritableFields.has('files');\n const workspaceFilesMerge = filesMergeEnabled\n ? await resolveWorkspaceFilesMerge(targetDir, logger)\n : undefined;\n if (filesMergeEnabled && workspaceFilesMerge?.mergedFiles) {\n resolvedPackageJson.files = workspaceFilesMerge.mergedFiles;\n }\n\n // Create temporary directory for package manager 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 package manager pack to generate initial tarball\n const packedTarballPath = await runPack(\n packageManager,\n targetDir,\n baseTempDir\n );\n\n // Step 2: Extract the package manager generated tarball into staging directory\n const stagingDir = join(baseTempDir, 'staging');\n await mkdir(stagingDir, { recursive: true });\n\n const stream = createReadStream(packedTarballPath);\n await extractTo(createTarExtractor(stream, 'gzip'), stagingDir);\n\n // Step 3: Process extracted files (files merge/package.json/README replacement)\n const packageRoot = join(stagingDir, 'package');\n\n if (filesMergeEnabled && workspaceFilesMerge?.parentFiles?.length) {\n const parentFiles = await expandFilesPatterns(\n workspaceFilesMerge.parentFiles,\n workspaceFilesMerge.workspaceRoot\n );\n for (const parentFile of parentFiles) {\n const destPath = join(packageRoot, parentFile);\n if (existsSync(destPath)) {\n continue;\n }\n await mkdir(dirname(destPath), { recursive: true });\n await copyFile(\n join(workspaceFilesMerge.workspaceRoot, parentFile),\n destPath\n );\n }\n }\n\n // Replace package.json with our processed version\n const packageJsonPath = join(packageRoot, 'package.json');\n let finalPackageJson = resolvedPackageJson;\n if (existsSync(packageJsonPath)) {\n const packedPackageJson = await readPackageJsonFile(packageJsonPath);\n finalPackageJson = mergeResolvedPackageJson(\n packedPackageJson,\n resolvedPackageJson\n );\n if (packageManager === 'pnpm' && workspaceSiblings?.size) {\n finalPackageJson = replaceWorkspaceProtocolDependencies(\n finalPackageJson,\n resolvedPackageJson,\n workspaceSiblings\n );\n }\n if (workspaceSiblings && workspaceSiblings.size > 0) {\n finalPackageJson = replacePeerDependenciesWildcards(\n finalPackageJson,\n workspaceSiblings,\n peerDepsVersionPrefix\n );\n }\n if (packageJsonReadme) {\n delete finalPackageJson.readme;\n }\n\n await writeFile(\n packageJsonPath,\n JSON.stringify(finalPackageJson, null, 2)\n );\n }\n\n // Replace README.md\n if (readmeReplacementCandidatePath) {\n const readmeDestPath = join(packageRoot, 'README.md');\n await copyFile(readmeReplacementCandidatePath, readmeDestPath);\n }\n\n // Step 4: Re-create tarball with modified files\n const outputFileName = `${finalPackageJson?.name?.replace('/', '-') ?? 'package'}-${finalPackageJson?.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: finalPackageJson,\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 ignoreNotExist: boolean = false\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 ignoreNotExist\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 // Single hyphen option is flag unless configured with an argument\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n if (optionName.length == 1) {\n const argOptions = result.command\n ? argOptionMap.get(result.command)\n : undefined;\n if (argOptions?.has(optionName)) {\n i++;\n result.options[optionName] = args[i];\n } else {\n result.options[optionName] = true;\n }\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 { existsSync } from 'fs';\nimport { mkdir, readFile, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { Logger } from './internal';\nimport { PackageMetadata } from './types';\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 * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nexport const generateMetadataFileContent = (\n metadata: PackageMetadata,\n outputKeys: readonly string[]\n): string => {\n const lines: string[] = [];\n\n lines.push('// @ts-nocheck');\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n\n lines.push('');\n\n return lines.join('\\n');\n};\n\nexport const writeFileIfChanged = async (\n filePath: string,\n content: string,\n description: string,\n logger: Logger\n): Promise<boolean> => {\n try {\n // Check if file exists and compare content\n let shouldWrite = !existsSync(filePath);\n if (!shouldWrite) {\n try {\n const existingContent = await readFile(filePath, 'utf-8');\n shouldWrite = existingContent !== content;\n } catch {\n // File doesn't exist or couldn't read, we should write it\n shouldWrite = true;\n }\n }\n\n if (shouldWrite) {\n // Ensure directory exists\n await mkdir(dirname(filePath), { recursive: true });\n // Write file only if content has changed\n await writeFile(filePath, content);\n return true;\n } else {\n // File content is the same, no need to write\n return false;\n }\n } catch (error) {\n logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);\n return false;\n }\n};\n\nexport const ensureMetadataGitignore = async (\n metadataSourcePath: string,\n logger: Logger\n): Promise<boolean> => {\n const metadataDirectory = dirname(metadataSourcePath);\n const gitignorePath = join(metadataDirectory, '.gitignore');\n\n if (existsSync(gitignorePath)) {\n return false;\n }\n\n try {\n await mkdir(metadataDirectory, { recursive: true });\n const metadataFileName = basename(metadataSourcePath);\n const gitignoreContent = `# Auto-generated by screw-up plugin\\n${metadataFileName}\\n`;\n await writeFile(gitignorePath, gitignoreContent);\n return true;\n } catch (error) {\n logger.warn(\n `Failed to write .gitignore for metadata source: ${gitignorePath}: ${error}`\n );\n return false;\n }\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 { dirname, join, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { mkdtemp, readFile, rm, stat, writeFile } from 'fs/promises';\nimport { spawn } from 'child_process';\nimport { tmpdir } from 'os';\nimport {\n packAssets,\n parseArgs,\n ParsedArgs,\n getComputedPackageJsonObject,\n resolveWorkspaceFilesMerge,\n PackageManagerName,\n} from './cli-internal';\nimport { getFetchGitMetadata } from './analyzer';\nimport { Logger, resolvePackageMetadata } from './internal';\nimport {\n ensureMetadataGitignore,\n generateMetadataFileContent,\n writeFileIfChanged,\n} from './metadata-file';\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 'files',\n]);\n\nconst defaultOutputMetadataKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\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\nconst parseOutputMetadataKeys = (\n outputMetadataKeysOption: string | boolean | undefined\n): readonly string[] => {\n if (typeof outputMetadataKeysOption !== 'string') {\n return defaultOutputMetadataKeys;\n }\n if (!outputMetadataKeysOption.trim()) {\n return [];\n }\n return outputMetadataKeysOption\n .split(',')\n .map((key) => key.trim())\n .filter((key) => key.length > 0);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst readInputText = async (inputPath?: string): Promise<string> => {\n if (inputPath) {\n const resolvedPath = resolve(inputPath);\n return await readFile(resolvedPath, 'utf-8');\n }\n\n return await new Promise<string>((resolvePromise, rejectPromise) => {\n let data = '';\n process.stdin.setEncoding('utf-8');\n process.stdin.on('data', (chunk) => {\n data += chunk;\n });\n process.stdin.on('end', () => resolvePromise(data));\n process.stdin.on('error', (err) => rejectPromise(err));\n });\n};\n\nconst escapeRegExp = (value: string): string =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst getValueByPath = (source: any, path: string): any => {\n return path.split('.').reduce<any>((current, key) => {\n if (current === undefined || current === null) {\n return undefined;\n }\n if (typeof current !== 'object' && !Array.isArray(current)) {\n return undefined;\n }\n return (current as any)[key];\n }, source);\n};\n\nconst stringifyValue = (value: any): string | undefined => {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'object') {\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n }\n return String(value);\n};\n\nconst replacePlaceholders = (\n text: string,\n values: any,\n openBracket: string,\n closeBracket: string\n): string => {\n const pattern = new RegExp(\n `${escapeRegExp(openBracket)}(.*?)${escapeRegExp(closeBracket)}`,\n 'g'\n );\n return text.replace(pattern, (match, key) => {\n const trimmedKey = String(key).trim();\n const resolvedValue = stringifyValue(getValueByPath(values, trimmedKey));\n return resolvedValue !== undefined ? resolvedValue : match;\n });\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showFormatHelp = () => {\n console.info(`Usage: screw-up format [options] [output]\n\nFormat input text by replacing placeholders with package metadata\n\nArguments:\n output Optional output file path (default: stdout)\n\nOptions:\n -i, --input <path> Input template file (default: stdin)\n -b, --bracket <open,close> Placeholder brackets (default: {,})\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 -f, --force Allow formatting even if package.json does not exist\n -h, --help Show help for format command\n`);\n};\n\nconst parseBracketOption = (\n bracketOption: string | undefined\n): { openBracket: string; closeBracket: string } | undefined => {\n if (!bracketOption) {\n return { openBracket: '{', closeBracket: '}' };\n }\n\n const delimiterIndex = bracketOption.indexOf(',');\n if (delimiterIndex === -1) {\n return undefined;\n }\n\n const openBracket = bracketOption.slice(0, delimiterIndex);\n const closeBracket = bracketOption.slice(delimiterIndex + 1);\n\n if (!openBracket || !closeBracket) {\n return undefined;\n }\n\n return { openBracket, closeBracket };\n};\n\nconst formatCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showFormatHelp();\n return 1;\n }\n\n const outputPath = args.positional[0];\n const inputPathOption =\n (args.options['input'] as string) ?? (args.options['i'] as string);\n const bracketOption =\n (args.options['bracket'] as string) ?? (args.options['b'] as string);\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 const ignorePackageJsonNotExist =\n args.options['force'] || args.options['f'] ? true : false;\n\n const bracket = parseBracketOption(\n typeof bracketOption === 'string' ? bracketOption : undefined\n );\n if (!bracket) {\n logger.error(\n 'format: Invalid bracket option, expected \"open,close\" pattern.'\n );\n return 1;\n }\n\n const { openBracket, closeBracket } = bracket;\n\n const targetDir = resolve(process.cwd());\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n // The format 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 ignorePackageJsonNotExist\n );\n\n if (!computedPackageJson) {\n _logger.error(`format: Unable to read package.json from: ${targetDir}`);\n return 1;\n }\n\n const inputText = await readInputText(\n typeof inputPathOption === 'string' ? inputPathOption : undefined\n );\n\n const formattedText = replacePlaceholders(\n inputText,\n computedPackageJson,\n openBracket,\n closeBracket\n );\n\n if (outputPath) {\n const resolvedOutputPath = resolve(outputPath);\n await writeFile(resolvedOutputPath, formattedText);\n }\n\n process.stdout.write(formattedText);\n } catch (error) {\n _logger.error(`format: Failed to format text: ${error}`);\n return 1;\n }\n\n return 0;\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 --no-merge-files Do not merge files from parent package.json\n -f, --force Allow dumping even if package.json does not exist\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 const mergeFiles = !args.options['no-merge-files'];\n const ignorePackageJsonNotExist =\n args.options['force'] || args.options['f'] ? true : false;\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 ignorePackageJsonNotExist\n );\n\n if (computedPackageJson) {\n if (\n mergeFiles &&\n inheritableFields.has('files') &&\n existsSync(join(targetDir, 'package.json'))\n ) {\n const workspaceFilesMerge = await resolveWorkspaceFilesMerge(\n targetDir,\n _logger\n );\n if (workspaceFilesMerge?.mergedFiles) {\n computedPackageJson.files = workspaceFilesMerge.mergedFiles;\n }\n }\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 showMetadataHelp = () => {\n console.info(`Usage: screw-up metadata [options] [directory]\n\nGenerate TypeScript metadata file from package metadata\n\nArguments:\n directory Directory to resolve metadata from (default: current directory)\n\nOptions:\n --output-metadata-file-path <path> Output path for metadata file (default: src/generated/packageMetadata.ts)\n --output-metadata-keys <list> Comma-separated list of metadata keys to include\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 metadata command\n`);\n};\n\nconst metadataCommand = async (args: ParsedArgs, logger: Logger) => {\n if (args.options.help || args.options.h) {\n showMetadataHelp();\n return 1;\n }\n\n const directory = args.positional[0];\n const outputMetadataFilePathOption =\n args.options['output-metadata-file-path'];\n const outputMetadataKeysOption = args.options['output-metadata-keys'];\n const alwaysOverrideVersionFromGit = !args.options['no-git-version-override'];\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n const outputMetadataFilePath =\n typeof outputMetadataFilePathOption === 'string' &&\n outputMetadataFilePathOption.trim()\n ? outputMetadataFilePathOption\n : 'src/generated/packageMetadata.ts';\n const outputMetadataKeys = parseOutputMetadataKeys(outputMetadataKeysOption);\n\n const targetDir = resolve(directory ?? process.cwd());\n\n try {\n const fetchGitMetadata = getFetchGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n\n const result = await resolvePackageMetadata(\n targetDir,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n logger\n );\n\n const metadataSourceContent = generateMetadataFileContent(\n result.metadata,\n outputMetadataKeys\n );\n const metadataSourcePath = join(targetDir, outputMetadataFilePath);\n const metadataWritten = await writeFileIfChanged(\n metadataSourcePath,\n metadataSourceContent,\n 'metadata source file',\n logger\n );\n\n if (existsSync(metadataSourcePath)) {\n const gitignoreWritten = await ensureMetadataGitignore(\n metadataSourcePath,\n logger\n );\n if (gitignoreWritten) {\n logger.info(\n `metadata: .gitignore is generated: ${join(\n dirname(outputMetadataFilePath),\n '.gitignore'\n )}`\n );\n }\n }\n\n if (metadataWritten) {\n logger.info(\n `metadata: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n } else if (existsSync(metadataSourcePath)) {\n logger.info(\n `metadata: Metadata source file is unchanged: ${outputMetadataFilePath}`\n );\n } else {\n logger.error(\n `metadata: Failed to write metadata file: ${outputMetadataFilePath}`\n );\n return 1;\n }\n } catch (error) {\n logger.error(`metadata: Failed to generate metadata file: ${error}`);\n return 1;\n }\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 --use-pnpm Use pnpm pack and preserve workspace protocol resolution\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-merge-files Do not merge files from parent package.json\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 mergeFiles = !args.options['no-merge-files'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const packageManager: PackageManagerName = args.options['use-pnpm']\n ? 'pnpm'\n : 'npm';\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 mergeFiles,\n packageManager\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 --use-pnpm Use pnpm pack before publish; final publish still targets npm-compatible registries\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, signal) => {\n if (code === 0) {\n if (verbose) {\n logger.info(`publish: Successfully published ${tarballPath}`);\n }\n resolve(0);\n return;\n }\n\n if (signal) {\n logger.error(\n `publish: npm publish terminated by signal ${signal}: ${tarballPath}`\n );\n resolve(1);\n return;\n }\n\n const exitCode = code ?? 1;\n logger.error(\n `publish: npm publish failed with exit code ${exitCode}: ${tarballPath}`\n );\n resolve(exitCode);\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 mergeFiles = !args.options['no-merge-files'];\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix =\n (args.options['peer-deps-prefix'] as string) ?? '^';\n const packageManager: PackageManagerName = args.options['use-pnpm']\n ? 'pnpm'\n : 'npm';\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 let pathSkipped = false;\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 === '--use-pnpm' ||\n arg === '-h' ||\n arg === '--no-wds' ||\n arg === '--no-git-version-override' ||\n arg === '--no-merge-files' ||\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 if (!pathSkipped && path && arg === path) {\n pathSkipped = true;\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 mergeFiles,\n packageManager\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 mergeFiles,\n packageManager\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 format [output] Format text by replacing metadata placeholders\n dump [directory] Dump computed package.json as JSON\n metadata [directory] Generate TypeScript metadata file\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 format output.txt # Format stdin template and write to file\n screw-up dump # Dump computed package.json as JSON\n screw-up metadata # Generate metadata file\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 ['metadata', new Set(['output-metadata-file-path', 'output-metadata-keys'])],\n [\n 'pack',\n new Set([\n 'pack-destination',\n 'readme',\n 'inheritable-fields',\n 'peer-deps-prefix',\n ]),\n ],\n ['format', new Set(['input', 'i', 'bracket', 'b', 'inheritable-fields'])],\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 'format':\n return await formatCommand(parsedArgs, logger);\n case 'dump':\n return await dumpCommand(parsedArgs, logger);\n case 'metadata':\n return await metadataCommand(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// 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 } 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"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|