@exercode/problem-utils 1.16.6 → 1.16.7

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.
Files changed (126) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  2. package/dist/helpers/checkProblemDirIsolation.cjs +2 -2
  3. package/dist/helpers/checkProblemDirIsolation.cjs.map +1 -1
  4. package/dist/helpers/checkProblemDirIsolation.js +2 -2
  5. package/dist/helpers/checkProblemDirIsolation.js.map +1 -1
  6. package/dist/helpers/cleanWorkingDirectory.cjs +2 -2
  7. package/dist/helpers/cleanWorkingDirectory.cjs.map +1 -1
  8. package/dist/helpers/cleanWorkingDirectory.js +2 -2
  9. package/dist/helpers/cleanWorkingDirectory.js.map +1 -1
  10. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.cjs +2 -2
  11. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.cjs.map +1 -1
  12. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.js +2 -2
  13. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.js.map +1 -1
  14. package/dist/helpers/copyTestCaseFileInput.cjs +2 -2
  15. package/dist/helpers/copyTestCaseFileInput.cjs.map +1 -1
  16. package/dist/helpers/copyTestCaseFileInput.js +2 -2
  17. package/dist/helpers/copyTestCaseFileInput.js.map +1 -1
  18. package/dist/helpers/findEntryPointFile.cjs +2 -2
  19. package/dist/helpers/findEntryPointFile.cjs.map +1 -1
  20. package/dist/helpers/findEntryPointFile.js +2 -2
  21. package/dist/helpers/findEntryPointFile.js.map +1 -1
  22. package/dist/helpers/findLanguageDefinitionByPath.cjs +2 -2
  23. package/dist/helpers/findLanguageDefinitionByPath.cjs.map +1 -1
  24. package/dist/helpers/findLanguageDefinitionByPath.js +2 -2
  25. package/dist/helpers/findLanguageDefinitionByPath.js.map +1 -1
  26. package/dist/helpers/findModelAnswerDirs.cjs +2 -2
  27. package/dist/helpers/findModelAnswerDirs.cjs.map +1 -1
  28. package/dist/helpers/findModelAnswerDirs.js +2 -2
  29. package/dist/helpers/findModelAnswerDirs.js.map +1 -1
  30. package/dist/helpers/judgeByStaticAnalysis.cjs +19 -2
  31. package/dist/helpers/judgeByStaticAnalysis.cjs.map +1 -1
  32. package/dist/helpers/judgeByStaticAnalysis.js +19 -2
  33. package/dist/helpers/judgeByStaticAnalysis.js.map +1 -1
  34. package/dist/helpers/parseArgs.cjs +2 -2
  35. package/dist/helpers/parseArgs.cjs.map +1 -1
  36. package/dist/helpers/parseArgs.js +2 -2
  37. package/dist/helpers/parseArgs.js.map +1 -1
  38. package/dist/helpers/printDebugBanner.cjs +3 -2
  39. package/dist/helpers/printDebugBanner.cjs.map +1 -1
  40. package/dist/helpers/printDebugBanner.js +3 -2
  41. package/dist/helpers/printDebugBanner.js.map +1 -1
  42. package/dist/helpers/printTestCaseResult.cjs +2 -2
  43. package/dist/helpers/printTestCaseResult.cjs.map +1 -1
  44. package/dist/helpers/printTestCaseResult.js +2 -2
  45. package/dist/helpers/printTestCaseResult.js.map +1 -1
  46. package/dist/helpers/readOutputFiles.cjs +2 -2
  47. package/dist/helpers/readOutputFiles.cjs.map +1 -1
  48. package/dist/helpers/readOutputFiles.js +2 -2
  49. package/dist/helpers/readOutputFiles.js.map +1 -1
  50. package/dist/helpers/readProblemMarkdownFrontMatter.cjs +2 -2
  51. package/dist/helpers/readProblemMarkdownFrontMatter.cjs.map +1 -1
  52. package/dist/helpers/readProblemMarkdownFrontMatter.js +2 -2
  53. package/dist/helpers/readProblemMarkdownFrontMatter.js.map +1 -1
  54. package/dist/helpers/readTestCases.cjs +2 -2
  55. package/dist/helpers/readTestCases.cjs.map +1 -1
  56. package/dist/helpers/readTestCases.js +2 -2
  57. package/dist/helpers/readTestCases.js.map +1 -1
  58. package/dist/helpers/removeCommentsInSourceCode.cjs +6 -2
  59. package/dist/helpers/removeCommentsInSourceCode.cjs.map +1 -1
  60. package/dist/helpers/removeCommentsInSourceCode.js +6 -2
  61. package/dist/helpers/removeCommentsInSourceCode.js.map +1 -1
  62. package/dist/helpers/resolveCwds.cjs +2 -2
  63. package/dist/helpers/resolveCwds.cjs.map +1 -1
  64. package/dist/helpers/resolveCwds.js +2 -2
  65. package/dist/helpers/resolveCwds.js.map +1 -1
  66. package/dist/helpers/runCommandInTemporaryPackageManagerProject.cjs +2 -2
  67. package/dist/helpers/runCommandInTemporaryPackageManagerProject.cjs.map +1 -1
  68. package/dist/helpers/runCommandInTemporaryPackageManagerProject.js +2 -2
  69. package/dist/helpers/runCommandInTemporaryPackageManagerProject.js.map +1 -1
  70. package/dist/helpers/runPythonInTemporaryUvProject.cjs +2 -2
  71. package/dist/helpers/runPythonInTemporaryUvProject.cjs.map +1 -1
  72. package/dist/helpers/runPythonInTemporaryUvProject.js +2 -2
  73. package/dist/helpers/runPythonInTemporaryUvProject.js.map +1 -1
  74. package/dist/helpers/sourceCodeGrammars.cjs +2 -2
  75. package/dist/helpers/sourceCodeGrammars.cjs.map +1 -1
  76. package/dist/helpers/sourceCodeGrammars.js +2 -2
  77. package/dist/helpers/sourceCodeGrammars.js.map +1 -1
  78. package/dist/helpers/spawnSyncWithTimeout.cjs +2 -2
  79. package/dist/helpers/spawnSyncWithTimeout.cjs.map +1 -1
  80. package/dist/helpers/spawnSyncWithTimeout.js +2 -2
  81. package/dist/helpers/spawnSyncWithTimeout.js.map +1 -1
  82. package/dist/helpers/startHttpServer.cjs +2 -2
  83. package/dist/helpers/startHttpServer.cjs.map +1 -1
  84. package/dist/helpers/startHttpServer.js +2 -2
  85. package/dist/helpers/startHttpServer.js.map +1 -1
  86. package/dist/index.cjs +1 -2
  87. package/dist/index.js +1 -2
  88. package/dist/presets/command.cjs +2 -2
  89. package/dist/presets/command.cjs.map +1 -1
  90. package/dist/presets/command.js +2 -2
  91. package/dist/presets/command.js.map +1 -1
  92. package/dist/presets/guiCommand.cjs +4 -2
  93. package/dist/presets/guiCommand.cjs.map +1 -1
  94. package/dist/presets/guiCommand.js +4 -2
  95. package/dist/presets/guiCommand.js.map +1 -1
  96. package/dist/presets/llm.cjs +2 -2
  97. package/dist/presets/llm.cjs.map +1 -1
  98. package/dist/presets/llm.js +2 -2
  99. package/dist/presets/llm.js.map +1 -1
  100. package/dist/presets/stdio.cjs +2 -2
  101. package/dist/presets/stdio.cjs.map +1 -1
  102. package/dist/presets/stdio.js +2 -2
  103. package/dist/presets/stdio.js.map +1 -1
  104. package/dist/types/decisionCode.cjs +2 -2
  105. package/dist/types/decisionCode.cjs.map +1 -1
  106. package/dist/types/decisionCode.js +2 -2
  107. package/dist/types/decisionCode.js.map +1 -1
  108. package/dist/types/language.cjs +11 -2
  109. package/dist/types/language.cjs.map +1 -1
  110. package/dist/types/language.js +11 -2
  111. package/dist/types/language.js.map +1 -1
  112. package/dist/types/problem.cjs +2 -2
  113. package/dist/types/problem.cjs.map +1 -1
  114. package/dist/types/problem.js +2 -2
  115. package/dist/types/problem.js.map +1 -1
  116. package/dist/types/testCaseResult.cjs +2 -2
  117. package/dist/types/testCaseResult.cjs.map +1 -1
  118. package/dist/types/testCaseResult.js +2 -2
  119. package/dist/types/testCaseResult.js.map +1 -1
  120. package/package.json +14 -14
  121. package/dist/_virtual/_rollupPluginBabelHelpers.cjs +0 -4
  122. package/dist/_virtual/_rollupPluginBabelHelpers.cjs.map +0 -1
  123. package/dist/_virtual/_rollupPluginBabelHelpers.js +0 -4
  124. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  125. package/dist/index.cjs.map +0 -1
  126. package/dist/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"runCommandInTemporaryPackageManagerProject.cjs","sources":["../../src/helpers/runCommandInTemporaryPackageManagerProject.ts"],"sourcesContent":["import childProcess from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport type PackageManager = 'bun' | 'cargo' | 'go' | 'gradle' | 'maven' | 'npm' | 'pnpm' | 'ruby' | 'uv' | 'yarn';\ntype PackageManagerInstallCommand = readonly [string, ...string[]];\n\nexport interface PackageManagerCommandRunResult {\n stdin: string;\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}\n\nexport interface RunCommandInTemporaryPackageManagerProjectOptions {\n cwd: string;\n projectDir: string;\n packageManager: PackageManager;\n command: readonly [string, ...string[]] | ((context: { runDir: string }) => readonly [string, ...string[]]);\n stdin?: string;\n env?: NodeJS.ProcessEnv;\n timeLimitSeconds: number;\n outputLimitBytes?: number;\n tempDirPrefix?: string;\n projectFilePaths?: readonly string[];\n}\n\nconst packageManagerProjectFilePaths = {\n bun: ['package.json', 'bun.lock', 'bun.lockb'],\n cargo: ['Cargo.toml', 'Cargo.lock'],\n go: ['go.mod', 'go.sum'],\n gradle: [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradle.properties',\n 'gradle.lockfile',\n 'buildscript-gradle.lockfile',\n 'gradle',\n 'gradlew',\n 'gradlew.bat',\n ],\n maven: ['pom.xml', '.mvn', 'mvnw', 'mvnw.cmd'],\n npm: ['package.json', 'package-lock.json'],\n pnpm: ['package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'],\n ruby: ['Gemfile', 'Gemfile.lock', '.ruby-version'],\n uv: ['pyproject.toml', 'uv.lock'],\n yarn: ['package.json', 'yarn.lock', '.yarnrc', '.yarnrc.yml', '.yarn'],\n} as const satisfies Record<PackageManager, readonly string[]>;\n\nconst packageManagerInstallCommandResolvers = {\n bun: resolveBunInstallCommand,\n cargo: resolveCargoInstallCommand,\n go: resolveGoInstallCommand,\n gradle: resolveGradleInstallCommand,\n maven: resolveMavenInstallCommand,\n npm: resolveNpmInstallCommand,\n pnpm: resolvePnpmInstallCommand,\n ruby: resolveRubyInstallCommand,\n uv: resolveUvInstallCommand,\n yarn: resolveYarnInstallCommand,\n} as const satisfies Record<PackageManager, (runDir: string) => Promise<PackageManagerInstallCommand | undefined>>;\n\nconst defaultOutputLimitBytes = 50 * 1024 * 1024;\nconst killGracePeriodMilliseconds = 1000;\nconst timeCommand = resolveTimeCommand();\n\n/**\n * Copies a submission directory to a temporary directory, overlays package\n * manager project files from the problem directory, prepares dependencies,\n * runs a command, and then removes the temporary directory.\n */\nexport async function runCommandInTemporaryPackageManagerProject(\n options: RunCommandInTemporaryPackageManagerProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const runDir = await fs.mkdtemp(path.join(os.tmpdir(), options.tempDirPrefix ?? 'exercode-'));\n try {\n await fs.cp(options.cwd, runDir, { recursive: true });\n await copyPackageManagerProjectFiles({\n packageManager: options.packageManager,\n projectDir: options.projectDir,\n runDir,\n projectFilePaths: options.projectFilePaths,\n });\n\n const env = options.env ? { ...process.env, ...options.env } : process.env;\n const installCommand = await resolveInstallCommand(options.packageManager, runDir);\n const command = typeof options.command === 'function' ? options.command({ runDir }) : options.command;\n const startedAt = Date.now();\n const outputLimitBytes = options.outputLimitBytes ?? defaultOutputLimitBytes;\n let installResult: Awaited<ReturnType<typeof spawnWithInput>> | undefined;\n\n if (installCommand) {\n installResult = await spawnWithInput(installCommand, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: '',\n timeLimitSeconds: options.timeLimitSeconds,\n });\n if (isFailedSpawnResult(installResult)) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds: (Date.now() - startedAt) / 1000,\n options,\n result: installResult,\n });\n }\n }\n\n const remainingTimeLimitSeconds = options.timeLimitSeconds - (Date.now() - startedAt) / 1000;\n if (remainingTimeLimitSeconds <= 0) {\n return {\n stdin: options.stdin ?? '',\n stdout: installResult?.stdout ?? '',\n stderr: installResult?.stderr ?? '',\n status: 0,\n timeSeconds: options.timeLimitSeconds + 1e-3,\n memoryBytes: installResult?.memoryBytes ?? 0,\n timedOut: true,\n signal: installResult?.signal,\n outputLimitExceeded: false,\n };\n }\n\n const result = await spawnWithInput(command, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: options.stdin ?? '',\n timeLimitSeconds: remainingTimeLimitSeconds,\n });\n const elapsedTimeSeconds = (Date.now() - startedAt) / 1000;\n\n if (installResult) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds,\n options,\n result: {\n ...result,\n timeSeconds: installResult.timeSeconds + result.timeSeconds,\n memoryBytes: Math.max(installResult.memoryBytes, result.memoryBytes),\n },\n });\n }\n\n return toPackageManagerCommandRunResult({ elapsedTimeSeconds, options, result });\n } finally {\n await fs.rm(runDir, { force: true, recursive: true });\n }\n}\n\nfunction toPackageManagerCommandRunResult(context: {\n elapsedTimeSeconds: number;\n options: RunCommandInTemporaryPackageManagerProjectOptions;\n result: Awaited<ReturnType<typeof spawnWithInput>>;\n}): PackageManagerCommandRunResult {\n return {\n stdin: context.options.stdin ?? '',\n stdout: context.result.stdout,\n stderr: context.result.stderr,\n status: context.result.timedOut || context.result.outputLimitExceeded ? 0 : context.result.status,\n timeSeconds: context.result.timedOut\n ? context.options.timeLimitSeconds + 1e-3\n : context.result.timeSeconds || context.elapsedTimeSeconds,\n memoryBytes: context.result.memoryBytes,\n timedOut: context.result.timedOut,\n signal: context.result.signal,\n outputLimitExceeded: context.result.outputLimitExceeded,\n };\n}\n\nfunction resolveInstallCommand(\n packageManager: PackageManager,\n runDir: string\n): Promise<PackageManagerInstallCommand | undefined> {\n return packageManagerInstallCommandResolvers[packageManager](runDir);\n}\n\nfunction isFailedSpawnResult(result: Awaited<ReturnType<typeof spawnWithInput>>): boolean {\n return result.status !== 0 || result.timedOut || result.outputLimitExceeded;\n}\n\nasync function resolveBunInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n // Bun supports --silent and it keeps successful preparation output out of judge output buffers.\n return (await hasAnyPath(runDir, ['bun.lock', 'bun.lockb']))\n ? ['bun', 'install', '--frozen-lockfile', '--silent']\n : ['bun', 'install', '--silent'];\n}\n\nasync function resolveCargoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Cargo.toml')))) return undefined;\n return (await pathExists(path.join(runDir, 'Cargo.lock'))) ? ['cargo', 'fetch', '--locked'] : ['cargo', 'fetch'];\n}\n\nasync function resolveGoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'go.mod')))) return undefined;\n return ['go', 'mod', 'download'];\n}\n\nasync function resolveGradleInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (\n !(await hasAnyPath(runDir, [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradlew',\n 'gradlew.bat',\n ]))\n )\n return undefined;\n const args = ['--no-daemon', '--quiet', 'dependencies'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'gradlew.bat')))\n ? ['cmd.exe', '/c', 'gradlew.bat', ...args]\n : ['gradle', ...args];\n }\n return (await pathExists(path.join(runDir, 'gradlew'))) ? ['sh', './gradlew', ...args] : ['gradle', ...args];\n}\n\nasync function resolveMavenInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'pom.xml')))) return undefined;\n const args = ['-q', 'dependency:go-offline'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'mvnw.cmd')))\n ? ['cmd.exe', '/c', 'mvnw.cmd', ...args]\n : ['mvn', ...args];\n }\n return (await pathExists(path.join(runDir, 'mvnw'))) ? ['sh', './mvnw', ...args] : ['mvn', ...args];\n}\n\nasync function resolveNpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'package-lock.json')))\n ? ['npm', 'ci', '--silent']\n : ['npm', 'install', '--silent'];\n}\n\nasync function resolvePnpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'pnpm-lock.yaml')))\n ? ['pnpm', 'install', '--frozen-lockfile', '--silent']\n : ['pnpm', 'install', '--silent'];\n}\n\nasync function resolveRubyInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Gemfile')))) return undefined;\n return (await pathExists(path.join(runDir, 'Gemfile.lock')))\n ? ['bundle', 'install', '--frozen', '--quiet']\n : ['bundle', 'install', '--quiet'];\n}\n\nasync function resolveUvInstallCommand(): Promise<undefined> {\n return undefined;\n}\n\nasync function resolveYarnInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n const isBerry = await isYarnBerryProject(runDir);\n const hasLockfile = await pathExists(path.join(runDir, 'yarn.lock'));\n if (isBerry) return hasLockfile ? ['yarn', 'install', '--immutable'] : ['yarn', 'install'];\n return hasLockfile ? ['yarn', 'install', '--frozen-lockfile', '--silent'] : ['yarn', 'install', '--silent'];\n}\n\nasync function isYarnBerryProject(runDir: string): Promise<boolean> {\n if (await pathExists(path.join(runDir, '.yarnrc.yml'))) return true;\n\n const packageJson = await readJson(path.join(runDir, 'package.json'));\n const packageManager = typeof packageJson.packageManager === 'string' ? packageJson.packageManager : undefined;\n const yarnMajorVersion = /^yarn@(\\d+)/.exec(packageManager ?? '')?.[1];\n return yarnMajorVersion !== undefined && Number(yarnMajorVersion) >= 2;\n}\n\nasync function hasAnyPath(directoryPath: string, relativePaths: readonly string[]): Promise<boolean> {\n for (const relativePath of relativePaths) {\n if (await pathExists(path.join(directoryPath, relativePath))) return true;\n }\n return false;\n}\n\nasync function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath);\n return true;\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return false;\n }\n}\n\nasync function readJson(filePath: string): Promise<Record<string, unknown>> {\n try {\n const parsed = JSON.parse(await fs.readFile(filePath, 'utf8')) as unknown;\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : {};\n } catch (error) {\n if (error instanceof SyntaxError) return {};\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code === 'ENOENT') return {};\n throw error;\n }\n}\n\nexport async function copyPackageManagerProjectFiles(options: {\n packageManager: PackageManager;\n projectDir: string;\n runDir: string;\n projectFilePaths?: readonly string[];\n}): Promise<void> {\n for (const projectFilePath of options.projectFilePaths ?? packageManagerProjectFilePaths[options.packageManager]) {\n await copyPathIfExists(path.join(options.projectDir, projectFilePath), path.join(options.runDir, projectFilePath));\n }\n}\n\nasync function copyPathIfExists(sourcePath: string, destinationPath: string): Promise<void> {\n try {\n await fs.cp(sourcePath, destinationPath, { recursive: true });\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n }\n}\n\nasync function spawnWithInput(\n command: readonly [string, ...string[]],\n context: {\n cwd: string;\n env: NodeJS.ProcessEnv;\n outputLimitBytes: number;\n stdin: string;\n timeLimitSeconds: number;\n }\n): Promise<{\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}> {\n const timeOutputPath = timeCommand === undefined ? undefined : path.join(context.cwd, '.exercode-time-result');\n const spawnedCommand =\n timeCommand === undefined ? command : ([...timeCommand, `--output=${timeOutputPath}`, ...command] as const);\n const subprocess = childProcess.spawn(spawnedCommand[0], spawnedCommand.slice(1), {\n cwd: context.cwd,\n detached: process.platform !== 'win32',\n env: context.env,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n const stdoutChunks: Buffer[] = [];\n const stderrChunks: Buffer[] = [];\n let outputBytes = 0;\n let timedOut = false;\n let outputLimitExceeded = false;\n\n const appendOutputChunk = (chunks: Buffer[], chunk: Buffer): void => {\n if (outputBytes >= context.outputLimitBytes) {\n if (chunk.byteLength > 0) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n return;\n }\n\n const remainingBytes = context.outputLimitBytes - outputBytes;\n const appendedChunk = chunk.byteLength > remainingBytes ? chunk.subarray(0, remainingBytes) : chunk;\n chunks.push(appendedChunk);\n outputBytes += appendedChunk.byteLength;\n\n if (chunk.byteLength > remainingBytes) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n };\n\n subprocess.stdout.on('data', (chunk: Buffer) => appendOutputChunk(stdoutChunks, chunk));\n subprocess.stderr.on('data', (chunk: Buffer) => appendOutputChunk(stderrChunks, chunk));\n\n const timeout = setTimeout(() => {\n timedOut = true;\n killSubprocessGroup(subprocess, 'SIGTERM');\n }, context.timeLimitSeconds * 1000);\n const killTimeout = setTimeout(\n () => {\n if (timedOut) killSubprocessGroup(subprocess, 'SIGKILL');\n },\n context.timeLimitSeconds * 1000 + killGracePeriodMilliseconds\n );\n killTimeout.unref();\n\n const { status, signal } = await new Promise<{ status: number | undefined; signal: NodeJS.Signals | undefined }>(\n (resolve, reject) => {\n let settled = false;\n let pendingError: Error | undefined;\n const failAfterClose = (error: Error): void => {\n if (settled) return;\n pendingError = error;\n killSubprocessGroup(subprocess, 'SIGKILL');\n if (subprocess.pid === undefined) {\n settled = true;\n reject(error);\n }\n };\n subprocess.on('error', failAfterClose);\n subprocess.stdin.on('error', (error: NodeJS.ErrnoException) => {\n if (error.code !== 'EPIPE') failAfterClose(error);\n });\n subprocess.on('close', (code, closeSignal) => {\n if (settled) return;\n settled = true;\n if (pendingError) {\n reject(pendingError);\n return;\n }\n resolve({ status: code ?? undefined, signal: closeSignal ?? undefined });\n });\n subprocess.stdin.end(context.stdin);\n }\n ).finally(() => {\n clearTimeout(timeout);\n clearTimeout(killTimeout);\n });\n\n const { timeSeconds, memoryBytes } =\n timeOutputPath === undefined ? { timeSeconds: 0, memoryBytes: 0 } : await readTimeResult(timeOutputPath);\n\n return {\n stdout: Buffer.concat(stdoutChunks).toString(),\n stderr: Buffer.concat(stderrChunks).toString(),\n status,\n timeSeconds,\n memoryBytes,\n timedOut,\n signal,\n outputLimitExceeded,\n };\n}\n\nfunction resolveTimeCommand(): readonly [string, ...string[]] | undefined {\n const command = os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time';\n const result = childProcess.spawnSync(command, ['--version'], { stdio: 'ignore' });\n if (result.error || result.status !== 0) return undefined;\n\n return [command, '--format', '%e %M'];\n}\n\nfunction killSubprocessGroup(subprocess: childProcess.ChildProcess, signal: NodeJS.Signals): void {\n if (subprocess.pid === undefined) return;\n\n try {\n if (process.platform === 'win32') {\n subprocess.kill(signal);\n return;\n }\n process.kill(-subprocess.pid, signal);\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ESRCH' && code !== 'EPERM') throw error;\n }\n}\n\nasync function readTimeResult(timeOutputPath: string): Promise<{ timeSeconds: number; memoryBytes: number }> {\n let content: string;\n try {\n content = await fs.readFile(timeOutputPath, 'utf8');\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return { timeSeconds: 0, memoryBytes: 0 };\n }\n\n const match = /(\\d+(?:[.,]\\d+)?) (\\d+)\\s*$/.exec(content);\n if (!match) return { timeSeconds: 0, memoryBytes: 0 };\n\n return { timeSeconds: Number(match[1]!.replace(',', '.')), memoryBytes: Number(match[2]) * 1024 };\n}\n"],"names":["command","result","packageManagerProjectFilePaths","bun","cargo","go","gradle","maven","npm","pnpm","ruby","uv","yarn","packageManagerInstallCommandResolvers","_x2","_resolveBunInstallCommand","apply","this","arguments","_x3","_resolveCargoInstallCommand","_x4","_resolveGoInstallCommand","_x5","_resolveGradleInstallCommand","_x6","_resolveMavenInstallCommand","_x7","_resolveNpmInstallCommand","_x8","_resolvePnpmInstallCommand","_x9","_resolveRubyInstallCommand","_resolveUvInstallCommand","_x0","_resolveYarnInstallCommand","timeCommand","os","platform","childProcess","spawnSync","stdio","error","status","_runCommandInTemporaryPackageManagerProject","_asyncToGenerator","_regenerator","m","_callee","options","_options$tempDirPrefi","runDir","_options$outputLimitB","_options$stdin2","env","installCommand","startedAt","outputLimitBytes","installResult","remainingTimeLimitSeconds","_options$stdin","_installResult$stdout","_installResult","_installResult$stderr","_installResult2","_installResult$memory","_installResult3","_installResult4","elapsedTimeSeconds","w","_context","p","n","fs","mkdtemp","path","join","tmpdir","tempDirPrefix","v","cp","cwd","recursive","copyPackageManagerProjectFiles","packageManager","projectDir","projectFilePaths","_objectSpread","process","resolveInstallCommand","Date","now","spawnWithInput","stdin","timeLimitSeconds","isFailedSpawnResult","a","toPackageManagerCommandRunResult","stdout","stderr","timeSeconds","memoryBytes","timedOut","signal","outputLimitExceeded","Math","max","rm","force","f","context","_context$options$stdi","_callee2","_t","_context2","pathExists","undefined","hasAnyPath","_callee3","_t2","_context3","_callee4","_context4","_callee5","args","_t3","_t4","_context5","concat","_callee6","_t5","_t6","_context6","_callee7","_t7","_context7","_callee8","_t8","_context8","_callee9","_t9","_context9","_callee0","_context0","_callee1","isBerry","hasLockfile","_context1","isYarnBerryProject","_x1","_isYarnBerryProject","_callee10","_exec","packageJson","yarnMajorVersion","_context10","readJson","exec","Number","_x10","_x11","_hasAnyPath","_callee11","directoryPath","relativePaths","_iterator","_step","relativePath","_t0","_context11","_createForOfIteratorHelper","s","done","value","e","_x12","_pathExists","_callee12","filePath","_t1","_context12","access","_typeof","code","_x13","_readJson","_callee13","parsed","_t10","_t11","_context13","JSON","readFile","parse","call","Array","isArray","SyntaxError","_x14","_copyPackageManagerProjectFiles","_callee14","_options$projectFileP","_iterator2","_step2","projectFilePath","_t12","_context14","copyPathIfExists","_x15","_x16","_copyPathIfExists","_callee15","sourcePath","destinationPath","_t13","_context15","_x17","_x18","_spawnWithInput","_callee16","timeOutputPath","spawnedCommand","subprocess","stdoutChunks","stderrChunks","outputBytes","appendOutputChunk","timeout","killTimeout","_yield$Promise$finall","_ref","_t14","_context16","_toConsumableArray","spawn","slice","detached","chunks","chunk","byteLength","killSubprocessGroup","remainingBytes","appendedChunk","subarray","push","on","setTimeout","unref","Promise","resolve","reject","pendingError","settled","failAfterClose","pid","closeSignal","end","clearTimeout","readTimeResult","Buffer","toString","kill","_x19","_readTimeResult","_callee17","content","match","_t15","_context17","replace","_x"],"mappings":"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"}
