gitverse-release 3.6.0 → 3.7.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.js.map CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/config.ts", "../../sdk/dist/errors.js", "../../sdk/dist/client.js", "../../sdk/dist/api/issues.js", "../../sdk/dist/api/emails.js", "../../sdk/dist/api/repositories.js", "../../sdk/dist/api/teams.js", "../../sdk/dist/api/releases.js", "../../sdk/dist/api/pulls.js", "../../sdk/dist/api/organizations.js", "../../sdk/dist/api/actions.js", "../../sdk/dist/api/stars.js", "../../sdk/dist/api/users.js", "../../sdk/dist/api/pages.js", "../../sdk/dist/index.js", "../src/gitverse.ts", "../src/utils/changelog.ts", "../src/utils/parser.ts", "../src/utils/git.ts", "../src/utils/retry.ts", "../src/utils/version.ts", "../src/binaries.ts", "../src/utils/binary-package-generator.ts", "../src/utils/binary-platforms.ts", "../src/utils/binary-publisher.ts", "../src/utils/binary-wrapper-generator.ts"],
3
+ "sources": ["../src/index.ts", "../src/config.ts", "../../sdk/dist/errors.js", "../../sdk/dist/client.js", "../../sdk/dist/api/issues.js", "../../sdk/dist/api/emails.js", "../../sdk/dist/api/repositories.js", "../../sdk/dist/api/teams.js", "../../sdk/dist/api/releases.js", "../../sdk/dist/api/pulls.js", "../../sdk/dist/api/organizations.js", "../../sdk/dist/api/actions.js", "../../sdk/dist/api/stars.js", "../../sdk/dist/api/users.js", "../../sdk/dist/api/pages.js", "../../sdk/dist/index.js", "../src/gitverse.ts", "../src/utils/changelog.ts", "../src/utils/parser.ts", "../src/utils/git.ts", "../src/utils/retry.ts", "../src/utils/version.ts", "../src/binaries.ts", "../src/utils/binary-package-generator.ts", "../src/utils/binary-archive-extractor.ts", "../../../node_modules/.bun/@isaacs+fs-minipass@4.0.1/node_modules/@isaacs/fs-minipass/dist/esm/index.js", "../../../node_modules/.bun/minipass@7.1.2/node_modules/minipass/dist/esm/index.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/create.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/list.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/options.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/make-command.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/parse.js", "../../../node_modules/.bun/minizlib@3.1.0/node_modules/minizlib/dist/esm/index.js", "../../../node_modules/.bun/minizlib@3.1.0/node_modules/minizlib/dist/esm/constants.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/header.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/large-numbers.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/types.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/pax.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/normalize-windows-path.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/read-entry.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/warn-method.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/strip-trailing-slashes.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/pack.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/write-entry.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/mode-fix.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/strip-absolute-path.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/winchars.js", "../../../node_modules/.bun/yallist@5.0.0/node_modules/yallist/dist/esm/index.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/extract.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/unpack.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/get-write-flag.js", "../../../node_modules/.bun/chownr@3.0.0/node_modules/chownr/dist/esm/index.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/mkdir.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/cwd-error.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/symlink-error.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/path-reservations.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/normalize-unicode.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/replace.js", "../../../node_modules/.bun/tar@7.5.7/node_modules/tar/dist/esm/update.js", "../src/utils/binary-platforms.ts", "../src/utils/binary-publisher.ts", "../src/utils/binary-wrapper-generator.ts"],
4
4
  "sourcesContent": [
5
5
  "import { resolve } from \"node:path\";\nimport { loadConfig, validateConfig } from \"./config\";\nimport { createGitVerseClient } from \"./gitverse\";\nimport type {\n CliOptions,\n ConventionalCommit,\n GitRepoInfo,\n PackageConfig,\n ReleaseConfig,\n ReleaseResult,\n VersionBump,\n} from \"./types\";\nimport { generateChangelog, generateReleaseNotes, updateChangelogFile } from \"./utils/changelog\";\nimport {\n createCommit,\n createTag,\n getCommitsSinceTag,\n getCurrentVersion,\n getPackageInfo,\n getRepoInfo,\n isWorkingTreeClean,\n pushChanges,\n runBeforeCommitHook,\n tagExists,\n updatePackageVersion,\n} from \"./utils/git\";\nimport { filterCommitsForPackage, parseCommits } from \"./utils/parser\";\nimport { createRetryFunction } from \"./utils/retry\";\nimport { calculateVersionBump } from \"./utils/version\";\n\n/**\n * Печатает информацию о dry run\n */\nfunction printDryRunInfo(\n pkg: PackageConfig,\n currentVersion: string,\n versionBump: VersionBump,\n tag: string,\n commits: ConventionalCommit[],\n changelogEntry: string,\n): void {\n console.log(\"\\n🔍 DRY RUN MODE - No changes will be made\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${versionBump.newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`💬 Commits: ${commits.length}`);\n console.log(\"\\n📝 CHANGELOG:\\n\");\n console.log(changelogEntry);\n}\n\n/**\n * Печатает информацию об успешном релизе\n */\nfunction printSuccessInfo(\n pkg: PackageConfig,\n currentVersion: string,\n newVersion: string,\n tag: string,\n releaseUrl?: string,\n): void {\n console.log(\"\\n✅ Release created successfully!\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n if (releaseUrl) {\n console.log(`🌐 Release: ${releaseUrl}`);\n }\n console.log(\"\");\n}\n\n/**\n * Обновляет файлы пакета и выполняет beforeCommit hook\n */\nasync function updatePackageFiles(pkg: PackageConfig, newVersion: string, changelogEntry: string): Promise<string> {\n await updatePackageVersion(pkg.path, newVersion);\n const changelogPath = resolve(pkg.path, pkg.changelog);\n await updateChangelogFile(changelogPath, changelogEntry);\n\n return changelogPath;\n}\n\n/**\n * Собирает и валидирует коммиты\n */\nasync function collectCommits(\n pkg: PackageConfig,\n options: CliOptions,\n warnings: string[],\n isMonorepo: boolean,\n): Promise<ConventionalCommit[]> {\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n\n if (rawCommits.length === 0 && !options.version) {\n throw new Error(`No commits found since last release for ${pkg.packageName}`);\n }\n\n const commits = parseCommits(rawCommits);\n const filteredCommits = filterCommitsForPackage(commits, pkg.name, isMonorepo);\n\n if (filteredCommits.length === 0 && !options.version) {\n warnings.push(\"No conventional commits found, but will proceed with patch bump\");\n }\n\n return filteredCommits;\n}\n\n/**\n * Вычисляет prerelease тег\n */\nfunction resolvePrereleaseTag(options: CliOptions, config: Required<ReleaseConfig>): string | undefined {\n if (typeof options.prerelease === \"string\") {\n return options.prerelease;\n }\n if (options.prerelease) {\n return config.versioning.prereleasePrefix;\n }\n return;\n}\n\n/**\n * Создает релиз на GitVerse с поддержкой idempotency и retry\n */\nasync function createGitVerseRelease(\n options: CliOptions,\n repoInfo: GitRepoInfo,\n commits: ConventionalCommit[],\n config: Required<ReleaseConfig>,\n pkg: PackageConfig,\n versionBump: VersionBump,\n tag: string,\n retryFn: ReturnType<typeof createRetryFunction>,\n): Promise<string | undefined> {\n // Проверяем, нужно ли создавать релиз\n if (options.noRelease || !config.gitverse.enabled) {\n return;\n }\n\n const gitverseClient = createGitVerseClient(repoInfo, retryFn);\n\n // Проверяем существование релиза (идемпотентность)\n if (config.gitverse.checkExisting) {\n const exists = await gitverseClient.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists, skipping creation\\n`);\n return `${repoInfo.url}/releases/tag/${tag}`;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз (с retry)\n return await gitverseClient.createRelease(tag, `${pkg.packageName} v${versionBump.newVersion}`, releaseNotes, {\n prerelease: !!options.prerelease,\n });\n}\n\n/**\n * Выполняет git операции\n */\nasync function performGitOperations(\n config: Required<ReleaseConfig>,\n options: CliOptions,\n pkg: PackageConfig,\n newVersion: string,\n tag: string,\n changelogPath: string,\n): Promise<void> {\n if (config.git.commitChanges && !options.noCommit) {\n // Запускаем beforeCommit хук перед коммитом для форматирования измененных файлов\n if (config.git.beforeCommit) {\n const hookSuccess = await runBeforeCommitHook(config.git.beforeCommit);\n if (!hookSuccess) {\n console.warn(\"⚠️ beforeCommit hook failed, proceeding with unformatted files\");\n }\n }\n\n const commitMessage = config.git.commitMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createCommit(commitMessage, [resolve(pkg.path, \"package.json\"), changelogPath]);\n }\n\n if (!options.noTag) {\n const tagMessage = config.git.tagMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createTag(tag, tagMessage);\n }\n\n if (config.git.push && !options.noPush) {\n await pushChanges(options.noTag ? undefined : tag);\n }\n}\n\n/**\n * Основная функция для создания релиза\n */\nexport async function release(packageName?: string, options: CliOptions = {}): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем какой пакет релизить\n const pkg = await resolvePackage(config, packageName);\n\n result.packageName = pkg.packageName;\n\n // Проверяем чистоту рабочей директории\n if (!(options.dryRun || (await isWorkingTreeClean()))) {\n throw new Error(\"Working tree is not clean. Please commit or stash your changes.\");\n }\n\n // Получаем текущую версию\n const currentVersion = await getCurrentVersion(pkg.path);\n result.oldVersion = currentVersion;\n\n // Собираем коммиты\n const commits = await collectCommits(pkg, options, result.warnings, config.monorepo.enabled);\n\n // Вычисляем новую версию\n const prereleaseTag = resolvePrereleaseTag(options, config);\n const versionBump = calculateVersionBump(\n currentVersion,\n commits,\n options.version,\n prereleaseTag,\n config.versioning.preMajorMode,\n );\n\n result.newVersion = versionBump.newVersion;\n\n // Проверяем что тег не существует\n const tag = `${pkg.tagPrefix}${versionBump.newVersion}`;\n result.tag = tag;\n\n if (await tagExists(tag)) {\n throw new Error(`Tag ${tag} already exists`);\n }\n\n // Генерируем CHANGELOG\n const changelogEntry = generateChangelog(\n {\n commits,\n date: new Date(),\n repoUrl: repoInfo.url,\n version: versionBump.newVersion,\n },\n config.changelog,\n pkg.name,\n );\n\n if (options.dryRun) {\n printDryRunInfo(pkg, currentVersion, versionBump, tag, commits, changelogEntry);\n result.success = true;\n return result;\n }\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Обновляем файлы пакета\n const changelogPath = await updatePackageFiles(pkg, versionBump.newVersion, changelogEntry);\n\n // Выполняем git операции\n await performGitOperations(config, options, pkg, versionBump.newVersion, tag, changelogPath);\n\n // Создаем GitVerse Release\n try {\n result.releaseUrl = await createGitVerseRelease(\n options,\n repoInfo,\n commits,\n config,\n pkg,\n versionBump,\n tag,\n retryFn,\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n if (config.gitverse.failOnError) {\n // Fail the entire release\n throw new Error(`GitVerse release creation failed: ${errorMessage}`);\n }\n\n // Log as warning\n result.warnings.push(`Failed to create GitVerse release: ${errorMessage}`);\n console.warn(`\\n⚠️ Warning: ${errorMessage}\\n`);\n }\n\n result.success = true;\n\n // Выводим итоги\n printSuccessInfo(pkg, currentVersion, versionBump.newVersion, tag, result.releaseUrl);\n\n return result;\n } catch (error) {\n result.success = false;\n result.errors.push(error instanceof Error ? error.message : String(error));\n\n console.error(\"\\n❌ Release failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\n/**\n * Определяет какой пакет релизить\n */\nasync function resolvePackage(config: Required<ReleaseConfig>, packageName?: string): Promise<PackageConfig> {\n if (!config.monorepo.enabled) {\n // Single package mode - читаем информацию из package.json\n const pkgInfo = await getPackageInfo(\".\");\n\n return {\n changelog: \"CHANGELOG.md\",\n name: \"main\",\n packageName: pkgInfo.name,\n path: \".\",\n tagPrefix: config.versioning.tagPrefix,\n };\n }\n\n // Monorepo mode\n if (!packageName) {\n throw new Error(\"Package name is required in monorepo mode. Use --package <name>\");\n }\n\n const pkg = config.monorepo.packages.find((p) => p.name === packageName);\n\n if (!pkg) {\n throw new Error(\n `Package \"${packageName}\" not found in config. Available packages: ${config.monorepo.packages.map((p) => p.name).join(\", \")}`,\n );\n }\n\n return pkg;\n}\n\n/**\n * Создает только GitVerse Release для существующего тега (без commit/push)\n * Полезно для recovery после failed release в CI/CD\n */\nexport async function createReleaseOnly(\n tag: string,\n packageName?: string,\n configPath?: string,\n): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n tag,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(configPath);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем пакет\n const pkg = await resolvePackage(config, packageName);\n result.packageName = pkg.packageName;\n\n // Извлекаем версию из тега\n const version = tag.replace(pkg.tagPrefix, \"\");\n result.newVersion = version;\n\n // Получаем коммиты для release notes\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n const commits = parseCommits(rawCommits);\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Создаём GitVerse клиент\n const gitverseClient = createGitVerseClient(repoInfo, retryFn);\n\n // Проверяем существование релиза\n if (config.gitverse.checkExisting) {\n const exists = await gitverseClient.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists\\n`);\n result.releaseUrl = `${repoInfo.url}/releases/tag/${tag}`;\n result.success = true;\n return result;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз\n result.releaseUrl = await gitverseClient.createRelease(tag, `${pkg.packageName} v${version}`, releaseNotes);\n\n result.success = true;\n\n console.log(\"\\n✅ Release created successfully!\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`🌐 Release: ${result.releaseUrl}\\n`);\n\n return result;\n } catch (error) {\n result.success = false;\n result.errors.push(error instanceof Error ? error.message : String(error));\n\n console.error(\"\\n❌ Release creation failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\nexport { generateBinaryPackages, publishBinaries } from \"./binaries\";\nexport {\n configExists,\n DEFAULT_BINARIES_CONFIG,\n DEFAULT_BINARY_PLATFORMS,\n DEFAULT_CONFIG_FILE_NAME,\n generateConfigContent,\n initConfig,\n loadConfig,\n validateBinariesConfig,\n validateConfig,\n} from \"./config\";\nexport { createGitVerseClient } from \"./gitverse\";\n// Экспорты\nexport * from \"./types\";\nexport {\n ALL_PLATFORMS,\n expandPlaceholders,\n getBinaryPath,\n getPackageName,\n getPackageOutputPath,\n getPlatformDir,\n isValidPlatform,\n PLATFORM_MAPPINGS,\n parsePlatforms,\n platformToNodeValues,\n validateAllBinaries,\n validateBinaryExists,\n} from \"./utils/binary-platforms\";\n",
6
- "import { access, readFile, writeFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { parse as parseJsonc } from \"jsonc-parser\";\nimport type { BinariesConfig, BinaryPlatform, ReleaseConfig } from \"./types\";\n\n/**\n * Дефолтное имя конфиг-файла\n */\nexport const DEFAULT_CONFIG_FILE_NAME = \".gitversereleaserc.jsonc\";\n\n/**\n * Имена конфиг-файлов в порядке приоритета\n */\nconst CONFIG_FILE_NAMES = [\".gitversereleaserc.jsonc\", \".gitversereleaserc.json\"] as const;\n\n/**\n * Проверяет существование файла\n */\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Находит конфиг-файл в директории\n * Приоритет: .jsonc > .json\n */\nasync function findConfigFile(directory: string): Promise<string | null> {\n for (const fileName of CONFIG_FILE_NAMES) {\n const fullPath = resolve(directory, fileName);\n if (await fileExists(fullPath)) {\n return fullPath;\n }\n }\n return null;\n}\n\n/**\n * Дефолтные платформы для бинарной дистрибуции\n */\nexport const DEFAULT_BINARY_PLATFORMS: BinaryPlatform[] = [\n \"linux-x64\",\n \"linux-arm64\",\n \"darwin-x64\",\n \"darwin-arm64\",\n \"win32-x64\",\n];\n\n/**\n * Дефолтная конфигурация бинарной дистрибуции\n */\nexport const DEFAULT_BINARIES_CONFIG: BinariesConfig = {\n continueOnError: false,\n distDir: \"./dist\",\n enabled: false,\n mainPackage: \"./package.json\",\n name: \"\",\n outDir: \"./npm\",\n platforms: DEFAULT_BINARY_PLATFORMS,\n publishCommand: \"npm publish --access public\",\n retryAttempts: 3,\n scope: \"\",\n};\n\n/**\n * Дефолтная конфигурация\n */\nexport const DEFAULT_CONFIG: Required<ReleaseConfig> = {\n binaries: DEFAULT_BINARIES_CONFIG,\n changelog: {\n showAuthor: true,\n showHash: true,\n types: {\n build: \"🏗️ Build System\",\n chore: \"🔧 Chores\",\n ci: \"👷 CI/CD\",\n docs: \"📝 Documentation\",\n feat: \"✨ Features\",\n fix: \"🐛 Bug Fixes\",\n perf: \"⚡ Performance\",\n refactor: \"♻️ Refactoring\",\n revert: \"⏪ Reverts\",\n style: \"💄 Styling\",\n test: \"✅ Tests\",\n },\n },\n commitlint: {\n bodyMaxLineLength: null,\n comments: true,\n footerMaxLineLength: null,\n format: \"ts\",\n headerMaxLength: 100,\n headerMinLength: null,\n output: \"commitlint.config.ts\",\n scopeRequired: false,\n scopes: [\"deps\", \"ci\", \"docs\"],\n strictMode: false,\n subjectCase: null,\n subjectFullStop: false,\n warningRules: [\"header-max-length\"],\n },\n git: {\n beforeCommit: \"\",\n commitChanges: true,\n commitMessage: \"chore(release): {{package}} v{{version}} [skip ci]\",\n push: true,\n tagMessage: \"Release {{package}} v{{version}}\",\n },\n gitverse: {\n checkExisting: true,\n enabled: true,\n failOnError: true,\n },\n monorepo: {\n enabled: false,\n packages: [],\n },\n retry: {\n enabled: true,\n initialDelay: 2000,\n maxAttempts: 5,\n maxDelay: 30000,\n operations: [\"push\", \"createRelease\"],\n },\n versioning: {\n allowPrerelease: false,\n preMajorMode: \"auto\",\n prereleasePrefix: \"beta\",\n tagPrefix: \"v\",\n },\n};\n\n/**\n * Загружает конфигурацию из файла\n *\n * Порядок поиска:\n * 1. Если указан configPath - используем его\n * 2. Ищем .gitversereleaserc.jsonc\n * 3. Ищем .gitversereleaserc.json\n * 4. Если ничего не найдено - используем дефолтную конфигурацию\n */\nexport async function loadConfig(configPath?: string): Promise<Required<ReleaseConfig>> {\n let fullPath: string | null;\n\n if (configPath) {\n // Явно указанный путь\n fullPath = resolve(process.cwd(), configPath);\n } else {\n // Автопоиск конфига\n fullPath = await findConfigFile(process.cwd());\n }\n\n // Если конфиг не найден - используем дефолт\n if (!fullPath) {\n return DEFAULT_CONFIG;\n }\n\n try {\n const content = await readFile(fullPath, \"utf-8\");\n\n // Используем jsonc-parser для поддержки комментариев и trailing commas\n const userConfig = parseJsonc(content) as Partial<ReleaseConfig>;\n\n // Мерджим с дефолтной конфигурацией\n return mergeConfig(DEFAULT_CONFIG, userConfig);\n } catch (error) {\n // Если файл не найден, используем дефолтную конфигурацию\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return DEFAULT_CONFIG;\n }\n\n throw new Error(\n `Failed to load config from ${fullPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Мерджит пользовательскую конфигурацию с дефолтной\n */\nfunction mergeConfig(defaults: Required<ReleaseConfig>, user: Partial<ReleaseConfig>): Required<ReleaseConfig> {\n return {\n binaries: {\n ...defaults.binaries,\n ...user.binaries,\n },\n changelog: {\n ...defaults.changelog,\n ...user.changelog,\n types: {\n ...defaults.changelog.types,\n ...user.changelog?.types,\n },\n },\n commitlint: {\n ...defaults.commitlint,\n ...user.commitlint,\n },\n git: {\n ...defaults.git,\n ...user.git,\n },\n gitverse: {\n ...defaults.gitverse,\n ...user.gitverse,\n },\n monorepo: {\n ...defaults.monorepo,\n ...user.monorepo,\n },\n retry: {\n ...defaults.retry,\n ...user.retry,\n },\n versioning: {\n ...defaults.versioning,\n ...user.versioning,\n },\n };\n}\n\n/**\n * Валидирует конфигурацию\n */\nexport function validateConfig(config: Required<ReleaseConfig>): void {\n if (config.monorepo.enabled && config.monorepo.packages.length === 0) {\n throw new Error(\"Monorepo mode is enabled but no packages are configured\");\n }\n\n for (const pkg of config.monorepo.packages) {\n if (!(pkg.name && pkg.path && pkg.packageName && pkg.tagPrefix)) {\n throw new Error(`Invalid package configuration for ${pkg.name || \"unknown\"}`);\n }\n }\n}\n\n/**\n * Regex для валидации безопасных имён npm пакетов.\n * Разрешает буквы, цифры, дефис, подчёркивание и точку.\n * Блокирует shell-метасимволы: $, `, ', \", \\, |, ;, &, <, >, (, ), {, }, [, ], !, ?, *, ~, ^, #\n */\nconst SAFE_NAME_REGEX = /^[a-zA-Z0-9_.-]+$/;\n\n/**\n * Regex для валидации npm scope.\n * Разрешает формат @org или org (буквы, цифры, дефис, подчёркивание).\n */\nconst SAFE_SCOPE_REGEX = /^@?[a-zA-Z0-9_-]+$/;\n\n/**\n * Валидирует конфигурацию бинарной дистрибуции\n */\nexport function validateBinariesConfig(config: BinariesConfig): void {\n if (!config.enabled) {\n return;\n }\n\n if (!config.scope) {\n throw new Error(\"Binaries config: scope is required when enabled\");\n }\n\n // Валидация scope на отсутствие shell-метасимволов\n if (!SAFE_SCOPE_REGEX.test(config.scope)) {\n throw new Error(\n `Binaries config: scope \"${config.scope}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen are allowed.\",\n );\n }\n\n if (!config.name) {\n throw new Error(\"Binaries config: name is required when enabled\");\n }\n\n // Валидация name на отсутствие shell-метасимволов\n if (!SAFE_NAME_REGEX.test(config.name)) {\n throw new Error(\n `Binaries config: name \"${config.name}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n\n if (!config.platforms || config.platforms.length === 0) {\n throw new Error(\"Binaries config: at least one platform is required\");\n }\n\n const validPlatforms: BinaryPlatform[] = [\n \"linux-x64\",\n \"linux-arm64\",\n \"darwin-x64\",\n \"darwin-arm64\",\n \"win32-x64\",\n \"win32-arm64\",\n ];\n\n for (const platform of config.platforms) {\n if (!validPlatforms.includes(platform)) {\n throw new Error(`Binaries config: invalid platform \"${platform}\". Valid: ${validPlatforms.join(\", \")}`);\n }\n }\n\n if (config.retryAttempts < 1 || config.retryAttempts > 10) {\n throw new Error(\"Binaries config: retryAttempts must be between 1 and 10\");\n }\n}\n\n/**\n * Проверяет, существует ли конфиг-файл\n */\nexport function configExists(): Promise<string | null> {\n return findConfigFile(process.cwd());\n}\n\n/**\n * Опции для инициализации конфига\n */\nexport interface InitConfigOptions {\n /** Режим монорепо */\n monorepo?: boolean;\n /** Дополнительные scopes для commitlint */\n scopes?: string[];\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Генерирует содержимое конфиг-файла в формате JSONC\n */\nexport function generateConfigContent(options: InitConfigOptions = {}): string {\n const lines: string[] = [];\n\n lines.push(\"{\");\n lines.push(\" // JSON Schema для автодополнения и валидации в IDE\");\n lines.push(' \"$schema\": \"node_modules/gitverse-release/schema.json\",');\n lines.push(\"\");\n\n // Changelog\n lines.push(\" // Настройки генерации CHANGELOG\");\n lines.push(' \"changelog\": {');\n lines.push(' \"showAuthor\": true,');\n lines.push(' \"showHash\": true,');\n lines.push(' \"types\": {');\n lines.push(' \"feat\": \"✨ Features\",');\n lines.push(' \"fix\": \"🐛 Bug Fixes\",');\n lines.push(' \"docs\": \"📝 Documentation\",');\n lines.push(' \"style\": \"💄 Styles\",');\n lines.push(' \"refactor\": \"♻️ Refactoring\",');\n lines.push(' \"perf\": \"⚡ Performance\",');\n lines.push(' \"test\": \"✅ Tests\",');\n lines.push(' \"build\": \"🏗️ Build System\",');\n lines.push(' \"ci\": \"👷 CI/CD\",');\n lines.push(' \"chore\": \"🔧 Chores\",');\n lines.push(' \"revert\": \"⏪ Reverts\"');\n lines.push(\" }\");\n lines.push(\" },\");\n lines.push(\"\");\n\n // Commitlint\n const scopes = options.scopes ?? [\"deps\", \"ci\", \"docs\"];\n lines.push(\" // Настройки генерации commitlint конфига\");\n lines.push(' \"commitlint\": {');\n lines.push(` \"scopes\": ${JSON.stringify(scopes)},`);\n lines.push(' \"scopeRequired\": false,');\n lines.push(' \"headerMaxLength\": 100');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Git\n lines.push(\" // Настройки Git операций\");\n lines.push(' \"git\": {');\n lines.push(' \"commitChanges\": true,');\n lines.push(' \"commitMessage\": \"chore(release): v{{version}} [skip ci]\",');\n lines.push(' \"push\": true,');\n lines.push(' \"tagMessage\": \"v{{version}}\"');\n lines.push(' // beforeCommit: \"bun run format\" // Раскомментируйте для форматирования перед коммитом');\n lines.push(\" },\");\n lines.push(\"\");\n\n // GitVerse\n lines.push(\" // Настройки GitVerse Release API\");\n lines.push(\" // Требует переменную окружения GITVERSE_TOKEN\");\n lines.push(' \"gitverse\": {');\n lines.push(' \"enabled\": true,');\n lines.push(' \"checkExisting\": true,');\n lines.push(' \"failOnError\": true');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Monorepo\n lines.push(\" // Настройки монорепо\");\n lines.push(' \"monorepo\": {');\n lines.push(` \"enabled\": ${options.monorepo ?? false}`);\n if (options.monorepo) {\n lines.pop(); // Удаляем последнюю строку\n lines.push(` \"enabled\": true,`);\n lines.push(' \"packages\": [');\n lines.push(\" // Пример конфигурации пакета:\");\n lines.push(\" // {\");\n lines.push(' // \"name\": \"sdk\",');\n lines.push(' // \"path\": \"packages/sdk\",');\n lines.push(' // \"packageName\": \"my-sdk\",');\n lines.push(' // \"tagPrefix\": \"v\"');\n lines.push(\" // }\");\n lines.push(\" ]\");\n }\n lines.push(\" },\");\n lines.push(\"\");\n\n // Versioning\n lines.push(\" // Настройки версионирования\");\n lines.push(' \"versioning\": {');\n lines.push(' \"tagPrefix\": \"v\",');\n lines.push(' \"prereleasePrefix\": \"beta\"');\n lines.push(\" }\");\n\n lines.push(\"}\");\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Инициализирует конфиг-файл\n */\nexport async function initConfig(options: InitConfigOptions = {}): Promise<string> {\n const existingConfig = await configExists();\n\n if (existingConfig) {\n throw new Error(`Config file already exists: ${existingConfig}`);\n }\n\n const content = generateConfigContent(options);\n const filePath = resolve(process.cwd(), DEFAULT_CONFIG_FILE_NAME);\n\n if (options.dryRun) {\n console.log(`\\n🔍 Dry-run mode - Would create: ${filePath}\\n`);\n console.log(content);\n return filePath;\n }\n\n await writeFile(filePath, content, \"utf-8\");\n\n return filePath;\n}\n",
6
+ "import { access, readFile, writeFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { parse as parseJsonc } from \"jsonc-parser\";\nimport type { BinariesConfig, BinaryPlatform, ReleaseConfig } from \"./types\";\n\n/**\n * Дефолтное имя конфиг-файла\n */\nexport const DEFAULT_CONFIG_FILE_NAME = \".gitversereleaserc.jsonc\";\n\n/**\n * Имена конфиг-файлов в порядке приоритета\n */\nconst CONFIG_FILE_NAMES = [\".gitversereleaserc.jsonc\", \".gitversereleaserc.json\"] as const;\n\n/**\n * Проверяет существование файла\n */\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Находит конфиг-файл в директории\n * Приоритет: .jsonc > .json\n */\nasync function findConfigFile(directory: string): Promise<string | null> {\n for (const fileName of CONFIG_FILE_NAMES) {\n const fullPath = resolve(directory, fileName);\n if (await fileExists(fullPath)) {\n return fullPath;\n }\n }\n return null;\n}\n\n/**\n * Дефолтные платформы для бинарной дистрибуции\n */\nexport const DEFAULT_BINARY_PLATFORMS: BinaryPlatform[] = [\n \"linux-x64\",\n \"linux-arm64\",\n \"darwin-x64\",\n \"darwin-arm64\",\n \"win32-x64\",\n];\n\n/**\n * Дефолтная конфигурация бинарной дистрибуции\n */\nexport const DEFAULT_BINARIES_CONFIG: BinariesConfig = {\n continueOnError: false,\n distDir: \"./dist\",\n enabled: false,\n inputFormat: \"directory\",\n mainPackage: \"./package.json\",\n name: \"\",\n outDir: \"./npm\",\n platforms: DEFAULT_BINARY_PLATFORMS,\n publishCommand: \"npm publish --access public\",\n retryAttempts: 3,\n};\n\n/**\n * Дефолтная конфигурация\n */\nexport const DEFAULT_CONFIG: Required<ReleaseConfig> = {\n binaries: DEFAULT_BINARIES_CONFIG,\n changelog: {\n showAuthor: true,\n showHash: true,\n types: {\n build: \"🏗️ Build System\",\n chore: \"🔧 Chores\",\n ci: \"👷 CI/CD\",\n docs: \"📝 Documentation\",\n feat: \"✨ Features\",\n fix: \"🐛 Bug Fixes\",\n perf: \"⚡ Performance\",\n refactor: \"♻️ Refactoring\",\n revert: \"⏪ Reverts\",\n style: \"💄 Styling\",\n test: \"✅ Tests\",\n },\n },\n commitlint: {\n bodyMaxLineLength: null,\n comments: true,\n footerMaxLineLength: null,\n format: \"ts\",\n headerMaxLength: 100,\n headerMinLength: null,\n output: \"commitlint.config.ts\",\n scopeRequired: false,\n scopes: [\"deps\", \"ci\", \"docs\"],\n strictMode: false,\n subjectCase: null,\n subjectFullStop: false,\n warningRules: [\"header-max-length\"],\n },\n git: {\n beforeCommit: \"\",\n commitChanges: true,\n commitMessage: \"chore(release): {{package}} v{{version}} [skip ci]\",\n push: true,\n tagMessage: \"Release {{package}} v{{version}}\",\n },\n gitverse: {\n checkExisting: true,\n enabled: true,\n failOnError: true,\n },\n monorepo: {\n enabled: false,\n packages: [],\n },\n retry: {\n enabled: true,\n initialDelay: 2000,\n maxAttempts: 5,\n maxDelay: 30000,\n operations: [\"push\", \"createRelease\"],\n },\n versioning: {\n allowPrerelease: false,\n preMajorMode: \"auto\",\n prereleasePrefix: \"beta\",\n tagPrefix: \"v\",\n },\n};\n\n/**\n * Загружает конфигурацию из файла\n *\n * Порядок поиска:\n * 1. Если указан configPath - используем его\n * 2. Ищем .gitversereleaserc.jsonc\n * 3. Ищем .gitversereleaserc.json\n * 4. Если ничего не найдено - используем дефолтную конфигурацию\n */\nexport async function loadConfig(configPath?: string): Promise<Required<ReleaseConfig>> {\n let fullPath: string | null;\n\n if (configPath) {\n // Явно указанный путь\n fullPath = resolve(process.cwd(), configPath);\n } else {\n // Автопоиск конфига\n fullPath = await findConfigFile(process.cwd());\n }\n\n // Если конфиг не найден - используем дефолт\n if (!fullPath) {\n return DEFAULT_CONFIG;\n }\n\n try {\n const content = await readFile(fullPath, \"utf-8\");\n\n // Используем jsonc-parser для поддержки комментариев и trailing commas\n const userConfig = parseJsonc(content) as Partial<ReleaseConfig>;\n\n // Мерджим с дефолтной конфигурацией\n return mergeConfig(DEFAULT_CONFIG, userConfig);\n } catch (error) {\n // Если файл не найден, используем дефолтную конфигурацию\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return DEFAULT_CONFIG;\n }\n\n throw new Error(\n `Failed to load config from ${fullPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Мерджит пользовательскую конфигурацию с дефолтной\n */\nfunction mergeConfig(defaults: Required<ReleaseConfig>, user: Partial<ReleaseConfig>): Required<ReleaseConfig> {\n return {\n binaries: {\n ...defaults.binaries,\n ...user.binaries,\n },\n changelog: {\n ...defaults.changelog,\n ...user.changelog,\n types: {\n ...defaults.changelog.types,\n ...user.changelog?.types,\n },\n },\n commitlint: {\n ...defaults.commitlint,\n ...user.commitlint,\n },\n git: {\n ...defaults.git,\n ...user.git,\n },\n gitverse: {\n ...defaults.gitverse,\n ...user.gitverse,\n },\n monorepo: {\n ...defaults.monorepo,\n ...user.monorepo,\n },\n retry: {\n ...defaults.retry,\n ...user.retry,\n },\n versioning: {\n ...defaults.versioning,\n ...user.versioning,\n },\n };\n}\n\n/**\n * Валидирует конфигурацию\n */\nexport function validateConfig(config: Required<ReleaseConfig>): void {\n if (config.monorepo.enabled && config.monorepo.packages.length === 0) {\n throw new Error(\"Monorepo mode is enabled but no packages are configured\");\n }\n\n for (const pkg of config.monorepo.packages) {\n if (!(pkg.name && pkg.path && pkg.packageName && pkg.tagPrefix)) {\n throw new Error(`Invalid package configuration for ${pkg.name || \"unknown\"}`);\n }\n }\n}\n\n/**\n * Regex для валидации безопасных имён npm пакетов.\n * Разрешает буквы, цифры, дефис, подчёркивание и точку.\n * Блокирует shell-метасимволы: $, `, ', \", \\, |, ;, &, <, >, (, ), {, }, [, ], !, ?, *, ~, ^, #\n */\nconst SAFE_NAME_REGEX = /^[a-zA-Z0-9_.-]+$/;\n\n/**\n * Regex для валидации npm scope.\n * Разрешает формат @org или org (буквы, цифры, дефис, подчёркивание).\n */\nconst SAFE_SCOPE_REGEX = /^@?[a-zA-Z0-9_-]+$/;\n\n/**\n * Валидные платформы для бинарной дистрибуции\n */\nconst VALID_PLATFORMS: BinaryPlatform[] = [\n \"darwin-arm64\",\n \"darwin-x64\",\n \"linux-arm64\",\n \"linux-x64\",\n \"win32-arm64\",\n \"win32-x64\",\n];\n\n/**\n * Валидирует базовые поля конфигурации бинарной дистрибуции\n */\nfunction validateBinariesBaseFields(config: BinariesConfig): void {\n // scope опционален, но если указан — валидируем\n if (config.scope && !SAFE_SCOPE_REGEX.test(config.scope)) {\n throw new Error(\n `Binaries config: scope \"${config.scope}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen are allowed.\",\n );\n }\n\n if (!config.name) {\n throw new Error(\"Binaries config: name is required when enabled\");\n }\n\n if (!SAFE_NAME_REGEX.test(config.name)) {\n throw new Error(\n `Binaries config: name \"${config.name}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n\n // Валидация packageNameTemplate\n if (config.packageNameTemplate) {\n if (!config.packageNameTemplate.includes(\"{{name}}\")) {\n throw new Error(\"Binaries config: packageNameTemplate must contain {{name}} placeholder\");\n }\n if (!config.packageNameTemplate.includes(\"{{platform}}\")) {\n throw new Error(\"Binaries config: packageNameTemplate must contain {{platform}} placeholder\");\n }\n if (config.packageNameTemplate.includes(\"{{scope}}\") && !config.scope) {\n throw new Error(\"Binaries config: packageNameTemplate uses {{scope}} but scope is not defined\");\n }\n }\n}\n\n/**\n * Валидирует platforms и retryAttempts\n */\nfunction validateBinariesPlatformsAndRetry(config: BinariesConfig): void {\n if (!config.platforms || config.platforms.length === 0) {\n throw new Error(\"Binaries config: at least one platform is required\");\n }\n\n for (const platform of config.platforms) {\n if (!VALID_PLATFORMS.includes(platform)) {\n throw new Error(`Binaries config: invalid platform \"${platform}\". Valid: ${VALID_PLATFORMS.join(\", \")}`);\n }\n }\n\n if (config.retryAttempts < 1 || config.retryAttempts > 10) {\n throw new Error(\"Binaries config: retryAttempts must be between 1 and 10\");\n }\n}\n\n/**\n * Валидирует расширенные поля: inputFormat, sourceBinName, platformMap\n */\nfunction validateBinariesExtendedFields(config: BinariesConfig): void {\n if (config.inputFormat && ![\"directory\", \"tar.gz\"].includes(config.inputFormat)) {\n throw new Error(`Binaries config: inputFormat must be \"directory\" or \"tar.gz\", got \"${config.inputFormat}\"`);\n }\n\n if (config.sourceBinName && !SAFE_NAME_REGEX.test(config.sourceBinName)) {\n throw new Error(\n `Binaries config: sourceBinName \"${config.sourceBinName}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n\n if (config.platformMap) {\n for (const [sourceKey, targetPlatform] of Object.entries(config.platformMap)) {\n if (!SAFE_NAME_REGEX.test(sourceKey)) {\n throw new Error(\n `Binaries config: platformMap key \"${sourceKey}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n if (!VALID_PLATFORMS.includes(targetPlatform)) {\n throw new Error(\n `Binaries config: platformMap value \"${targetPlatform}\" is not a valid platform. ` +\n `Valid: ${VALID_PLATFORMS.join(\", \")}`,\n );\n }\n }\n }\n}\n\n/**\n * Валидирует конфигурацию бинарной дистрибуции\n */\nexport function validateBinariesConfig(config: BinariesConfig): void {\n if (!config.enabled) {\n return;\n }\n\n validateBinariesBaseFields(config);\n validateBinariesPlatformsAndRetry(config);\n validateBinariesExtendedFields(config);\n}\n\n/**\n * Проверяет, существует ли конфиг-файл\n */\nexport function configExists(): Promise<string | null> {\n return findConfigFile(process.cwd());\n}\n\n/**\n * Опции для инициализации конфига\n */\nexport interface InitConfigOptions {\n /** Режим монорепо */\n monorepo?: boolean;\n /** Дополнительные scopes для commitlint */\n scopes?: string[];\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Генерирует содержимое конфиг-файла в формате JSONC\n */\nexport function generateConfigContent(options: InitConfigOptions = {}): string {\n const lines: string[] = [];\n\n lines.push(\"{\");\n lines.push(\" // JSON Schema для автодополнения и валидации в IDE\");\n lines.push(' \"$schema\": \"node_modules/gitverse-release/schema.json\",');\n lines.push(\"\");\n\n // Changelog\n lines.push(\" // Настройки генерации CHANGELOG\");\n lines.push(' \"changelog\": {');\n lines.push(' \"showAuthor\": true,');\n lines.push(' \"showHash\": true,');\n lines.push(' \"types\": {');\n lines.push(' \"feat\": \"✨ Features\",');\n lines.push(' \"fix\": \"🐛 Bug Fixes\",');\n lines.push(' \"docs\": \"📝 Documentation\",');\n lines.push(' \"style\": \"💄 Styles\",');\n lines.push(' \"refactor\": \"♻️ Refactoring\",');\n lines.push(' \"perf\": \"⚡ Performance\",');\n lines.push(' \"test\": \"✅ Tests\",');\n lines.push(' \"build\": \"🏗️ Build System\",');\n lines.push(' \"ci\": \"👷 CI/CD\",');\n lines.push(' \"chore\": \"🔧 Chores\",');\n lines.push(' \"revert\": \"⏪ Reverts\"');\n lines.push(\" }\");\n lines.push(\" },\");\n lines.push(\"\");\n\n // Commitlint\n const scopes = options.scopes ?? [\"deps\", \"ci\", \"docs\"];\n lines.push(\" // Настройки генерации commitlint конфига\");\n lines.push(' \"commitlint\": {');\n lines.push(` \"scopes\": ${JSON.stringify(scopes)},`);\n lines.push(' \"scopeRequired\": false,');\n lines.push(' \"headerMaxLength\": 100');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Git\n lines.push(\" // Настройки Git операций\");\n lines.push(' \"git\": {');\n lines.push(' \"commitChanges\": true,');\n lines.push(' \"commitMessage\": \"chore(release): v{{version}} [skip ci]\",');\n lines.push(' \"push\": true,');\n lines.push(' \"tagMessage\": \"v{{version}}\"');\n lines.push(' // beforeCommit: \"bun run format\" // Раскомментируйте для форматирования перед коммитом');\n lines.push(\" },\");\n lines.push(\"\");\n\n // GitVerse\n lines.push(\" // Настройки GitVerse Release API\");\n lines.push(\" // Требует переменную окружения GITVERSE_TOKEN\");\n lines.push(' \"gitverse\": {');\n lines.push(' \"enabled\": true,');\n lines.push(' \"checkExisting\": true,');\n lines.push(' \"failOnError\": true');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Monorepo\n lines.push(\" // Настройки монорепо\");\n lines.push(' \"monorepo\": {');\n lines.push(` \"enabled\": ${options.monorepo ?? false}`);\n if (options.monorepo) {\n lines.pop(); // Удаляем последнюю строку\n lines.push(` \"enabled\": true,`);\n lines.push(' \"packages\": [');\n lines.push(\" // Пример конфигурации пакета:\");\n lines.push(\" // {\");\n lines.push(' // \"name\": \"sdk\",');\n lines.push(' // \"path\": \"packages/sdk\",');\n lines.push(' // \"packageName\": \"my-sdk\",');\n lines.push(' // \"tagPrefix\": \"v\"');\n lines.push(\" // }\");\n lines.push(\" ]\");\n }\n lines.push(\" },\");\n lines.push(\"\");\n\n // Versioning\n lines.push(\" // Настройки версионирования\");\n lines.push(' \"versioning\": {');\n lines.push(' \"tagPrefix\": \"v\",');\n lines.push(' \"prereleasePrefix\": \"beta\"');\n lines.push(\" }\");\n\n lines.push(\"}\");\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Инициализирует конфиг-файл\n */\nexport async function initConfig(options: InitConfigOptions = {}): Promise<string> {\n const existingConfig = await configExists();\n\n if (existingConfig) {\n throw new Error(`Config file already exists: ${existingConfig}`);\n }\n\n const content = generateConfigContent(options);\n const filePath = resolve(process.cwd(), DEFAULT_CONFIG_FILE_NAME);\n\n if (options.dryRun) {\n console.log(`\\n🔍 Dry-run mode - Would create: ${filePath}\\n`);\n console.log(content);\n return filePath;\n }\n\n await writeFile(filePath, content, \"utf-8\");\n\n return filePath;\n}\n",
7
7
  "class j extends Error{status;metadata;constructor(b,f,h){super(f);this.name=\"GitVerseApiError\",this.status=b,this.metadata=h,Object.setPrototypeOf(this,j.prototype)}}class k extends j{rateLimit;constructor(b,f,h){super(429,b,h);this.name=\"RateLimitError\",this.rateLimit=f,Object.setPrototypeOf(this,k.prototype)}getRetryAfterSeconds(){return this.rateLimit.retryAfter}getResetDate(){return new Date(this.rateLimit.reset*1000)}}class q{currentVersion;latestVersion;decommissioning;constructor(b,f,h){this.currentVersion=b,this.latestVersion=f,this.decommissioning=h}getMessage(){let b=`Используется устаревшая версия API: ${this.currentVersion}. Последняя версия: ${this.latestVersion}.`;if(this.decommissioning)b+=` Версия будет выведена из эксплуатации: ${this.decommissioning}.`;return b}}export{k as RateLimitError,j as GitVerseApiError,q as ApiVersionWarning};\nexport{j as s,k as t,q as u};\n\n//# debugId=27E0A51FC444958B64756E2164756E21\n",
8
8
  "import{s as $,t as w,u as k}from\"./errors.js\";var Z={DELETE:\"DELETE\",GET:\"GET\",PATCH:\"PATCH\",POST:\"POST\",PUT:\"PUT\"};class v{baseUrl;token;apiVersion;onApiVersionWarning;constructor(j={}){this.baseUrl=j.baseUrl||\"https://api.gitverse.ru\",this.token=j.token,this.apiVersion=j.apiVersion||\"1\"}setToken(j){this.token=j}extractRateLimitInfo(j){let x=j.get(\"GitVerse-RateLimit-Limit\"),q=j.get(\"GitVerse-RateLimit-User-Remaining\")||j.get(\"GitVerse-RateLimit-Remaining\"),z=j.get(\"GitVerse-RateLimit-Retry-After\"),F=j.get(\"Gitverse-Ratelimit-Reset\");if(!(x&&z))return;let U=Number.parseInt(z,10),J=F?Number.parseInt(F,10):Math.floor(Date.now()/1000)+U,K=q?Number.parseInt(q,10):0;return{limit:Number.parseInt(x,10),remaining:K,reset:J,retryAfter:U}}extractApiVersionInfo(j){let x=j.get(\"Gitverse-Api-Version\"),q=j.get(\"Gitverse-Api-Latest-Version\"),z=j.get(\"Gitverse-Api-Deprecation\")===\"true\",F=j.get(\"Gitverse-Api-Decommissioning\");if(!(x&&q))return;return{decommissioning:F||void 0,deprecated:z,latestVersion:q,version:x}}extractMetadata(j){let x=this.extractRateLimitInfo(j),q=this.extractApiVersionInfo(j);if(q?.deprecated&&this.onApiVersionWarning){let z=new k(q.version,q.latestVersion,q.decommissioning);this.onApiVersionWarning(z)}return{apiVersion:q,rateLimit:x}}async request(j,x,q,z){let F=j.startsWith(\"/\")?j.slice(1):j,U=`${this.baseUrl}/${F}`,J=new Headers;if(J.set(\"Content-Type\",\"application/json\"),J.set(\"Accept\",`application/vnd.gitverse.object+json; version=${this.apiVersion}`),this.token)J.set(\"Authorization\",`Bearer ${this.token}`);let K={body:q?JSON.stringify(q):void 0,headers:J,method:x,signal:z?.signal},C=await fetch(U,K),X=this.extractMetadata(C.headers),Y;try{Y=await C.json()}catch{Y=void 0}if(!C.ok){let S=Y?.message||C.statusText;if(C.status===429&&X.rateLimit)throw new w(S||\"Превышен лимит запросов. Попробуйте позже.\",X.rateLimit,X);throw new $(C.status,S,X)}return Y}get(j,x){return this.request(j,Z.GET,void 0,x)}post(j,x,q){return this.request(j,Z.POST,x,q)}put(j,x,q){return this.request(j,Z.PUT,x,q)}delete(j,x,q){return this.request(j,Z.DELETE,x,q)}patch(j,x,q){return this.request(j,Z.PATCH,x,q)}async uploadFile(j,x,q,z,F){let U=j.startsWith(\"/\")?j.slice(1):j,J=`${this.baseUrl}/${U}`,K=new Headers;if(K.set(\"Accept\",`application/vnd.gitverse.object+json; version=${this.apiVersion}`),this.token)K.set(\"Authorization\",`Bearer ${this.token}`);let C=new FormData,X=q instanceof ArrayBuffer?new Blob([q]):q;C.append(x,X,z);let Y={body:C,headers:K,method:Z.POST,signal:F?.signal},Q=await fetch(J,Y),S=this.extractMetadata(Q.headers),_;try{_=await Q.json()}catch{_=void 0}if(!Q.ok){let W=_?.message||Q.statusText;if(Q.status===429&&S.rateLimit)throw new w(W||\"Превышен лимит запросов. Попробуйте позже.\",S.rateLimit,S);throw new $(Q.status,W,S)}return _}}export{Z as HTTPMethods,v as GitVerseClient};\nexport{v as a};\n\n//# debugId=50A1FE874597590864756E2164756E21\n",
9
9
  "class E{client;constructor(k){this.client=k}list(k,A,b,f){let j=new URLSearchParams;if(b?.state!==void 0)j.append(\"state\",b.state);if(b?.q!==void 0)j.append(\"q\",b.q);if(b?.labels!==void 0)j.append(\"labels\",b.labels);if(b?.milestones!==void 0)j.append(\"milestones\",b.milestones);if(b?.created_by!==void 0)j.append(\"created_by\",b.created_by);if(b?.assigned_by!==void 0)j.append(\"assigned_by\",b.assigned_by);if(b?.mentioned_by!==void 0)j.append(\"mentioned_by\",b.mentioned_by);if(b?.type!==void 0)j.append(\"type\",b.type);if(b?.since!==void 0)j.append(\"since\",b.since);if(b?.before!==void 0)j.append(\"before\",b.before);if(b?.page!==void 0)j.append(\"page\",String(b.page));if(b?.per_page!==void 0)j.append(\"per_page\",String(b.per_page));let z=j.toString(),B=`/repos/${k}/${A}/issues${z?`?${z}`:\"\"}`;return this.client.get(B,f)}getComment(k,A,b,f){return this.client.get(`/repos/${k}/${A}/issues/comments/${b}`,f)}get(k,A,b,f){return this.client.get(`/repos/${k}/${A}/issues/${b}`,f)}listComments(k,A,b,f,j){let z=new URLSearchParams;if(f?.since!==void 0)z.append(\"since\",f.since);if(f?.before!==void 0)z.append(\"before\",f.before);let B=z.toString(),D=`/repos/${k}/${A}/issues/${b}/comments${B?`?${B}`:\"\"}`;return this.client.get(D,j)}listLabels(k,A,b,f){return this.client.get(`/repos/${k}/${A}/issues/${b}/labels`,f)}listTimeline(k,A,b,f,j){let z=new URLSearchParams;if(f?.page!==void 0)z.append(\"page\",String(f.page));if(f?.per_page!==void 0)z.append(\"per_page\",String(f.per_page));if(f?.since!==void 0)z.append(\"since\",f.since);if(f?.before!==void 0)z.append(\"before\",f.before);let B=z.toString(),D=`/repos/${k}/${A}/issues/${b}/timeline${B?`?${B}`:\"\"}`;return this.client.get(D,j)}}export{E as IssuesApi};\nexport{E as b};\n\n//# debugId=8F1C6E934EB8377564756E2164756E21\n",
@@ -24,13 +24,48 @@
24
24
  "import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport type { GitRepoInfo } from \"../types\";\n\nconst execAsync = promisify(exec);\n\n/**\n * Выполняет команду shell\n */\nexport async function executeCommand(command: string): Promise<string> {\n const { stdout, stderr } = await execAsync(command);\n\n if (stderr && !stderr.includes(\"warning\")) {\n console.warn(`Command stderr: ${stderr}`);\n }\n\n return stdout.trim();\n}\n\n/**\n * Выполняет beforeCommit hook\n * Возвращает true если хук выполнился успешно\n * Возвращает false если хук упал с ошибкой\n */\nexport async function runBeforeCommitHook(command: string): Promise<boolean> {\n console.log(`\\n🔧 Running before-commit hook: ${command}`);\n\n try {\n await executeCommand(command);\n console.log(\"✅ Before-commit hook completed successfully\\n\");\n return true;\n } catch (error) {\n console.warn(`⚠️ Before-commit hook failed: ${error instanceof Error ? error.message : String(error)}\\n`);\n return false;\n }\n}\n\n// Regex для парсинга GitVerse URL\n// Форматы:\n// - git@gitverse.ru:owner/repo.git (SCP-like)\n// - https://gitverse.ru/owner/repo.git (HTTPS)\n// - ssh://git@gitverse.ru:2222/owner/repo.git (SSH с портом)\nconst GITVERSE_URL_REGEX_1 = /gitverse\\.ru[:/]([^/]+)\\/([^/.]+)(\\.git)?$/;\nconst GITVERSE_URL_REGEX_2 = /gitverse\\.ru\\/([^/]+)\\/([^/.]+)(\\.git)?$/;\nconst GITVERSE_URL_REGEX_3 = /gitverse\\.ru:\\d+\\/([^/]+)\\/([^/.]+)(\\.git)?$/;\n\n/**\n * Выполняет git команду\n * Экспортируется для тестирования (позволяет мокать через spyOn)\n */\nexport async function gitCommand(command: string): Promise<string> {\n const { stdout } = await execAsync(`git ${command}`);\n return stdout.trim();\n}\n\n/**\n * Получает информацию о Git репозитории\n *\n * Приоритет источников данных:\n * 1. Переменные окружения GitVerse Actions (для CI/CD)\n * 2. Git remote URL (для локального использования)\n */\nexport async function getRepoInfo(): Promise<GitRepoInfo> {\n // Сначала пробуем получить из GitVerse Actions переменных окружения\n // Это более надежно в CI/CD окружении и не требует git операций\n if (process.env.GITVERSE_ACTIONS === \"true\" && process.env.GITHUB_REPOSITORY) {\n const fullName = process.env.GITHUB_REPOSITORY;\n const parts = fullName.split(\"/\");\n\n if (parts.length === 2 && parts[0] && parts[1]) {\n const owner = parts[0];\n const repo = parts[1];\n const branch = process.env.GITHUB_REF_NAME || \"main\";\n\n return {\n branch,\n fullName,\n owner,\n repo,\n url: `https://gitverse.ru/${owner}/${repo}`,\n };\n }\n }\n\n // Fallback на парсинг git remote (для локального использования)\n const url = await gitCommand(\"remote get-url origin\");\n\n // Парсим owner/repo из URL\n // Поддерживаемые форматы:\n // - https://gitverse.ru/owner/repo.git\n // - https://gitverse.ru/owner/repo\n // - git@gitverse.ru:owner/repo.git\n // - ssh://git@gitverse.ru:2222/owner/repo.git\n const match = url.match(GITVERSE_URL_REGEX_1) || url.match(GITVERSE_URL_REGEX_2) || url.match(GITVERSE_URL_REGEX_3);\n\n if (!(match?.[1] && match[2])) {\n throw new Error(`Unable to parse GitVerse repository from URL: ${url}`);\n }\n\n const owner = match[1];\n const repo = match[2];\n\n // Получаем текущую ветку\n const branch = await gitCommand(\"branch --show-current\");\n\n return {\n branch,\n fullName: `${owner}/${repo}`,\n owner,\n repo,\n url: `https://gitverse.ru/${owner}/${repo}`,\n };\n}\n\n/**\n * Получает последний тег с указанным префиксом\n */\nexport async function getLatestTag(prefix: string): Promise<string | null> {\n try {\n const tags = await gitCommand(`tag --sort=-v:refname --list \"${prefix}*\"`);\n const tagList = tags.split(\"\\n\").filter((tag) => tag.length > 0);\n\n return tagList.length > 0 ? (tagList[0] ?? null) : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Получает список коммитов с момента последнего тега\n */\nexport async function getCommitsSinceTag(tagPrefix: string, path?: string): Promise<string[]> {\n const latestTag = await getLatestTag(tagPrefix);\n\n let range: string;\n if (latestTag) {\n range = `${latestTag}..HEAD`;\n } else {\n // Если тега нет, берем все коммиты\n range = \"HEAD\";\n }\n\n const format = \"%H%n%h%n%an%n%ae%n%ai%n%B%n==END==\";\n const pathFilter = path ? `-- ${path}` : \"\";\n\n const log = await gitCommand(`log ${range} --format=\"${format}\" ${pathFilter}`);\n\n // Парсим вывод git log\n // Используем split по \\n==END== чтобы корректно обработать последний коммит после trim()\n const commits = log\n .split(\"\\n==END==\")\n .map((commit) => commit.trim())\n .filter((commit) => commit.length > 0 && commit !== \"==END==\");\n\n return commits;\n}\n\n/**\n * Получает текущую версию из package.json\n */\nexport async function getCurrentVersion(packagePath: string): Promise<string> {\n const { readFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n if (!pkgJson.version) {\n throw new Error(`No version found in ${pkgJsonPath}`);\n }\n\n return pkgJson.version;\n}\n\n/**\n * Получает информацию из package.json (name и version)\n */\nexport async function getPackageInfo(packagePath: string): Promise<{ name: string; version: string }> {\n const { readFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n if (!pkgJson.name) {\n throw new Error(`No name found in ${pkgJsonPath}`);\n }\n\n if (!pkgJson.version) {\n throw new Error(`No version found in ${pkgJsonPath}`);\n }\n\n return {\n name: pkgJson.name,\n version: pkgJson.version,\n };\n}\n\n/**\n * Обновляет версию в package.json\n */\nexport async function updatePackageVersion(packagePath: string, newVersion: string): Promise<void> {\n const { readFile, writeFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n pkgJson.version = newVersion;\n\n await writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n}\n\n/**\n * Создает git коммит\n */\nexport async function createCommit(message: string, files: string[]): Promise<void> {\n // Добавляем файлы\n for (const file of files) {\n await gitCommand(`add \"${file}\"`);\n }\n\n // Создаем коммит\n await gitCommand(`commit -m \"${message}\"`);\n}\n\n/**\n * Создает git тег\n */\nexport async function createTag(tag: string, message: string): Promise<void> {\n await gitCommand(`tag -a \"${tag}\" -m \"${message}\"`);\n}\n\n/**\n * Пушит изменения и теги в remote\n */\nexport async function pushChanges(tag?: string): Promise<void> {\n // Пушим коммиты\n await gitCommand(\"push\");\n\n // Пушим тег, если указан\n if (tag) {\n await gitCommand(`push origin \"${tag}\"`);\n }\n}\n\n/**\n * Проверяет, что рабочая директория чистая\n *\n * Формат git status --porcelain: \"XY PATH\"\n * X = status in staging area (index)\n * Y = status in working tree\n *\n * Staged изменения (X != ' ') допустимы - они войдут в коммит релиза\n * Unstaged изменения (Y != ' ') запрещены - нужно закоммитить или stash\n */\nexport async function isWorkingTreeClean(): Promise<boolean> {\n try {\n const status = await gitCommand(\"status --porcelain\");\n\n if (status.length === 0) {\n return true; // Полностью чистое дерево\n }\n\n // Проверяем есть ли unstaged изменения (второй символ не пробел)\n const lines = status.split(\"\\n\").filter((line) => line.length > 0);\n const unstagedChanges = lines.filter((line) => {\n // Второй символ (Y) показывает статус в working tree\n const workingTreeStatus = line[1];\n return workingTreeStatus !== \" \";\n });\n\n if (unstagedChanges.length > 0) {\n console.log(\"\\n⚠️ Unstaged changes detected:\");\n for (const line of unstagedChanges) {\n console.log(` ${line}`);\n }\n console.log(\"\");\n return false;\n }\n\n // Есть только staged изменения - это нормально\n console.log(\"✓ Working tree clean (staged changes will be included in release commit)\");\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Добавляет все измененные файлы в staging area\n * Используется после успешного выполнения beforeCommit хука\n */\nexport async function addChangedFiles(): Promise<void> {\n console.log(\"📥 Adding changed files to staging area...\");\n await gitCommand(\"add -A\");\n console.log(\"✅ Files added to staging area\\n\");\n}\n\n/**\n * Проверяет, что тег существует.\n *\n * @returns true если тег существует, false если тег не найден\n * @throws Error при критических ошибках git (повреждённый репозиторий, git не найден)\n */\nexport async function tagExists(tag: string): Promise<boolean> {\n try {\n await gitCommand(`rev-parse \"${tag}\"`);\n return true;\n } catch (error) {\n // git rev-parse возвращает код 128 для несуществующего тега\n // Проверяем что это ожидаемая ошибка \"not a valid object name\"\n const errorMessage = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();\n if (errorMessage.includes(\"not a valid object name\") || errorMessage.includes(\"unknown revision\")) {\n return false;\n }\n // Критические ошибки (git не найден, повреждённый репозиторий) пробрасываем\n throw new Error(`Failed to check tag \"${tag}\": ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n",
25
25
  "import type { RetryConfig } from \"../types\";\n\n/**\n * Опции для retry функции\n */\nexport interface RetryOptions {\n /**\n * Максимальное количество попыток\n */\n maxAttempts: number;\n\n /**\n * Начальная задержка (мс)\n */\n initialDelay: number;\n\n /**\n * Максимальная задержка (мс)\n */\n maxDelay: number;\n\n /**\n * Название операции для логирования\n */\n operationName?: string;\n}\n\n/**\n * Ожидание указанное количество миллисекунд\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Вычисляет задержку для следующей попытки с экспоненциальным backoff\n */\nfunction calculateDelay(attempt: number, initialDelay: number, maxDelay: number): number {\n // Экспоненциальный backoff: delay = initialDelay * 2^attempt\n const delay = initialDelay * 2 ** attempt;\n // Ограничиваем максимальной задержкой\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Проверяет, является ли ошибка временной (можно retry)\n */\nfunction isRetriableError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n\n const message = error.message.toLowerCase();\n\n // Network errors\n if (message.includes(\"network\") || message.includes(\"timeout\") || message.includes(\"econnreset\")) {\n return true;\n }\n\n // HTTP 5xx errors (server errors)\n if (message.includes(\"500\") || message.includes(\"502\") || message.includes(\"503\") || message.includes(\"504\")) {\n return true;\n }\n\n // Rate limit errors\n if (message.includes(\"rate limit\") || message.includes(\"429\")) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Выполняет функцию с retry механизмом и экспоненциальным backoff\n *\n * @param fn - Асинхронная функция для выполнения\n * @param options - Опции retry\n * @returns Результат выполнения функции\n * @throws Последняя ошибка после всех попыток\n */\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <Retry Logic OK>\nexport async function retry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T> {\n const { maxAttempts, initialDelay, maxDelay, operationName = \"Operation\" } = options;\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n // Пытаемся выполнить функцию\n return await fn();\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n // Проверяем, можно ли retry\n const canRetry = isRetriableError(error);\n\n // Это последняя попытка или ошибка не retriable\n if (attempt === maxAttempts - 1 || !canRetry) {\n if (!canRetry && attempt < maxAttempts - 1) {\n console.error(`\\n❌ ${operationName} failed with non-retriable error:`);\n console.error(lastError.message);\n }\n throw lastError;\n }\n\n // Вычисляем задержку для следующей попытки\n const delay = calculateDelay(attempt, initialDelay, maxDelay);\n\n console.warn(`\\n⚠️ ${operationName} failed (attempt ${attempt + 1}/${maxAttempts}):`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n\n // Ждём перед следующей попыткой\n await sleep(delay);\n }\n }\n\n // Этот код никогда не должен выполниться, но TypeScript требует return\n throw lastError || new Error(`${operationName} failed after ${maxAttempts} attempts`);\n}\n\n/**\n * Создаёт функцию retry с предустановленными настройками из конфига\n */\nexport function createRetryFunction(config: RetryConfig) {\n return async <T>(fn: () => Promise<T>, operationName?: string): Promise<T> => {\n if (!config.enabled) {\n // Если retry отключен, просто выполняем функцию\n return await fn();\n }\n\n return await retry(fn, {\n initialDelay: config.initialDelay,\n maxAttempts: config.maxAttempts,\n maxDelay: config.maxDelay,\n operationName,\n });\n };\n}\n",
26
26
  "import type { BumpType, ConventionalCommit, VersionBump } from \"../types\";\nimport { hasBreakingChanges, hasFeatures, hasFixes } from \"./parser\";\n\n/**\n * Парсит версию в компоненты\n */\ninterface SemanticVersion {\n major: number;\n minor: number;\n patch: number;\n prerelease?: string;\n}\n\n// Regex для парсинга версий\nconst VERSION_REGEX = /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.+))?$/;\nconst PRERELEASE_INCREMENT_REGEX = /^(.+)\\.(\\d+)$/;\n\n/**\n * Парсит строку версии\n */\nfunction parseVersion(version: string): SemanticVersion {\n // Удаляем префикс 'v' если есть\n const v = version.startsWith(\"v\") ? version.slice(1) : version;\n\n const match = v.match(VERSION_REGEX);\n if (!(match?.[1] && match[2] && match[3])) {\n throw new Error(`Invalid version format: ${version}`);\n }\n\n return {\n major: Number.parseInt(match[1], 10),\n minor: Number.parseInt(match[2], 10),\n patch: Number.parseInt(match[3], 10),\n prerelease: match[4],\n };\n}\n\n/**\n * Форматирует версию в строку\n */\nfunction formatVersion(ver: SemanticVersion): string {\n let result = `${ver.major}.${ver.minor}.${ver.patch}`;\n if (ver.prerelease) {\n result += `-${ver.prerelease}`;\n }\n return result;\n}\n\n/**\n * Определяет, нужно ли делать major bump для breaking changes\n * на основе текущей версии и режима preMajorMode\n */\nfunction shouldBumpMajor(currentVersion: string | undefined, mode = \"auto\"): boolean {\n // Режим \"disabled\" - всегда делаем major bump (стандартный semver)\n if (mode === \"disabled\") {\n return true;\n }\n\n // Режим \"enabled\" - всегда делаем minor bump\n if (mode === \"enabled\") {\n return false;\n }\n\n // Если версия не передана, используем стандартное поведение\n if (!currentVersion) {\n return true;\n }\n\n const current = parseVersion(currentVersion);\n\n // Режим \"auto\" - для версий < 1.0.0 делаем minor bump\n if (mode === \"auto\") {\n return current.major >= 1;\n }\n\n // Режим с порогом версии (например \"2.0.0\")\n // Если текущая версия >= порога, делаем major bump\n // Если текущая версия < порога, делаем minor bump\n try {\n const _threshold = parseVersion(mode);\n return compareVersions(currentVersion, mode) >= 0;\n } catch {\n // Невалидная версия в режиме - используем стандартное поведение\n return true;\n }\n}\n\n/**\n * Определяет тип изменения версии на основе коммитов\n */\nexport function determineBumpType(\n commits: ConventionalCommit[],\n currentVersion?: string,\n preMajorMode = \"auto\",\n): BumpType | null {\n if (commits.length === 0) {\n return null;\n }\n\n if (hasBreakingChanges(commits)) {\n // Определяем major или minor bump в зависимости от preMajorMode\n const useMajor = shouldBumpMajor(currentVersion, preMajorMode);\n return useMajor ? \"major\" : \"minor\";\n }\n\n if (hasFeatures(commits)) {\n return \"minor\";\n }\n\n if (hasFixes(commits)) {\n return \"patch\";\n }\n\n // Если есть другие типы коммитов (chore, docs, etc), делаем patch\n return \"patch\";\n}\n\n/**\n * Увеличивает версию согласно типу изменения\n */\nexport function bumpVersion(currentVersion: string, bumpType: BumpType, prereleasePrefix?: string): string {\n const ver = parseVersion(currentVersion);\n\n switch (bumpType) {\n case \"major\":\n ver.major += 1;\n ver.minor = 0;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"minor\":\n ver.minor += 1;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"patch\":\n ver.patch += 1;\n ver.prerelease = undefined;\n break;\n case \"prerelease\":\n if (ver.prerelease) {\n // Инкрементируем номер prerelease\n const match = ver.prerelease.match(PRERELEASE_INCREMENT_REGEX);\n if (match?.[1] && match[2]) {\n const prefix = match[1];\n const num = Number.parseInt(match[2], 10);\n ver.prerelease = `${prefix}.${num + 1}`;\n } else {\n ver.prerelease = `${ver.prerelease}.1`;\n }\n } else {\n // Создаем первый prerelease\n ver.patch += 1;\n ver.prerelease = `${prereleasePrefix || \"beta\"}.0`;\n }\n break;\n }\n\n return formatVersion(ver);\n}\n\n/**\n * Вычисляет bump версии на основе коммитов\n */\nexport function calculateVersionBump(\n currentVersion: string,\n commits: ConventionalCommit[],\n forceVersion?: string,\n prerelease?: string,\n preMajorMode?: string,\n): VersionBump {\n const bumpType = prerelease ? \"prerelease\" : determineBumpType(commits, currentVersion, preMajorMode) || \"patch\";\n\n const newVersion = forceVersion || bumpVersion(currentVersion, bumpType, prerelease);\n\n return {\n bumpType,\n commits,\n currentVersion,\n hasBreaking: hasBreakingChanges(commits),\n hasFeatures: hasFeatures(commits),\n hasFixes: hasFixes(commits),\n newVersion,\n };\n}\n\n/**\n * Сравнивает две версии\n * Возвращает: -1 если a < b, 0 если a === b, 1 если a > b\n */\nexport function compareVersions(a: string, b: string): number {\n const verA = parseVersion(a);\n const verB = parseVersion(b);\n\n if (verA.major !== verB.major) {\n return verA.major > verB.major ? 1 : -1;\n }\n if (verA.minor !== verB.minor) {\n return verA.minor > verB.minor ? 1 : -1;\n }\n if (verA.patch !== verB.patch) {\n return verA.patch > verB.patch ? 1 : -1;\n }\n\n // Сравнение prerelease\n if (verA.prerelease && !verB.prerelease) {\n return -1; // prerelease всегда меньше релиза\n }\n if (!verA.prerelease && verB.prerelease) {\n return 1;\n }\n if (verA.prerelease && verB.prerelease) {\n return verA.prerelease.localeCompare(verB.prerelease);\n }\n\n return 0;\n}\n",
27
- "import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { loadConfig, validateBinariesConfig } from \"./config\";\nimport type { BinaryCliOptions, BinaryDistributionResult, BinaryPackageResult } from \"./types\";\nimport { generateAllPlatformPackages, printGenerationDryRun } from \"./utils/binary-package-generator\";\nimport { validateAllBinaries } from \"./utils/binary-platforms\";\nimport { printPublishDryRun, printPublishSummary, publishAllPlatformPackages } from \"./utils/binary-publisher\";\nimport {\n generateBinaryWrapper,\n printMainPackageUpdatesDryRun,\n updateMainPackageJson,\n} from \"./utils/binary-wrapper-generator\";\nimport { getCurrentVersion } from \"./utils/git\";\n\n/**\n * Генерирует бинарные пакеты без публикации.\n *\n * Эта функция создаёт платформенные npm-пакеты с бинарниками,\n * но не публикует их. Используйте для подготовки пакетов перед публикацией.\n *\n * Процесс:\n * 1. Загружает и валидирует конфигурацию\n * 2. Проверяет наличие бинарников для каждой платформы\n * 3. Генерирует package.json, README.md для каждого платформенного пакета\n * 4. Копирует бинарники в соответствующие директории\n * 5. Генерирует JS wrapper для основного пакета (если не skipMainPackage)\n *\n * @param options - Опции генерации\n * @param options.config - Путь к конфиг-файлу\n * @param options.version - Версия (по умолчанию из git tags)\n * @param options.platforms - Конкретные платформы для генерации\n * @param options.dryRun - Режим предпросмотра без записи файлов\n * @param options.skipMainPackage - Не генерировать JS wrapper\n * @returns Результат генерации с информацией об успешных и неудачных пакетах\n *\n * @example\n * ```typescript\n * const result = await generateBinaryPackages({\n * dryRun: true,\n * platforms: [\"linux-x64\", \"darwin-arm64\"],\n * });\n *\n * if (result.success) {\n * console.log(`Generated ${result.packages.length} packages`);\n * }\n * ```\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function generateBinaryPackages(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n packages: [],\n published: [],\n success: false,\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие бинарников\n const missingBinaries = await validateAllBinaries(binariesConfig.distDir, binariesConfig.name, platforms);\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Binary not found for platform: ${platform}`);\n result.warnings.push(`Binary not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No binaries found for any platform\");\n return result;\n }\n\n // Явное предупреждение о неполной публикации\n const availableCount = platforms.length - missingBinaries.length;\n console.warn(`\\n⚠️ Only ${availableCount} of ${platforms.length} platforms will be processed`);\n console.warn(` Missing: ${missingBinaries.join(\", \")}`);\n console.warn(\" Use --platforms flag to explicitly specify which platforms to publish\\n\");\n }\n\n // Фильтруем платформы с существующими бинарниками\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n if (options.dryRun) {\n console.log(\"\\n🔍 DRY RUN MODE\\n\");\n printGenerationDryRun(binariesConfig, version, availablePlatforms);\n printMainPackageUpdatesDryRun(binariesConfig, version, availablePlatforms);\n\n // Создаём \"успешные\" результаты для dry-run\n result.packages = availablePlatforms.map(\n (platform): BinaryPackageResult => ({\n packageDir: \"\",\n packageName: \"\",\n platform,\n success: true as const,\n }),\n );\n\n result.success = true;\n return result;\n }\n\n // Генерируем пакеты\n console.log(\"\\n📦 Generating binary packages...\\n\");\n result.packages = await generateAllPlatformPackages(binariesConfig, version, availablePlatforms, false);\n\n const successfulPackages = result.packages.filter((p) => p.success);\n const failedPackages = result.packages.filter((p) => !p.success);\n\n console.log(`✅ Generated ${successfulPackages.length} packages`);\n\n if (failedPackages.length > 0) {\n for (const pkg of failedPackages) {\n result.warnings.push(`Failed to generate package for ${pkg.platform}: ${pkg.error}`);\n console.warn(`⚠️ Failed: ${pkg.platform} - ${pkg.error}`);\n }\n }\n\n // Генерируем JS wrapper\n if (!options.skipMainPackage) {\n const wrapperScript = generateBinaryWrapper(binariesConfig);\n const binDir = join(dirname(binariesConfig.mainPackage), \"bin\");\n const binName = binariesConfig.binName ?? binariesConfig.name;\n\n await mkdir(binDir, { recursive: true });\n await writeFile(join(binDir, `${binName}.js`), wrapperScript);\n\n console.log(`✅ Generated wrapper: bin/${binName}.js`);\n }\n\n result.success = successfulPackages.length > 0;\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Generation failed:\");\n console.error(error);\n }\n\n return result;\n}\n\n/**\n * Генерирует и публикует бинарные пакеты в npm registry.\n *\n * Выполняет полный цикл бинарной дистрибуции:\n * 1. Загружает и валидирует конфигурацию\n * 2. Проверяет наличие бинарников для каждой платформы\n * 3. Генерирует платформенные npm-пакеты (package.json, README.md, бинарник)\n * 4. Публикует платформенные пакеты с retry при временных ошибках\n * 5. Обновляет основной package.json с optionalDependencies\n * 6. Генерирует JS wrapper для автоматического выбора бинарника\n *\n * Поведение при ошибках контролируется параметром `continueOnError` в конфиге:\n * - `false` (default): останавливается при первой ошибке\n * - `true`: продолжает, собирая ошибки в warnings\n *\n * @param options - Опции публикации\n * @param options.config - Путь к конфиг-файлу\n * @param options.version - Версия (по умолчанию из git tags)\n * @param options.platforms - Конкретные платформы для публикации\n * @param options.dryRun - Режим предпросмотра без записи файлов и публикации\n * @param options.generateOnly - Только генерация, без публикации\n * @param options.skipMainPackage - Не обновлять основной package.json\n * @param options.verbose - Подробный вывод\n * @returns Результат с информацией о сгенерированных и опубликованных пакетах\n *\n * @example\n * ```typescript\n * // Dry-run для проверки\n * const preview = await publishBinaries({ dryRun: true });\n *\n * // Реальная публикация\n * const result = await publishBinaries({ verbose: true });\n *\n * if (!result.success) {\n * console.error(\"Errors:\", result.errors);\n * }\n * ```\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function publishBinaries(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n packages: [],\n published: [],\n success: false,\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие бинарников\n const missingBinaries = await validateAllBinaries(binariesConfig.distDir, binariesConfig.name, platforms);\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Binary not found for platform: ${platform}`);\n result.warnings.push(`Binary not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No binaries found for any platform\");\n return result;\n }\n\n // Явное предупреждение о неполной публикации\n const availableCount = platforms.length - missingBinaries.length;\n console.warn(`\\n⚠️ Only ${availableCount} of ${platforms.length} platforms will be processed`);\n console.warn(` Missing: ${missingBinaries.join(\", \")}`);\n console.warn(\" Use --platforms flag to explicitly specify which platforms to publish\\n\");\n }\n\n // Фильтруем платформы с существующими бинарниками\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n if (options.dryRun) {\n console.log(\"\\n🔍 DRY RUN MODE\\n\");\n printGenerationDryRun(binariesConfig, version, availablePlatforms);\n\n // Создаём \"успешные\" результаты для dry-run\n const dryRunPackages: BinaryPackageResult[] = availablePlatforms.map((platform) => ({\n packageDir: \"\",\n packageName: \"\",\n platform,\n success: true as const,\n }));\n\n printPublishDryRun(binariesConfig, dryRunPackages);\n printMainPackageUpdatesDryRun(binariesConfig, version, availablePlatforms);\n\n result.packages = dryRunPackages;\n result.success = true;\n return result;\n }\n\n // Генерируем пакеты\n console.log(\"\\n📦 Generating binary packages...\\n\");\n result.packages = await generateAllPlatformPackages(binariesConfig, version, availablePlatforms, false);\n\n const successfulPackages = result.packages.filter((p) => p.success);\n const failedPackages = result.packages.filter((p) => !p.success);\n\n console.log(`✅ Generated ${successfulPackages.length} packages`);\n\n if (failedPackages.length > 0) {\n for (const pkg of failedPackages) {\n result.warnings.push(`Failed to generate package for ${pkg.platform}: ${pkg.error}`);\n console.warn(`⚠️ Failed: ${pkg.platform} - ${pkg.error}`);\n }\n\n if (!binariesConfig.continueOnError && failedPackages.length > 0) {\n result.errors.push(\"Some packages failed to generate\");\n return result;\n }\n }\n\n if (successfulPackages.length === 0) {\n result.errors.push(\"No packages generated successfully\");\n return result;\n }\n\n // Если только генерация - выходим\n if (options.generateOnly) {\n // Генерируем JS wrapper если нужно\n if (!options.skipMainPackage) {\n const wrapperScript = generateBinaryWrapper(binariesConfig);\n const binDir = join(dirname(binariesConfig.mainPackage), \"bin\");\n const binName = binariesConfig.binName ?? binariesConfig.name;\n\n await mkdir(binDir, { recursive: true });\n await writeFile(join(binDir, `${binName}.js`), wrapperScript);\n\n console.log(`✅ Generated wrapper: bin/${binName}.js`);\n }\n\n result.success = true;\n return result;\n }\n\n // Публикуем пакеты\n console.log(\"\\n🚀 Publishing platform packages...\\n\");\n result.published = await publishAllPlatformPackages(\n binariesConfig,\n version,\n result.packages,\n false,\n options.verbose,\n );\n\n const successfulPublishes = result.published.filter((p) => p.success);\n const failedPublishes = result.published.filter((p) => !p.success);\n\n printPublishSummary(result.published, binariesConfig);\n\n if (failedPublishes.length > 0) {\n for (const pub of failedPublishes) {\n result.warnings.push(`Failed to publish ${pub.packageName}: ${pub.error}`);\n }\n\n if (!binariesConfig.continueOnError) {\n result.errors.push(\"Some packages failed to publish\");\n return result;\n }\n }\n\n // Обновляем основной package.json\n if (!options.skipMainPackage) {\n console.log(\"\\n📝 Updating main package.json...\\n\");\n\n // Генерируем и сохраняем wrapper\n const wrapperScript = generateBinaryWrapper(binariesConfig);\n const binDir = join(dirname(binariesConfig.mainPackage), \"bin\");\n const binName = binariesConfig.binName ?? binariesConfig.name;\n\n await mkdir(binDir, { recursive: true });\n await writeFile(join(binDir, `${binName}.js`), wrapperScript);\n\n // Обновляем package.json\n const publishedPlatforms = successfulPublishes.map((p) => p.platform);\n await updateMainPackageJson(binariesConfig.mainPackage, binariesConfig, version, publishedPlatforms, false);\n\n console.log(`✅ Updated ${binariesConfig.mainPackage}`);\n console.log(`✅ Generated wrapper: bin/${binName}.js`);\n }\n\n result.success = successfulPublishes.length > 0;\n\n // Финальный вывод\n if (result.success) {\n console.log(\"\\n✅ Binary distribution completed successfully!\\n\");\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Binary distribution failed:\");\n console.error(error);\n }\n\n return result;\n}\n",
28
- "import { copyFile, mkdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { BinariesConfig, BinaryPackageResult, BinaryPlatform } from \"../types\";\nimport {\n getBinaryPath,\n getPackageName,\n getPackageOutputPath,\n PLATFORM_MAPPINGS,\n validateBinaryExists,\n} from \"./binary-platforms\";\n\n/**\n * Генерирует package.json для платформенного пакета\n */\nexport function generatePlatformPackageJson(config: BinariesConfig, platform: BinaryPlatform, version: string): string {\n const mapping = PLATFORM_MAPPINGS[platform];\n const packageName = getPackageName(config.scope, config.name, platform);\n const binName = config.binName ?? config.name;\n const binaryFileName = `${binName}${mapping.extension}`;\n\n const pkg = {\n bin: {\n [binName]: `bin/${binaryFileName}`,\n },\n cpu: [mapping.cpu],\n description: `${config.name} binary for ${platform}`,\n files: [\"bin\"],\n license: \"MIT\",\n name: packageName,\n os: [mapping.os],\n preferUnplugged: true,\n version,\n };\n\n return JSON.stringify(pkg, null, 2);\n}\n\n/**\n * Генерирует README.md для платформенного пакета\n */\nexport function generatePlatformReadme(config: BinariesConfig, platform: BinaryPlatform, version: string): string {\n const packageName = getPackageName(config.scope, config.name, platform);\n const mapping = PLATFORM_MAPPINGS[platform];\n const mainPackageName = `${config.scope.startsWith(\"@\") ? config.scope : `@${config.scope}`}/${config.name}`;\n\n return `# ${packageName}\n\nPlatform-specific binary for \\`${config.name}\\` (${mapping.os} ${mapping.cpu}).\n\n## Installation\n\nThis package is not meant to be installed directly. Install the main package instead:\n\n\\`\\`\\`bash\nnpm install ${mainPackageName}\n\\`\\`\\`\n\nThe main package will automatically install the correct platform-specific binary as an optional dependency.\n\n## Version\n\n${version}\n`;\n}\n\n/**\n * Генерирует платформенный пакет\n */\nexport async function generatePlatformPackage(\n config: BinariesConfig,\n platform: BinaryPlatform,\n version: string,\n dryRun = false,\n): Promise<BinaryPackageResult> {\n const packageName = getPackageName(config.scope, config.name, platform);\n const packageDir = getPackageOutputPath(config.outDir, config.scope, config.name, platform);\n const binName = config.binName ?? config.name;\n const mapping = PLATFORM_MAPPINGS[platform];\n\n const baseResult = {\n packageDir,\n packageName,\n platform,\n };\n\n try {\n // Проверяем наличие бинарника\n const binaryExists = await validateBinaryExists(config.distDir, config.name, platform);\n if (!binaryExists) {\n const expectedPath = getBinaryPath(config.distDir, config.name, platform);\n return { ...baseResult, error: `Binary not found: ${expectedPath}`, success: false as const };\n }\n\n if (dryRun) {\n return { ...baseResult, success: true as const };\n }\n\n // Создаём директорию пакета\n const binDir = join(packageDir, \"bin\");\n await mkdir(binDir, { recursive: true });\n\n // Генерируем package.json\n const packageJson = generatePlatformPackageJson(config, platform, version);\n await writeFile(join(packageDir, \"package.json\"), packageJson);\n\n // Генерируем README.md\n const readme = generatePlatformReadme(config, platform, version);\n await writeFile(join(packageDir, \"README.md\"), readme);\n\n // Копируем бинарник\n const sourceBinaryPath = getBinaryPath(config.distDir, config.name, platform);\n const binaryFileName = `${binName}${mapping.extension}`;\n const targetBinaryPath = join(binDir, binaryFileName);\n await copyFile(sourceBinaryPath, targetBinaryPath);\n\n return { ...baseResult, success: true as const };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`❌ Failed to generate package ${packageName} for ${platform}: ${errorMessage}`);\n return { ...baseResult, error: `Failed to generate ${packageName}: ${errorMessage}`, success: false as const };\n }\n}\n\n/**\n * Генерирует все платформенные пакеты\n */\nexport async function generateAllPlatformPackages(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n dryRun = false,\n): Promise<BinaryPackageResult[]> {\n const targetPlatforms = platforms ?? config.platforms;\n const results: BinaryPackageResult[] = [];\n\n for (const platform of targetPlatforms) {\n const result = await generatePlatformPackage(config, platform, version, dryRun);\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Печатает информацию о генерации в dry-run режиме\n */\nexport function printGenerationDryRun(config: BinariesConfig, version: string, platforms: BinaryPlatform[]): void {\n console.log(\"\\n📦 Binary Distribution:\");\n console.log(` Scope: ${config.scope}`);\n console.log(` Name: ${config.name}`);\n console.log(` Version: ${version}`);\n console.log(` Platforms: ${platforms.join(\", \")}`);\n console.log(\"\\n📁 Packages to generate:\");\n\n for (const platform of platforms) {\n const packageDir = getPackageOutputPath(config.outDir, config.scope, config.name, platform);\n console.log(` ${packageDir}/`);\n }\n}\n",
29
- "import { access } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport type { BinaryPlatform, PlatformMapping } from \"../types\";\n\n/**\n * Маппинг платформ на os/cpu значения для package.json\n */\nexport const PLATFORM_MAPPINGS: Record<BinaryPlatform, PlatformMapping> = {\n \"darwin-arm64\": { cpu: \"arm64\", extension: \"\", os: \"darwin\" },\n \"darwin-x64\": { cpu: \"x64\", extension: \"\", os: \"darwin\" },\n \"linux-arm64\": { cpu: \"arm64\", extension: \"\", os: \"linux\" },\n \"linux-x64\": { cpu: \"x64\", extension: \"\", os: \"linux\" },\n \"win32-arm64\": { cpu: \"arm64\", extension: \".exe\", os: \"win32\" },\n \"win32-x64\": { cpu: \"x64\", extension: \".exe\", os: \"win32\" },\n};\n\n/**\n * Все поддерживаемые платформы\n */\nexport const ALL_PLATFORMS: BinaryPlatform[] = Object.keys(PLATFORM_MAPPINGS) as BinaryPlatform[];\n\n/**\n * Проверяет, что строка является валидной платформой\n */\nexport function isValidPlatform(value: string): value is BinaryPlatform {\n return value in PLATFORM_MAPPINGS;\n}\n\n/**\n * Парсит список платформ из строки (comma-separated)\n */\nexport function parsePlatforms(value: string): BinaryPlatform[] {\n const platforms = value.split(\",\").map((p) => p.trim());\n const result: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n if (!isValidPlatform(platform)) {\n throw new Error(`Invalid platform: ${platform}. Valid platforms: ${ALL_PLATFORMS.join(\", \")}`);\n }\n result.push(platform);\n }\n\n return result;\n}\n\n/**\n * Возвращает путь к бинарнику для указанной платформы\n */\nexport function getBinaryPath(distDir: string, name: string, platform: BinaryPlatform): string {\n const mapping = PLATFORM_MAPPINGS[platform];\n const binaryName = `${name}${mapping.extension}`;\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir, binaryName);\n}\n\n/**\n * Возвращает путь к директории платформы\n */\nexport function getPlatformDir(distDir: string, name: string, platform: BinaryPlatform): string {\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir);\n}\n\n/**\n * Проверяет существование бинарника для платформы.\n *\n * @returns true если файл существует, false если файл не найден (ENOENT)\n * @throws Error при других ошибках доступа (EACCES, ELOOP, EIO и т.д.)\n */\nexport async function validateBinaryExists(distDir: string, name: string, platform: BinaryPlatform): Promise<boolean> {\n const binaryPath = getBinaryPath(distDir, name, platform);\n try {\n await access(binaryPath);\n return true;\n } catch (error) {\n // ENOENT означает, что файл не существует - это ожидаемое поведение\n if (error instanceof Error && \"code\" in error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n // Все остальные ошибки (EACCES, ELOOP, EIO и т.д.) должны быть проброшены\n throw new Error(\n `Failed to check binary at ${binaryPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Валидирует наличие бинарников для всех указанных платформ\n * @returns Массив отсутствующих платформ\n */\nexport async function validateAllBinaries(\n distDir: string,\n name: string,\n platforms: BinaryPlatform[],\n): Promise<BinaryPlatform[]> {\n const missing: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n const exists = await validateBinaryExists(distDir, name, platform);\n if (!exists) {\n missing.push(platform);\n }\n }\n\n return missing;\n}\n\n/**\n * Генерирует полное имя пакета для платформы\n */\nexport function getPackageName(scope: string, name: string, platform: BinaryPlatform): string {\n // Убираем @ из scope если есть\n const cleanScope = scope.startsWith(\"@\") ? scope : `@${scope}`;\n return `${cleanScope}/${name}-${platform}`;\n}\n\n/**\n * Генерирует путь к пакету в output директории\n */\nexport function getPackageOutputPath(outDir: string, scope: string, name: string, platform: BinaryPlatform): string {\n const cleanScope = scope.startsWith(\"@\") ? scope.slice(1) : scope;\n return join(outDir, `@${cleanScope}`, `${name}-${platform}`);\n}\n\n/**\n * Раскрывает плейсхолдеры в строке\n */\nexport function expandPlaceholders(\n template: string,\n values: {\n packageDir?: string;\n version?: string;\n platform?: string;\n scope?: string;\n name?: string;\n },\n): string {\n let result = template;\n\n if (values.packageDir !== undefined) {\n result = result.replace(/\\{\\{packageDir\\}\\}/g, values.packageDir);\n }\n if (values.version !== undefined) {\n result = result.replace(/\\{\\{version\\}\\}/g, values.version);\n }\n if (values.platform !== undefined) {\n result = result.replace(/\\{\\{platform\\}\\}/g, values.platform);\n }\n if (values.scope !== undefined) {\n result = result.replace(/\\{\\{scope\\}\\}/g, values.scope);\n }\n if (values.name !== undefined) {\n result = result.replace(/\\{\\{name\\}\\}/g, values.name);\n }\n\n return result;\n}\n\n/**\n * Конвертирует платформу в Node.js process.platform и process.arch\n */\nexport function platformToNodeValues(platform: BinaryPlatform): { platform: string; arch: string } {\n const parts = platform.split(\"-\");\n return { arch: parts[1] ?? \"\", platform: parts[0] ?? \"\" };\n}\n",
30
- "import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport type { BinariesConfig, BinaryPackageResult, BinaryPlatform, BinaryPublishResult } from \"../types\";\nimport { expandPlaceholders, getPackageName, getPackageOutputPath } from \"./binary-platforms\";\n\nconst execAsync = promisify(exec);\n\n/**\n * Задержка между попытками\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Вычисляет задержку с экспоненциальным backoff.\n *\n * Формула: delay = initialDelay * 2^attempt, ограничено maxDelay.\n *\n * Примеры (с дефолтными параметрами):\n * - attempt 0: 2000ms\n * - attempt 1: 4000ms\n * - attempt 2: 8000ms\n * - attempt 3: 16000ms\n * - attempt 4+: 30000ms (max)\n *\n * @param attempt - Номер попытки (начиная с 0)\n * @param initialDelay - Начальная задержка в мс (default: 2000)\n * @param maxDelay - Максимальная задержка в мс (default: 30000)\n * @returns Задержка в миллисекундах\n */\nexport function calculateDelay(attempt: number, initialDelay = 2000, maxDelay = 30000): number {\n const delay = initialDelay * 2 ** attempt;\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Проверяет, можно ли повторить операцию после ошибки.\n *\n * Retriable ошибки (временные, имеет смысл повторить):\n * - Сетевые ошибки: network timeout, ECONNRESET, ETIMEDOUT\n * - Ограничения rate limit: HTTP 429, HTTP 503\n * - Временные ошибки npm registry: registry unavailable, ETARGET\n *\n * Не-retriable ошибки (постоянные, повторять бессмысленно):\n * - Ошибки авторизации (401, 403)\n * - Невалидные данные (400)\n * - Пакет уже существует (409)\n * - Ошибки файловой системы\n *\n * @param error - Любое значение ошибки\n * @returns true если ошибка носит временный характер и retry может помочь\n */\nexport function isRetriableError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n\n const message = error.message.toLowerCase();\n\n // Network errors\n if (message.includes(\"network\") || message.includes(\"timeout\") || message.includes(\"econnreset\")) {\n return true;\n }\n\n // Rate limit / server errors\n if (message.includes(\"503\") || message.includes(\"429\") || message.includes(\"rate\")) {\n return true;\n }\n\n // npm registry errors\n if (message.includes(\"registry\") || message.includes(\"etarget\")) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Публикует один платформенный пакет\n */\nexport async function publishPlatformPackage(\n config: BinariesConfig,\n platform: BinaryPlatform,\n version: string,\n dryRun = false,\n): Promise<BinaryPublishResult> {\n const packageName = getPackageName(config.scope, config.name, platform);\n const packageDir = getPackageOutputPath(config.outDir, config.scope, config.name, platform);\n\n const baseResult = {\n packageName,\n platform,\n };\n\n // Подготавливаем команду публикации\n const publishCommand = expandPlaceholders(config.publishCommand, {\n name: config.name,\n packageDir,\n platform,\n scope: config.scope,\n version,\n });\n\n if (dryRun) {\n return { ...baseResult, attempts: 1, success: true as const };\n }\n\n let lastError: Error | undefined;\n let attempts = 0;\n\n for (let attempt = 0; attempt < config.retryAttempts; attempt++) {\n attempts = attempt + 1;\n\n try {\n await execAsync(publishCommand, {\n cwd: packageDir,\n env: process.env,\n });\n\n return { ...baseResult, attempts, success: true as const };\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n const canRetry = isRetriableError(error);\n\n // Последняя попытка или ошибка не retriable\n if (attempt === config.retryAttempts - 1 || !canRetry) {\n break;\n }\n\n // Вычисляем задержку\n const delay = calculateDelay(attempt);\n console.warn(`⚠️ Publish failed for ${packageName} (attempt ${attempt + 1}/${config.retryAttempts})`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n\n await sleep(delay);\n }\n }\n\n return {\n ...baseResult,\n attempts,\n error: lastError?.message ?? \"Unknown error\",\n success: false as const,\n };\n}\n\n/**\n * Публикует все платформенные пакеты\n */\nexport async function publishAllPlatformPackages(\n config: BinariesConfig,\n version: string,\n generatedPackages: BinaryPackageResult[],\n dryRun = false,\n verbose = false,\n): Promise<BinaryPublishResult[]> {\n const results: BinaryPublishResult[] = [];\n\n // Фильтруем только успешно сгенерированные пакеты\n const successfulPackages = generatedPackages.filter((p) => p.success);\n\n if (successfulPackages.length === 0) {\n return results;\n }\n\n // Публикуем параллельно (группами для избежания rate limit)\n const batchSize = 3; // Публикуем по 3 пакета параллельно\n\n for (let i = 0; i < successfulPackages.length; i += batchSize) {\n const batch = successfulPackages.slice(i, i + batchSize);\n\n const batchPromises = batch.map(async (pkg) => {\n if (verbose) {\n console.log(`📤 Publishing ${pkg.packageName}...`);\n }\n\n const result = await publishPlatformPackage(config, pkg.platform, version, dryRun);\n\n if (result.success) {\n if (verbose) {\n console.log(`✅ Published ${pkg.packageName}`);\n }\n } else {\n console.error(`❌ Failed to publish ${pkg.packageName}: ${result.error}`);\n }\n\n return result;\n });\n\n const batchResults = await Promise.all(batchPromises);\n results.push(...batchResults);\n\n // Небольшая задержка между батчами для избежания rate limit\n if (i + batchSize < successfulPackages.length) {\n await sleep(500);\n }\n }\n\n return results;\n}\n\n/**\n * Печатает информацию о публикации в dry-run режиме\n */\nexport function printPublishDryRun(config: BinariesConfig, generatedPackages: BinaryPackageResult[]): void {\n const successfulPackages = generatedPackages.filter((p) => p.success);\n\n console.log(\"\\n🚀 Packages to publish:\");\n for (const pkg of successfulPackages) {\n console.log(` ${pkg.packageName} (${pkg.packageDir})`);\n }\n\n console.log(`\\n📤 Publish command: ${config.publishCommand}`);\n}\n\n/**\n * Печатает итоговую статистику публикации\n */\nexport function printPublishSummary(results: BinaryPublishResult[], _config: BinariesConfig): void {\n const successful = results.filter((r) => r.success);\n const failed = results.filter((r) => !r.success);\n\n console.log(\"\\n📊 Publish Summary:\");\n console.log(` Total: ${results.length}`);\n console.log(` Successful: ${successful.length}`);\n console.log(` Failed: ${failed.length}`);\n\n if (failed.length > 0) {\n console.log(\"\\n❌ Failed packages:\");\n for (const result of failed) {\n console.log(` ${result.packageName}: ${result.error}`);\n }\n }\n}\n",
31
- "import { readFile, writeFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { BinariesConfig, BinaryPlatform } from \"../types\";\nimport { getPackageName } from \"./binary-platforms\";\n\n/**\n * Генерирует JS wrapper скрипт для bin/\n */\nexport function generateBinaryWrapper(config: BinariesConfig): string {\n const binName = config.binName ?? config.name;\n const scope = config.scope.startsWith(\"@\") ? config.scope : `@${config.scope}`;\n\n // Создаём маппинг платформ\n const platformEntries = config.platforms.map((platform) => {\n const packageName = getPackageName(config.scope, config.name, platform);\n const parts = platform.split(\"-\");\n return ` \"${parts[0]}-${parts[1]}\": \"${packageName}\"`;\n });\n\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { platform, arch } = process;\nconst { execFileSync } = require(\"child_process\");\nconst { join } = require(\"path\");\n\nconst PLATFORMS = {\n${platformEntries.join(\",\\n\")}\n};\n\nconst platformKey = \\`\\${platform}-\\${arch}\\`;\nconst pkg = PLATFORMS[platformKey];\n\nif (!pkg) {\n console.error(\\`Unsupported platform: \\${platformKey}\\`);\n console.error(\\`Supported platforms: \\${Object.keys(PLATFORMS).join(\", \")}\\`);\n process.exit(1);\n}\n\nlet binPath;\ntry {\n // Try to resolve the platform-specific package\n const pkgPath = require.resolve(\\`\\${pkg}/package.json\\`);\n const pkgDir = join(pkgPath, \"..\");\n const pkgJson = require(pkgPath);\n const binEntry = pkgJson.bin && pkgJson.bin[\"${binName}\"];\n\n if (!binEntry) {\n throw new Error(\\`Binary entry not found in \\${pkg}\\`);\n }\n\n binPath = join(pkgDir, binEntry);\n} catch (resolveError) {\n console.error(\\`Failed to find binary package: \\${pkg}\\`);\n console.error(\\`Please install it: npm install \\${pkg}\\`);\n console.error(\\`Or reinstall the main package: npm install ${scope}/${config.name}\\`);\n process.exit(1);\n}\n\ntry {\n const result = execFileSync(binPath, process.argv.slice(2), {\n stdio: \"inherit\",\n env: process.env\n });\n} catch (error) {\n // execFileSync throws on non-zero exit codes, pass through the exit code\n if (error.status !== undefined) {\n process.exit(error.status);\n }\n throw error;\n}\n`;\n}\n\n/**\n * Интерфейс для optionalDependencies\n */\nexport interface OptionalDependencies {\n [key: string]: string;\n}\n\n/**\n * Генерирует объект optionalDependencies для основного package.json\n */\nexport function generateOptionalDependencies(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n): OptionalDependencies {\n const targetPlatforms = platforms ?? config.platforms;\n const deps: OptionalDependencies = {};\n\n for (const platform of targetPlatforms) {\n const packageName = getPackageName(config.scope, config.name, platform);\n deps[packageName] = version;\n }\n\n return deps;\n}\n\n/**\n * Обновления для основного package.json\n */\nexport interface MainPackageUpdates {\n optionalDependencies: OptionalDependencies;\n bin?: Record<string, string>;\n}\n\n/**\n * Генерирует обновления для основного package.json\n */\nexport function generateMainPackageUpdates(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n): MainPackageUpdates {\n const binName = config.binName ?? config.name;\n\n return {\n bin: {\n [binName]: `bin/${binName}.js`,\n },\n optionalDependencies: generateOptionalDependencies(config, version, platforms),\n };\n}\n\n/**\n * Обновляет основной package.json с optionalDependencies\n */\nexport async function updateMainPackageJson(\n packagePath: string,\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n dryRun = false,\n): Promise<void> {\n const fullPath = resolve(packagePath);\n const content = await readFile(fullPath, \"utf-8\");\n\n let pkg: Record<string, unknown>;\n try {\n pkg = JSON.parse(content);\n } catch (parseError) {\n throw new Error(\n `Failed to parse ${fullPath}: ${parseError instanceof Error ? parseError.message : \"Invalid JSON\"}`,\n );\n }\n\n const updates = generateMainPackageUpdates(config, version, platforms);\n\n // Мержим optionalDependencies\n pkg.optionalDependencies = {\n ...(pkg.optionalDependencies || {}),\n ...updates.optionalDependencies,\n };\n\n // Обновляем bin если нужно\n if (updates.bin) {\n pkg.bin = {\n ...(pkg.bin || {}),\n ...updates.bin,\n };\n }\n\n if (dryRun) {\n return;\n }\n\n // Записываем обратно с сохранением форматирования\n await writeFile(fullPath, `${JSON.stringify(pkg, null, 2)}\\n`);\n}\n\n/**\n * Печатает информацию об обновлениях main package в dry-run режиме\n */\nexport function printMainPackageUpdatesDryRun(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n): void {\n const updates = generateMainPackageUpdates(config, version, platforms);\n\n console.log(\"\\n📝 Main package updates:\");\n console.log(\" optionalDependencies:\");\n for (const [name, ver] of Object.entries(updates.optionalDependencies)) {\n console.log(` \"${name}\": \"${ver}\"`);\n }\n\n if (updates.bin) {\n console.log(\" bin:\");\n for (const [name, path] of Object.entries(updates.bin)) {\n console.log(` \"${name}\": \"${path}\"`);\n }\n }\n}\n"
27
+ "import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { loadConfig, validateBinariesConfig } from \"./config\";\nimport type { BinaryCliOptions, BinaryDistributionResult, BinaryPackageResult } from \"./types\";\nimport { generateAllPlatformPackages, printGenerationDryRun } from \"./utils/binary-package-generator\";\nimport { validateAllBinarySources } from \"./utils/binary-platforms\";\nimport { printPublishDryRun, printPublishSummary, publishAllPlatformPackages } from \"./utils/binary-publisher\";\nimport {\n generateBinaryWrapper,\n printMainPackageUpdatesDryRun,\n updateMainPackageJson,\n} from \"./utils/binary-wrapper-generator\";\nimport { getCurrentVersion } from \"./utils/git\";\n\n/**\n * Генерирует бинарные пакеты без публикации.\n *\n * Эта функция создаёт платформенные npm-пакеты с бинарниками,\n * но не публикует их. Используйте для подготовки пакетов перед публикацией.\n *\n * Процесс:\n * 1. Загружает и валидирует конфигурацию\n * 2. Проверяет наличие бинарников для каждой платформы\n * 3. Генерирует package.json, README.md для каждого платформенного пакета\n * 4. Копирует бинарники в соответствующие директории\n * 5. Генерирует JS wrapper для основного пакета (если не skipMainPackage)\n *\n * @param options - Опции генерации\n * @param options.config - Путь к конфиг-файлу\n * @param options.version - Версия (по умолчанию из git tags)\n * @param options.platforms - Конкретные платформы для генерации\n * @param options.dryRun - Режим предпросмотра без записи файлов\n * @param options.skipMainPackage - Не генерировать JS wrapper\n * @returns Результат генерации с информацией об успешных и неудачных пакетах\n *\n * @example\n * ```typescript\n * const result = await generateBinaryPackages({\n * dryRun: true,\n * platforms: [\"linux-x64\", \"darwin-arm64\"],\n * });\n *\n * if (result.success) {\n * console.log(`Generated ${result.packages.length} packages`);\n * }\n * ```\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function generateBinaryPackages(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n packages: [],\n published: [],\n success: false,\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие бинарников\n const missingBinaries = await validateAllBinarySources({ ...binariesConfig, platforms });\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Binary not found for platform: ${platform}`);\n result.warnings.push(`Binary not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No binaries found for any platform\");\n return result;\n }\n\n // Явное предупреждение о неполной публикации\n const availableCount = platforms.length - missingBinaries.length;\n console.warn(`\\n⚠️ Only ${availableCount} of ${platforms.length} platforms will be processed`);\n console.warn(` Missing: ${missingBinaries.join(\", \")}`);\n console.warn(\" Use --platforms flag to explicitly specify which platforms to publish\\n\");\n }\n\n // Фильтруем платформы с существующими бинарниками\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n if (options.dryRun) {\n console.log(\"\\n🔍 DRY RUN MODE\\n\");\n printGenerationDryRun(binariesConfig, version, availablePlatforms);\n printMainPackageUpdatesDryRun(binariesConfig, version, availablePlatforms);\n\n // Создаём \"успешные\" результаты для dry-run\n result.packages = availablePlatforms.map(\n (platform): BinaryPackageResult => ({\n packageDir: \"\",\n packageName: \"\",\n platform,\n success: true as const,\n }),\n );\n\n result.success = true;\n return result;\n }\n\n // Генерируем пакеты\n console.log(\"\\n📦 Generating binary packages...\\n\");\n result.packages = await generateAllPlatformPackages(binariesConfig, version, availablePlatforms, false);\n\n const successfulPackages = result.packages.filter((p) => p.success);\n const failedPackages = result.packages.filter((p) => !p.success);\n\n console.log(`✅ Generated ${successfulPackages.length} packages`);\n\n if (failedPackages.length > 0) {\n for (const pkg of failedPackages) {\n result.warnings.push(`Failed to generate package for ${pkg.platform}: ${pkg.error}`);\n console.warn(`⚠️ Failed: ${pkg.platform} - ${pkg.error}`);\n }\n }\n\n // Генерируем JS wrapper\n if (!options.skipMainPackage) {\n const wrapperScript = generateBinaryWrapper(binariesConfig);\n const binDir = join(dirname(binariesConfig.mainPackage), \"bin\");\n const binName = binariesConfig.binName ?? binariesConfig.name;\n\n await mkdir(binDir, { recursive: true });\n await writeFile(join(binDir, `${binName}.js`), wrapperScript);\n\n console.log(`✅ Generated wrapper: bin/${binName}.js`);\n }\n\n result.success = successfulPackages.length > 0;\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Generation failed:\");\n console.error(error);\n }\n\n return result;\n}\n\n/**\n * Генерирует и публикует бинарные пакеты в npm registry.\n *\n * Выполняет полный цикл бинарной дистрибуции:\n * 1. Загружает и валидирует конфигурацию\n * 2. Проверяет наличие бинарников для каждой платформы\n * 3. Генерирует платформенные npm-пакеты (package.json, README.md, бинарник)\n * 4. Публикует платформенные пакеты с retry при временных ошибках\n * 5. Обновляет основной package.json с optionalDependencies\n * 6. Генерирует JS wrapper для автоматического выбора бинарника\n *\n * Поведение при ошибках контролируется параметром `continueOnError` в конфиге:\n * - `false` (default): останавливается при первой ошибке\n * - `true`: продолжает, собирая ошибки в warnings\n *\n * @param options - Опции публикации\n * @param options.config - Путь к конфиг-файлу\n * @param options.version - Версия (по умолчанию из git tags)\n * @param options.platforms - Конкретные платформы для публикации\n * @param options.dryRun - Режим предпросмотра без записи файлов и публикации\n * @param options.generateOnly - Только генерация, без публикации\n * @param options.skipMainPackage - Не обновлять основной package.json\n * @param options.verbose - Подробный вывод\n * @returns Результат с информацией о сгенерированных и опубликованных пакетах\n *\n * @example\n * ```typescript\n * // Dry-run для проверки\n * const preview = await publishBinaries({ dryRun: true });\n *\n * // Реальная публикация\n * const result = await publishBinaries({ verbose: true });\n *\n * if (!result.success) {\n * console.error(\"Errors:\", result.errors);\n * }\n * ```\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function publishBinaries(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n packages: [],\n published: [],\n success: false,\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие бинарников\n const missingBinaries = await validateAllBinarySources({ ...binariesConfig, platforms });\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Binary not found for platform: ${platform}`);\n result.warnings.push(`Binary not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No binaries found for any platform\");\n return result;\n }\n\n // Явное предупреждение о неполной публикации\n const availableCount = platforms.length - missingBinaries.length;\n console.warn(`\\n⚠️ Only ${availableCount} of ${platforms.length} platforms will be processed`);\n console.warn(` Missing: ${missingBinaries.join(\", \")}`);\n console.warn(\" Use --platforms flag to explicitly specify which platforms to publish\\n\");\n }\n\n // Фильтруем платформы с существующими бинарниками\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n if (options.dryRun) {\n console.log(\"\\n🔍 DRY RUN MODE\\n\");\n printGenerationDryRun(binariesConfig, version, availablePlatforms);\n\n // Создаём \"успешные\" результаты для dry-run\n const dryRunPackages: BinaryPackageResult[] = availablePlatforms.map((platform) => ({\n packageDir: \"\",\n packageName: \"\",\n platform,\n success: true as const,\n }));\n\n printPublishDryRun(binariesConfig, dryRunPackages);\n printMainPackageUpdatesDryRun(binariesConfig, version, availablePlatforms);\n\n result.packages = dryRunPackages;\n result.success = true;\n return result;\n }\n\n // Генерируем пакеты\n console.log(\"\\n📦 Generating binary packages...\\n\");\n result.packages = await generateAllPlatformPackages(binariesConfig, version, availablePlatforms, false);\n\n const successfulPackages = result.packages.filter((p) => p.success);\n const failedPackages = result.packages.filter((p) => !p.success);\n\n console.log(`✅ Generated ${successfulPackages.length} packages`);\n\n if (failedPackages.length > 0) {\n for (const pkg of failedPackages) {\n result.warnings.push(`Failed to generate package for ${pkg.platform}: ${pkg.error}`);\n console.warn(`⚠️ Failed: ${pkg.platform} - ${pkg.error}`);\n }\n\n if (!binariesConfig.continueOnError && failedPackages.length > 0) {\n result.errors.push(\"Some packages failed to generate\");\n return result;\n }\n }\n\n if (successfulPackages.length === 0) {\n result.errors.push(\"No packages generated successfully\");\n return result;\n }\n\n // Если только генерация - выходим\n if (options.generateOnly) {\n // Генерируем JS wrapper если нужно\n if (!options.skipMainPackage) {\n const wrapperScript = generateBinaryWrapper(binariesConfig);\n const binDir = join(dirname(binariesConfig.mainPackage), \"bin\");\n const binName = binariesConfig.binName ?? binariesConfig.name;\n\n await mkdir(binDir, { recursive: true });\n await writeFile(join(binDir, `${binName}.js`), wrapperScript);\n\n console.log(`✅ Generated wrapper: bin/${binName}.js`);\n }\n\n result.success = true;\n return result;\n }\n\n // Публикуем пакеты\n console.log(\"\\n🚀 Publishing platform packages...\\n\");\n result.published = await publishAllPlatformPackages(\n binariesConfig,\n version,\n result.packages,\n false,\n options.verbose,\n );\n\n const successfulPublishes = result.published.filter((p) => p.success);\n const failedPublishes = result.published.filter((p) => !p.success);\n\n printPublishSummary(result.published, binariesConfig);\n\n if (failedPublishes.length > 0) {\n for (const pub of failedPublishes) {\n result.warnings.push(`Failed to publish ${pub.packageName}: ${pub.error}`);\n }\n\n if (!binariesConfig.continueOnError) {\n result.errors.push(\"Some packages failed to publish\");\n return result;\n }\n }\n\n // Обновляем основной package.json\n if (!options.skipMainPackage) {\n console.log(\"\\n📝 Updating main package.json...\\n\");\n\n // Генерируем и сохраняем wrapper\n const wrapperScript = generateBinaryWrapper(binariesConfig);\n const binDir = join(dirname(binariesConfig.mainPackage), \"bin\");\n const binName = binariesConfig.binName ?? binariesConfig.name;\n\n await mkdir(binDir, { recursive: true });\n await writeFile(join(binDir, `${binName}.js`), wrapperScript);\n\n // Обновляем package.json\n const publishedPlatforms = successfulPublishes.map((p) => p.platform);\n await updateMainPackageJson(binariesConfig.mainPackage, binariesConfig, version, publishedPlatforms, false);\n\n console.log(`✅ Updated ${binariesConfig.mainPackage}`);\n console.log(`✅ Generated wrapper: bin/${binName}.js`);\n }\n\n result.success = successfulPublishes.length > 0;\n\n // Финальный вывод\n if (result.success) {\n console.log(\"\\n✅ Binary distribution completed successfully!\\n\");\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Binary distribution failed:\");\n console.error(error);\n }\n\n return result;\n}\n",
28
+ "import { copyFile, mkdir, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { BinariesConfig, BinaryPackageResult, BinaryPlatform } from \"../types\";\nimport { cleanupTempDir, extractBinaryFromArchive } from \"./binary-archive-extractor\";\nimport {\n getBinaryPath,\n getBinarySourcePath,\n getPackageName,\n getPackageOutputPath,\n PLATFORM_MAPPINGS,\n validateBinarySourceExists,\n} from \"./binary-platforms\";\n\n/**\n * Генерирует package.json для платформенного пакета\n */\nexport function generatePlatformPackageJson(config: BinariesConfig, platform: BinaryPlatform, version: string): string {\n const mapping = PLATFORM_MAPPINGS[platform];\n const packageName = getPackageName(config, platform);\n const binName = config.binName ?? config.name;\n const binaryFileName = `${binName}${mapping.extension}`;\n\n const pkg = {\n bin: {\n [binName]: `bin/${binaryFileName}`,\n },\n cpu: [mapping.cpu],\n description: `${config.name} binary for ${platform}`,\n files: [\"bin\"],\n license: \"MIT\",\n name: packageName,\n os: [mapping.os],\n preferUnplugged: true,\n version,\n };\n\n return JSON.stringify(pkg, null, 2);\n}\n\n/**\n * Возвращает имя основного пакета для README\n */\nfunction getMainPackageName(config: BinariesConfig): string {\n if (config.scope) {\n const cleanScope = config.scope.startsWith(\"@\") ? config.scope : `@${config.scope}`;\n return `${cleanScope}/${config.name}`;\n }\n return config.name;\n}\n\n/**\n * Генерирует README.md для платформенного пакета\n */\nexport function generatePlatformReadme(config: BinariesConfig, platform: BinaryPlatform, version: string): string {\n const packageName = getPackageName(config, platform);\n const mapping = PLATFORM_MAPPINGS[platform];\n const mainPackageName = getMainPackageName(config);\n\n return `# ${packageName}\n\nPlatform-specific binary for \\`${config.name}\\` (${mapping.os} ${mapping.cpu}).\n\n## Installation\n\nThis package is not meant to be installed directly. Install the main package instead:\n\n\\`\\`\\`bash\nnpm install ${mainPackageName}\n\\`\\`\\`\n\nThe main package will automatically install the correct platform-specific binary as an optional dependency.\n\n## Version\n\n${version}\n`;\n}\n\n/**\n * Генерирует платформенный пакет.\n * Поддерживает два формата входных данных:\n * - \"directory\": бинарники в директориях (dist/name-platform/name)\n * - \"tar.gz\": бинарники в tar.gz архивах (dist/name-platform.tar.gz)\n */\nexport async function generatePlatformPackage(\n config: BinariesConfig,\n platform: BinaryPlatform,\n version: string,\n dryRun = false,\n): Promise<BinaryPackageResult> {\n const packageName = getPackageName(config, platform);\n const packageDir = getPackageOutputPath(config, platform);\n const binName = config.binName ?? config.name;\n const mapping = PLATFORM_MAPPINGS[platform];\n const inputFormat = config.inputFormat ?? \"directory\";\n\n const baseResult = {\n packageDir,\n packageName,\n platform,\n };\n\n let tempDirToCleanup: string | null = null;\n\n try {\n // Проверяем наличие источника бинарника\n const sourceExists = await validateBinarySourceExists(config, platform);\n if (!sourceExists) {\n const expectedPath = getBinarySourcePath(config, platform);\n return { ...baseResult, error: `Binary source not found: ${expectedPath}`, success: false as const };\n }\n\n if (dryRun) {\n return { ...baseResult, success: true as const };\n }\n\n // Создаём директорию пакета\n const binDir = join(packageDir, \"bin\");\n await mkdir(binDir, { recursive: true });\n\n // Генерируем package.json\n const packageJson = generatePlatformPackageJson(config, platform, version);\n await writeFile(join(packageDir, \"package.json\"), packageJson);\n\n // Генерируем README.md\n const readme = generatePlatformReadme(config, platform, version);\n await writeFile(join(packageDir, \"README.md\"), readme);\n\n // Получаем путь к бинарнику в зависимости от формата\n let sourceBinaryPath: string;\n\n if (inputFormat === \"tar.gz\") {\n // Извлекаем бинарник из архива\n const extractResult = await extractBinaryFromArchive(config, platform, tmpdir());\n\n if (!extractResult.success) {\n return { ...baseResult, error: extractResult.error, success: false as const };\n }\n\n sourceBinaryPath = extractResult.binaryPath;\n tempDirToCleanup = extractResult.tempDir;\n } else {\n sourceBinaryPath = getBinaryPath(config.distDir, config.name, platform);\n }\n\n // Копируем бинарник\n const binaryFileName = `${binName}${mapping.extension}`;\n const targetBinaryPath = join(binDir, binaryFileName);\n await copyFile(sourceBinaryPath, targetBinaryPath);\n\n return { ...baseResult, success: true as const };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`❌ Failed to generate package ${packageName} for ${platform}: ${errorMessage}`);\n return { ...baseResult, error: `Failed to generate ${packageName}: ${errorMessage}`, success: false as const };\n } finally {\n // Очищаем временную директорию\n if (tempDirToCleanup) {\n await cleanupTempDir(tempDirToCleanup);\n }\n }\n}\n\n/**\n * Генерирует все платформенные пакеты\n */\nexport async function generateAllPlatformPackages(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n dryRun = false,\n): Promise<BinaryPackageResult[]> {\n const targetPlatforms = platforms ?? config.platforms;\n const results: BinaryPackageResult[] = [];\n\n for (const platform of targetPlatforms) {\n const result = await generatePlatformPackage(config, platform, version, dryRun);\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Печатает информацию о генерации в dry-run режиме\n */\nexport function printGenerationDryRun(config: BinariesConfig, version: string, platforms: BinaryPlatform[]): void {\n const inputFormat = config.inputFormat ?? \"directory\";\n\n console.log(\"\\n📦 Binary Distribution:\");\n if (config.scope) {\n console.log(` Scope: ${config.scope}`);\n }\n console.log(` Name: ${config.name}`);\n console.log(` Version: ${version}`);\n console.log(` Input format: ${inputFormat}`);\n console.log(` Platforms: ${platforms.join(\", \")}`);\n\n if (inputFormat === \"tar.gz\" && config.sourceBinName) {\n console.log(` Source binary name: ${config.sourceBinName}`);\n }\n\n if (config.platformMap) {\n console.log(\" Platform map:\");\n for (const [source, target] of Object.entries(config.platformMap)) {\n console.log(` ${source} -> ${target}`);\n }\n }\n\n console.log(\"\\n📁 Packages to generate:\");\n\n for (const platform of platforms) {\n const packageDir = getPackageOutputPath(config, platform);\n const sourcePath = getBinarySourcePath(config, platform);\n console.log(` ${packageDir}/`);\n console.log(` <- ${sourcePath}`);\n }\n}\n",
29
+ "import { mkdir, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { extract } from \"tar\";\nimport type { BinariesConfig, BinaryExtractionResult, BinaryPlatform } from \"../types\";\nimport { getArchivePath, PLATFORM_MAPPINGS } from \"./binary-platforms\";\n\n/**\n * Возвращает имя бинарника внутри архива с учётом sourceBinName.\n * Если sourceBinName не задан, возвращает config.name.\n */\nexport function getSourceBinaryName(config: BinariesConfig, platform: BinaryPlatform): string {\n const mapping = PLATFORM_MAPPINGS[platform];\n const baseName = config.sourceBinName ?? config.name;\n return `${baseName}${mapping.extension}`;\n}\n\n/**\n * Извлекает бинарник из tar.gz архива во временную директорию.\n *\n * @param config - Конфигурация бинарной дистрибуции\n * @param platform - Целевая платформа\n * @param tempBaseDir - Базовая директория для временных файлов\n * @returns Результат извлечения с путём к бинарнику и временной директории\n */\nexport async function extractBinaryFromArchive(\n config: BinariesConfig,\n platform: BinaryPlatform,\n tempBaseDir: string,\n): Promise<BinaryExtractionResult> {\n const archivePath = getArchivePath(config, platform);\n const sourceBinaryName = getSourceBinaryName(config, platform);\n const tempDir = join(tempBaseDir, `extract-${platform}-${Date.now()}`);\n\n try {\n // Создаём временную директорию\n await mkdir(tempDir, { recursive: true });\n\n // Извлекаем архив\n await extract({\n cwd: tempDir,\n file: archivePath,\n });\n\n // Ищем бинарник в извлечённых файлах\n const binaryPath = await findBinaryInExtractedDir(tempDir, sourceBinaryName);\n\n if (!binaryPath) {\n await cleanupTempDir(tempDir);\n return {\n error: `Binary '${sourceBinaryName}' not found in archive ${archivePath}`,\n success: false,\n };\n }\n\n return {\n binaryPath,\n success: true,\n tempDir,\n };\n } catch (error) {\n await cleanupTempDir(tempDir);\n return {\n error: `Failed to extract archive ${archivePath}: ${error instanceof Error ? error.message : String(error)}`,\n success: false,\n };\n }\n}\n\n/**\n * Рекурсивно ищет бинарник в извлечённой директории.\n * Проверяет корень и вложенные директории первого уровня.\n */\nasync function findBinaryInExtractedDir(dir: string, binaryName: string): Promise<string | null> {\n const { readdir, stat } = await import(\"node:fs/promises\");\n\n // Проверяем корень\n const rootPath = join(dir, binaryName);\n try {\n const stats = await stat(rootPath);\n if (stats.isFile()) {\n return rootPath;\n }\n } catch {\n // Файл не найден в корне\n }\n\n // Проверяем вложенные директории первого уровня\n try {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const nestedPath = join(dir, entry.name, binaryName);\n try {\n const stats = await stat(nestedPath);\n if (stats.isFile()) {\n return nestedPath;\n }\n } catch {\n // Файл не найден в этой поддиректории\n }\n }\n }\n } catch {\n // Не удалось прочитать директорию\n }\n\n return null;\n}\n\n/**\n * Удаляет временную директорию.\n */\nexport async function cleanupTempDir(tempDir: string): Promise<void> {\n try {\n await rm(tempDir, { force: true, recursive: true });\n } catch {\n // Игнорируем ошибки очистки\n }\n}\n",
30
+ "import EE from 'events';\nimport fs from 'fs';\nimport { Minipass } from 'minipass';\nconst writev = fs.writev;\nconst _autoClose = Symbol('_autoClose');\nconst _close = Symbol('_close');\nconst _ended = Symbol('_ended');\nconst _fd = Symbol('_fd');\nconst _finished = Symbol('_finished');\nconst _flags = Symbol('_flags');\nconst _flush = Symbol('_flush');\nconst _handleChunk = Symbol('_handleChunk');\nconst _makeBuf = Symbol('_makeBuf');\nconst _mode = Symbol('_mode');\nconst _needDrain = Symbol('_needDrain');\nconst _onerror = Symbol('_onerror');\nconst _onopen = Symbol('_onopen');\nconst _onread = Symbol('_onread');\nconst _onwrite = Symbol('_onwrite');\nconst _open = Symbol('_open');\nconst _path = Symbol('_path');\nconst _pos = Symbol('_pos');\nconst _queue = Symbol('_queue');\nconst _read = Symbol('_read');\nconst _readSize = Symbol('_readSize');\nconst _reading = Symbol('_reading');\nconst _remain = Symbol('_remain');\nconst _size = Symbol('_size');\nconst _write = Symbol('_write');\nconst _writing = Symbol('_writing');\nconst _defaultFlag = Symbol('_defaultFlag');\nconst _errored = Symbol('_errored');\nexport class ReadStream extends Minipass {\n [_errored] = false;\n [_fd];\n [_path];\n [_readSize];\n [_reading] = false;\n [_size];\n [_remain];\n [_autoClose];\n constructor(path, opt) {\n opt = opt || {};\n super(opt);\n this.readable = true;\n this.writable = false;\n if (typeof path !== 'string') {\n throw new TypeError('path must be a string');\n }\n this[_errored] = false;\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined;\n this[_path] = path;\n this[_readSize] = opt.readSize || 16 * 1024 * 1024;\n this[_reading] = false;\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity;\n this[_remain] = this[_size];\n this[_autoClose] =\n typeof opt.autoClose === 'boolean' ? opt.autoClose : true;\n if (typeof this[_fd] === 'number') {\n this[_read]();\n }\n else {\n this[_open]();\n }\n }\n get fd() {\n return this[_fd];\n }\n get path() {\n return this[_path];\n }\n //@ts-ignore\n write() {\n throw new TypeError('this is a readable stream');\n }\n //@ts-ignore\n end() {\n throw new TypeError('this is a readable stream');\n }\n [_open]() {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd));\n }\n [_onopen](er, fd) {\n if (er) {\n this[_onerror](er);\n }\n else {\n this[_fd] = fd;\n this.emit('open', fd);\n this[_read]();\n }\n }\n [_makeBuf]() {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]));\n }\n [_read]() {\n if (!this[_reading]) {\n this[_reading] = true;\n const buf = this[_makeBuf]();\n /* c8 ignore start */\n if (buf.length === 0) {\n return process.nextTick(() => this[_onread](null, 0, buf));\n }\n /* c8 ignore stop */\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, b) => this[_onread](er, br, b));\n }\n }\n [_onread](er, br, buf) {\n this[_reading] = false;\n if (er) {\n this[_onerror](er);\n }\n else if (this[_handleChunk](br, buf)) {\n this[_read]();\n }\n }\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd];\n this[_fd] = undefined;\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'));\n }\n }\n [_onerror](er) {\n this[_reading] = true;\n this[_close]();\n this.emit('error', er);\n }\n [_handleChunk](br, buf) {\n let ret = false;\n // no effect if infinite\n this[_remain] -= br;\n if (br > 0) {\n ret = super.write(br < buf.length ? buf.subarray(0, br) : buf);\n }\n if (br === 0 || this[_remain] <= 0) {\n ret = false;\n this[_close]();\n super.end();\n }\n return ret;\n }\n emit(ev, ...args) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n return false;\n case 'drain':\n if (typeof this[_fd] === 'number') {\n this[_read]();\n }\n return false;\n case 'error':\n if (this[_errored]) {\n return false;\n }\n this[_errored] = true;\n return super.emit(ev, ...args);\n default:\n return super.emit(ev, ...args);\n }\n }\n}\nexport class ReadStreamSync extends ReadStream {\n [_open]() {\n let threw = true;\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'));\n threw = false;\n }\n finally {\n if (threw) {\n this[_close]();\n }\n }\n }\n [_read]() {\n let threw = true;\n try {\n if (!this[_reading]) {\n this[_reading] = true;\n do {\n const buf = this[_makeBuf]();\n /* c8 ignore start */\n const br = buf.length === 0\n ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null);\n /* c8 ignore stop */\n if (!this[_handleChunk](br, buf)) {\n break;\n }\n } while (true);\n this[_reading] = false;\n }\n threw = false;\n }\n finally {\n if (threw) {\n this[_close]();\n }\n }\n }\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd];\n this[_fd] = undefined;\n fs.closeSync(fd);\n this.emit('close');\n }\n }\n}\nexport class WriteStream extends EE {\n readable = false;\n writable = true;\n [_errored] = false;\n [_writing] = false;\n [_ended] = false;\n [_queue] = [];\n [_needDrain] = false;\n [_path];\n [_mode];\n [_autoClose];\n [_fd];\n [_defaultFlag];\n [_flags];\n [_finished] = false;\n [_pos];\n constructor(path, opt) {\n opt = opt || {};\n super(opt);\n this[_path] = path;\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined;\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode;\n this[_pos] = typeof opt.start === 'number' ? opt.start : undefined;\n this[_autoClose] =\n typeof opt.autoClose === 'boolean' ? opt.autoClose : true;\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== undefined ? 'r+' : 'w';\n this[_defaultFlag] = opt.flags === undefined;\n this[_flags] = opt.flags === undefined ? defaultFlag : opt.flags;\n if (this[_fd] === undefined) {\n this[_open]();\n }\n }\n emit(ev, ...args) {\n if (ev === 'error') {\n if (this[_errored]) {\n return false;\n }\n this[_errored] = true;\n }\n return super.emit(ev, ...args);\n }\n get fd() {\n return this[_fd];\n }\n get path() {\n return this[_path];\n }\n [_onerror](er) {\n this[_close]();\n this[_writing] = true;\n this.emit('error', er);\n }\n [_open]() {\n fs.open(this[_path], this[_flags], this[_mode], (er, fd) => this[_onopen](er, fd));\n }\n [_onopen](er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er &&\n er.code === 'ENOENT') {\n this[_flags] = 'w';\n this[_open]();\n }\n else if (er) {\n this[_onerror](er);\n }\n else {\n this[_fd] = fd;\n this.emit('open', fd);\n if (!this[_writing]) {\n this[_flush]();\n }\n }\n }\n end(buf, enc) {\n if (buf) {\n //@ts-ignore\n this.write(buf, enc);\n }\n this[_ended] = true;\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] &&\n !this[_queue].length &&\n typeof this[_fd] === 'number') {\n this[_onwrite](null, 0);\n }\n return this;\n }\n write(buf, enc) {\n if (typeof buf === 'string') {\n buf = Buffer.from(buf, enc);\n }\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'));\n return false;\n }\n if (this[_fd] === undefined || this[_writing] || this[_queue].length) {\n this[_queue].push(buf);\n this[_needDrain] = true;\n return false;\n }\n this[_writing] = true;\n this[_write](buf);\n return true;\n }\n [_write](buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => this[_onwrite](er, bw));\n }\n [_onwrite](er, bw) {\n if (er) {\n this[_onerror](er);\n }\n else {\n if (this[_pos] !== undefined && typeof bw === 'number') {\n this[_pos] += bw;\n }\n if (this[_queue].length) {\n this[_flush]();\n }\n else {\n this[_writing] = false;\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true;\n this[_close]();\n this.emit('finish');\n }\n else if (this[_needDrain]) {\n this[_needDrain] = false;\n this.emit('drain');\n }\n }\n }\n }\n [_flush]() {\n if (this[_queue].length === 0) {\n if (this[_ended]) {\n this[_onwrite](null, 0);\n }\n }\n else if (this[_queue].length === 1) {\n this[_write](this[_queue].pop());\n }\n else {\n const iovec = this[_queue];\n this[_queue] = [];\n writev(this[_fd], iovec, this[_pos], (er, bw) => this[_onwrite](er, bw));\n }\n }\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd];\n this[_fd] = undefined;\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'));\n }\n }\n}\nexport class WriteStreamSync extends WriteStream {\n [_open]() {\n let fd;\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode]);\n }\n catch (er) {\n if (er?.code === 'ENOENT') {\n this[_flags] = 'w';\n return this[_open]();\n }\n else {\n throw er;\n }\n }\n }\n else {\n fd = fs.openSync(this[_path], this[_flags], this[_mode]);\n }\n this[_onopen](null, fd);\n }\n [_close]() {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd];\n this[_fd] = undefined;\n fs.closeSync(fd);\n this.emit('close');\n }\n }\n [_write](buf) {\n // throw the original, but try to close if it fails\n let threw = true;\n try {\n this[_onwrite](null, fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]));\n threw = false;\n }\n finally {\n if (threw) {\n try {\n this[_close]();\n }\n catch {\n // ok error\n }\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map",
31
+ "const proc = typeof process === 'object' && process\n ? process\n : {\n stdout: null,\n stderr: null,\n };\nimport { EventEmitter } from 'node:events';\nimport Stream from 'node:stream';\nimport { StringDecoder } from 'node:string_decoder';\n/**\n * Return true if the argument is a Minipass stream, Node stream, or something\n * else that Minipass can interact with.\n */\nexport const isStream = (s) => !!s &&\n typeof s === 'object' &&\n (s instanceof Minipass ||\n s instanceof Stream ||\n isReadable(s) ||\n isWritable(s));\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\nexport const isReadable = (s) => !!s &&\n typeof s === 'object' &&\n s instanceof EventEmitter &&\n typeof s.pipe === 'function' &&\n // node core Writable streams have a pipe() method, but it throws\n s.pipe !== Stream.Writable.prototype.pipe;\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\nexport const isWritable = (s) => !!s &&\n typeof s === 'object' &&\n s instanceof EventEmitter &&\n typeof s.write === 'function' &&\n typeof s.end === 'function';\nconst EOF = Symbol('EOF');\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd');\nconst EMITTED_END = Symbol('emittedEnd');\nconst EMITTING_END = Symbol('emittingEnd');\nconst EMITTED_ERROR = Symbol('emittedError');\nconst CLOSED = Symbol('closed');\nconst READ = Symbol('read');\nconst FLUSH = Symbol('flush');\nconst FLUSHCHUNK = Symbol('flushChunk');\nconst ENCODING = Symbol('encoding');\nconst DECODER = Symbol('decoder');\nconst FLOWING = Symbol('flowing');\nconst PAUSED = Symbol('paused');\nconst RESUME = Symbol('resume');\nconst BUFFER = Symbol('buffer');\nconst PIPES = Symbol('pipes');\nconst BUFFERLENGTH = Symbol('bufferLength');\nconst BUFFERPUSH = Symbol('bufferPush');\nconst BUFFERSHIFT = Symbol('bufferShift');\nconst OBJECTMODE = Symbol('objectMode');\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed');\n// internal event when stream has an error\nconst ERROR = Symbol('error');\nconst EMITDATA = Symbol('emitData');\nconst EMITEND = Symbol('emitEnd');\nconst EMITEND2 = Symbol('emitEnd2');\nconst ASYNC = Symbol('async');\nconst ABORT = Symbol('abort');\nconst ABORTED = Symbol('aborted');\nconst SIGNAL = Symbol('signal');\nconst DATALISTENERS = Symbol('dataListeners');\nconst DISCARDED = Symbol('discarded');\nconst defer = (fn) => Promise.resolve().then(fn);\nconst nodefer = (fn) => fn();\nconst isEndish = (ev) => ev === 'end' || ev === 'finish' || ev === 'prefinish';\nconst isArrayBufferLike = (b) => b instanceof ArrayBuffer ||\n (!!b &&\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0);\nconst isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);\n/**\n * Internal class representing a pipe to a destination stream.\n *\n * @internal\n */\nclass Pipe {\n src;\n dest;\n opts;\n ondrain;\n constructor(src, dest, opts) {\n this.src = src;\n this.dest = dest;\n this.opts = opts;\n this.ondrain = () => src[RESUME]();\n this.dest.on('drain', this.ondrain);\n }\n unpipe() {\n this.dest.removeListener('drain', this.ondrain);\n }\n // only here for the prototype\n /* c8 ignore start */\n proxyErrors(_er) { }\n /* c8 ignore stop */\n end() {\n this.unpipe();\n if (this.opts.end)\n this.dest.end();\n }\n}\n/**\n * Internal class representing a pipe to a destination stream where\n * errors are proxied.\n *\n * @internal\n */\nclass PipeProxyErrors extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors);\n super.unpipe();\n }\n constructor(src, dest, opts) {\n super(src, dest, opts);\n this.proxyErrors = er => dest.emit('error', er);\n src.on('error', this.proxyErrors);\n }\n}\nconst isObjectModeOptions = (o) => !!o.objectMode;\nconst isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== 'buffer';\n/**\n * Main export, the Minipass class\n *\n * `RType` is the type of data emitted, defaults to Buffer\n *\n * `WType` is the type of data to be written, if RType is buffer or string,\n * then any {@link Minipass.ContiguousData} is allowed.\n *\n * `Events` is the set of event handler signatures that this object\n * will emit, see {@link Minipass.Events}\n */\nexport class Minipass extends EventEmitter {\n [FLOWING] = false;\n [PAUSED] = false;\n [PIPES] = [];\n [BUFFER] = [];\n [OBJECTMODE];\n [ENCODING];\n [ASYNC];\n [DECODER];\n [EOF] = false;\n [EMITTED_END] = false;\n [EMITTING_END] = false;\n [CLOSED] = false;\n [EMITTED_ERROR] = null;\n [BUFFERLENGTH] = 0;\n [DESTROYED] = false;\n [SIGNAL];\n [ABORTED] = false;\n [DATALISTENERS] = 0;\n [DISCARDED] = false;\n /**\n * true if the stream can be written\n */\n writable = true;\n /**\n * true if the stream can be read\n */\n readable = true;\n /**\n * If `RType` is Buffer, then options do not need to be provided.\n * Otherwise, an options object must be provided to specify either\n * {@link Minipass.SharedOptions.objectMode} or\n * {@link Minipass.SharedOptions.encoding}, as appropriate.\n */\n constructor(...args) {\n const options = (args[0] ||\n {});\n super();\n if (options.objectMode && typeof options.encoding === 'string') {\n throw new TypeError('Encoding and objectMode may not be used together');\n }\n if (isObjectModeOptions(options)) {\n this[OBJECTMODE] = true;\n this[ENCODING] = null;\n }\n else if (isEncodingOptions(options)) {\n this[ENCODING] = options.encoding;\n this[OBJECTMODE] = false;\n }\n else {\n this[OBJECTMODE] = false;\n this[ENCODING] = null;\n }\n this[ASYNC] = !!options.async;\n this[DECODER] = this[ENCODING]\n ? new StringDecoder(this[ENCODING])\n : null;\n //@ts-ignore - private option for debugging and testing\n if (options && options.debugExposeBuffer === true) {\n Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] });\n }\n //@ts-ignore - private option for debugging and testing\n if (options && options.debugExposePipes === true) {\n Object.defineProperty(this, 'pipes', { get: () => this[PIPES] });\n }\n const { signal } = options;\n if (signal) {\n this[SIGNAL] = signal;\n if (signal.aborted) {\n this[ABORT]();\n }\n else {\n signal.addEventListener('abort', () => this[ABORT]());\n }\n }\n }\n /**\n * The amount of data stored in the buffer waiting to be read.\n *\n * For Buffer strings, this will be the total byte length.\n * For string encoding streams, this will be the string character length,\n * according to JavaScript's `string.length` logic.\n * For objectMode streams, this is a count of the items waiting to be\n * emitted.\n */\n get bufferLength() {\n return this[BUFFERLENGTH];\n }\n /**\n * The `BufferEncoding` currently in use, or `null`\n */\n get encoding() {\n return this[ENCODING];\n }\n /**\n * @deprecated - This is a read only property\n */\n set encoding(_enc) {\n throw new Error('Encoding must be set at instantiation time');\n }\n /**\n * @deprecated - Encoding may only be set at instantiation time\n */\n setEncoding(_enc) {\n throw new Error('Encoding must be set at instantiation time');\n }\n /**\n * True if this is an objectMode stream\n */\n get objectMode() {\n return this[OBJECTMODE];\n }\n /**\n * @deprecated - This is a read-only property\n */\n set objectMode(_om) {\n throw new Error('objectMode must be set at instantiation time');\n }\n /**\n * true if this is an async stream\n */\n get ['async']() {\n return this[ASYNC];\n }\n /**\n * Set to true to make this stream async.\n *\n * Once set, it cannot be unset, as this would potentially cause incorrect\n * behavior. Ie, a sync stream can be made async, but an async stream\n * cannot be safely made sync.\n */\n set ['async'](a) {\n this[ASYNC] = this[ASYNC] || !!a;\n }\n // drop everything and get out of the flow completely\n [ABORT]() {\n this[ABORTED] = true;\n this.emit('abort', this[SIGNAL]?.reason);\n this.destroy(this[SIGNAL]?.reason);\n }\n /**\n * True if the stream has been aborted.\n */\n get aborted() {\n return this[ABORTED];\n }\n /**\n * No-op setter. Stream aborted status is set via the AbortSignal provided\n * in the constructor options.\n */\n set aborted(_) { }\n write(chunk, encoding, cb) {\n if (this[ABORTED])\n return false;\n if (this[EOF])\n throw new Error('write after end');\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(new Error('Cannot call write after a stream was destroyed'), { code: 'ERR_STREAM_DESTROYED' }));\n return true;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = 'utf8';\n }\n if (!encoding)\n encoding = 'utf8';\n const fn = this[ASYNC] ? defer : nodefer;\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything is only allowed if in object mode, so throw\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk)) {\n //@ts-ignore - sinful unsafe type changing\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n }\n else if (isArrayBufferLike(chunk)) {\n //@ts-ignore - sinful unsafe type changing\n chunk = Buffer.from(chunk);\n }\n else if (typeof chunk !== 'string') {\n throw new Error('Non-contiguous data written to non-objectMode stream');\n }\n }\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n // maybe impossible?\n /* c8 ignore start */\n if (this[FLOWING] && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true);\n /* c8 ignore stop */\n if (this[FLOWING])\n this.emit('data', chunk);\n else\n this[BUFFERPUSH](chunk);\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable');\n if (cb)\n fn(cb);\n return this[FLOWING];\n }\n // at this point the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable');\n if (cb)\n fn(cb);\n return this[FLOWING];\n }\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)) {\n //@ts-ignore - sinful unsafe type change\n chunk = Buffer.from(chunk, encoding);\n }\n if (Buffer.isBuffer(chunk) && this[ENCODING]) {\n //@ts-ignore - sinful unsafe type change\n chunk = this[DECODER].write(chunk);\n }\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this[FLOWING] && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true);\n if (this[FLOWING])\n this.emit('data', chunk);\n else\n this[BUFFERPUSH](chunk);\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable');\n if (cb)\n fn(cb);\n return this[FLOWING];\n }\n /**\n * Low-level explicit read method.\n *\n * In objectMode, the argument is ignored, and one item is returned if\n * available.\n *\n * `n` is the number of bytes (or in the case of encoding streams,\n * characters) to consume. If `n` is not provided, then the entire buffer\n * is returned, or `null` is returned if no data is available.\n *\n * If `n` is greater that the amount of data in the internal buffer,\n * then `null` is returned.\n */\n read(n) {\n if (this[DESTROYED])\n return null;\n this[DISCARDED] = false;\n if (this[BUFFERLENGTH] === 0 ||\n n === 0 ||\n (n && n > this[BUFFERLENGTH])) {\n this[MAYBE_EMIT_END]();\n return null;\n }\n if (this[OBJECTMODE])\n n = null;\n if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n // not object mode, so if we have an encoding, then RType is string\n // otherwise, must be Buffer\n this[BUFFER] = [\n (this[ENCODING]\n ? this[BUFFER].join('')\n : Buffer.concat(this[BUFFER], this[BUFFERLENGTH])),\n ];\n }\n const ret = this[READ](n || null, this[BUFFER][0]);\n this[MAYBE_EMIT_END]();\n return ret;\n }\n [READ](n, chunk) {\n if (this[OBJECTMODE])\n this[BUFFERSHIFT]();\n else {\n const c = chunk;\n if (n === c.length || n === null)\n this[BUFFERSHIFT]();\n else if (typeof c === 'string') {\n this[BUFFER][0] = c.slice(n);\n chunk = c.slice(0, n);\n this[BUFFERLENGTH] -= n;\n }\n else {\n this[BUFFER][0] = c.subarray(n);\n chunk = c.subarray(0, n);\n this[BUFFERLENGTH] -= n;\n }\n }\n this.emit('data', chunk);\n if (!this[BUFFER].length && !this[EOF])\n this.emit('drain');\n return chunk;\n }\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = undefined;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = 'utf8';\n }\n if (chunk !== undefined)\n this.write(chunk, encoding);\n if (cb)\n this.once('end', cb);\n this[EOF] = true;\n this.writable = false;\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this[FLOWING] || !this[PAUSED])\n this[MAYBE_EMIT_END]();\n return this;\n }\n // don't let the internal resume be overwritten\n [RESUME]() {\n if (this[DESTROYED])\n return;\n if (!this[DATALISTENERS] && !this[PIPES].length) {\n this[DISCARDED] = true;\n }\n this[PAUSED] = false;\n this[FLOWING] = true;\n this.emit('resume');\n if (this[BUFFER].length)\n this[FLUSH]();\n else if (this[EOF])\n this[MAYBE_EMIT_END]();\n else\n this.emit('drain');\n }\n /**\n * Resume the stream if it is currently in a paused state\n *\n * If called when there are no pipe destinations or `data` event listeners,\n * this will place the stream in a \"discarded\" state, where all data will\n * be thrown away. The discarded state is removed if a pipe destination or\n * data handler is added, if pause() is called, or if any synchronous or\n * asynchronous iteration is started.\n */\n resume() {\n return this[RESUME]();\n }\n /**\n * Pause the stream\n */\n pause() {\n this[FLOWING] = false;\n this[PAUSED] = true;\n this[DISCARDED] = false;\n }\n /**\n * true if the stream has been forcibly destroyed\n */\n get destroyed() {\n return this[DESTROYED];\n }\n /**\n * true if the stream is currently in a flowing state, meaning that\n * any writes will be immediately emitted.\n */\n get flowing() {\n return this[FLOWING];\n }\n /**\n * true if the stream is currently in a paused state\n */\n get paused() {\n return this[PAUSED];\n }\n [BUFFERPUSH](chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1;\n else\n this[BUFFERLENGTH] += chunk.length;\n this[BUFFER].push(chunk);\n }\n [BUFFERSHIFT]() {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1;\n else\n this[BUFFERLENGTH] -= this[BUFFER][0].length;\n return this[BUFFER].shift();\n }\n [FLUSH](noDrain = false) {\n do { } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&\n this[BUFFER].length);\n if (!noDrain && !this[BUFFER].length && !this[EOF])\n this.emit('drain');\n }\n [FLUSHCHUNK](chunk) {\n this.emit('data', chunk);\n return this[FLOWING];\n }\n /**\n * Pipe all data emitted by this stream into the destination provided.\n *\n * Triggers the flow of data.\n */\n pipe(dest, opts) {\n if (this[DESTROYED])\n return dest;\n this[DISCARDED] = false;\n const ended = this[EMITTED_END];\n opts = opts || {};\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false;\n else\n opts.end = opts.end !== false;\n opts.proxyErrors = !!opts.proxyErrors;\n // piping an ended stream ends immediately\n if (ended) {\n if (opts.end)\n dest.end();\n }\n else {\n // \"as\" here just ignores the WType, which pipes don't care about,\n // since they're only consuming from us, and writing to the dest\n this[PIPES].push(!opts.proxyErrors\n ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts));\n if (this[ASYNC])\n defer(() => this[RESUME]());\n else\n this[RESUME]();\n }\n return dest;\n }\n /**\n * Fully unhook a piped destination stream.\n *\n * If the destination stream was the only consumer of this stream (ie,\n * there are no other piped destinations or `'data'` event listeners)\n * then the flow of data will stop until there is another consumer or\n * {@link Minipass#resume} is explicitly called.\n */\n unpipe(dest) {\n const p = this[PIPES].find(p => p.dest === dest);\n if (p) {\n if (this[PIPES].length === 1) {\n if (this[FLOWING] && this[DATALISTENERS] === 0) {\n this[FLOWING] = false;\n }\n this[PIPES] = [];\n }\n else\n this[PIPES].splice(this[PIPES].indexOf(p), 1);\n p.unpipe();\n }\n }\n /**\n * Alias for {@link Minipass#on}\n */\n addListener(ev, handler) {\n return this.on(ev, handler);\n }\n /**\n * Mostly identical to `EventEmitter.on`, with the following\n * behavior differences to prevent data loss and unnecessary hangs:\n *\n * - Adding a 'data' event handler will trigger the flow of data\n *\n * - Adding a 'readable' event handler when there is data waiting to be read\n * will cause 'readable' to be emitted immediately.\n *\n * - Adding an 'endish' event handler ('end', 'finish', etc.) which has\n * already passed will cause the event to be emitted immediately and all\n * handlers removed.\n *\n * - Adding an 'error' event handler after an error has been emitted will\n * cause the event to be re-emitted immediately with the error previously\n * raised.\n */\n on(ev, handler) {\n const ret = super.on(ev, handler);\n if (ev === 'data') {\n this[DISCARDED] = false;\n this[DATALISTENERS]++;\n if (!this[PIPES].length && !this[FLOWING]) {\n this[RESUME]();\n }\n }\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {\n super.emit('readable');\n }\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev);\n this.removeAllListeners(ev);\n }\n else if (ev === 'error' && this[EMITTED_ERROR]) {\n const h = handler;\n if (this[ASYNC])\n defer(() => h.call(this, this[EMITTED_ERROR]));\n else\n h.call(this, this[EMITTED_ERROR]);\n }\n return ret;\n }\n /**\n * Alias for {@link Minipass#off}\n */\n removeListener(ev, handler) {\n return this.off(ev, handler);\n }\n /**\n * Mostly identical to `EventEmitter.off`\n *\n * If a 'data' event handler is removed, and it was the last consumer\n * (ie, there are no pipe destinations or other 'data' event listeners),\n * then the flow of data will stop until there is another consumer or\n * {@link Minipass#resume} is explicitly called.\n */\n off(ev, handler) {\n const ret = super.off(ev, handler);\n // if we previously had listeners, and now we don't, and we don't\n // have any pipes, then stop the flow, unless it's been explicitly\n // put in a discarded flowing state via stream.resume().\n if (ev === 'data') {\n this[DATALISTENERS] = this.listeners('data').length;\n if (this[DATALISTENERS] === 0 &&\n !this[DISCARDED] &&\n !this[PIPES].length) {\n this[FLOWING] = false;\n }\n }\n return ret;\n }\n /**\n * Mostly identical to `EventEmitter.removeAllListeners`\n *\n * If all 'data' event handlers are removed, and they were the last consumer\n * (ie, there are no pipe destinations), then the flow of data will stop\n * until there is another consumer or {@link Minipass#resume} is explicitly\n * called.\n */\n removeAllListeners(ev) {\n const ret = super.removeAllListeners(ev);\n if (ev === 'data' || ev === undefined) {\n this[DATALISTENERS] = 0;\n if (!this[DISCARDED] && !this[PIPES].length) {\n this[FLOWING] = false;\n }\n }\n return ret;\n }\n /**\n * true if the 'end' event has been emitted\n */\n get emittedEnd() {\n return this[EMITTED_END];\n }\n [MAYBE_EMIT_END]() {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this[BUFFER].length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true;\n this.emit('end');\n this.emit('prefinish');\n this.emit('finish');\n if (this[CLOSED])\n this.emit('close');\n this[EMITTING_END] = false;\n }\n }\n /**\n * Mostly identical to `EventEmitter.emit`, with the following\n * behavior differences to prevent data loss and unnecessary hangs:\n *\n * If the stream has been destroyed, and the event is something other\n * than 'close' or 'error', then `false` is returned and no handlers\n * are called.\n *\n * If the event is 'end', and has already been emitted, then the event\n * is ignored. If the stream is in a paused or non-flowing state, then\n * the event will be deferred until data flow resumes. If the stream is\n * async, then handlers will be called on the next tick rather than\n * immediately.\n *\n * If the event is 'close', and 'end' has not yet been emitted, then\n * the event will be deferred until after 'end' is emitted.\n *\n * If the event is 'error', and an AbortSignal was provided for the stream,\n * and there are no listeners, then the event is ignored, matching the\n * behavior of node core streams in the presense of an AbortSignal.\n *\n * If the event is 'finish' or 'prefinish', then all listeners will be\n * removed after emitting the event, to prevent double-firing.\n */\n emit(ev, ...args) {\n const data = args[0];\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' &&\n ev !== 'close' &&\n ev !== DESTROYED &&\n this[DESTROYED]) {\n return false;\n }\n else if (ev === 'data') {\n return !this[OBJECTMODE] && !data\n ? false\n : this[ASYNC]\n ? (defer(() => this[EMITDATA](data)), true)\n : this[EMITDATA](data);\n }\n else if (ev === 'end') {\n return this[EMITEND]();\n }\n else if (ev === 'close') {\n this[CLOSED] = true;\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return false;\n const ret = super.emit('close');\n this.removeAllListeners('close');\n return ret;\n }\n else if (ev === 'error') {\n this[EMITTED_ERROR] = data;\n super.emit(ERROR, data);\n const ret = !this[SIGNAL] || this.listeners('error').length\n ? super.emit('error', data)\n : false;\n this[MAYBE_EMIT_END]();\n return ret;\n }\n else if (ev === 'resume') {\n const ret = super.emit('resume');\n this[MAYBE_EMIT_END]();\n return ret;\n }\n else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev);\n this.removeAllListeners(ev);\n return ret;\n }\n // Some other unknown event\n const ret = super.emit(ev, ...args);\n this[MAYBE_EMIT_END]();\n return ret;\n }\n [EMITDATA](data) {\n for (const p of this[PIPES]) {\n if (p.dest.write(data) === false)\n this.pause();\n }\n const ret = this[DISCARDED] ? false : super.emit('data', data);\n this[MAYBE_EMIT_END]();\n return ret;\n }\n [EMITEND]() {\n if (this[EMITTED_END])\n return false;\n this[EMITTED_END] = true;\n this.readable = false;\n return this[ASYNC]\n ? (defer(() => this[EMITEND2]()), true)\n : this[EMITEND2]();\n }\n [EMITEND2]() {\n if (this[DECODER]) {\n const data = this[DECODER].end();\n if (data) {\n for (const p of this[PIPES]) {\n p.dest.write(data);\n }\n if (!this[DISCARDED])\n super.emit('data', data);\n }\n }\n for (const p of this[PIPES]) {\n p.end();\n }\n const ret = super.emit('end');\n this.removeAllListeners('end');\n return ret;\n }\n /**\n * Return a Promise that resolves to an array of all emitted data once\n * the stream ends.\n */\n async collect() {\n const buf = Object.assign([], {\n dataLength: 0,\n });\n if (!this[OBJECTMODE])\n buf.dataLength = 0;\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise();\n this.on('data', c => {\n buf.push(c);\n if (!this[OBJECTMODE])\n buf.dataLength += c.length;\n });\n await p;\n return buf;\n }\n /**\n * Return a Promise that resolves to the concatenation of all emitted data\n * once the stream ends.\n *\n * Not allowed on objectMode streams.\n */\n async concat() {\n if (this[OBJECTMODE]) {\n throw new Error('cannot concat in objectMode');\n }\n const buf = await this.collect();\n return (this[ENCODING]\n ? buf.join('')\n : Buffer.concat(buf, buf.dataLength));\n }\n /**\n * Return a void Promise that resolves once the stream ends.\n */\n async promise() {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')));\n this.on('error', er => reject(er));\n this.on('end', () => resolve());\n });\n }\n /**\n * Asynchronous `for await of` iteration.\n *\n * This will continue emitting all chunks until the stream terminates.\n */\n [Symbol.asyncIterator]() {\n // set this up front, in case the consumer doesn't call next()\n // right away.\n this[DISCARDED] = false;\n let stopped = false;\n const stop = async () => {\n this.pause();\n stopped = true;\n return { value: undefined, done: true };\n };\n const next = () => {\n if (stopped)\n return stop();\n const res = this.read();\n if (res !== null)\n return Promise.resolve({ done: false, value: res });\n if (this[EOF])\n return stop();\n let resolve;\n let reject;\n const onerr = (er) => {\n this.off('data', ondata);\n this.off('end', onend);\n this.off(DESTROYED, ondestroy);\n stop();\n reject(er);\n };\n const ondata = (value) => {\n this.off('error', onerr);\n this.off('end', onend);\n this.off(DESTROYED, ondestroy);\n this.pause();\n resolve({ value, done: !!this[EOF] });\n };\n const onend = () => {\n this.off('error', onerr);\n this.off('data', ondata);\n this.off(DESTROYED, ondestroy);\n stop();\n resolve({ done: true, value: undefined });\n };\n const ondestroy = () => onerr(new Error('stream destroyed'));\n return new Promise((res, rej) => {\n reject = rej;\n resolve = res;\n this.once(DESTROYED, ondestroy);\n this.once('error', onerr);\n this.once('end', onend);\n this.once('data', ondata);\n });\n };\n return {\n next,\n throw: stop,\n return: stop,\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n }\n /**\n * Synchronous `for of` iteration.\n *\n * The iteration will terminate when the internal buffer runs out, even\n * if the stream has not yet terminated.\n */\n [Symbol.iterator]() {\n // set this up front, in case the consumer doesn't call next()\n // right away.\n this[DISCARDED] = false;\n let stopped = false;\n const stop = () => {\n this.pause();\n this.off(ERROR, stop);\n this.off(DESTROYED, stop);\n this.off('end', stop);\n stopped = true;\n return { done: true, value: undefined };\n };\n const next = () => {\n if (stopped)\n return stop();\n const value = this.read();\n return value === null ? stop() : { done: false, value };\n };\n this.once('end', stop);\n this.once(ERROR, stop);\n this.once(DESTROYED, stop);\n return {\n next,\n throw: stop,\n return: stop,\n [Symbol.iterator]() {\n return this;\n },\n };\n }\n /**\n * Destroy a stream, preventing it from being used for any further purpose.\n *\n * If the stream has a `close()` method, then it will be called on\n * destruction.\n *\n * After destruction, any attempt to write data, read data, or emit most\n * events will be ignored.\n *\n * If an error argument is provided, then it will be emitted in an\n * 'error' event.\n */\n destroy(er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er);\n else\n this.emit(DESTROYED);\n return this;\n }\n this[DESTROYED] = true;\n this[DISCARDED] = true;\n // throw away all buffered data, it's never coming out\n this[BUFFER].length = 0;\n this[BUFFERLENGTH] = 0;\n const wc = this;\n if (typeof wc.close === 'function' && !this[CLOSED])\n wc.close();\n if (er)\n this.emit('error', er);\n // if no error to emit, still reject pending promises\n else\n this.emit(DESTROYED);\n return this;\n }\n /**\n * Alias for {@link isStream}\n *\n * Former export location, maintained for backwards compatibility.\n *\n * @deprecated\n */\n static get isStream() {\n return isStream;\n }\n}\n//# sourceMappingURL=index.js.map",
32
+ "import { WriteStream, WriteStreamSync } from '@isaacs/fs-minipass';\nimport path from 'node:path';\nimport { list } from './list.js';\nimport { makeCommand } from './make-command.js';\nimport { Pack, PackSync } from './pack.js';\nconst createFileSync = (opt, files) => {\n const p = new PackSync(opt);\n const stream = new WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n });\n p.pipe(stream);\n addFilesSync(p, files);\n};\nconst createFile = (opt, files) => {\n const p = new Pack(opt);\n const stream = new WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n });\n p.pipe(stream);\n const promise = new Promise((res, rej) => {\n stream.on('error', rej);\n stream.on('close', res);\n p.on('error', rej);\n });\n addFilesAsync(p, files);\n return promise;\n};\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n list({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onReadEntry: entry => p.add(entry),\n });\n }\n else {\n p.add(file);\n }\n });\n p.end();\n};\nconst addFilesAsync = async (p, files) => {\n for (let i = 0; i < files.length; i++) {\n const file = String(files[i]);\n if (file.charAt(0) === '@') {\n await list({\n file: path.resolve(String(p.cwd), file.slice(1)),\n noResume: true,\n onReadEntry: entry => {\n p.add(entry);\n },\n });\n }\n else {\n p.add(file);\n }\n }\n p.end();\n};\nconst createSync = (opt, files) => {\n const p = new PackSync(opt);\n addFilesSync(p, files);\n return p;\n};\nconst createAsync = (opt, files) => {\n const p = new Pack(opt);\n addFilesAsync(p, files);\n return p;\n};\nexport const create = makeCommand(createFileSync, createFile, createSync, createAsync, (_opt, files) => {\n if (!files?.length) {\n throw new TypeError('no paths specified to add to archive');\n }\n});\n//# sourceMappingURL=create.js.map",
33
+ "// tar -t\nimport * as fsm from '@isaacs/fs-minipass';\nimport fs from 'node:fs';\nimport { dirname, parse } from 'path';\nimport { makeCommand } from './make-command.js';\nimport { Parser } from './parse.js';\nimport { stripTrailingSlashes } from './strip-trailing-slashes.js';\nconst onReadEntryFunction = (opt) => {\n const onReadEntry = opt.onReadEntry;\n opt.onReadEntry =\n onReadEntry ?\n e => {\n onReadEntry(e);\n e.resume();\n }\n : e => e.resume();\n};\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nexport const filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripTrailingSlashes(f), true]));\n const filter = opt.filter;\n const mapHas = (file, r = '') => {\n const root = r || parse(file).root || '.';\n let ret;\n if (file === root)\n ret = false;\n else {\n const m = map.get(file);\n if (m !== undefined) {\n ret = m;\n }\n else {\n ret = mapHas(dirname(file), root);\n }\n }\n map.set(file, ret);\n return ret;\n };\n opt.filter =\n filter ?\n (file, entry) => filter(file, entry) && mapHas(stripTrailingSlashes(file))\n : file => mapHas(stripTrailingSlashes(file));\n};\nconst listFileSync = (opt) => {\n const p = new Parser(opt);\n const file = opt.file;\n let fd;\n try {\n fd = fs.openSync(file, 'r');\n const stat = fs.fstatSync(fd);\n const readSize = opt.maxReadSize || 16 * 1024 * 1024;\n if (stat.size < readSize) {\n const buf = Buffer.allocUnsafe(stat.size);\n const read = fs.readSync(fd, buf, 0, stat.size, 0);\n p.end(read === buf.byteLength ? buf : buf.subarray(0, read));\n }\n else {\n let pos = 0;\n const buf = Buffer.allocUnsafe(readSize);\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos);\n if (bytesRead === 0)\n break;\n pos += bytesRead;\n p.write(buf.subarray(0, bytesRead));\n }\n p.end();\n }\n }\n finally {\n if (typeof fd === 'number') {\n try {\n fs.closeSync(fd);\n /* c8 ignore next */\n }\n catch (er) { }\n }\n }\n};\nconst listFile = (opt, _files) => {\n const parse = new Parser(opt);\n const readSize = opt.maxReadSize || 16 * 1024 * 1024;\n const file = opt.file;\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject);\n parse.on('end', resolve);\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er);\n }\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n });\n stream.on('error', reject);\n stream.pipe(parse);\n }\n });\n });\n return p;\n};\nexport const list = makeCommand(listFileSync, listFile, opt => new Parser(opt), opt => new Parser(opt), (opt, files) => {\n if (files?.length)\n filesFilter(opt, files);\n if (!opt.noResume)\n onReadEntryFunction(opt);\n});\n//# sourceMappingURL=list.js.map",
34
+ "// turn tar(1) style args like `C` into the more verbose things like `cwd`\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n ['onentry', 'onReadEntry'],\n]);\nexport const isSyncFile = (o) => !!o.sync && !!o.file;\nexport const isAsyncFile = (o) => !o.sync && !!o.file;\nexport const isSyncNoFile = (o) => !!o.sync && !o.file;\nexport const isAsyncNoFile = (o) => !o.sync && !o.file;\nexport const isSync = (o) => !!o.sync;\nexport const isAsync = (o) => !o.sync;\nexport const isFile = (o) => !!o.file;\nexport const isNoFile = (o) => !o.file;\nconst dealiasKey = (k) => {\n const d = argmap.get(k);\n if (d)\n return d;\n return k;\n};\nexport const dealias = (opt = {}) => {\n if (!opt)\n return {};\n const result = {};\n for (const [key, v] of Object.entries(opt)) {\n // TS doesn't know that aliases are going to always be the same type\n const k = dealiasKey(key);\n result[k] = v;\n }\n // affordance for deprecated noChmod -> chmod\n if (result.chmod === undefined && result.noChmod === false) {\n result.chmod = true;\n }\n delete result.noChmod;\n return result;\n};\n//# sourceMappingURL=options.js.map",
35
+ "import { dealias, isAsyncFile, isAsyncNoFile, isSyncFile, isSyncNoFile, } from './options.js';\nexport const makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => {\n return Object.assign((opt_ = [], entries, cb) => {\n if (Array.isArray(opt_)) {\n entries = opt_;\n opt_ = {};\n }\n if (typeof entries === 'function') {\n cb = entries;\n entries = undefined;\n }\n if (!entries) {\n entries = [];\n }\n else {\n entries = Array.from(entries);\n }\n const opt = dealias(opt_);\n validate?.(opt, entries);\n if (isSyncFile(opt)) {\n if (typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions');\n }\n return syncFile(opt, entries);\n }\n else if (isAsyncFile(opt)) {\n const p = asyncFile(opt, entries);\n // weirdness to make TS happy\n const c = cb ? cb : undefined;\n return c ? p.then(() => c(), c) : p;\n }\n else if (isSyncNoFile(opt)) {\n if (typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions');\n }\n return syncNoFile(opt, entries);\n }\n else if (isAsyncNoFile(opt)) {\n if (typeof cb === 'function') {\n throw new TypeError('callback only supported with file option');\n }\n return asyncNoFile(opt, entries);\n /* c8 ignore start */\n }\n else {\n throw new Error('impossible options??');\n }\n /* c8 ignore stop */\n }, {\n syncFile,\n asyncFile,\n syncNoFile,\n asyncNoFile,\n validate,\n });\n};\n//# sourceMappingURL=make-command.js.map",
36
+ "// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a list of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\nimport { EventEmitter as EE } from 'events';\nimport { BrotliDecompress, Unzip, ZstdDecompress } from 'minizlib';\nimport { Header } from './header.js';\nimport { Pax } from './pax.js';\nimport { ReadEntry } from './read-entry.js';\nimport { warnMethod, } from './warn-method.js';\nconst maxMetaEntrySize = 1024 * 1024;\nconst gzipHeader = Buffer.from([0x1f, 0x8b]);\nconst zstdHeader = Buffer.from([0x28, 0xb5, 0x2f, 0xfd]);\nconst ZIP_HEADER_LEN = Math.max(gzipHeader.length, zstdHeader.length);\nconst STATE = Symbol('state');\nconst WRITEENTRY = Symbol('writeEntry');\nconst READENTRY = Symbol('readEntry');\nconst NEXTENTRY = Symbol('nextEntry');\nconst PROCESSENTRY = Symbol('processEntry');\nconst EX = Symbol('extendedHeader');\nconst GEX = Symbol('globalExtendedHeader');\nconst META = Symbol('meta');\nconst EMITMETA = Symbol('emitMeta');\nconst BUFFER = Symbol('buffer');\nconst QUEUE = Symbol('queue');\nconst ENDED = Symbol('ended');\nconst EMITTEDEND = Symbol('emittedEnd');\nconst EMIT = Symbol('emit');\nconst UNZIP = Symbol('unzip');\nconst CONSUMECHUNK = Symbol('consumeChunk');\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub');\nconst CONSUMEBODY = Symbol('consumeBody');\nconst CONSUMEMETA = Symbol('consumeMeta');\nconst CONSUMEHEADER = Symbol('consumeHeader');\nconst CONSUMING = Symbol('consuming');\nconst BUFFERCONCAT = Symbol('bufferConcat');\nconst MAYBEEND = Symbol('maybeEnd');\nconst WRITING = Symbol('writing');\nconst ABORTED = Symbol('aborted');\nconst DONE = Symbol('onDone');\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry');\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock');\nconst SAW_EOF = Symbol('sawEOF');\nconst CLOSESTREAM = Symbol('closeStream');\nconst noop = () => true;\nexport class Parser extends EE {\n file;\n strict;\n maxMetaEntrySize;\n filter;\n brotli;\n zstd;\n writable = true;\n readable = false;\n [QUEUE] = [];\n [BUFFER];\n [READENTRY];\n [WRITEENTRY];\n [STATE] = 'begin';\n [META] = '';\n [EX];\n [GEX];\n [ENDED] = false;\n [UNZIP];\n [ABORTED] = false;\n [SAW_VALID_ENTRY];\n [SAW_NULL_BLOCK] = false;\n [SAW_EOF] = false;\n [WRITING] = false;\n [CONSUMING] = false;\n [EMITTEDEND] = false;\n constructor(opt = {}) {\n super();\n this.file = opt.file || '';\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, () => {\n if (this[STATE] === 'begin' ||\n this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format');\n }\n });\n if (opt.ondone) {\n this.on(DONE, opt.ondone);\n }\n else {\n this.on(DONE, () => {\n this.emit('prefinish');\n this.emit('finish');\n this.emit('end');\n });\n }\n this.strict = !!opt.strict;\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize;\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop;\n // Unlike gzip, brotli doesn't have any magic bytes to identify it\n // Users need to explicitly tell us they're extracting a brotli file\n // Or we infer from the file extension\n const isTBR = opt.file &&\n (opt.file.endsWith('.tar.br') || opt.file.endsWith('.tbr'));\n // if it's a tbr file it MIGHT be brotli, but we don't know until\n // we look at it and verify it's not a valid tar file.\n this.brotli =\n !(opt.gzip || opt.zstd) && opt.brotli !== undefined ? opt.brotli\n : isTBR ? undefined\n : false;\n // zstd has magic bytes to identify it, but we also support explicit options\n // and file extension detection\n const isTZST = opt.file &&\n (opt.file.endsWith('.tar.zst') || opt.file.endsWith('.tzst'));\n this.zstd =\n !(opt.gzip || opt.brotli) && opt.zstd !== undefined ? opt.zstd\n : isTZST ? true\n : undefined;\n // have to set this so that streams are ok piping into it\n this.on('end', () => this[CLOSESTREAM]());\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn);\n }\n if (typeof opt.onReadEntry === 'function') {\n this.on('entry', opt.onReadEntry);\n }\n }\n warn(code, message, data = {}) {\n warnMethod(this, code, message, data);\n }\n [CONSUMEHEADER](chunk, position) {\n if (this[SAW_VALID_ENTRY] === undefined) {\n this[SAW_VALID_ENTRY] = false;\n }\n let header;\n try {\n header = new Header(chunk, position, this[EX], this[GEX]);\n }\n catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er);\n }\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true;\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin') {\n this[STATE] = 'header';\n }\n this[EMIT]('eof');\n }\n else {\n this[SAW_NULL_BLOCK] = true;\n this[EMIT]('nullBlock');\n }\n }\n else {\n this[SAW_NULL_BLOCK] = false;\n if (!header.cksumValid) {\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', { header });\n }\n else if (!header.path) {\n this.warn('TAR_ENTRY_INVALID', 'path is required', { header });\n }\n else {\n const type = header.type;\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {\n header,\n });\n }\n else if (!/^(Symbolic)?Link$/.test(type) &&\n !/^(Global)?ExtendedHeader$/.test(type) &&\n header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {\n header,\n });\n }\n else {\n const entry = (this[WRITEENTRY] = new ReadEntry(header, this[EX], this[GEX]));\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid) {\n this[SAW_VALID_ENTRY] = true;\n }\n };\n entry.on('end', onend);\n }\n else {\n this[SAW_VALID_ENTRY] = true;\n }\n }\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true;\n this[EMIT]('ignoredEntry', entry);\n this[STATE] = 'ignore';\n entry.resume();\n }\n else if (entry.size > 0) {\n this[META] = '';\n entry.on('data', c => (this[META] += c));\n this[STATE] = 'meta';\n }\n }\n else {\n this[EX] = undefined;\n entry.ignore =\n entry.ignore || !this.filter(entry.path, entry);\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry);\n this[STATE] = entry.remain ? 'ignore' : 'header';\n entry.resume();\n }\n else {\n if (entry.remain) {\n this[STATE] = 'body';\n }\n else {\n this[STATE] = 'header';\n entry.end();\n }\n if (!this[READENTRY]) {\n this[QUEUE].push(entry);\n this[NEXTENTRY]();\n }\n else {\n this[QUEUE].push(entry);\n }\n }\n }\n }\n }\n }\n }\n [CLOSESTREAM]() {\n queueMicrotask(() => this.emit('close'));\n }\n [PROCESSENTRY](entry) {\n let go = true;\n if (!entry) {\n this[READENTRY] = undefined;\n go = false;\n }\n else if (Array.isArray(entry)) {\n const [ev, ...args] = entry;\n this.emit(ev, ...args);\n }\n else {\n this[READENTRY] = entry;\n this.emit('entry', entry);\n if (!entry.emittedEnd) {\n entry.on('end', () => this[NEXTENTRY]());\n go = false;\n }\n }\n return go;\n }\n [NEXTENTRY]() {\n do { } while (this[PROCESSENTRY](this[QUEUE].shift()));\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY];\n const drainNow = !re || re.flowing || re.size === re.remain;\n if (drainNow) {\n if (!this[WRITING]) {\n this.emit('drain');\n }\n }\n else {\n re.once('drain', () => this.emit('drain'));\n }\n }\n }\n [CONSUMEBODY](chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY];\n /* c8 ignore start */\n if (!entry) {\n throw new Error('attempt to consume body without entry??');\n }\n const br = entry.blockRemain ?? 0;\n /* c8 ignore stop */\n const c = br >= chunk.length && position === 0 ?\n chunk\n : chunk.subarray(position, position + br);\n entry.write(c);\n if (!entry.blockRemain) {\n this[STATE] = 'header';\n this[WRITEENTRY] = undefined;\n entry.end();\n }\n return c.length;\n }\n [CONSUMEMETA](chunk, position) {\n const entry = this[WRITEENTRY];\n const ret = this[CONSUMEBODY](chunk, position);\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY] && entry) {\n this[EMITMETA](entry);\n }\n return ret;\n }\n [EMIT](ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY]) {\n this.emit(ev, data, extra);\n }\n else {\n this[QUEUE].push([ev, data, extra]);\n }\n }\n [EMITMETA](entry) {\n this[EMIT]('meta', this[META]);\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false);\n break;\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true);\n break;\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath': {\n const ex = this[EX] ?? Object.create(null);\n this[EX] = ex;\n ex.path = this[META].replace(/\\0.*/, '');\n break;\n }\n case 'NextFileHasLongLinkpath': {\n const ex = this[EX] || Object.create(null);\n this[EX] = ex;\n ex.linkpath = this[META].replace(/\\0.*/, '');\n break;\n }\n /* c8 ignore start */\n default:\n throw new Error('unknown meta: ' + entry.type);\n /* c8 ignore stop */\n }\n }\n abort(error) {\n this[ABORTED] = true;\n this.emit('abort', error);\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false });\n }\n write(chunk, encoding, cb) {\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n if (typeof chunk === 'string') {\n chunk = Buffer.from(chunk, \n /* c8 ignore next */\n typeof encoding === 'string' ? encoding : 'utf8');\n }\n if (this[ABORTED]) {\n /* c8 ignore next */\n cb?.();\n return false;\n }\n // first write, might be gzipped, zstd, or brotli compressed\n const needSniff = this[UNZIP] === undefined ||\n (this.brotli === undefined && this[UNZIP] === false);\n if (needSniff && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk]);\n this[BUFFER] = undefined;\n }\n if (chunk.length < ZIP_HEADER_LEN) {\n this[BUFFER] = chunk;\n /* c8 ignore next */\n cb?.();\n return true;\n }\n // look for gzip header\n for (let i = 0; this[UNZIP] === undefined && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i]) {\n this[UNZIP] = false;\n }\n }\n // look for zstd header if gzip header not found\n let isZstd = false;\n if (this[UNZIP] === false && this.zstd !== false) {\n isZstd = true;\n for (let i = 0; i < zstdHeader.length; i++) {\n if (chunk[i] !== zstdHeader[i]) {\n isZstd = false;\n break;\n }\n }\n }\n const maybeBrotli = this.brotli === undefined && !isZstd;\n if (this[UNZIP] === false && maybeBrotli) {\n // read the first header to see if it's a valid tar file. If so,\n // we can safely assume that it's not actually brotli, despite the\n // .tbr or .tar.br file extension.\n // if we ended before getting a full chunk, yes, def brotli\n if (chunk.length < 512) {\n if (this[ENDED]) {\n this.brotli = true;\n }\n else {\n this[BUFFER] = chunk;\n /* c8 ignore next */\n cb?.();\n return true;\n }\n }\n else {\n // if it's tar, it's pretty reliably not brotli, chances of\n // that happening are astronomical.\n try {\n new Header(chunk.subarray(0, 512));\n this.brotli = false;\n }\n catch (_) {\n this.brotli = true;\n }\n }\n }\n if (this[UNZIP] === undefined ||\n (this[UNZIP] === false && (this.brotli || isZstd))) {\n const ended = this[ENDED];\n this[ENDED] = false;\n this[UNZIP] =\n this[UNZIP] === undefined ? new Unzip({})\n : isZstd ? new ZstdDecompress({})\n : new BrotliDecompress({});\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk));\n this[UNZIP].on('error', er => this.abort(er));\n this[UNZIP].on('end', () => {\n this[ENDED] = true;\n this[CONSUMECHUNK]();\n });\n this[WRITING] = true;\n const ret = !!this[UNZIP][ended ? 'end' : 'write'](chunk);\n this[WRITING] = false;\n cb?.();\n return ret;\n }\n }\n this[WRITING] = true;\n if (this[UNZIP]) {\n this[UNZIP].write(chunk);\n }\n else {\n this[CONSUMECHUNK](chunk);\n }\n this[WRITING] = false;\n // return false if there's a queue, or if the current entry isn't flowing\n const ret = this[QUEUE].length ? false\n : this[READENTRY] ? this[READENTRY].flowing\n : true;\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length) {\n this[READENTRY]?.once('drain', () => this.emit('drain'));\n }\n /* c8 ignore next */\n cb?.();\n return ret;\n }\n [BUFFERCONCAT](c) {\n if (c && !this[ABORTED]) {\n this[BUFFER] =\n this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c;\n }\n }\n [MAYBEEND]() {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true;\n const entry = this[WRITEENTRY];\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0;\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry });\n if (this[BUFFER]) {\n entry.write(this[BUFFER]);\n }\n entry.end();\n }\n this[EMIT](DONE);\n }\n }\n [CONSUMECHUNK](chunk) {\n if (this[CONSUMING] && chunk) {\n this[BUFFERCONCAT](chunk);\n }\n else if (!chunk && !this[BUFFER]) {\n this[MAYBEEND]();\n }\n else if (chunk) {\n this[CONSUMING] = true;\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk);\n const c = this[BUFFER];\n this[BUFFER] = undefined;\n this[CONSUMECHUNKSUB](c);\n }\n else {\n this[CONSUMECHUNKSUB](chunk);\n }\n while (this[BUFFER] &&\n this[BUFFER]?.length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER];\n this[BUFFER] = undefined;\n this[CONSUMECHUNKSUB](c);\n }\n this[CONSUMING] = false;\n }\n if (!this[BUFFER] || this[ENDED]) {\n this[MAYBEEND]();\n }\n }\n [CONSUMECHUNKSUB](chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0;\n const length = chunk.length;\n while (position + 512 <= length &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position);\n position += 512;\n break;\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position);\n break;\n case 'meta':\n position += this[CONSUMEMETA](chunk, position);\n break;\n /* c8 ignore start */\n default:\n throw new Error('invalid state: ' + this[STATE]);\n /* c8 ignore stop */\n }\n }\n if (position < length) {\n if (this[BUFFER]) {\n this[BUFFER] = Buffer.concat([\n chunk.subarray(position),\n this[BUFFER],\n ]);\n }\n else {\n this[BUFFER] = chunk.subarray(position);\n }\n }\n }\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') {\n cb = chunk;\n encoding = undefined;\n chunk = undefined;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n if (typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n if (cb)\n this.once('finish', cb);\n if (!this[ABORTED]) {\n if (this[UNZIP]) {\n /* c8 ignore start */\n if (chunk)\n this[UNZIP].write(chunk);\n /* c8 ignore stop */\n this[UNZIP].end();\n }\n else {\n this[ENDED] = true;\n if (this.brotli === undefined || this.zstd === undefined)\n chunk = chunk || Buffer.alloc(0);\n if (chunk)\n this.write(chunk);\n this[MAYBEEND]();\n }\n }\n return this;\n }\n}\n//# sourceMappingURL=parse.js.map",
37
+ "import assert from 'assert';\nimport { Buffer } from 'buffer';\nimport { Minipass } from 'minipass';\nimport * as realZlib from 'zlib';\nimport { constants } from './constants.js';\nexport { constants } from './constants.js';\nconst OriginalBufferConcat = Buffer.concat;\nconst desc = Object.getOwnPropertyDescriptor(Buffer, 'concat');\nconst noop = (args) => args;\nconst passthroughBufferConcat = desc?.writable === true || desc?.set !== undefined\n ? (makeNoOp) => {\n Buffer.concat = makeNoOp ? noop : OriginalBufferConcat;\n }\n : (_) => { };\nconst _superWrite = Symbol('_superWrite');\nexport class ZlibError extends Error {\n code;\n errno;\n constructor(err, origin) {\n super('zlib: ' + err.message, { cause: err });\n this.code = err.code;\n this.errno = err.errno;\n /* c8 ignore next */\n if (!this.code)\n this.code = 'ZLIB_ERROR';\n this.message = 'zlib: ' + err.message;\n Error.captureStackTrace(this, origin ?? this.constructor);\n }\n get name() {\n return 'ZlibError';\n }\n}\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _flushFlag = Symbol('flushFlag');\nclass ZlibBase extends Minipass {\n #sawError = false;\n #ended = false;\n #flushFlag;\n #finishFlushFlag;\n #fullFlushFlag;\n #handle;\n #onError;\n get sawError() {\n return this.#sawError;\n }\n get handle() {\n return this.#handle;\n }\n /* c8 ignore start */\n get flushFlag() {\n return this.#flushFlag;\n }\n /* c8 ignore stop */\n constructor(opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor');\n //@ts-ignore\n super(opts);\n /* c8 ignore start */\n this.#flushFlag = opts.flush ?? 0;\n this.#finishFlushFlag = opts.finishFlush ?? 0;\n this.#fullFlushFlag = opts.fullFlushFlag ?? 0;\n /* c8 ignore stop */\n //@ts-ignore\n if (typeof realZlib[mode] !== 'function') {\n throw new TypeError('Compression method not supported: ' + mode);\n }\n // this will throw if any options are invalid for the class selected\n try {\n // @types/node doesn't know that it exports the classes, but they're there\n //@ts-ignore\n this.#handle = new realZlib[mode](opts);\n }\n catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er, this.constructor);\n }\n this.#onError = err => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this.#sawError)\n return;\n this.#sawError = true;\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close();\n this.emit('error', err);\n };\n this.#handle?.on('error', er => this.#onError(new ZlibError(er)));\n this.once('end', () => this.close);\n }\n close() {\n if (this.#handle) {\n this.#handle.close();\n this.#handle = undefined;\n this.emit('close');\n }\n }\n reset() {\n if (!this.#sawError) {\n assert(this.#handle, 'zlib binding closed');\n //@ts-ignore\n return this.#handle.reset?.();\n }\n }\n flush(flushFlag) {\n if (this.ended)\n return;\n if (typeof flushFlag !== 'number')\n flushFlag = this.#fullFlushFlag;\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }));\n }\n end(chunk, encoding, cb) {\n /* c8 ignore start */\n if (typeof chunk === 'function') {\n cb = chunk;\n encoding = undefined;\n chunk = undefined;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n /* c8 ignore stop */\n if (chunk) {\n if (encoding)\n this.write(chunk, encoding);\n else\n this.write(chunk);\n }\n this.flush(this.#finishFlushFlag);\n this.#ended = true;\n return super.end(cb);\n }\n get ended() {\n return this.#ended;\n }\n // overridden in the gzip classes to do portable writes\n [_superWrite](data) {\n return super.write(data);\n }\n write(chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n (cb = encoding), (encoding = 'utf8');\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding);\n if (this.#sawError)\n return;\n assert(this.#handle, 'zlib binding closed');\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n // diving into the node:zlib internals a bit here\n const nativeHandle = this.#handle\n ._handle;\n const originalNativeClose = nativeHandle.close;\n nativeHandle.close = () => { };\n const originalClose = this.#handle.close;\n this.#handle.close = () => { };\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n passthroughBufferConcat(true);\n let result = undefined;\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag]\n : this.#flushFlag;\n result = this.#handle._processChunk(chunk, flushFlag);\n // if we don't throw, reset it back how it was\n passthroughBufferConcat(false);\n }\n catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n passthroughBufferConcat(false);\n this.#onError(new ZlibError(err, this.write));\n }\n finally {\n if (this.#handle) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n ;\n this.#handle._handle =\n nativeHandle;\n nativeHandle.close = originalNativeClose;\n this.#handle.close = originalClose;\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this.#handle.removeAllListeners('error');\n // make sure OUR error listener is still attached tho\n }\n }\n if (this.#handle)\n this.#handle.on('error', er => this.#onError(new ZlibError(er, this.write)));\n let writeReturn;\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n const r = result[0];\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(r));\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i]);\n }\n }\n else {\n // either a single Buffer or an empty array\n writeReturn = this[_superWrite](Buffer.from(result));\n }\n }\n if (cb)\n cb();\n return writeReturn;\n }\n}\nexport class Zlib extends ZlibBase {\n #level;\n #strategy;\n constructor(opts, mode) {\n opts = opts || {};\n opts.flush = opts.flush || constants.Z_NO_FLUSH;\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH;\n opts.fullFlushFlag = constants.Z_FULL_FLUSH;\n super(opts, mode);\n this.#level = opts.level;\n this.#strategy = opts.strategy;\n }\n params(level, strategy) {\n if (this.sawError)\n return;\n if (!this.handle)\n throw new Error('cannot switch params when binding is closed');\n // no way to test this without also not supporting params at all\n /* c8 ignore start */\n if (!this.handle.params)\n throw new Error('not supported in this implementation');\n /* c8 ignore stop */\n if (this.#level !== level || this.#strategy !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH);\n assert(this.handle, 'zlib binding closed');\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this.handle.flush;\n this.handle.flush = (flushFlag, cb) => {\n /* c8 ignore start */\n if (typeof flushFlag === 'function') {\n cb = flushFlag;\n flushFlag = this.flushFlag;\n }\n /* c8 ignore stop */\n this.flush(flushFlag);\n cb?.();\n };\n try {\n ;\n this.handle.params(level, strategy);\n }\n finally {\n this.handle.flush = origFlush;\n }\n /* c8 ignore start */\n if (this.handle) {\n this.#level = level;\n this.#strategy = strategy;\n }\n /* c8 ignore stop */\n }\n }\n}\n// minimal 2-byte header\nexport class Deflate extends Zlib {\n constructor(opts) {\n super(opts, 'Deflate');\n }\n}\nexport class Inflate extends Zlib {\n constructor(opts) {\n super(opts, 'Inflate');\n }\n}\nexport class Gzip extends Zlib {\n #portable;\n constructor(opts) {\n super(opts, 'Gzip');\n this.#portable = opts && !!opts.portable;\n }\n [_superWrite](data) {\n if (!this.#portable)\n return super[_superWrite](data);\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this.#portable = false;\n data[9] = 255;\n return super[_superWrite](data);\n }\n}\nexport class Gunzip extends Zlib {\n constructor(opts) {\n super(opts, 'Gunzip');\n }\n}\n// raw - no header\nexport class DeflateRaw extends Zlib {\n constructor(opts) {\n super(opts, 'DeflateRaw');\n }\n}\nexport class InflateRaw extends Zlib {\n constructor(opts) {\n super(opts, 'InflateRaw');\n }\n}\n// auto-detect header.\nexport class Unzip extends Zlib {\n constructor(opts) {\n super(opts, 'Unzip');\n }\n}\nclass Brotli extends ZlibBase {\n constructor(opts, mode) {\n opts = opts || {};\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS;\n opts.finishFlush =\n opts.finishFlush || constants.BROTLI_OPERATION_FINISH;\n opts.fullFlushFlag = constants.BROTLI_OPERATION_FLUSH;\n super(opts, mode);\n }\n}\nexport class BrotliCompress extends Brotli {\n constructor(opts) {\n super(opts, 'BrotliCompress');\n }\n}\nexport class BrotliDecompress extends Brotli {\n constructor(opts) {\n super(opts, 'BrotliDecompress');\n }\n}\nclass Zstd extends ZlibBase {\n constructor(opts, mode) {\n opts = opts || {};\n opts.flush = opts.flush || constants.ZSTD_e_continue;\n opts.finishFlush = opts.finishFlush || constants.ZSTD_e_end;\n opts.fullFlushFlag = constants.ZSTD_e_flush;\n super(opts, mode);\n }\n}\nexport class ZstdCompress extends Zstd {\n constructor(opts) {\n super(opts, 'ZstdCompress');\n }\n}\nexport class ZstdDecompress extends Zstd {\n constructor(opts) {\n super(opts, 'ZstdDecompress');\n }\n}\n//# sourceMappingURL=index.js.map",
38
+ "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nimport realZlib from 'zlib';\n/* c8 ignore start */\nconst realZlibConstants = realZlib.constants || { ZLIB_VERNUM: 4736 };\n/* c8 ignore stop */\nexport const constants = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants));\n//# sourceMappingURL=constants.js.map",
39
+ "// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\nimport { posix as pathModule } from 'node:path';\nimport * as large from './large-numbers.js';\nimport * as types from './types.js';\nexport class Header {\n cksumValid = false;\n needPax = false;\n nullBlock = false;\n block;\n path;\n mode;\n uid;\n gid;\n size;\n cksum;\n #type = 'Unsupported';\n linkpath;\n uname;\n gname;\n devmaj = 0;\n devmin = 0;\n atime;\n ctime;\n mtime;\n charset;\n comment;\n constructor(data, off = 0, ex, gex) {\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex);\n }\n else if (data) {\n this.#slurp(data);\n }\n }\n decode(buf, off, ex, gex) {\n if (!off) {\n off = 0;\n }\n if (!buf || !(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header');\n }\n this.path = ex?.path ?? decString(buf, off, 100);\n this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);\n this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);\n this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);\n this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);\n this.mtime =\n ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);\n this.cksum = decNumber(buf, off + 148, 12);\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n // Apply global before local, so it overrides\n if (gex)\n this.#slurp(gex, true);\n if (ex)\n this.#slurp(ex);\n // old tar versions marked dirs as a file with a trailing /\n const t = decString(buf, off + 156, 1);\n if (types.isCode(t)) {\n this.#type = t || '0';\n }\n if (this.#type === '0' && this.path.slice(-1) === '/') {\n this.#type = '5';\n }\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this.#type === '5') {\n this.size = 0;\n }\n this.linkpath = decString(buf, off + 157, 100);\n if (buf.subarray(off + 257, off + 265).toString() ===\n 'ustar\\u000000') {\n /* c8 ignore start */\n this.uname =\n ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);\n this.gname =\n ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);\n this.devmaj =\n ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;\n this.devmin =\n ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;\n /* c8 ignore stop */\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155);\n this.path = prefix + '/' + this.path;\n }\n else {\n const prefix = decString(buf, off + 345, 130);\n if (prefix) {\n this.path = prefix + '/' + this.path;\n }\n /* c8 ignore start */\n this.atime =\n ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);\n this.ctime =\n ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);\n /* c8 ignore stop */\n }\n }\n let sum = 8 * 0x20;\n for (let i = off; i < off + 148; i++) {\n sum += buf[i];\n }\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i];\n }\n this.cksumValid = sum === this.cksum;\n if (this.cksum === undefined && sum === 8 * 0x20) {\n this.nullBlock = true;\n }\n }\n #slurp(ex, gex = false) {\n Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird. Also, any\n // null/undefined values are ignored.\n return !(v === null ||\n v === undefined ||\n (k === 'path' && gex) ||\n (k === 'linkpath' && gex) ||\n k === 'global');\n })));\n }\n encode(buf, off = 0) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512);\n }\n if (this.#type === 'Unsupported') {\n this.#type = '0';\n }\n if (!(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header');\n }\n const prefixSize = this.ctime || this.atime ? 130 : 155;\n const split = splitPrefix(this.path || '', prefixSize);\n const path = split[0];\n const prefix = split[1];\n this.needPax = !!split[2];\n this.needPax = encString(buf, off, 100, path) || this.needPax;\n this.needPax =\n encNumber(buf, off + 100, 8, this.mode) || this.needPax;\n this.needPax =\n encNumber(buf, off + 108, 8, this.uid) || this.needPax;\n this.needPax =\n encNumber(buf, off + 116, 8, this.gid) || this.needPax;\n this.needPax =\n encNumber(buf, off + 124, 12, this.size) || this.needPax;\n this.needPax =\n encDate(buf, off + 136, 12, this.mtime) || this.needPax;\n buf[off + 156] = this.#type.charCodeAt(0);\n this.needPax =\n encString(buf, off + 157, 100, this.linkpath) || this.needPax;\n buf.write('ustar\\u000000', off + 257, 8);\n this.needPax =\n encString(buf, off + 265, 32, this.uname) || this.needPax;\n this.needPax =\n encString(buf, off + 297, 32, this.gname) || this.needPax;\n this.needPax =\n encNumber(buf, off + 329, 8, this.devmaj) || this.needPax;\n this.needPax =\n encNumber(buf, off + 337, 8, this.devmin) || this.needPax;\n this.needPax =\n encString(buf, off + 345, prefixSize, prefix) || this.needPax;\n if (buf[off + 475] !== 0) {\n this.needPax =\n encString(buf, off + 345, 155, prefix) || this.needPax;\n }\n else {\n this.needPax =\n encString(buf, off + 345, 130, prefix) || this.needPax;\n this.needPax =\n encDate(buf, off + 476, 12, this.atime) || this.needPax;\n this.needPax =\n encDate(buf, off + 488, 12, this.ctime) || this.needPax;\n }\n let sum = 8 * 0x20;\n for (let i = off; i < off + 148; i++) {\n sum += buf[i];\n }\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i];\n }\n this.cksum = sum;\n encNumber(buf, off + 148, 8, this.cksum);\n this.cksumValid = true;\n return this.needPax;\n }\n get type() {\n return (this.#type === 'Unsupported' ?\n this.#type\n : types.name.get(this.#type));\n }\n get typeKey() {\n return this.#type;\n }\n set type(type) {\n const c = String(types.code.get(type));\n if (types.isCode(c) || c === 'Unsupported') {\n this.#type = c;\n }\n else if (types.isCode(type)) {\n this.#type = type;\n }\n else {\n throw new TypeError('invalid entry type: ' + type);\n }\n }\n}\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100;\n let pp = p;\n let prefix = '';\n let ret = undefined;\n const root = pathModule.parse(p).root || '.';\n if (Buffer.byteLength(pp) < pathSize) {\n ret = [pp, prefix, false];\n }\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp);\n pp = pathModule.basename(pp);\n do {\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // both fit!\n ret = [pp, prefix, false];\n }\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // prefix fits in prefix, but path doesn't fit in path\n ret = [pp.slice(0, pathSize - 1), prefix, true];\n }\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp);\n prefix = pathModule.dirname(prefix);\n }\n } while (prefix !== root && ret === undefined);\n // at this point, found no resolution, just truncate\n if (!ret) {\n ret = [p.slice(0, pathSize - 1), '', true];\n }\n }\n return ret;\n};\nconst decString = (buf, off, size) => buf\n .subarray(off, off + size)\n .toString('utf8')\n .replace(/\\0.*/, '');\nconst decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));\nconst numToDate = (num) => num === undefined ? undefined : new Date(num * 1000);\nconst decNumber = (buf, off, size) => Number(buf[off]) & 0x80 ?\n large.parse(buf.subarray(off, off + size))\n : decSmallNumber(buf, off, size);\nconst nanUndef = (value) => (isNaN(value) ? undefined : value);\nconst decSmallNumber = (buf, off, size) => nanUndef(parseInt(buf\n .subarray(off, off + size)\n .toString('utf8')\n .replace(/\\0.*$/, '')\n .trim(), 8));\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n};\nconst encNumber = (buf, off, size, num) => num === undefined ? false\n : num > MAXNUM[size] || num < 0 ?\n (large.encode(num, buf.subarray(off, off + size)), true)\n : (encSmallNumber(buf, off, size, num), false);\nconst encSmallNumber = (buf, off, size, num) => buf.write(octalString(num, size), off, size, 'ascii');\nconst octalString = (num, size) => padOctal(Math.floor(num).toString(8), size);\nconst padOctal = (str, size) => (str.length === size - 1 ?\n str\n : new Array(size - str.length - 1).join('0') + str + ' ') + '\\0';\nconst encDate = (buf, off, size, date) => date === undefined ? false : (encNumber(buf, off, size, date.getTime() / 1000));\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0');\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, str) => str === undefined ? false : ((buf.write(str + NULLS, off, size, 'utf8'),\n str.length !== Buffer.byteLength(str) || str.length > size));\n//# sourceMappingURL=header.js.map",
40
+ "// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\nexport const encode = (num, buf) => {\n if (!Number.isSafeInteger(num)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range');\n }\n else if (num < 0) {\n encodeNegative(num, buf);\n }\n else {\n encodePositive(num, buf);\n }\n return buf;\n};\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80;\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff;\n num = Math.floor(num / 0x100);\n }\n};\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff;\n var flipped = false;\n num = num * -1;\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff;\n num = Math.floor(num / 0x100);\n if (flipped) {\n buf[i - 1] = onesComp(byte);\n }\n else if (byte === 0) {\n buf[i - 1] = 0;\n }\n else {\n flipped = true;\n buf[i - 1] = twosComp(byte);\n }\n }\n};\nexport const parse = (buf) => {\n const pre = buf[0];\n const value = pre === 0x80 ? pos(buf.subarray(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null;\n if (value === null) {\n throw Error('invalid base256 encoding');\n }\n if (!Number.isSafeInteger(value)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range');\n }\n return value;\n};\nconst twos = (buf) => {\n var len = buf.length;\n var sum = 0;\n var flipped = false;\n for (var i = len - 1; i > -1; i--) {\n var byte = Number(buf[i]);\n var f;\n if (flipped) {\n f = onesComp(byte);\n }\n else if (byte === 0) {\n f = byte;\n }\n else {\n flipped = true;\n f = twosComp(byte);\n }\n if (f !== 0) {\n sum -= f * Math.pow(256, len - i - 1);\n }\n }\n return sum;\n};\nconst pos = (buf) => {\n var len = buf.length;\n var sum = 0;\n for (var i = len - 1; i > -1; i--) {\n var byte = Number(buf[i]);\n if (byte !== 0) {\n sum += byte * Math.pow(256, len - i - 1);\n }\n }\n return sum;\n};\nconst onesComp = (byte) => (0xff ^ byte) & 0xff;\nconst twosComp = (byte) => ((0xff ^ byte) + 1) & 0xff;\n//# sourceMappingURL=large-numbers.js.map",
41
+ "export const isCode = (c) => name.has(c);\nexport const isName = (c) => code.has(c);\n// map types from key to human-friendly name\nexport const name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n]);\n// map the other direction\nexport const code = new Map(Array.from(name).map(kv => [kv[1], kv[0]]));\n//# sourceMappingURL=types.js.map",
42
+ "import { basename } from 'node:path';\nimport { Header } from './header.js';\nexport class Pax {\n atime;\n mtime;\n ctime;\n charset;\n comment;\n gid;\n uid;\n gname;\n uname;\n linkpath;\n dev;\n ino;\n nlink;\n path;\n size;\n mode;\n global;\n constructor(obj, global = false) {\n this.atime = obj.atime;\n this.charset = obj.charset;\n this.comment = obj.comment;\n this.ctime = obj.ctime;\n this.dev = obj.dev;\n this.gid = obj.gid;\n this.global = global;\n this.gname = obj.gname;\n this.ino = obj.ino;\n this.linkpath = obj.linkpath;\n this.mtime = obj.mtime;\n this.nlink = obj.nlink;\n this.path = obj.path;\n this.size = obj.size;\n this.uid = obj.uid;\n this.uname = obj.uname;\n }\n encode() {\n const body = this.encodeBody();\n if (body === '') {\n return Buffer.allocUnsafe(0);\n }\n const bodyLen = Buffer.byteLength(body);\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512);\n const buf = Buffer.allocUnsafe(bufLen);\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++) {\n buf[i] = 0;\n }\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n /* c8 ignore start */\n path: ('PaxHeader/' + basename(this.path ?? '')).slice(0, 99),\n /* c8 ignore stop */\n mode: this.mode || 0o644,\n uid: this.uid,\n gid: this.gid,\n size: bodyLen,\n mtime: this.mtime,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime,\n ctime: this.ctime,\n }).encode(buf);\n buf.write(body, 512, bodyLen, 'utf8');\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++) {\n buf[i] = 0;\n }\n return buf;\n }\n encodeBody() {\n return (this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname'));\n }\n encodeField(field) {\n if (this[field] === undefined) {\n return '';\n }\n const r = this[field];\n const v = r instanceof Date ? r.getTime() / 1000 : r;\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink' ?\n 'SCHILY.'\n : '') +\n field +\n '=' +\n v +\n '\\n';\n const byteLen = Buffer.byteLength(s);\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1;\n if (byteLen + digits >= Math.pow(10, digits)) {\n digits += 1;\n }\n const len = digits + byteLen;\n return len + s;\n }\n static parse(str, ex, g = false) {\n return new Pax(merge(parseKV(str), ex), g);\n }\n}\nconst merge = (a, b) => b ? Object.assign({}, b, a) : a;\nconst parseKV = (str) => str\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null));\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10);\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1) {\n return set;\n }\n line = line.slice((n + ' ').length);\n const kv = line.split('=');\n const r = kv.shift();\n if (!r) {\n return set;\n }\n const k = r.replace(/^SCHILY\\.(dev|ino|nlink)/, '$1');\n const v = kv.join('=');\n set[k] =\n /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k) ?\n new Date(Number(v) * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v;\n return set;\n};\n//# sourceMappingURL=pax.js.map",
43
+ "// on windows, either \\ or / are valid directory separators.\n// on unix, \\ is a valid character in filenames.\n// so, on windows, and only on windows, we replace all \\ chars with /,\n// so that we can use / as our one and only directory separator char.\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;\nexport const normalizeWindowsPath = platform !== 'win32' ?\n (p) => p\n : (p) => p && p.replace(/\\\\/g, '/');\n//# sourceMappingURL=normalize-windows-path.js.map",
44
+ "import { Minipass } from 'minipass';\nimport { normalizeWindowsPath } from './normalize-windows-path.js';\nexport class ReadEntry extends Minipass {\n extended;\n globalExtended;\n header;\n startBlockSize;\n blockRemain;\n remain;\n type;\n meta = false;\n ignore = false;\n path;\n mode;\n uid;\n gid;\n uname;\n gname;\n size = 0;\n mtime;\n atime;\n ctime;\n linkpath;\n dev;\n ino;\n nlink;\n invalid = false;\n absolute;\n unsupported = false;\n constructor(header, ex, gex) {\n super({});\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause();\n this.extended = ex;\n this.globalExtended = gex;\n this.header = header;\n /* c8 ignore start */\n this.remain = header.size ?? 0;\n /* c8 ignore stop */\n this.startBlockSize = 512 * Math.ceil(this.remain / 512);\n this.blockRemain = this.startBlockSize;\n this.type = header.type;\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break;\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true;\n break;\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true;\n }\n /* c8 ignore start */\n if (!header.path) {\n throw new Error('no path provided for tar.ReadEntry');\n }\n /* c8 ignore stop */\n this.path = normalizeWindowsPath(header.path);\n this.mode = header.mode;\n if (this.mode) {\n this.mode = this.mode & 0o7777;\n }\n this.uid = header.uid;\n this.gid = header.gid;\n this.uname = header.uname;\n this.gname = header.gname;\n this.size = this.remain;\n this.mtime = header.mtime;\n this.atime = header.atime;\n this.ctime = header.ctime;\n /* c8 ignore start */\n this.linkpath =\n header.linkpath ?\n normalizeWindowsPath(header.linkpath)\n : undefined;\n /* c8 ignore stop */\n this.uname = header.uname;\n this.gname = header.gname;\n if (ex) {\n this.#slurp(ex);\n }\n if (gex) {\n this.#slurp(gex, true);\n }\n }\n write(data) {\n const writeLen = data.length;\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate');\n }\n const r = this.remain;\n const br = this.blockRemain;\n this.remain = Math.max(0, r - writeLen);\n this.blockRemain = Math.max(0, br - writeLen);\n if (this.ignore) {\n return true;\n }\n if (r >= writeLen) {\n return super.write(data);\n }\n // r < writeLen\n return super.write(data.subarray(0, r));\n }\n #slurp(ex, gex = false) {\n if (ex.path)\n ex.path = normalizeWindowsPath(ex.path);\n if (ex.linkpath)\n ex.linkpath = normalizeWindowsPath(ex.linkpath);\n Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird. Also, any\n // null/undefined values are ignored.\n return !(v === null ||\n v === undefined ||\n (k === 'path' && gex));\n })));\n }\n}\n//# sourceMappingURL=read-entry.js.map",
45
+ "export const warnMethod = (self, code, message, data = {}) => {\n if (self.file) {\n data.file = self.file;\n }\n if (self.cwd) {\n data.cwd = self.cwd;\n }\n data.code =\n (message instanceof Error &&\n message.code) ||\n code;\n data.tarCode = code;\n if (!self.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data);\n message = message.message;\n }\n self.emit('warn', code, message, data);\n }\n else if (message instanceof Error) {\n self.emit('error', Object.assign(message, data));\n }\n else {\n self.emit('error', Object.assign(new Error(`${code}: ${message}`), data));\n }\n};\n//# sourceMappingURL=warn-method.js.map",
46
+ "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nexport const stripTrailingSlashes = (str) => {\n let i = str.length - 1;\n let slashesStart = -1;\n while (i > -1 && str.charAt(i) === '/') {\n slashesStart = i;\n i--;\n }\n return slashesStart === -1 ? str : str.slice(0, slashesStart);\n};\n//# sourceMappingURL=strip-trailing-slashes.js.map",
47
+ "// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\nimport fs from 'fs';\nimport { WriteEntry, WriteEntrySync, WriteEntryTar, } from './write-entry.js';\nexport class PackJob {\n path;\n absolute;\n entry;\n stat;\n readdir;\n pending = false;\n ignore = false;\n piped = false;\n constructor(path, absolute) {\n this.path = path || './';\n this.absolute = absolute;\n }\n}\nimport { Minipass } from 'minipass';\nimport * as zlib from 'minizlib';\nimport { Yallist } from 'yallist';\nimport { ReadEntry } from './read-entry.js';\nimport { warnMethod, } from './warn-method.js';\nconst EOF = Buffer.alloc(1024);\nconst ONSTAT = Symbol('onStat');\nconst ENDED = Symbol('ended');\nconst QUEUE = Symbol('queue');\nconst CURRENT = Symbol('current');\nconst PROCESS = Symbol('process');\nconst PROCESSING = Symbol('processing');\nconst PROCESSJOB = Symbol('processJob');\nconst JOBS = Symbol('jobs');\nconst JOBDONE = Symbol('jobDone');\nconst ADDFSENTRY = Symbol('addFSEntry');\nconst ADDTARENTRY = Symbol('addTarEntry');\nconst STAT = Symbol('stat');\nconst READDIR = Symbol('readdir');\nconst ONREADDIR = Symbol('onreaddir');\nconst PIPE = Symbol('pipe');\nconst ENTRY = Symbol('entry');\nconst ENTRYOPT = Symbol('entryOpt');\nconst WRITEENTRYCLASS = Symbol('writeEntryClass');\nconst WRITE = Symbol('write');\nconst ONDRAIN = Symbol('ondrain');\nimport path from 'path';\nimport { normalizeWindowsPath } from './normalize-windows-path.js';\nexport class Pack extends Minipass {\n sync = false;\n opt;\n cwd;\n maxReadSize;\n preservePaths;\n strict;\n noPax;\n prefix;\n linkCache;\n statCache;\n file;\n portable;\n zip;\n readdirCache;\n noDirRecurse;\n follow;\n noMtime;\n mtime;\n filter;\n jobs;\n [WRITEENTRYCLASS];\n onWriteEntry;\n // Note: we actually DO need a linked list here, because we\n // shift() to update the head of the list where we start, but still\n // while that happens, need to know what the next item in the queue\n // will be. Since we do multiple jobs in parallel, it's not as simple\n // as just an Array.shift(), since that would lose the information about\n // the next job in the list. We could add a .next field on the PackJob\n // class, but then we'd have to be tracking the tail of the queue the\n // whole time, and Yallist just does that for us anyway.\n [QUEUE];\n [JOBS] = 0;\n [PROCESSING] = false;\n [ENDED] = false;\n constructor(opt = {}) {\n //@ts-ignore\n super();\n this.opt = opt;\n this.file = opt.file || '';\n this.cwd = opt.cwd || process.cwd();\n this.maxReadSize = opt.maxReadSize;\n this.preservePaths = !!opt.preservePaths;\n this.strict = !!opt.strict;\n this.noPax = !!opt.noPax;\n this.prefix = normalizeWindowsPath(opt.prefix || '');\n this.linkCache = opt.linkCache || new Map();\n this.statCache = opt.statCache || new Map();\n this.readdirCache = opt.readdirCache || new Map();\n this.onWriteEntry = opt.onWriteEntry;\n this[WRITEENTRYCLASS] = WriteEntry;\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn);\n }\n this.portable = !!opt.portable;\n if (opt.gzip || opt.brotli || opt.zstd) {\n if ((opt.gzip ? 1 : 0) +\n (opt.brotli ? 1 : 0) +\n (opt.zstd ? 1 : 0) >\n 1) {\n throw new TypeError('gzip, brotli, zstd are mutually exclusive');\n }\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object') {\n opt.gzip = {};\n }\n if (this.portable) {\n opt.gzip.portable = true;\n }\n this.zip = new zlib.Gzip(opt.gzip);\n }\n if (opt.brotli) {\n if (typeof opt.brotli !== 'object') {\n opt.brotli = {};\n }\n this.zip = new zlib.BrotliCompress(opt.brotli);\n }\n if (opt.zstd) {\n if (typeof opt.zstd !== 'object') {\n opt.zstd = {};\n }\n this.zip = new zlib.ZstdCompress(opt.zstd);\n }\n /* c8 ignore next */\n if (!this.zip)\n throw new Error('impossible');\n const zip = this.zip;\n zip.on('data', chunk => super.write(chunk));\n zip.on('end', () => super.end());\n zip.on('drain', () => this[ONDRAIN]());\n this.on('resume', () => zip.resume());\n }\n else {\n this.on('drain', this[ONDRAIN]);\n }\n this.noDirRecurse = !!opt.noDirRecurse;\n this.follow = !!opt.follow;\n this.noMtime = !!opt.noMtime;\n if (opt.mtime)\n this.mtime = opt.mtime;\n this.filter =\n typeof opt.filter === 'function' ? opt.filter : () => true;\n this[QUEUE] = new Yallist();\n this[JOBS] = 0;\n this.jobs = Number(opt.jobs) || 4;\n this[PROCESSING] = false;\n this[ENDED] = false;\n }\n [WRITE](chunk) {\n return super.write(chunk);\n }\n add(path) {\n this.write(path);\n return this;\n }\n end(path, encoding, cb) {\n /* c8 ignore start */\n if (typeof path === 'function') {\n cb = path;\n path = undefined;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n /* c8 ignore stop */\n if (path) {\n this.add(path);\n }\n this[ENDED] = true;\n this[PROCESS]();\n /* c8 ignore next */\n if (cb)\n cb();\n return this;\n }\n write(path) {\n if (this[ENDED]) {\n throw new Error('write after end');\n }\n if (path instanceof ReadEntry) {\n this[ADDTARENTRY](path);\n }\n else {\n this[ADDFSENTRY](path);\n }\n return this.flowing;\n }\n [ADDTARENTRY](p) {\n const absolute = normalizeWindowsPath(path.resolve(this.cwd, p.path));\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p)) {\n p.resume();\n }\n else {\n const job = new PackJob(p.path, absolute);\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job));\n job.entry.on('end', () => this[JOBDONE](job));\n this[JOBS] += 1;\n this[QUEUE].push(job);\n }\n this[PROCESS]();\n }\n [ADDFSENTRY](p) {\n const absolute = normalizeWindowsPath(path.resolve(this.cwd, p));\n this[QUEUE].push(new PackJob(p, absolute));\n this[PROCESS]();\n }\n [STAT](job) {\n job.pending = true;\n this[JOBS] += 1;\n const stat = this.follow ? 'stat' : 'lstat';\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false;\n this[JOBS] -= 1;\n if (er) {\n this.emit('error', er);\n }\n else {\n this[ONSTAT](job, stat);\n }\n });\n }\n [ONSTAT](job, stat) {\n this.statCache.set(job.absolute, stat);\n job.stat = stat;\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat)) {\n job.ignore = true;\n }\n else if (stat.isFile() &&\n stat.nlink > 1 &&\n job === this[CURRENT] &&\n !this.linkCache.get(`${stat.dev}:${stat.ino}`) &&\n !this.sync) {\n // if it's not filtered, and it's a new File entry,\n // jump the queue in case any pending Link entries are about\n // to try to link to it. This prevents a hardlink from coming ahead\n // of its target in the archive.\n this[PROCESSJOB](job);\n }\n this[PROCESS]();\n }\n [READDIR](job) {\n job.pending = true;\n this[JOBS] += 1;\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false;\n this[JOBS] -= 1;\n if (er) {\n return this.emit('error', er);\n }\n this[ONREADDIR](job, entries);\n });\n }\n [ONREADDIR](job, entries) {\n this.readdirCache.set(job.absolute, entries);\n job.readdir = entries;\n this[PROCESS]();\n }\n [PROCESS]() {\n if (this[PROCESSING]) {\n return;\n }\n this[PROCESSING] = true;\n for (let w = this[QUEUE].head; !!w && this[JOBS] < this.jobs; w = w.next) {\n this[PROCESSJOB](w.value);\n if (w.value.ignore) {\n const p = w.next;\n this[QUEUE].removeNode(w);\n w.next = p;\n }\n }\n this[PROCESSING] = false;\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip) {\n this.zip.end(EOF);\n }\n else {\n super.write(EOF);\n super.end();\n }\n }\n }\n get [CURRENT]() {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value;\n }\n [JOBDONE](_job) {\n this[QUEUE].shift();\n this[JOBS] -= 1;\n this[PROCESS]();\n }\n [PROCESSJOB](job) {\n if (job.pending) {\n return;\n }\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job);\n }\n return;\n }\n if (!job.stat) {\n const sc = this.statCache.get(job.absolute);\n if (sc) {\n this[ONSTAT](job, sc);\n }\n else {\n this[STAT](job);\n }\n }\n if (!job.stat) {\n return;\n }\n // filtered out!\n if (job.ignore) {\n return;\n }\n if (!this.noDirRecurse &&\n job.stat.isDirectory() &&\n !job.readdir) {\n const rc = this.readdirCache.get(job.absolute);\n if (rc) {\n this[ONREADDIR](job, rc);\n }\n else {\n this[READDIR](job);\n }\n if (!job.readdir) {\n return;\n }\n }\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job);\n if (!job.entry) {\n job.ignore = true;\n return;\n }\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job);\n }\n }\n [ENTRYOPT](job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n prefix: this.prefix,\n onWriteEntry: this.onWriteEntry,\n };\n }\n [ENTRY](job) {\n this[JOBS] += 1;\n try {\n const e = new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job));\n return e\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er));\n }\n catch (er) {\n this.emit('error', er);\n }\n }\n [ONDRAIN]() {\n if (this[CURRENT] && this[CURRENT].entry) {\n this[CURRENT].entry.resume();\n }\n }\n // like .pipe() but using super, because our write() is special\n [PIPE](job) {\n job.piped = true;\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path;\n const base = p === './' ? '' : p.replace(/\\/*$/, '/');\n this[ADDFSENTRY](base + entry);\n });\n }\n const source = job.entry;\n const zip = this.zip;\n /* c8 ignore start */\n if (!source)\n throw new Error('cannot pipe without source');\n /* c8 ignore stop */\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk)) {\n source.pause();\n }\n });\n }\n else {\n source.on('data', chunk => {\n if (!super.write(chunk)) {\n source.pause();\n }\n });\n }\n }\n pause() {\n if (this.zip) {\n this.zip.pause();\n }\n return super.pause();\n }\n warn(code, message, data = {}) {\n warnMethod(this, code, message, data);\n }\n}\nexport class PackSync extends Pack {\n sync = true;\n constructor(opt) {\n super(opt);\n this[WRITEENTRYCLASS] = WriteEntrySync;\n }\n // pause/resume are no-ops in sync streams.\n pause() { }\n resume() { }\n [STAT](job) {\n const stat = this.follow ? 'statSync' : 'lstatSync';\n this[ONSTAT](job, fs[stat](job.absolute));\n }\n [READDIR](job) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute));\n }\n // gotta get it all in this tick\n [PIPE](job) {\n const source = job.entry;\n const zip = this.zip;\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path;\n const base = p === './' ? '' : p.replace(/\\/*$/, '/');\n this[ADDFSENTRY](base + entry);\n });\n }\n /* c8 ignore start */\n if (!source)\n throw new Error('Cannot pipe without source');\n /* c8 ignore stop */\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk);\n });\n }\n else {\n source.on('data', chunk => {\n super[WRITE](chunk);\n });\n }\n }\n}\n//# sourceMappingURL=pack.js.map",
48
+ "import fs from 'fs';\nimport { Minipass } from 'minipass';\nimport path from 'path';\nimport { Header } from './header.js';\nimport { modeFix } from './mode-fix.js';\nimport { normalizeWindowsPath } from './normalize-windows-path.js';\nimport { dealias, } from './options.js';\nimport { Pax } from './pax.js';\nimport { stripAbsolutePath } from './strip-absolute-path.js';\nimport { stripTrailingSlashes } from './strip-trailing-slashes.js';\nimport { warnMethod, } from './warn-method.js';\nimport * as winchars from './winchars.js';\nconst prefixPath = (path, prefix) => {\n if (!prefix) {\n return normalizeWindowsPath(path);\n }\n path = normalizeWindowsPath(path).replace(/^\\.(\\/|$)/, '');\n return stripTrailingSlashes(prefix) + '/' + path;\n};\nconst maxReadSize = 16 * 1024 * 1024;\nconst PROCESS = Symbol('process');\nconst FILE = Symbol('file');\nconst DIRECTORY = Symbol('directory');\nconst SYMLINK = Symbol('symlink');\nconst HARDLINK = Symbol('hardlink');\nconst HEADER = Symbol('header');\nconst READ = Symbol('read');\nconst LSTAT = Symbol('lstat');\nconst ONLSTAT = Symbol('onlstat');\nconst ONREAD = Symbol('onread');\nconst ONREADLINK = Symbol('onreadlink');\nconst OPENFILE = Symbol('openfile');\nconst ONOPENFILE = Symbol('onopenfile');\nconst CLOSE = Symbol('close');\nconst MODE = Symbol('mode');\nconst AWAITDRAIN = Symbol('awaitDrain');\nconst ONDRAIN = Symbol('ondrain');\nconst PREFIX = Symbol('prefix');\nexport class WriteEntry extends Minipass {\n path;\n portable;\n myuid = (process.getuid && process.getuid()) || 0;\n // until node has builtin pwnam functions, this'll have to do\n myuser = process.env.USER || '';\n maxReadSize;\n linkCache;\n statCache;\n preservePaths;\n cwd;\n strict;\n mtime;\n noPax;\n noMtime;\n prefix;\n fd;\n blockLen = 0;\n blockRemain = 0;\n buf;\n pos = 0;\n remain = 0;\n length = 0;\n offset = 0;\n win32;\n absolute;\n header;\n type;\n linkpath;\n stat;\n onWriteEntry;\n #hadError = false;\n constructor(p, opt_ = {}) {\n const opt = dealias(opt_);\n super();\n this.path = normalizeWindowsPath(p);\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable;\n this.maxReadSize = opt.maxReadSize || maxReadSize;\n this.linkCache = opt.linkCache || new Map();\n this.statCache = opt.statCache || new Map();\n this.preservePaths = !!opt.preservePaths;\n this.cwd = normalizeWindowsPath(opt.cwd || process.cwd());\n this.strict = !!opt.strict;\n this.noPax = !!opt.noPax;\n this.noMtime = !!opt.noMtime;\n this.mtime = opt.mtime;\n this.prefix =\n opt.prefix ? normalizeWindowsPath(opt.prefix) : undefined;\n this.onWriteEntry = opt.onWriteEntry;\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn);\n }\n let pathWarn = false;\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path);\n if (root && typeof stripped === 'string') {\n this.path = stripped;\n pathWarn = root;\n }\n }\n this.win32 = !!opt.win32 || process.platform === 'win32';\n if (this.win32) {\n // force the \\ to / normalization, since we might not *actually*\n // be on windows, but want \\ to be considered a path separator.\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'));\n p = p.replace(/\\\\/g, '/');\n }\n this.absolute = normalizeWindowsPath(opt.absolute || path.resolve(this.cwd, p));\n if (this.path === '') {\n this.path = './';\n }\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n });\n }\n const cs = this.statCache.get(this.absolute);\n if (cs) {\n this[ONLSTAT](cs);\n }\n else {\n this[LSTAT]();\n }\n }\n warn(code, message, data = {}) {\n return warnMethod(this, code, message, data);\n }\n emit(ev, ...data) {\n if (ev === 'error') {\n this.#hadError = true;\n }\n return super.emit(ev, ...data);\n }\n [LSTAT]() {\n fs.lstat(this.absolute, (er, stat) => {\n if (er) {\n return this.emit('error', er);\n }\n this[ONLSTAT](stat);\n });\n }\n [ONLSTAT](stat) {\n this.statCache.set(this.absolute, stat);\n this.stat = stat;\n if (!stat.isFile()) {\n stat.size = 0;\n }\n this.type = getType(stat);\n this.emit('stat', stat);\n this[PROCESS]();\n }\n [PROCESS]() {\n switch (this.type) {\n case 'File':\n return this[FILE]();\n case 'Directory':\n return this[DIRECTORY]();\n case 'SymbolicLink':\n return this[SYMLINK]();\n // unsupported types are ignored.\n default:\n return this.end();\n }\n }\n [MODE](mode) {\n return modeFix(mode, this.type === 'Directory', this.portable);\n }\n [PREFIX](path) {\n return prefixPath(path, this.prefix);\n }\n [HEADER]() {\n /* c8 ignore start */\n if (!this.stat) {\n throw new Error('cannot write header before stat');\n }\n /* c8 ignore stop */\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true;\n }\n this.onWriteEntry?.(this);\n this.header = new Header({\n path: this[PREFIX](this.path),\n // only apply the prefix to hard links.\n linkpath: this.type === 'Link' && this.linkpath !== undefined ?\n this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? undefined : this.stat.uid,\n gid: this.portable ? undefined : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? undefined : this.mtime || this.stat.mtime,\n /* c8 ignore next */\n type: this.type === 'Unsupported' ? undefined : this.type,\n uname: this.portable ? undefined\n : this.stat.uid === this.myuid ? this.myuser\n : '',\n atime: this.portable ? undefined : this.stat.atime,\n ctime: this.portable ? undefined : this.stat.ctime,\n });\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? undefined : this.header.atime,\n ctime: this.portable ? undefined : this.header.ctime,\n gid: this.portable ? undefined : this.header.gid,\n mtime: this.noMtime ? undefined : (this.mtime || this.header.mtime),\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' && this.linkpath !== undefined ?\n this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.header.size,\n uid: this.portable ? undefined : this.header.uid,\n uname: this.portable ? undefined : this.header.uname,\n dev: this.portable ? undefined : this.stat.dev,\n ino: this.portable ? undefined : this.stat.ino,\n nlink: this.portable ? undefined : this.stat.nlink,\n }).encode());\n }\n const block = this.header?.block;\n /* c8 ignore start */\n if (!block) {\n throw new Error('failed to encode header');\n }\n /* c8 ignore stop */\n super.write(block);\n }\n [DIRECTORY]() {\n /* c8 ignore start */\n if (!this.stat) {\n throw new Error('cannot create directory entry without stat');\n }\n /* c8 ignore stop */\n if (this.path.slice(-1) !== '/') {\n this.path += '/';\n }\n this.stat.size = 0;\n this[HEADER]();\n this.end();\n }\n [SYMLINK]() {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er) {\n return this.emit('error', er);\n }\n this[ONREADLINK](linkpath);\n });\n }\n [ONREADLINK](linkpath) {\n this.linkpath = normalizeWindowsPath(linkpath);\n this[HEADER]();\n this.end();\n }\n [HARDLINK](linkpath) {\n /* c8 ignore start */\n if (!this.stat) {\n throw new Error('cannot create link entry without stat');\n }\n /* c8 ignore stop */\n this.type = 'Link';\n this.linkpath = normalizeWindowsPath(path.relative(this.cwd, linkpath));\n this.stat.size = 0;\n this[HEADER]();\n this.end();\n }\n [FILE]() {\n /* c8 ignore start */\n if (!this.stat) {\n throw new Error('cannot create file entry without stat');\n }\n /* c8 ignore stop */\n if (this.stat.nlink > 1) {\n const linkKey = `${this.stat.dev}:${this.stat.ino}`;\n const linkpath = this.linkCache.get(linkKey);\n if (linkpath?.indexOf(this.cwd) === 0) {\n return this[HARDLINK](linkpath);\n }\n this.linkCache.set(linkKey, this.absolute);\n }\n this[HEADER]();\n if (this.stat.size === 0) {\n return this.end();\n }\n this[OPENFILE]();\n }\n [OPENFILE]() {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er) {\n return this.emit('error', er);\n }\n this[ONOPENFILE](fd);\n });\n }\n [ONOPENFILE](fd) {\n this.fd = fd;\n if (this.#hadError) {\n return this[CLOSE]();\n }\n /* c8 ignore start */\n if (!this.stat) {\n throw new Error('should stat before calling onopenfile');\n }\n /* c8 ignore start */\n this.blockLen = 512 * Math.ceil(this.stat.size / 512);\n this.blockRemain = this.blockLen;\n const bufLen = Math.min(this.blockLen, this.maxReadSize);\n this.buf = Buffer.allocUnsafe(bufLen);\n this.offset = 0;\n this.pos = 0;\n this.remain = this.stat.size;\n this.length = this.buf.length;\n this[READ]();\n }\n [READ]() {\n const { fd, buf, offset, length, pos } = this;\n if (fd === undefined || buf === undefined) {\n throw new Error('cannot read file without first opening');\n }\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](() => this.emit('error', er));\n }\n this[ONREAD](bytesRead);\n });\n }\n /* c8 ignore start */\n [CLOSE](cb = () => { }) {\n /* c8 ignore stop */\n if (this.fd !== undefined)\n fs.close(this.fd, cb);\n }\n [ONREAD](bytesRead) {\n if (bytesRead <= 0 && this.remain > 0) {\n const er = Object.assign(new Error('encountered unexpected EOF'), {\n path: this.absolute,\n syscall: 'read',\n code: 'EOF',\n });\n return this[CLOSE](() => this.emit('error', er));\n }\n if (bytesRead > this.remain) {\n const er = Object.assign(new Error('did not encounter expected EOF'), {\n path: this.absolute,\n syscall: 'read',\n code: 'EOF',\n });\n return this[CLOSE](() => this.emit('error', er));\n }\n /* c8 ignore start */\n if (!this.buf) {\n throw new Error('should have created buffer prior to reading');\n }\n /* c8 ignore stop */\n // null out the rest of the buffer, if we could fit the block padding\n // at the end of this loop, we've incremented bytesRead and this.remain\n // to be incremented up to the blockRemain level, as if we had expected\n // to get a null-padded file, and read it until the end. then we will\n // decrement both remain and blockRemain by bytesRead, and know that we\n // reached the expected EOF, without any null buffer to append.\n if (bytesRead === this.remain) {\n for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {\n this.buf[i + this.offset] = 0;\n bytesRead++;\n this.remain++;\n }\n }\n const chunk = this.offset === 0 && bytesRead === this.buf.length ?\n this.buf\n : this.buf.subarray(this.offset, this.offset + bytesRead);\n const flushed = this.write(chunk);\n if (!flushed) {\n this[AWAITDRAIN](() => this[ONDRAIN]());\n }\n else {\n this[ONDRAIN]();\n }\n }\n [AWAITDRAIN](cb) {\n this.once('drain', cb);\n }\n write(chunk, encoding, cb) {\n /* c8 ignore start - just junk to comply with NodeJS.WritableStream */\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n if (typeof chunk === 'string') {\n chunk = Buffer.from(chunk, typeof encoding === 'string' ? encoding : 'utf8');\n }\n /* c8 ignore stop */\n if (this.blockRemain < chunk.length) {\n const er = Object.assign(new Error('writing more data than expected'), {\n path: this.absolute,\n });\n return this.emit('error', er);\n }\n this.remain -= chunk.length;\n this.blockRemain -= chunk.length;\n this.pos += chunk.length;\n this.offset += chunk.length;\n return super.write(chunk, null, cb);\n }\n [ONDRAIN]() {\n if (!this.remain) {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain));\n }\n return this[CLOSE](er => er ? this.emit('error', er) : this.end());\n }\n /* c8 ignore start */\n if (!this.buf) {\n throw new Error('buffer lost somehow in ONDRAIN');\n }\n /* c8 ignore stop */\n if (this.offset >= this.length) {\n // if we only have a smaller bit left to read, alloc a smaller buffer\n // otherwise, keep it the same length it was before.\n this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length));\n this.offset = 0;\n }\n this.length = this.buf.length - this.offset;\n this[READ]();\n }\n}\nexport class WriteEntrySync extends WriteEntry {\n sync = true;\n [LSTAT]() {\n this[ONLSTAT](fs.lstatSync(this.absolute));\n }\n [SYMLINK]() {\n this[ONREADLINK](fs.readlinkSync(this.absolute));\n }\n [OPENFILE]() {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'));\n }\n [READ]() {\n let threw = true;\n try {\n const { fd, buf, offset, length, pos } = this;\n /* c8 ignore start */\n if (fd === undefined || buf === undefined) {\n throw new Error('fd and buf must be set in READ method');\n }\n /* c8 ignore stop */\n const bytesRead = fs.readSync(fd, buf, offset, length, pos);\n this[ONREAD](bytesRead);\n threw = false;\n }\n finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](() => { });\n }\n catch (er) { }\n }\n }\n }\n [AWAITDRAIN](cb) {\n cb();\n }\n /* c8 ignore start */\n [CLOSE](cb = () => { }) {\n /* c8 ignore stop */\n if (this.fd !== undefined)\n fs.closeSync(this.fd);\n cb();\n }\n}\nexport class WriteEntryTar extends Minipass {\n blockLen = 0;\n blockRemain = 0;\n buf = 0;\n pos = 0;\n remain = 0;\n length = 0;\n preservePaths;\n portable;\n strict;\n noPax;\n noMtime;\n readEntry;\n type;\n prefix;\n path;\n mode;\n uid;\n gid;\n uname;\n gname;\n header;\n mtime;\n atime;\n ctime;\n linkpath;\n size;\n onWriteEntry;\n warn(code, message, data = {}) {\n return warnMethod(this, code, message, data);\n }\n constructor(readEntry, opt_ = {}) {\n const opt = dealias(opt_);\n super();\n this.preservePaths = !!opt.preservePaths;\n this.portable = !!opt.portable;\n this.strict = !!opt.strict;\n this.noPax = !!opt.noPax;\n this.noMtime = !!opt.noMtime;\n this.onWriteEntry = opt.onWriteEntry;\n this.readEntry = readEntry;\n const { type } = readEntry;\n /* c8 ignore start */\n if (type === 'Unsupported') {\n throw new Error('writing entry that should be ignored');\n }\n /* c8 ignore stop */\n this.type = type;\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true;\n }\n this.prefix = opt.prefix;\n this.path = normalizeWindowsPath(readEntry.path);\n this.mode =\n readEntry.mode !== undefined ?\n this[MODE](readEntry.mode)\n : undefined;\n this.uid = this.portable ? undefined : readEntry.uid;\n this.gid = this.portable ? undefined : readEntry.gid;\n this.uname = this.portable ? undefined : readEntry.uname;\n this.gname = this.portable ? undefined : readEntry.gname;\n this.size = readEntry.size;\n this.mtime =\n this.noMtime ? undefined : opt.mtime || readEntry.mtime;\n this.atime = this.portable ? undefined : readEntry.atime;\n this.ctime = this.portable ? undefined : readEntry.ctime;\n this.linkpath =\n readEntry.linkpath !== undefined ?\n normalizeWindowsPath(readEntry.linkpath)\n : undefined;\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn);\n }\n let pathWarn = false;\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path);\n if (root && typeof stripped === 'string') {\n this.path = stripped;\n pathWarn = root;\n }\n }\n this.remain = readEntry.size;\n this.blockRemain = readEntry.startBlockSize;\n this.onWriteEntry?.(this);\n this.header = new Header({\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' && this.linkpath !== undefined ?\n this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? undefined : this.uid,\n gid: this.portable ? undefined : this.gid,\n size: this.size,\n mtime: this.noMtime ? undefined : this.mtime,\n type: this.type,\n uname: this.portable ? undefined : this.uname,\n atime: this.portable ? undefined : this.atime,\n ctime: this.portable ? undefined : this.ctime,\n });\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n });\n }\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? undefined : this.atime,\n ctime: this.portable ? undefined : this.ctime,\n gid: this.portable ? undefined : this.gid,\n mtime: this.noMtime ? undefined : this.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' && this.linkpath !== undefined ?\n this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.size,\n uid: this.portable ? undefined : this.uid,\n uname: this.portable ? undefined : this.uname,\n dev: this.portable ? undefined : this.readEntry.dev,\n ino: this.portable ? undefined : this.readEntry.ino,\n nlink: this.portable ? undefined : this.readEntry.nlink,\n }).encode());\n }\n const b = this.header?.block;\n /* c8 ignore start */\n if (!b)\n throw new Error('failed to encode header');\n /* c8 ignore stop */\n super.write(b);\n readEntry.pipe(this);\n }\n [PREFIX](path) {\n return prefixPath(path, this.prefix);\n }\n [MODE](mode) {\n return modeFix(mode, this.type === 'Directory', this.portable);\n }\n write(chunk, encoding, cb) {\n /* c8 ignore start - just junk to comply with NodeJS.WritableStream */\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n if (typeof chunk === 'string') {\n chunk = Buffer.from(chunk, typeof encoding === 'string' ? encoding : 'utf8');\n }\n /* c8 ignore stop */\n const writeLen = chunk.length;\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate');\n }\n this.blockRemain -= writeLen;\n return super.write(chunk, cb);\n }\n end(chunk, encoding, cb) {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain));\n }\n /* c8 ignore start - just junk to comply with NodeJS.WritableStream */\n if (typeof chunk === 'function') {\n cb = chunk;\n encoding = undefined;\n chunk = undefined;\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = undefined;\n }\n if (typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding ?? 'utf8');\n }\n if (cb)\n this.once('finish', cb);\n chunk ? super.end(chunk, cb) : super.end(cb);\n /* c8 ignore stop */\n return this;\n }\n}\nconst getType = (stat) => stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported';\n//# sourceMappingURL=write-entry.js.map",
49
+ "export const modeFix = (mode, isDir, portable) => {\n mode &= 0o7777;\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable) {\n mode = (mode | 0o600) & ~0o22;\n }\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400) {\n mode |= 0o100;\n }\n if (mode & 0o40) {\n mode |= 0o10;\n }\n if (mode & 0o4) {\n mode |= 0o1;\n }\n }\n return mode;\n};\n//# sourceMappingURL=mode-fix.js.map",
50
+ "// unix absolute paths are also absolute on win32, so we use this for both\nimport { win32 } from 'node:path';\nconst { isAbsolute, parse } = win32;\n// returns [root, stripped]\n// Note that windows will think that //x/y/z/a has a \"root\" of //x/y, and in\n// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /\n// explicitly if it's the first character.\n// drive-specific relative paths on Windows get their root stripped off even\n// though they are not absolute, so `c:../foo` becomes ['c:', '../foo']\nexport const stripAbsolutePath = (path) => {\n let r = '';\n let parsed = parse(path);\n while (isAbsolute(path) || parsed.root) {\n // windows will think that //x/y/z has a \"root\" of //x/y/\n // but strip the //?/C:/ off of //?/C:/path\n const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ?\n '/'\n : parsed.root;\n path = path.slice(root.length);\n r += root;\n parsed = parse(path);\n }\n return [r, path];\n};\n//# sourceMappingURL=strip-absolute-path.js.map",
51
+ "// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\nconst raw = ['|', '<', '>', '?', ':'];\nconst win = raw.map(char => String.fromCharCode(0xf000 + char.charCodeAt(0)));\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]));\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]));\nexport const encode = (s) => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s);\nexport const decode = (s) => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s);\n//# sourceMappingURL=winchars.js.map",
52
+ "export class Yallist {\n tail;\n head;\n length = 0;\n static create(list = []) {\n return new Yallist(list);\n }\n constructor(list = []) {\n for (const item of list) {\n this.push(item);\n }\n }\n *[Symbol.iterator]() {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value;\n }\n }\n removeNode(node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list');\n }\n const next = node.next;\n const prev = node.prev;\n if (next) {\n next.prev = prev;\n }\n if (prev) {\n prev.next = next;\n }\n if (node === this.head) {\n this.head = next;\n }\n if (node === this.tail) {\n this.tail = prev;\n }\n this.length--;\n node.next = undefined;\n node.prev = undefined;\n node.list = undefined;\n return next;\n }\n unshiftNode(node) {\n if (node === this.head) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n const head = this.head;\n node.list = this;\n node.next = head;\n if (head) {\n head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.length++;\n }\n pushNode(node) {\n if (node === this.tail) {\n return;\n }\n if (node.list) {\n node.list.removeNode(node);\n }\n const tail = this.tail;\n node.list = this;\n node.prev = tail;\n if (tail) {\n tail.next = node;\n }\n this.tail = node;\n if (!this.head) {\n this.head = node;\n }\n this.length++;\n }\n push(...args) {\n for (let i = 0, l = args.length; i < l; i++) {\n push(this, args[i]);\n }\n return this.length;\n }\n unshift(...args) {\n for (var i = 0, l = args.length; i < l; i++) {\n unshift(this, args[i]);\n }\n return this.length;\n }\n pop() {\n if (!this.tail) {\n return undefined;\n }\n const res = this.tail.value;\n const t = this.tail;\n this.tail = this.tail.prev;\n if (this.tail) {\n this.tail.next = undefined;\n }\n else {\n this.head = undefined;\n }\n t.list = undefined;\n this.length--;\n return res;\n }\n shift() {\n if (!this.head) {\n return undefined;\n }\n const res = this.head.value;\n const h = this.head;\n this.head = this.head.next;\n if (this.head) {\n this.head.prev = undefined;\n }\n else {\n this.tail = undefined;\n }\n h.list = undefined;\n this.length--;\n return res;\n }\n forEach(fn, thisp) {\n thisp = thisp || this;\n for (let walker = this.head, i = 0; !!walker; i++) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.next;\n }\n }\n forEachReverse(fn, thisp) {\n thisp = thisp || this;\n for (let walker = this.tail, i = this.length - 1; !!walker; i--) {\n fn.call(thisp, walker.value, i, this);\n walker = walker.prev;\n }\n }\n get(n) {\n let i = 0;\n let walker = this.head;\n for (; !!walker && i < n; i++) {\n walker = walker.next;\n }\n if (i === n && !!walker) {\n return walker.value;\n }\n }\n getReverse(n) {\n let i = 0;\n let walker = this.tail;\n for (; !!walker && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev;\n }\n if (i === n && !!walker) {\n return walker.value;\n }\n }\n map(fn, thisp) {\n thisp = thisp || this;\n const res = new Yallist();\n for (let walker = this.head; !!walker;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.next;\n }\n return res;\n }\n mapReverse(fn, thisp) {\n thisp = thisp || this;\n var res = new Yallist();\n for (let walker = this.tail; !!walker;) {\n res.push(fn.call(thisp, walker.value, this));\n walker = walker.prev;\n }\n return res;\n }\n reduce(fn, initial) {\n let acc;\n let walker = this.head;\n if (arguments.length > 1) {\n acc = initial;\n }\n else if (this.head) {\n walker = this.head.next;\n acc = this.head.value;\n }\n else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (var i = 0; !!walker; i++) {\n acc = fn(acc, walker.value, i);\n walker = walker.next;\n }\n return acc;\n }\n reduceReverse(fn, initial) {\n let acc;\n let walker = this.tail;\n if (arguments.length > 1) {\n acc = initial;\n }\n else if (this.tail) {\n walker = this.tail.prev;\n acc = this.tail.value;\n }\n else {\n throw new TypeError('Reduce of empty list with no initial value');\n }\n for (let i = this.length - 1; !!walker; i--) {\n acc = fn(acc, walker.value, i);\n walker = walker.prev;\n }\n return acc;\n }\n toArray() {\n const arr = new Array(this.length);\n for (let i = 0, walker = this.head; !!walker; i++) {\n arr[i] = walker.value;\n walker = walker.next;\n }\n return arr;\n }\n toArrayReverse() {\n const arr = new Array(this.length);\n for (let i = 0, walker = this.tail; !!walker; i++) {\n arr[i] = walker.value;\n walker = walker.prev;\n }\n return arr;\n }\n slice(from = 0, to = this.length) {\n if (to < 0) {\n to += this.length;\n }\n if (from < 0) {\n from += this.length;\n }\n const ret = new Yallist();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n let walker = this.head;\n let i = 0;\n for (i = 0; !!walker && i < from; i++) {\n walker = walker.next;\n }\n for (; !!walker && i < to; i++, walker = walker.next) {\n ret.push(walker.value);\n }\n return ret;\n }\n sliceReverse(from = 0, to = this.length) {\n if (to < 0) {\n to += this.length;\n }\n if (from < 0) {\n from += this.length;\n }\n const ret = new Yallist();\n if (to < from || to < 0) {\n return ret;\n }\n if (from < 0) {\n from = 0;\n }\n if (to > this.length) {\n to = this.length;\n }\n let i = this.length;\n let walker = this.tail;\n for (; !!walker && i > to; i--) {\n walker = walker.prev;\n }\n for (; !!walker && i > from; i--, walker = walker.prev) {\n ret.push(walker.value);\n }\n return ret;\n }\n splice(start, deleteCount = 0, ...nodes) {\n if (start > this.length) {\n start = this.length - 1;\n }\n if (start < 0) {\n start = this.length + start;\n }\n let walker = this.head;\n for (let i = 0; !!walker && i < start; i++) {\n walker = walker.next;\n }\n const ret = [];\n for (let i = 0; !!walker && i < deleteCount; i++) {\n ret.push(walker.value);\n walker = this.removeNode(walker);\n }\n if (!walker) {\n walker = this.tail;\n }\n else if (walker !== this.tail) {\n walker = walker.prev;\n }\n for (const v of nodes) {\n walker = insertAfter(this, walker, v);\n }\n return ret;\n }\n reverse() {\n const head = this.head;\n const tail = this.tail;\n for (let walker = head; !!walker; walker = walker.prev) {\n const p = walker.prev;\n walker.prev = walker.next;\n walker.next = p;\n }\n this.head = tail;\n this.tail = head;\n return this;\n }\n}\n// insertAfter undefined means \"make the node the new head of list\"\nfunction insertAfter(self, node, value) {\n const prev = node;\n const next = node ? node.next : self.head;\n const inserted = new Node(value, prev, next, self);\n if (inserted.next === undefined) {\n self.tail = inserted;\n }\n if (inserted.prev === undefined) {\n self.head = inserted;\n }\n self.length++;\n return inserted;\n}\nfunction push(self, item) {\n self.tail = new Node(item, self.tail, undefined, self);\n if (!self.head) {\n self.head = self.tail;\n }\n self.length++;\n}\nfunction unshift(self, item) {\n self.head = new Node(item, undefined, self.head, self);\n if (!self.tail) {\n self.tail = self.head;\n }\n self.length++;\n}\nexport class Node {\n list;\n next;\n prev;\n value;\n constructor(value, prev, next, list) {\n this.list = list;\n this.value = value;\n if (prev) {\n prev.next = this;\n this.prev = prev;\n }\n else {\n this.prev = undefined;\n }\n if (next) {\n next.prev = this;\n this.next = next;\n }\n else {\n this.next = undefined;\n }\n }\n}\n//# sourceMappingURL=index.js.map",
53
+ "// tar -x\nimport * as fsm from '@isaacs/fs-minipass';\nimport fs from 'node:fs';\nimport { filesFilter } from './list.js';\nimport { makeCommand } from './make-command.js';\nimport { Unpack, UnpackSync } from './unpack.js';\nconst extractFileSync = (opt) => {\n const u = new UnpackSync(opt);\n const file = opt.file;\n const stat = fs.statSync(file);\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024;\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n });\n stream.pipe(u);\n};\nconst extractFile = (opt, _) => {\n const u = new Unpack(opt);\n const readSize = opt.maxReadSize || 16 * 1024 * 1024;\n const file = opt.file;\n const p = new Promise((resolve, reject) => {\n u.on('error', reject);\n u.on('close', resolve);\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er);\n }\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n });\n stream.on('error', reject);\n stream.pipe(u);\n }\n });\n });\n return p;\n};\nexport const extract = makeCommand(extractFileSync, extractFile, opt => new UnpackSync(opt), opt => new Unpack(opt), (opt, files) => {\n if (files?.length)\n filesFilter(opt, files);\n});\n//# sourceMappingURL=extract.js.map",
54
+ "// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\nimport * as fsm from '@isaacs/fs-minipass';\nimport assert from 'node:assert';\nimport { randomBytes } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { getWriteFlag } from './get-write-flag.js';\nimport { mkdir, mkdirSync } from './mkdir.js';\nimport { normalizeWindowsPath } from './normalize-windows-path.js';\nimport { Parser } from './parse.js';\nimport { stripAbsolutePath } from './strip-absolute-path.js';\nimport * as wc from './winchars.js';\nimport { PathReservations } from './path-reservations.js';\nconst ONENTRY = Symbol('onEntry');\nconst CHECKFS = Symbol('checkFs');\nconst CHECKFS2 = Symbol('checkFs2');\nconst ISREUSABLE = Symbol('isReusable');\nconst MAKEFS = Symbol('makeFs');\nconst FILE = Symbol('file');\nconst DIRECTORY = Symbol('directory');\nconst LINK = Symbol('link');\nconst SYMLINK = Symbol('symlink');\nconst HARDLINK = Symbol('hardlink');\nconst UNSUPPORTED = Symbol('unsupported');\nconst CHECKPATH = Symbol('checkPath');\nconst STRIPABSOLUTEPATH = Symbol('stripAbsolutePath');\nconst MKDIR = Symbol('mkdir');\nconst ONERROR = Symbol('onError');\nconst PENDING = Symbol('pending');\nconst PEND = Symbol('pend');\nconst UNPEND = Symbol('unpend');\nconst ENDED = Symbol('ended');\nconst MAYBECLOSE = Symbol('maybeClose');\nconst SKIP = Symbol('skip');\nconst DOCHOWN = Symbol('doChown');\nconst UID = Symbol('uid');\nconst GID = Symbol('gid');\nconst CHECKED_CWD = Symbol('checkedCwd');\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;\nconst isWindows = platform === 'win32';\nconst DEFAULT_MAX_DEPTH = 1024;\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* c8 ignore start */\nconst unlinkFile = (path, cb) => {\n if (!isWindows) {\n return fs.unlink(path, cb);\n }\n const name = path + '.DELETE.' + randomBytes(16).toString('hex');\n fs.rename(path, name, er => {\n if (er) {\n return cb(er);\n }\n fs.unlink(name, cb);\n });\n};\n/* c8 ignore stop */\n/* c8 ignore start */\nconst unlinkFileSync = (path) => {\n if (!isWindows) {\n return fs.unlinkSync(path);\n }\n const name = path + '.DELETE.' + randomBytes(16).toString('hex');\n fs.renameSync(path, name);\n fs.unlinkSync(name);\n};\n/* c8 ignore stop */\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) => a !== undefined && a === a >>> 0 ? a\n : b !== undefined && b === b >>> 0 ? b\n : c;\nexport class Unpack extends Parser {\n [ENDED] = false;\n [CHECKED_CWD] = false;\n [PENDING] = 0;\n reservations = new PathReservations();\n transform;\n writable = true;\n readable = false;\n uid;\n gid;\n setOwner;\n preserveOwner;\n processGid;\n processUid;\n maxDepth;\n forceChown;\n win32;\n newer;\n keep;\n noMtime;\n preservePaths;\n unlink;\n cwd;\n strip;\n processUmask;\n umask;\n dmode;\n fmode;\n chmod;\n constructor(opt = {}) {\n opt.ondone = () => {\n this[ENDED] = true;\n this[MAYBECLOSE]();\n };\n super(opt);\n this.transform = opt.transform;\n this.chmod = !!opt.chmod;\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' ||\n typeof opt.gid !== 'number') {\n throw new TypeError('cannot set owner without number uid and gid');\n }\n if (opt.preserveOwner) {\n throw new TypeError('cannot preserve owner in archive and also set owner explicitly');\n }\n this.uid = opt.uid;\n this.gid = opt.gid;\n this.setOwner = true;\n }\n else {\n this.uid = undefined;\n this.gid = undefined;\n this.setOwner = false;\n }\n // default true for root\n if (opt.preserveOwner === undefined &&\n typeof opt.uid !== 'number') {\n this.preserveOwner = !!(process.getuid && process.getuid() === 0);\n }\n else {\n this.preserveOwner = !!opt.preserveOwner;\n }\n this.processUid =\n (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid()\n : undefined;\n this.processGid =\n (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid()\n : undefined;\n // prevent excessively deep nesting of subfolders\n // set to `Infinity` to remove this restriction\n this.maxDepth =\n typeof opt.maxDepth === 'number' ?\n opt.maxDepth\n : DEFAULT_MAX_DEPTH;\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true;\n // turn ><?| in filenames into 0xf000-higher encoded forms\n this.win32 = !!opt.win32 || isWindows;\n // do not unpack over files that are newer than what's in the archive\n this.newer = !!opt.newer;\n // do not unpack over ANY files\n this.keep = !!opt.keep;\n // do not set mtime/atime of extracted entries\n this.noMtime = !!opt.noMtime;\n // allow .., absolute path entries, and unpacking through symlinks\n // without this, warn and skip .., relativize absolutes, and error\n // on symlinks in extraction path\n this.preservePaths = !!opt.preservePaths;\n // unlink files and links before writing. This breaks existing hard\n // links, and removes symlink directories rather than erroring\n this.unlink = !!opt.unlink;\n this.cwd = normalizeWindowsPath(path.resolve(opt.cwd || process.cwd()));\n this.strip = Number(opt.strip) || 0;\n // if we're not chmodding, then we don't need the process umask\n this.processUmask =\n !this.chmod ? 0\n : typeof opt.processUmask === 'number' ? opt.processUmask\n : process.umask();\n this.umask =\n typeof opt.umask === 'number' ? opt.umask : this.processUmask;\n // default mode for dirs created as parents\n this.dmode = opt.dmode || 0o0777 & ~this.umask;\n this.fmode = opt.fmode || 0o0666 & ~this.umask;\n this.on('entry', entry => this[ONENTRY](entry));\n }\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn(code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') {\n data.recoverable = false;\n }\n return super.warn(code, msg, data);\n }\n [MAYBECLOSE]() {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish');\n this.emit('finish');\n this.emit('end');\n }\n }\n // return false if we need to skip this file\n // return true if the field was successfully sanitized\n [STRIPABSOLUTEPATH](entry, field) {\n const p = entry[field];\n const { type } = entry;\n if (!p || this.preservePaths)\n return true;\n const parts = p.split('/');\n if (parts.includes('..') ||\n /* c8 ignore next */\n (isWindows && /^[a-z]:\\.\\.$/i.test(parts[0] ?? ''))) {\n // For linkpath, check if the resolved path escapes cwd rather than\n // just rejecting any path with '..' - relative symlinks like\n // '../sibling/file' are valid if they resolve within the cwd.\n // For paths, they just simply may not ever use .. at all.\n if (field === 'path' || type === 'Link') {\n this.warn('TAR_ENTRY_ERROR', `${field} contains '..'`, {\n entry,\n [field]: p,\n });\n // not ok!\n return false;\n }\n else {\n // Resolve linkpath relative to the entry's directory.\n // `path.posix` is safe to use because we're operating on\n // tar paths, not a filesystem.\n const entryDir = path.posix.dirname(entry.path);\n const resolved = path.posix.normalize(path.posix.join(entryDir, p));\n // If the resolved path escapes (starts with ..), reject it\n if (resolved.startsWith('../') || resolved === '..') {\n this.warn('TAR_ENTRY_ERROR', `${field} escapes extraction directory`, {\n entry,\n [field]: p,\n });\n return false;\n }\n }\n }\n // strip off the root\n const [root, stripped] = stripAbsolutePath(p);\n if (root) {\n // ok, but triggers warning about stripping root\n entry[field] = String(stripped);\n this.warn('TAR_ENTRY_INFO', `stripping ${root} from absolute ${field}`, {\n entry,\n [field]: p,\n });\n }\n return true;\n }\n [CHECKPATH](entry) {\n const p = normalizeWindowsPath(entry.path);\n const parts = p.split('/');\n if (this.strip) {\n if (parts.length < this.strip) {\n return false;\n }\n if (entry.type === 'Link') {\n const linkparts = normalizeWindowsPath(String(entry.linkpath)).split('/');\n if (linkparts.length >= this.strip) {\n entry.linkpath = linkparts.slice(this.strip).join('/');\n }\n else {\n return false;\n }\n }\n parts.splice(0, this.strip);\n entry.path = parts.join('/');\n }\n if (isFinite(this.maxDepth) && parts.length > this.maxDepth) {\n this.warn('TAR_ENTRY_ERROR', 'path excessively deep', {\n entry,\n path: p,\n depth: parts.length,\n maxDepth: this.maxDepth,\n });\n return false;\n }\n if (!this[STRIPABSOLUTEPATH](entry, 'path') ||\n !this[STRIPABSOLUTEPATH](entry, 'linkpath')) {\n return false;\n }\n if (path.isAbsolute(entry.path)) {\n entry.absolute = normalizeWindowsPath(path.resolve(entry.path));\n }\n else {\n entry.absolute = normalizeWindowsPath(path.resolve(this.cwd, entry.path));\n }\n // if we somehow ended up with a path that escapes the cwd, and we are\n // not in preservePaths mode, then something is fishy! This should have\n // been prevented above, so ignore this for coverage.\n /* c8 ignore start - defense in depth */\n if (!this.preservePaths &&\n typeof entry.absolute === 'string' &&\n entry.absolute.indexOf(this.cwd + '/') !== 0 &&\n entry.absolute !== this.cwd) {\n this.warn('TAR_ENTRY_ERROR', 'path escaped extraction target', {\n entry,\n path: normalizeWindowsPath(entry.path),\n resolvedPath: entry.absolute,\n cwd: this.cwd,\n });\n return false;\n }\n /* c8 ignore stop */\n // an archive can set properties on the extraction directory, but it\n // may not replace the cwd with a different kind of thing entirely.\n if (entry.absolute === this.cwd &&\n entry.type !== 'Directory' &&\n entry.type !== 'GNUDumpDir') {\n return false;\n }\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const { root: aRoot } = path.win32.parse(String(entry.absolute));\n entry.absolute =\n aRoot + wc.encode(String(entry.absolute).slice(aRoot.length));\n const { root: pRoot } = path.win32.parse(entry.path);\n entry.path = pRoot + wc.encode(entry.path.slice(pRoot.length));\n }\n return true;\n }\n [ONENTRY](entry) {\n if (!this[CHECKPATH](entry)) {\n return entry.resume();\n }\n assert.equal(typeof entry.absolute, 'string');\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode) {\n entry.mode = entry.mode | 0o700;\n }\n // eslint-disable-next-line no-fallthrough\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry);\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry);\n }\n }\n [ONERROR](er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError') {\n this.emit('error', er);\n }\n else {\n this.warn('TAR_ENTRY_ERROR', er, { entry });\n this[UNPEND]();\n entry.resume();\n }\n }\n [MKDIR](dir, mode, cb) {\n mkdir(normalizeWindowsPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cwd: this.cwd,\n mode: mode,\n }, cb);\n }\n [DOCHOWN](entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return (this.forceChown ||\n (this.preserveOwner &&\n ((typeof entry.uid === 'number' &&\n entry.uid !== this.processUid) ||\n (typeof entry.gid === 'number' &&\n entry.gid !== this.processGid))) ||\n (typeof this.uid === 'number' &&\n this.uid !== this.processUid) ||\n (typeof this.gid === 'number' && this.gid !== this.processGid));\n }\n [UID](entry) {\n return uint32(this.uid, entry.uid, this.processUid);\n }\n [GID](entry) {\n return uint32(this.gid, entry.gid, this.processGid);\n }\n [FILE](entry, fullyDone) {\n const mode = typeof entry.mode === 'number' ?\n entry.mode & 0o7777\n : this.fmode;\n const stream = new fsm.WriteStream(String(entry.absolute), {\n // slight lie, but it can be numeric flags\n flags: getWriteFlag(entry.size),\n mode: mode,\n autoClose: false,\n });\n stream.on('error', (er) => {\n if (stream.fd) {\n fs.close(stream.fd, () => { });\n }\n // flush all the data out so that we aren't left hanging\n // if the error wasn't actually fatal. otherwise the parse\n // is blocked, and we never proceed.\n stream.write = () => true;\n this[ONERROR](er, entry);\n fullyDone();\n });\n let actions = 1;\n const done = (er) => {\n if (er) {\n /* c8 ignore start - we should always have a fd by now */\n if (stream.fd) {\n fs.close(stream.fd, () => { });\n }\n /* c8 ignore stop */\n this[ONERROR](er, entry);\n fullyDone();\n return;\n }\n if (--actions === 0) {\n if (stream.fd !== undefined) {\n fs.close(stream.fd, er => {\n if (er) {\n this[ONERROR](er, entry);\n }\n else {\n this[UNPEND]();\n }\n fullyDone();\n });\n }\n }\n };\n stream.on('finish', () => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = String(entry.absolute);\n const fd = stream.fd;\n if (typeof fd === 'number' && entry.mtime && !this.noMtime) {\n actions++;\n const atime = entry.atime || new Date();\n const mtime = entry.mtime;\n fs.futimes(fd, atime, mtime, er => er ?\n fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done());\n }\n if (typeof fd === 'number' && this[DOCHOWN](entry)) {\n actions++;\n const uid = this[UID](entry);\n const gid = this[GID](entry);\n if (typeof uid === 'number' && typeof gid === 'number') {\n fs.fchown(fd, uid, gid, er => er ?\n fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done());\n }\n }\n done();\n });\n const tx = this.transform ? this.transform(entry) || entry : entry;\n if (tx !== entry) {\n tx.on('error', (er) => {\n this[ONERROR](er, entry);\n fullyDone();\n });\n entry.pipe(tx);\n }\n tx.pipe(stream);\n }\n [DIRECTORY](entry, fullyDone) {\n const mode = typeof entry.mode === 'number' ?\n entry.mode & 0o7777\n : this.dmode;\n this[MKDIR](String(entry.absolute), mode, er => {\n if (er) {\n this[ONERROR](er, entry);\n fullyDone();\n return;\n }\n let actions = 1;\n const done = () => {\n if (--actions === 0) {\n fullyDone();\n this[UNPEND]();\n entry.resume();\n }\n };\n if (entry.mtime && !this.noMtime) {\n actions++;\n fs.utimes(String(entry.absolute), entry.atime || new Date(), entry.mtime, done);\n }\n if (this[DOCHOWN](entry)) {\n actions++;\n fs.chown(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)), done);\n }\n done();\n });\n }\n [UNSUPPORTED](entry) {\n entry.unsupported = true;\n this.warn('TAR_ENTRY_UNSUPPORTED', `unsupported entry type: ${entry.type}`, { entry });\n entry.resume();\n }\n [SYMLINK](entry, done) {\n this[LINK](entry, String(entry.linkpath), 'symlink', done);\n }\n [HARDLINK](entry, done) {\n const linkpath = normalizeWindowsPath(path.resolve(this.cwd, String(entry.linkpath)));\n this[LINK](entry, linkpath, 'link', done);\n }\n [PEND]() {\n this[PENDING]++;\n }\n [UNPEND]() {\n this[PENDING]--;\n this[MAYBECLOSE]();\n }\n [SKIP](entry) {\n this[UNPEND]();\n entry.resume();\n }\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE](entry, st) {\n return (entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n !isWindows);\n }\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS](entry) {\n this[PEND]();\n const paths = [entry.path];\n if (entry.linkpath) {\n paths.push(entry.linkpath);\n }\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done));\n }\n [CHECKFS2](entry, fullyDone) {\n const done = (er) => {\n fullyDone(er);\n };\n const checkCwd = () => {\n this[MKDIR](this.cwd, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry);\n done();\n return;\n }\n this[CHECKED_CWD] = true;\n start();\n });\n };\n const start = () => {\n if (entry.absolute !== this.cwd) {\n const parent = normalizeWindowsPath(path.dirname(String(entry.absolute)));\n if (parent !== this.cwd) {\n return this[MKDIR](parent, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry);\n done();\n return;\n }\n afterMakeParent();\n });\n }\n }\n afterMakeParent();\n };\n const afterMakeParent = () => {\n fs.lstat(String(entry.absolute), (lstatEr, st) => {\n if (st &&\n (this.keep ||\n /* c8 ignore next */\n (this.newer && st.mtime > (entry.mtime ?? st.mtime)))) {\n this[SKIP](entry);\n done();\n return;\n }\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry, done);\n }\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = this.chmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode;\n const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done);\n if (!needChmod) {\n return afterChmod();\n }\n return fs.chmod(String(entry.absolute), Number(entry.mode), afterChmod);\n }\n // Not a dir entry, have to remove it.\n // NB: the only way to end up with an entry that is the cwd\n // itself, in such a way that == does not detect, is a\n // tricky windows absolute path with UNC or 8.3 parts (and\n // preservePaths:true, or else it will have been stripped).\n // In that case, the user has opted out of path protections\n // explicitly, so if they blow away the cwd, c'est la vie.\n if (entry.absolute !== this.cwd) {\n return fs.rmdir(String(entry.absolute), (er) => this[MAKEFS](er ?? null, entry, done));\n }\n }\n // not a dir, and not reusable\n // don't remove if the cwd, we want that error\n if (entry.absolute === this.cwd) {\n return this[MAKEFS](null, entry, done);\n }\n unlinkFile(String(entry.absolute), er => this[MAKEFS](er ?? null, entry, done));\n });\n };\n if (this[CHECKED_CWD]) {\n start();\n }\n else {\n checkCwd();\n }\n }\n [MAKEFS](er, entry, done) {\n if (er) {\n this[ONERROR](er, entry);\n done();\n return;\n }\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done);\n case 'Link':\n return this[HARDLINK](entry, done);\n case 'SymbolicLink':\n return this[SYMLINK](entry, done);\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done);\n }\n }\n [LINK](entry, linkpath, link, done) {\n // XXX: get the type ('symlink' or 'junction') for windows\n fs[link](linkpath, String(entry.absolute), er => {\n if (er) {\n this[ONERROR](er, entry);\n }\n else {\n this[UNPEND]();\n entry.resume();\n }\n done();\n });\n }\n}\nconst callSync = (fn) => {\n try {\n return [null, fn()];\n }\n catch (er) {\n return [er, null];\n }\n};\nexport class UnpackSync extends Unpack {\n sync = true;\n [MAKEFS](er, entry) {\n return super[MAKEFS](er, entry, () => { });\n }\n [CHECKFS](entry) {\n if (!this[CHECKED_CWD]) {\n const er = this[MKDIR](this.cwd, this.dmode);\n if (er) {\n return this[ONERROR](er, entry);\n }\n this[CHECKED_CWD] = true;\n }\n // don't bother to make the parent if the current entry is the cwd,\n // we've already checked it.\n if (entry.absolute !== this.cwd) {\n const parent = normalizeWindowsPath(path.dirname(String(entry.absolute)));\n if (parent !== this.cwd) {\n const mkParent = this[MKDIR](parent, this.dmode);\n if (mkParent) {\n return this[ONERROR](mkParent, entry);\n }\n }\n }\n const [lstatEr, st] = callSync(() => fs.lstatSync(String(entry.absolute)));\n if (st &&\n (this.keep ||\n /* c8 ignore next */\n (this.newer && st.mtime > (entry.mtime ?? st.mtime)))) {\n return this[SKIP](entry);\n }\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry);\n }\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = this.chmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode;\n const [er] = needChmod ?\n callSync(() => {\n fs.chmodSync(String(entry.absolute), Number(entry.mode));\n })\n : [];\n return this[MAKEFS](er, entry);\n }\n // not a dir entry, have to remove it\n const [er] = callSync(() => fs.rmdirSync(String(entry.absolute)));\n this[MAKEFS](er, entry);\n }\n // not a dir, and not reusable.\n // don't remove if it's the cwd, since we want that error.\n const [er] = entry.absolute === this.cwd ?\n []\n : callSync(() => unlinkFileSync(String(entry.absolute)));\n this[MAKEFS](er, entry);\n }\n [FILE](entry, done) {\n const mode = typeof entry.mode === 'number' ?\n entry.mode & 0o7777\n : this.fmode;\n const oner = (er) => {\n let closeError;\n try {\n fs.closeSync(fd);\n }\n catch (e) {\n closeError = e;\n }\n if (er || closeError) {\n this[ONERROR](er || closeError, entry);\n }\n done();\n };\n let fd;\n try {\n fd = fs.openSync(String(entry.absolute), getWriteFlag(entry.size), mode);\n /* c8 ignore start - This is only a problem if the file was successfully\n * statted, BUT failed to open. Testing this is annoying, and we\n * already have ample testint for other uses of oner() methods.\n */\n }\n catch (er) {\n return oner(er);\n }\n /* c8 ignore stop */\n const tx = this.transform ? this.transform(entry) || entry : entry;\n if (tx !== entry) {\n tx.on('error', (er) => this[ONERROR](er, entry));\n entry.pipe(tx);\n }\n tx.on('data', (chunk) => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length);\n }\n catch (er) {\n oner(er);\n }\n });\n tx.on('end', () => {\n let er = null;\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date();\n const mtime = entry.mtime;\n try {\n fs.futimesSync(fd, atime, mtime);\n }\n catch (futimeser) {\n try {\n fs.utimesSync(String(entry.absolute), atime, mtime);\n }\n catch (utimeser) {\n er = futimeser;\n }\n }\n }\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry);\n const gid = this[GID](entry);\n try {\n fs.fchownSync(fd, Number(uid), Number(gid));\n }\n catch (fchowner) {\n try {\n fs.chownSync(String(entry.absolute), Number(uid), Number(gid));\n }\n catch (chowner) {\n er = er || fchowner;\n }\n }\n }\n oner(er);\n });\n }\n [DIRECTORY](entry, done) {\n const mode = typeof entry.mode === 'number' ?\n entry.mode & 0o7777\n : this.dmode;\n const er = this[MKDIR](String(entry.absolute), mode);\n if (er) {\n this[ONERROR](er, entry);\n done();\n return;\n }\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(String(entry.absolute), entry.atime || new Date(), entry.mtime);\n /* c8 ignore next */\n }\n catch (er) { }\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)));\n }\n catch (er) { }\n }\n done();\n entry.resume();\n }\n [MKDIR](dir, mode) {\n try {\n return mkdirSync(normalizeWindowsPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cwd: this.cwd,\n mode: mode,\n });\n }\n catch (er) {\n return er;\n }\n }\n [LINK](entry, linkpath, link, done) {\n const ls = `${link}Sync`;\n try {\n fs[ls](linkpath, String(entry.absolute));\n done();\n entry.resume();\n }\n catch (er) {\n return this[ONERROR](er, entry);\n }\n }\n}\n//# sourceMappingURL=unpack.js.map",
55
+ "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\nimport fs from 'fs';\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform;\nconst isWindows = platform === 'win32';\n/* c8 ignore start */\nconst { O_CREAT, O_TRUNC, O_WRONLY } = fs.constants;\nconst UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) ||\n fs.constants.UV_FS_O_FILEMAP ||\n 0;\n/* c8 ignore stop */\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP;\nconst fMapLimit = 512 * 1024;\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY;\nexport const getWriteFlag = !fMapEnabled ?\n () => 'w'\n : (size) => (size < fMapLimit ? fMapFlag : 'w');\n//# sourceMappingURL=get-write-flag.js.map",
56
+ "import fs from 'node:fs';\nimport path from 'node:path';\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs.lchownSync(path, uid, gid);\n }\n catch (er) {\n if (er?.code !== 'ENOENT')\n throw er;\n }\n};\nconst chown = (cpath, uid, gid, cb) => {\n fs.lchown(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er?.code !== 'ENOENT' ? er : null);\n });\n};\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, (er) => {\n if (er)\n return cb(er);\n const cpath = path.resolve(p, child.name);\n chown(cpath, uid, gid, cb);\n });\n }\n else {\n const cpath = path.resolve(p, child.name);\n chown(cpath, uid, gid, cb);\n }\n};\nexport const chownr = (p, uid, gid, cb) => {\n fs.readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb();\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er);\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb);\n let len = children.length;\n let errState = null;\n const then = (er) => {\n /* c8 ignore start */\n if (errState)\n return;\n /* c8 ignore stop */\n if (er)\n return cb((errState = er));\n if (--len === 0)\n return chown(p, uid, gid, cb);\n };\n for (const child of children) {\n chownrKid(p, child, uid, gid, then);\n }\n });\n};\nconst chownrKidSync = (p, child, uid, gid) => {\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid);\n lchownSync(path.resolve(p, child.name), uid, gid);\n};\nexport const chownrSync = (p, uid, gid) => {\n let children;\n try {\n children = fs.readdirSync(p, { withFileTypes: true });\n }\n catch (er) {\n const e = er;\n if (e?.code === 'ENOENT')\n return;\n else if (e?.code === 'ENOTDIR' || e?.code === 'ENOTSUP')\n return lchownSync(p, uid, gid);\n else\n throw e;\n }\n for (const child of children) {\n chownrKidSync(p, child, uid, gid);\n }\n return lchownSync(p, uid, gid);\n};\n//# sourceMappingURL=index.js.map",
57
+ "import { chownr, chownrSync } from 'chownr';\nimport fs from 'node:fs';\nimport fsp from 'node:fs/promises';\nimport path from 'node:path';\nimport { CwdError } from './cwd-error.js';\nimport { normalizeWindowsPath } from './normalize-windows-path.js';\nimport { SymlinkError } from './symlink-error.js';\nconst checkCwd = (dir, cb) => {\n fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory()) {\n er = new CwdError(dir, er?.code || 'ENOTDIR');\n }\n cb(er);\n });\n};\n/**\n * Wrapper around fs/promises.mkdir for tar's needs.\n *\n * The main purpose is to avoid creating directories if we know that\n * they already exist (and track which ones exist for this purpose),\n * and prevent entries from being extracted into symlinked folders,\n * if `preservePaths` is not set.\n */\nexport const mkdir = (dir, opt, cb) => {\n dir = normalizeWindowsPath(dir);\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n /* c8 ignore next */\n const umask = opt.umask ?? 0o22;\n const mode = opt.mode | 0o0700;\n const needChmod = (mode & umask) !== 0;\n const uid = opt.uid;\n const gid = opt.gid;\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid);\n const preserve = opt.preserve;\n const unlink = opt.unlink;\n const cwd = normalizeWindowsPath(opt.cwd);\n const done = (er, created) => {\n if (er) {\n cb(er);\n }\n else {\n if (created && doChown) {\n chownr(created, uid, gid, er => done(er));\n }\n else if (needChmod) {\n fs.chmod(dir, mode, cb);\n }\n else {\n cb();\n }\n }\n };\n if (dir === cwd) {\n return checkCwd(dir, done);\n }\n if (preserve) {\n return fsp.mkdir(dir, { mode, recursive: true }).then(made => done(null, made ?? undefined), // oh, ts\n done);\n }\n const sub = normalizeWindowsPath(path.relative(cwd, dir));\n const parts = sub.split('/');\n mkdir_(cwd, parts, mode, unlink, cwd, undefined, done);\n};\nconst mkdir_ = (base, parts, mode, unlink, cwd, created, cb) => {\n if (!parts.length) {\n return cb(null, created);\n }\n const p = parts.shift();\n const part = normalizeWindowsPath(path.resolve(base + '/' + p));\n fs.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));\n};\nconst onmkdir = (part, parts, mode, unlink, cwd, created, cb) => (er) => {\n if (er) {\n fs.lstat(part, (statEr, st) => {\n if (statEr) {\n statEr.path =\n statEr.path && normalizeWindowsPath(statEr.path);\n cb(statEr);\n }\n else if (st.isDirectory()) {\n mkdir_(part, parts, mode, unlink, cwd, created, cb);\n }\n else if (unlink) {\n fs.unlink(part, er => {\n if (er) {\n return cb(er);\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, unlink, cwd, created, cb));\n });\n }\n else if (st.isSymbolicLink()) {\n return cb(new SymlinkError(part, part + '/' + parts.join('/')));\n }\n else {\n cb(er);\n }\n });\n }\n else {\n created = created || part;\n mkdir_(part, parts, mode, unlink, cwd, created, cb);\n }\n};\nconst checkCwdSync = (dir) => {\n let ok = false;\n let code = undefined;\n try {\n ok = fs.statSync(dir).isDirectory();\n }\n catch (er) {\n code = er?.code;\n }\n finally {\n if (!ok) {\n throw new CwdError(dir, code ?? 'ENOTDIR');\n }\n }\n};\nexport const mkdirSync = (dir, opt) => {\n dir = normalizeWindowsPath(dir);\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n /* c8 ignore next */\n const umask = opt.umask ?? 0o22;\n const mode = opt.mode | 0o700;\n const needChmod = (mode & umask) !== 0;\n const uid = opt.uid;\n const gid = opt.gid;\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid);\n const preserve = opt.preserve;\n const unlink = opt.unlink;\n const cwd = normalizeWindowsPath(opt.cwd);\n const done = (created) => {\n if (created && doChown) {\n chownrSync(created, uid, gid);\n }\n if (needChmod) {\n fs.chmodSync(dir, mode);\n }\n };\n if (dir === cwd) {\n checkCwdSync(cwd);\n return done();\n }\n if (preserve) {\n return done(fs.mkdirSync(dir, { mode, recursive: true }) ?? undefined);\n }\n const sub = normalizeWindowsPath(path.relative(cwd, dir));\n const parts = sub.split('/');\n let created = undefined;\n for (let p = parts.shift(), part = cwd; p && (part += '/' + p); p = parts.shift()) {\n part = normalizeWindowsPath(path.resolve(part));\n try {\n fs.mkdirSync(part, mode);\n created = created || part;\n }\n catch (er) {\n const st = fs.lstatSync(part);\n if (st.isDirectory()) {\n continue;\n }\n else if (unlink) {\n fs.unlinkSync(part);\n fs.mkdirSync(part, mode);\n created = created || part;\n continue;\n }\n else if (st.isSymbolicLink()) {\n return new SymlinkError(part, part + '/' + parts.join('/'));\n }\n }\n }\n return done(created);\n};\n//# sourceMappingURL=mkdir.js.map",
58
+ "export class CwdError extends Error {\n path;\n code;\n syscall = 'chdir';\n constructor(path, code) {\n super(`${code}: Cannot cd into '${path}'`);\n this.path = path;\n this.code = code;\n }\n get name() {\n return 'CwdError';\n }\n}\n//# sourceMappingURL=cwd-error.js.map",
59
+ "export class SymlinkError extends Error {\n path;\n symlink;\n syscall = 'symlink';\n code = 'TAR_SYMLINK_ERROR';\n constructor(symlink, path) {\n super('TAR_SYMLINK_ERROR: Cannot extract through symbolic link');\n this.symlink = symlink;\n this.path = path;\n }\n get name() {\n return 'SymlinkError';\n }\n}\n//# sourceMappingURL=symlink-error.js.map",
60
+ "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\nimport { join } from 'node:path';\nimport { normalizeUnicode } from './normalize-unicode.js';\nimport { stripTrailingSlashes } from './strip-trailing-slashes.js';\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;\nconst isWindows = platform === 'win32';\n// return a set of parent dirs for a given path\n// '/a/b/c/d' -> ['/', '/a', '/a/b', '/a/b/c', '/a/b/c/d']\nconst getDirs = (path) => {\n const dirs = path\n .split('/')\n .slice(0, -1)\n .reduce((set, path) => {\n const s = set[set.length - 1];\n if (s !== undefined) {\n path = join(s, path);\n }\n set.push(path || '/');\n return set;\n }, []);\n return dirs;\n};\nexport class PathReservations {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n #queues = new Map();\n // fn => {paths:[path,...], dirs:[path, ...]}\n #reservations = new Map();\n // functions currently running\n #running = new Set();\n reserve(paths, fn) {\n paths =\n isWindows ?\n ['win32 parallelization disabled']\n : paths.map(p => {\n // don't need normPath, because we skip this entirely for windows\n return stripTrailingSlashes(join(normalizeUnicode(p)));\n });\n const dirs = new Set(paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b)));\n this.#reservations.set(fn, { dirs, paths });\n for (const p of paths) {\n const q = this.#queues.get(p);\n if (!q) {\n this.#queues.set(p, [fn]);\n }\n else {\n q.push(fn);\n }\n }\n for (const dir of dirs) {\n const q = this.#queues.get(dir);\n if (!q) {\n this.#queues.set(dir, [new Set([fn])]);\n }\n else {\n const l = q[q.length - 1];\n if (l instanceof Set) {\n l.add(fn);\n }\n else {\n q.push(new Set([fn]));\n }\n }\n }\n return this.#run(fn);\n }\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n #getQueues(fn) {\n const res = this.#reservations.get(fn);\n /* c8 ignore start */\n if (!res) {\n throw new Error('function does not have any path reservations');\n }\n /* c8 ignore stop */\n return {\n paths: res.paths.map((path) => this.#queues.get(path)),\n dirs: [...res.dirs].map(path => this.#queues.get(path)),\n };\n }\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n check(fn) {\n const { paths, dirs } = this.#getQueues(fn);\n return (paths.every(q => q && q[0] === fn) &&\n dirs.every(q => q && q[0] instanceof Set && q[0].has(fn)));\n }\n // run the function if it's first in line and not already running\n #run(fn) {\n if (this.#running.has(fn) || !this.check(fn)) {\n return false;\n }\n this.#running.add(fn);\n fn(() => this.#clear(fn));\n return true;\n }\n #clear(fn) {\n if (!this.#running.has(fn)) {\n return false;\n }\n const res = this.#reservations.get(fn);\n /* c8 ignore start */\n if (!res) {\n throw new Error('invalid reservation');\n }\n /* c8 ignore stop */\n const { paths, dirs } = res;\n const next = new Set();\n for (const path of paths) {\n const q = this.#queues.get(path);\n /* c8 ignore start */\n if (!q || q?.[0] !== fn) {\n continue;\n }\n /* c8 ignore stop */\n const q0 = q[1];\n if (!q0) {\n this.#queues.delete(path);\n continue;\n }\n q.shift();\n if (typeof q0 === 'function') {\n next.add(q0);\n }\n else {\n for (const f of q0) {\n next.add(f);\n }\n }\n }\n for (const dir of dirs) {\n const q = this.#queues.get(dir);\n const q0 = q?.[0];\n /* c8 ignore next - type safety only */\n if (!q || !(q0 instanceof Set))\n continue;\n if (q0.size === 1 && q.length === 1) {\n this.#queues.delete(dir);\n continue;\n }\n else if (q0.size === 1) {\n q.shift();\n // next one must be a function,\n // or else the Set would've been reused\n const n = q[0];\n if (typeof n === 'function') {\n next.add(n);\n }\n }\n else {\n q0.delete(fn);\n }\n }\n this.#running.delete(fn);\n next.forEach(fn => this.#run(fn));\n return true;\n }\n}\n//# sourceMappingURL=path-reservations.js.map",
61
+ "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nconst normalizeCache = Object.create(null);\n// Limit the size of this. Very low-sophistication LRU cache\nconst MAX = 10000;\nconst cache = new Set();\nexport const normalizeUnicode = (s) => {\n if (!cache.has(s)) {\n // shake out identical accents and ligatures\n normalizeCache[s] = s\n .normalize('NFD')\n .toLocaleLowerCase('en')\n .toLocaleUpperCase('en');\n }\n else {\n cache.delete(s);\n }\n cache.add(s);\n const ret = normalizeCache[s];\n let i = cache.size - MAX;\n // only prune when we're 10% over the max\n if (i > MAX / 10) {\n for (const s of cache) {\n cache.delete(s);\n delete normalizeCache[s];\n if (--i <= 0)\n break;\n }\n }\n return ret;\n};\n//# sourceMappingURL=normalize-unicode.js.map",
62
+ "// tar -r\nimport { WriteStream, WriteStreamSync } from '@isaacs/fs-minipass';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { Header } from './header.js';\nimport { list } from './list.js';\nimport { makeCommand } from './make-command.js';\nimport { isFile, } from './options.js';\nimport { Pack, PackSync } from './pack.js';\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\nconst replaceSync = (opt, files) => {\n const p = new PackSync(opt);\n let threw = true;\n let fd;\n let position;\n try {\n try {\n fd = fs.openSync(opt.file, 'r+');\n }\n catch (er) {\n if (er?.code === 'ENOENT') {\n fd = fs.openSync(opt.file, 'w+');\n }\n else {\n throw er;\n }\n }\n const st = fs.fstatSync(fd);\n const headBuf = Buffer.alloc(512);\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos);\n if (position === 0 &&\n headBuf[0] === 0x1f &&\n headBuf[1] === 0x8b) {\n throw new Error('cannot append to compressed archives');\n }\n if (!bytes) {\n break POSITION;\n }\n }\n const h = new Header(headBuf);\n if (!h.cksumValid) {\n break;\n }\n const entryBlockSize = 512 * Math.ceil((h.size || 0) / 512);\n if (position + entryBlockSize + 512 > st.size) {\n break;\n }\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize;\n if (opt.mtimeCache && h.mtime) {\n opt.mtimeCache.set(String(h.path), h.mtime);\n }\n }\n threw = false;\n streamSync(opt, p, position, fd, files);\n }\n finally {\n if (threw) {\n try {\n fs.closeSync(fd);\n }\n catch (er) { }\n }\n }\n};\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n });\n p.pipe(stream);\n addFilesSync(p, files);\n};\nconst replaceAsync = (opt, files) => {\n files = Array.from(files);\n const p = new Pack(opt);\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er) {\n fs.close(fd, _ => cb_(er));\n }\n else {\n cb_(null, pos);\n }\n };\n let position = 0;\n if (size === 0) {\n return cb(null, 0);\n }\n let bufPos = 0;\n const headBuf = Buffer.alloc(512);\n const onread = (er, bytes) => {\n if (er || typeof bytes === 'undefined') {\n return cb(er);\n }\n bufPos += bytes;\n if (bufPos < 512 && bytes) {\n return fs.read(fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos, onread);\n }\n if (position === 0 &&\n headBuf[0] === 0x1f &&\n headBuf[1] === 0x8b) {\n return cb(new Error('cannot append to compressed archives'));\n }\n // truncated header\n if (bufPos < 512) {\n return cb(null, position);\n }\n const h = new Header(headBuf);\n if (!h.cksumValid) {\n return cb(null, position);\n }\n /* c8 ignore next */\n const entryBlockSize = 512 * Math.ceil((h.size ?? 0) / 512);\n if (position + entryBlockSize + 512 > size) {\n return cb(null, position);\n }\n position += entryBlockSize + 512;\n if (position >= size) {\n return cb(null, position);\n }\n if (opt.mtimeCache && h.mtime) {\n opt.mtimeCache.set(String(h.path), h.mtime);\n }\n bufPos = 0;\n fs.read(fd, headBuf, 0, 512, position, onread);\n };\n fs.read(fd, headBuf, 0, 512, position, onread);\n };\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject);\n let flag = 'r+';\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+';\n return fs.open(opt.file, flag, onopen);\n }\n if (er || !fd) {\n return reject(er);\n }\n fs.fstat(fd, (er, st) => {\n if (er) {\n return fs.close(fd, () => reject(er));\n }\n getPos(fd, st.size, (er, position) => {\n if (er) {\n return reject(er);\n }\n const stream = new WriteStream(opt.file, {\n fd: fd,\n start: position,\n });\n p.pipe(stream);\n stream.on('error', reject);\n stream.on('close', resolve);\n addFilesAsync(p, files);\n });\n });\n };\n fs.open(opt.file, flag, onopen);\n });\n return promise;\n};\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n list({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onReadEntry: entry => p.add(entry),\n });\n }\n else {\n p.add(file);\n }\n });\n p.end();\n};\nconst addFilesAsync = async (p, files) => {\n for (let i = 0; i < files.length; i++) {\n const file = String(files[i]);\n if (file.charAt(0) === '@') {\n await list({\n file: path.resolve(String(p.cwd), file.slice(1)),\n noResume: true,\n onReadEntry: entry => p.add(entry),\n });\n }\n else {\n p.add(file);\n }\n }\n p.end();\n};\nexport const replace = makeCommand(replaceSync, replaceAsync, \n/* c8 ignore start */\n() => {\n throw new TypeError('file is required');\n}, () => {\n throw new TypeError('file is required');\n}, \n/* c8 ignore stop */\n(opt, entries) => {\n if (!isFile(opt)) {\n throw new TypeError('file is required');\n }\n if (opt.gzip ||\n opt.brotli ||\n opt.zstd ||\n opt.file.endsWith('.br') ||\n opt.file.endsWith('.tbr')) {\n throw new TypeError('cannot append to compressed archives');\n }\n if (!entries?.length) {\n throw new TypeError('no paths specified to add/replace');\n }\n});\n//# sourceMappingURL=replace.js.map",
63
+ "// tar -u\nimport { makeCommand } from './make-command.js';\nimport { replace as r } from './replace.js';\n// just call tar.r with the filter and mtimeCache\nexport const update = makeCommand(r.syncFile, r.asyncFile, r.syncNoFile, r.asyncNoFile, (opt, entries = []) => {\n r.validate?.(opt, entries);\n mtimeFilter(opt);\n});\nconst mtimeFilter = (opt) => {\n const filter = opt.filter;\n if (!opt.mtimeCache) {\n opt.mtimeCache = new Map();\n }\n opt.filter =\n filter ?\n (path, stat) => filter(path, stat) &&\n !(\n /* c8 ignore start */\n ((opt.mtimeCache?.get(path) ?? stat.mtime ?? 0) >\n (stat.mtime ?? 0))\n /* c8 ignore stop */\n )\n : (path, stat) => !(\n /* c8 ignore start */\n ((opt.mtimeCache?.get(path) ?? stat.mtime ?? 0) >\n (stat.mtime ?? 0))\n /* c8 ignore stop */\n );\n};\n//# sourceMappingURL=update.js.map",
64
+ "import { access } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport type { BinariesConfig, BinaryPlatform, PlatformMapping } from \"../types\";\n\n/**\n * Маппинг платформ на os/cpu значения для package.json\n */\nexport const PLATFORM_MAPPINGS: Record<BinaryPlatform, PlatformMapping> = {\n \"darwin-arm64\": { cpu: \"arm64\", extension: \"\", os: \"darwin\" },\n \"darwin-x64\": { cpu: \"x64\", extension: \"\", os: \"darwin\" },\n \"linux-arm64\": { cpu: \"arm64\", extension: \"\", os: \"linux\" },\n \"linux-x64\": { cpu: \"x64\", extension: \"\", os: \"linux\" },\n \"win32-arm64\": { cpu: \"arm64\", extension: \".exe\", os: \"win32\" },\n \"win32-x64\": { cpu: \"x64\", extension: \".exe\", os: \"win32\" },\n};\n\n/**\n * Все поддерживаемые платформы\n */\nexport const ALL_PLATFORMS: BinaryPlatform[] = Object.keys(PLATFORM_MAPPINGS) as BinaryPlatform[];\n\n/**\n * Проверяет, что строка является валидной платформой\n */\nexport function isValidPlatform(value: string): value is BinaryPlatform {\n return value in PLATFORM_MAPPINGS;\n}\n\n/**\n * Парсит список платформ из строки (comma-separated)\n */\nexport function parsePlatforms(value: string): BinaryPlatform[] {\n const platforms = value.split(\",\").map((p) => p.trim());\n const result: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n if (!isValidPlatform(platform)) {\n throw new Error(`Invalid platform: ${platform}. Valid platforms: ${ALL_PLATFORMS.join(\", \")}`);\n }\n result.push(platform);\n }\n\n return result;\n}\n\n/**\n * Возвращает путь к бинарнику для указанной платформы\n */\nexport function getBinaryPath(distDir: string, name: string, platform: BinaryPlatform): string {\n const mapping = PLATFORM_MAPPINGS[platform];\n const binaryName = `${name}${mapping.extension}`;\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir, binaryName);\n}\n\n/**\n * Возвращает путь к директории платформы\n */\nexport function getPlatformDir(distDir: string, name: string, platform: BinaryPlatform): string {\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir);\n}\n\n/**\n * Проверяет существование бинарника для платформы.\n *\n * @returns true если файл существует, false если файл не найден (ENOENT)\n * @throws Error при других ошибках доступа (EACCES, ELOOP, EIO и т.д.)\n */\nexport async function validateBinaryExists(distDir: string, name: string, platform: BinaryPlatform): Promise<boolean> {\n const binaryPath = getBinaryPath(distDir, name, platform);\n try {\n await access(binaryPath);\n return true;\n } catch (error) {\n // ENOENT означает, что файл не существует - это ожидаемое поведение\n if (error instanceof Error && \"code\" in error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n // Все остальные ошибки (EACCES, ELOOP, EIO и т.д.) должны быть проброшены\n throw new Error(\n `Failed to check binary at ${binaryPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Валидирует наличие бинарников для всех указанных платформ\n * @returns Массив отсутствующих платформ\n */\nexport async function validateAllBinaries(\n distDir: string,\n name: string,\n platforms: BinaryPlatform[],\n): Promise<BinaryPlatform[]> {\n const missing: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n const exists = await validateBinaryExists(distDir, name, platform);\n if (!exists) {\n missing.push(platform);\n }\n }\n\n return missing;\n}\n\n/**\n * Возвращает дефолтный шаблон имени пакета\n */\nexport function getDefaultPackageNameTemplate(scope?: string): string {\n if (scope) {\n return \"@{{scope}}/{{name}}-{{platform}}\";\n }\n return \"{{name}}-{{platform}}\";\n}\n\n/**\n * Генерирует полное имя пакета для платформы.\n * Поддерживает кастомный шаблон через packageNameTemplate.\n */\nexport function getPackageName(config: BinariesConfig, platform: BinaryPlatform): string {\n const template = config.packageNameTemplate ?? getDefaultPackageNameTemplate(config.scope);\n const cleanScope = config.scope?.startsWith(\"@\") ? config.scope.slice(1) : config.scope;\n\n return template\n .replace(/\\{\\{scope\\}\\}/g, cleanScope ?? \"\")\n .replace(/\\{\\{name\\}\\}/g, config.name)\n .replace(/\\{\\{platform\\}\\}/g, platform);\n}\n\n/**\n * Генерирует путь к пакету в output директории.\n * Создаёт структуру директорий на основе имени пакета.\n */\nexport function getPackageOutputPath(config: BinariesConfig, platform: BinaryPlatform): string {\n const packageName = getPackageName(config, platform);\n\n // Если имя содержит scope (@org/name), создаём вложенную структуру\n if (packageName.startsWith(\"@\") && packageName.includes(\"/\")) {\n const slashIndex = packageName.indexOf(\"/\");\n const scopePart = packageName.slice(0, slashIndex);\n const namePart = packageName.slice(slashIndex + 1);\n return join(config.outDir, scopePart, namePart);\n }\n\n // Без scope — просто имя пакета\n return join(config.outDir, packageName);\n}\n\n/**\n * Раскрывает плейсхолдеры в строке\n */\nexport function expandPlaceholders(\n template: string,\n values: {\n packageDir?: string;\n version?: string;\n platform?: string;\n scope?: string;\n name?: string;\n },\n): string {\n let result = template;\n\n if (values.packageDir !== undefined) {\n result = result.replace(/\\{\\{packageDir\\}\\}/g, values.packageDir);\n }\n if (values.version !== undefined) {\n result = result.replace(/\\{\\{version\\}\\}/g, values.version);\n }\n if (values.platform !== undefined) {\n result = result.replace(/\\{\\{platform\\}\\}/g, values.platform);\n }\n if (values.scope !== undefined) {\n result = result.replace(/\\{\\{scope\\}\\}/g, values.scope);\n }\n if (values.name !== undefined) {\n result = result.replace(/\\{\\{name\\}\\}/g, values.name);\n }\n\n return result;\n}\n\n/**\n * Конвертирует платформу в Node.js process.platform и process.arch\n */\nexport function platformToNodeValues(platform: BinaryPlatform): { platform: string; arch: string } {\n const parts = platform.split(\"-\");\n return { arch: parts[1] ?? \"\", platform: parts[0] ?? \"\" };\n}\n\n/**\n * Возвращает ключ источника для платформы с учётом platformMap.\n * Если platformMap не задан или платформа не найдена, возвращает платформу как есть.\n */\nexport function getSourceKey(config: BinariesConfig, platform: BinaryPlatform): string {\n if (!config.platformMap) {\n return platform;\n }\n\n for (const [sourceKey, targetPlatform] of Object.entries(config.platformMap)) {\n if (targetPlatform === platform) {\n return sourceKey;\n }\n }\n\n return platform;\n}\n\n/**\n * Возвращает путь к tar.gz архиву для указанной платформы.\n */\nexport function getArchivePath(config: BinariesConfig, platform: BinaryPlatform): string {\n const sourceKey = getSourceKey(config, platform);\n const archiveName = `${config.name}-${sourceKey}.tar.gz`;\n return resolve(config.distDir, archiveName);\n}\n\n/**\n * Проверяет существование tar.gz архива для платформы.\n *\n * @returns true если архив существует, false если не найден (ENOENT)\n * @throws Error при других ошибках доступа\n */\nexport async function validateArchiveExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean> {\n const archivePath = getArchivePath(config, platform);\n try {\n await access(archivePath);\n return true;\n } catch (error) {\n if (error instanceof Error && \"code\" in error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n throw new Error(\n `Failed to check archive at ${archivePath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Универсальная проверка существования источника бинарника.\n * Поддерживает как директории, так и tar.gz архивы.\n *\n * @returns true если источник существует, false если не найден\n * @throws Error при других ошибках доступа\n */\nexport async function validateBinarySourceExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean> {\n const inputFormat = config.inputFormat ?? \"directory\";\n\n if (inputFormat === \"tar.gz\") {\n return await validateArchiveExists(config, platform);\n }\n\n return await validateBinaryExists(config.distDir, config.name, platform);\n}\n\n/**\n * Универсальная валидация наличия источников бинарников для всех платформ.\n * Поддерживает как директории, так и tar.gz архивы.\n *\n * @returns Массив отсутствующих платформ\n */\nexport async function validateAllBinarySources(config: BinariesConfig): Promise<BinaryPlatform[]> {\n const platforms = config.platforms;\n const missing: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n const exists = await validateBinarySourceExists(config, platform);\n if (!exists) {\n missing.push(platform);\n }\n }\n\n return missing;\n}\n\n/**\n * Возвращает путь к источнику бинарника с учётом формата входных данных.\n * Для directory возвращает путь к директории платформы.\n * Для tar.gz возвращает путь к архиву.\n */\nexport function getBinarySourcePath(config: BinariesConfig, platform: BinaryPlatform): string {\n const inputFormat = config.inputFormat ?? \"directory\";\n\n if (inputFormat === \"tar.gz\") {\n return getArchivePath(config, platform);\n }\n\n return getPlatformDir(config.distDir, config.name, platform);\n}\n",
65
+ "import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport type { BinariesConfig, BinaryPackageResult, BinaryPlatform, BinaryPublishResult } from \"../types\";\nimport { expandPlaceholders, getPackageName, getPackageOutputPath } from \"./binary-platforms\";\n\nconst execAsync = promisify(exec);\n\n/**\n * Задержка между попытками\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Вычисляет задержку с экспоненциальным backoff.\n *\n * Формула: delay = initialDelay * 2^attempt, ограничено maxDelay.\n *\n * Примеры (с дефолтными параметрами):\n * - attempt 0: 2000ms\n * - attempt 1: 4000ms\n * - attempt 2: 8000ms\n * - attempt 3: 16000ms\n * - attempt 4+: 30000ms (max)\n *\n * @param attempt - Номер попытки (начиная с 0)\n * @param initialDelay - Начальная задержка в мс (default: 2000)\n * @param maxDelay - Максимальная задержка в мс (default: 30000)\n * @returns Задержка в миллисекундах\n */\nexport function calculateDelay(attempt: number, initialDelay = 2000, maxDelay = 30000): number {\n const delay = initialDelay * 2 ** attempt;\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Проверяет, можно ли повторить операцию после ошибки.\n *\n * Retriable ошибки (временные, имеет смысл повторить):\n * - Сетевые ошибки: network timeout, ECONNRESET, ETIMEDOUT\n * - Ограничения rate limit: HTTP 429, HTTP 503\n * - Временные ошибки npm registry: registry unavailable, ETARGET\n *\n * Не-retriable ошибки (постоянные, повторять бессмысленно):\n * - Ошибки авторизации (401, 403)\n * - Невалидные данные (400)\n * - Пакет уже существует (409)\n * - Ошибки файловой системы\n *\n * @param error - Любое значение ошибки\n * @returns true если ошибка носит временный характер и retry может помочь\n */\nexport function isRetriableError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n\n const message = error.message.toLowerCase();\n\n // Network errors\n if (message.includes(\"network\") || message.includes(\"timeout\") || message.includes(\"econnreset\")) {\n return true;\n }\n\n // Rate limit / server errors\n if (message.includes(\"503\") || message.includes(\"429\") || message.includes(\"rate\")) {\n return true;\n }\n\n // npm registry errors\n if (message.includes(\"registry\") || message.includes(\"etarget\")) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Публикует один платформенный пакет\n */\nexport async function publishPlatformPackage(\n config: BinariesConfig,\n platform: BinaryPlatform,\n version: string,\n dryRun = false,\n): Promise<BinaryPublishResult> {\n const packageName = getPackageName(config, platform);\n const packageDir = getPackageOutputPath(config, platform);\n\n const baseResult = {\n packageName,\n platform,\n };\n\n // Подготавливаем команду публикации\n const publishCommand = expandPlaceholders(config.publishCommand, {\n name: config.name,\n packageDir,\n platform,\n scope: config.scope ?? \"\",\n version,\n });\n\n if (dryRun) {\n return { ...baseResult, attempts: 1, success: true as const };\n }\n\n let lastError: Error | undefined;\n let attempts = 0;\n\n for (let attempt = 0; attempt < config.retryAttempts; attempt++) {\n attempts = attempt + 1;\n\n try {\n await execAsync(publishCommand, {\n cwd: packageDir,\n env: process.env,\n });\n\n return { ...baseResult, attempts, success: true as const };\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n const canRetry = isRetriableError(error);\n\n // Последняя попытка или ошибка не retriable\n if (attempt === config.retryAttempts - 1 || !canRetry) {\n break;\n }\n\n // Вычисляем задержку\n const delay = calculateDelay(attempt);\n console.warn(`⚠️ Publish failed for ${packageName} (attempt ${attempt + 1}/${config.retryAttempts})`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n\n await sleep(delay);\n }\n }\n\n return {\n ...baseResult,\n attempts,\n error: lastError?.message ?? \"Unknown error\",\n success: false as const,\n };\n}\n\n/**\n * Публикует все платформенные пакеты\n */\nexport async function publishAllPlatformPackages(\n config: BinariesConfig,\n version: string,\n generatedPackages: BinaryPackageResult[],\n dryRun = false,\n verbose = false,\n): Promise<BinaryPublishResult[]> {\n const results: BinaryPublishResult[] = [];\n\n // Фильтруем только успешно сгенерированные пакеты\n const successfulPackages = generatedPackages.filter((p) => p.success);\n\n if (successfulPackages.length === 0) {\n return results;\n }\n\n // Публикуем параллельно (группами для избежания rate limit)\n const batchSize = 3; // Публикуем по 3 пакета параллельно\n\n for (let i = 0; i < successfulPackages.length; i += batchSize) {\n const batch = successfulPackages.slice(i, i + batchSize);\n\n const batchPromises = batch.map(async (pkg) => {\n if (verbose) {\n console.log(`📤 Publishing ${pkg.packageName}...`);\n }\n\n const result = await publishPlatformPackage(config, pkg.platform, version, dryRun);\n\n if (result.success) {\n if (verbose) {\n console.log(`✅ Published ${pkg.packageName}`);\n }\n } else {\n console.error(`❌ Failed to publish ${pkg.packageName}: ${result.error}`);\n }\n\n return result;\n });\n\n const batchResults = await Promise.all(batchPromises);\n results.push(...batchResults);\n\n // Небольшая задержка между батчами для избежания rate limit\n if (i + batchSize < successfulPackages.length) {\n await sleep(500);\n }\n }\n\n return results;\n}\n\n/**\n * Печатает информацию о публикации в dry-run режиме\n */\nexport function printPublishDryRun(config: BinariesConfig, generatedPackages: BinaryPackageResult[]): void {\n const successfulPackages = generatedPackages.filter((p) => p.success);\n\n console.log(\"\\n🚀 Packages to publish:\");\n for (const pkg of successfulPackages) {\n console.log(` ${pkg.packageName} (${pkg.packageDir})`);\n }\n\n console.log(`\\n📤 Publish command: ${config.publishCommand}`);\n}\n\n/**\n * Печатает итоговую статистику публикации\n */\nexport function printPublishSummary(results: BinaryPublishResult[], _config: BinariesConfig): void {\n const successful = results.filter((r) => r.success);\n const failed = results.filter((r) => !r.success);\n\n console.log(\"\\n📊 Publish Summary:\");\n console.log(` Total: ${results.length}`);\n console.log(` Successful: ${successful.length}`);\n console.log(` Failed: ${failed.length}`);\n\n if (failed.length > 0) {\n console.log(\"\\n❌ Failed packages:\");\n for (const result of failed) {\n console.log(` ${result.packageName}: ${result.error}`);\n }\n }\n}\n",
66
+ "import { readFile, writeFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { BinariesConfig, BinaryPlatform } from \"../types\";\nimport { getPackageName } from \"./binary-platforms\";\n\n/**\n * Возвращает имя основного пакета для сообщений об ошибке\n */\nfunction getMainPackageNameForWrapper(config: BinariesConfig): string {\n if (config.scope) {\n const cleanScope = config.scope.startsWith(\"@\") ? config.scope : `@${config.scope}`;\n return `${cleanScope}/${config.name}`;\n }\n return config.name;\n}\n\n/**\n * Генерирует JS wrapper скрипт для bin/\n */\nexport function generateBinaryWrapper(config: BinariesConfig): string {\n const binName = config.binName ?? config.name;\n const mainPackageName = getMainPackageNameForWrapper(config);\n\n // Создаём маппинг платформ\n const platformEntries = config.platforms.map((platform) => {\n const packageName = getPackageName(config, platform);\n const parts = platform.split(\"-\");\n return ` \"${parts[0]}-${parts[1]}\": \"${packageName}\"`;\n });\n\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { platform, arch } = process;\nconst { execFileSync } = require(\"child_process\");\nconst { join } = require(\"path\");\n\nconst PLATFORMS = {\n${platformEntries.join(\",\\n\")}\n};\n\nconst platformKey = \\`\\${platform}-\\${arch}\\`;\nconst pkg = PLATFORMS[platformKey];\n\nif (!pkg) {\n console.error(\\`Unsupported platform: \\${platformKey}\\`);\n console.error(\\`Supported platforms: \\${Object.keys(PLATFORMS).join(\", \")}\\`);\n process.exit(1);\n}\n\nlet binPath;\ntry {\n // Try to resolve the platform-specific package\n const pkgPath = require.resolve(\\`\\${pkg}/package.json\\`);\n const pkgDir = join(pkgPath, \"..\");\n const pkgJson = require(pkgPath);\n const binEntry = pkgJson.bin && pkgJson.bin[\"${binName}\"];\n\n if (!binEntry) {\n throw new Error(\\`Binary entry not found in \\${pkg}\\`);\n }\n\n binPath = join(pkgDir, binEntry);\n} catch (resolveError) {\n console.error(\\`Failed to find binary package: \\${pkg}\\`);\n console.error(\\`Please install it: npm install \\${pkg}\\`);\n console.error(\\`Or reinstall the main package: npm install ${mainPackageName}\\`);\n process.exit(1);\n}\n\ntry {\n const result = execFileSync(binPath, process.argv.slice(2), {\n stdio: \"inherit\",\n env: process.env\n });\n} catch (error) {\n // execFileSync throws on non-zero exit codes, pass through the exit code\n if (error.status !== undefined) {\n process.exit(error.status);\n }\n throw error;\n}\n`;\n}\n\n/**\n * Интерфейс для optionalDependencies\n */\nexport interface OptionalDependencies {\n [key: string]: string;\n}\n\n/**\n * Генерирует объект optionalDependencies для основного package.json\n */\nexport function generateOptionalDependencies(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n): OptionalDependencies {\n const targetPlatforms = platforms ?? config.platforms;\n const deps: OptionalDependencies = {};\n\n for (const platform of targetPlatforms) {\n const packageName = getPackageName(config, platform);\n deps[packageName] = version;\n }\n\n return deps;\n}\n\n/**\n * Обновления для основного package.json\n */\nexport interface MainPackageUpdates {\n optionalDependencies: OptionalDependencies;\n bin?: Record<string, string>;\n}\n\n/**\n * Генерирует обновления для основного package.json\n */\nexport function generateMainPackageUpdates(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n): MainPackageUpdates {\n const binName = config.binName ?? config.name;\n\n return {\n bin: {\n [binName]: `bin/${binName}.js`,\n },\n optionalDependencies: generateOptionalDependencies(config, version, platforms),\n };\n}\n\n/**\n * Обновляет основной package.json с optionalDependencies\n */\nexport async function updateMainPackageJson(\n packagePath: string,\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n dryRun = false,\n): Promise<void> {\n const fullPath = resolve(packagePath);\n const content = await readFile(fullPath, \"utf-8\");\n\n let pkg: Record<string, unknown>;\n try {\n pkg = JSON.parse(content);\n } catch (parseError) {\n throw new Error(\n `Failed to parse ${fullPath}: ${parseError instanceof Error ? parseError.message : \"Invalid JSON\"}`,\n );\n }\n\n const updates = generateMainPackageUpdates(config, version, platforms);\n\n // Мержим optionalDependencies\n pkg.optionalDependencies = {\n ...(pkg.optionalDependencies || {}),\n ...updates.optionalDependencies,\n };\n\n // Обновляем bin если нужно\n if (updates.bin) {\n pkg.bin = {\n ...(pkg.bin || {}),\n ...updates.bin,\n };\n }\n\n if (dryRun) {\n return;\n }\n\n // Записываем обратно с сохранением форматирования\n await writeFile(fullPath, `${JSON.stringify(pkg, null, 2)}\\n`);\n}\n\n/**\n * Печатает информацию об обновлениях main package в dry-run режиме\n */\nexport function printMainPackageUpdatesDryRun(\n config: BinariesConfig,\n version: string,\n platforms?: BinaryPlatform[],\n): void {\n const updates = generateMainPackageUpdates(config, version, platforms);\n\n console.log(\"\\n📝 Main package updates:\");\n console.log(\" optionalDependencies:\");\n for (const [name, ver] of Object.entries(updates.optionalDependencies)) {\n console.log(` \"${name}\": \"${ver}\"`);\n }\n\n if (updates.bin) {\n console.log(\" bin:\");\n for (const [name, path] of Object.entries(updates.bin)) {\n console.log(` \"${name}\": \"${path}\"`);\n }\n }\n}\n"
32
67
  ],
33
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA,oBAAS;;;ACAT;AACA;AACA,kBAAS;AAMF,IAAM,2BAA2B;AAKxC,IAAM,oBAAoB,CAAC,4BAA4B,yBAAyB;AAKhF,eAAe,UAAU,CAAC,MAAgC;AAAA,EACxD,IAAI;AAAA,IACF,MAAM,OAAO,IAAI;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAQX,eAAe,cAAc,CAAC,WAA2C;AAAA,EACvE,WAAW,YAAY,mBAAmB;AAAA,IACxC,MAAM,WAAW,QAAQ,WAAW,QAAQ;AAAA,IAC5C,IAAI,MAAM,WAAW,QAAQ,GAAG;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAMF,IAAM,2BAA6C;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,0BAA0C;AAAA,EACrD,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,OAAO;AACT;AAKO,IAAM,iBAA0C;AAAA,EACrD,UAAU;AAAA,EACV,WAAW;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,mBAAmB;AAAA,IACnB,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,QAAQ,CAAC,QAAQ,MAAM,MAAM;AAAA,IAC7B,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,cAAc,CAAC,mBAAmB;AAAA,EACpC;AAAA,EACA,KAAK;AAAA,IACH,cAAc;AAAA,IACd,eAAe;AAAA,IACf,eAAe;AAAA,IACf,MAAM;AAAA,IACN,YAAY;AAAA,EACd;AAAA,EACA,UAAU;AAAA,IACR,eAAe;AAAA,IACf,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,UAAU;AAAA,IACR,SAAS;AAAA,IACT,UAAU,CAAC;AAAA,EACb;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,eAAe;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,IACV,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,WAAW;AAAA,EACb;AACF;AAWA,eAAsB,UAAU,CAAC,YAAuD;AAAA,EACtF,IAAI;AAAA,EAEJ,IAAI,YAAY;AAAA,IAEd,WAAW,QAAQ,QAAQ,IAAI,GAAG,UAAU;AAAA,EAC9C,EAAO;AAAA,IAEL,WAAW,MAAM,eAAe,QAAQ,IAAI,CAAC;AAAA;AAAA,EAI/C,IAAI,CAAC,UAAU;AAAA,IACb,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,IACF,MAAM,UAAU,MAAM,SAAS,UAAU,OAAO;AAAA,IAGhD,MAAM,aAAa,WAAW,OAAO;AAAA,IAGrC,OAAO,YAAY,gBAAgB,UAAU;AAAA,IAC7C,OAAO,OAAO;AAAA,IAEd,IAAI,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS,UAAU;AAAA,MACxE,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,IAAI,MACR,8BAA8B,aAAa,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAClG;AAAA;AAAA;AAOJ,SAAS,WAAW,CAAC,UAAmC,MAAuD;AAAA,EAC7G,OAAO;AAAA,IACL,UAAU;AAAA,SACL,SAAS;AAAA,SACT,KAAK;AAAA,IACV;AAAA,IACA,WAAW;AAAA,SACN,SAAS;AAAA,SACT,KAAK;AAAA,MACR,OAAO;AAAA,WACF,SAAS,UAAU;AAAA,WACnB,KAAK,WAAW;AAAA,MACrB;AAAA,IACF;AAAA,IACA,YAAY;AAAA,SACP,SAAS;AAAA,SACT,KAAK;AAAA,IACV;AAAA,IACA,KAAK;AAAA,SACA,SAAS;AAAA,SACT,KAAK;AAAA,IACV;AAAA,IACA,UAAU;AAAA,SACL,SAAS;AAAA,SACT,KAAK;AAAA,IACV;AAAA,IACA,UAAU;AAAA,SACL,SAAS;AAAA,SACT,KAAK;AAAA,IACV;AAAA,IACA,OAAO;AAAA,SACF,SAAS;AAAA,SACT,KAAK;AAAA,IACV;AAAA,IACA,YAAY;AAAA,SACP,SAAS;AAAA,SACT,KAAK;AAAA,IACV;AAAA,EACF;AAAA;AAMK,SAAS,cAAc,CAAC,QAAuC;AAAA,EACpE,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,SAAS,WAAW,GAAG;AAAA,IACpE,MAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAAA,EAEA,WAAW,OAAO,OAAO,SAAS,UAAU;AAAA,IAC1C,IAAI,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,eAAe,IAAI,YAAY;AAAA,MAC/D,MAAM,IAAI,MAAM,qCAAqC,IAAI,QAAQ,WAAW;AAAA,IAC9E;AAAA,EACF;AAAA;AAQF,IAAM,kBAAkB;AAMxB,IAAM,mBAAmB;AAKlB,SAAS,sBAAsB,CAAC,QAA8B;AAAA,EACnE,IAAI,CAAC,OAAO,SAAS;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,OAAO,OAAO;AAAA,IACjB,MAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAAA,EAGA,IAAI,CAAC,iBAAiB,KAAK,OAAO,KAAK,GAAG;AAAA,IACxC,MAAM,IAAI,MACR,2BAA2B,OAAO,yCAChC,wDACJ;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,OAAO,MAAM;AAAA,IAChB,MAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAAA,EAGA,IAAI,CAAC,gBAAgB,KAAK,OAAO,IAAI,GAAG;AAAA,IACtC,MAAM,IAAI,MACR,0BAA0B,OAAO,wCAC/B,6DACJ;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,OAAO,aAAa,OAAO,UAAU,WAAW,GAAG;AAAA,IACtD,MAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AAAA,EAEA,MAAM,iBAAmC;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,YAAY,OAAO,WAAW;AAAA,IACvC,IAAI,CAAC,eAAe,SAAS,QAAQ,GAAG;AAAA,MACtC,MAAM,IAAI,MAAM,sCAAsC,qBAAqB,eAAe,KAAK,IAAI,GAAG;AAAA,IACxG;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,gBAAgB,KAAK,OAAO,gBAAgB,IAAI;AAAA,IACzD,MAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAAA;AAMK,SAAS,YAAY,GAA2B;AAAA,EACrD,OAAO,eAAe,QAAQ,IAAI,CAAC;AAAA;AAkB9B,SAAS,qBAAqB,CAAC,UAA6B,CAAC,GAAW;AAAA,EAC7E,MAAM,QAAkB,CAAC;AAAA,EAEzB,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,uDAAsD;AAAA,EACjE,MAAM,KAAK,2DAA2D;AAAA,EACtE,MAAM,KAAK,EAAE;AAAA,EAGb,MAAM,KAAK,oCAAmC;AAAA,EAC9C,MAAM,KAAK,kBAAkB;AAAA,EAC7B,MAAM,KAAK,yBAAyB;AAAA,EACpC,MAAM,KAAK,uBAAuB;AAAA,EAClC,MAAM,KAAK,gBAAgB;AAAA,EAC3B,MAAM,KAAK,6BAA4B;AAAA,EACvC,MAAM,KAAK,wCAA6B;AAAA,EACxC,MAAM,KAAK,6CAAkC;AAAA,EAC7C,MAAM,KAAK,uCAA4B;AAAA,EACvC,MAAM,KAAK,qCAAoC;AAAA,EAC/C,MAAM,KAAK,gCAA+B;AAAA,EAC1C,MAAM,KAAK,0BAAyB;AAAA,EACpC,MAAM,KAAK,8CAAmC;AAAA,EAC9C,MAAM,KAAK,mCAAwB;AAAA,EACnC,MAAM,KAAK,uCAA4B;AAAA,EACvC,MAAM,KAAK,6BAA4B;AAAA,EACvC,MAAM,KAAK,OAAO;AAAA,EAClB,MAAM,KAAK,MAAM;AAAA,EACjB,MAAM,KAAK,EAAE;AAAA,EAGb,MAAM,SAAS,QAAQ,UAAU,CAAC,QAAQ,MAAM,MAAM;AAAA,EACtD,MAAM,KAAK,6CAA4C;AAAA,EACvD,MAAM,KAAK,mBAAmB;AAAA,EAC9B,MAAM,KAAK,iBAAiB,KAAK,UAAU,MAAM,IAAI;AAAA,EACrD,MAAM,KAAK,6BAA6B;AAAA,EACxC,MAAM,KAAK,4BAA4B;AAAA,EACvC,MAAM,KAAK,MAAM;AAAA,EACjB,MAAM,KAAK,EAAE;AAAA,EAGb,MAAM,KAAK,6BAA4B;AAAA,EACvC,MAAM,KAAK,YAAY;AAAA,EACvB,MAAM,KAAK,4BAA4B;AAAA,EACvC,MAAM,KAAK,gEAAgE;AAAA,EAC3E,MAAM,KAAK,mBAAmB;AAAA,EAC9B,MAAM,KAAK,kCAAkC;AAAA,EAC7C,MAAM,KAAK,6FAA4F;AAAA,EACvG,MAAM,KAAK,MAAM;AAAA,EACjB,MAAM,KAAK,EAAE;AAAA,EAGb,MAAM,KAAK,qCAAoC;AAAA,EAC/C,MAAM,KAAK,kDAAiD;AAAA,EAC5D,MAAM,KAAK,iBAAiB;AAAA,EAC5B,MAAM,KAAK,sBAAsB;AAAA,EACjC,MAAM,KAAK,4BAA4B;AAAA,EACvC,MAAM,KAAK,yBAAyB;AAAA,EACpC,MAAM,KAAK,MAAM;AAAA,EACjB,MAAM,KAAK,EAAE;AAAA,EAGb,MAAM,KAAK,yBAAwB;AAAA,EACnC,MAAM,KAAK,iBAAiB;AAAA,EAC5B,MAAM,KAAK,kBAAkB,QAAQ,YAAY,OAAO;AAAA,EACxD,IAAI,QAAQ,UAAU;AAAA,IACpB,MAAM,IAAI;AAAA,IACV,MAAM,KAAK,sBAAsB;AAAA,IACjC,MAAM,KAAK,mBAAmB;AAAA,IAC9B,MAAM,KAAK,sCAAqC;AAAA,IAChD,MAAM,KAAK,YAAY;AAAA,IACvB,MAAM,KAAK,2BAA2B;AAAA,IACtC,MAAM,KAAK,oCAAoC;AAAA,IAC/C,MAAM,KAAK,qCAAqC;AAAA,IAChD,MAAM,KAAK,6BAA6B;AAAA,IACxC,MAAM,KAAK,YAAY;AAAA,IACvB,MAAM,KAAK,OAAO;AAAA,EACpB;AAAA,EACA,MAAM,KAAK,MAAM;AAAA,EACjB,MAAM,KAAK,EAAE;AAAA,EAGb,MAAM,KAAK,gCAA+B;AAAA,EAC1C,MAAM,KAAK,mBAAmB;AAAA,EAC9B,MAAM,KAAK,uBAAuB;AAAA,EAClC,MAAM,KAAK,gCAAgC;AAAA,EAC3C,MAAM,KAAK,KAAK;AAAA,EAEhB,MAAM,KAAK,GAAG;AAAA,EAEd,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAMxB,eAAsB,UAAU,CAAC,UAA6B,CAAC,GAAoB;AAAA,EACjF,MAAM,iBAAiB,MAAM,aAAa;AAAA,EAE1C,IAAI,gBAAgB;AAAA,IAClB,MAAM,IAAI,MAAM,+BAA+B,gBAAgB;AAAA,EACjE;AAAA,EAEA,MAAM,UAAU,sBAAsB,OAAO;AAAA,EAC7C,MAAM,WAAW,QAAQ,QAAQ,IAAI,GAAG,wBAAwB;AAAA,EAEhE,IAAI,QAAQ,QAAQ;AAAA,IAClB,QAAQ,IAAI;AAAA,4CAAoC;AAAA,CAAY;AAAA,IAC5D,QAAQ,IAAI,OAAO;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,UAAU,SAAS,OAAO;AAAA,EAE1C,OAAO;AAAA;;;AC5bT,MAAM,UAAU,MAAK;AAAA,EAAC;AAAA,EAAO;AAAA,EAAS,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,MAAM,CAAC;AAAA,IAAE,KAAK,OAAK,oBAAmB,KAAK,SAAO,GAAE,KAAK,WAAS,GAAE,OAAO,eAAe,MAAK,EAAE,SAAS;AAAA;AAAE;AAAA;AAAC,MAAM,UAAU,EAAC;AAAA,EAAC;AAAA,EAAU,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,MAAM,KAAI,GAAE,CAAC;AAAA,IAAE,KAAK,OAAK,kBAAiB,KAAK,YAAU,GAAE,OAAO,eAAe,MAAK,EAAE,SAAS;AAAA;AAAA,EAAE,oBAAoB,GAAE;AAAA,IAAC,OAAO,KAAK,UAAU;AAAA;AAAA,EAAW,YAAY,GAAE;AAAA,IAAC,OAAO,IAAI,KAAK,KAAK,UAAU,QAAM,IAAI;AAAA;AAAE;AAAA;AAAC,MAAM,EAAC;AAAA,EAAC;AAAA,EAAe;AAAA,EAAc;AAAA,EAAgB,WAAW,CAAC,GAAE,GAAE,GAAE;AAAA,IAAC,KAAK,iBAAe,GAAE,KAAK,gBAAc,GAAE,KAAK,kBAAgB;AAAA;AAAA,EAAE,UAAU,GAAE;AAAA,IAAC,IAAI,IAAE,uCAAsC,KAAK,qCAAqC,KAAK;AAAA,IAAiB,IAAG,KAAK;AAAA,MAAgB,KAAG,2CAA2C,KAAK;AAAA,IAAmB,OAAO;AAAA;AAAE;;;ACAvuB,IAAI,IAAE,EAAC,QAAO,UAAS,KAAI,OAAM,OAAM,SAAQ,MAAK,QAAO,KAAI,MAAK;AAAA;AAAE,MAAM,EAAC;AAAA,EAAC;AAAA,EAAQ;AAAA,EAAM;AAAA,EAAW;AAAA,EAAoB,WAAW,CAAC,KAAE,CAAC,GAAE;AAAA,IAAC,KAAK,UAAQ,GAAE,WAAS,2BAA0B,KAAK,QAAM,GAAE,OAAM,KAAK,aAAW,GAAE,cAAY;AAAA;AAAA,EAAI,QAAQ,CAAC,IAAE;AAAA,IAAC,KAAK,QAAM;AAAA;AAAA,EAAE,oBAAoB,CAAC,IAAE;AAAA,IAAC,IAAI,IAAE,GAAE,IAAI,0BAA0B,GAAE,KAAE,GAAE,IAAI,mCAAmC,KAAG,GAAE,IAAI,8BAA8B,GAAE,IAAE,GAAE,IAAI,gCAAgC,GAAE,IAAE,GAAE,IAAI,0BAA0B;AAAA,IAAE,IAAG,EAAE,KAAG;AAAA,MAAG;AAAA,IAAO,IAAI,IAAE,OAAO,SAAS,GAAE,EAAE,GAAE,IAAE,IAAE,OAAO,SAAS,GAAE,EAAE,IAAE,KAAK,MAAM,KAAK,IAAI,IAAE,IAAI,IAAE,GAAE,IAAE,KAAE,OAAO,SAAS,IAAE,EAAE,IAAE;AAAA,IAAE,OAAM,EAAC,OAAM,OAAO,SAAS,GAAE,EAAE,GAAE,WAAU,GAAE,OAAM,GAAE,YAAW,EAAC;AAAA;AAAA,EAAE,qBAAqB,CAAC,IAAE;AAAA,IAAC,IAAI,IAAE,GAAE,IAAI,sBAAsB,GAAE,KAAE,GAAE,IAAI,6BAA6B,GAAE,IAAE,GAAE,IAAI,0BAA0B,MAAI,QAAO,IAAE,GAAE,IAAI,8BAA8B;AAAA,IAAE,IAAG,EAAE,KAAG;AAAA,MAAG;AAAA,IAAO,OAAM,EAAC,iBAAgB,KAAQ,WAAE,YAAW,GAAE,eAAc,IAAE,SAAQ,EAAC;AAAA;AAAA,EAAE,eAAe,CAAC,IAAE;AAAA,IAAC,IAAI,IAAE,KAAK,qBAAqB,EAAC,GAAE,KAAE,KAAK,sBAAsB,EAAC;AAAA,IAAE,IAAG,IAAG,cAAY,KAAK,qBAAoB;AAAA,MAAC,IAAI,IAAE,IAAI,EAAE,GAAE,SAAQ,GAAE,eAAc,GAAE,eAAe;AAAA,MAAE,KAAK,oBAAoB,CAAC;AAAA,IAAC;AAAA,IAAC,OAAM,EAAC,YAAW,IAAE,WAAU,EAAC;AAAA;AAAA,OAAQ,QAAO,CAAC,IAAE,GAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,GAAE,WAAW,GAAG,IAAE,GAAE,MAAM,CAAC,IAAE,IAAE,IAAE,GAAG,KAAK,WAAW,KAAI,IAAE,IAAI;AAAA,IAAQ,IAAG,EAAE,IAAI,gBAAe,kBAAkB,GAAE,EAAE,IAAI,UAAS,iDAAiD,KAAK,YAAY,GAAE,KAAK;AAAA,MAAM,EAAE,IAAI,iBAAgB,UAAU,KAAK,OAAO;AAAA,IAAE,IAAI,IAAE,EAAC,MAAK,KAAE,KAAK,UAAU,EAAC,IAAO,WAAE,SAAQ,GAAE,QAAO,GAAE,QAAO,GAAG,OAAM,GAAE,IAAE,MAAM,MAAM,GAAE,CAAC,GAAE,IAAE,KAAK,gBAAgB,EAAE,OAAO,GAAE;AAAA,IAAE,IAAG;AAAA,MAAC,IAAE,MAAM,EAAE,KAAK;AAAA,MAAE,MAAK;AAAA,MAAC,IAAO;AAAA;AAAA,IAAE,IAAG,CAAC,EAAE,IAAG;AAAA,MAAC,IAAI,IAAE,GAAG,WAAS,EAAE;AAAA,MAAW,IAAG,EAAE,WAAS,OAAK,EAAE;AAAA,QAAU,MAAM,IAAI,EAAE,KAAG,8CAA4C,EAAE,WAAU,CAAC;AAAA,MAAE,MAAM,IAAI,EAAE,EAAE,QAAO,GAAE,CAAC;AAAA,IAAC;AAAA,IAAC,OAAO;AAAA;AAAA,EAAE,GAAG,CAAC,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,QAAQ,IAAE,EAAE,KAAS,WAAE,CAAC;AAAA;AAAA,EAAE,IAAI,CAAC,IAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,QAAQ,IAAE,EAAE,MAAK,GAAE,EAAC;AAAA;AAAA,EAAE,GAAG,CAAC,IAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,QAAQ,IAAE,EAAE,KAAI,GAAE,EAAC;AAAA;AAAA,EAAE,MAAM,CAAC,IAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,QAAQ,IAAE,EAAE,QAAO,GAAE,EAAC;AAAA;AAAA,EAAE,KAAK,CAAC,IAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,QAAQ,IAAE,EAAE,OAAM,GAAE,EAAC;AAAA;AAAA,OAAQ,WAAU,CAAC,IAAE,GAAE,IAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,GAAE,WAAW,GAAG,IAAE,GAAE,MAAM,CAAC,IAAE,IAAE,IAAE,GAAG,KAAK,WAAW,KAAI,IAAE,IAAI;AAAA,IAAQ,IAAG,EAAE,IAAI,UAAS,iDAAiD,KAAK,YAAY,GAAE,KAAK;AAAA,MAAM,EAAE,IAAI,iBAAgB,UAAU,KAAK,OAAO;AAAA,IAAE,IAAI,IAAE,IAAI,UAAS,IAAE,cAAa,cAAY,IAAI,KAAK,CAAC,EAAC,CAAC,IAAE;AAAA,IAAE,EAAE,OAAO,GAAE,GAAE,CAAC;AAAA,IAAE,IAAI,IAAE,EAAC,MAAK,GAAE,SAAQ,GAAE,QAAO,EAAE,MAAK,QAAO,GAAG,OAAM,GAAE,IAAE,MAAM,MAAM,GAAE,CAAC,GAAE,IAAE,KAAK,gBAAgB,EAAE,OAAO,GAAE;AAAA,IAAE,IAAG;AAAA,MAAC,IAAE,MAAM,EAAE,KAAK;AAAA,MAAE,MAAK;AAAA,MAAC,IAAO;AAAA;AAAA,IAAE,IAAG,CAAC,EAAE,IAAG;AAAA,MAAC,IAAI,IAAE,GAAG,WAAS,EAAE;AAAA,MAAW,IAAG,EAAE,WAAS,OAAK,EAAE;AAAA,QAAU,MAAM,IAAI,EAAE,KAAG,8CAA6C,EAAE,WAAU,CAAC;AAAA,MAAE,MAAM,IAAI,EAAE,EAAE,QAAO,GAAE,CAAC;AAAA,IAAC;AAAA,IAAC,OAAO;AAAA;AAAE;;;ACAhuF,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,IAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,IAAI,CAAC,IAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,KAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,UAAa;AAAA,MAAE,GAAE,OAAO,SAAQ,EAAE,KAAK;AAAA,IAAE,IAAG,GAAG,MAAS;AAAA,MAAE,GAAE,OAAO,KAAI,EAAE,CAAC;AAAA,IAAE,IAAG,GAAG,WAAc;AAAA,MAAE,GAAE,OAAO,UAAS,EAAE,MAAM;AAAA,IAAE,IAAG,GAAG,eAAkB;AAAA,MAAE,GAAE,OAAO,cAAa,EAAE,UAAU;AAAA,IAAE,IAAG,GAAG,eAAkB;AAAA,MAAE,GAAE,OAAO,cAAa,EAAE,UAAU;AAAA,IAAE,IAAG,GAAG,gBAAmB;AAAA,MAAE,GAAE,OAAO,eAAc,EAAE,WAAW;AAAA,IAAE,IAAG,GAAG,iBAAoB;AAAA,MAAE,GAAE,OAAO,gBAAe,EAAE,YAAY;AAAA,IAAE,IAAG,GAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,EAAE,IAAI;AAAA,IAAE,IAAG,GAAG,UAAa;AAAA,MAAE,GAAE,OAAO,SAAQ,EAAE,KAAK;AAAA,IAAE,IAAG,GAAG,WAAc;AAAA,MAAE,GAAE,OAAO,UAAS,EAAE,MAAM;AAAA,IAAE,IAAG,GAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,GAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,GAAE,SAAS,GAAE,IAAE,UAAU,MAAK,WAAW,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,qBAAqB,KAAI,CAAC;AAAA;AAAA,EAAE,GAAG,CAAC,IAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,YAAY,KAAI,CAAC;AAAA;AAAA,EAAE,YAAY,CAAC,IAAE,GAAE,GAAE,GAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,UAAa;AAAA,MAAE,EAAE,OAAO,SAAQ,EAAE,KAAK;AAAA,IAAE,IAAG,GAAG,WAAc;AAAA,MAAE,EAAE,OAAO,UAAS,EAAE,MAAM;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,YAAY,aAAa,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,YAAY,YAAW,CAAC;AAAA;AAAA,EAAE,YAAY,CAAC,IAAE,GAAE,GAAE,GAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,GAAG,UAAa;AAAA,MAAE,EAAE,OAAO,SAAQ,EAAE,KAAK;AAAA,IAAE,IAAG,GAAG,WAAc;AAAA,MAAE,EAAE,OAAO,UAAS,EAAE,MAAM;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,YAAY,aAAa,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAE;;;ACA9oD,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,GAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,IAAI,CAAC,GAAE,GAAE;AAAA,IAAC,IAAI,KAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,GAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,KAAE,GAAE,SAAS,GAAE,IAAE,eAAe,KAAE,IAAI,OAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,MAAM,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,gBAAe,GAAE,CAAC;AAAA;AAAA,EAAE,MAAM,CAAC,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,gBAAe,GAAE,CAAC;AAAA;AAAE;;;ACArY,MAAM,GAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,IAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,GAAG,CAAC,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,MAAI,EAAC;AAAA;AAAA,EAAE,MAAM,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,MAAM,UAAU,MAAK,MAAI,IAAE,EAAC;AAAA;AAAA,EAAE,MAAM,CAAC,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,MAAS,WAAE,EAAC;AAAA;AAAA,EAAE,eAAe,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,GAAE,QAAQ;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,qBAAoB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,aAAa,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,sBAAqB,MAAI,EAAC;AAAA;AAAA,EAAE,wBAAwB,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,oBAAuB;AAAA,MAAE,EAAE,OAAO,mBAAkB,GAAE,eAAe;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,sBAAqB,KAAI,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,gBAAgB,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,sBAAqB,MAAS,WAAE,EAAC;AAAA;AAAA,EAAE,YAAY,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,IAAG,MAAS;AAAA,MAAE,EAAE,OAAO,KAAI,GAAE,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,cAAa,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,iBAAiB,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,gBAAmB;AAAA,MAAE,EAAE,OAAO,eAAc,GAAE,WAAW;AAAA,IAAE,IAAG,IAAG,eAAkB;AAAA,MAAE,EAAE,OAAO,cAAa,GAAE,UAAU;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,mBAAkB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,eAAe,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,oBAAmB,MAAI,IAAE,CAAC;AAAA;AAAA,EAAE,WAAW,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,IAAG,QAAW;AAAA,MAAE,EAAE,OAAO,OAAM,GAAE,GAAG;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAG,IAAG,QAAW;AAAA,MAAE,EAAE,OAAO,OAAM,GAAE,GAAG;AAAA,IAAE,IAAG,IAAG,WAAc;AAAA,MAAE,EAAE,OAAO,UAAS,GAAE,MAAM;AAAA,IAAE,IAAG,IAAG,cAAiB;AAAA,MAAE,EAAE,OAAO,aAAY,GAAE,SAAS;AAAA,IAAE,IAAG,IAAG,UAAa;AAAA,MAAE,EAAE,OAAO,SAAQ,GAAE,KAAK;AAAA,IAAE,IAAG,IAAG,UAAa;AAAA,MAAE,EAAE,OAAO,SAAQ,GAAE,KAAK;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,aAAY,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,SAAS,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,cAAa,MAAI,EAAC;AAAA;AAAA,EAAE,cAAc,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,cAAa,KAAI,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,QAAW;AAAA,MAAE,EAAE,OAAO,OAAM,GAAE,GAAG;AAAA,IAAE,IAAG,IAAG,UAAa;AAAA,MAAE,EAAE,OAAO,SAAQ,GAAE,KAAK;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,eAAc,KAAI,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,kBAAkB,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,eAAc,MAAI,IAAE,CAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,eAAc,MAAI,IAAE,CAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,YAAU,IAAE,EAAC;AAAA;AAAA,EAAE,YAAY,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,kBAAgB,IAAE,EAAC;AAAA;AAAA,EAAE,SAAS,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,eAAa,IAAE,EAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,gBAAc,IAAE,EAAC;AAAA;AAAA,EAAE,OAAO,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,IAAG,cAAiB;AAAA,MAAE,EAAE,OAAO,aAAY,OAAO,GAAE,SAAS,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,gBAAe,KAAI,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,aAAa,CAAC,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,gBAAc,EAAC;AAAA;AAAA,EAAE,SAAS,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,UAAa;AAAA,MAAE,EAAE,OAAO,SAAQ,GAAE,KAAK;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAG,IAAG,cAAiB;AAAA,MAAE,EAAE,OAAO,aAAY,GAAE,SAAS;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,WAAU,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,OAAO,CAAC,IAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,YAAW,MAAI,EAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,IAAE,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,MAAM,UAAU,MAAK,YAAW,MAAI,IAAE,CAAC;AAAA;AAAA,EAAE,wBAAwB,CAAC,IAAE,IAAE;AAAA,IAAC,IAAI,KAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,GAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,KAAE,GAAE,SAAS,GAAE,IAAE,cAAc,KAAE,IAAI,OAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,0BAA0B,CAAC,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,eAAc,IAAE,EAAC;AAAA;AAAE;;;ACArmJ,MAAM,GAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,IAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,IAAI,CAAC,IAAE,GAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,KAAE,EAAE,SAAS,GAAE,IAAE,SAAS,WAAU,KAAE,IAAI,OAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,WAAW,CAAC,IAAE,GAAE,IAAE,GAAE;AAAA,IAAC,IAAI,KAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,GAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,GAAE,SAAS,GAAE,IAAE,SAAS,YAAW,YAAY,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,GAAE,IAAE,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,SAAS,YAAW,WAAW,MAAK,KAAI,IAAE,CAAC;AAAA;AAAE;;;ACAxnB,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,IAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,IAAI,CAAC,IAAE,GAAE,GAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,GAAG,UAAa;AAAA,MAAE,EAAE,OAAO,SAAQ,OAAO,EAAE,KAAK,CAAC;AAAA,IAAE,IAAG,GAAG,gBAAmB;AAAA,MAAE,EAAE,OAAO,eAAc,OAAO,EAAE,WAAW,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,KAAE,UAAU,MAAK,aAAa,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,IAAE,EAAC;AAAA;AAAA,EAAE,MAAM,CAAC,IAAE,GAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,cAAa,GAAE,EAAC;AAAA;AAAA,EAAE,QAAQ,CAAC,IAAE,GAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,mBAAmB,KAAI,EAAC;AAAA;AAAA,EAAE,WAAW,CAAC,IAAE,GAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,mBAAmB,KAAS,WAAE,EAAC;AAAA;AAAA,EAAE,GAAG,CAAC,IAAE,GAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,cAAc,KAAI,EAAC;AAAA;AAAA,EAAE,MAAM,CAAC,IAAE,GAAE,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,MAAM,UAAU,MAAK,cAAc,KAAI,IAAE,CAAC;AAAA;AAAA,EAAE,MAAM,CAAC,IAAE,GAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,cAAc,KAAS,WAAE,EAAC;AAAA;AAAA,EAAE,UAAU,CAAC,IAAE,GAAE,GAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,KAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,cAAc,WAAW,KAAE,IAAI,OAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,WAAW,CAAC,IAAE,GAAE,GAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAI,KAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,cAAc,WAAW,KAAE,IAAI,OAAI;AAAA,IAAK,OAAO,KAAK,OAAO,KAAK,GAAE,CAAC;AAAA;AAAA,EAAE,WAAW,CAAC,IAAE,GAAE,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,cAAc,YAAY,MAAS,WAAE,CAAC;AAAA;AAAE;;;ACAt8C,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,IAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,MAAM,CAAC,IAAE,IAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,YAAU,GAAE,EAAC;AAAA;AAAA,EAAE,WAAW,CAAC,IAAE,IAAE,GAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,KAAE,UAAU,MAAK,YAAW,YAAY,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,IAAE,CAAC;AAAA;AAAA,EAAE,SAAS,CAAC,IAAE,IAAE,GAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,KAAE,UAAU,MAAK,YAAW,UAAU,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,IAAE,CAAC;AAAA;AAAA,EAAE,QAAQ,CAAC,IAAE,IAAE,GAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,YAAW,WAAU,EAAC;AAAA;AAAA,EAAE,YAAY,CAAC,IAAE,IAAE,GAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,YAAW,mBAAkB,IAAE,CAAC;AAAA;AAAE;;;ACApzB,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,GAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,cAAc,CAAC,GAAE,IAAE,IAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,GAAE,QAAQ;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,SAAS,oBAAoB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,YAAY,CAAC,GAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,SAAS,qBAAqB,MAAI,EAAC;AAAA;AAAA,EAAE,uBAAuB,CAAC,GAAE,IAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,oBAAuB;AAAA,MAAE,EAAE,OAAO,mBAAkB,GAAE,eAAe;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,KAAE,SAAS,qBAAqB,KAAI,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,IAAE,CAAC;AAAA;AAAA,EAAE,eAAe,CAAC,GAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,SAAS,qBAAqB,MAAS,WAAE,EAAC;AAAA;AAAA,EAAE,QAAQ,CAAC,GAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,SAAS,aAAa,MAAI,EAAC;AAAA;AAAE;;;ACAxvB,MAAM,GAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,IAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,cAAc,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,SAAS,qBAAoB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,gCAAgC,CAAC,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,SAAS,yCAAuC,EAAC;AAAA;AAAA,EAAE,YAAY,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,SAAS,sBAAqB,MAAI,CAAC;AAAA;AAAA,EAAE,eAAe,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,SAAS,sBAAqB,MAAS,WAAE,CAAC;AAAA;AAAA,EAAE,gBAAgB,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,SAAS,uBAAsB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,iBAAiB,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,SAAS,wBAAsB,IAAE,CAAC;AAAA;AAAA,EAAE,cAAc,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,SAAS,wBAAuB,MAAI,CAAC;AAAA;AAAA,EAAE,iBAAiB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,MAAM,SAAS,wBAAuB,MAAI,GAAE,CAAC;AAAA;AAAA,EAAE,iBAAiB,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,SAAS,wBAAuB,MAAS,WAAE,CAAC;AAAA;AAAA,EAAE,aAAa,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,GAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,EAAE,IAAI;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,uBAAsB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,WAAW,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,wBAAuB,KAAI,CAAC;AAAA;AAAA,EAAE,cAAc,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,wBAAuB,KAAS,WAAE,CAAC;AAAA;AAAA,EAAE,gBAAgB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,wBAAuB,SAAQ,CAAC;AAAA;AAAA,EAAE,mBAAmB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,wBAAuB,aAAY,CAAC;AAAA;AAAA,EAAE,gBAAgB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,oBAAkB,GAAE,CAAC;AAAA;AAAA,EAAE,eAAe,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,qBAAoB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,iCAAiC,CAAC,IAAE,IAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,yCAAuC,CAAC;AAAA;AAAA,EAAE,aAAa,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,sBAAqB,KAAI,CAAC;AAAA;AAAA,EAAE,gBAAgB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,sBAAqB,KAAS,WAAE,CAAC;AAAA;AAAA,EAAE,iBAAiB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,aAAgB;AAAA,MAAE,EAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,GAAG,SAAY;AAAA,MAAE,EAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,uBAAsB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,kBAAkB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,MAAK,wBAAsB,GAAE,CAAC;AAAA;AAAA,EAAE,eAAe,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAK,wBAAuB,KAAI,CAAC;AAAA;AAAA,EAAE,kBAAkB,CAAC,IAAE,IAAE,GAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,MAAM,UAAU,MAAK,wBAAuB,KAAI,GAAE,CAAC;AAAA;AAAA,EAAE,kBAAkB,CAAC,IAAE,IAAE,GAAE,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,UAAU,MAAK,wBAAuB,KAAS,WAAE,CAAC;AAAA;AAAA,EAAE,yBAAyB,CAAC,IAAE,IAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,WAAc;AAAA,MAAE,EAAE,OAAO,UAAS,EAAE,MAAM;AAAA,IAAE,IAAG,GAAG,QAAW;AAAA,MAAE,EAAE,OAAO,OAAM,EAAE,GAAG;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,IAAE,UAAU,MAAK,wBAAuB,eAAe,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,CAAC;AAAA;AAAA,EAAE,gBAAgB,CAAC,IAAE,IAAE,GAAE,GAAE,GAAE,GAAE;AAAA,IAAC,IAAI,IAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,WAAc;AAAA,MAAE,EAAE,OAAO,UAAS,EAAE,MAAM;AAAA,IAAE,IAAG,GAAG,QAAW;AAAA,MAAE,EAAE,OAAO,OAAM,EAAE,GAAG;AAAA,IAAE,IAAI,IAAE,EAAE,SAAS,GAAE,KAAE,UAAU,MAAK,wBAAuB,eAAe,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,KAAK,IAAE,GAAE,CAAC;AAAA;AAAE;;;ACArsH,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,GAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,IAAI,CAAC,GAAE,IAAE;AAAA,IAAC,IAAI,KAAE,IAAI;AAAA,IAAgB,IAAG,GAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,OAAO,EAAE,IAAI,CAAC;AAAA,IAAE,IAAG,GAAG,aAAgB;AAAA,MAAE,GAAE,OAAO,YAAW,OAAO,EAAE,QAAQ,CAAC;AAAA,IAAE,IAAG,GAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,EAAE,IAAI;AAAA,IAAE,IAAG,GAAG,cAAiB;AAAA,MAAE,GAAE,OAAO,aAAY,EAAE,SAAS;AAAA,IAAE,IAAI,KAAE,GAAE,SAAS,GAAE,IAAE,gBAAgB,KAAE,IAAI,OAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,GAAE,EAAC;AAAA;AAAA,EAAE,SAAS,CAAC,GAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,iBAAiB,KAAK,MAAI,EAAC;AAAA;AAAA,EAAE,IAAI,CAAC,GAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,iBAAiB,KAAK,MAAI,EAAC;AAAA;AAAA,EAAE,MAAM,CAAC,GAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,OAAO,iBAAiB,KAAK,MAAS,WAAE,EAAC;AAAA;AAAE;;;ACA5kB,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,IAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,IAAI,CAAC,IAAE,IAAE;AAAA,IAAC,IAAI,KAAE,IAAI;AAAA,IAAgB,IAAG,IAAG,MAAS;AAAA,MAAE,GAAE,OAAO,KAAI,GAAE,CAAC;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,GAAE,IAAI;AAAA,IAAE,IAAG,IAAG,UAAa;AAAA,MAAE,GAAE,OAAO,SAAQ,GAAE,KAAK;AAAA,IAAE,IAAG,IAAG,SAAY;AAAA,MAAE,GAAE,OAAO,QAAO,OAAO,GAAE,IAAI,CAAC;AAAA,IAAE,IAAG,IAAG,aAAgB;AAAA,MAAE,GAAE,OAAO,YAAW,OAAO,GAAE,QAAQ,CAAC;AAAA,IAAE,IAAI,IAAE,GAAE,SAAS,GAAE,KAAE,gBAAgB,IAAE,IAAI,MAAI;AAAA,IAAK,OAAO,KAAK,OAAO,IAAI,IAAE,EAAC;AAAA;AAAA,EAAE,gBAAgB,CAAC,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,SAAQ,EAAC;AAAA;AAAA,EAAE,GAAG,CAAC,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,SAAS,MAAI,EAAC;AAAA;AAAA,EAAE,aAAa,CAAC,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,MAAI,EAAC;AAAA;AAAE;;;ACAnjB,MAAM,GAAC;AAAA,EAAC;AAAA,EAAO,WAAW,CAAC,GAAE;AAAA,IAAC,KAAK,SAAO;AAAA;AAAA,EAAE,gBAAgB,CAAC,GAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,KAAK,UAAU,KAAK,wBAAsB,IAAE,EAAC;AAAA;AAAA,EAAE,mBAAmB,CAAC,GAAE,IAAE,IAAE,IAAE;AAAA,IAAC,OAAO,KAAK,OAAO,IAAI,UAAU,KAAK,wBAAuB,MAAI,EAAC;AAAA;AAAE;;;ACA4U,MAAM,EAAC;AAAA,EAAC;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAK;AAAA,EAAM;AAAA,EAAM;AAAA,EAAO;AAAA,EAAM;AAAA,EAAM;AAAA,EAAS;AAAA,EAAM;AAAA,EAAO;AAAA,EAAM,WAAW,CAAC,IAAE,CAAC,GAAE;AAAA,IAAC,KAAK,SAAO,IAAI,EAAE,CAAC,GAAE,KAAK,UAAQ,IAAI,GAAE,KAAK,MAAM,GAAE,KAAK,OAAK,IAAI,EAAE,KAAK,MAAM,GAAE,KAAK,QAAM,IAAI,GAAE,KAAK,MAAM,GAAE,KAAK,QAAM,IAAI,GAAE,KAAK,MAAM,GAAE,KAAK,SAAO,IAAI,EAAE,KAAK,MAAM,GAAE,KAAK,QAAM,IAAI,GAAE,KAAK,MAAM,GAAE,KAAK,QAAM,IAAI,EAAE,KAAK,MAAM,GAAE,KAAK,WAAS,IAAI,EAAE,KAAK,MAAM,GAAE,KAAK,QAAM,IAAI,EAAE,KAAK,MAAM,GAAE,KAAK,SAAO,IAAI,EAAE,KAAK,MAAM,GAAE,KAAK,QAAM,IAAI,EAAE,KAAK,MAAM;AAAA;AAAA,EAAE,QAAQ,CAAC,GAAE;AAAA,IAAC,OAAO,KAAK,OAAO,SAAS,CAAC,GAAE;AAAA;AAAK;;;ACW5iC,MAAM,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,OAAe,UAAuB,SAAyB;AAAA,IACzE,KAAK,SAAS,IAAI,EAAS,EAAE,MAAM,CAAC;AAAA,IACpC,KAAK,WAAW;AAAA,IAChB,KAAK,UAAU;AAAA;AAAA,OAMX,cAAa,CACjB,KACA,MACA,MACA,UAGI,CAAC,GACY;AAAA,IACjB,QAAQ,OAAO,SAAS,KAAK;AAAA,IAE7B,MAAM,WAAW,YAAY;AAAA,MAC3B,IAAI;AAAA,QACF,MAAM,KAAK,OAAO,SAAS,OAAO,OAAO,MAAM;AAAA,UAC7C;AAAA,UACA,OAAO,QAAQ;AAAA,UACf;AAAA,UACA,YAAY,QAAQ;AAAA,UACpB,UAAU;AAAA,QACZ,CAAC;AAAA,QAGD,OAAO,GAAG,KAAK,SAAS,oBAAoB;AAAA,QAC5C,OAAO,OAAO;AAAA,QACd,MAAM,IAAI,MAAM,sCAAsC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;AAAA;AAAA;AAAA,IAKlH,IAAI,KAAK,SAAS;AAAA,MAChB,OAAO,MAAM,KAAK,QAAQ,UAAU,yBAAyB;AAAA,IAC/D;AAAA,IAEA,OAAO,MAAM,SAAS;AAAA;AAAA,OAMlB,cAAa,CAAC,KAA+B;AAAA,IACjD,QAAQ,OAAO,SAAS,KAAK;AAAA,IAE7B,IAAI;AAAA,MACF,MAAM,KAAK,OAAO,SAAS,SAAS,OAAO,MAAM,GAAG;AAAA,MACpD,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA;AAAA;AAAA,OAOL,WAAU,CAAC,KAAa;AAAA,IAC5B,QAAQ,OAAO,SAAS,KAAK;AAAA,IAC7B,OAAO,MAAM,KAAK,OAAO,SAAS,SAAS,OAAO,MAAM,GAAG;AAAA;AAE/D;AAKO,SAAS,oBAAoB,CAAC,UAAuB,SAAgD;AAAA,EAC1G,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAE1B,IAAI,CAAC,OAAO;AAAA,IACV,MAAM,IAAI,MAAM,uEAAuE;AAAA,EACzF;AAAA,EAEA,OAAO,IAAI,sBAAsB,OAAO,UAAU,OAAO;AAAA;;;AC9F3D,qBAAS,wBAAU;;;ACQnB,IAAM,eAAe;AAKd,SAAS,WAAW,CAAC,WAA8C;AAAA,EACxE,MAAM,QAAQ,UAAU,MAAM;AAAA,CAAI;AAAA,EAElC,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,OAAO;AAAA,EACT;AAAA,EAGA,OAAO,MAAM,WAAW,QAAQ,OAAO,YAAY,gBAAgB;AAAA,EAEnE,IAAI,EAAE,QAAQ,aAAa,UAAU,SAAS,UAAU;AAAA,IACtD,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,aAAa,KAAK;AAAA,CAAI,EAAE,KAAK;AAAA,EAC7C,MAAM,eAAe,QAAQ,MAAM;AAAA,CAAI;AAAA,EACvC,MAAM,YAAY,aAAa;AAAA,EAC/B,MAAM,YAAY,aAAa,MAAM,CAAC;AAAA,EAEtC,IAAI,CAAC,WAAW;AAAA,IACd,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,QAAQ,UAAU,MAAM,YAAY;AAAA,EAE1C,IAAI,CAAC,OAAO,QAAQ;AAAA,IAElB,OAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAM,OAAO,UAAU,YAAY,MAAM;AAAA,EAEjD,IAAI,EAAE,QAAQ,UAAU;AAAA,IACtB,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,OAAO,UAAU,KAAK;AAAA,CAAI,EAAE,KAAK;AAAA,EACvC,MAAM,oBAAoB,KAAK,SAAS,kBAAkB,KAAK,KAAK,SAAS,kBAAkB;AAAA,EAE/F,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,UAAU,CAAC,CAAC,YAAY;AAAA,IACxB,MAAM,IAAI,KAAK,OAAO;AAAA,IACtB;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,KAAK;AAAA,IACL,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAMK,SAAS,YAAY,CAAC,YAA4C;AAAA,EACvE,OAAO,WAAW,IAAI,CAAC,QAAQ,YAAY,GAAG,CAAC,EAAE,OAAO,CAAC,WAAyC,WAAW,IAAI;AAAA;AAM5G,SAAS,kBAAkB,CAAC,SAAqE;AAAA,EACtG,MAAM,SAA+C,CAAC;AAAA,EAEtD,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,CAAC,OAAO,OAAO,OAAO;AAAA,MACxB,OAAO,OAAO,QAAQ,CAAC;AAAA,IACzB;AAAA,IACA,OAAO,OAAO,OAAO,KAAK,MAAM;AAAA,EAClC;AAAA,EAEA,OAAO;AAAA;AAgBF,SAAS,uBAAuB,CACrC,SACA,aACA,YACsB;AAAA,EACtB,IAAI,CAAC,YAAY;AAAA,IACf,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,OAAO,CAAC,WAAW,CAAC,OAAO,SAAS,OAAO,UAAU,WAAW;AAAA;AAM1E,SAAS,kBAAkB,CAAC,SAAwC;AAAA,EACzE,OAAO,QAAQ,KAAK,CAAC,WAAW,OAAO,QAAQ;AAAA;AAM1C,SAAS,WAAW,CAAC,SAAwC;AAAA,EAClE,OAAO,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,MAAM;AAAA;AAMjD,SAAS,QAAQ,CAAC,SAAwC;AAAA,EAC/D,OAAO,QAAQ,KAAK,CAAC,WAAW,OAAO,SAAS,KAAK;AAAA;;;ADjIhD,SAAS,iBAAiB,CAC/B,SACA,QACA,aACQ;AAAA,EACR,QAAQ,SAAS,SAAS,OAAO,IAAI,MAAQ,YAAY;AAAA,EAEzD,MAAM,WAAqB,CAAC;AAAA,EAG5B,MAAM,UAAU,KAAK,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,EAC9C,SAAS,KAAK,OAAO,cAAc,SAAS;AAAA,EAC5C,SAAS,KAAK,EAAE;AAAA,EAGhB,MAAM,UAAU,mBAAmB,OAAO;AAAA,EAG1C,MAAM,YAAY,CAAC,QAAQ,OAAO,QAAQ,YAAY,QAAQ,QAAQ,SAAS,MAAM,SAAS,SAAS,QAAQ;AAAA,EAG/G,MAAM,kBAAkB,QAAQ,OAAO,CAAC,MAAM,EAAE,QAAQ;AAAA,EACxD,IAAI,gBAAgB,SAAS,GAAG;AAAA,IAC9B,SAAS,KAAK,yBAAwB;AAAA,IACtC,SAAS,KAAK,EAAE;AAAA,IAChB,WAAW,UAAU,iBAAiB;AAAA,MACpC,SAAS,KAAK,aAAa,QAAQ,QAAQ,SAAS,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,SAAS,KAAK,EAAE;AAAA,EAClB;AAAA,EAGA,WAAW,QAAQ,WAAW;AAAA,IAC5B,MAAM,cAAc,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAAA,IAC5D,IAAI,CAAC,eAAe,YAAY,WAAW,GAAG;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,OAAO,MAAM,SAAS,KAAK,YAAY;AAAA,IACrD,SAAS,KAAK,OAAO,OAAO;AAAA,IAC5B,SAAS,KAAK,EAAE;AAAA,IAEhB,WAAW,UAAU,aAAa;AAAA,MAChC,SAAS,KAAK,aAAa,QAAQ,QAAQ,SAAS,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,SAAS,KAAK,EAAE;AAAA,EAClB;AAAA,EAEA,OAAO,SAAS,KAAK;AAAA,CAAI;AAAA;AAM3B,SAAS,YAAY,CACnB,QACA,QACA,SACA,aACQ;AAAA,EACR,MAAM,QAAkB,CAAC;AAAA,EAGzB,IAAI,UAAU,OAAO;AAAA,EAIrB,IAAI,OAAO,SAAS,OAAO,UAAU,aAAa;AAAA,IAChD,UAAU,KAAK,OAAO,YAAY;AAAA,EACpC;AAAA,EAEA,MAAM,KAAK,KAAK,SAAS;AAAA,EAGzB,IAAI,OAAO,YAAY,SAAS;AAAA,IAC9B,MAAM,KAAK,KAAK,OAAO,cAAc,kBAAkB,OAAO,QAAQ;AAAA,EACxE,EAAO,SAAI,OAAO,UAAU;AAAA,IAC1B,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,EACpC;AAAA,EAGA,IAAI,OAAO,YAAY;AAAA,IACrB,MAAM,KAAK,OAAO,OAAO,QAAQ;AAAA,EACnC;AAAA,EAEA,OAAO,MAAM,KAAK,GAAG;AAAA;AAMvB,eAAsB,mBAAmB,CAAC,eAAuB,UAAiC;AAAA,EAChG,IAAI,kBAAkB;AAAA,EAEtB,IAAI;AAAA,IACF,kBAAkB,MAAM,UAAS,eAAe,OAAO;AAAA,IACvD,OAAO,OAAO;AAAA,IAEd,IAAI,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS,UAAU;AAAA,MACxE,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,IACpB,EAAO;AAAA,MACL,MAAM;AAAA;AAAA;AAAA,EAKV,MAAM,QAAQ,gBAAgB,MAAM;AAAA,CAAI;AAAA,EACxC,IAAI,cAAc;AAAA,EAGlB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,cAAc,MAAM;AAAA,IAC1B,MAAM,WAAW,MAAM,IAAI;AAAA,IAE3B,IAAI,aAAa,WAAW,KAAK,GAAG;AAAA,MAElC,cAAc;AAAA,MACd;AAAA,IACF;AAAA,IACA,IAAI,IAAI,KAAK,aAAa,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM,IAAI;AAAA,MAElE,cAAc,IAAI;AAAA,IACpB;AAAA,EACF;AAAA,EAGA,IAAI,gBAAgB,GAAG;AAAA,IACrB,cAAc,MAAM;AAAA,EACtB;AAAA,EAGA,MAAM,OAAO,aAAa,GAAG,QAAQ;AAAA,EAGrC,MAAM,WAAU,eAAe,MAAM,KAAK;AAAA,CAAI,CAAC;AAAA;AAO1C,SAAS,oBAAoB,CAClC,SACA,QACA,SACA,aACQ;AAAA,EACR,MAAM,WAAqB,CAAC;AAAA,EAG5B,MAAM,kBAAkB,QAAQ,OAAO,CAAC,MAAM,EAAE,QAAQ;AAAA,EACxD,IAAI,gBAAgB,SAAS,GAAG;AAAA,IAC9B,SAAS,KAAK,qBAAoB;AAAA,IAClC,SAAS,KAAK,EAAE;AAAA,IAChB,WAAW,UAAU,iBAAiB;AAAA,MACpC,SAAS,KAAK,aAAa,QAAQ,QAAQ,SAAS,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,SAAS,KAAK,EAAE;AAAA,EAClB;AAAA,EAGA,MAAM,UAAU,mBAAmB,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;AAAA,EAGrE,MAAM,YAAY,CAAC,QAAQ,OAAO,QAAQ,YAAY,QAAQ,QAAQ,SAAS,MAAM,SAAS,SAAS,QAAQ;AAAA,EAE/G,WAAW,QAAQ,WAAW;AAAA,IAC5B,MAAM,cAAc,QAAQ;AAAA,IAC5B,IAAI,CAAC,eAAe,YAAY,WAAW,GAAG;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,OAAO,MAAM,SAAS,KAAK,YAAY;AAAA,IACrD,SAAS,KAAK,KAAK;AAAA,IACnB,SAAS,KAAK,EAAE;AAAA,IAChB,WAAW,UAAU,aAAa;AAAA,MAChC,SAAS,KAAK,aAAa,QAAQ,QAAQ,SAAS,WAAW,CAAC;AAAA,IAClE;AAAA,IACA,SAAS,KAAK,EAAE;AAAA,EAClB;AAAA,EAEA,OAAO,SAAS,KAAK;AAAA,CAAI,EAAE,KAAK;AAAA;;;AE5LlC;AACA;AAGA,IAAM,YAAY,UAAU,IAAI;AAKhC,eAAsB,cAAc,CAAC,SAAkC;AAAA,EACrE,QAAQ,QAAQ,WAAW,MAAM,UAAU,OAAO;AAAA,EAElD,IAAI,UAAU,CAAC,OAAO,SAAS,SAAS,GAAG;AAAA,IACzC,QAAQ,KAAK,mBAAmB,QAAQ;AAAA,EAC1C;AAAA,EAEA,OAAO,OAAO,KAAK;AAAA;AAQrB,eAAsB,mBAAmB,CAAC,SAAmC;AAAA,EAC3E,QAAQ,IAAI;AAAA,2CAAmC,SAAS;AAAA,EAExD,IAAI;AAAA,IACF,MAAM,eAAe,OAAO;AAAA,IAC5B,QAAQ,IAAI;AAAA,CAA8C;AAAA,IAC1D,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,QAAQ,KAAK,kCAAiC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,CAAK;AAAA,IACxG,OAAO;AAAA;AAAA;AASX,IAAM,uBAAuB;AAC7B,IAAM,uBAAuB;AAC7B,IAAM,uBAAuB;AAM7B,eAAsB,UAAU,CAAC,SAAkC;AAAA,EACjE,QAAQ,WAAW,MAAM,UAAU,OAAO,SAAS;AAAA,EACnD,OAAO,OAAO,KAAK;AAAA;AAUrB,eAAsB,WAAW,GAAyB;AAAA,EAGxD,IAAI,QAAQ,IAAI,qBAAqB,UAAU,QAAQ,IAAI,mBAAmB;AAAA,IAC5E,MAAM,WAAW,QAAQ,IAAI;AAAA,IAC7B,MAAM,QAAQ,SAAS,MAAM,GAAG;AAAA,IAEhC,IAAI,MAAM,WAAW,KAAK,MAAM,MAAM,MAAM,IAAI;AAAA,MAC9C,MAAM,SAAQ,MAAM;AAAA,MACpB,MAAM,QAAO,MAAM;AAAA,MACnB,MAAM,UAAS,QAAQ,IAAI,mBAAmB;AAAA,MAE9C,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK,uBAAuB,UAAS;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAAA,EAGA,MAAM,MAAM,MAAM,WAAW,uBAAuB;AAAA,EAQpD,MAAM,QAAQ,IAAI,MAAM,oBAAoB,KAAK,IAAI,MAAM,oBAAoB,KAAK,IAAI,MAAM,oBAAoB;AAAA,EAElH,IAAI,EAAE,QAAQ,MAAM,MAAM,KAAK;AAAA,IAC7B,MAAM,IAAI,MAAM,iDAAiD,KAAK;AAAA,EACxE;AAAA,EAEA,MAAM,QAAQ,MAAM;AAAA,EACpB,MAAM,OAAO,MAAM;AAAA,EAGnB,MAAM,SAAS,MAAM,WAAW,uBAAuB;AAAA,EAEvD,OAAO;AAAA,IACL;AAAA,IACA,UAAU,GAAG,SAAS;AAAA,IACtB;AAAA,IACA;AAAA,IACA,KAAK,uBAAuB,SAAS;AAAA,EACvC;AAAA;AAMF,eAAsB,YAAY,CAAC,QAAwC;AAAA,EACzE,IAAI;AAAA,IACF,MAAM,OAAO,MAAM,WAAW,iCAAiC,UAAU;AAAA,IACzE,MAAM,UAAU,KAAK,MAAM;AAAA,CAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;AAAA,IAE/D,OAAO,QAAQ,SAAS,IAAK,QAAQ,MAAM,OAAQ;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOX,eAAsB,kBAAkB,CAAC,WAAmB,MAAkC;AAAA,EAC5F,MAAM,YAAY,MAAM,aAAa,SAAS;AAAA,EAE9C,IAAI;AAAA,EACJ,IAAI,WAAW;AAAA,IACb,QAAQ,GAAG;AAAA,EACb,EAAO;AAAA,IAEL,QAAQ;AAAA;AAAA,EAGV,MAAM,SAAS;AAAA,EACf,MAAM,aAAa,OAAO,MAAM,SAAS;AAAA,EAEzC,MAAM,MAAM,MAAM,WAAW,OAAO,mBAAmB,WAAW,YAAY;AAAA,EAI9E,MAAM,UAAU,IACb,MAAM;AAAA,QAAW,EACjB,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC,EAC7B,OAAO,CAAC,WAAW,OAAO,SAAS,KAAK,WAAW,SAAS;AAAA,EAE/D,OAAO;AAAA;AAMT,eAAsB,iBAAiB,CAAC,aAAsC;AAAA,EAC5E,QAAQ,wBAAa,MAAa;AAAA,EAClC,QAAQ,sBAAY,MAAa;AAAA,EAEjC,MAAM,cAAc,SAAQ,aAAa,cAAc;AAAA,EACvD,MAAM,UAAU,MAAM,UAAS,aAAa,OAAO;AAAA,EACnD,MAAM,UAAU,KAAK,MAAM,OAAO;AAAA,EAElC,IAAI,CAAC,QAAQ,SAAS;AAAA,IACpB,MAAM,IAAI,MAAM,uBAAuB,aAAa;AAAA,EACtD;AAAA,EAEA,OAAO,QAAQ;AAAA;AAMjB,eAAsB,cAAc,CAAC,aAAiE;AAAA,EACpG,QAAQ,wBAAa,MAAa;AAAA,EAClC,QAAQ,sBAAY,MAAa;AAAA,EAEjC,MAAM,cAAc,SAAQ,aAAa,cAAc;AAAA,EACvD,MAAM,UAAU,MAAM,UAAS,aAAa,OAAO;AAAA,EACnD,MAAM,UAAU,KAAK,MAAM,OAAO;AAAA,EAElC,IAAI,CAAC,QAAQ,MAAM;AAAA,IACjB,MAAM,IAAI,MAAM,oBAAoB,aAAa;AAAA,EACnD;AAAA,EAEA,IAAI,CAAC,QAAQ,SAAS;AAAA,IACpB,MAAM,IAAI,MAAM,uBAAuB,aAAa;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,SAAS,QAAQ;AAAA,EACnB;AAAA;AAMF,eAAsB,oBAAoB,CAAC,aAAqB,YAAmC;AAAA,EACjG,QAAQ,qBAAU,0BAAc,MAAa;AAAA,EAC7C,QAAQ,sBAAY,MAAa;AAAA,EAEjC,MAAM,cAAc,SAAQ,aAAa,cAAc;AAAA,EACvD,MAAM,UAAU,MAAM,UAAS,aAAa,OAAO;AAAA,EACnD,MAAM,UAAU,KAAK,MAAM,OAAO;AAAA,EAElC,QAAQ,UAAU;AAAA,EAElB,MAAM,WAAU,aAAa,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,CAAK;AAAA;AAMtE,eAAsB,YAAY,CAAC,SAAiB,OAAgC;AAAA,EAElF,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,WAAW,QAAQ,OAAO;AAAA,EAClC;AAAA,EAGA,MAAM,WAAW,cAAc,UAAU;AAAA;AAM3C,eAAsB,SAAS,CAAC,KAAa,SAAgC;AAAA,EAC3E,MAAM,WAAW,WAAW,YAAY,UAAU;AAAA;AAMpD,eAAsB,WAAW,CAAC,KAA6B;AAAA,EAE7D,MAAM,WAAW,MAAM;AAAA,EAGvB,IAAI,KAAK;AAAA,IACP,MAAM,WAAW,gBAAgB,MAAM;AAAA,EACzC;AAAA;AAaF,eAAsB,kBAAkB,GAAqB;AAAA,EAC3D,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,WAAW,oBAAoB;AAAA,IAEpD,IAAI,OAAO,WAAW,GAAG;AAAA,MACvB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,QAAQ,OAAO,MAAM;AAAA,CAAI,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AAAA,IACjE,MAAM,kBAAkB,MAAM,OAAO,CAAC,SAAS;AAAA,MAE7C,MAAM,oBAAoB,KAAK;AAAA,MAC/B,OAAO,sBAAsB;AAAA,KAC9B;AAAA,IAED,IAAI,gBAAgB,SAAS,GAAG;AAAA,MAC9B,QAAQ,IAAI;AAAA,+BAAiC;AAAA,MAC7C,WAAW,QAAQ,iBAAiB;AAAA,QAClC,QAAQ,IAAI,KAAK,MAAM;AAAA,MACzB;AAAA,MACA,QAAQ,IAAI,EAAE;AAAA,MACd,OAAO;AAAA,IACT;AAAA,IAGA,QAAQ,IAAI,0EAAyE;AAAA,IACrF,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAoBX,eAAsB,SAAS,CAAC,KAA+B;AAAA,EAC7D,IAAI;AAAA,IACF,MAAM,WAAW,cAAc,MAAM;AAAA,IACrC,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IAGd,MAAM,eAAe,iBAAiB,QAAQ,MAAM,QAAQ,YAAY,IAAI,OAAO,KAAK,EAAE,YAAY;AAAA,IACtG,IAAI,aAAa,SAAS,yBAAyB,KAAK,aAAa,SAAS,kBAAkB,GAAG;AAAA,MACjG,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,IAAI,MAAM,wBAAwB,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;AAAA;AAAA;;;AClS7G,SAAS,KAAK,CAAC,IAA2B;AAAA,EACxC,OAAO,IAAI,QAAQ,CAAC,aAAY,WAAW,UAAS,EAAE,CAAC;AAAA;AAMzD,SAAS,cAAc,CAAC,SAAiB,cAAsB,UAA0B;AAAA,EAEvF,MAAM,QAAQ,eAAe,KAAK;AAAA,EAElC,OAAO,KAAK,IAAI,OAAO,QAAQ;AAAA;AAMjC,SAAS,gBAAgB,CAAC,OAAyB;AAAA,EACjD,IAAI,EAAE,iBAAiB,QAAQ;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,MAAM,QAAQ,YAAY;AAAA,EAG1C,IAAI,QAAQ,SAAS,SAAS,KAAK,QAAQ,SAAS,SAAS,KAAK,QAAQ,SAAS,YAAY,GAAG;AAAA,IAChG,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK,GAAG;AAAA,IAC5G,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,QAAQ,SAAS,YAAY,KAAK,QAAQ,SAAS,KAAK,GAAG;AAAA,IAC7D,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAaT,eAAsB,KAAQ,CAAC,IAAsB,SAAmC;AAAA,EACtF,QAAQ,aAAa,cAAc,UAAU,gBAAgB,gBAAgB;AAAA,EAE7E,IAAI;AAAA,EAEJ,SAAS,UAAU,EAAG,UAAU,aAAa,WAAW;AAAA,IACtD,IAAI;AAAA,MAEF,OAAO,MAAM,GAAG;AAAA,MAChB,OAAO,OAAO;AAAA,MACd,YAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAGpE,MAAM,WAAW,iBAAiB,KAAK;AAAA,MAGvC,IAAI,YAAY,cAAc,KAAK,CAAC,UAAU;AAAA,QAC5C,IAAI,CAAC,YAAY,UAAU,cAAc,GAAG;AAAA,UAC1C,QAAQ,MAAM;AAAA,IAAM,gDAAgD;AAAA,UACpE,QAAQ,MAAM,UAAU,OAAO;AAAA,QACjC;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MAGA,MAAM,QAAQ,eAAe,SAAS,cAAc,QAAQ;AAAA,MAE5D,QAAQ,KAAK;AAAA,MAAQ,iCAAiC,UAAU,KAAK,eAAe;AAAA,MACpF,QAAQ,KAAK,MAAM,UAAU,SAAS;AAAA,MACtC,QAAQ,KAAK,kBAAkB,YAAY;AAAA,MAG3C,MAAM,MAAM,KAAK;AAAA;AAAA,EAErB;AAAA,EAGA,MAAM,aAAa,IAAI,MAAM,GAAG,8BAA8B,sBAAsB;AAAA;AAM/E,SAAS,mBAAmB,CAAC,QAAqB;AAAA,EACvD,OAAO,OAAU,IAAsB,kBAAuC;AAAA,IAC5E,IAAI,CAAC,OAAO,SAAS;AAAA,MAEnB,OAAO,MAAM,GAAG;AAAA,IAClB;AAAA,IAEA,OAAO,MAAM,MAAM,IAAI;AAAA,MACrB,cAAc,OAAO;AAAA,MACrB,aAAa,OAAO;AAAA,MACpB,UAAU,OAAO;AAAA,MACjB;AAAA,IACF,CAAC;AAAA;AAAA;;;AC3HL,IAAM,gBAAgB;AACtB,IAAM,6BAA6B;AAKnC,SAAS,YAAY,CAAC,SAAkC;AAAA,EAEtD,MAAM,KAAI,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAAA,EAEvD,MAAM,QAAQ,GAAE,MAAM,aAAa;AAAA,EACnC,IAAI,EAAE,QAAQ,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IACzC,MAAM,IAAI,MAAM,2BAA2B,SAAS;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,OAAO,SAAS,MAAM,IAAI,EAAE;AAAA,IACnC,OAAO,OAAO,SAAS,MAAM,IAAI,EAAE;AAAA,IACnC,OAAO,OAAO,SAAS,MAAM,IAAI,EAAE;AAAA,IACnC,YAAY,MAAM;AAAA,EACpB;AAAA;AAMF,SAAS,aAAa,CAAC,KAA8B;AAAA,EACnD,IAAI,SAAS,GAAG,IAAI,SAAS,IAAI,SAAS,IAAI;AAAA,EAC9C,IAAI,IAAI,YAAY;AAAA,IAClB,UAAU,IAAI,IAAI;AAAA,EACpB;AAAA,EACA,OAAO;AAAA;AAOT,SAAS,eAAe,CAAC,gBAAoC,OAAO,QAAiB;AAAA,EAEnF,IAAI,SAAS,YAAY;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,SAAS,WAAW;AAAA,IACtB,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,CAAC,gBAAgB;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,aAAa,cAAc;AAAA,EAG3C,IAAI,SAAS,QAAQ;AAAA,IACnB,OAAO,QAAQ,SAAS;AAAA,EAC1B;AAAA,EAKA,IAAI;AAAA,IACF,MAAM,aAAa,aAAa,IAAI;AAAA,IACpC,OAAO,gBAAgB,gBAAgB,IAAI,KAAK;AAAA,IAChD,MAAM;AAAA,IAEN,OAAO;AAAA;AAAA;AAOJ,SAAS,iBAAiB,CAC/B,SACA,gBACA,eAAe,QACE;AAAA,EACjB,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,mBAAmB,OAAO,GAAG;AAAA,IAE/B,MAAM,WAAW,gBAAgB,gBAAgB,YAAY;AAAA,IAC7D,OAAO,WAAW,UAAU;AAAA,EAC9B;AAAA,EAEA,IAAI,YAAY,OAAO,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,SAAS,OAAO,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EAGA,OAAO;AAAA;AAMF,SAAS,WAAW,CAAC,gBAAwB,UAAoB,kBAAmC;AAAA,EACzG,MAAM,MAAM,aAAa,cAAc;AAAA,EAEvC,QAAQ;AAAA,SACD;AAAA,MACH,IAAI,SAAS;AAAA,MACb,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ;AAAA,MACZ,IAAI,aAAa;AAAA,MACjB;AAAA,SACG;AAAA,MACH,IAAI,SAAS;AAAA,MACb,IAAI,QAAQ;AAAA,MACZ,IAAI,aAAa;AAAA,MACjB;AAAA,SACG;AAAA,MACH,IAAI,SAAS;AAAA,MACb,IAAI,aAAa;AAAA,MACjB;AAAA,SACG;AAAA,MACH,IAAI,IAAI,YAAY;AAAA,QAElB,MAAM,QAAQ,IAAI,WAAW,MAAM,0BAA0B;AAAA,QAC7D,IAAI,QAAQ,MAAM,MAAM,IAAI;AAAA,UAC1B,MAAM,SAAS,MAAM;AAAA,UACrB,MAAM,MAAM,OAAO,SAAS,MAAM,IAAI,EAAE;AAAA,UACxC,IAAI,aAAa,GAAG,UAAU,MAAM;AAAA,QACtC,EAAO;AAAA,UACL,IAAI,aAAa,GAAG,IAAI;AAAA;AAAA,MAE5B,EAAO;AAAA,QAEL,IAAI,SAAS;AAAA,QACb,IAAI,aAAa,GAAG,oBAAoB;AAAA;AAAA,MAE1C;AAAA;AAAA,EAGJ,OAAO,cAAc,GAAG;AAAA;AAMnB,SAAS,oBAAoB,CAClC,gBACA,SACA,cACA,YACA,cACa;AAAA,EACb,MAAM,WAAW,aAAa,eAAe,kBAAkB,SAAS,gBAAgB,YAAY,KAAK;AAAA,EAEzG,MAAM,aAAa,gBAAgB,YAAY,gBAAgB,UAAU,UAAU;AAAA,EAEnF,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,mBAAmB,OAAO;AAAA,IACvC,aAAa,YAAY,OAAO;AAAA,IAChC,UAAU,SAAS,OAAO;AAAA,IAC1B;AAAA,EACF;AAAA;AAOK,SAAS,eAAe,CAAC,GAAW,GAAmB;AAAA,EAC5D,MAAM,OAAO,aAAa,CAAC;AAAA,EAC3B,MAAM,OAAO,aAAa,CAAC;AAAA,EAE3B,IAAI,KAAK,UAAU,KAAK,OAAO;AAAA,IAC7B,OAAO,KAAK,QAAQ,KAAK,QAAQ,IAAI;AAAA,EACvC;AAAA,EACA,IAAI,KAAK,UAAU,KAAK,OAAO;AAAA,IAC7B,OAAO,KAAK,QAAQ,KAAK,QAAQ,IAAI;AAAA,EACvC;AAAA,EACA,IAAI,KAAK,UAAU,KAAK,OAAO;AAAA,IAC7B,OAAO,KAAK,QAAQ,KAAK,QAAQ,IAAI;AAAA,EACvC;AAAA,EAGA,IAAI,KAAK,cAAc,CAAC,KAAK,YAAY;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,CAAC,KAAK,cAAc,KAAK,YAAY;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,cAAc,KAAK,YAAY;AAAA,IACtC,OAAO,KAAK,WAAW,cAAc,KAAK,UAAU;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA;;;ACvNT,kBAAS,qBAAO;AAChB,0BAAkB;;;ACDlB,uCAA0B;AAC1B,iBAAS;;;ACDT,mBAAS;AACT,0BAAe;AAMR,IAAM,oBAA6D;AAAA,EACxE,gBAAgB,EAAE,KAAK,SAAS,WAAW,IAAI,IAAI,SAAS;AAAA,EAC5D,cAAc,EAAE,KAAK,OAAO,WAAW,IAAI,IAAI,SAAS;AAAA,EACxD,eAAe,EAAE,KAAK,SAAS,WAAW,IAAI,IAAI,QAAQ;AAAA,EAC1D,aAAa,EAAE,KAAK,OAAO,WAAW,IAAI,IAAI,QAAQ;AAAA,EACtD,eAAe,EAAE,KAAK,SAAS,WAAW,QAAQ,IAAI,QAAQ;AAAA,EAC9D,aAAa,EAAE,KAAK,OAAO,WAAW,QAAQ,IAAI,QAAQ;AAC5D;AAKO,IAAM,gBAAkC,OAAO,KAAK,iBAAiB;AAKrE,SAAS,eAAe,CAAC,OAAwC;AAAA,EACtE,OAAO,SAAS;AAAA;AAMX,SAAS,cAAc,CAAC,OAAiC;AAAA,EAC9D,MAAM,YAAY,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,EACtD,MAAM,SAA2B,CAAC;AAAA,EAElC,WAAW,YAAY,WAAW;AAAA,IAChC,IAAI,CAAC,gBAAgB,QAAQ,GAAG;AAAA,MAC9B,MAAM,IAAI,MAAM,qBAAqB,8BAA8B,cAAc,KAAK,IAAI,GAAG;AAAA,IAC/F;AAAA,IACA,OAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,aAAa,CAAC,SAAiB,MAAc,UAAkC;AAAA,EAC7F,MAAM,UAAU,kBAAkB;AAAA,EAClC,MAAM,aAAa,GAAG,OAAO,QAAQ;AAAA,EACrC,MAAM,cAAc,GAAG,QAAQ;AAAA,EAC/B,OAAO,SAAQ,SAAS,aAAa,UAAU;AAAA;AAM1C,SAAS,cAAc,CAAC,SAAiB,MAAc,UAAkC;AAAA,EAC9F,MAAM,cAAc,GAAG,QAAQ;AAAA,EAC/B,OAAO,SAAQ,SAAS,WAAW;AAAA;AASrC,eAAsB,oBAAoB,CAAC,SAAiB,MAAc,UAA4C;AAAA,EACpH,MAAM,aAAa,cAAc,SAAS,MAAM,QAAQ;AAAA,EACxD,IAAI;AAAA,IACF,MAAM,QAAO,UAAU;AAAA,IACvB,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IAEd,IAAI,iBAAiB,SAAS,UAAU,SAAU,MAAgC,SAAS,UAAU;AAAA,MACnG,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,IAAI,MACR,6BAA6B,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACnG;AAAA;AAAA;AAQJ,eAAsB,mBAAmB,CACvC,SACA,MACA,WAC2B;AAAA,EAC3B,MAAM,UAA4B,CAAC;AAAA,EAEnC,WAAW,YAAY,WAAW;AAAA,IAChC,MAAM,SAAS,MAAM,qBAAqB,SAAS,MAAM,QAAQ;AAAA,IACjE,IAAI,CAAC,QAAQ;AAAA,MACX,QAAQ,KAAK,QAAQ;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,cAAc,CAAC,OAAe,MAAc,UAAkC;AAAA,EAE5F,MAAM,aAAa,MAAM,WAAW,GAAG,IAAI,QAAQ,IAAI;AAAA,EACvD,OAAO,GAAG,cAAc,QAAQ;AAAA;AAM3B,SAAS,oBAAoB,CAAC,QAAgB,OAAe,MAAc,UAAkC;AAAA,EAClH,MAAM,aAAa,MAAM,WAAW,GAAG,IAAI,MAAM,MAAM,CAAC,IAAI;AAAA,EAC5D,OAAO,KAAK,QAAQ,IAAI,cAAc,GAAG,QAAQ,UAAU;AAAA;AAMtD,SAAS,kBAAkB,CAChC,UACA,QAOQ;AAAA,EACR,IAAI,SAAS;AAAA,EAEb,IAAI,OAAO,eAAe,WAAW;AAAA,IACnC,SAAS,OAAO,QAAQ,uBAAuB,OAAO,UAAU;AAAA,EAClE;AAAA,EACA,IAAI,OAAO,YAAY,WAAW;AAAA,IAChC,SAAS,OAAO,QAAQ,oBAAoB,OAAO,OAAO;AAAA,EAC5D;AAAA,EACA,IAAI,OAAO,aAAa,WAAW;AAAA,IACjC,SAAS,OAAO,QAAQ,qBAAqB,OAAO,QAAQ;AAAA,EAC9D;AAAA,EACA,IAAI,OAAO,UAAU,WAAW;AAAA,IAC9B,SAAS,OAAO,QAAQ,kBAAkB,OAAO,KAAK;AAAA,EACxD;AAAA,EACA,IAAI,OAAO,SAAS,WAAW;AAAA,IAC7B,SAAS,OAAO,QAAQ,iBAAiB,OAAO,IAAI;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,oBAAoB,CAAC,UAA8D;AAAA,EACjG,MAAM,QAAQ,SAAS,MAAM,GAAG;AAAA,EAChC,OAAO,EAAE,MAAM,MAAM,MAAM,IAAI,UAAU,MAAM,MAAM,GAAG;AAAA;;;ADrJnD,SAAS,2BAA2B,CAAC,QAAwB,UAA0B,SAAyB;AAAA,EACrH,MAAM,UAAU,kBAAkB;AAAA,EAClC,MAAM,cAAc,eAAe,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,EACtE,MAAM,UAAU,OAAO,WAAW,OAAO;AAAA,EACzC,MAAM,iBAAiB,GAAG,UAAU,QAAQ;AAAA,EAE5C,MAAM,MAAM;AAAA,IACV,KAAK;AAAA,OACF,UAAU,OAAO;AAAA,IACpB;AAAA,IACA,KAAK,CAAC,QAAQ,GAAG;AAAA,IACjB,aAAa,GAAG,OAAO,mBAAmB;AAAA,IAC1C,OAAO,CAAC,KAAK;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,IAAI,CAAC,QAAQ,EAAE;AAAA,IACf,iBAAiB;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA;AAM7B,SAAS,sBAAsB,CAAC,QAAwB,UAA0B,SAAyB;AAAA,EAChH,MAAM,cAAc,eAAe,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,EACtE,MAAM,UAAU,kBAAkB;AAAA,EAClC,MAAM,kBAAkB,GAAG,OAAO,MAAM,WAAW,GAAG,IAAI,OAAO,QAAQ,IAAI,OAAO,WAAW,OAAO;AAAA,EAEtG,OAAO,KAAK;AAAA;AAAA,iCAEmB,OAAO,WAAW,QAAQ,MAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAO3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOZ;AAAA;AAAA;AAOF,eAAsB,uBAAuB,CAC3C,QACA,UACA,SACA,SAAS,OACqB;AAAA,EAC9B,MAAM,cAAc,eAAe,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,EACtE,MAAM,aAAa,qBAAqB,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,EAC1F,MAAM,UAAU,OAAO,WAAW,OAAO;AAAA,EACzC,MAAM,UAAU,kBAAkB;AAAA,EAElC,MAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IAEF,MAAM,eAAe,MAAM,qBAAqB,OAAO,SAAS,OAAO,MAAM,QAAQ;AAAA,IACrF,IAAI,CAAC,cAAc;AAAA,MACjB,MAAM,eAAe,cAAc,OAAO,SAAS,OAAO,MAAM,QAAQ;AAAA,MACxE,OAAO,KAAK,YAAY,OAAO,qBAAqB,gBAAgB,SAAS,MAAe;AAAA,IAC9F;AAAA,IAEA,IAAI,QAAQ;AAAA,MACV,OAAO,KAAK,YAAY,SAAS,KAAc;AAAA,IACjD;AAAA,IAGA,MAAM,SAAS,MAAK,YAAY,KAAK;AAAA,IACrC,MAAM,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,IAGvC,MAAM,cAAc,4BAA4B,QAAQ,UAAU,OAAO;AAAA,IACzE,MAAM,WAAU,MAAK,YAAY,cAAc,GAAG,WAAW;AAAA,IAG7D,MAAM,SAAS,uBAAuB,QAAQ,UAAU,OAAO;AAAA,IAC/D,MAAM,WAAU,MAAK,YAAY,WAAW,GAAG,MAAM;AAAA,IAGrD,MAAM,mBAAmB,cAAc,OAAO,SAAS,OAAO,MAAM,QAAQ;AAAA,IAC5E,MAAM,iBAAiB,GAAG,UAAU,QAAQ;AAAA,IAC5C,MAAM,mBAAmB,MAAK,QAAQ,cAAc;AAAA,IACpD,MAAM,SAAS,kBAAkB,gBAAgB;AAAA,IAEjD,OAAO,KAAK,YAAY,SAAS,KAAc;AAAA,IAC/C,OAAO,OAAO;AAAA,IACd,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC1E,QAAQ,MAAM,gCAA+B,mBAAmB,aAAa,cAAc;AAAA,IAC3F,OAAO,KAAK,YAAY,OAAO,sBAAsB,gBAAgB,gBAAgB,SAAS,MAAe;AAAA;AAAA;AAOjH,eAAsB,2BAA2B,CAC/C,QACA,SACA,WACA,SAAS,OACuB;AAAA,EAChC,MAAM,kBAAkB,aAAa,OAAO;AAAA,EAC5C,MAAM,UAAiC,CAAC;AAAA,EAExC,WAAW,YAAY,iBAAiB;AAAA,IACtC,MAAM,SAAS,MAAM,wBAAwB,QAAQ,UAAU,SAAS,MAAM;AAAA,IAC9E,QAAQ,KAAK,MAAM;AAAA,EACrB;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,qBAAqB,CAAC,QAAwB,SAAiB,WAAmC;AAAA,EAChH,QAAQ,IAAI;AAAA,kCAA0B;AAAA,EACtC,QAAQ,IAAI,YAAY,OAAO,OAAO;AAAA,EACtC,QAAQ,IAAI,WAAW,OAAO,MAAM;AAAA,EACpC,QAAQ,IAAI,cAAc,SAAS;AAAA,EACnC,QAAQ,IAAI,gBAAgB,UAAU,KAAK,IAAI,GAAG;AAAA,EAClD,QAAQ,IAAI;AAAA,mCAA2B;AAAA,EAEvC,WAAW,YAAY,WAAW;AAAA,IAChC,MAAM,aAAa,qBAAqB,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,IAC1F,QAAQ,IAAI,KAAK,aAAa;AAAA,EAChC;AAAA;;;AE7JF,iBAAS;AACT,sBAAS;AAIT,IAAM,aAAY,WAAU,KAAI;AAKhC,SAAS,MAAK,CAAC,IAA2B;AAAA,EACxC,OAAO,IAAI,QAAQ,CAAC,aAAY,WAAW,UAAS,EAAE,CAAC;AAAA;AAoBlD,SAAS,eAAc,CAAC,SAAiB,eAAe,MAAM,WAAW,OAAe;AAAA,EAC7F,MAAM,QAAQ,eAAe,KAAK;AAAA,EAClC,OAAO,KAAK,IAAI,OAAO,QAAQ;AAAA;AAoB1B,SAAS,iBAAgB,CAAC,OAAyB;AAAA,EACxD,IAAI,EAAE,iBAAiB,QAAQ;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,MAAM,QAAQ,YAAY;AAAA,EAG1C,IAAI,QAAQ,SAAS,SAAS,KAAK,QAAQ,SAAS,SAAS,KAAK,QAAQ,SAAS,YAAY,GAAG;AAAA,IAChG,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,MAAM,GAAG;AAAA,IAClF,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,QAAQ,SAAS,UAAU,KAAK,QAAQ,SAAS,SAAS,GAAG;AAAA,IAC/D,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAMT,eAAsB,sBAAsB,CAC1C,QACA,UACA,SACA,SAAS,OACqB;AAAA,EAC9B,MAAM,cAAc,eAAe,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,EACtE,MAAM,aAAa,qBAAqB,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,EAE1F,MAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,EACF;AAAA,EAGA,MAAM,iBAAiB,mBAAmB,OAAO,gBAAgB;AAAA,IAC/D,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA,OAAO,OAAO;AAAA,IACd;AAAA,EACF,CAAC;AAAA,EAED,IAAI,QAAQ;AAAA,IACV,OAAO,KAAK,YAAY,UAAU,GAAG,SAAS,KAAc;AAAA,EAC9D;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI,WAAW;AAAA,EAEf,SAAS,UAAU,EAAG,UAAU,OAAO,eAAe,WAAW;AAAA,IAC/D,WAAW,UAAU;AAAA,IAErB,IAAI;AAAA,MACF,MAAM,WAAU,gBAAgB;AAAA,QAC9B,KAAK;AAAA,QACL,KAAK,QAAQ;AAAA,MACf,CAAC;AAAA,MAED,OAAO,KAAK,YAAY,UAAU,SAAS,KAAc;AAAA,MACzD,OAAO,OAAO;AAAA,MACd,YAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAEpE,MAAM,WAAW,kBAAiB,KAAK;AAAA,MAGvC,IAAI,YAAY,OAAO,gBAAgB,KAAK,CAAC,UAAU;AAAA,QACrD;AAAA,MACF;AAAA,MAGA,MAAM,QAAQ,gBAAe,OAAO;AAAA,MACpC,QAAQ,KAAK,0BAAyB,wBAAwB,UAAU,KAAK,OAAO,gBAAgB;AAAA,MACpG,QAAQ,KAAK,MAAM,UAAU,SAAS;AAAA,MACtC,QAAQ,KAAK,kBAAkB,YAAY;AAAA,MAE3C,MAAM,OAAM,KAAK;AAAA;AAAA,EAErB;AAAA,EAEA,OAAO;AAAA,OACF;AAAA,IACH;AAAA,IACA,OAAO,WAAW,WAAW;AAAA,IAC7B,SAAS;AAAA,EACX;AAAA;AAMF,eAAsB,0BAA0B,CAC9C,QACA,SACA,mBACA,SAAS,OACT,UAAU,OACsB;AAAA,EAChC,MAAM,UAAiC,CAAC;AAAA,EAGxC,MAAM,qBAAqB,kBAAkB,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA,EAEpE,IAAI,mBAAmB,WAAW,GAAG;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,YAAY;AAAA,EAElB,SAAS,IAAI,EAAG,IAAI,mBAAmB,QAAQ,KAAK,WAAW;AAAA,IAC7D,MAAM,QAAQ,mBAAmB,MAAM,GAAG,IAAI,SAAS;AAAA,IAEvD,MAAM,gBAAgB,MAAM,IAAI,OAAO,QAAQ;AAAA,MAC7C,IAAI,SAAS;AAAA,QACX,QAAQ,IAAI,2BAAgB,IAAI,gBAAgB;AAAA,MAClD;AAAA,MAEA,MAAM,SAAS,MAAM,uBAAuB,QAAQ,IAAI,UAAU,SAAS,MAAM;AAAA,MAEjF,IAAI,OAAO,SAAS;AAAA,QAClB,IAAI,SAAS;AAAA,UACX,QAAQ,IAAI,eAAc,IAAI,aAAa;AAAA,QAC7C;AAAA,MACF,EAAO;AAAA,QACL,QAAQ,MAAM,uBAAsB,IAAI,gBAAgB,OAAO,OAAO;AAAA;AAAA,MAGxE,OAAO;AAAA,KACR;AAAA,IAED,MAAM,eAAe,MAAM,QAAQ,IAAI,aAAa;AAAA,IACpD,QAAQ,KAAK,GAAG,YAAY;AAAA,IAG5B,IAAI,IAAI,YAAY,mBAAmB,QAAQ;AAAA,MAC7C,MAAM,OAAM,GAAG;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,kBAAkB,CAAC,QAAwB,mBAAgD;AAAA,EACzG,MAAM,qBAAqB,kBAAkB,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA,EAEpE,QAAQ,IAAI;AAAA,kCAA0B;AAAA,EACtC,WAAW,OAAO,oBAAoB;AAAA,IACpC,QAAQ,IAAI,KAAK,IAAI,gBAAgB,IAAI,aAAa;AAAA,EACxD;AAAA,EAEA,QAAQ,IAAI;AAAA,gCAAwB,OAAO,gBAAgB;AAAA;AAMtD,SAAS,mBAAmB,CAAC,SAAgC,SAA+B;AAAA,EACjG,MAAM,aAAa,QAAQ,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA,EAClD,MAAM,SAAS,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAAA,EAE/C,QAAQ,IAAI;AAAA,8BAAsB;AAAA,EAClC,QAAQ,IAAI,YAAY,QAAQ,QAAQ;AAAA,EACxC,QAAQ,IAAI,iBAAiB,WAAW,QAAQ;AAAA,EAChD,QAAQ,IAAI,aAAa,OAAO,QAAQ;AAAA,EAExC,IAAI,OAAO,SAAS,GAAG;AAAA,IACrB,QAAQ,IAAI;AAAA,mBAAqB;AAAA,IACjC,WAAW,UAAU,QAAQ;AAAA,MAC3B,QAAQ,IAAI,KAAK,OAAO,gBAAgB,OAAO,OAAO;AAAA,IACxD;AAAA,EACF;AAAA;;;AC3OF,qBAAS,wBAAU;AACnB,oBAAS;AAOF,SAAS,qBAAqB,CAAC,QAAgC;AAAA,EACpE,MAAM,UAAU,OAAO,WAAW,OAAO;AAAA,EACzC,MAAM,QAAQ,OAAO,MAAM,WAAW,GAAG,IAAI,OAAO,QAAQ,IAAI,OAAO;AAAA,EAGvE,MAAM,kBAAkB,OAAO,UAAU,IAAI,CAAC,aAAa;AAAA,IACzD,MAAM,cAAc,eAAe,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,IACtE,MAAM,QAAQ,SAAS,MAAM,GAAG;AAAA,IAChC,OAAO,MAAM,MAAM,MAAM,MAAM,SAAS;AAAA,GACzC;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQP,gBAAgB,KAAK;AAAA,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iDAkBqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+DAUc,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BxE,SAAS,4BAA4B,CAC1C,QACA,SACA,WACsB;AAAA,EACtB,MAAM,kBAAkB,aAAa,OAAO;AAAA,EAC5C,MAAM,OAA6B,CAAC;AAAA,EAEpC,WAAW,YAAY,iBAAiB;AAAA,IACtC,MAAM,cAAc,eAAe,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,IACtE,KAAK,eAAe;AAAA,EACtB;AAAA,EAEA,OAAO;AAAA;AAcF,SAAS,0BAA0B,CACxC,QACA,SACA,WACoB;AAAA,EACpB,MAAM,UAAU,OAAO,WAAW,OAAO;AAAA,EAEzC,OAAO;AAAA,IACL,KAAK;AAAA,OACF,UAAU,OAAO;AAAA,IACpB;AAAA,IACA,sBAAsB,6BAA6B,QAAQ,SAAS,SAAS;AAAA,EAC/E;AAAA;AAMF,eAAsB,qBAAqB,CACzC,aACA,QACA,SACA,WACA,SAAS,OACM;AAAA,EACf,MAAM,WAAW,SAAQ,WAAW;AAAA,EACpC,MAAM,UAAU,MAAM,UAAS,UAAU,OAAO;AAAA,EAEhD,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,KAAK,MAAM,OAAO;AAAA,IACxB,OAAO,YAAY;AAAA,IACnB,MAAM,IAAI,MACR,mBAAmB,aAAa,sBAAsB,QAAQ,WAAW,UAAU,gBACrF;AAAA;AAAA,EAGF,MAAM,UAAU,2BAA2B,QAAQ,SAAS,SAAS;AAAA,EAGrE,IAAI,uBAAuB;AAAA,OACrB,IAAI,wBAAwB,CAAC;AAAA,OAC9B,QAAQ;AAAA,EACb;AAAA,EAGA,IAAI,QAAQ,KAAK;AAAA,IACf,IAAI,MAAM;AAAA,SACJ,IAAI,OAAO,CAAC;AAAA,SACb,QAAQ;AAAA,IACb;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAGA,MAAM,WAAU,UAAU,GAAG,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,CAAK;AAAA;AAMxD,SAAS,6BAA6B,CAC3C,QACA,SACA,WACM;AAAA,EACN,MAAM,UAAU,2BAA2B,QAAQ,SAAS,SAAS;AAAA,EAErE,QAAQ,IAAI;AAAA,mCAA2B;AAAA,EACvC,QAAQ,IAAI,yBAAyB;AAAA,EACrC,YAAY,MAAM,QAAQ,OAAO,QAAQ,QAAQ,oBAAoB,GAAG;AAAA,IACtE,QAAQ,IAAI,QAAQ,WAAW,MAAM;AAAA,EACvC;AAAA,EAEA,IAAI,QAAQ,KAAK;AAAA,IACf,QAAQ,IAAI,QAAQ;AAAA,IACpB,YAAY,MAAM,SAAS,OAAO,QAAQ,QAAQ,GAAG,GAAG;AAAA,MACtD,QAAQ,IAAI,QAAQ,WAAW,OAAO;AAAA,IACxC;AAAA,EACF;AAAA;;;AJjJF,eAAsB,sBAAsB,CAAC,UAA4B,CAAC,GAAsC;AAAA,EAC9G,MAAM,SAAmC;AAAA,IACvC,QAAQ,CAAC;AAAA,IACT,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU,CAAC;AAAA,EACb;AAAA,EAEA,IAAI;AAAA,IAEF,MAAM,SAAS,MAAM,WAAW,QAAQ,MAAM;AAAA,IAE9C,IAAI,CAAC,OAAO,UAAU,SAAS;AAAA,MAC7B,OAAO,OAAO,KAAK,8CAA8C;AAAA,MACjE,OAAO;AAAA,IACT;AAAA,IAEA,uBAAuB,OAAO,QAAQ;AAAA,IAEtC,MAAM,iBAAiB,OAAO;AAAA,IAG9B,MAAM,UAAU,QAAQ,WAAY,MAAM,kBAAkB,GAAG;AAAA,IAC/D,OAAO,UAAU;AAAA,IAGjB,MAAM,YAAY,QAAQ,aAAa,eAAe;AAAA,IAGtD,MAAM,kBAAkB,MAAM,oBAAoB,eAAe,SAAS,eAAe,MAAM,SAAS;AAAA,IAExG,IAAI,gBAAgB,SAAS,GAAG;AAAA,MAC9B,WAAW,YAAY,iBAAiB;AAAA,QACtC,QAAQ,KAAK,sCAAqC,UAAU;AAAA,QAC5D,OAAO,SAAS,KAAK,kCAAkC,UAAU;AAAA,MACnE;AAAA,MAEA,IAAI,gBAAgB,WAAW,UAAU,QAAQ;AAAA,QAC/C,OAAO,OAAO,KAAK,oCAAoC;AAAA,QACvD,OAAO;AAAA,MACT;AAAA,MAGA,MAAM,iBAAiB,UAAU,SAAS,gBAAgB;AAAA,MAC1D,QAAQ,KAAK;AAAA,WAAa,qBAAqB,UAAU,oCAAoC;AAAA,MAC7F,QAAQ,KAAK,eAAe,gBAAgB,KAAK,IAAI,GAAG;AAAA,MACxD,QAAQ,KAAK;AAAA,CAA4E;AAAA,IAC3F;AAAA,IAGA,MAAM,qBAAqB,UAAU,OAAO,CAAC,MAAM,CAAC,gBAAgB,SAAS,CAAC,CAAC;AAAA,IAE/E,IAAI,QAAQ,QAAQ;AAAA,MAClB,QAAQ,IAAI;AAAA;AAAA,CAAoB;AAAA,MAChC,sBAAsB,gBAAgB,SAAS,kBAAkB;AAAA,MACjE,8BAA8B,gBAAgB,SAAS,kBAAkB;AAAA,MAGzE,OAAO,WAAW,mBAAmB,IACnC,CAAC,cAAmC;AAAA,QAClC,YAAY;AAAA,QACZ,aAAa;AAAA,QACb;AAAA,QACA,SAAS;AAAA,MACX,EACF;AAAA,MAEA,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAGA,QAAQ,IAAI;AAAA;AAAA,CAAqC;AAAA,IACjD,OAAO,WAAW,MAAM,4BAA4B,gBAAgB,SAAS,oBAAoB,KAAK;AAAA,IAEtG,MAAM,qBAAqB,OAAO,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA,IAClE,MAAM,iBAAiB,OAAO,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAAA,IAE/D,QAAQ,IAAI,eAAc,mBAAmB,iBAAiB;AAAA,IAE9D,IAAI,eAAe,SAAS,GAAG;AAAA,MAC7B,WAAW,OAAO,gBAAgB;AAAA,QAChC,OAAO,SAAS,KAAK,kCAAkC,IAAI,aAAa,IAAI,OAAO;AAAA,QACnF,QAAQ,KAAK,eAAc,IAAI,cAAc,IAAI,OAAO;AAAA,MAC1D;AAAA,IACF;AAAA,IAGA,IAAI,CAAC,QAAQ,iBAAiB;AAAA,MAC5B,MAAM,gBAAgB,sBAAsB,cAAc;AAAA,MAC1D,MAAM,SAAS,MAAK,QAAQ,eAAe,WAAW,GAAG,KAAK;AAAA,MAC9D,MAAM,UAAU,eAAe,WAAW,eAAe;AAAA,MAEzD,MAAM,OAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,MACvC,MAAM,WAAU,MAAK,QAAQ,GAAG,YAAY,GAAG,aAAa;AAAA,MAE5D,QAAQ,IAAI,4BAA2B,YAAY;AAAA,IACrD;AAAA,IAEA,OAAO,UAAU,mBAAmB,SAAS;AAAA,IAC7C,OAAO,OAAO;AAAA,IACd,OAAO,OAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IACzE,QAAQ,MAAM;AAAA,qBAAuB;AAAA,IACrC,QAAQ,MAAM,KAAK;AAAA;AAAA,EAGrB,OAAO;AAAA;AA0CT,eAAsB,eAAe,CAAC,UAA4B,CAAC,GAAsC;AAAA,EACvG,MAAM,SAAmC;AAAA,IACvC,QAAQ,CAAC;AAAA,IACT,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU,CAAC;AAAA,EACb;AAAA,EAEA,IAAI;AAAA,IAEF,MAAM,SAAS,MAAM,WAAW,QAAQ,MAAM;AAAA,IAE9C,IAAI,CAAC,OAAO,UAAU,SAAS;AAAA,MAC7B,OAAO,OAAO,KAAK,8CAA8C;AAAA,MACjE,OAAO;AAAA,IACT;AAAA,IAEA,uBAAuB,OAAO,QAAQ;AAAA,IAEtC,MAAM,iBAAiB,OAAO;AAAA,IAG9B,MAAM,UAAU,QAAQ,WAAY,MAAM,kBAAkB,GAAG;AAAA,IAC/D,OAAO,UAAU;AAAA,IAGjB,MAAM,YAAY,QAAQ,aAAa,eAAe;AAAA,IAGtD,MAAM,kBAAkB,MAAM,oBAAoB,eAAe,SAAS,eAAe,MAAM,SAAS;AAAA,IAExG,IAAI,gBAAgB,SAAS,GAAG;AAAA,MAC9B,WAAW,YAAY,iBAAiB;AAAA,QACtC,QAAQ,KAAK,sCAAqC,UAAU;AAAA,QAC5D,OAAO,SAAS,KAAK,kCAAkC,UAAU;AAAA,MACnE;AAAA,MAEA,IAAI,gBAAgB,WAAW,UAAU,QAAQ;AAAA,QAC/C,OAAO,OAAO,KAAK,oCAAoC;AAAA,QACvD,OAAO;AAAA,MACT;AAAA,MAGA,MAAM,iBAAiB,UAAU,SAAS,gBAAgB;AAAA,MAC1D,QAAQ,KAAK;AAAA,WAAa,qBAAqB,UAAU,oCAAoC;AAAA,MAC7F,QAAQ,KAAK,eAAe,gBAAgB,KAAK,IAAI,GAAG;AAAA,MACxD,QAAQ,KAAK;AAAA,CAA4E;AAAA,IAC3F;AAAA,IAGA,MAAM,qBAAqB,UAAU,OAAO,CAAC,MAAM,CAAC,gBAAgB,SAAS,CAAC,CAAC;AAAA,IAE/E,IAAI,QAAQ,QAAQ;AAAA,MAClB,QAAQ,IAAI;AAAA;AAAA,CAAoB;AAAA,MAChC,sBAAsB,gBAAgB,SAAS,kBAAkB;AAAA,MAGjE,MAAM,iBAAwC,mBAAmB,IAAI,CAAC,cAAc;AAAA,QAClF,YAAY;AAAA,QACZ,aAAa;AAAA,QACb;AAAA,QACA,SAAS;AAAA,MACX,EAAE;AAAA,MAEF,mBAAmB,gBAAgB,cAAc;AAAA,MACjD,8BAA8B,gBAAgB,SAAS,kBAAkB;AAAA,MAEzE,OAAO,WAAW;AAAA,MAClB,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAGA,QAAQ,IAAI;AAAA;AAAA,CAAqC;AAAA,IACjD,OAAO,WAAW,MAAM,4BAA4B,gBAAgB,SAAS,oBAAoB,KAAK;AAAA,IAEtG,MAAM,qBAAqB,OAAO,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA,IAClE,MAAM,iBAAiB,OAAO,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAAA,IAE/D,QAAQ,IAAI,eAAc,mBAAmB,iBAAiB;AAAA,IAE9D,IAAI,eAAe,SAAS,GAAG;AAAA,MAC7B,WAAW,OAAO,gBAAgB;AAAA,QAChC,OAAO,SAAS,KAAK,kCAAkC,IAAI,aAAa,IAAI,OAAO;AAAA,QACnF,QAAQ,KAAK,eAAc,IAAI,cAAc,IAAI,OAAO;AAAA,MAC1D;AAAA,MAEA,IAAI,CAAC,eAAe,mBAAmB,eAAe,SAAS,GAAG;AAAA,QAChE,OAAO,OAAO,KAAK,kCAAkC;AAAA,QACrD,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,IAAI,mBAAmB,WAAW,GAAG;AAAA,MACnC,OAAO,OAAO,KAAK,oCAAoC;AAAA,MACvD,OAAO;AAAA,IACT;AAAA,IAGA,IAAI,QAAQ,cAAc;AAAA,MAExB,IAAI,CAAC,QAAQ,iBAAiB;AAAA,QAC5B,MAAM,gBAAgB,sBAAsB,cAAc;AAAA,QAC1D,MAAM,SAAS,MAAK,QAAQ,eAAe,WAAW,GAAG,KAAK;AAAA,QAC9D,MAAM,UAAU,eAAe,WAAW,eAAe;AAAA,QAEzD,MAAM,OAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,QACvC,MAAM,WAAU,MAAK,QAAQ,GAAG,YAAY,GAAG,aAAa;AAAA,QAE5D,QAAQ,IAAI,4BAA2B,YAAY;AAAA,MACrD;AAAA,MAEA,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAGA,QAAQ,IAAI;AAAA;AAAA,CAAuC;AAAA,IACnD,OAAO,YAAY,MAAM,2BACvB,gBACA,SACA,OAAO,UACP,OACA,QAAQ,OACV;AAAA,IAEA,MAAM,sBAAsB,OAAO,UAAU,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA,IACpE,MAAM,kBAAkB,OAAO,UAAU,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAAA,IAEjE,oBAAoB,OAAO,WAAW,cAAc;AAAA,IAEpD,IAAI,gBAAgB,SAAS,GAAG;AAAA,MAC9B,WAAW,OAAO,iBAAiB;AAAA,QACjC,OAAO,SAAS,KAAK,qBAAqB,IAAI,gBAAgB,IAAI,OAAO;AAAA,MAC3E;AAAA,MAEA,IAAI,CAAC,eAAe,iBAAiB;AAAA,QACnC,OAAO,OAAO,KAAK,iCAAiC;AAAA,QACpD,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAGA,IAAI,CAAC,QAAQ,iBAAiB;AAAA,MAC5B,QAAQ,IAAI;AAAA;AAAA,CAAqC;AAAA,MAGjD,MAAM,gBAAgB,sBAAsB,cAAc;AAAA,MAC1D,MAAM,SAAS,MAAK,QAAQ,eAAe,WAAW,GAAG,KAAK;AAAA,MAC9D,MAAM,UAAU,eAAe,WAAW,eAAe;AAAA,MAEzD,MAAM,OAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,MACvC,MAAM,WAAU,MAAK,QAAQ,GAAG,YAAY,GAAG,aAAa;AAAA,MAG5D,MAAM,qBAAqB,oBAAoB,IAAI,CAAC,MAAM,EAAE,QAAQ;AAAA,MACpE,MAAM,sBAAsB,eAAe,aAAa,gBAAgB,SAAS,oBAAoB,KAAK;AAAA,MAE1G,QAAQ,IAAI,aAAY,eAAe,aAAa;AAAA,MACpD,QAAQ,IAAI,4BAA2B,YAAY;AAAA,IACrD;AAAA,IAEA,OAAO,UAAU,oBAAoB,SAAS;AAAA,IAG9C,IAAI,OAAO,SAAS;AAAA,MAClB,QAAQ,IAAI;AAAA;AAAA,CAAkD;AAAA,IAChE;AAAA,IACA,OAAO,OAAO;AAAA,IACd,OAAO,OAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IACzE,QAAQ,MAAM;AAAA,8BAAgC;AAAA,IAC9C,QAAQ,MAAM,KAAK;AAAA;AAAA,EAGrB,OAAO;AAAA;;;AtBrVT,SAAS,eAAe,CACtB,KACA,gBACA,aACA,KACA,SACA,gBACM;AAAA,EACN,QAAQ,IAAI;AAAA;AAAA,CAA8C;AAAA,EAC1D,QAAQ,IAAI,yBAAc,IAAI,aAAa;AAAA,EAC3C,QAAQ,IAAI,yBAAc,oBAAoB,YAAY,YAAY;AAAA,EACtE,QAAQ,IAAI,uBAAY,KAAK;AAAA,EAC7B,QAAQ,IAAI,yBAAc,QAAQ,QAAQ;AAAA,EAC1C,QAAQ,IAAI;AAAA;AAAA,CAAkB;AAAA,EAC9B,QAAQ,IAAI,cAAc;AAAA;AAM5B,SAAS,gBAAgB,CACvB,KACA,gBACA,YACA,KACA,YACM;AAAA,EACN,QAAQ,IAAI;AAAA;AAAA,CAAoC;AAAA,EAChD,QAAQ,IAAI,yBAAc,IAAI,aAAa;AAAA,EAC3C,QAAQ,IAAI,yBAAc,oBAAoB,YAAY;AAAA,EAC1D,QAAQ,IAAI,uBAAY,KAAK;AAAA,EAC7B,IAAI,YAAY;AAAA,IACd,QAAQ,IAAI,yBAAc,YAAY;AAAA,EACxC;AAAA,EACA,QAAQ,IAAI,EAAE;AAAA;AAMhB,eAAe,kBAAkB,CAAC,KAAoB,YAAoB,gBAAyC;AAAA,EACjH,MAAM,qBAAqB,IAAI,MAAM,UAAU;AAAA,EAC/C,MAAM,gBAAgB,SAAQ,IAAI,MAAM,IAAI,SAAS;AAAA,EACrD,MAAM,oBAAoB,eAAe,cAAc;AAAA,EAEvD,OAAO;AAAA;AAMT,eAAe,cAAc,CAC3B,KACA,SACA,UACA,YAC+B;AAAA,EAC/B,MAAM,aAAa,MAAM,mBAAmB,IAAI,WAAW,IAAI,IAAI;AAAA,EAEnE,IAAI,WAAW,WAAW,KAAK,CAAC,QAAQ,SAAS;AAAA,IAC/C,MAAM,IAAI,MAAM,2CAA2C,IAAI,aAAa;AAAA,EAC9E;AAAA,EAEA,MAAM,UAAU,aAAa,UAAU;AAAA,EACvC,MAAM,kBAAkB,wBAAwB,SAAS,IAAI,MAAM,UAAU;AAAA,EAE7E,IAAI,gBAAgB,WAAW,KAAK,CAAC,QAAQ,SAAS;AAAA,IACpD,SAAS,KAAK,iEAAiE;AAAA,EACjF;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,oBAAoB,CAAC,SAAqB,QAAqD;AAAA,EACtG,IAAI,OAAO,QAAQ,eAAe,UAAU;AAAA,IAC1C,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,QAAQ,YAAY;AAAA,IACtB,OAAO,OAAO,WAAW;AAAA,EAC3B;AAAA,EACA;AAAA;AAMF,eAAe,qBAAqB,CAClC,SACA,UACA,SACA,QACA,KACA,aACA,KACA,SAC6B;AAAA,EAE7B,IAAI,QAAQ,aAAa,CAAC,OAAO,SAAS,SAAS;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,MAAM,iBAAiB,qBAAqB,UAAU,OAAO;AAAA,EAG7D,IAAI,OAAO,SAAS,eAAe;AAAA,IACjC,MAAM,SAAS,MAAM,eAAe,cAAc,GAAG;AAAA,IACrD,IAAI,QAAQ;AAAA,MACV,QAAQ,IAAI;AAAA,YAAc;AAAA,CAAyC;AAAA,MACnE,OAAO,GAAG,SAAS,oBAAoB;AAAA,IACzC;AAAA,EACF;AAAA,EAGA,MAAM,eAAe,qBAAqB,SAAS,OAAO,WAAW,SAAS,KAAK,IAAI,IAAI;AAAA,EAG3F,OAAO,MAAM,eAAe,cAAc,KAAK,GAAG,IAAI,gBAAgB,YAAY,cAAc,cAAc;AAAA,IAC5G,YAAY,CAAC,CAAC,QAAQ;AAAA,EACxB,CAAC;AAAA;AAMH,eAAe,oBAAoB,CACjC,QACA,SACA,KACA,YACA,KACA,eACe;AAAA,EACf,IAAI,OAAO,IAAI,iBAAiB,CAAC,QAAQ,UAAU;AAAA,IAEjD,IAAI,OAAO,IAAI,cAAc;AAAA,MAC3B,MAAM,cAAc,MAAM,oBAAoB,OAAO,IAAI,YAAY;AAAA,MACrE,IAAI,CAAC,aAAa;AAAA,QAChB,QAAQ,KAAK,iEAAgE;AAAA,MAC/E;AAAA,IACF;AAAA,IAEA,MAAM,gBAAgB,OAAO,IAAI,cAAc,QAAQ,eAAe,IAAI,IAAI,EAAE,QAAQ,eAAe,UAAU;AAAA,IAEjH,MAAM,aAAa,eAAe,CAAC,SAAQ,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC;AAAA,EACtF;AAAA,EAEA,IAAI,CAAC,QAAQ,OAAO;AAAA,IAClB,MAAM,aAAa,OAAO,IAAI,WAAW,QAAQ,eAAe,IAAI,IAAI,EAAE,QAAQ,eAAe,UAAU;AAAA,IAE3G,MAAM,UAAU,KAAK,UAAU;AAAA,EACjC;AAAA,EAEA,IAAI,OAAO,IAAI,QAAQ,CAAC,QAAQ,QAAQ;AAAA,IACtC,MAAM,YAAY,QAAQ,QAAQ,YAAY,GAAG;AAAA,EACnD;AAAA;AAMF,eAAsB,OAAO,CAAC,aAAsB,UAAsB,CAAC,GAA2B;AAAA,EACpG,MAAM,SAAwB;AAAA,IAC5B,QAAQ,CAAC;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,aAAa,eAAe;AAAA,IAC5B,SAAS;AAAA,IACT,UAAU,CAAC;AAAA,EACb;AAAA,EAEA,IAAI;AAAA,IAEF,MAAM,SAAS,MAAM,WAAW,QAAQ,MAAM;AAAA,IAC9C,eAAe,MAAM;AAAA,IAGrB,MAAM,WAAW,MAAM,YAAY;AAAA,IAGnC,MAAM,MAAM,MAAM,eAAe,QAAQ,WAAW;AAAA,IAEpD,OAAO,cAAc,IAAI;AAAA,IAGzB,IAAI,EAAE,QAAQ,UAAW,MAAM,mBAAmB,IAAK;AAAA,MACrD,MAAM,IAAI,MAAM,iEAAiE;AAAA,IACnF;AAAA,IAGA,MAAM,iBAAiB,MAAM,kBAAkB,IAAI,IAAI;AAAA,IACvD,OAAO,aAAa;AAAA,IAGpB,MAAM,UAAU,MAAM,eAAe,KAAK,SAAS,OAAO,UAAU,OAAO,SAAS,OAAO;AAAA,IAG3F,MAAM,gBAAgB,qBAAqB,SAAS,MAAM;AAAA,IAC1D,MAAM,cAAc,qBAClB,gBACA,SACA,QAAQ,SACR,eACA,OAAO,WAAW,YACpB;AAAA,IAEA,OAAO,aAAa,YAAY;AAAA,IAGhC,MAAM,MAAM,GAAG,IAAI,YAAY,YAAY;AAAA,IAC3C,OAAO,MAAM;AAAA,IAEb,IAAI,MAAM,UAAU,GAAG,GAAG;AAAA,MACxB,MAAM,IAAI,MAAM,OAAO,oBAAoB;AAAA,IAC7C;AAAA,IAGA,MAAM,iBAAiB,kBACrB;AAAA,MACE;AAAA,MACA,MAAM,IAAI;AAAA,MACV,SAAS,SAAS;AAAA,MAClB,SAAS,YAAY;AAAA,IACvB,GACA,OAAO,WACP,IAAI,IACN;AAAA,IAEA,IAAI,QAAQ,QAAQ;AAAA,MAClB,gBAAgB,KAAK,gBAAgB,aAAa,KAAK,SAAS,cAAc;AAAA,MAC9E,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,UAAU,oBAAoB,OAAO,KAAK;AAAA,IAGhD,MAAM,gBAAgB,MAAM,mBAAmB,KAAK,YAAY,YAAY,cAAc;AAAA,IAG1F,MAAM,qBAAqB,QAAQ,SAAS,KAAK,YAAY,YAAY,KAAK,aAAa;AAAA,IAG3F,IAAI;AAAA,MACF,OAAO,aAAa,MAAM,sBACxB,SACA,UACA,SACA,QACA,KACA,aACA,KACA,OACF;AAAA,MACA,OAAO,OAAO;AAAA,MACd,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAE1E,IAAI,OAAO,SAAS,aAAa;AAAA,QAE/B,MAAM,IAAI,MAAM,qCAAqC,cAAc;AAAA,MACrE;AAAA,MAGA,OAAO,SAAS,KAAK,sCAAsC,cAAc;AAAA,MACzE,QAAQ,KAAK;AAAA,eAAiB;AAAA,CAAgB;AAAA;AAAA,IAGhD,OAAO,UAAU;AAAA,IAGjB,iBAAiB,KAAK,gBAAgB,YAAY,YAAY,KAAK,OAAO,UAAU;AAAA,IAEpF,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,OAAO,UAAU;AAAA,IACjB,OAAO,OAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IAEzE,QAAQ,MAAM;AAAA;AAAA,CAAsB;AAAA,IACpC,QAAQ,MAAM,KAAK;AAAA,IACnB,QAAQ,MAAM,EAAE;AAAA,IAEhB,OAAO;AAAA;AAAA;AAOX,eAAe,cAAc,CAAC,QAAiC,aAA8C;AAAA,EAC3G,IAAI,CAAC,OAAO,SAAS,SAAS;AAAA,IAE5B,MAAM,UAAU,MAAM,eAAe,GAAG;AAAA,IAExC,OAAO;AAAA,MACL,WAAW;AAAA,MACX,MAAM;AAAA,MACN,aAAa,QAAQ;AAAA,MACrB,MAAM;AAAA,MACN,WAAW,OAAO,WAAW;AAAA,IAC/B;AAAA,EACF;AAAA,EAGA,IAAI,CAAC,aAAa;AAAA,IAChB,MAAM,IAAI,MAAM,iEAAiE;AAAA,EACnF;AAAA,EAEA,MAAM,MAAM,OAAO,SAAS,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW;AAAA,EAEvE,IAAI,CAAC,KAAK;AAAA,IACR,MAAM,IAAI,MACR,YAAY,yDAAyD,OAAO,SAAS,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,GAC5H;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAOT,eAAsB,iBAAiB,CACrC,KACA,aACA,YACwB;AAAA,EACxB,MAAM,SAAwB;AAAA,IAC5B,QAAQ,CAAC;AAAA,IACT,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,aAAa,eAAe;AAAA,IAC5B,SAAS;AAAA,IACT;AAAA,IACA,UAAU,CAAC;AAAA,EACb;AAAA,EAEA,IAAI;AAAA,IAEF,MAAM,SAAS,MAAM,WAAW,UAAU;AAAA,IAC1C,eAAe,MAAM;AAAA,IAGrB,MAAM,WAAW,MAAM,YAAY;AAAA,IAGnC,MAAM,MAAM,MAAM,eAAe,QAAQ,WAAW;AAAA,IACpD,OAAO,cAAc,IAAI;AAAA,IAGzB,MAAM,UAAU,IAAI,QAAQ,IAAI,WAAW,EAAE;AAAA,IAC7C,OAAO,aAAa;AAAA,IAGpB,MAAM,aAAa,MAAM,mBAAmB,IAAI,WAAW,IAAI,IAAI;AAAA,IACnE,MAAM,UAAU,aAAa,UAAU;AAAA,IAGvC,MAAM,UAAU,oBAAoB,OAAO,KAAK;AAAA,IAGhD,MAAM,iBAAiB,qBAAqB,UAAU,OAAO;AAAA,IAG7D,IAAI,OAAO,SAAS,eAAe;AAAA,MACjC,MAAM,SAAS,MAAM,eAAe,cAAc,GAAG;AAAA,MACrD,IAAI,QAAQ;AAAA,QACV,QAAQ,IAAI;AAAA,YAAc;AAAA,CAAsB;AAAA,QAChD,OAAO,aAAa,GAAG,SAAS,oBAAoB;AAAA,QACpD,OAAO,UAAU;AAAA,QACjB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAGA,MAAM,eAAe,qBAAqB,SAAS,OAAO,WAAW,SAAS,KAAK,IAAI,IAAI;AAAA,IAG3F,OAAO,aAAa,MAAM,eAAe,cAAc,KAAK,GAAG,IAAI,gBAAgB,WAAW,YAAY;AAAA,IAE1G,OAAO,UAAU;AAAA,IAEjB,QAAQ,IAAI;AAAA,gCAAkC;AAAA,IAC9C,QAAQ,IAAI,yBAAc,IAAI,aAAa;AAAA,IAC3C,QAAQ,IAAI,uBAAY,KAAK;AAAA,IAC7B,QAAQ,IAAI,yBAAc,OAAO;AAAA,CAAc;AAAA,IAE/C,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,OAAO,UAAU;AAAA,IACjB,OAAO,OAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IAEzE,QAAQ,MAAM;AAAA;AAAA,CAA+B;AAAA,IAC7C,QAAQ,MAAM,KAAK;AAAA,IACnB,QAAQ,MAAM,EAAE;AAAA,IAEhB,OAAO;AAAA;AAAA;",
34
- "debugId": "0CEBBBAE18C384F864756E2164756E21",
68
+ "mappings": "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",
69
+ "debugId": "0CCB1F1FA688A2D464756E2164756E21",
35
70
  "names": []
36
71
  }