1
+ {"version":3,"file":"runCommandInTemporaryPackageManagerProject.cjs","names":["fs","path","os","childProcess"],"sources":["../../src/helpers/runCommandInTemporaryPackageManagerProject.ts"],"sourcesContent":["import childProcess from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport type PackageManager = 'bun' | 'cargo' | 'go' | 'gradle' | 'maven' | 'npm' | 'pnpm' | 'ruby' | 'uv' | 'yarn';\ntype PackageManagerInstallCommand = readonly [string, ...string[]];\n\nexport interface PackageManagerCommandRunResult {\n stdin: string;\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}\n\nexport interface RunCommandInTemporaryPackageManagerProjectOptions {\n cwd: string;\n projectDir: string;\n packageManager: PackageManager;\n command: readonly [string, ...string[]] | ((context: { runDir: string }) => readonly [string, ...string[]]);\n stdin?: string;\n env?: NodeJS.ProcessEnv;\n timeLimitSeconds: number;\n outputLimitBytes?: number;\n tempDirPrefix?: string;\n projectFilePaths?: readonly string[];\n}\n\nconst packageManagerProjectFilePaths = {\n bun: ['package.json', 'bun.lock', 'bun.lockb'],\n cargo: ['Cargo.toml', 'Cargo.lock'],\n go: ['go.mod', 'go.sum'],\n gradle: [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradle.properties',\n 'gradle.lockfile',\n 'buildscript-gradle.lockfile',\n 'gradle',\n 'gradlew',\n 'gradlew.bat',\n ],\n maven: ['pom.xml', '.mvn', 'mvnw', 'mvnw.cmd'],\n npm: ['package.json', 'package-lock.json'],\n pnpm: ['package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'],\n ruby: ['Gemfile', 'Gemfile.lock', '.ruby-version'],\n uv: ['pyproject.toml', 'uv.lock'],\n yarn: ['package.json', 'yarn.lock', '.yarnrc', '.yarnrc.yml', '.yarn'],\n} as const satisfies Record<PackageManager, readonly string[]>;\n\nconst packageManagerInstallCommandResolvers = {\n bun: resolveBunInstallCommand,\n cargo: resolveCargoInstallCommand,\n go: resolveGoInstallCommand,\n gradle: resolveGradleInstallCommand,\n maven: resolveMavenInstallCommand,\n npm: resolveNpmInstallCommand,\n pnpm: resolvePnpmInstallCommand,\n ruby: resolveRubyInstallCommand,\n uv: resolveUvInstallCommand,\n yarn: resolveYarnInstallCommand,\n} as const satisfies Record<PackageManager, (runDir: string) => Promise<PackageManagerInstallCommand | undefined>>;\n\nconst defaultOutputLimitBytes = 50 * 1024 * 1024;\nconst killGracePeriodMilliseconds = 1000;\nconst timeCommand = resolveTimeCommand();\n\n/**\n * Copies a submission directory to a temporary directory, overlays package\n * manager project files from the problem directory, prepares dependencies,\n * runs a command, and then removes the temporary directory.\n */\nexport async function runCommandInTemporaryPackageManagerProject(\n options: RunCommandInTemporaryPackageManagerProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const runDir = await fs.mkdtemp(path.join(os.tmpdir(), options.tempDirPrefix ?? 'exercode-'));\n try {\n await fs.cp(options.cwd, runDir, { recursive: true });\n await copyPackageManagerProjectFiles({\n packageManager: options.packageManager,\n projectDir: options.projectDir,\n runDir,\n projectFilePaths: options.projectFilePaths,\n });\n\n const env = options.env ? { ...process.env, ...options.env } : process.env;\n const installCommand = await resolveInstallCommand(options.packageManager, runDir);\n const command = typeof options.command === 'function' ? options.command({ runDir }) : options.command;\n const startedAt = Date.now();\n const outputLimitBytes = options.outputLimitBytes ?? defaultOutputLimitBytes;\n let installResult: Awaited<ReturnType<typeof spawnWithInput>> | undefined;\n\n if (installCommand) {\n installResult = await spawnWithInput(installCommand, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: '',\n timeLimitSeconds: options.timeLimitSeconds,\n });\n if (isFailedSpawnResult(installResult)) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds: (Date.now() - startedAt) / 1000,\n options,\n result: installResult,\n });\n }\n }\n\n const remainingTimeLimitSeconds = options.timeLimitSeconds - (Date.now() - startedAt) / 1000;\n if (remainingTimeLimitSeconds <= 0) {\n return {\n stdin: options.stdin ?? '',\n stdout: installResult?.stdout ?? '',\n stderr: installResult?.stderr ?? '',\n status: 0,\n timeSeconds: options.timeLimitSeconds + 1e-3,\n memoryBytes: installResult?.memoryBytes ?? 0,\n timedOut: true,\n signal: installResult?.signal,\n outputLimitExceeded: false,\n };\n }\n\n const result = await spawnWithInput(command, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: options.stdin ?? '',\n timeLimitSeconds: remainingTimeLimitSeconds,\n });\n const elapsedTimeSeconds = (Date.now() - startedAt) / 1000;\n\n if (installResult) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds,\n options,\n result: {\n ...result,\n timeSeconds: installResult.timeSeconds + result.timeSeconds,\n memoryBytes: Math.max(installResult.memoryBytes, result.memoryBytes),\n },\n });\n }\n\n return toPackageManagerCommandRunResult({ elapsedTimeSeconds, options, result });\n } finally {\n await fs.rm(runDir, { force: true, recursive: true });\n }\n}\n\nfunction toPackageManagerCommandRunResult(context: {\n elapsedTimeSeconds: number;\n options: RunCommandInTemporaryPackageManagerProjectOptions;\n result: Awaited<ReturnType<typeof spawnWithInput>>;\n}): PackageManagerCommandRunResult {\n return {\n stdin: context.options.stdin ?? '',\n stdout: context.result.stdout,\n stderr: context.result.stderr,\n status: context.result.timedOut || context.result.outputLimitExceeded ? 0 : context.result.status,\n timeSeconds: context.result.timedOut\n ? context.options.timeLimitSeconds + 1e-3\n : context.result.timeSeconds || context.elapsedTimeSeconds,\n memoryBytes: context.result.memoryBytes,\n timedOut: context.result.timedOut,\n signal: context.result.signal,\n outputLimitExceeded: context.result.outputLimitExceeded,\n };\n}\n\nfunction resolveInstallCommand(\n packageManager: PackageManager,\n runDir: string\n): Promise<PackageManagerInstallCommand | undefined> {\n return packageManagerInstallCommandResolvers[packageManager](runDir);\n}\n\nfunction isFailedSpawnResult(result: Awaited<ReturnType<typeof spawnWithInput>>): boolean {\n return result.status !== 0 || result.timedOut || result.outputLimitExceeded;\n}\n\nasync function resolveBunInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n // Bun supports --silent and it keeps successful preparation output out of judge output buffers.\n return (await hasAnyPath(runDir, ['bun.lock', 'bun.lockb']))\n ? ['bun', 'install', '--frozen-lockfile', '--silent']\n : ['bun', 'install', '--silent'];\n}\n\nasync function resolveCargoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Cargo.toml')))) return undefined;\n return (await pathExists(path.join(runDir, 'Cargo.lock'))) ? ['cargo', 'fetch', '--locked'] : ['cargo', 'fetch'];\n}\n\nasync function resolveGoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'go.mod')))) return undefined;\n return ['go', 'mod', 'download'];\n}\n\nasync function resolveGradleInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (\n !(await hasAnyPath(runDir, [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradlew',\n 'gradlew.bat',\n ]))\n )\n return undefined;\n const args = ['--no-daemon', '--quiet', 'dependencies'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'gradlew.bat')))\n ? ['cmd.exe', '/c', 'gradlew.bat', ...args]\n : ['gradle', ...args];\n }\n return (await pathExists(path.join(runDir, 'gradlew'))) ? ['sh', './gradlew', ...args] : ['gradle', ...args];\n}\n\nasync function resolveMavenInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'pom.xml')))) return undefined;\n const args = ['-q', 'dependency:go-offline'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'mvnw.cmd')))\n ? ['cmd.exe', '/c', 'mvnw.cmd', ...args]\n : ['mvn', ...args];\n }\n return (await pathExists(path.join(runDir, 'mvnw'))) ? ['sh', './mvnw', ...args] : ['mvn', ...args];\n}\n\nasync function resolveNpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'package-lock.json')))\n ? ['npm', 'ci', '--silent']\n : ['npm', 'install', '--silent'];\n}\n\nasync function resolvePnpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'pnpm-lock.yaml')))\n ? ['pnpm', 'install', '--frozen-lockfile', '--silent']\n : ['pnpm', 'install', '--silent'];\n}\n\nasync function resolveRubyInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Gemfile')))) return undefined;\n return (await pathExists(path.join(runDir, 'Gemfile.lock')))\n ? ['bundle', 'install', '--frozen', '--quiet']\n : ['bundle', 'install', '--quiet'];\n}\n\nasync function resolveUvInstallCommand(): Promise<undefined> {\n return undefined;\n}\n\nasync function resolveYarnInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n const isBerry = await isYarnBerryProject(runDir);\n const hasLockfile = await pathExists(path.join(runDir, 'yarn.lock'));\n if (isBerry) return hasLockfile ? ['yarn', 'install', '--immutable'] : ['yarn', 'install'];\n return hasLockfile ? ['yarn', 'install', '--frozen-lockfile', '--silent'] : ['yarn', 'install', '--silent'];\n}\n\nasync function isYarnBerryProject(runDir: string): Promise<boolean> {\n if (await pathExists(path.join(runDir, '.yarnrc.yml'))) return true;\n\n const packageJson = await readJson(path.join(runDir, 'package.json'));\n const packageManager = typeof packageJson.packageManager === 'string' ? packageJson.packageManager : undefined;\n const yarnMajorVersion = /^yarn@(\\d+)/.exec(packageManager ?? '')?.[1];\n return yarnMajorVersion !== undefined && Number(yarnMajorVersion) >= 2;\n}\n\nasync function hasAnyPath(directoryPath: string, relativePaths: readonly string[]): Promise<boolean> {\n for (const relativePath of relativePaths) {\n if (await pathExists(path.join(directoryPath, relativePath))) return true;\n }\n return false;\n}\n\nasync function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath);\n return true;\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return false;\n }\n}\n\nasync function readJson(filePath: string): Promise<Record<string, unknown>> {\n try {\n const parsed = JSON.parse(await fs.readFile(filePath, 'utf8')) as unknown;\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : {};\n } catch (error) {\n if (error instanceof SyntaxError) return {};\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code === 'ENOENT') return {};\n throw error;\n }\n}\n\nexport async function copyPackageManagerProjectFiles(options: {\n packageManager: PackageManager;\n projectDir: string;\n runDir: string;\n projectFilePaths?: readonly string[];\n}): Promise<void> {\n for (const projectFilePath of options.projectFilePaths ?? packageManagerProjectFilePaths[options.packageManager]) {\n await copyPathIfExists(path.join(options.projectDir, projectFilePath), path.join(options.runDir, projectFilePath));\n }\n}\n\nasync function copyPathIfExists(sourcePath: string, destinationPath: string): Promise<void> {\n try {\n await fs.cp(sourcePath, destinationPath, { recursive: true });\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n }\n}\n\nasync function spawnWithInput(\n command: readonly [string, ...string[]],\n context: {\n cwd: string;\n env: NodeJS.ProcessEnv;\n outputLimitBytes: number;\n stdin: string;\n timeLimitSeconds: number;\n }\n): Promise<{\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}> {\n const timeOutputPath = timeCommand === undefined ? undefined : path.join(context.cwd, '.exercode-time-result');\n const spawnedCommand =\n timeCommand === undefined ? command : ([...timeCommand, `--output=${timeOutputPath}`, ...command] as const);\n const subprocess = childProcess.spawn(spawnedCommand[0], spawnedCommand.slice(1), {\n cwd: context.cwd,\n detached: process.platform !== 'win32',\n env: context.env,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n const stdoutChunks: Buffer[] = [];\n const stderrChunks: Buffer[] = [];\n let outputBytes = 0;\n let timedOut = false;\n let outputLimitExceeded = false;\n\n const appendOutputChunk = (chunks: Buffer[], chunk: Buffer): void => {\n if (outputBytes >= context.outputLimitBytes) {\n if (chunk.byteLength > 0) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n return;\n }\n\n const remainingBytes = context.outputLimitBytes - outputBytes;\n const appendedChunk = chunk.byteLength > remainingBytes ? chunk.subarray(0, remainingBytes) : chunk;\n chunks.push(appendedChunk);\n outputBytes += appendedChunk.byteLength;\n\n if (chunk.byteLength > remainingBytes) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n };\n\n subprocess.stdout.on('data', (chunk: Buffer) => appendOutputChunk(stdoutChunks, chunk));\n subprocess.stderr.on('data', (chunk: Buffer) => appendOutputChunk(stderrChunks, chunk));\n\n const timeout = setTimeout(() => {\n timedOut = true;\n killSubprocessGroup(subprocess, 'SIGTERM');\n }, context.timeLimitSeconds * 1000);\n const killTimeout = setTimeout(\n () => {\n if (timedOut) killSubprocessGroup(subprocess, 'SIGKILL');\n },\n context.timeLimitSeconds * 1000 + killGracePeriodMilliseconds\n );\n killTimeout.unref();\n\n const { status, signal } = await new Promise<{ status: number | undefined; signal: NodeJS.Signals | undefined }>(\n (resolve, reject) => {\n let settled = false;\n let pendingError: Error | undefined;\n const failAfterClose = (error: Error): void => {\n if (settled) return;\n pendingError = error;\n killSubprocessGroup(subprocess, 'SIGKILL');\n if (subprocess.pid === undefined) {\n settled = true;\n reject(error);\n }\n };\n subprocess.on('error', failAfterClose);\n subprocess.stdin.on('error', (error: NodeJS.ErrnoException) => {\n if (error.code !== 'EPIPE') failAfterClose(error);\n });\n subprocess.on('close', (code, closeSignal) => {\n if (settled) return;\n settled = true;\n if (pendingError) {\n reject(pendingError);\n return;\n }\n resolve({ status: code ?? undefined, signal: closeSignal ?? undefined });\n });\n subprocess.stdin.end(context.stdin);\n }\n ).finally(() => {\n clearTimeout(timeout);\n clearTimeout(killTimeout);\n });\n\n const { timeSeconds, memoryBytes } =\n timeOutputPath === undefined ? { timeSeconds: 0, memoryBytes: 0 } : await readTimeResult(timeOutputPath);\n\n return {\n stdout: Buffer.concat(stdoutChunks).toString(),\n stderr: Buffer.concat(stderrChunks).toString(),\n status,\n timeSeconds,\n memoryBytes,\n timedOut,\n signal,\n outputLimitExceeded,\n };\n}\n\nfunction resolveTimeCommand(): readonly [string, ...string[]] | undefined {\n const command = os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time';\n const result = childProcess.spawnSync(command, ['--version'], { stdio: 'ignore' });\n if (result.error || result.status !== 0) return undefined;\n\n return [command, '--format', '%e %M'];\n}\n\nfunction killSubprocessGroup(subprocess: childProcess.ChildProcess, signal: NodeJS.Signals): void {\n if (subprocess.pid === undefined) return;\n\n try {\n if (process.platform === 'win32') {\n subprocess.kill(signal);\n return;\n }\n process.kill(-subprocess.pid, signal);\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ESRCH' && code !== 'EPERM') throw error;\n }\n}\n\nasync function readTimeResult(timeOutputPath: string): Promise<{ timeSeconds: number; memoryBytes: number }> {\n let content: string;\n try {\n content = await fs.readFile(timeOutputPath, 'utf8');\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return { timeSeconds: 0, memoryBytes: 0 };\n }\n\n const match = /(\\d+(?:[.,]\\d+)?) (\\d+)\\s*$/.exec(content);\n if (!match) return { timeSeconds: 0, memoryBytes: 0 };\n\n return { timeSeconds: Number(match[1]!.replace(',', '.')), memoryBytes: Number(match[2]) * 1024 };\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{asyncToGenerator as n,regenerator as e,objectSpread2 as r,createForOfIteratorHelper as t,typeof as a,toConsumableArray as i}from"../_virtual/_rollupPluginBabelHelpers.js";import o from"node:child_process";import c from"node:fs/promises";import s from"node:os";import u from"node:path";var l,p,f={bun:["package.json","bun.lock","bun.lockb"],cargo:["Cargo.toml","Cargo.lock"],go:["go.mod","go.sum"],gradle:["build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","gradle.lockfile","buildscript-gradle.lockfile","gradle","gradlew","gradlew.bat"],maven:["pom.xml",".mvn","mvnw","mvnw.cmd"],npm:["package.json","package-lock.json"],pnpm:["package.json","pnpm-lock.yaml","pnpm-workspace.yaml"],ruby:["Gemfile","Gemfile.lock",".ruby-version"],uv:["pyproject.toml","uv.lock"],yarn:["package.json","yarn.lock",".yarnrc",".yarnrc.yml",".yarn"]},d={bun:function(n){return h.apply(this,arguments)},cargo:function(n){return w.apply(this,arguments)},go:function(n){return j.apply(this,arguments)},gradle:function(n){return S.apply(this,arguments)},maven:function(n){return L.apply(this,arguments)},npm:function(n){return B.apply(this,arguments)},pnpm:function(n){return E.apply(this,arguments)},ruby:function(n){return x.apply(this,arguments)},uv:function(){return T.apply(this,arguments)},yarn:function(n){return O.apply(this,arguments)}},m=(l="darwin"===s.platform()?"gtime":"/usr/bin/time",(p=o.spawnSync(l,["--version"],{stdio:"ignore"})).error||0!==p.status?void 0:[l,"--format","%e %M"]);function v(n){return y.apply(this,arguments)}function y(){return y=n(e().m(function n(t){var a,i,o,l,p,f,d,m,v,y,h,w,j,S,L,B,E,x,T,O,N;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.n=1,c.mkdtemp(u.join(s.tmpdir(),null!=(a=t.tempDirPrefix)?a:"exercode-"));case 1:return i=n.v,n.p=2,n.n=3,c.cp(t.cwd,i,{recursive:!0});case 3:return n.n=4,q({packageManager:t.packageManager,projectDir:t.projectDir,runDir:i,projectFilePaths:t.projectFilePaths});case 4:return p=t.env?r(r({},process.env),t.env):process.env,n.n=5,b(t.packageManager,i);case 5:if(f=n.v,d="function"==typeof t.command?t.command({runDir:i}):t.command,m=Date.now(),v=null!=(o=t.outputLimitBytes)?o:52428800,!f){n.n=7;break}return n.n=6,H(f,{cwd:i,env:p,outputLimitBytes:v,stdin:"",timeLimitSeconds:t.timeLimitSeconds});case 6:if(!g(y=n.v)){n.n=7;break}return n.a(2,k({elapsedTimeSeconds:(Date.now()-m)/1e3,options:t,result:y}));case 7:if(!((h=t.timeLimitSeconds-(Date.now()-m)/1e3)<=0)){n.n=8;break}return n.a(2,{stdin:null!=(w=t.stdin)?w:"",stdout:null!=(j=null==(S=y)?void 0:S.stdout)?j:"",stderr:null!=(L=null==(B=y)?void 0:B.stderr)?L:"",status:0,timeSeconds:t.timeLimitSeconds+.001,memoryBytes:null!=(E=null==(x=y)?void 0:x.memoryBytes)?E:0,timedOut:!0,signal:null==(T=y)?void 0:T.signal,outputLimitExceeded:!1});case 8:return n.n=9,H(d,{cwd:i,env:p,outputLimitBytes:v,stdin:null!=(l=t.stdin)?l:"",timeLimitSeconds:h});case 9:if(O=n.v,N=(Date.now()-m)/1e3,!y){n.n=10;break}return n.a(2,k({elapsedTimeSeconds:N,options:t,result:r(r({},O),{},{timeSeconds:y.timeSeconds+O.timeSeconds,memoryBytes:Math.max(y.memoryBytes,O.memoryBytes)})}));case 10:return n.a(2,k({elapsedTimeSeconds:N,options:t,result:O}));case 11:return n.p=11,n.n=12,c.rm(i,{force:!0,recursive:!0});case 12:return n.f(11);case 13:return n.a(2)}},n,null,[[2,,11,13]])})),y.apply(this,arguments)}function k(n){var e;return{stdin:null!=(e=n.options.stdin)?e:"",stdout:n.result.stdout,stderr:n.result.stderr,status:n.result.timedOut||n.result.outputLimitExceeded?0:n.result.status,timeSeconds:n.result.timedOut?n.options.timeLimitSeconds+.001:n.result.timeSeconds||n.elapsedTimeSeconds,memoryBytes:n.result.memoryBytes,timedOut:n.result.timedOut,signal:n.result.signal,outputLimitExceeded:n.result.outputLimitExceeded}}function b(n,e){return d[n](e)}function g(n){return 0!==n.status||n.timedOut||n.outputLimitExceeded}function h(){return(h=n(e().m(function n(r){var t;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"package.json"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:return n.n=3,I(r,["bun.lock","bun.lockb"]);case 3:if(!n.v){n.n=4;break}t=["bun","install","--frozen-lockfile","--silent"],n.n=5;break;case 4:t=["bun","install","--silent"];case 5:return n.a(2,t)}},n)}))).apply(this,arguments)}function w(){return(w=n(e().m(function n(r){var t;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"Cargo.toml"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:return n.n=3,M(u.join(r,"Cargo.lock"));case 3:if(!n.v){n.n=4;break}t=["cargo","fetch","--locked"],n.n=5;break;case 4:t=["cargo","fetch"];case 5:return n.a(2,t)}},n)}))).apply(this,arguments)}function j(){return(j=n(e().m(function n(r){return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"go.mod"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:return n.a(2,["go","mod","download"])}},n)}))).apply(this,arguments)}function S(){return(S=n(e().m(function n(r){var t,a,i;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,I(r,["build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradlew","gradlew.bat"]);case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:if(t=["--no-daemon","--quiet","dependencies"],"win32"!==process.platform){n.n=6;break}return n.n=3,M(u.join(r,"gradlew.bat"));case 3:if(!n.v){n.n=4;break}a=["cmd.exe","/c","gradlew.bat"].concat(t),n.n=5;break;case 4:a=["gradle"].concat(t);case 5:return n.a(2,a);case 6:return n.n=7,M(u.join(r,"gradlew"));case 7:if(!n.v){n.n=8;break}i=["sh","./gradlew"].concat(t),n.n=9;break;case 8:i=["gradle"].concat(t);case 9:return n.a(2,i)}},n)}))).apply(this,arguments)}function L(){return(L=n(e().m(function n(r){var t,a,i;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"pom.xml"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:if(t=["-q","dependency:go-offline"],"win32"!==process.platform){n.n=6;break}return n.n=3,M(u.join(r,"mvnw.cmd"));case 3:if(!n.v){n.n=4;break}a=["cmd.exe","/c","mvnw.cmd"].concat(t),n.n=5;break;case 4:a=["mvn"].concat(t);case 5:return n.a(2,a);case 6:return n.n=7,M(u.join(r,"mvnw"));case 7:if(!n.v){n.n=8;break}i=["sh","./mvnw"].concat(t),n.n=9;break;case 8:i=["mvn"].concat(t);case 9:return n.a(2,i)}},n)}))).apply(this,arguments)}function B(){return(B=n(e().m(function n(r){var t;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"package.json"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:return n.n=3,M(u.join(r,"package-lock.json"));case 3:if(!n.v){n.n=4;break}t=["npm","ci","--silent"],n.n=5;break;case 4:t=["npm","install","--silent"];case 5:return n.a(2,t)}},n)}))).apply(this,arguments)}function E(){return(E=n(e().m(function n(r){var t;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"package.json"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:return n.n=3,M(u.join(r,"pnpm-lock.yaml"));case 3:if(!n.v){n.n=4;break}t=["pnpm","install","--frozen-lockfile","--silent"],n.n=5;break;case 4:t=["pnpm","install","--silent"];case 5:return n.a(2,t)}},n)}))).apply(this,arguments)}function x(){return(x=n(e().m(function n(r){var t;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"Gemfile"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:return n.n=3,M(u.join(r,"Gemfile.lock"));case 3:if(!n.v){n.n=4;break}t=["bundle","install","--frozen","--quiet"],n.n=5;break;case 4:t=["bundle","install","--quiet"];case 5:return n.a(2,t)}},n)}))).apply(this,arguments)}function T(){return(T=n(e().m(function n(){return e().w(function(n){for(;;)if(0===n.n)return n.a(2,void 0)},n)}))).apply(this,arguments)}function O(){return(O=n(e().m(function n(r){var t,a;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,"package.json"));case 1:if(n.v){n.n=2;break}return n.a(2,void 0);case 2:return n.n=3,N(r);case 3:return t=n.v,n.n=4,M(u.join(r,"yarn.lock"));case 4:if(a=n.v,!t){n.n=5;break}return n.a(2,a?["yarn","install","--immutable"]:["yarn","install"]);case 5:return n.a(2,a?["yarn","install","--frozen-lockfile","--silent"]:["yarn","install","--silent"])}},n)}))).apply(this,arguments)}function N(n){return D.apply(this,arguments)}function D(){return(D=n(e().m(function n(r){var t,a,i,o;return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,M(u.join(r,".yarnrc.yml"));case 1:if(!n.v){n.n=2;break}return n.a(2,!0);case 2:return n.n=3,C(u.join(r,"package.json"));case 3:return a=n.v,i="string"==typeof a.packageManager?a.packageManager:void 0,o=null==(t=/^yarn@(\d+)/.exec(null!=i?i:""))?void 0:t[1],n.a(2,void 0!==o&&Number(o)>=2)}},n)}))).apply(this,arguments)}function I(n,e){return G.apply(this,arguments)}function G(){return(G=n(e().m(function n(r,a){var i,o,c,s;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:i=t(a),n.p=1,i.s();case 2:if((o=i.n()).done){n.n=5;break}return c=o.value,n.n=3,M(u.join(r,c));case 3:if(!n.v){n.n=4;break}return n.a(2,!0);case 4:n.n=2;break;case 5:n.n=7;break;case 6:n.p=6,s=n.v,i.e(s);case 7:return n.p=7,i.f(),n.f(7);case 8:return n.a(2,!1)}},n,null,[[1,6,7,8]])}))).apply(this,arguments)}function M(n){return P.apply(this,arguments)}function P(){return(P=n(e().m(function n(r){var t;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,c.access(r);case 1:return n.a(2,!0);case 2:if(n.p=2,t=n.v,"ENOENT"===("object"===a(t)&&null!==t&&"code"in t?t.code:void 0)){n.n=3;break}throw t;case 3:return n.a(2,!1)}},n,null,[[0,2]])}))).apply(this,arguments)}function C(n){return F.apply(this,arguments)}function F(){return(F=n(e().m(function n(r){var t,i,o;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,i=JSON,n.n=1,c.readFile(r,"utf8");case 1:return t=i.parse.call(i,n.v),n.a(2,"object"!==a(t)||null===t||Array.isArray(t)?{}:t);case 2:if(n.p=2,!((o=n.v)instanceof SyntaxError)){n.n=3;break}return n.a(2,{});case 3:if("ENOENT"!==("object"===a(o)&&null!==o&&"code"in o?o.code:void 0)){n.n=4;break}return n.a(2,{});case 4:throw o;case 5:return n.a(2)}},n,null,[[0,2]])}))).apply(this,arguments)}function q(n){return z.apply(this,arguments)}function z(){return(z=n(e().m(function n(r){var a,i,o,c,s;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:i=t(null!=(a=r.projectFilePaths)?a:f[r.packageManager]),n.p=1,i.s();case 2:if((o=i.n()).done){n.n=4;break}return c=o.value,n.n=3,K(u.join(r.projectDir,c),u.join(r.runDir,c));case 3:n.n=2;break;case 4:n.n=6;break;case 5:n.p=5,s=n.v,i.e(s);case 6:return n.p=6,i.f(),n.f(6);case 7:return n.a(2)}},n,null,[[1,5,6,7]])}))).apply(this,arguments)}function K(n,e){return A.apply(this,arguments)}function A(){return(A=n(e().m(function n(r,t){var i;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,c.cp(r,t,{recursive:!0});case 1:n.n=3;break;case 2:if(n.p=2,i=n.v,"ENOENT"===("object"===a(i)&&null!==i&&"code"in i?i.code:void 0)){n.n=3;break}throw i;case 3:return n.a(2)}},n,null,[[0,2]])}))).apply(this,arguments)}function H(n,e){return R.apply(this,arguments)}function R(){return R=n(e().m(function n(r,t){var a,c,s,l,p,f,d,v,y,k,b,g,h,w,j,S,L,B;return e().w(function(n){for(;;)switch(n.n){case 0:return a=void 0===m?void 0:u.join(t.cwd,".exercode-time-result"),c=void 0===m?r:[].concat(i(m),["--output=".concat(a)],i(r)),s=o.spawn(c[0],c.slice(1),{cwd:t.cwd,detached:"win32"!==process.platform,env:t.env,stdio:["pipe","pipe","pipe"]}),l=[],p=[],f=0,d=!1,v=!1,y=function(n,e){if(f>=t.outputLimitBytes)e.byteLength>0&&(v=!0,_(s,"SIGKILL"));else{var r=t.outputLimitBytes-f,a=e.byteLength>r?e.subarray(0,r):e;n.push(a),f+=a.byteLength,e.byteLength>r&&(v=!0,_(s,"SIGKILL"))}},s.stdout.on("data",function(n){return y(l,n)}),s.stderr.on("data",function(n){return y(p,n)}),k=setTimeout(function(){d=!0,_(s,"SIGTERM")},1e3*t.timeLimitSeconds),(b=setTimeout(function(){d&&_(s,"SIGKILL")},1e3*t.timeLimitSeconds+1e3)).unref(),n.n=1,new Promise(function(n,e){var r,a=!1,i=function(n){a||(r=n,_(s,"SIGKILL"),void 0===s.pid&&(a=!0,e(n)))};s.on("error",i),s.stdin.on("error",function(n){"EPIPE"!==n.code&&i(n)}),s.on("close",function(t,i){a||(a=!0,r?e(r):n({status:null!=t?t:void 0,signal:null!=i?i:void 0}))}),s.stdin.end(t.stdin)}).finally(function(){clearTimeout(k),clearTimeout(b)});case 1:if(g=n.v,h=g.status,w=g.signal,void 0!==a){n.n=2;break}B={timeSeconds:0,memoryBytes:0},n.n=4;break;case 2:return n.n=3,J(a);case 3:B=n.v;case 4:return S=(j=B).timeSeconds,L=j.memoryBytes,n.a(2,{stdout:Buffer.concat(l).toString(),stderr:Buffer.concat(p).toString(),status:h,timeSeconds:S,memoryBytes:L,timedOut:d,signal:w,outputLimitExceeded:v})}},n)})),R.apply(this,arguments)}function _(n,e){if(void 0!==n.pid)try{if("win32"===process.platform)return void n.kill(e);process.kill(-n.pid,e)}catch(n){var r="object"===a(n)&&null!==n&&"code"in n?n.code:void 0;if("ESRCH"!==r&&"EPERM"!==r)throw n}}function J(n){return $.apply(this,arguments)}function $(){return($=n(e().m(function n(r){var t,i,o;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,c.readFile(r,"utf8");case 1:t=n.v,n.n=4;break;case 2:if(n.p=2,o=n.v,"ENOENT"===("object"===a(o)&&null!==o&&"code"in o?o.code:void 0)){n.n=3;break}throw o;case 3:return n.a(2,{timeSeconds:0,memoryBytes:0});case 4:if(i=/(\d+(?:[.,]\d+)?) (\d+)\s*$/.exec(t)){n.n=5;break}return n.a(2,{timeSeconds:0,memoryBytes:0});case 5:return n.a(2,{timeSeconds:Number(i[1].replace(",",".")),memoryBytes:1024*Number(i[2])})}},n,null,[[0,2]])}))).apply(this,arguments)}export{q as copyPackageManagerProjectFiles,v as runCommandInTemporaryPackageManagerProject};
2
- //# sourceMappingURL=runCommandInTemporaryPackageManagerProject.js.map
1
+ import e from"node:child_process";import t from"node:fs/promises";import n from"node:os";import r from"node:path";const i={bun:[`package.json`,`bun.lock`,`bun.lockb`],cargo:[`Cargo.toml`,`Cargo.lock`],go:[`go.mod`,`go.sum`],gradle:[`build.gradle`,`build.gradle.kts`,`settings.gradle`,`settings.gradle.kts`,`gradle.properties`,`gradle.lockfile`,`buildscript-gradle.lockfile`,`gradle`,`gradlew`,`gradlew.bat`],maven:[`pom.xml`,`.mvn`,`mvnw`,`mvnw.cmd`],npm:[`package.json`,`package-lock.json`],pnpm:[`package.json`,`pnpm-lock.yaml`,`pnpm-workspace.yaml`],ruby:[`Gemfile`,`Gemfile.lock`,`.ruby-version`],uv:[`pyproject.toml`,`uv.lock`],yarn:[`package.json`,`yarn.lock`,`.yarnrc`,`.yarnrc.yml`,`.yarn`]},a={bun:d,cargo:f,go:p,gradle:m,maven:h,npm:g,pnpm:_,ruby:v,uv:y,yarn:b},o=O();async function s(e){let i=await t.mkdtemp(r.join(n.tmpdir(),e.tempDirPrefix??`exercode-`));try{await t.cp(e.cwd,i,{recursive:!0}),await T({packageManager:e.packageManager,projectDir:e.projectDir,runDir:i,projectFilePaths:e.projectFilePaths});let n=e.env?{...process.env,...e.env}:process.env,r=await l(e.packageManager,i),a=typeof e.command==`function`?e.command({runDir:i}):e.command,o=Date.now(),s=e.outputLimitBytes??52428800,d;if(r&&(d=await D(r,{cwd:i,env:n,outputLimitBytes:s,stdin:``,timeLimitSeconds:e.timeLimitSeconds}),u(d)))return c({elapsedTimeSeconds:(Date.now()-o)/1e3,options:e,result:d});let f=e.timeLimitSeconds-(Date.now()-o)/1e3;if(f<=0)return{stdin:e.stdin??``,stdout:d?.stdout??``,stderr:d?.stderr??``,status:0,timeSeconds:e.timeLimitSeconds+.001,memoryBytes:d?.memoryBytes??0,timedOut:!0,signal:d?.signal,outputLimitExceeded:!1};let p=await D(a,{cwd:i,env:n,outputLimitBytes:s,stdin:e.stdin??``,timeLimitSeconds:f}),m=(Date.now()-o)/1e3;return c(d?{elapsedTimeSeconds:m,options:e,result:{...p,timeSeconds:d.timeSeconds+p.timeSeconds,memoryBytes:Math.max(d.memoryBytes,p.memoryBytes)}}:{elapsedTimeSeconds:m,options:e,result:p})}finally{await t.rm(i,{force:!0,recursive:!0})}}function c(e){return{stdin:e.options.stdin??``,stdout:e.result.stdout,stderr:e.result.stderr,status:e.result.timedOut||e.result.outputLimitExceeded?0:e.result.status,timeSeconds:e.result.timedOut?e.options.timeLimitSeconds+.001:e.result.timeSeconds||e.elapsedTimeSeconds,memoryBytes:e.result.memoryBytes,timedOut:e.result.timedOut,signal:e.result.signal,outputLimitExceeded:e.result.outputLimitExceeded}}function l(e,t){return a[e](t)}function u(e){return e.status!==0||e.timedOut||e.outputLimitExceeded}async function d(e){if(await C(r.join(e,`package.json`)))return await S(e,[`bun.lock`,`bun.lockb`])?[`bun`,`install`,`--frozen-lockfile`,`--silent`]:[`bun`,`install`,`--silent`]}async function f(e){if(await C(r.join(e,`Cargo.toml`)))return await C(r.join(e,`Cargo.lock`))?[`cargo`,`fetch`,`--locked`]:[`cargo`,`fetch`]}async function p(e){if(await C(r.join(e,`go.mod`)))return[`go`,`mod`,`download`]}async function m(e){if(!await S(e,[`build.gradle`,`build.gradle.kts`,`settings.gradle`,`settings.gradle.kts`,`gradlew`,`gradlew.bat`]))return;let t=[`--no-daemon`,`--quiet`,`dependencies`];return process.platform===`win32`?await C(r.join(e,`gradlew.bat`))?[`cmd.exe`,`/c`,`gradlew.bat`,...t]:[`gradle`,...t]:await C(r.join(e,`gradlew`))?[`sh`,`./gradlew`,...t]:[`gradle`,...t]}async function h(e){if(!await C(r.join(e,`pom.xml`)))return;let t=[`-q`,`dependency:go-offline`];return process.platform===`win32`?await C(r.join(e,`mvnw.cmd`))?[`cmd.exe`,`/c`,`mvnw.cmd`,...t]:[`mvn`,...t]:await C(r.join(e,`mvnw`))?[`sh`,`./mvnw`,...t]:[`mvn`,...t]}async function g(e){if(await C(r.join(e,`package.json`)))return await C(r.join(e,`package-lock.json`))?[`npm`,`ci`,`--silent`]:[`npm`,`install`,`--silent`]}async function _(e){if(await C(r.join(e,`package.json`)))return await C(r.join(e,`pnpm-lock.yaml`))?[`pnpm`,`install`,`--frozen-lockfile`,`--silent`]:[`pnpm`,`install`,`--silent`]}async function v(e){if(await C(r.join(e,`Gemfile`)))return await C(r.join(e,`Gemfile.lock`))?[`bundle`,`install`,`--frozen`,`--quiet`]:[`bundle`,`install`,`--quiet`]}async function y(){}async function b(e){if(!await C(r.join(e,`package.json`)))return;let t=await x(e),n=await C(r.join(e,`yarn.lock`));return t?n?[`yarn`,`install`,`--immutable`]:[`yarn`,`install`]:n?[`yarn`,`install`,`--frozen-lockfile`,`--silent`]:[`yarn`,`install`,`--silent`]}async function x(e){if(await C(r.join(e,`.yarnrc.yml`)))return!0;let t=await w(r.join(e,`package.json`)),n=typeof t.packageManager==`string`?t.packageManager:void 0,i=/^yarn@(\d+)/.exec(n??``)?.[1];return i!==void 0&&Number(i)>=2}async function S(e,t){for(let n of t)if(await C(r.join(e,n)))return!0;return!1}async function C(e){try{return await t.access(e),!0}catch(e){if((typeof e==`object`&&e&&`code`in e?e.code:void 0)!==`ENOENT`)throw e;return!1}}async function w(e){try{let n=JSON.parse(await t.readFile(e,`utf8`));return typeof n==`object`&&n&&!Array.isArray(n)?n:{}}catch(e){if(e instanceof SyntaxError||(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`ENOENT`)return{};throw e}}async function T(e){for(let t of e.projectFilePaths??i[e.packageManager])await E(r.join(e.projectDir,t),r.join(e.runDir,t))}async function E(e,n){try{await t.cp(e,n,{recursive:!0})}catch(e){if((typeof e==`object`&&e&&`code`in e?e.code:void 0)!==`ENOENT`)throw e}}async function D(t,n){let i=o===void 0?void 0:r.join(n.cwd,`.exercode-time-result`),a=o===void 0?t:[...o,`--output=${i}`,...t],s=e.spawn(a[0],a.slice(1),{cwd:n.cwd,detached:process.platform!==`win32`,env:n.env,stdio:[`pipe`,`pipe`,`pipe`]}),c=[],l=[],u=0,d=!1,f=!1,p=(e,t)=>{if(u>=n.outputLimitBytes){t.byteLength>0&&(f=!0,k(s,`SIGKILL`));return}let r=n.outputLimitBytes-u,i=t.byteLength>r?t.subarray(0,r):t;e.push(i),u+=i.byteLength,t.byteLength>r&&(f=!0,k(s,`SIGKILL`))};s.stdout.on(`data`,e=>p(c,e)),s.stderr.on(`data`,e=>p(l,e));let m=setTimeout(()=>{d=!0,k(s,`SIGTERM`)},n.timeLimitSeconds*1e3),h=setTimeout(()=>{d&&k(s,`SIGKILL`)},n.timeLimitSeconds*1e3+1e3);h.unref();let{status:g,signal:_}=await new Promise((e,t)=>{let r=!1,i,a=e=>{r||(i=e,k(s,`SIGKILL`),s.pid===void 0&&(r=!0,t(e)))};s.on(`error`,a),s.stdin.on(`error`,e=>{e.code!==`EPIPE`&&a(e)}),s.on(`close`,(n,a)=>{if(!r){if(r=!0,i){t(i);return}e({status:n??void 0,signal:a??void 0})}}),s.stdin.end(n.stdin)}).finally(()=>{clearTimeout(m),clearTimeout(h)}),{timeSeconds:v,memoryBytes:y}=i===void 0?{timeSeconds:0,memoryBytes:0}:await A(i);return{stdout:Buffer.concat(c).toString(),stderr:Buffer.concat(l).toString(),status:g,timeSeconds:v,memoryBytes:y,timedOut:d,signal:_,outputLimitExceeded:f}}function O(){let t=n.platform()===`darwin`?`gtime`:`/usr/bin/time`,r=e.spawnSync(t,[`--version`],{stdio:`ignore`});if(!(r.error||r.status!==0))return[t,`--format`,`%e %M`]}function k(e,t){if(e.pid!==void 0)try{if(process.platform===`win32`){e.kill(t);return}process.kill(-e.pid,t)}catch(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;if(t!==`ESRCH`&&t!==`EPERM`)throw e}}async function A(e){let n;try{n=await t.readFile(e,`utf8`)}catch(e){if((typeof e==`object`&&e&&`code`in e?e.code:void 0)!==`ENOENT`)throw e;return{timeSeconds:0,memoryBytes:0}}let r=/(\d+(?:[.,]\d+)?) (\d+)\s*$/.exec(n);return r?{timeSeconds:Number(r[1].replace(`,`,`.`)),memoryBytes:Number(r[2])*1024}:{timeSeconds:0,memoryBytes:0}}export{T as copyPackageManagerProjectFiles,s as runCommandInTemporaryPackageManagerProject};
2
+ //# sourceMappingURL=runCommandInTemporaryPackageManagerProject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runCommandInTemporaryPackageManagerProject.js","sources":["../../src/helpers/runCommandInTemporaryPackageManagerProject.ts"],"sourcesContent":["import childProcess from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport type PackageManager = 'bun' | 'cargo' | 'go' | 'gradle' | 'maven' | 'npm' | 'pnpm' | 'ruby' | 'uv' | 'yarn';\ntype PackageManagerInstallCommand = readonly [string, ...string[]];\n\nexport interface PackageManagerCommandRunResult {\n stdin: string;\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}\n\nexport interface RunCommandInTemporaryPackageManagerProjectOptions {\n cwd: string;\n projectDir: string;\n packageManager: PackageManager;\n command: readonly [string, ...string[]] | ((context: { runDir: string }) => readonly [string, ...string[]]);\n stdin?: string;\n env?: NodeJS.ProcessEnv;\n timeLimitSeconds: number;\n outputLimitBytes?: number;\n tempDirPrefix?: string;\n projectFilePaths?: readonly string[];\n}\n\nconst packageManagerProjectFilePaths = {\n bun: ['package.json', 'bun.lock', 'bun.lockb'],\n cargo: ['Cargo.toml', 'Cargo.lock'],\n go: ['go.mod', 'go.sum'],\n gradle: [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradle.properties',\n 'gradle.lockfile',\n 'buildscript-gradle.lockfile',\n 'gradle',\n 'gradlew',\n 'gradlew.bat',\n ],\n maven: ['pom.xml', '.mvn', 'mvnw', 'mvnw.cmd'],\n npm: ['package.json', 'package-lock.json'],\n pnpm: ['package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'],\n ruby: ['Gemfile', 'Gemfile.lock', '.ruby-version'],\n uv: ['pyproject.toml', 'uv.lock'],\n yarn: ['package.json', 'yarn.lock', '.yarnrc', '.yarnrc.yml', '.yarn'],\n} as const satisfies Record<PackageManager, readonly string[]>;\n\nconst packageManagerInstallCommandResolvers = {\n bun: resolveBunInstallCommand,\n cargo: resolveCargoInstallCommand,\n go: resolveGoInstallCommand,\n gradle: resolveGradleInstallCommand,\n maven: resolveMavenInstallCommand,\n npm: resolveNpmInstallCommand,\n pnpm: resolvePnpmInstallCommand,\n ruby: resolveRubyInstallCommand,\n uv: resolveUvInstallCommand,\n yarn: resolveYarnInstallCommand,\n} as const satisfies Record<PackageManager, (runDir: string) => Promise<PackageManagerInstallCommand | undefined>>;\n\nconst defaultOutputLimitBytes = 50 * 1024 * 1024;\nconst killGracePeriodMilliseconds = 1000;\nconst timeCommand = resolveTimeCommand();\n\n/**\n * Copies a submission directory to a temporary directory, overlays package\n * manager project files from the problem directory, prepares dependencies,\n * runs a command, and then removes the temporary directory.\n */\nexport async function runCommandInTemporaryPackageManagerProject(\n options: RunCommandInTemporaryPackageManagerProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const runDir = await fs.mkdtemp(path.join(os.tmpdir(), options.tempDirPrefix ?? 'exercode-'));\n try {\n await fs.cp(options.cwd, runDir, { recursive: true });\n await copyPackageManagerProjectFiles({\n packageManager: options.packageManager,\n projectDir: options.projectDir,\n runDir,\n projectFilePaths: options.projectFilePaths,\n });\n\n const env = options.env ? { ...process.env, ...options.env } : process.env;\n const installCommand = await resolveInstallCommand(options.packageManager, runDir);\n const command = typeof options.command === 'function' ? options.command({ runDir }) : options.command;\n const startedAt = Date.now();\n const outputLimitBytes = options.outputLimitBytes ?? defaultOutputLimitBytes;\n let installResult: Awaited<ReturnType<typeof spawnWithInput>> | undefined;\n\n if (installCommand) {\n installResult = await spawnWithInput(installCommand, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: '',\n timeLimitSeconds: options.timeLimitSeconds,\n });\n if (isFailedSpawnResult(installResult)) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds: (Date.now() - startedAt) / 1000,\n options,\n result: installResult,\n });\n }\n }\n\n const remainingTimeLimitSeconds = options.timeLimitSeconds - (Date.now() - startedAt) / 1000;\n if (remainingTimeLimitSeconds <= 0) {\n return {\n stdin: options.stdin ?? '',\n stdout: installResult?.stdout ?? '',\n stderr: installResult?.stderr ?? '',\n status: 0,\n timeSeconds: options.timeLimitSeconds + 1e-3,\n memoryBytes: installResult?.memoryBytes ?? 0,\n timedOut: true,\n signal: installResult?.signal,\n outputLimitExceeded: false,\n };\n }\n\n const result = await spawnWithInput(command, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: options.stdin ?? '',\n timeLimitSeconds: remainingTimeLimitSeconds,\n });\n const elapsedTimeSeconds = (Date.now() - startedAt) / 1000;\n\n if (installResult) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds,\n options,\n result: {\n ...result,\n timeSeconds: installResult.timeSeconds + result.timeSeconds,\n memoryBytes: Math.max(installResult.memoryBytes, result.memoryBytes),\n },\n });\n }\n\n return toPackageManagerCommandRunResult({ elapsedTimeSeconds, options, result });\n } finally {\n await fs.rm(runDir, { force: true, recursive: true });\n }\n}\n\nfunction toPackageManagerCommandRunResult(context: {\n elapsedTimeSeconds: number;\n options: RunCommandInTemporaryPackageManagerProjectOptions;\n result: Awaited<ReturnType<typeof spawnWithInput>>;\n}): PackageManagerCommandRunResult {\n return {\n stdin: context.options.stdin ?? '',\n stdout: context.result.stdout,\n stderr: context.result.stderr,\n status: context.result.timedOut || context.result.outputLimitExceeded ? 0 : context.result.status,\n timeSeconds: context.result.timedOut\n ? context.options.timeLimitSeconds + 1e-3\n : context.result.timeSeconds || context.elapsedTimeSeconds,\n memoryBytes: context.result.memoryBytes,\n timedOut: context.result.timedOut,\n signal: context.result.signal,\n outputLimitExceeded: context.result.outputLimitExceeded,\n };\n}\n\nfunction resolveInstallCommand(\n packageManager: PackageManager,\n runDir: string\n): Promise<PackageManagerInstallCommand | undefined> {\n return packageManagerInstallCommandResolvers[packageManager](runDir);\n}\n\nfunction isFailedSpawnResult(result: Awaited<ReturnType<typeof spawnWithInput>>): boolean {\n return result.status !== 0 || result.timedOut || result.outputLimitExceeded;\n}\n\nasync function resolveBunInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n // Bun supports --silent and it keeps successful preparation output out of judge output buffers.\n return (await hasAnyPath(runDir, ['bun.lock', 'bun.lockb']))\n ? ['bun', 'install', '--frozen-lockfile', '--silent']\n : ['bun', 'install', '--silent'];\n}\n\nasync function resolveCargoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Cargo.toml')))) return undefined;\n return (await pathExists(path.join(runDir, 'Cargo.lock'))) ? ['cargo', 'fetch', '--locked'] : ['cargo', 'fetch'];\n}\n\nasync function resolveGoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'go.mod')))) return undefined;\n return ['go', 'mod', 'download'];\n}\n\nasync function resolveGradleInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (\n !(await hasAnyPath(runDir, [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradlew',\n 'gradlew.bat',\n ]))\n )\n return undefined;\n const args = ['--no-daemon', '--quiet', 'dependencies'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'gradlew.bat')))\n ? ['cmd.exe', '/c', 'gradlew.bat', ...args]\n : ['gradle', ...args];\n }\n return (await pathExists(path.join(runDir, 'gradlew'))) ? ['sh', './gradlew', ...args] : ['gradle', ...args];\n}\n\nasync function resolveMavenInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'pom.xml')))) return undefined;\n const args = ['-q', 'dependency:go-offline'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'mvnw.cmd')))\n ? ['cmd.exe', '/c', 'mvnw.cmd', ...args]\n : ['mvn', ...args];\n }\n return (await pathExists(path.join(runDir, 'mvnw'))) ? ['sh', './mvnw', ...args] : ['mvn', ...args];\n}\n\nasync function resolveNpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'package-lock.json')))\n ? ['npm', 'ci', '--silent']\n : ['npm', 'install', '--silent'];\n}\n\nasync function resolvePnpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'pnpm-lock.yaml')))\n ? ['pnpm', 'install', '--frozen-lockfile', '--silent']\n : ['pnpm', 'install', '--silent'];\n}\n\nasync function resolveRubyInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Gemfile')))) return undefined;\n return (await pathExists(path.join(runDir, 'Gemfile.lock')))\n ? ['bundle', 'install', '--frozen', '--quiet']\n : ['bundle', 'install', '--quiet'];\n}\n\nasync function resolveUvInstallCommand(): Promise<undefined> {\n return undefined;\n}\n\nasync function resolveYarnInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n const isBerry = await isYarnBerryProject(runDir);\n const hasLockfile = await pathExists(path.join(runDir, 'yarn.lock'));\n if (isBerry) return hasLockfile ? ['yarn', 'install', '--immutable'] : ['yarn', 'install'];\n return hasLockfile ? ['yarn', 'install', '--frozen-lockfile', '--silent'] : ['yarn', 'install', '--silent'];\n}\n\nasync function isYarnBerryProject(runDir: string): Promise<boolean> {\n if (await pathExists(path.join(runDir, '.yarnrc.yml'))) return true;\n\n const packageJson = await readJson(path.join(runDir, 'package.json'));\n const packageManager = typeof packageJson.packageManager === 'string' ? packageJson.packageManager : undefined;\n const yarnMajorVersion = /^yarn@(\\d+)/.exec(packageManager ?? '')?.[1];\n return yarnMajorVersion !== undefined && Number(yarnMajorVersion) >= 2;\n}\n\nasync function hasAnyPath(directoryPath: string, relativePaths: readonly string[]): Promise<boolean> {\n for (const relativePath of relativePaths) {\n if (await pathExists(path.join(directoryPath, relativePath))) return true;\n }\n return false;\n}\n\nasync function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath);\n return true;\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return false;\n }\n}\n\nasync function readJson(filePath: string): Promise<Record<string, unknown>> {\n try {\n const parsed = JSON.parse(await fs.readFile(filePath, 'utf8')) as unknown;\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : {};\n } catch (error) {\n if (error instanceof SyntaxError) return {};\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code === 'ENOENT') return {};\n throw error;\n }\n}\n\nexport async function copyPackageManagerProjectFiles(options: {\n packageManager: PackageManager;\n projectDir: string;\n runDir: string;\n projectFilePaths?: readonly string[];\n}): Promise<void> {\n for (const projectFilePath of options.projectFilePaths ?? packageManagerProjectFilePaths[options.packageManager]) {\n await copyPathIfExists(path.join(options.projectDir, projectFilePath), path.join(options.runDir, projectFilePath));\n }\n}\n\nasync function copyPathIfExists(sourcePath: string, destinationPath: string): Promise<void> {\n try {\n await fs.cp(sourcePath, destinationPath, { recursive: true });\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n }\n}\n\nasync function spawnWithInput(\n command: readonly [string, ...string[]],\n context: {\n cwd: string;\n env: NodeJS.ProcessEnv;\n outputLimitBytes: number;\n stdin: string;\n timeLimitSeconds: number;\n }\n): Promise<{\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}> {\n const timeOutputPath = timeCommand === undefined ? undefined : path.join(context.cwd, '.exercode-time-result');\n const spawnedCommand =\n timeCommand === undefined ? command : ([...timeCommand, `--output=${timeOutputPath}`, ...command] as const);\n const subprocess = childProcess.spawn(spawnedCommand[0], spawnedCommand.slice(1), {\n cwd: context.cwd,\n detached: process.platform !== 'win32',\n env: context.env,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n const stdoutChunks: Buffer[] = [];\n const stderrChunks: Buffer[] = [];\n let outputBytes = 0;\n let timedOut = false;\n let outputLimitExceeded = false;\n\n const appendOutputChunk = (chunks: Buffer[], chunk: Buffer): void => {\n if (outputBytes >= context.outputLimitBytes) {\n if (chunk.byteLength > 0) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n return;\n }\n\n const remainingBytes = context.outputLimitBytes - outputBytes;\n const appendedChunk = chunk.byteLength > remainingBytes ? chunk.subarray(0, remainingBytes) : chunk;\n chunks.push(appendedChunk);\n outputBytes += appendedChunk.byteLength;\n\n if (chunk.byteLength > remainingBytes) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n };\n\n subprocess.stdout.on('data', (chunk: Buffer) => appendOutputChunk(stdoutChunks, chunk));\n subprocess.stderr.on('data', (chunk: Buffer) => appendOutputChunk(stderrChunks, chunk));\n\n const timeout = setTimeout(() => {\n timedOut = true;\n killSubprocessGroup(subprocess, 'SIGTERM');\n }, context.timeLimitSeconds * 1000);\n const killTimeout = setTimeout(\n () => {\n if (timedOut) killSubprocessGroup(subprocess, 'SIGKILL');\n },\n context.timeLimitSeconds * 1000 + killGracePeriodMilliseconds\n );\n killTimeout.unref();\n\n const { status, signal } = await new Promise<{ status: number | undefined; signal: NodeJS.Signals | undefined }>(\n (resolve, reject) => {\n let settled = false;\n let pendingError: Error | undefined;\n const failAfterClose = (error: Error): void => {\n if (settled) return;\n pendingError = error;\n killSubprocessGroup(subprocess, 'SIGKILL');\n if (subprocess.pid === undefined) {\n settled = true;\n reject(error);\n }\n };\n subprocess.on('error', failAfterClose);\n subprocess.stdin.on('error', (error: NodeJS.ErrnoException) => {\n if (error.code !== 'EPIPE') failAfterClose(error);\n });\n subprocess.on('close', (code, closeSignal) => {\n if (settled) return;\n settled = true;\n if (pendingError) {\n reject(pendingError);\n return;\n }\n resolve({ status: code ?? undefined, signal: closeSignal ?? undefined });\n });\n subprocess.stdin.end(context.stdin);\n }\n ).finally(() => {\n clearTimeout(timeout);\n clearTimeout(killTimeout);\n });\n\n const { timeSeconds, memoryBytes } =\n timeOutputPath === undefined ? { timeSeconds: 0, memoryBytes: 0 } : await readTimeResult(timeOutputPath);\n\n return {\n stdout: Buffer.concat(stdoutChunks).toString(),\n stderr: Buffer.concat(stderrChunks).toString(),\n status,\n timeSeconds,\n memoryBytes,\n timedOut,\n signal,\n outputLimitExceeded,\n };\n}\n\nfunction resolveTimeCommand(): readonly [string, ...string[]] | undefined {\n const command = os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time';\n const result = childProcess.spawnSync(command, ['--version'], { stdio: 'ignore' });\n if (result.error || result.status !== 0) return undefined;\n\n return [command, '--format', '%e %M'];\n}\n\nfunction killSubprocessGroup(subprocess: childProcess.ChildProcess, signal: NodeJS.Signals): void {\n if (subprocess.pid === undefined) return;\n\n try {\n if (process.platform === 'win32') {\n subprocess.kill(signal);\n return;\n }\n process.kill(-subprocess.pid, signal);\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ESRCH' && code !== 'EPERM') throw error;\n }\n}\n\nasync function readTimeResult(timeOutputPath: string): Promise<{ timeSeconds: number; memoryBytes: number }> {\n let content: string;\n try {\n content = await fs.readFile(timeOutputPath, 'utf8');\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return { timeSeconds: 0, memoryBytes: 0 };\n }\n\n const match = /(\\d+(?:[.,]\\d+)?) (\\d+)\\s*$/.exec(content);\n if (!match) return { timeSeconds: 0, memoryBytes: 0 };\n\n return { timeSeconds: Number(match[1]!.replace(',', '.')), memoryBytes: Number(match[2]) * 1024 };\n}\n"],"names":["command","result","packageManagerProjectFilePaths","bun","cargo","go","gradle","maven","npm","pnpm","ruby","uv","yarn","packageManagerInstallCommandResolvers","_x2","_resolveBunInstallCommand","apply","this","arguments","_x3","_resolveCargoInstallCommand","_x4","_resolveGoInstallCommand","_x5","_resolveGradleInstallCommand","_x6","_resolveMavenInstallCommand","_x7","_resolveNpmInstallCommand","_x8","_resolvePnpmInstallCommand","_x9","_resolveRubyInstallCommand","_resolveUvInstallCommand","_x0","_resolveYarnInstallCommand","timeCommand","os","platform","childProcess","spawnSync","stdio","error","status","runCommandInTemporaryPackageManagerProject","_x","_runCommandInTemporaryPackageManagerProject","_asyncToGenerator","_regenerator","m","_callee","options","_options$tempDirPrefi","runDir","_options$outputLimitB","_options$stdin2","env","installCommand","startedAt","outputLimitBytes","installResult","remainingTimeLimitSeconds","_options$stdin","_installResult$stdout","_installResult","_installResult$stderr","_installResult2","_installResult$memory","_installResult3","_installResult4","elapsedTimeSeconds","w","_context","p","n","fs","mkdtemp","path","join","tmpdir","tempDirPrefix","v","cp","cwd","recursive","copyPackageManagerProjectFiles","packageManager","projectDir","projectFilePaths","_objectSpread","process","resolveInstallCommand","Date","now","spawnWithInput","stdin","timeLimitSeconds","isFailedSpawnResult","a","toPackageManagerCommandRunResult","stdout","stderr","timeSeconds","memoryBytes","timedOut","signal","outputLimitExceeded","Math","max","rm","force","f","context","_context$options$stdi","_callee2","_t","_context2","pathExists","undefined","hasAnyPath","_callee3","_t2","_context3","_callee4","_context4","_callee5","args","_t3","_t4","_context5","concat","_callee6","_t5","_t6","_context6","_callee7","_t7","_context7","_callee8","_t8","_context8","_callee9","_t9","_context9","_callee0","_context0","_callee1","isBerry","hasLockfile","_context1","isYarnBerryProject","_x1","_isYarnBerryProject","_callee10","_exec","packageJson","yarnMajorVersion","_context10","readJson","exec","Number","_x10","_x11","_hasAnyPath","_callee11","directoryPath","relativePaths","_iterator","_step","relativePath","_t0","_context11","_createForOfIteratorHelper","s","done","value","e","_x12","_pathExists","_callee12","filePath","_t1","_context12","access","_typeof","code","_x13","_readJson","_callee13","parsed","_t10","_t11","_context13","JSON","readFile","parse","call","Array","isArray","SyntaxError","_x14","_copyPackageManagerProjectFiles","_callee14","_options$projectFileP","_iterator2","_step2","projectFilePath","_t12","_context14","copyPathIfExists","_x15","_x16","_copyPathIfExists","_callee15","sourcePath","destinationPath","_t13","_context15","_x17","_x18","_spawnWithInput","_callee16","timeOutputPath","spawnedCommand","subprocess","stdoutChunks","stderrChunks","outputBytes","appendOutputChunk","timeout","killTimeout","_yield$Promise$finall","_ref","_t14","_context16","_toConsumableArray","spawn","slice","detached","chunks","chunk","byteLength","killSubprocessGroup","remainingBytes","appendedChunk","subarray","push","on","setTimeout","unref","Promise","resolve","reject","pendingError","settled","failAfterClose","pid","closeSignal","end","clearTimeout","readTimeResult","Buffer","toString","kill","_x19","_readTimeResult","_callee17","content","match","_t15","_context17","replace"],"mappings":"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"}
1
+ {"version":3,"file":"runCommandInTemporaryPackageManagerProject.js","names":[],"sources":["../../src/helpers/runCommandInTemporaryPackageManagerProject.ts"],"sourcesContent":["import childProcess from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport type PackageManager = 'bun' | 'cargo' | 'go' | 'gradle' | 'maven' | 'npm' | 'pnpm' | 'ruby' | 'uv' | 'yarn';\ntype PackageManagerInstallCommand = readonly [string, ...string[]];\n\nexport interface PackageManagerCommandRunResult {\n stdin: string;\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}\n\nexport interface RunCommandInTemporaryPackageManagerProjectOptions {\n cwd: string;\n projectDir: string;\n packageManager: PackageManager;\n command: readonly [string, ...string[]] | ((context: { runDir: string }) => readonly [string, ...string[]]);\n stdin?: string;\n env?: NodeJS.ProcessEnv;\n timeLimitSeconds: number;\n outputLimitBytes?: number;\n tempDirPrefix?: string;\n projectFilePaths?: readonly string[];\n}\n\nconst packageManagerProjectFilePaths = {\n bun: ['package.json', 'bun.lock', 'bun.lockb'],\n cargo: ['Cargo.toml', 'Cargo.lock'],\n go: ['go.mod', 'go.sum'],\n gradle: [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradle.properties',\n 'gradle.lockfile',\n 'buildscript-gradle.lockfile',\n 'gradle',\n 'gradlew',\n 'gradlew.bat',\n ],\n maven: ['pom.xml', '.mvn', 'mvnw', 'mvnw.cmd'],\n npm: ['package.json', 'package-lock.json'],\n pnpm: ['package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'],\n ruby: ['Gemfile', 'Gemfile.lock', '.ruby-version'],\n uv: ['pyproject.toml', 'uv.lock'],\n yarn: ['package.json', 'yarn.lock', '.yarnrc', '.yarnrc.yml', '.yarn'],\n} as const satisfies Record<PackageManager, readonly string[]>;\n\nconst packageManagerInstallCommandResolvers = {\n bun: resolveBunInstallCommand,\n cargo: resolveCargoInstallCommand,\n go: resolveGoInstallCommand,\n gradle: resolveGradleInstallCommand,\n maven: resolveMavenInstallCommand,\n npm: resolveNpmInstallCommand,\n pnpm: resolvePnpmInstallCommand,\n ruby: resolveRubyInstallCommand,\n uv: resolveUvInstallCommand,\n yarn: resolveYarnInstallCommand,\n} as const satisfies Record<PackageManager, (runDir: string) => Promise<PackageManagerInstallCommand | undefined>>;\n\nconst defaultOutputLimitBytes = 50 * 1024 * 1024;\nconst killGracePeriodMilliseconds = 1000;\nconst timeCommand = resolveTimeCommand();\n\n/**\n * Copies a submission directory to a temporary directory, overlays package\n * manager project files from the problem directory, prepares dependencies,\n * runs a command, and then removes the temporary directory.\n */\nexport async function runCommandInTemporaryPackageManagerProject(\n options: RunCommandInTemporaryPackageManagerProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const runDir = await fs.mkdtemp(path.join(os.tmpdir(), options.tempDirPrefix ?? 'exercode-'));\n try {\n await fs.cp(options.cwd, runDir, { recursive: true });\n await copyPackageManagerProjectFiles({\n packageManager: options.packageManager,\n projectDir: options.projectDir,\n runDir,\n projectFilePaths: options.projectFilePaths,\n });\n\n const env = options.env ? { ...process.env, ...options.env } : process.env;\n const installCommand = await resolveInstallCommand(options.packageManager, runDir);\n const command = typeof options.command === 'function' ? options.command({ runDir }) : options.command;\n const startedAt = Date.now();\n const outputLimitBytes = options.outputLimitBytes ?? defaultOutputLimitBytes;\n let installResult: Awaited<ReturnType<typeof spawnWithInput>> | undefined;\n\n if (installCommand) {\n installResult = await spawnWithInput(installCommand, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: '',\n timeLimitSeconds: options.timeLimitSeconds,\n });\n if (isFailedSpawnResult(installResult)) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds: (Date.now() - startedAt) / 1000,\n options,\n result: installResult,\n });\n }\n }\n\n const remainingTimeLimitSeconds = options.timeLimitSeconds - (Date.now() - startedAt) / 1000;\n if (remainingTimeLimitSeconds <= 0) {\n return {\n stdin: options.stdin ?? '',\n stdout: installResult?.stdout ?? '',\n stderr: installResult?.stderr ?? '',\n status: 0,\n timeSeconds: options.timeLimitSeconds + 1e-3,\n memoryBytes: installResult?.memoryBytes ?? 0,\n timedOut: true,\n signal: installResult?.signal,\n outputLimitExceeded: false,\n };\n }\n\n const result = await spawnWithInput(command, {\n cwd: runDir,\n env,\n outputLimitBytes,\n stdin: options.stdin ?? '',\n timeLimitSeconds: remainingTimeLimitSeconds,\n });\n const elapsedTimeSeconds = (Date.now() - startedAt) / 1000;\n\n if (installResult) {\n return toPackageManagerCommandRunResult({\n elapsedTimeSeconds,\n options,\n result: {\n ...result,\n timeSeconds: installResult.timeSeconds + result.timeSeconds,\n memoryBytes: Math.max(installResult.memoryBytes, result.memoryBytes),\n },\n });\n }\n\n return toPackageManagerCommandRunResult({ elapsedTimeSeconds, options, result });\n } finally {\n await fs.rm(runDir, { force: true, recursive: true });\n }\n}\n\nfunction toPackageManagerCommandRunResult(context: {\n elapsedTimeSeconds: number;\n options: RunCommandInTemporaryPackageManagerProjectOptions;\n result: Awaited<ReturnType<typeof spawnWithInput>>;\n}): PackageManagerCommandRunResult {\n return {\n stdin: context.options.stdin ?? '',\n stdout: context.result.stdout,\n stderr: context.result.stderr,\n status: context.result.timedOut || context.result.outputLimitExceeded ? 0 : context.result.status,\n timeSeconds: context.result.timedOut\n ? context.options.timeLimitSeconds + 1e-3\n : context.result.timeSeconds || context.elapsedTimeSeconds,\n memoryBytes: context.result.memoryBytes,\n timedOut: context.result.timedOut,\n signal: context.result.signal,\n outputLimitExceeded: context.result.outputLimitExceeded,\n };\n}\n\nfunction resolveInstallCommand(\n packageManager: PackageManager,\n runDir: string\n): Promise<PackageManagerInstallCommand | undefined> {\n return packageManagerInstallCommandResolvers[packageManager](runDir);\n}\n\nfunction isFailedSpawnResult(result: Awaited<ReturnType<typeof spawnWithInput>>): boolean {\n return result.status !== 0 || result.timedOut || result.outputLimitExceeded;\n}\n\nasync function resolveBunInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n // Bun supports --silent and it keeps successful preparation output out of judge output buffers.\n return (await hasAnyPath(runDir, ['bun.lock', 'bun.lockb']))\n ? ['bun', 'install', '--frozen-lockfile', '--silent']\n : ['bun', 'install', '--silent'];\n}\n\nasync function resolveCargoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Cargo.toml')))) return undefined;\n return (await pathExists(path.join(runDir, 'Cargo.lock'))) ? ['cargo', 'fetch', '--locked'] : ['cargo', 'fetch'];\n}\n\nasync function resolveGoInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'go.mod')))) return undefined;\n return ['go', 'mod', 'download'];\n}\n\nasync function resolveGradleInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (\n !(await hasAnyPath(runDir, [\n 'build.gradle',\n 'build.gradle.kts',\n 'settings.gradle',\n 'settings.gradle.kts',\n 'gradlew',\n 'gradlew.bat',\n ]))\n )\n return undefined;\n const args = ['--no-daemon', '--quiet', 'dependencies'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'gradlew.bat')))\n ? ['cmd.exe', '/c', 'gradlew.bat', ...args]\n : ['gradle', ...args];\n }\n return (await pathExists(path.join(runDir, 'gradlew'))) ? ['sh', './gradlew', ...args] : ['gradle', ...args];\n}\n\nasync function resolveMavenInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'pom.xml')))) return undefined;\n const args = ['-q', 'dependency:go-offline'] as const;\n if (process.platform === 'win32') {\n return (await pathExists(path.join(runDir, 'mvnw.cmd')))\n ? ['cmd.exe', '/c', 'mvnw.cmd', ...args]\n : ['mvn', ...args];\n }\n return (await pathExists(path.join(runDir, 'mvnw'))) ? ['sh', './mvnw', ...args] : ['mvn', ...args];\n}\n\nasync function resolveNpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'package-lock.json')))\n ? ['npm', 'ci', '--silent']\n : ['npm', 'install', '--silent'];\n}\n\nasync function resolvePnpmInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n return (await pathExists(path.join(runDir, 'pnpm-lock.yaml')))\n ? ['pnpm', 'install', '--frozen-lockfile', '--silent']\n : ['pnpm', 'install', '--silent'];\n}\n\nasync function resolveRubyInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'Gemfile')))) return undefined;\n return (await pathExists(path.join(runDir, 'Gemfile.lock')))\n ? ['bundle', 'install', '--frozen', '--quiet']\n : ['bundle', 'install', '--quiet'];\n}\n\nasync function resolveUvInstallCommand(): Promise<undefined> {\n return undefined;\n}\n\nasync function resolveYarnInstallCommand(runDir: string): Promise<PackageManagerInstallCommand | undefined> {\n if (!(await pathExists(path.join(runDir, 'package.json')))) return undefined;\n const isBerry = await isYarnBerryProject(runDir);\n const hasLockfile = await pathExists(path.join(runDir, 'yarn.lock'));\n if (isBerry) return hasLockfile ? ['yarn', 'install', '--immutable'] : ['yarn', 'install'];\n return hasLockfile ? ['yarn', 'install', '--frozen-lockfile', '--silent'] : ['yarn', 'install', '--silent'];\n}\n\nasync function isYarnBerryProject(runDir: string): Promise<boolean> {\n if (await pathExists(path.join(runDir, '.yarnrc.yml'))) return true;\n\n const packageJson = await readJson(path.join(runDir, 'package.json'));\n const packageManager = typeof packageJson.packageManager === 'string' ? packageJson.packageManager : undefined;\n const yarnMajorVersion = /^yarn@(\\d+)/.exec(packageManager ?? '')?.[1];\n return yarnMajorVersion !== undefined && Number(yarnMajorVersion) >= 2;\n}\n\nasync function hasAnyPath(directoryPath: string, relativePaths: readonly string[]): Promise<boolean> {\n for (const relativePath of relativePaths) {\n if (await pathExists(path.join(directoryPath, relativePath))) return true;\n }\n return false;\n}\n\nasync function pathExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath);\n return true;\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return false;\n }\n}\n\nasync function readJson(filePath: string): Promise<Record<string, unknown>> {\n try {\n const parsed = JSON.parse(await fs.readFile(filePath, 'utf8')) as unknown;\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : {};\n } catch (error) {\n if (error instanceof SyntaxError) return {};\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code === 'ENOENT') return {};\n throw error;\n }\n}\n\nexport async function copyPackageManagerProjectFiles(options: {\n packageManager: PackageManager;\n projectDir: string;\n runDir: string;\n projectFilePaths?: readonly string[];\n}): Promise<void> {\n for (const projectFilePath of options.projectFilePaths ?? packageManagerProjectFilePaths[options.packageManager]) {\n await copyPathIfExists(path.join(options.projectDir, projectFilePath), path.join(options.runDir, projectFilePath));\n }\n}\n\nasync function copyPathIfExists(sourcePath: string, destinationPath: string): Promise<void> {\n try {\n await fs.cp(sourcePath, destinationPath, { recursive: true });\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n }\n}\n\nasync function spawnWithInput(\n command: readonly [string, ...string[]],\n context: {\n cwd: string;\n env: NodeJS.ProcessEnv;\n outputLimitBytes: number;\n stdin: string;\n timeLimitSeconds: number;\n }\n): Promise<{\n stdout: string;\n stderr: string;\n status: number | undefined;\n timeSeconds: number;\n memoryBytes: number;\n timedOut: boolean;\n signal: NodeJS.Signals | undefined;\n outputLimitExceeded: boolean;\n}> {\n const timeOutputPath = timeCommand === undefined ? undefined : path.join(context.cwd, '.exercode-time-result');\n const spawnedCommand =\n timeCommand === undefined ? command : ([...timeCommand, `--output=${timeOutputPath}`, ...command] as const);\n const subprocess = childProcess.spawn(spawnedCommand[0], spawnedCommand.slice(1), {\n cwd: context.cwd,\n detached: process.platform !== 'win32',\n env: context.env,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n const stdoutChunks: Buffer[] = [];\n const stderrChunks: Buffer[] = [];\n let outputBytes = 0;\n let timedOut = false;\n let outputLimitExceeded = false;\n\n const appendOutputChunk = (chunks: Buffer[], chunk: Buffer): void => {\n if (outputBytes >= context.outputLimitBytes) {\n if (chunk.byteLength > 0) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n return;\n }\n\n const remainingBytes = context.outputLimitBytes - outputBytes;\n const appendedChunk = chunk.byteLength > remainingBytes ? chunk.subarray(0, remainingBytes) : chunk;\n chunks.push(appendedChunk);\n outputBytes += appendedChunk.byteLength;\n\n if (chunk.byteLength > remainingBytes) {\n outputLimitExceeded = true;\n killSubprocessGroup(subprocess, 'SIGKILL');\n }\n };\n\n subprocess.stdout.on('data', (chunk: Buffer) => appendOutputChunk(stdoutChunks, chunk));\n subprocess.stderr.on('data', (chunk: Buffer) => appendOutputChunk(stderrChunks, chunk));\n\n const timeout = setTimeout(() => {\n timedOut = true;\n killSubprocessGroup(subprocess, 'SIGTERM');\n }, context.timeLimitSeconds * 1000);\n const killTimeout = setTimeout(\n () => {\n if (timedOut) killSubprocessGroup(subprocess, 'SIGKILL');\n },\n context.timeLimitSeconds * 1000 + killGracePeriodMilliseconds\n );\n killTimeout.unref();\n\n const { status, signal } = await new Promise<{ status: number | undefined; signal: NodeJS.Signals | undefined }>(\n (resolve, reject) => {\n let settled = false;\n let pendingError: Error | undefined;\n const failAfterClose = (error: Error): void => {\n if (settled) return;\n pendingError = error;\n killSubprocessGroup(subprocess, 'SIGKILL');\n if (subprocess.pid === undefined) {\n settled = true;\n reject(error);\n }\n };\n subprocess.on('error', failAfterClose);\n subprocess.stdin.on('error', (error: NodeJS.ErrnoException) => {\n if (error.code !== 'EPIPE') failAfterClose(error);\n });\n subprocess.on('close', (code, closeSignal) => {\n if (settled) return;\n settled = true;\n if (pendingError) {\n reject(pendingError);\n return;\n }\n resolve({ status: code ?? undefined, signal: closeSignal ?? undefined });\n });\n subprocess.stdin.end(context.stdin);\n }\n ).finally(() => {\n clearTimeout(timeout);\n clearTimeout(killTimeout);\n });\n\n const { timeSeconds, memoryBytes } =\n timeOutputPath === undefined ? { timeSeconds: 0, memoryBytes: 0 } : await readTimeResult(timeOutputPath);\n\n return {\n stdout: Buffer.concat(stdoutChunks).toString(),\n stderr: Buffer.concat(stderrChunks).toString(),\n status,\n timeSeconds,\n memoryBytes,\n timedOut,\n signal,\n outputLimitExceeded,\n };\n}\n\nfunction resolveTimeCommand(): readonly [string, ...string[]] | undefined {\n const command = os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time';\n const result = childProcess.spawnSync(command, ['--version'], { stdio: 'ignore' });\n if (result.error || result.status !== 0) return undefined;\n\n return [command, '--format', '%e %M'];\n}\n\nfunction killSubprocessGroup(subprocess: childProcess.ChildProcess, signal: NodeJS.Signals): void {\n if (subprocess.pid === undefined) return;\n\n try {\n if (process.platform === 'win32') {\n subprocess.kill(signal);\n return;\n }\n process.kill(-subprocess.pid, signal);\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ESRCH' && code !== 'EPERM') throw error;\n }\n}\n\nasync function readTimeResult(timeOutputPath: string): Promise<{ timeSeconds: number; memoryBytes: number }> {\n let content: string;\n try {\n content = await fs.readFile(timeOutputPath, 'utf8');\n } catch (error) {\n const code =\n typeof error === 'object' && error !== null && 'code' in error ? (error as { code: unknown }).code : undefined;\n if (code !== 'ENOENT') throw error;\n return { timeSeconds: 0, memoryBytes: 0 };\n }\n\n const match = /(\\d+(?:[.,]\\d+)?) (\\d+)\\s*$/.exec(content);\n if (!match) return { timeSeconds: 0, memoryBytes: 0 };\n\n return { timeSeconds: Number(match[1]!.replace(',', '.')), memoryBytes: Number(match[2]) * 1024 };\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var r=require("../_virtual/_rollupPluginBabelHelpers.cjs"),e=require("./runCommandInTemporaryPackageManagerProject.cjs"),a=["pythonArgs","uvArgs"],o=["main.py"];exports.runPythonInTemporaryUvProject=function(n){var t=n.pythonArgs,u=void 0===t?o:t,c=n.uvArgs,p=void 0===c?[]:c,s=r.objectWithoutProperties(n,a);return e.runCommandInTemporaryPackageManagerProject(r.objectSpread2(r.objectSpread2({},s),{},{packageManager:"uv",command:["uv","run","--quiet","--no-progress"].concat(r.toConsumableArray(p),["python"],r.toConsumableArray(u))}))};
2
- //# sourceMappingURL=runPythonInTemporaryUvProject.cjs.map
1
+ "use strict";const e=require("./runCommandInTemporaryPackageManagerProject.cjs"),t=[`main.py`];function n(n){let{pythonArgs:r=t,uvArgs:i=[],...a}=n;return e.runCommandInTemporaryPackageManagerProject({...a,packageManager:`uv`,command:[`uv`,`run`,`--quiet`,`--no-progress`,...i,`python`,...r]})}exports.runPythonInTemporaryUvProject=n;
2
+ //# sourceMappingURL=runPythonInTemporaryUvProject.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"runPythonInTemporaryUvProject.cjs","sources":["../../src/helpers/runPythonInTemporaryUvProject.ts"],"sourcesContent":["import {\n type PackageManagerCommandRunResult,\n runCommandInTemporaryPackageManagerProject,\n type RunCommandInTemporaryPackageManagerProjectOptions,\n} from './runCommandInTemporaryPackageManagerProject.js';\n\nexport interface RunPythonInTemporaryUvProjectOptions extends Omit<\n RunCommandInTemporaryPackageManagerProjectOptions,\n 'command' | 'packageManager'\n> {\n pythonArgs?: readonly [string, ...string[]];\n uvArgs?: readonly string[];\n}\n\nconst defaultPythonArgs = ['main.py'] as const;\n\n/**\n * Runs a Python command inside a temporary uv project created from a submission\n * directory and the problem's `pyproject.toml` / `uv.lock`.\n */\nexport function runPythonInTemporaryUvProject(\n options: RunPythonInTemporaryUvProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const { pythonArgs = defaultPythonArgs, uvArgs = [], ...restOptions } = options;\n return runCommandInTemporaryPackageManagerProject({\n ...restOptions,\n packageManager: 'uv',\n command: ['uv', 'run', '--quiet', '--no-progress', ...uvArgs, 'python', ...pythonArgs] as const,\n });\n}\n"],"names":["defaultPythonArgs","options","_options$pythonArgs","pythonArgs","_options$uvArgs","uvArgs","restOptions","_objectWithoutProperties","_excluded","runCommandInTemporaryPackageManagerProject","_objectSpread","packageManager","command","concat","_toConsumableArray"],"mappings":"gKAcMA,EAAoB,CAAC,iDAMpB,SACLC,GAEA,IAAAC,EAAwED,EAAhEE,WAAAA,WAAUD,EAAGF,EAAiBE,EAAAE,EAAkCH,EAAhCI,OAAAA,WAAMD,EAAG,GAAEA,EAAKE,EAAWC,EAAAA,wBAAKN,EAAOO,GAC/E,OAAOC,EAAAA,2CAA0CC,EAAAA,cAAAA,EAAAA,iBAC5CJ,GAAW,GAAA,CACdK,eAAgB,KAChBC,SAAU,KAAM,MAAO,UAAW,iBAAeC,OAAAC,EAAAA,kBAAKT,GAAM,CAAE,UAAQS,EAAAA,kBAAKX,MAE/E"}
1
+ {"version":3,"file":"runPythonInTemporaryUvProject.cjs","names":["runCommandInTemporaryPackageManagerProject"],"sources":["../../src/helpers/runPythonInTemporaryUvProject.ts"],"sourcesContent":["import {\n type PackageManagerCommandRunResult,\n runCommandInTemporaryPackageManagerProject,\n type RunCommandInTemporaryPackageManagerProjectOptions,\n} from './runCommandInTemporaryPackageManagerProject.js';\n\nexport interface RunPythonInTemporaryUvProjectOptions extends Omit<\n RunCommandInTemporaryPackageManagerProjectOptions,\n 'command' | 'packageManager'\n> {\n pythonArgs?: readonly [string, ...string[]];\n uvArgs?: readonly string[];\n}\n\nconst defaultPythonArgs = ['main.py'] as const;\n\n/**\n * Runs a Python command inside a temporary uv project created from a submission\n * directory and the problem's `pyproject.toml` / `uv.lock`.\n */\nexport function runPythonInTemporaryUvProject(\n options: RunPythonInTemporaryUvProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const { pythonArgs = defaultPythonArgs, uvArgs = [], ...restOptions } = options;\n return runCommandInTemporaryPackageManagerProject({\n ...restOptions,\n packageManager: 'uv',\n command: ['uv', 'run', '--quiet', '--no-progress', ...uvArgs, 'python', ...pythonArgs] as const,\n });\n}\n"],"mappings":"iFAcM,EAAoB,CAAC,SAAS,EAMpC,SAAgB,EACd,EACyC,CACzC,GAAM,CAAE,aAAa,EAAmB,SAAS,CAAC,EAAG,GAAG,GAAgB,EACxE,OAAOA,EAAAA,2CAA2C,CAChD,GAAG,EACH,eAAgB,KAChB,QAAS,CAAC,KAAM,MAAO,UAAW,gBAAiB,GAAG,EAAQ,SAAU,GAAG,CAAU,CACvF,CAAC,CACH"}
@@ -1,2 +1,2 @@
1
- import{objectWithoutProperties as r,objectSpread2 as o,toConsumableArray as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{runCommandInTemporaryPackageManagerProject as e}from"./runCommandInTemporaryPackageManagerProject.js";var n=["pythonArgs","uvArgs"],t=["main.py"];function p(p){var s=p.pythonArgs,u=void 0===s?t:s,i=p.uvArgs,m=void 0===i?[]:i,g=r(p,n);return e(o(o({},g),{},{packageManager:"uv",command:["uv","run","--quiet","--no-progress"].concat(a(m),["python"],a(u))}))}export{p as runPythonInTemporaryUvProject};
2
- //# sourceMappingURL=runPythonInTemporaryUvProject.js.map
1
+ import{runCommandInTemporaryPackageManagerProject as e}from"./runCommandInTemporaryPackageManagerProject.js";const t=[`main.py`];function n(n){let{pythonArgs:r=t,uvArgs:i=[],...a}=n;return e({...a,packageManager:`uv`,command:[`uv`,`run`,`--quiet`,`--no-progress`,...i,`python`,...r]})}export{n as runPythonInTemporaryUvProject};
2
+ //# sourceMappingURL=runPythonInTemporaryUvProject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runPythonInTemporaryUvProject.js","sources":["../../src/helpers/runPythonInTemporaryUvProject.ts"],"sourcesContent":["import {\n type PackageManagerCommandRunResult,\n runCommandInTemporaryPackageManagerProject,\n type RunCommandInTemporaryPackageManagerProjectOptions,\n} from './runCommandInTemporaryPackageManagerProject.js';\n\nexport interface RunPythonInTemporaryUvProjectOptions extends Omit<\n RunCommandInTemporaryPackageManagerProjectOptions,\n 'command' | 'packageManager'\n> {\n pythonArgs?: readonly [string, ...string[]];\n uvArgs?: readonly string[];\n}\n\nconst defaultPythonArgs = ['main.py'] as const;\n\n/**\n * Runs a Python command inside a temporary uv project created from a submission\n * directory and the problem's `pyproject.toml` / `uv.lock`.\n */\nexport function runPythonInTemporaryUvProject(\n options: RunPythonInTemporaryUvProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const { pythonArgs = defaultPythonArgs, uvArgs = [], ...restOptions } = options;\n return runCommandInTemporaryPackageManagerProject({\n ...restOptions,\n packageManager: 'uv',\n command: ['uv', 'run', '--quiet', '--no-progress', ...uvArgs, 'python', ...pythonArgs] as const,\n });\n}\n"],"names":["defaultPythonArgs","runPythonInTemporaryUvProject","options","_options$pythonArgs","pythonArgs","_options$uvArgs","uvArgs","restOptions","_objectWithoutProperties","_excluded","runCommandInTemporaryPackageManagerProject","_objectSpread","packageManager","command","concat","_toConsumableArray"],"mappings":"wQAcMA,EAAoB,CAAC,WAMpB,SAASC,EACdC,GAEA,IAAAC,EAAwED,EAAhEE,WAAAA,WAAUD,EAAGH,EAAiBG,EAAAE,EAAkCH,EAAhCI,OAAAA,WAAMD,EAAG,GAAEA,EAAKE,EAAWC,EAAKN,EAAOO,GAC/E,OAAOC,EAA0CC,EAAAA,KAC5CJ,GAAW,GAAA,CACdK,eAAgB,KAChBC,SAAU,KAAM,MAAO,UAAW,iBAAeC,OAAAC,EAAKT,GAAM,CAAE,UAAQS,EAAKX,MAE/E"}
1
+ {"version":3,"file":"runPythonInTemporaryUvProject.js","names":[],"sources":["../../src/helpers/runPythonInTemporaryUvProject.ts"],"sourcesContent":["import {\n type PackageManagerCommandRunResult,\n runCommandInTemporaryPackageManagerProject,\n type RunCommandInTemporaryPackageManagerProjectOptions,\n} from './runCommandInTemporaryPackageManagerProject.js';\n\nexport interface RunPythonInTemporaryUvProjectOptions extends Omit<\n RunCommandInTemporaryPackageManagerProjectOptions,\n 'command' | 'packageManager'\n> {\n pythonArgs?: readonly [string, ...string[]];\n uvArgs?: readonly string[];\n}\n\nconst defaultPythonArgs = ['main.py'] as const;\n\n/**\n * Runs a Python command inside a temporary uv project created from a submission\n * directory and the problem's `pyproject.toml` / `uv.lock`.\n */\nexport function runPythonInTemporaryUvProject(\n options: RunPythonInTemporaryUvProjectOptions\n): Promise<PackageManagerCommandRunResult> {\n const { pythonArgs = defaultPythonArgs, uvArgs = [], ...restOptions } = options;\n return runCommandInTemporaryPackageManagerProject({\n ...restOptions,\n packageManager: 'uv',\n command: ['uv', 'run', '--quiet', '--no-progress', ...uvArgs, 'python', ...pythonArgs] as const,\n });\n}\n"],"mappings":"6GAcA,MAAM,EAAoB,CAAC,SAAS,EAMpC,SAAgB,EACd,EACyC,CACzC,GAAM,CAAE,aAAa,EAAmB,SAAS,CAAC,EAAG,GAAG,GAAgB,EACxE,OAAO,EAA2C,CAChD,GAAG,EACH,eAAgB,KAChB,QAAS,CAAC,KAAM,MAAO,UAAW,gBAAiB,GAAG,EAAQ,SAAU,GAAG,CAAU,CACvF,CAAC,CACH"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("../types/language.cjs"),a=Object.fromEntries(Object.entries(r.languageIdToDefinition).flatMap(function(r){var a=e.slicedToArray(r,2),t=a[0],i=a[1];return i.grammer?[[t,i.grammer]]:[]}));exports.languageIdToSourceCodeGrammar=a;
2
- //# sourceMappingURL=sourceCodeGrammars.cjs.map
1
+ "use strict";const e=require("../types/language.cjs"),t=Object.fromEntries(Object.entries(e.languageIdToDefinition).flatMap(([e,t])=>t.grammer?[[e,t.grammer]]:[]));exports.languageIdToSourceCodeGrammar=t;
2
+ //# sourceMappingURL=sourceCodeGrammars.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceCodeGrammars.cjs","sources":["../../src/helpers/sourceCodeGrammars.ts"],"sourcesContent":["import type { SourceCodeGrammar } from './removeCommentsInSourceCode.js';\nimport { languageIdToDefinition } from '../types/language.js';\n\nexport const languageIdToSourceCodeGrammar = Object.fromEntries(\n Object.entries(languageIdToDefinition).flatMap(([languageId, languageDefinition]) =>\n languageDefinition.grammer ? [[languageId, languageDefinition.grammer] as const] : []\n )\n) as Readonly<Record<string, SourceCodeGrammar | undefined>>;\n"],"names":["languageIdToSourceCodeGrammar","Object","fromEntries","entries","languageIdToDefinition","flatMap","_ref","_ref2","_slicedToArray","languageId","languageDefinition","grammer"],"mappings":"2GAGaA,EAAgCC,OAAOC,YAClDD,OAAOE,QAAQC,0BAAwBC,QAAQ,SAAAC,GAAA,IAAAC,EAAAC,EAAAA,cAAAF,EAAA,GAAEG,EAAUF,EAAA,GAAEG,EAAkBH,EAAA,GAAA,OAC7EG,EAAmBC,QAAU,CAAC,CAACF,EAAYC,EAAmBC,UAAqB,EAAE"}
1
+ {"version":3,"file":"sourceCodeGrammars.cjs","names":["languageIdToDefinition"],"sources":["../../src/helpers/sourceCodeGrammars.ts"],"sourcesContent":["import type { SourceCodeGrammar } from './removeCommentsInSourceCode.js';\nimport { languageIdToDefinition } from '../types/language.js';\n\nexport const languageIdToSourceCodeGrammar = Object.fromEntries(\n Object.entries(languageIdToDefinition).flatMap(([languageId, languageDefinition]) =>\n languageDefinition.grammer ? [[languageId, languageDefinition.grammer] as const] : []\n )\n) as Readonly<Record<string, SourceCodeGrammar | undefined>>;\n"],"mappings":"sDAGa,EAAgC,OAAO,YAClD,OAAO,QAAQA,EAAAA,sBAAsB,CAAC,CAAC,SAAS,CAAC,EAAY,KAC3D,EAAmB,QAAU,CAAC,CAAC,EAAY,EAAmB,OAAO,CAAU,EAAI,CAAC,CACtF,CACF"}
@@ -1,2 +1,2 @@
1
- import{slicedToArray as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{languageIdToDefinition as e}from"../types/language.js";var a=Object.fromEntries(Object.entries(e).flatMap(function(e){var a=r(e,2),t=a[0],l=a[1];return l.grammer?[[t,l.grammer]]:[]}));export{a as languageIdToSourceCodeGrammar};
2
- //# sourceMappingURL=sourceCodeGrammars.js.map
1
+ import{languageIdToDefinition as e}from"../types/language.js";const t=Object.fromEntries(Object.entries(e).flatMap(([e,t])=>t.grammer?[[e,t.grammer]]:[]));export{t as languageIdToSourceCodeGrammar};
2
+ //# sourceMappingURL=sourceCodeGrammars.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceCodeGrammars.js","sources":["../../src/helpers/sourceCodeGrammars.ts"],"sourcesContent":["import type { SourceCodeGrammar } from './removeCommentsInSourceCode.js';\nimport { languageIdToDefinition } from '../types/language.js';\n\nexport const languageIdToSourceCodeGrammar = Object.fromEntries(\n Object.entries(languageIdToDefinition).flatMap(([languageId, languageDefinition]) =>\n languageDefinition.grammer ? [[languageId, languageDefinition.grammer] as const] : []\n )\n) as Readonly<Record<string, SourceCodeGrammar | undefined>>;\n"],"names":["languageIdToSourceCodeGrammar","Object","fromEntries","entries","languageIdToDefinition","flatMap","_ref","_ref2","_slicedToArray","languageId","languageDefinition","grammer"],"mappings":"2IAGaA,EAAgCC,OAAOC,YAClDD,OAAOE,QAAQC,GAAwBC,QAAQ,SAAAC,GAAA,IAAAC,EAAAC,EAAAF,EAAA,GAAEG,EAAUF,EAAA,GAAEG,EAAkBH,EAAA,GAAA,OAC7EG,EAAmBC,QAAU,CAAC,CAACF,EAAYC,EAAmBC,UAAqB,EAAE"}
1
+ {"version":3,"file":"sourceCodeGrammars.js","names":[],"sources":["../../src/helpers/sourceCodeGrammars.ts"],"sourcesContent":["import type { SourceCodeGrammar } from './removeCommentsInSourceCode.js';\nimport { languageIdToDefinition } from '../types/language.js';\n\nexport const languageIdToSourceCodeGrammar = Object.fromEntries(\n Object.entries(languageIdToDefinition).flatMap(([languageId, languageDefinition]) =>\n languageDefinition.grammer ? [[languageId, languageDefinition.grammer] as const] : []\n )\n) as Readonly<Record<string, SourceCodeGrammar | undefined>>;\n"],"mappings":"8DAGA,MAAa,EAAgC,OAAO,YAClD,OAAO,QAAQ,CAAsB,CAAC,CAAC,SAAS,CAAC,EAAY,KAC3D,EAAmB,QAAU,CAAC,CAAC,EAAY,EAAmB,OAAO,CAAU,EAAI,CAAC,CACtF,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:child_process"),t=["darwin"===require("node:os").platform()?"gtime":"/usr/bin/time","--format","%e %M"];exports.spawnSyncWithTimeout=function(o,s,d,i){var n=Date.now(),a=r.spawnSync("timeout",[i.toFixed(3)].concat(t,[o],e.toConsumableArray(s)),d),u=Date.now(),c=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(a.stderr),m=c?a.stderr.slice(0,c.index):a.stderr,l=Number(null==c?void 0:c[1])||(u-n)/1e3,p=1024*Number(null==c?void 0:c[2])||0;return 124===a.status?e.objectSpread2(e.objectSpread2({},a),{},{status:0,stderr:m,timeSeconds:i+.001,memoryBytes:p}):e.objectSpread2(e.objectSpread2({},a),{},{stderr:m,timeSeconds:l,memoryBytes:p})};
2
- //# sourceMappingURL=spawnSyncWithTimeout.cjs.map
1
+ "use strict";const e=require("../_virtual/_rolldown/runtime.cjs");let t=require("node:child_process");t=e.__toESM(t,1);let n=require("node:os");n=e.__toESM(n,1);const r=[n.default.platform()===`darwin`?`gtime`:`/usr/bin/time`,`--format`,`%e %M`];function i(e,n,i,a){let o=Date.now(),s=t.default.spawnSync(`timeout`,[a.toFixed(3),...r,e,...n],i),c=Date.now(),l=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(s.stderr),u=l?s.stderr.slice(0,l.index):s.stderr,d=Number(l?.[1])||(c-o)/1e3,f=Number(l?.[2])*1024||0;return s.status===124?{...s,status:0,stderr:u,timeSeconds:a+.001,memoryBytes:f}:{...s,stderr:u,timeSeconds:d,memoryBytes:f}}exports.spawnSyncWithTimeout=i;
2
+ //# sourceMappingURL=spawnSyncWithTimeout.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawnSyncWithTimeout.cjs","sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"names":["TIME_COMMAND","platform","command","args","options","timeoutSeconds","startTimeMilliseconds","Date","now","spawnResult","child_process","spawnSync","toFixed","concat","_toConsumableArray","stopTimeMilliseconds","match","exec","stderr","slice","index","timeSeconds","Number","memoryBytes","status","_objectSpread"],"mappings":"wGAGMA,EAAe,CAAmB,8BAAfC,WAA0B,QAAU,gBAAiB,WAAY,sCAEnF,SACLC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAwBC,KAAKC,MAE7BC,EAAcC,EAAcC,UAChC,UAAS,CACRN,EAAeO,QAAQ,IAAEC,OAAKb,EAAY,CAAEE,GAAOY,EAAAA,kBAAKX,IACzDC,GAGIW,EAAuBR,KAAKC,MAE5BQ,EAAQ,+BAA+BC,KAAKR,EAAYS,QACxDA,EAASF,EAAQP,EAAYS,OAAOC,MAAM,EAAGH,EAAMI,OAASX,EAAYS,OACxEG,EAAcC,aAAON,SAAAA,EAAQ,MAAQD,EAAuBT,GAAyB,IACrFiB,EAAmC,KAArBD,OAAY,MAALN,SAAAA,EAAQ,KAAc,EAGjD,OAA2B,MAAvBP,EAAYe,OACdC,EAAAA,cAAAA,EAAAA,cAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAEe,OAAQ,EAAGN,OAAAA,EAAQG,YAAahB,EAAiB,KAAMkB,YAAAA,IAGlFE,EAAAA,cAAAA,EAAAA,cAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAES,OAAAA,EAAQG,YAAAA,EAAaE,YAAAA,GAChD"}
1
+ {"version":3,"file":"spawnSyncWithTimeout.cjs","names":["os","child_process"],"sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"mappings":"iKAGA,MAAM,EAAe,CAACA,EAAAA,QAAG,SAAS,IAAM,SAAW,QAAU,gBAAiB,WAAY,OAAO,EAEjG,SAAgB,EACd,EACA,EACA,EACA,EACuF,CACvF,IAAM,EAAwB,KAAK,IAAI,EAEjC,EAAcC,EAAAA,QAAc,UAChC,UACA,CAAC,EAAe,QAAQ,CAAC,EAAG,GAAG,EAAc,EAAS,GAAG,CAAI,EAC7D,CACF,EAEM,EAAuB,KAAK,IAAI,EAEhC,EAAQ,+BAA+B,KAAK,EAAY,MAAM,EAC9D,EAAS,EAAQ,EAAY,OAAO,MAAM,EAAG,EAAM,KAAK,EAAI,EAAY,OACxE,EAAc,OAAO,IAAQ,EAAE,IAAM,EAAuB,GAAyB,IACrF,EAAc,OAAO,IAAQ,EAAE,EAAI,MAAQ,EAOjD,OAJI,EAAY,SAAW,IAClB,CAAE,GAAG,EAAa,OAAQ,EAAG,SAAQ,YAAa,EAAiB,KAAM,aAAY,EAGvF,CAAE,GAAG,EAAa,SAAQ,cAAa,aAAY,CAC5D"}
@@ -1,2 +1,2 @@
1
- import{toConsumableArray as e,objectSpread2 as r}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:child_process";import o from"node:os";var s=["darwin"===o.platform()?"gtime":"/usr/bin/time","--format","%e %M"];function m(o,m,n,d){var i=Date.now(),a=t.spawnSync("timeout",[d.toFixed(3)].concat(s,[o],e(m)),n),l=Date.now(),u=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(a.stderr),c=u?a.stderr.slice(0,u.index):a.stderr,p=Number(null==u?void 0:u[1])||(l-i)/1e3,b=1024*Number(null==u?void 0:u[2])||0;return 124===a.status?r(r({},a),{},{status:0,stderr:c,timeSeconds:d+.001,memoryBytes:b}):r(r({},a),{},{stderr:c,timeSeconds:p,memoryBytes:b})}export{m as spawnSyncWithTimeout};
2
- //# sourceMappingURL=spawnSyncWithTimeout.js.map
1
+ import e from"node:child_process";import t from"node:os";const n=[t.platform()===`darwin`?`gtime`:`/usr/bin/time`,`--format`,`%e %M`];function r(t,r,i,a){let o=Date.now(),s=e.spawnSync(`timeout`,[a.toFixed(3),...n,t,...r],i),c=Date.now(),l=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(s.stderr),u=l?s.stderr.slice(0,l.index):s.stderr,d=Number(l?.[1])||(c-o)/1e3,f=Number(l?.[2])*1024||0;return s.status===124?{...s,status:0,stderr:u,timeSeconds:a+.001,memoryBytes:f}:{...s,stderr:u,timeSeconds:d,memoryBytes:f}}export{r as spawnSyncWithTimeout};
2
+ //# sourceMappingURL=spawnSyncWithTimeout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawnSyncWithTimeout.js","sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"names":["TIME_COMMAND","os","platform","spawnSyncWithTimeout","command","args","options","timeoutSeconds","startTimeMilliseconds","Date","now","spawnResult","child_process","spawnSync","toFixed","concat","_toConsumableArray","stopTimeMilliseconds","match","exec","stderr","slice","index","timeSeconds","Number","memoryBytes","status","_objectSpread"],"mappings":"yJAGA,IAAMA,EAAe,CAAmB,WAAlBC,EAAGC,WAA0B,QAAU,gBAAiB,WAAY,SAEnF,SAASC,EACdC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAwBC,KAAKC,MAE7BC,EAAcC,EAAcC,UAChC,UAAS,CACRN,EAAeO,QAAQ,IAAEC,OAAKf,EAAY,CAAEI,GAAOY,EAAKX,IACzDC,GAGIW,EAAuBR,KAAKC,MAE5BQ,EAAQ,+BAA+BC,KAAKR,EAAYS,QACxDA,EAASF,EAAQP,EAAYS,OAAOC,MAAM,EAAGH,EAAMI,OAASX,EAAYS,OACxEG,EAAcC,aAAON,SAAAA,EAAQ,MAAQD,EAAuBT,GAAyB,IACrFiB,EAAmC,KAArBD,OAAY,MAALN,SAAAA,EAAQ,KAAc,EAGjD,OAA2B,MAAvBP,EAAYe,OACdC,EAAAA,EAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAEe,OAAQ,EAAGN,OAAAA,EAAQG,YAAahB,EAAiB,KAAMkB,YAAAA,IAGlFE,EAAAA,EAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAES,OAAAA,EAAQG,YAAAA,EAAaE,YAAAA,GAChD"}
1
+ {"version":3,"file":"spawnSyncWithTimeout.js","names":["child_process"],"sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"mappings":"yDAGA,MAAM,EAAe,CAAC,EAAG,SAAS,IAAM,SAAW,QAAU,gBAAiB,WAAY,OAAO,EAEjG,SAAgB,EACd,EACA,EACA,EACA,EACuF,CACvF,IAAM,EAAwB,KAAK,IAAI,EAEjC,EAAcA,EAAc,UAChC,UACA,CAAC,EAAe,QAAQ,CAAC,EAAG,GAAG,EAAc,EAAS,GAAG,CAAI,EAC7D,CACF,EAEM,EAAuB,KAAK,IAAI,EAEhC,EAAQ,+BAA+B,KAAK,EAAY,MAAM,EAC9D,EAAS,EAAQ,EAAY,OAAO,MAAM,EAAG,EAAM,KAAK,EAAI,EAAY,OACxE,EAAc,OAAO,IAAQ,EAAE,IAAM,EAAuB,GAAyB,IACrF,EAAc,OAAO,IAAQ,EAAE,EAAI,MAAQ,EAOjD,OAJI,EAAY,SAAW,IAClB,CAAE,GAAG,EAAa,OAAQ,EAAG,SAAQ,YAAa,EAAiB,KAAM,aAAY,EAGvF,CAAE,GAAG,EAAa,SAAQ,cAAa,aAAY,CAC5D"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),t=require("node:fs"),r=require("node:http"),n=require("node:path");var o={".css":"text/css",".html":"text/html",".js":"text/javascript",".gif":"image/gif",".jpg":"image/jpeg",".png":"image/png",".svg":"image/svg+xml"};function s(t){for(var r=0,n=Object.entries(o);r<n.length;r++){var s=e.slicedToArray(n[r],2),a=s[0],i=s[1];if(t.endsWith(a))return i}return"text/plain"}exports.startHttpServer=function(o){var a,i=r.createServer(function(e,r){var a,i=new URL(null!=(a=e.url)?a:"/","http://127.0.0.1").pathname;"/"===i&&(i="/index.html");var c=i.endsWith("/")?n.join(i,"index.html"):i,l=n.join(o,c);if(t.existsSync(l))try{var u=t.readFileSync(l);r.writeHead(200,{"Access-Control-Allow-Origin":"*",Pragma:"no-cache","Cache-Control":"no-cache","Content-Type":s(c)}),r.end(u)}catch(e){r.statusCode=500,r.end()}else r.statusCode=404,r.end()});i.listen();var c=i.address();if(!c)throw new Error("server has been unexpectedly closed");return(a={})[Symbol.asyncDispose]=e.asyncToGenerator(e.regenerator().m(function t(){return e.regenerator().w(function(e){for(;;)switch(e.n){case 0:return i.closeAllConnections(),e.n=1,new Promise(function(e){i.close(function(){e()})});case 1:return e.a(2)}},t)})),a.url="string"==typeof c?c:"http://127.0.0.1:".concat(c.port),a.port="object"===e.typeof(c)?c.port:void 0,a};
2
- //# sourceMappingURL=startHttpServer.cjs.map
1
+ "use strict";const e=require("../_virtual/_rolldown/runtime.cjs");let t=require("node:path");t=e.__toESM(t,1);let n=require("node:fs");n=e.__toESM(n,1);let r=require("node:http");r=e.__toESM(r,1);function i(e){let i=r.default.createServer((r,i)=>{let a=new URL(r.url??`/`,`http://127.0.0.1`).pathname;a===`/`&&(a=`/index.html`);let s=a.endsWith(`/`)?t.default.join(a,`index.html`):a,c=t.default.join(e,s);if(n.default.existsSync(c))try{let e=n.default.readFileSync(c);i.writeHead(200,{"Access-Control-Allow-Origin":`*`,Pragma:`no-cache`,"Cache-Control":`no-cache`,"Content-Type":o(s)}),i.end(e)}catch{i.statusCode=500,i.end()}else i.statusCode=404,i.end()});i.listen();let a=i.address();if(!a)throw Error(`server has been unexpectedly closed`);return{[Symbol.asyncDispose]:async()=>{i.closeAllConnections(),await new Promise(e=>{i.close(()=>{e()})})},url:typeof a==`string`?a:`http://127.0.0.1:${a.port}`,port:typeof a==`object`?a.port:void 0}}const a={".css":`text/css`,".html":`text/html`,".js":`text/javascript`,".gif":`image/gif`,".jpg":`image/jpeg`,".png":`image/png`,".svg":`image/svg+xml`};function o(e){for(let[t,n]of Object.entries(a))if(e.endsWith(t))return n;return`text/plain`}exports.startHttpServer=i;
2
+ //# sourceMappingURL=startHttpServer.cjs.map