@exercode/problem-utils 1.0.2 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/_virtual/_rollupPluginBabelHelpers.cjs +4 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.cjs.map +1 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js +4 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.cjs +2 -0
- package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.cjs.map +1 -0
- package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.d.ts +1 -0
- package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.js +2 -0
- package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.js.map +1 -0
- package/dist/helpers/findEntryPointFile.cjs +2 -0
- package/dist/helpers/findEntryPointFile.cjs.map +1 -0
- package/dist/helpers/findEntryPointFile.d.ts +1 -0
- package/dist/helpers/findEntryPointFile.js +2 -0
- package/dist/helpers/findEntryPointFile.js.map +1 -0
- package/dist/helpers/findLanguageDefinitionByPath.cjs +2 -0
- package/dist/helpers/findLanguageDefinitionByPath.cjs.map +1 -0
- package/dist/helpers/findLanguageDefinitionByPath.d.ts +2 -0
- package/dist/helpers/findLanguageDefinitionByPath.js +2 -0
- package/dist/helpers/findLanguageDefinitionByPath.js.map +1 -0
- package/dist/helpers/judgeByStaticAnalysis.cjs +2 -0
- package/dist/helpers/judgeByStaticAnalysis.cjs.map +1 -0
- package/dist/helpers/judgeByStaticAnalysis.d.ts +3 -0
- package/dist/helpers/judgeByStaticAnalysis.js +2 -0
- package/dist/helpers/judgeByStaticAnalysis.js.map +1 -0
- package/dist/helpers/parseArgs.cjs +2 -0
- package/dist/helpers/parseArgs.cjs.map +1 -0
- package/dist/helpers/parseArgs.d.ts +6 -0
- package/dist/helpers/parseArgs.js +2 -0
- package/dist/helpers/parseArgs.js.map +1 -0
- package/dist/helpers/printTestCaseResult.cjs +2 -0
- package/dist/helpers/printTestCaseResult.cjs.map +1 -0
- package/dist/helpers/printTestCaseResult.d.ts +6 -0
- package/dist/helpers/printTestCaseResult.js +2 -0
- package/dist/helpers/printTestCaseResult.js.map +1 -0
- package/dist/helpers/readOutputFiles.cjs +2 -0
- package/dist/helpers/readOutputFiles.cjs.map +1 -0
- package/dist/helpers/readOutputFiles.d.ts +2 -0
- package/dist/helpers/readOutputFiles.js +2 -0
- package/dist/helpers/readOutputFiles.js.map +1 -0
- package/dist/helpers/readProblemMarkdownFrontMatter.cjs +2 -0
- package/dist/helpers/readProblemMarkdownFrontMatter.cjs.map +1 -0
- package/dist/helpers/readProblemMarkdownFrontMatter.d.ts +2 -0
- package/dist/helpers/readProblemMarkdownFrontMatter.js +2 -0
- package/dist/helpers/readProblemMarkdownFrontMatter.js.map +1 -0
- package/dist/helpers/readTestCases.cjs +2 -0
- package/dist/helpers/readTestCases.cjs.map +1 -0
- package/dist/helpers/readTestCases.d.ts +5 -0
- package/dist/helpers/readTestCases.js +2 -0
- package/dist/helpers/readTestCases.js.map +1 -0
- package/dist/helpers/removeCommentsInSourceCode.cjs +2 -0
- package/dist/helpers/removeCommentsInSourceCode.cjs.map +1 -0
- package/dist/helpers/removeCommentsInSourceCode.d.ts +2 -0
- package/dist/helpers/removeCommentsInSourceCode.js +2 -0
- package/dist/helpers/removeCommentsInSourceCode.js.map +1 -0
- package/dist/helpers/spawnSyncWithTimeout.cjs +2 -0
- package/dist/helpers/spawnSyncWithTimeout.cjs.map +1 -0
- package/dist/helpers/spawnSyncWithTimeout.d.ts +5 -0
- package/dist/helpers/spawnSyncWithTimeout.js +2 -0
- package/dist/helpers/spawnSyncWithTimeout.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/presets/stdio.cjs +2 -0
- package/dist/presets/stdio.cjs.map +1 -0
- package/dist/presets/stdio.d.ts +34 -0
- package/dist/presets/stdio.js +2 -0
- package/dist/presets/stdio.js.map +1 -0
- package/dist/types/decisionCode.cjs +2 -0
- package/dist/types/decisionCode.cjs.map +1 -0
- package/dist/types/decisionCode.d.ts +41 -0
- package/dist/types/decisionCode.js +2 -0
- package/dist/types/decisionCode.js.map +1 -0
- package/dist/types/language.cjs +2 -0
- package/dist/types/language.cjs.map +1 -0
- package/dist/types/language.d.ts +22 -0
- package/dist/types/language.js +2 -0
- package/dist/types/language.js.map +1 -0
- package/dist/types/problem.cjs +2 -0
- package/dist/types/problem.cjs.map +1 -0
- package/dist/types/problem.d.ts +13 -0
- package/dist/types/problem.js +2 -0
- package/dist/types/problem.js.map +1 -0
- package/dist/types/testCaseResult.cjs +2 -0
- package/dist/types/testCaseResult.cjs.map +1 -0
- package/dist/types/testCaseResult.d.ts +19 -0
- package/dist/types/testCaseResult.js +2 -0
- package/dist/types/testCaseResult.js.map +1 -0
- package/package.json +19 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.cjs","sources":["../../src/presets/stdio.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { z } from 'zod';\n\nimport { compareStdoutAsSpaceSeparatedTokens } from '../helpers/compareStdoutAsSpaceSeparatedTokens.js';\nimport { findEntryPointFile } from '../helpers/findEntryPointFile.js';\nimport { findLanguageDefinitionByPath } from '../helpers/findLanguageDefinitionByPath.js';\nimport { judgeByStaticAnalysis } from '../helpers/judgeByStaticAnalysis.js';\nimport { parseArgs } from '../helpers/parseArgs.js';\nimport { printTestCaseResult } from '../helpers/printTestCaseResult.js';\nimport { readOutputFiles } from '../helpers/readOutputFiles.js';\nimport { readProblemMarkdownFrontMatter } from '../helpers/readProblemMarkdownFrontMatter.js';\nimport { readTestCases } from '../helpers/readTestCases.js';\nimport { spawnSyncWithTimeout } from '../helpers/spawnSyncWithTimeout.js';\nimport { DecisionCode } from '../types/decisionCode.js';\n\nconst BUILD_TIMEOUT_SECONDS = 10;\nconst JUDGE_DEFAULT_TIMEOUT_SECONDS = 2;\nconst DEBUG_DEFAULT_TIMEOUT_SECONDS = 10;\n\nconst MAX_STDOUT_LENGTH = 50_000;\n\nconst judgeParamsSchema = z.object({\n cwd: z.string(),\n language: z.union([z.string(), z.array(z.string())]).optional(),\n});\n\nconst debugParamsSchema = judgeParamsSchema.extend({\n stdin: z.string().optional(),\n});\n\n/**\n * A preset judge function using stdin and stdout as test cases.\n *\n * @example\n * Create `judge.ts`:\n * ```ts\n * import { stdioJudgePreset } from 'judge-utils/presets/stdio';\n *\n * await stdioJudgePreset(import.meta.dirname);\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun judge.ts '{ \"cwd\": \"model_answers/java\" }'\n * ```\n */\nexport async function stdioJudgePreset(problemDir: string): Promise<void> {\n const args = parseArgs(process.argv);\n const params = judgeParamsSchema.parse(args.params);\n\n const problemMarkdownFrontMatter = await readProblemMarkdownFrontMatter(problemDir);\n const testCases = await readTestCases(path.join(problemDir, 'test_cases'));\n\n const staticAnalysisTestCaseResult = await judgeByStaticAnalysis(params.cwd, problemMarkdownFrontMatter);\n if (staticAnalysisTestCaseResult) {\n printTestCaseResult({ testCaseId: testCases[0]?.id ?? 'prebuild', ...staticAnalysisTestCaseResult });\n return;\n }\n\n const originalMainFilePath = await findEntryPointFile(params.cwd, params.language);\n if (!originalMainFilePath) {\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'prebuild',\n decisionCode: DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,\n stderr: `main file not found${params.language ? `: language: ${params.language}` : ''}`,\n });\n return;\n }\n\n const languageDefinition = findLanguageDefinitionByPath(originalMainFilePath);\n if (!languageDefinition) {\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'prebuild',\n decisionCode: DecisionCode.WRONG_ANSWER,\n stderr: 'unsupported language',\n });\n return;\n }\n\n // `CI` changes affects Chainlit. `FORCE_COLOR` affects Bun.\n const env = { ...process.env, CI: '', FORCE_COLOR: '0' };\n\n let prebuiltMainFilePath: string | undefined;\n\n if (languageDefinition.prebuild) {\n try {\n await languageDefinition.prebuild(params.cwd);\n prebuiltMainFilePath = await findEntryPointFile(params.cwd, params.language);\n } catch (error) {\n console.error('prebuild error', error);\n\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'prebuild',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n const mainFilePath = prebuiltMainFilePath ?? originalMainFilePath;\n\n if (languageDefinition.buildCommand) {\n try {\n const buildCommand = languageDefinition.buildCommand(mainFilePath);\n\n const buildSpawnResult = spawnSyncWithTimeout(\n buildCommand[0],\n buildCommand.slice(1),\n { cwd: params.cwd, encoding: 'utf8', env },\n BUILD_TIMEOUT_SECONDS\n );\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (buildSpawnResult.status !== 0) {\n decisionCode = DecisionCode.BUILD_ERROR;\n } else if (buildSpawnResult.timeSeconds > BUILD_TIMEOUT_SECONDS) {\n decisionCode = DecisionCode.BUILD_TIME_LIMIT_EXCEEDED;\n } else if (\n buildSpawnResult.stdout.length > MAX_STDOUT_LENGTH ||\n buildSpawnResult.stderr.length > MAX_STDOUT_LENGTH\n ) {\n decisionCode = DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED;\n }\n\n if (decisionCode !== DecisionCode.ACCEPTED) {\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'build',\n decisionCode,\n exitStatus: buildSpawnResult.status ?? undefined,\n stdout: buildSpawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: buildSpawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: buildSpawnResult.timeSeconds,\n memoryBytes: buildSpawnResult.memoryBytes,\n });\n return;\n }\n } catch (error) {\n console.error('build error', error);\n\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'build',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n for (const testCase of testCases) {\n const timeoutSeconds =\n typeof problemMarkdownFrontMatter.timeLimitMs === 'number'\n ? problemMarkdownFrontMatter.timeLimitMs / 1000\n : JUDGE_DEFAULT_TIMEOUT_SECONDS;\n\n const command = languageDefinition.command(mainFilePath);\n\n const spawnResult = spawnSyncWithTimeout(\n command[0],\n command.slice(1),\n { cwd: params.cwd, encoding: 'utf8', input: testCase.input, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(params.cwd, problemMarkdownFrontMatter.requiredOutputFilePaths ?? []);\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (spawnResult.status !== 0) {\n decisionCode = DecisionCode.RUNTIME_ERROR;\n } else if (spawnResult.timeSeconds > timeoutSeconds) {\n decisionCode = DecisionCode.TIME_LIMIT_EXCEEDED;\n } else if (spawnResult.memoryBytes > (problemMarkdownFrontMatter.memoryLimitByte ?? Number.POSITIVE_INFINITY)) {\n decisionCode = DecisionCode.MEMORY_LIMIT_EXCEEDED;\n } else if (spawnResult.stdout.length > MAX_STDOUT_LENGTH || spawnResult.stderr.length > MAX_STDOUT_LENGTH) {\n decisionCode = DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED;\n } else if (outputFiles.length < (problemMarkdownFrontMatter.requiredOutputFilePaths?.length ?? 0)) {\n decisionCode = DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR;\n } else if (!compareStdoutAsSpaceSeparatedTokens(spawnResult.stdout, testCase.output ?? '')) {\n decisionCode = DecisionCode.WRONG_ANSWER;\n }\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode,\n exitStatus: spawnResult.status ?? undefined,\n stdin: testCase.input,\n stdout: spawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: spawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: spawnResult.timeSeconds,\n memoryBytes: spawnResult.memoryBytes,\n outputFiles: outputFiles.length > 0 ? outputFiles : undefined,\n });\n\n if (decisionCode !== DecisionCode.ACCEPTED) break;\n }\n}\n\n/**\n * A preset debug function using stdin and stdout as test cases.\n *\n * @example\n * Create `debug.ts`:\n * ```ts\n * import { stdioDebugPreset } from 'judge-utils/presets/stdio';\n *\n * await stdioDebugPreset(import.meta.dirname);\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun debug.ts '{ \"cwd\": \"model_answers/java\", \"stdin\": \"1 2\" }'\n * ```\n */\nexport async function stdioDebugPreset(problemDir: string): Promise<void> {\n const args = parseArgs(process.argv);\n const params = debugParamsSchema.parse(args.params);\n\n const problemMarkdownFrontMatter = await readProblemMarkdownFrontMatter(problemDir);\n\n const originalMainFilePath = await findEntryPointFile(params.cwd, params.language);\n if (!originalMainFilePath) {\n printTestCaseResult({\n testCaseId: 'prebuild',\n decisionCode: DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,\n stderr: `main file not found${params.language ? `: language: ${params.language}` : ''}`,\n });\n return;\n }\n\n const languageDefinition = findLanguageDefinitionByPath(originalMainFilePath);\n if (!languageDefinition) {\n printTestCaseResult({\n testCaseId: 'prebuild',\n decisionCode: DecisionCode.WRONG_ANSWER,\n stderr: 'unsupported language',\n });\n return;\n }\n\n // `CI` changes affects Chainlit. `FORCE_COLOR` affects Bun.\n const env = { ...process.env, CI: '', FORCE_COLOR: '0' };\n\n let prebuiltMainFilePath: string | undefined;\n\n if (languageDefinition.prebuild) {\n try {\n await languageDefinition.prebuild(params.cwd);\n prebuiltMainFilePath = await findEntryPointFile(params.cwd, params.language);\n } catch (error) {\n console.error('prebuild error', error);\n\n printTestCaseResult({\n testCaseId: 'prebuild',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n const mainFilePath = prebuiltMainFilePath ?? originalMainFilePath;\n\n if (languageDefinition.buildCommand) {\n try {\n const buildCommand = languageDefinition.buildCommand(mainFilePath);\n\n const buildSpawnResult = spawnSyncWithTimeout(\n buildCommand[0],\n buildCommand.slice(1),\n { cwd: params.cwd, encoding: 'utf8', env },\n BUILD_TIMEOUT_SECONDS\n );\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (buildSpawnResult.status !== 0) {\n decisionCode = DecisionCode.BUILD_ERROR;\n } else if (buildSpawnResult.timeSeconds > BUILD_TIMEOUT_SECONDS) {\n decisionCode = DecisionCode.BUILD_TIME_LIMIT_EXCEEDED;\n } else if (\n buildSpawnResult.stdout.length > MAX_STDOUT_LENGTH ||\n buildSpawnResult.stderr.length > MAX_STDOUT_LENGTH\n ) {\n decisionCode = DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED;\n }\n\n if (decisionCode !== DecisionCode.ACCEPTED) {\n printTestCaseResult({\n testCaseId: 'build',\n decisionCode,\n exitStatus: buildSpawnResult.status ?? undefined,\n stdout: buildSpawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: buildSpawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: buildSpawnResult.timeSeconds,\n memoryBytes: buildSpawnResult.memoryBytes,\n });\n return;\n }\n } catch (error) {\n console.error('build error', error);\n\n printTestCaseResult({\n testCaseId: 'build',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n {\n const timeoutSeconds = Math.max(\n DEBUG_DEFAULT_TIMEOUT_SECONDS,\n (problemMarkdownFrontMatter.timeLimitMs ?? 0) / 1000\n );\n\n const command = languageDefinition.command(mainFilePath);\n\n const spawnResult = spawnSyncWithTimeout(\n command[0],\n command.slice(1),\n { cwd: params.cwd, encoding: 'utf8', input: params.stdin, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(params.cwd, problemMarkdownFrontMatter.requiredOutputFilePaths ?? []);\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (spawnResult.status !== 0) {\n decisionCode = DecisionCode.RUNTIME_ERROR;\n } else if (spawnResult.timeSeconds > timeoutSeconds) {\n decisionCode = DecisionCode.TIME_LIMIT_EXCEEDED;\n } else if (spawnResult.memoryBytes > (problemMarkdownFrontMatter.memoryLimitByte ?? Number.POSITIVE_INFINITY)) {\n decisionCode = DecisionCode.MEMORY_LIMIT_EXCEEDED;\n } else if (spawnResult.stdout.length > MAX_STDOUT_LENGTH || spawnResult.stderr.length > MAX_STDOUT_LENGTH) {\n decisionCode = DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED;\n } else if (outputFiles.length < (problemMarkdownFrontMatter.requiredOutputFilePaths?.length ?? 0)) {\n decisionCode = DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR;\n }\n\n printTestCaseResult({\n testCaseId: 'debug',\n decisionCode,\n exitStatus: spawnResult.status ?? undefined,\n stdin: params.stdin,\n stdout: spawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: spawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: spawnResult.timeSeconds,\n memoryBytes: spawnResult.memoryBytes,\n outputFiles: outputFiles.length > 0 ? outputFiles : undefined,\n });\n }\n}\n"],"names":["MAX_STDOUT_LENGTH","judgeParamsSchema","z","object","cwd","string","language","union","array","optional","debugParamsSchema","extend","stdin","_stdioJudgePreset","_asyncToGenerator","_regenerator","m","_callee","problemDir","args","params","problemMarkdownFrontMatter","testCases","staticAnalysisTestCaseResult","_testCases$0$id","_testCases$","originalMainFilePath","_testCases$0$id2","_testCases$2","languageDefinition","_testCases$0$id3","_testCases$3","env","prebuiltMainFilePath","_testCases$0$id4","_testCases$4","mainFilePath","buildCommand","buildSpawnResult","decisionCode","_testCases$0$id5","_testCases$5","_buildSpawnResult$sta","_testCases$0$id6","_testCases$6","_iterator","_step","_problemMarkdownFront","_problemMarkdownFront2","_problemMarkdownFront3","_problemMarkdownFront4","_testCase$output","_spawnResult$status","testCase","timeoutSeconds","command","spawnResult","outputFiles","_decisionCode","_t","_t2","_t3","w","_context","p","n","parseArgs","process","argv","parse","readProblemMarkdownFrontMatter","v","readTestCases","path","join","judgeByStaticAnalysis","printTestCaseResult","_objectSpread","testCaseId","id","a","findEntryPointFile","DecisionCode","MISSING_REQUIRED_SUBMISSION_FILE_ERROR","stderr","concat","findLanguageDefinitionByPath","WRONG_ANSWER","CI","FORCE_COLOR","prebuild","console","error","BUILD_ERROR","Error","message","String","spawnSyncWithTimeout","slice","encoding","ACCEPTED","status","timeSeconds","BUILD_TIME_LIMIT_EXCEEDED","stdout","length","BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED","exitStatus","undefined","memoryBytes","_createForOfIteratorHelper","s","done","value","timeLimitMs","input","readOutputFiles","requiredOutputFilePaths","RUNTIME_ERROR","TIME_LIMIT_EXCEEDED","memoryLimitByte","Number","POSITIVE_INFINITY","MEMORY_LIMIT_EXCEEDED","OUTPUT_SIZE_LIMIT_EXCEEDED","MISSING_REQUIRED_OUTPUT_FILE_ERROR","compareStdoutAsSpaceSeparatedTokens","output","e","f","apply","this","arguments","_stdioDebugPreset","_callee2","_buildSpawnResult$sta2","_problemMarkdownFront5","_problemMarkdownFront6","_problemMarkdownFront7","_problemMarkdownFront8","_problemMarkdownFront9","_spawnResult$status2","_decisionCode2","_t4","_t5","_context2","Math","max","_x2","_x"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A preset judge function using stdin and stdout as test cases.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* Create `judge.ts`:
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { stdioJudgePreset } from 'judge-utils/presets/stdio';
|
|
8
|
+
*
|
|
9
|
+
* await stdioJudgePreset(import.meta.dirname);
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Run with the required parameters:
|
|
13
|
+
* ```bash
|
|
14
|
+
* bun judge.ts '{ "cwd": "model_answers/java" }'
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function stdioJudgePreset(problemDir: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* A preset debug function using stdin and stdout as test cases.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* Create `debug.ts`:
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { stdioDebugPreset } from 'judge-utils/presets/stdio';
|
|
25
|
+
*
|
|
26
|
+
* await stdioDebugPreset(import.meta.dirname);
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* Run with the required parameters:
|
|
30
|
+
* ```bash
|
|
31
|
+
* bun debug.ts '{ "cwd": "model_answers/java", "stdin": "1 2" }'
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function stdioDebugPreset(problemDir: string): Promise<void>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{asyncToGenerator as e,regenerator as t,createForOfIteratorHelper as r,objectSpread2 as s}from"../_virtual/_rollupPluginBabelHelpers.js";import n from"node:path";import{z as i}from"zod";import{compareStdoutAsSpaceSeparatedTokens as o}from"../helpers/compareStdoutAsSpaceSeparatedTokens.js";import{findEntryPointFile as a}from"../helpers/findEntryPointFile.js";import{findLanguageDefinitionByPath as d}from"../helpers/findLanguageDefinitionByPath.js";import{judgeByStaticAnalysis as u}from"../helpers/judgeByStaticAnalysis.js";import{parseArgs as l}from"../helpers/parseArgs.js";import{printTestCaseResult as c}from"../helpers/printTestCaseResult.js";import{readOutputFiles as E}from"../helpers/readOutputFiles.js";import{readProblemMarkdownFrontMatter as m}from"../helpers/readProblemMarkdownFrontMatter.js";import{readTestCases as p}from"../helpers/readTestCases.js";import{spawnSyncWithTimeout as I}from"../helpers/spawnSyncWithTimeout.js";import{DecisionCode as g}from"../types/decisionCode.js";var C=5e4,_=i.object({cwd:i.string(),language:i.union([i.string(),i.array(i.string())]).optional()}),R=_.extend({stdin:i.string().optional()});function f(e){return b.apply(this,arguments)}function b(){return(b=e(t().m(function e(i){var R,f,b,v,S,T,D,O,h,y,L,M,U,B,w,P,k,N,F,j,A,X,G,x,W,q,Q,Y,Z,H,V,z,J,K,$,ee,te,re,se,ne,ie,oe,ae;return t().w(function(e){for(;;)switch(e.p=e.n){case 0:return R=l(process.argv),f=_.parse(R.params),e.n=1,m(i);case 1:return b=e.v,e.n=2,p(n.join(i,"test_cases"));case 2:return v=e.v,e.n=3,u(f.cwd,b);case 3:if(!(S=e.v)){e.n=4;break}return c(s({testCaseId:null!=(T=null==(D=v[0])?void 0:D.id)?T:"prebuild"},S)),e.a(2);case 4:return e.n=5,a(f.cwd,f.language);case 5:if(O=e.v){e.n=6;break}return c({testCaseId:null!=(h=null==(y=v[0])?void 0:y.id)?h:"prebuild",decisionCode:g.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(f.language?": language: ".concat(f.language):"")}),e.a(2);case 6:if(L=d(O)){e.n=7;break}return c({testCaseId:null!=(M=null==(U=v[0])?void 0:U.id)?M:"prebuild",decisionCode:g.WRONG_ANSWER,stderr:"unsupported language"}),e.a(2);case 7:if(B=s(s({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!L.prebuild){e.n=12;break}return e.p=8,e.n=9,L.prebuild(f.cwd);case 9:return e.n=10,a(f.cwd,f.language);case 10:w=e.v,e.n=12;break;case 11:return e.p=11,ie=e.v,console.error("prebuild error",ie),c({testCaseId:null!=(P=null==(k=v[0])?void 0:k.id)?P:"prebuild",decisionCode:g.BUILD_ERROR,stderr:ie instanceof Error?ie.message:String(ie)}),e.a(2);case 12:if(N=null!=w?w:O,!L.buildCommand){e.n=16;break}if(e.p=13,F=L.buildCommand(N),j=I(F[0],F.slice(1),{cwd:f.cwd,encoding:"utf8",env:B},10),A=g.ACCEPTED,0!==j.status?A=g.BUILD_ERROR:j.timeSeconds>10?A=g.BUILD_TIME_LIMIT_EXCEEDED:(j.stdout.length>C||j.stderr.length>C)&&(A=g.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),A===g.ACCEPTED){e.n=14;break}return c({testCaseId:null!=(X=null==(G=v[0])?void 0:G.id)?X:"build",decisionCode:A,exitStatus:null!=(x=j.status)?x:void 0,stdout:j.stdout.slice(0,C)||void 0,stderr:j.stderr.slice(0,C)||void 0,timeSeconds:j.timeSeconds,memoryBytes:j.memoryBytes}),e.a(2);case 14:e.n=16;break;case 15:return e.p=15,oe=e.v,console.error("build error",oe),c({testCaseId:null!=(W=null==(q=v[0])?void 0:q.id)?W:"build",decisionCode:g.BUILD_ERROR,stderr:oe instanceof Error?oe.message:String(oe)}),e.a(2);case 16:Q=r(v),e.p=17,Q.s();case 18:if((Y=Q.n()).done){e.n=21;break}return $=Y.value,ee="number"==typeof b.timeLimitMs?b.timeLimitMs/1e3:2,te=L.command(N),re=I(te[0],te.slice(1),{cwd:f.cwd,encoding:"utf8",input:$.input,env:B},ee),e.n=19,E(f.cwd,null!=(Z=b.requiredOutputFilePaths)?Z:[]);case 19:if(se=e.v,ne=g.ACCEPTED,0!==re.status?ne=g.RUNTIME_ERROR:re.timeSeconds>ee?ne=g.TIME_LIMIT_EXCEEDED:re.memoryBytes>(null!=(H=b.memoryLimitByte)?H:Number.POSITIVE_INFINITY)?ne=g.MEMORY_LIMIT_EXCEEDED:re.stdout.length>C||re.stderr.length>C?ne=g.OUTPUT_SIZE_LIMIT_EXCEEDED:se.length<(null!=(V=null==(z=b.requiredOutputFilePaths)?void 0:z.length)?V:0)?ne=g.MISSING_REQUIRED_OUTPUT_FILE_ERROR:o(re.stdout,null!=(J=$.output)?J:"")||(ne=g.WRONG_ANSWER),c({testCaseId:$.id,decisionCode:ne,exitStatus:null!=(K=re.status)?K:void 0,stdin:$.input,stdout:re.stdout.slice(0,C)||void 0,stderr:re.stderr.slice(0,C)||void 0,timeSeconds:re.timeSeconds,memoryBytes:re.memoryBytes,outputFiles:se.length>0?se:void 0}),ne===g.ACCEPTED){e.n=20;break}return e.a(3,21);case 20:e.n=18;break;case 21:e.n=23;break;case 22:e.p=22,ae=e.v,Q.e(ae);case 23:return e.p=23,Q.f(),e.f(23);case 24:return e.a(2)}},e,null,[[17,22,23,24],[13,15],[8,11]])}))).apply(this,arguments)}function v(e){return S.apply(this,arguments)}function S(){return(S=e(t().m(function e(r){var n,i,o,u,p,_,f,b,v,S,T,D,O,h,y,L,M,U,B,w,P,k,N,F,j;return t().w(function(e){for(;;)switch(e.p=e.n){case 0:return n=l(process.argv),i=R.parse(n.params),e.n=1,m(r);case 1:return o=e.v,e.n=2,a(i.cwd,i.language);case 2:if(u=e.v){e.n=3;break}return c({testCaseId:"prebuild",decisionCode:g.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(i.language?": language: ".concat(i.language):"")}),e.a(2);case 3:if(p=d(u)){e.n=4;break}return c({testCaseId:"prebuild",decisionCode:g.WRONG_ANSWER,stderr:"unsupported language"}),e.a(2);case 4:if(_=s(s({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!p.prebuild){e.n=9;break}return e.p=5,e.n=6,p.prebuild(i.cwd);case 6:return e.n=7,a(i.cwd,i.language);case 7:f=e.v,e.n=9;break;case 8:return e.p=8,F=e.v,console.error("prebuild error",F),c({testCaseId:"prebuild",decisionCode:g.BUILD_ERROR,stderr:F instanceof Error?F.message:String(F)}),e.a(2);case 9:if(b=null!=f?f:u,!p.buildCommand){e.n=13;break}if(e.p=10,v=p.buildCommand(b),S=I(v[0],v.slice(1),{cwd:i.cwd,encoding:"utf8",env:_},10),T=g.ACCEPTED,0!==S.status?T=g.BUILD_ERROR:S.timeSeconds>10?T=g.BUILD_TIME_LIMIT_EXCEEDED:(S.stdout.length>C||S.stderr.length>C)&&(T=g.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),T===g.ACCEPTED){e.n=11;break}return c({testCaseId:"build",decisionCode:T,exitStatus:null!=(D=S.status)?D:void 0,stdout:S.stdout.slice(0,C)||void 0,stderr:S.stderr.slice(0,C)||void 0,timeSeconds:S.timeSeconds,memoryBytes:S.memoryBytes}),e.a(2);case 11:e.n=13;break;case 12:return e.p=12,j=e.v,console.error("build error",j),c({testCaseId:"build",decisionCode:g.BUILD_ERROR,stderr:j instanceof Error?j.message:String(j)}),e.a(2);case 13:return B=Math.max(10,(null!=(O=o.timeLimitMs)?O:0)/1e3),w=p.command(b),P=I(w[0],w.slice(1),{cwd:i.cwd,encoding:"utf8",input:i.stdin,env:_},B),e.n=14,E(i.cwd,null!=(h=o.requiredOutputFilePaths)?h:[]);case 14:k=e.v,N=g.ACCEPTED,0!==P.status?N=g.RUNTIME_ERROR:P.timeSeconds>B?N=g.TIME_LIMIT_EXCEEDED:P.memoryBytes>(null!=(y=o.memoryLimitByte)?y:Number.POSITIVE_INFINITY)?N=g.MEMORY_LIMIT_EXCEEDED:P.stdout.length>C||P.stderr.length>C?N=g.OUTPUT_SIZE_LIMIT_EXCEEDED:k.length<(null!=(L=null==(M=o.requiredOutputFilePaths)?void 0:M.length)?L:0)&&(N=g.MISSING_REQUIRED_OUTPUT_FILE_ERROR),c({testCaseId:"debug",decisionCode:N,exitStatus:null!=(U=P.status)?U:void 0,stdin:i.stdin,stdout:P.stdout.slice(0,C)||void 0,stderr:P.stderr.slice(0,C)||void 0,timeSeconds:P.timeSeconds,memoryBytes:P.memoryBytes,outputFiles:k.length>0?k:void 0});case 15:return e.a(2)}},e,null,[[10,12],[5,8]])}))).apply(this,arguments)}export{v as stdioDebugPreset,f as stdioJudgePreset};
|
|
2
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sources":["../../src/presets/stdio.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { z } from 'zod';\n\nimport { compareStdoutAsSpaceSeparatedTokens } from '../helpers/compareStdoutAsSpaceSeparatedTokens.js';\nimport { findEntryPointFile } from '../helpers/findEntryPointFile.js';\nimport { findLanguageDefinitionByPath } from '../helpers/findLanguageDefinitionByPath.js';\nimport { judgeByStaticAnalysis } from '../helpers/judgeByStaticAnalysis.js';\nimport { parseArgs } from '../helpers/parseArgs.js';\nimport { printTestCaseResult } from '../helpers/printTestCaseResult.js';\nimport { readOutputFiles } from '../helpers/readOutputFiles.js';\nimport { readProblemMarkdownFrontMatter } from '../helpers/readProblemMarkdownFrontMatter.js';\nimport { readTestCases } from '../helpers/readTestCases.js';\nimport { spawnSyncWithTimeout } from '../helpers/spawnSyncWithTimeout.js';\nimport { DecisionCode } from '../types/decisionCode.js';\n\nconst BUILD_TIMEOUT_SECONDS = 10;\nconst JUDGE_DEFAULT_TIMEOUT_SECONDS = 2;\nconst DEBUG_DEFAULT_TIMEOUT_SECONDS = 10;\n\nconst MAX_STDOUT_LENGTH = 50_000;\n\nconst judgeParamsSchema = z.object({\n cwd: z.string(),\n language: z.union([z.string(), z.array(z.string())]).optional(),\n});\n\nconst debugParamsSchema = judgeParamsSchema.extend({\n stdin: z.string().optional(),\n});\n\n/**\n * A preset judge function using stdin and stdout as test cases.\n *\n * @example\n * Create `judge.ts`:\n * ```ts\n * import { stdioJudgePreset } from 'judge-utils/presets/stdio';\n *\n * await stdioJudgePreset(import.meta.dirname);\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun judge.ts '{ \"cwd\": \"model_answers/java\" }'\n * ```\n */\nexport async function stdioJudgePreset(problemDir: string): Promise<void> {\n const args = parseArgs(process.argv);\n const params = judgeParamsSchema.parse(args.params);\n\n const problemMarkdownFrontMatter = await readProblemMarkdownFrontMatter(problemDir);\n const testCases = await readTestCases(path.join(problemDir, 'test_cases'));\n\n const staticAnalysisTestCaseResult = await judgeByStaticAnalysis(params.cwd, problemMarkdownFrontMatter);\n if (staticAnalysisTestCaseResult) {\n printTestCaseResult({ testCaseId: testCases[0]?.id ?? 'prebuild', ...staticAnalysisTestCaseResult });\n return;\n }\n\n const originalMainFilePath = await findEntryPointFile(params.cwd, params.language);\n if (!originalMainFilePath) {\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'prebuild',\n decisionCode: DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,\n stderr: `main file not found${params.language ? `: language: ${params.language}` : ''}`,\n });\n return;\n }\n\n const languageDefinition = findLanguageDefinitionByPath(originalMainFilePath);\n if (!languageDefinition) {\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'prebuild',\n decisionCode: DecisionCode.WRONG_ANSWER,\n stderr: 'unsupported language',\n });\n return;\n }\n\n // `CI` changes affects Chainlit. `FORCE_COLOR` affects Bun.\n const env = { ...process.env, CI: '', FORCE_COLOR: '0' };\n\n let prebuiltMainFilePath: string | undefined;\n\n if (languageDefinition.prebuild) {\n try {\n await languageDefinition.prebuild(params.cwd);\n prebuiltMainFilePath = await findEntryPointFile(params.cwd, params.language);\n } catch (error) {\n console.error('prebuild error', error);\n\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'prebuild',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n const mainFilePath = prebuiltMainFilePath ?? originalMainFilePath;\n\n if (languageDefinition.buildCommand) {\n try {\n const buildCommand = languageDefinition.buildCommand(mainFilePath);\n\n const buildSpawnResult = spawnSyncWithTimeout(\n buildCommand[0],\n buildCommand.slice(1),\n { cwd: params.cwd, encoding: 'utf8', env },\n BUILD_TIMEOUT_SECONDS\n );\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (buildSpawnResult.status !== 0) {\n decisionCode = DecisionCode.BUILD_ERROR;\n } else if (buildSpawnResult.timeSeconds > BUILD_TIMEOUT_SECONDS) {\n decisionCode = DecisionCode.BUILD_TIME_LIMIT_EXCEEDED;\n } else if (\n buildSpawnResult.stdout.length > MAX_STDOUT_LENGTH ||\n buildSpawnResult.stderr.length > MAX_STDOUT_LENGTH\n ) {\n decisionCode = DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED;\n }\n\n if (decisionCode !== DecisionCode.ACCEPTED) {\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'build',\n decisionCode,\n exitStatus: buildSpawnResult.status ?? undefined,\n stdout: buildSpawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: buildSpawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: buildSpawnResult.timeSeconds,\n memoryBytes: buildSpawnResult.memoryBytes,\n });\n return;\n }\n } catch (error) {\n console.error('build error', error);\n\n printTestCaseResult({\n testCaseId: testCases[0]?.id ?? 'build',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n for (const testCase of testCases) {\n const timeoutSeconds =\n typeof problemMarkdownFrontMatter.timeLimitMs === 'number'\n ? problemMarkdownFrontMatter.timeLimitMs / 1000\n : JUDGE_DEFAULT_TIMEOUT_SECONDS;\n\n const command = languageDefinition.command(mainFilePath);\n\n const spawnResult = spawnSyncWithTimeout(\n command[0],\n command.slice(1),\n { cwd: params.cwd, encoding: 'utf8', input: testCase.input, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(params.cwd, problemMarkdownFrontMatter.requiredOutputFilePaths ?? []);\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (spawnResult.status !== 0) {\n decisionCode = DecisionCode.RUNTIME_ERROR;\n } else if (spawnResult.timeSeconds > timeoutSeconds) {\n decisionCode = DecisionCode.TIME_LIMIT_EXCEEDED;\n } else if (spawnResult.memoryBytes > (problemMarkdownFrontMatter.memoryLimitByte ?? Number.POSITIVE_INFINITY)) {\n decisionCode = DecisionCode.MEMORY_LIMIT_EXCEEDED;\n } else if (spawnResult.stdout.length > MAX_STDOUT_LENGTH || spawnResult.stderr.length > MAX_STDOUT_LENGTH) {\n decisionCode = DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED;\n } else if (outputFiles.length < (problemMarkdownFrontMatter.requiredOutputFilePaths?.length ?? 0)) {\n decisionCode = DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR;\n } else if (!compareStdoutAsSpaceSeparatedTokens(spawnResult.stdout, testCase.output ?? '')) {\n decisionCode = DecisionCode.WRONG_ANSWER;\n }\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode,\n exitStatus: spawnResult.status ?? undefined,\n stdin: testCase.input,\n stdout: spawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: spawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: spawnResult.timeSeconds,\n memoryBytes: spawnResult.memoryBytes,\n outputFiles: outputFiles.length > 0 ? outputFiles : undefined,\n });\n\n if (decisionCode !== DecisionCode.ACCEPTED) break;\n }\n}\n\n/**\n * A preset debug function using stdin and stdout as test cases.\n *\n * @example\n * Create `debug.ts`:\n * ```ts\n * import { stdioDebugPreset } from 'judge-utils/presets/stdio';\n *\n * await stdioDebugPreset(import.meta.dirname);\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun debug.ts '{ \"cwd\": \"model_answers/java\", \"stdin\": \"1 2\" }'\n * ```\n */\nexport async function stdioDebugPreset(problemDir: string): Promise<void> {\n const args = parseArgs(process.argv);\n const params = debugParamsSchema.parse(args.params);\n\n const problemMarkdownFrontMatter = await readProblemMarkdownFrontMatter(problemDir);\n\n const originalMainFilePath = await findEntryPointFile(params.cwd, params.language);\n if (!originalMainFilePath) {\n printTestCaseResult({\n testCaseId: 'prebuild',\n decisionCode: DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,\n stderr: `main file not found${params.language ? `: language: ${params.language}` : ''}`,\n });\n return;\n }\n\n const languageDefinition = findLanguageDefinitionByPath(originalMainFilePath);\n if (!languageDefinition) {\n printTestCaseResult({\n testCaseId: 'prebuild',\n decisionCode: DecisionCode.WRONG_ANSWER,\n stderr: 'unsupported language',\n });\n return;\n }\n\n // `CI` changes affects Chainlit. `FORCE_COLOR` affects Bun.\n const env = { ...process.env, CI: '', FORCE_COLOR: '0' };\n\n let prebuiltMainFilePath: string | undefined;\n\n if (languageDefinition.prebuild) {\n try {\n await languageDefinition.prebuild(params.cwd);\n prebuiltMainFilePath = await findEntryPointFile(params.cwd, params.language);\n } catch (error) {\n console.error('prebuild error', error);\n\n printTestCaseResult({\n testCaseId: 'prebuild',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n const mainFilePath = prebuiltMainFilePath ?? originalMainFilePath;\n\n if (languageDefinition.buildCommand) {\n try {\n const buildCommand = languageDefinition.buildCommand(mainFilePath);\n\n const buildSpawnResult = spawnSyncWithTimeout(\n buildCommand[0],\n buildCommand.slice(1),\n { cwd: params.cwd, encoding: 'utf8', env },\n BUILD_TIMEOUT_SECONDS\n );\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (buildSpawnResult.status !== 0) {\n decisionCode = DecisionCode.BUILD_ERROR;\n } else if (buildSpawnResult.timeSeconds > BUILD_TIMEOUT_SECONDS) {\n decisionCode = DecisionCode.BUILD_TIME_LIMIT_EXCEEDED;\n } else if (\n buildSpawnResult.stdout.length > MAX_STDOUT_LENGTH ||\n buildSpawnResult.stderr.length > MAX_STDOUT_LENGTH\n ) {\n decisionCode = DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED;\n }\n\n if (decisionCode !== DecisionCode.ACCEPTED) {\n printTestCaseResult({\n testCaseId: 'build',\n decisionCode,\n exitStatus: buildSpawnResult.status ?? undefined,\n stdout: buildSpawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: buildSpawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: buildSpawnResult.timeSeconds,\n memoryBytes: buildSpawnResult.memoryBytes,\n });\n return;\n }\n } catch (error) {\n console.error('build error', error);\n\n printTestCaseResult({\n testCaseId: 'build',\n decisionCode: DecisionCode.BUILD_ERROR,\n stderr: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n }\n\n {\n const timeoutSeconds = Math.max(\n DEBUG_DEFAULT_TIMEOUT_SECONDS,\n (problemMarkdownFrontMatter.timeLimitMs ?? 0) / 1000\n );\n\n const command = languageDefinition.command(mainFilePath);\n\n const spawnResult = spawnSyncWithTimeout(\n command[0],\n command.slice(1),\n { cwd: params.cwd, encoding: 'utf8', input: params.stdin, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(params.cwd, problemMarkdownFrontMatter.requiredOutputFilePaths ?? []);\n\n let decisionCode: DecisionCode = DecisionCode.ACCEPTED;\n\n if (spawnResult.status !== 0) {\n decisionCode = DecisionCode.RUNTIME_ERROR;\n } else if (spawnResult.timeSeconds > timeoutSeconds) {\n decisionCode = DecisionCode.TIME_LIMIT_EXCEEDED;\n } else if (spawnResult.memoryBytes > (problemMarkdownFrontMatter.memoryLimitByte ?? Number.POSITIVE_INFINITY)) {\n decisionCode = DecisionCode.MEMORY_LIMIT_EXCEEDED;\n } else if (spawnResult.stdout.length > MAX_STDOUT_LENGTH || spawnResult.stderr.length > MAX_STDOUT_LENGTH) {\n decisionCode = DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED;\n } else if (outputFiles.length < (problemMarkdownFrontMatter.requiredOutputFilePaths?.length ?? 0)) {\n decisionCode = DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR;\n }\n\n printTestCaseResult({\n testCaseId: 'debug',\n decisionCode,\n exitStatus: spawnResult.status ?? undefined,\n stdin: params.stdin,\n stdout: spawnResult.stdout.slice(0, MAX_STDOUT_LENGTH) || undefined,\n stderr: spawnResult.stderr.slice(0, MAX_STDOUT_LENGTH) || undefined,\n timeSeconds: spawnResult.timeSeconds,\n memoryBytes: spawnResult.memoryBytes,\n outputFiles: outputFiles.length > 0 ? outputFiles : undefined,\n });\n }\n}\n"],"names":["MAX_STDOUT_LENGTH","judgeParamsSchema","z","object","cwd","string","language","union","array","optional","debugParamsSchema","extend","stdin","stdioJudgePreset","_x","_stdioJudgePreset","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","problemDir","args","params","problemMarkdownFrontMatter","testCases","staticAnalysisTestCaseResult","_testCases$0$id","_testCases$","originalMainFilePath","_testCases$0$id2","_testCases$2","languageDefinition","_testCases$0$id3","_testCases$3","env","prebuiltMainFilePath","_testCases$0$id4","_testCases$4","mainFilePath","buildCommand","buildSpawnResult","decisionCode","_testCases$0$id5","_testCases$5","_buildSpawnResult$sta","_testCases$0$id6","_testCases$6","_iterator","_step","_problemMarkdownFront","_problemMarkdownFront2","_problemMarkdownFront3","_problemMarkdownFront4","_testCase$output","_spawnResult$status","testCase","timeoutSeconds","command","spawnResult","outputFiles","_decisionCode","_t","_t2","_t3","w","_context","p","n","parseArgs","process","argv","parse","readProblemMarkdownFrontMatter","v","readTestCases","path","join","judgeByStaticAnalysis","printTestCaseResult","_objectSpread","testCaseId","id","a","findEntryPointFile","DecisionCode","MISSING_REQUIRED_SUBMISSION_FILE_ERROR","stderr","concat","findLanguageDefinitionByPath","WRONG_ANSWER","CI","FORCE_COLOR","prebuild","console","error","BUILD_ERROR","Error","message","String","spawnSyncWithTimeout","slice","encoding","ACCEPTED","status","timeSeconds","BUILD_TIME_LIMIT_EXCEEDED","stdout","length","BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED","exitStatus","undefined","memoryBytes","_createForOfIteratorHelper","s","done","value","timeLimitMs","input","readOutputFiles","requiredOutputFilePaths","RUNTIME_ERROR","TIME_LIMIT_EXCEEDED","memoryLimitByte","Number","POSITIVE_INFINITY","MEMORY_LIMIT_EXCEEDED","OUTPUT_SIZE_LIMIT_EXCEEDED","MISSING_REQUIRED_OUTPUT_FILE_ERROR","compareStdoutAsSpaceSeparatedTokens","output","e","f","stdioDebugPreset","_x2","_stdioDebugPreset","_callee2","_buildSpawnResult$sta2","_problemMarkdownFront5","_problemMarkdownFront6","_problemMarkdownFront7","_problemMarkdownFront8","_problemMarkdownFront9","_spawnResult$status2","_decisionCode2","_t4","_t5","_context2","Math","max"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";exports.DecisionCode={WAITING_JUDGE:0,JUDGE_NOT_AVAILABLE:1,WRONG_ANSWER:1e3,RUNTIME_ERROR:1001,TIME_LIMIT_EXCEEDED:1002,MEMORY_LIMIT_EXCEEDED:1003,OUTPUT_SIZE_LIMIT_EXCEEDED:1004,PRESENTATION_ERROR:1005,FORBIDDEN_PATTERNS_IN_CODE_ERROR:1006,REQUIRED_PATTERNS_IN_CODE_ERROR:1007,BUILD_ERROR:1100,BUILD_TIME_LIMIT_EXCEEDED:1101,BUILD_MEMORY_LIMIT_EXCEEDED:1102,BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED:1103,MISSING_REQUIRED_SUBMISSION_FILE_ERROR:1201,MISSING_REQUIRED_OUTPUT_FILE_ERROR:1202,ACCEPTED:2e3};
|
|
2
|
+
//# sourceMappingURL=decisionCode.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisionCode.cjs","sources":["../../src/types/decisionCode.ts"],"sourcesContent":["export const DecisionCode = {\n /** ジャッジ待ち */\n WAITING_JUDGE: 0,\n\n /** ジャッジ利用不可 */\n JUDGE_NOT_AVAILABLE: 1,\n\n /** 不正解 */\n WRONG_ANSWER: 1000,\n\n /** 実行時エラー */\n RUNTIME_ERROR: 1001,\n\n /** 時間制限超過 */\n TIME_LIMIT_EXCEEDED: 1002,\n\n /** メモリ制限超過 */\n MEMORY_LIMIT_EXCEEDED: 1003,\n\n /** 出力サイズ制限超過 */\n OUTPUT_SIZE_LIMIT_EXCEEDED: 1004,\n\n /** 出力形式エラー */\n PRESENTATION_ERROR: 1005,\n\n /** コード中の禁止された表現 */\n FORBIDDEN_PATTERNS_IN_CODE_ERROR: 1006,\n\n /** コード中の必要な表現 */\n REQUIRED_PATTERNS_IN_CODE_ERROR: 1007,\n\n /** ビルドエラー */\n BUILD_ERROR: 1100,\n\n /** ビルド時間制限超過 */\n BUILD_TIME_LIMIT_EXCEEDED: 1101,\n\n /** ビルドメモリ制限超過 */\n BUILD_MEMORY_LIMIT_EXCEEDED: 1102,\n\n /** ビルド時の出力サイズ制限超過 */\n BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED: 1103,\n\n /** 必須ファイル不足 */\n MISSING_REQUIRED_SUBMISSION_FILE_ERROR: 1201,\n\n /** 必須出力ファイル不足 */\n MISSING_REQUIRED_OUTPUT_FILE_ERROR: 1202,\n\n /**\n * 受理\n *\n * 最大の値であり、降順で取得したときに最初に見つかることが保証されている。\n */\n ACCEPTED: 2000,\n} as const;\n\nexport type DecisionCode = (typeof DecisionCode)[keyof typeof DecisionCode];\n"],"names":["WAITING_JUDGE","JUDGE_NOT_AVAILABLE","WRONG_ANSWER","RUNTIME_ERROR","TIME_LIMIT_EXCEEDED","MEMORY_LIMIT_EXCEEDED","OUTPUT_SIZE_LIMIT_EXCEEDED","PRESENTATION_ERROR","FORBIDDEN_PATTERNS_IN_CODE_ERROR","REQUIRED_PATTERNS_IN_CODE_ERROR","BUILD_ERROR","BUILD_TIME_LIMIT_EXCEEDED","BUILD_MEMORY_LIMIT_EXCEEDED","BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED","MISSING_REQUIRED_SUBMISSION_FILE_ERROR","MISSING_REQUIRED_OUTPUT_FILE_ERROR","ACCEPTED"],"mappings":"kCAA4B,CAE1BA,cAAe,EAGfC,oBAAqB,EAGrBC,aAAc,IAGdC,cAAe,KAGfC,oBAAqB,KAGrBC,sBAAuB,KAGvBC,2BAA4B,KAG5BC,mBAAoB,KAGpBC,iCAAkC,KAGlCC,gCAAiC,KAGjCC,YAAa,KAGbC,0BAA2B,KAG3BC,4BAA6B,KAG7BC,iCAAkC,KAGlCC,uCAAwC,KAGxCC,mCAAoC,KAOpCC,SAAU"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const DecisionCode: {
|
|
2
|
+
/** ジャッジ待ち */
|
|
3
|
+
readonly WAITING_JUDGE: 0;
|
|
4
|
+
/** ジャッジ利用不可 */
|
|
5
|
+
readonly JUDGE_NOT_AVAILABLE: 1;
|
|
6
|
+
/** 不正解 */
|
|
7
|
+
readonly WRONG_ANSWER: 1000;
|
|
8
|
+
/** 実行時エラー */
|
|
9
|
+
readonly RUNTIME_ERROR: 1001;
|
|
10
|
+
/** 時間制限超過 */
|
|
11
|
+
readonly TIME_LIMIT_EXCEEDED: 1002;
|
|
12
|
+
/** メモリ制限超過 */
|
|
13
|
+
readonly MEMORY_LIMIT_EXCEEDED: 1003;
|
|
14
|
+
/** 出力サイズ制限超過 */
|
|
15
|
+
readonly OUTPUT_SIZE_LIMIT_EXCEEDED: 1004;
|
|
16
|
+
/** 出力形式エラー */
|
|
17
|
+
readonly PRESENTATION_ERROR: 1005;
|
|
18
|
+
/** コード中の禁止された表現 */
|
|
19
|
+
readonly FORBIDDEN_PATTERNS_IN_CODE_ERROR: 1006;
|
|
20
|
+
/** コード中の必要な表現 */
|
|
21
|
+
readonly REQUIRED_PATTERNS_IN_CODE_ERROR: 1007;
|
|
22
|
+
/** ビルドエラー */
|
|
23
|
+
readonly BUILD_ERROR: 1100;
|
|
24
|
+
/** ビルド時間制限超過 */
|
|
25
|
+
readonly BUILD_TIME_LIMIT_EXCEEDED: 1101;
|
|
26
|
+
/** ビルドメモリ制限超過 */
|
|
27
|
+
readonly BUILD_MEMORY_LIMIT_EXCEEDED: 1102;
|
|
28
|
+
/** ビルド時の出力サイズ制限超過 */
|
|
29
|
+
readonly BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED: 1103;
|
|
30
|
+
/** 必須ファイル不足 */
|
|
31
|
+
readonly MISSING_REQUIRED_SUBMISSION_FILE_ERROR: 1201;
|
|
32
|
+
/** 必須出力ファイル不足 */
|
|
33
|
+
readonly MISSING_REQUIRED_OUTPUT_FILE_ERROR: 1202;
|
|
34
|
+
/**
|
|
35
|
+
* 受理
|
|
36
|
+
*
|
|
37
|
+
* 最大の値であり、降順で取得したときに最初に見つかることが保証されている。
|
|
38
|
+
*/
|
|
39
|
+
readonly ACCEPTED: 2000;
|
|
40
|
+
};
|
|
41
|
+
export type DecisionCode = (typeof DecisionCode)[keyof typeof DecisionCode];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var E={WAITING_JUDGE:0,JUDGE_NOT_AVAILABLE:1,WRONG_ANSWER:1e3,RUNTIME_ERROR:1001,TIME_LIMIT_EXCEEDED:1002,MEMORY_LIMIT_EXCEEDED:1003,OUTPUT_SIZE_LIMIT_EXCEEDED:1004,PRESENTATION_ERROR:1005,FORBIDDEN_PATTERNS_IN_CODE_ERROR:1006,REQUIRED_PATTERNS_IN_CODE_ERROR:1007,BUILD_ERROR:1100,BUILD_TIME_LIMIT_EXCEEDED:1101,BUILD_MEMORY_LIMIT_EXCEEDED:1102,BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED:1103,MISSING_REQUIRED_SUBMISSION_FILE_ERROR:1201,MISSING_REQUIRED_OUTPUT_FILE_ERROR:1202,ACCEPTED:2e3};export{E as DecisionCode};
|
|
2
|
+
//# sourceMappingURL=decisionCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisionCode.js","sources":["../../src/types/decisionCode.ts"],"sourcesContent":["export const DecisionCode = {\n /** ジャッジ待ち */\n WAITING_JUDGE: 0,\n\n /** ジャッジ利用不可 */\n JUDGE_NOT_AVAILABLE: 1,\n\n /** 不正解 */\n WRONG_ANSWER: 1000,\n\n /** 実行時エラー */\n RUNTIME_ERROR: 1001,\n\n /** 時間制限超過 */\n TIME_LIMIT_EXCEEDED: 1002,\n\n /** メモリ制限超過 */\n MEMORY_LIMIT_EXCEEDED: 1003,\n\n /** 出力サイズ制限超過 */\n OUTPUT_SIZE_LIMIT_EXCEEDED: 1004,\n\n /** 出力形式エラー */\n PRESENTATION_ERROR: 1005,\n\n /** コード中の禁止された表現 */\n FORBIDDEN_PATTERNS_IN_CODE_ERROR: 1006,\n\n /** コード中の必要な表現 */\n REQUIRED_PATTERNS_IN_CODE_ERROR: 1007,\n\n /** ビルドエラー */\n BUILD_ERROR: 1100,\n\n /** ビルド時間制限超過 */\n BUILD_TIME_LIMIT_EXCEEDED: 1101,\n\n /** ビルドメモリ制限超過 */\n BUILD_MEMORY_LIMIT_EXCEEDED: 1102,\n\n /** ビルド時の出力サイズ制限超過 */\n BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED: 1103,\n\n /** 必須ファイル不足 */\n MISSING_REQUIRED_SUBMISSION_FILE_ERROR: 1201,\n\n /** 必須出力ファイル不足 */\n MISSING_REQUIRED_OUTPUT_FILE_ERROR: 1202,\n\n /**\n * 受理\n *\n * 最大の値であり、降順で取得したときに最初に見つかることが保証されている。\n */\n ACCEPTED: 2000,\n} as const;\n\nexport type DecisionCode = (typeof DecisionCode)[keyof typeof DecisionCode];\n"],"names":["DecisionCode","WAITING_JUDGE","JUDGE_NOT_AVAILABLE","WRONG_ANSWER","RUNTIME_ERROR","TIME_LIMIT_EXCEEDED","MEMORY_LIMIT_EXCEEDED","OUTPUT_SIZE_LIMIT_EXCEEDED","PRESENTATION_ERROR","FORBIDDEN_PATTERNS_IN_CODE_ERROR","REQUIRED_PATTERNS_IN_CODE_ERROR","BUILD_ERROR","BUILD_TIME_LIMIT_EXCEEDED","BUILD_MEMORY_LIMIT_EXCEEDED","BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED","MISSING_REQUIRED_SUBMISSION_FILE_ERROR","MISSING_REQUIRED_OUTPUT_FILE_ERROR","ACCEPTED"],"mappings":"AAAO,IAAMA,EAAe,CAE1BC,cAAe,EAGfC,oBAAqB,EAGrBC,aAAc,IAGdC,cAAe,KAGfC,oBAAqB,KAGrBC,sBAAuB,KAGvBC,2BAA4B,KAG5BC,mBAAoB,KAGpBC,iCAAkC,KAGlCC,gCAAiC,KAGjCC,YAAa,KAGbC,0BAA2B,KAG3BC,4BAA6B,KAG7BC,iCAAkC,KAGlCC,uCAAwC,KAGxCC,mCAAoC,KAOpCC,SAAU"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n,e,o=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),t=require("node:path"),s=require("../helpers/removeCommentsInSourceCode.cjs"),i={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},c={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/},{open:/`/,close:/(?<!\\)(?:\\{2})*`/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},a={c:{fileExtensions:[".c"],buildCommand:function(n){return["gcc","--std=c17","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:i},cpp:{fileExtensions:[".cpp"],buildCommand:function(n){return["g++","--std=c++20","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:i},csharp:{fileExtensions:[".cs"],prebuild:(e=o.asyncToGenerator(o.regenerator().m(function n(e){return o.regenerator().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,r.promises.writeFile(t.join(e,"Main.csproj"),'<Project Sdk="Microsoft.NET.Sdk">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>');case 1:return n.a(2)}},n)})),function(n){return e.apply(this,arguments)}),buildCommand:function(){return["dotnet","build","Main.csproj","--configuration","Release","--verbosity","quiet"]},command:function(){return["dotnet","bin/Release/net8.0/Main.dll"]},grammer:i},css:{fileExtensions:[".css"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//}]}},dart:{fileExtensions:[".dart"],buildCommand:function(n){return["dart","compile","exe",n,"-o","main"]},command:function(){return["./main"]},grammer:i},java:{fileExtensions:[".java"],prebuild:(n=o.asyncToGenerator(o.regenerator().m(function n(e){var c,a,m,u,l,p,f,d,g,b,x;return o.regenerator().w(function(n){for(;;)switch(n.p=n.n){case 0:return c=/\bpublic\s+class\s+(\w+)\b/,b=o.createForOfIteratorHelper,n.n=1,r.promises.readdir(e,{withFileTypes:!0});case 1:a=b(n.v),n.p=2,a.s();case 3:if((m=a.n()).done){n.n=7;break}if((l=m.value).isFile()&&l.name.endsWith(".java")){n.n=4;break}return n.a(3,6);case 4:return n.n=5,r.promises.readFile(t.join(e,l.name),"utf8");case 5:if(p=n.v,f=null!=(u=c.exec(s.removeCommentsInSourceCode(i,p)))?u:[],d=o.slicedToArray(f,2),!(g=d[1])){n.n=6;break}return n.n=6,r.promises.rename(t.join(e,l.name),t.join(e,"".concat(g,".java")));case 6:n.n=3;break;case 7:n.n=9;break;case 8:n.p=8,x=n.v,a.e(x);case 9:return n.p=9,a.f(),n.f(9);case 10:return n.a(2)}},n,null,[[2,8,9,10]])})),function(e){return n.apply(this,arguments)}),buildCommand:function(n){return["javac",n]},command:function(n){return["java","-Xmx1024m",n.replace(/\.java$/,"")]},grammer:i},javascript:{fileExtensions:[".js",".cjs",".mjs"],command:function(n){return["bun",n]},grammer:c},jsp:{fileExtensions:[".jsp"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/},{open:/\n?[ \t]*<%--/,close:/--%>/},{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]}},haskell:{fileExtensions:[".hs"],buildCommand:function(n){return["ghc","-o","main",n]},command:function(){return["./main"]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\{-/,close:/-\}/},{open:/\n?[ \t]*--/}]}},html:{fileExtensions:[".html"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/}]}},php:{fileExtensions:[".php"],command:function(n){return["php",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//},{open:/\n?[ \t]*#/}]}},python:{fileExtensions:[".py"],command:function(n){return["python3",n]},grammer:{strings:[{open:/'''/,close:/(?<!\\)(?:\\{2})*'''/},{open:/"""/,close:/(?<!\\)(?:\\{2})*"""/},{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*'''/,close:/'''/},{open:/\n?[ \t]*"""/,close:/"""/},{open:/\n?[ \t]*#/}]}},ruby:{fileExtensions:[".rb"],buildCommand:function(n){return["ruby","-c",n]},command:function(n){return["ruby","--jit",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*=begin/,close:/=end/},{open:/\n?[ \t]*#/}]}},rust:{fileExtensions:[".rs"],buildCommand:function(n){return["rustc",n,"-o","main"]},command:function(){return["./main"]},grammer:i},zig:{fileExtensions:[".zig"],buildCommand:function(n){return["zig","build-exe",n]},command:function(n){return["./"+n.replace(/\.zig$/,"")]},grammer:i},typescript:{fileExtensions:[".ts",".cts",".mts"],command:function(n){return["bun",n]},grammer:c},text:{fileExtensions:[".txt"],command:function(n){return["cat",n]}}};exports.languageIdToDefinition=a;
|
|
2
|
+
//# sourceMappingURL=language.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.cjs","sources":["../../src/types/language.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { removeCommentsInSourceCode } from '../helpers/removeCommentsInSourceCode.js';\n\nexport interface LanguageDefinition {\n /** File extensions to judge with this config. */\n fileExtensions: readonly string[];\n\n /** Function executed before the build. */\n prebuild?(cwd: string): Promise<void>;\n\n /** Returns the command to build a user program. */\n buildCommand?(filePath: string): [string, ...string[]];\n\n /** Returns the command to run a user program. */\n command(filePath: string): [string, ...string[]];\n\n /** Grammer definition for static analysis. */\n grammer?: {\n strings?: readonly { open: RegExp; close: RegExp }[];\n comments?: readonly { open: RegExp; close?: RegExp }[];\n };\n}\n\nconst cLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nconst javaScriptLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n { open: /`/, close: /(?<!\\\\)(?:\\\\{2})*`/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nexport const languageIdToDefinition: Readonly<Record<string, Readonly<LanguageDefinition>>> = {\n c: {\n fileExtensions: ['.c'],\n buildCommand: (filePath) => ['gcc', '--std=c17', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n cpp: {\n fileExtensions: ['.cpp'],\n buildCommand: (filePath) => ['g++', '--std=c++20', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n csharp: {\n fileExtensions: ['.cs'],\n prebuild: async (cwd) => {\n await fs.promises.writeFile(\n path.join(cwd, 'Main.csproj'),\n `<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>`\n );\n },\n buildCommand: () => ['dotnet', 'build', 'Main.csproj', '--configuration', 'Release', '--verbosity', 'quiet'],\n command: () => ['dotnet', 'bin/Release/net8.0/Main.dll'],\n grammer: cLikeGrammer,\n },\n\n css: {\n fileExtensions: ['.css'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }],\n },\n },\n\n dart: {\n fileExtensions: ['.dart'],\n buildCommand: (filePath) => ['dart', 'compile', 'exe', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n java: {\n fileExtensions: ['.java'],\n prebuild: async (cwd) => {\n const publicClassRegex = /\\bpublic\\s+class\\s+(\\w+)\\b/;\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true })) {\n if (!dirent.isFile() || !dirent.name.endsWith('.java')) continue;\n const data = await fs.promises.readFile(path.join(cwd, dirent.name), 'utf8');\n const [, className] = publicClassRegex.exec(removeCommentsInSourceCode(cLikeGrammer, data)) ?? [];\n if (className) await fs.promises.rename(path.join(cwd, dirent.name), path.join(cwd, `${className}.java`));\n }\n },\n buildCommand: (fileName) => ['javac', fileName],\n // For example, Problem 7-3 in WillBooster's Java lecture uses at least 256MB.\n command: (fileName) => ['java', '-Xmx1024m', fileName.replace(/\\.java$/, '')],\n grammer: cLikeGrammer,\n },\n\n javascript: {\n fileExtensions: ['.js', '.cjs', '.mjs'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n jsp: {\n fileExtensions: ['.jsp'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*<!--/, close: /-->/ },\n { open: /\\n?[ \\t]*<%--/, close: /--%>/ },\n { open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// },\n { open: /\\n?[ \\t]*\\/\\// },\n ],\n },\n },\n\n haskell: {\n fileExtensions: ['.hs'],\n buildCommand: (filePath) => ['ghc', '-o', 'main', filePath],\n command: () => ['./main'],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\{-/, close: /-\\}/ }, { open: /\\n?[ \\t]*--/ }],\n },\n },\n\n html: {\n fileExtensions: ['.html'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*<!--/, close: /-->/ }],\n },\n },\n\n php: {\n fileExtensions: ['.php'],\n command: (fileName) => ['php', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n python: {\n fileExtensions: ['.py'],\n command: (fileName) => ['python3', fileName],\n grammer: {\n strings: [\n { open: /'''/, close: /(?<!\\\\)(?:\\\\{2})*'''/ },\n { open: /\"\"\"/, close: /(?<!\\\\)(?:\\\\{2})*\"\"\"/ },\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*'''/, close: /'''/ },\n { open: /\\n?[ \\t]*\"\"\"/, close: /\"\"\"/ },\n { open: /\\n?[ \\t]*#/ },\n ],\n },\n },\n\n ruby: {\n fileExtensions: ['.rb'],\n buildCommand: (fileName) => ['ruby', '-c', fileName],\n command: (fileName) => ['ruby', '--jit', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*=begin/, close: /=end/ }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n rust: {\n fileExtensions: ['.rs'],\n buildCommand: (filePath) => ['rustc', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n zig: {\n fileExtensions: ['.zig'],\n buildCommand: (filePath) => ['zig', 'build-exe', filePath],\n command: (filePath) => ['./' + filePath.replace(/\\.zig$/, '')],\n grammer: cLikeGrammer,\n },\n\n typescript: {\n fileExtensions: ['.ts', '.cts', '.mts'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n text: {\n fileExtensions: ['.txt'],\n command: (fileName) => ['cat', fileName],\n },\n} as const;\n"],"names":["_prebuild2","_prebuild","cLikeGrammer","strings","open","close","comments","javaScriptLikeGrammer","languageIdToDefinition","c","fileExtensions","buildCommand","filePath","command","grammer","cpp","csharp","prebuild","_asyncToGenerator","_regenerator","m","_callee","cwd","w","_context","n","fs","promises","writeFile","path","join","a","_x","apply","this","arguments","css","dart","java","_callee2","publicClassRegex","_iterator","_step","_publicClassRegex$exe","dirent","data","_ref","_ref2","className","_t","_t2","_context2","p","_createForOfIteratorHelper","readdir","withFileTypes","v","s","done","value","isFile","name","endsWith","readFile","exec","removeCommentsInSourceCode","_slicedToArray","rename","concat","e","f","_x2","fileName","replace","javascript","jsp","haskell","html","php","python","ruby","rust","zig","typescript","text"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface LanguageDefinition {
|
|
2
|
+
/** File extensions to judge with this config. */
|
|
3
|
+
fileExtensions: readonly string[];
|
|
4
|
+
/** Function executed before the build. */
|
|
5
|
+
prebuild?(cwd: string): Promise<void>;
|
|
6
|
+
/** Returns the command to build a user program. */
|
|
7
|
+
buildCommand?(filePath: string): [string, ...string[]];
|
|
8
|
+
/** Returns the command to run a user program. */
|
|
9
|
+
command(filePath: string): [string, ...string[]];
|
|
10
|
+
/** Grammer definition for static analysis. */
|
|
11
|
+
grammer?: {
|
|
12
|
+
strings?: readonly {
|
|
13
|
+
open: RegExp;
|
|
14
|
+
close: RegExp;
|
|
15
|
+
}[];
|
|
16
|
+
comments?: readonly {
|
|
17
|
+
open: RegExp;
|
|
18
|
+
close?: RegExp;
|
|
19
|
+
}[];
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare const languageIdToDefinition: Readonly<Record<string, Readonly<LanguageDefinition>>>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{asyncToGenerator as n,regenerator as e,slicedToArray as o,createForOfIteratorHelper as r}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:fs";import s from"node:path";import{removeCommentsInSourceCode as i}from"../helpers/removeCommentsInSourceCode.js";var c,m,a={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},l={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/},{open:/`/,close:/(?<!\\)(?:\\{2})*`/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},u={c:{fileExtensions:[".c"],buildCommand:function(n){return["gcc","--std=c17","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:a},cpp:{fileExtensions:[".cpp"],buildCommand:function(n){return["g++","--std=c++20","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:a},csharp:{fileExtensions:[".cs"],prebuild:(m=n(e().m(function n(o){return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,t.promises.writeFile(s.join(o,"Main.csproj"),'<Project Sdk="Microsoft.NET.Sdk">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>');case 1:return n.a(2)}},n)})),function(n){return m.apply(this,arguments)}),buildCommand:function(){return["dotnet","build","Main.csproj","--configuration","Release","--verbosity","quiet"]},command:function(){return["dotnet","bin/Release/net8.0/Main.dll"]},grammer:a},css:{fileExtensions:[".css"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//}]}},dart:{fileExtensions:[".dart"],buildCommand:function(n){return["dart","compile","exe",n,"-o","main"]},command:function(){return["./main"]},grammer:a},java:{fileExtensions:[".java"],prebuild:(c=n(e().m(function n(c){var m,l,u,p,f,d,g,b,x,j,h;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:return m=/\bpublic\s+class\s+(\w+)\b/,j=r,n.n=1,t.promises.readdir(c,{withFileTypes:!0});case 1:l=j(n.v),n.p=2,l.s();case 3:if((u=l.n()).done){n.n=7;break}if((f=u.value).isFile()&&f.name.endsWith(".java")){n.n=4;break}return n.a(3,6);case 4:return n.n=5,t.promises.readFile(s.join(c,f.name),"utf8");case 5:if(d=n.v,g=null!=(p=m.exec(i(a,d)))?p:[],b=o(g,2),!(x=b[1])){n.n=6;break}return n.n=6,t.promises.rename(s.join(c,f.name),s.join(c,"".concat(x,".java")));case 6:n.n=3;break;case 7:n.n=9;break;case 8:n.p=8,h=n.v,l.e(h);case 9:return n.p=9,l.f(),n.f(9);case 10:return n.a(2)}},n,null,[[2,8,9,10]])})),function(n){return c.apply(this,arguments)}),buildCommand:function(n){return["javac",n]},command:function(n){return["java","-Xmx1024m",n.replace(/\.java$/,"")]},grammer:a},javascript:{fileExtensions:[".js",".cjs",".mjs"],command:function(n){return["bun",n]},grammer:l},jsp:{fileExtensions:[".jsp"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/},{open:/\n?[ \t]*<%--/,close:/--%>/},{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]}},haskell:{fileExtensions:[".hs"],buildCommand:function(n){return["ghc","-o","main",n]},command:function(){return["./main"]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\{-/,close:/-\}/},{open:/\n?[ \t]*--/}]}},html:{fileExtensions:[".html"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/}]}},php:{fileExtensions:[".php"],command:function(n){return["php",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//},{open:/\n?[ \t]*#/}]}},python:{fileExtensions:[".py"],command:function(n){return["python3",n]},grammer:{strings:[{open:/'''/,close:/(?<!\\)(?:\\{2})*'''/},{open:/"""/,close:/(?<!\\)(?:\\{2})*"""/},{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*'''/,close:/'''/},{open:/\n?[ \t]*"""/,close:/"""/},{open:/\n?[ \t]*#/}]}},ruby:{fileExtensions:[".rb"],buildCommand:function(n){return["ruby","-c",n]},command:function(n){return["ruby","--jit",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*=begin/,close:/=end/},{open:/\n?[ \t]*#/}]}},rust:{fileExtensions:[".rs"],buildCommand:function(n){return["rustc",n,"-o","main"]},command:function(){return["./main"]},grammer:a},zig:{fileExtensions:[".zig"],buildCommand:function(n){return["zig","build-exe",n]},command:function(n){return["./"+n.replace(/\.zig$/,"")]},grammer:a},typescript:{fileExtensions:[".ts",".cts",".mts"],command:function(n){return["bun",n]},grammer:l},text:{fileExtensions:[".txt"],command:function(n){return["cat",n]}}};export{u as languageIdToDefinition};
|
|
2
|
+
//# sourceMappingURL=language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.js","sources":["../../src/types/language.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { removeCommentsInSourceCode } from '../helpers/removeCommentsInSourceCode.js';\n\nexport interface LanguageDefinition {\n /** File extensions to judge with this config. */\n fileExtensions: readonly string[];\n\n /** Function executed before the build. */\n prebuild?(cwd: string): Promise<void>;\n\n /** Returns the command to build a user program. */\n buildCommand?(filePath: string): [string, ...string[]];\n\n /** Returns the command to run a user program. */\n command(filePath: string): [string, ...string[]];\n\n /** Grammer definition for static analysis. */\n grammer?: {\n strings?: readonly { open: RegExp; close: RegExp }[];\n comments?: readonly { open: RegExp; close?: RegExp }[];\n };\n}\n\nconst cLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nconst javaScriptLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n { open: /`/, close: /(?<!\\\\)(?:\\\\{2})*`/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nexport const languageIdToDefinition: Readonly<Record<string, Readonly<LanguageDefinition>>> = {\n c: {\n fileExtensions: ['.c'],\n buildCommand: (filePath) => ['gcc', '--std=c17', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n cpp: {\n fileExtensions: ['.cpp'],\n buildCommand: (filePath) => ['g++', '--std=c++20', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n csharp: {\n fileExtensions: ['.cs'],\n prebuild: async (cwd) => {\n await fs.promises.writeFile(\n path.join(cwd, 'Main.csproj'),\n `<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>`\n );\n },\n buildCommand: () => ['dotnet', 'build', 'Main.csproj', '--configuration', 'Release', '--verbosity', 'quiet'],\n command: () => ['dotnet', 'bin/Release/net8.0/Main.dll'],\n grammer: cLikeGrammer,\n },\n\n css: {\n fileExtensions: ['.css'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }],\n },\n },\n\n dart: {\n fileExtensions: ['.dart'],\n buildCommand: (filePath) => ['dart', 'compile', 'exe', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n java: {\n fileExtensions: ['.java'],\n prebuild: async (cwd) => {\n const publicClassRegex = /\\bpublic\\s+class\\s+(\\w+)\\b/;\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true })) {\n if (!dirent.isFile() || !dirent.name.endsWith('.java')) continue;\n const data = await fs.promises.readFile(path.join(cwd, dirent.name), 'utf8');\n const [, className] = publicClassRegex.exec(removeCommentsInSourceCode(cLikeGrammer, data)) ?? [];\n if (className) await fs.promises.rename(path.join(cwd, dirent.name), path.join(cwd, `${className}.java`));\n }\n },\n buildCommand: (fileName) => ['javac', fileName],\n // For example, Problem 7-3 in WillBooster's Java lecture uses at least 256MB.\n command: (fileName) => ['java', '-Xmx1024m', fileName.replace(/\\.java$/, '')],\n grammer: cLikeGrammer,\n },\n\n javascript: {\n fileExtensions: ['.js', '.cjs', '.mjs'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n jsp: {\n fileExtensions: ['.jsp'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*<!--/, close: /-->/ },\n { open: /\\n?[ \\t]*<%--/, close: /--%>/ },\n { open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// },\n { open: /\\n?[ \\t]*\\/\\// },\n ],\n },\n },\n\n haskell: {\n fileExtensions: ['.hs'],\n buildCommand: (filePath) => ['ghc', '-o', 'main', filePath],\n command: () => ['./main'],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\{-/, close: /-\\}/ }, { open: /\\n?[ \\t]*--/ }],\n },\n },\n\n html: {\n fileExtensions: ['.html'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*<!--/, close: /-->/ }],\n },\n },\n\n php: {\n fileExtensions: ['.php'],\n command: (fileName) => ['php', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n python: {\n fileExtensions: ['.py'],\n command: (fileName) => ['python3', fileName],\n grammer: {\n strings: [\n { open: /'''/, close: /(?<!\\\\)(?:\\\\{2})*'''/ },\n { open: /\"\"\"/, close: /(?<!\\\\)(?:\\\\{2})*\"\"\"/ },\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*'''/, close: /'''/ },\n { open: /\\n?[ \\t]*\"\"\"/, close: /\"\"\"/ },\n { open: /\\n?[ \\t]*#/ },\n ],\n },\n },\n\n ruby: {\n fileExtensions: ['.rb'],\n buildCommand: (fileName) => ['ruby', '-c', fileName],\n command: (fileName) => ['ruby', '--jit', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*=begin/, close: /=end/ }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n rust: {\n fileExtensions: ['.rs'],\n buildCommand: (filePath) => ['rustc', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n zig: {\n fileExtensions: ['.zig'],\n buildCommand: (filePath) => ['zig', 'build-exe', filePath],\n command: (filePath) => ['./' + filePath.replace(/\\.zig$/, '')],\n grammer: cLikeGrammer,\n },\n\n typescript: {\n fileExtensions: ['.ts', '.cts', '.mts'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n text: {\n fileExtensions: ['.txt'],\n command: (fileName) => ['cat', fileName],\n },\n} as const;\n"],"names":["_prebuild2","_prebuild","cLikeGrammer","strings","open","close","comments","javaScriptLikeGrammer","languageIdToDefinition","c","fileExtensions","buildCommand","filePath","command","grammer","cpp","csharp","prebuild","_asyncToGenerator","_regenerator","m","_callee","cwd","w","_context","n","fs","promises","writeFile","path","join","a","_x","apply","this","arguments","css","dart","java","_callee2","publicClassRegex","_iterator","_step","_publicClassRegex$exe","dirent","data","_ref","_ref2","className","_t","_t2","_context2","p","_createForOfIteratorHelper","readdir","withFileTypes","v","s","done","value","isFile","name","endsWith","readFile","exec","removeCommentsInSourceCode","_slicedToArray","rename","concat","e","f","_x2","fileName","replace","javascript","jsp","haskell","html","php","python","ruby","rust","zig","typescript","text"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=require("zod"),r=i.z.object({timeLimitMs:i.z.number().int().min(0).optional(),memoryLimitByte:i.z.number().int().min(0).optional(),requiredRegExpsInCode:i.z.array(i.z.string().min(1)).optional(),forbiddenRegExpsInCode:i.z.array(i.z.string().min(1)).optional(),forbiddenTextsInCode:i.z.array(i.z.string().min(1)).optional(),isManualScoringRequired:i.z.boolean().optional(),requiredEnvironmentVariables:i.z.array(i.z.string().min(1)).optional(),requiredOutputFilePaths:i.z.array(i.z.string().min(1)).optional(),requiredSubmissionFilePaths:i.z.array(i.z.string().min(1)).optional()});exports.problemMarkdownFrontMatterSchema=r;
|
|
2
|
+
//# sourceMappingURL=problem.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problem.cjs","sources":["../../src/types/problem.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const problemMarkdownFrontMatterSchema = z.object({\n timeLimitMs: z.number().int().min(0).optional(),\n memoryLimitByte: z.number().int().min(0).optional(),\n requiredRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenTextsInCode: z.array(z.string().min(1)).optional(),\n isManualScoringRequired: z.boolean().optional(),\n requiredEnvironmentVariables: z.array(z.string().min(1)).optional(),\n requiredOutputFilePaths: z.array(z.string().min(1)).optional(),\n requiredSubmissionFilePaths: z.array(z.string().min(1)).optional(),\n});\n\nexport type ProblemMarkdownFrontMatter = z.infer<typeof problemMarkdownFrontMatterSchema>;\n"],"names":["problemMarkdownFrontMatterSchema","z","object","timeLimitMs","number","min","optional","memoryLimitByte","requiredRegExpsInCode","array","string","forbiddenRegExpsInCode","forbiddenTextsInCode","isManualScoringRequired","requiredEnvironmentVariables","requiredOutputFilePaths","requiredSubmissionFilePaths"],"mappings":"kCAEaA,EAAmCC,EAAAA,EAAEC,OAAO,CACvDC,YAAaF,EAAAA,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACrCC,gBAAiBN,EAAAA,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACzCE,sBAAuBP,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WAClDK,uBAAwBV,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACnDM,qBAAsBX,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACjDO,wBAAyBZ,EAAAA,EAAC,UAAWK,WACrCQ,6BAA8Bb,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACzDS,wBAAyBd,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACpDU,4BAA6Bf,EAAAA,EAAEQ,MAAMR,EAAAA,EAAES,SAASL,IAAI,IAAIC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const problemMarkdownFrontMatterSchema: z.ZodObject<{
|
|
3
|
+
timeLimitMs: z.ZodOptional<z.ZodNumber>;
|
|
4
|
+
memoryLimitByte: z.ZodOptional<z.ZodNumber>;
|
|
5
|
+
requiredRegExpsInCode: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
6
|
+
forbiddenRegExpsInCode: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
7
|
+
forbiddenTextsInCode: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
8
|
+
isManualScoringRequired: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
requiredEnvironmentVariables: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
10
|
+
requiredOutputFilePaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
11
|
+
requiredSubmissionFilePaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type ProblemMarkdownFrontMatter = z.infer<typeof problemMarkdownFrontMatterSchema>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{z as i}from"zod";var n=i.object({timeLimitMs:i.number().int().min(0).optional(),memoryLimitByte:i.number().int().min(0).optional(),requiredRegExpsInCode:i.array(i.string().min(1)).optional(),forbiddenRegExpsInCode:i.array(i.string().min(1)).optional(),forbiddenTextsInCode:i.array(i.string().min(1)).optional(),isManualScoringRequired:i.boolean().optional(),requiredEnvironmentVariables:i.array(i.string().min(1)).optional(),requiredOutputFilePaths:i.array(i.string().min(1)).optional(),requiredSubmissionFilePaths:i.array(i.string().min(1)).optional()});export{n as problemMarkdownFrontMatterSchema};
|
|
2
|
+
//# sourceMappingURL=problem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problem.js","sources":["../../src/types/problem.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const problemMarkdownFrontMatterSchema = z.object({\n timeLimitMs: z.number().int().min(0).optional(),\n memoryLimitByte: z.number().int().min(0).optional(),\n requiredRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenTextsInCode: z.array(z.string().min(1)).optional(),\n isManualScoringRequired: z.boolean().optional(),\n requiredEnvironmentVariables: z.array(z.string().min(1)).optional(),\n requiredOutputFilePaths: z.array(z.string().min(1)).optional(),\n requiredSubmissionFilePaths: z.array(z.string().min(1)).optional(),\n});\n\nexport type ProblemMarkdownFrontMatter = z.infer<typeof problemMarkdownFrontMatterSchema>;\n"],"names":["problemMarkdownFrontMatterSchema","z","object","timeLimitMs","number","min","optional","memoryLimitByte","requiredRegExpsInCode","array","string","forbiddenRegExpsInCode","forbiddenTextsInCode","isManualScoringRequired","requiredEnvironmentVariables","requiredOutputFilePaths","requiredSubmissionFilePaths"],"mappings":"4BAEaA,EAAmCC,EAAEC,OAAO,CACvDC,YAAaF,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACrCC,gBAAiBN,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACzCE,sBAAuBP,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WAClDK,uBAAwBV,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACnDM,qBAAsBX,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACjDO,wBAAyBZ,EAAC,UAAWK,WACrCQ,6BAA8Bb,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACzDS,wBAAyBd,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACpDU,4BAA6Bf,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("zod"),e=t.z.object({path:t.z.string(),data:t.z.string(),encoding:t.z.literal("base64").optional()}),o=t.z.object({testCaseId:t.z.string(),decisionCode:t.z.number().int(),exitStatus:t.z.number().int().optional(),stdin:t.z.string().optional(),stdout:t.z.string().optional(),stderr:t.z.string().optional(),timeSeconds:t.z.number().optional(),memoryBytes:t.z.number().optional(),feedbackMarkdown:t.z.string().optional(),outputFiles:t.z.array(e).optional()});exports.TEST_CASE_RESULT_PREFIX="TEST_CASE_RESULT ",exports.testCaseResultSchema=o;
|
|
2
|
+
//# sourceMappingURL=testCaseResult.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testCaseResult.cjs","sources":["../../src/types/testCaseResult.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const TEST_CASE_RESULT_PREFIX = 'TEST_CASE_RESULT ';\n\nconst testCaseResultOutputFileSchema = z.object({\n path: z.string(),\n data: z.string(),\n encoding: z.literal('base64').optional(),\n});\n\nexport const testCaseResultSchema = z.object({\n testCaseId: z.string(),\n decisionCode: z.number().int(),\n exitStatus: z.number().int().optional(),\n stdin: z.string().optional(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n timeSeconds: z.number().optional(),\n memoryBytes: z.number().optional(),\n feedbackMarkdown: z.string().optional(),\n outputFiles: z.array(testCaseResultOutputFileSchema).optional(),\n});\n\nexport type TestCaseResult = z.infer<typeof testCaseResultSchema>;\n"],"names":["testCaseResultOutputFileSchema","z","object","path","string","data","encoding","literal","optional","testCaseResultSchema","testCaseId","decisionCode","number","exitStatus","stdin","stdout","stderr","timeSeconds","memoryBytes","feedbackMarkdown","outputFiles","array"],"mappings":"kCAIMA,EAAiCC,EAAAA,EAAEC,OAAO,CAC9CC,KAAMF,EAAAA,EAAEG,SACRC,KAAMJ,EAAAA,EAAEG,SACRE,SAAUL,EAAAA,EAAEM,QAAQ,UAAUC,aAGnBC,EAAuBR,EAAAA,EAAEC,OAAO,CAC3CQ,WAAYT,EAAAA,EAAEG,SACdO,aAAcV,EAAAA,EAAEW,SAAQ,MACxBC,WAAYZ,EAAAA,EAAEW,SAAQ,MAAOJ,WAC7BM,MAAOb,EAAAA,EAAEG,SAASI,WAClBO,OAAQd,EAAAA,EAAEG,SAASI,WACnBQ,OAAQf,EAAAA,EAAEG,SAASI,WACnBS,YAAahB,EAAAA,EAAEW,SAASJ,WACxBU,YAAajB,EAAAA,EAAEW,SAASJ,WACxBW,iBAAkBlB,EAAAA,EAAEG,SAASI,WAC7BY,YAAanB,EAAAA,EAAEoB,MAAMrB,GAAgCQ,6CAlBhB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const TEST_CASE_RESULT_PREFIX = "TEST_CASE_RESULT ";
|
|
3
|
+
export declare const testCaseResultSchema: z.ZodObject<{
|
|
4
|
+
testCaseId: z.ZodString;
|
|
5
|
+
decisionCode: z.ZodNumber;
|
|
6
|
+
exitStatus: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
stdin: z.ZodOptional<z.ZodString>;
|
|
8
|
+
stdout: z.ZodOptional<z.ZodString>;
|
|
9
|
+
stderr: z.ZodOptional<z.ZodString>;
|
|
10
|
+
timeSeconds: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
memoryBytes: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
feedbackMarkdown: z.ZodOptional<z.ZodString>;
|
|
13
|
+
outputFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
14
|
+
path: z.ZodString;
|
|
15
|
+
data: z.ZodString;
|
|
16
|
+
encoding: z.ZodOptional<z.ZodLiteral<"base64">>;
|
|
17
|
+
}, z.core.$strip>>>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
export type TestCaseResult = z.infer<typeof testCaseResultSchema>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{z as t}from"zod";var o="TEST_CASE_RESULT ",n=t.object({path:t.string(),data:t.string(),encoding:t.literal("base64").optional()}),i=t.object({testCaseId:t.string(),decisionCode:t.number().int(),exitStatus:t.number().int().optional(),stdin:t.string().optional(),stdout:t.string().optional(),stderr:t.string().optional(),timeSeconds:t.number().optional(),memoryBytes:t.number().optional(),feedbackMarkdown:t.string().optional(),outputFiles:t.array(n).optional()});export{o as TEST_CASE_RESULT_PREFIX,i as testCaseResultSchema};
|
|
2
|
+
//# sourceMappingURL=testCaseResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testCaseResult.js","sources":["../../src/types/testCaseResult.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const TEST_CASE_RESULT_PREFIX = 'TEST_CASE_RESULT ';\n\nconst testCaseResultOutputFileSchema = z.object({\n path: z.string(),\n data: z.string(),\n encoding: z.literal('base64').optional(),\n});\n\nexport const testCaseResultSchema = z.object({\n testCaseId: z.string(),\n decisionCode: z.number().int(),\n exitStatus: z.number().int().optional(),\n stdin: z.string().optional(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n timeSeconds: z.number().optional(),\n memoryBytes: z.number().optional(),\n feedbackMarkdown: z.string().optional(),\n outputFiles: z.array(testCaseResultOutputFileSchema).optional(),\n});\n\nexport type TestCaseResult = z.infer<typeof testCaseResultSchema>;\n"],"names":["TEST_CASE_RESULT_PREFIX","testCaseResultOutputFileSchema","z","object","path","string","data","encoding","literal","optional","testCaseResultSchema","testCaseId","decisionCode","number","exitStatus","stdin","stdout","stderr","timeSeconds","memoryBytes","feedbackMarkdown","outputFiles","array"],"mappings":"wBAEO,IAAMA,EAA0B,oBAEjCC,EAAiCC,EAAEC,OAAO,CAC9CC,KAAMF,EAAEG,SACRC,KAAMJ,EAAEG,SACRE,SAAUL,EAAEM,QAAQ,UAAUC,aAGnBC,EAAuBR,EAAEC,OAAO,CAC3CQ,WAAYT,EAAEG,SACdO,aAAcV,EAAEW,SAAQ,MACxBC,WAAYZ,EAAEW,SAAQ,MAAOJ,WAC7BM,MAAOb,EAAEG,SAASI,WAClBO,OAAQd,EAAEG,SAASI,WACnBQ,OAAQf,EAAEG,SAASI,WACnBS,YAAahB,EAAEW,SAASJ,WACxBU,YAAajB,EAAEW,SAASJ,WACxBW,iBAAkBlB,EAAEG,SAASI,WAC7BY,YAAanB,EAAEoB,MAAMrB,GAAgCQ"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exercode/problem-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": ":100: A set of utilities for judging programs on Exercode (https://exercode.willbooster.com/).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"exercode",
|
|
7
7
|
"judge"
|
|
8
8
|
],
|
|
9
|
-
"repository": "github:WillBooster/problem-utils",
|
|
9
|
+
"repository": "github:WillBooster/exercode-problem-utils",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"author": "WillBooster Inc.",
|
|
12
12
|
"sideEffects": false,
|
|
@@ -16,6 +16,11 @@
|
|
|
16
16
|
"types": "./dist/index.d.ts",
|
|
17
17
|
"import": "./dist/index.js",
|
|
18
18
|
"require": "./dist/index.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./presets/*": {
|
|
21
|
+
"types": "./dist/presets/*.d.ts",
|
|
22
|
+
"import": "./dist/presets/*.js",
|
|
23
|
+
"require": "./dist/presets/*.cjs"
|
|
19
24
|
}
|
|
20
25
|
},
|
|
21
26
|
"main": "dist/index.cjs",
|
|
@@ -25,7 +30,7 @@
|
|
|
25
30
|
"dist/"
|
|
26
31
|
],
|
|
27
32
|
"scripts": {
|
|
28
|
-
"build": "build-ts lib",
|
|
33
|
+
"build": "build-ts lib --input src/index.ts src/presets/*.ts",
|
|
29
34
|
"check-all-for-ai": "yarn check-for-ai && yarn test",
|
|
30
35
|
"check-for-ai": "yarn install > /dev/null && yarn format > /dev/null 2> /dev/null || true && yarn lint-fix --quiet && yarn typecheck",
|
|
31
36
|
"cleanup": "yarn format && yarn lint-fix",
|
|
@@ -38,12 +43,19 @@
|
|
|
38
43
|
"prepare": "husky || true",
|
|
39
44
|
"prettify": "prettier --cache --color --write \"**/{.*/,}*.{cjs,css,cts,htm,html,java,js,json,json5,jsonc,jsx,md,mjs,mts,scss,ts,tsx,vue,yaml,yml}\" \"!**/test{-,/}fixtures/**\" || true",
|
|
40
45
|
"start": "build-ts run src/index.ts",
|
|
41
|
-
"test": "
|
|
46
|
+
"test": "rm -fr temp && vitest test",
|
|
47
|
+
"test/ci-setup": "yarn build && bun install --cwd example",
|
|
42
48
|
"typecheck": "tsc --noEmit --Pretty"
|
|
43
49
|
},
|
|
44
50
|
"prettier": "@willbooster/prettier-config",
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"front-matter": "4.0.2",
|
|
53
|
+
"zod": "4.1.12"
|
|
54
|
+
},
|
|
45
55
|
"devDependencies": {
|
|
56
|
+
"@tsconfig/node24": "24.0.1",
|
|
46
57
|
"@types/eslint": "8.56.11",
|
|
58
|
+
"@types/node": "24.10.1",
|
|
47
59
|
"@willbooster/eslint-config-ts": "11.4.10",
|
|
48
60
|
"@willbooster/prettier-config": "10.2.1",
|
|
49
61
|
"build-ts": "16.0.12",
|
|
@@ -67,9 +79,10 @@
|
|
|
67
79
|
"semantic-release": "25.0.1",
|
|
68
80
|
"sort-package-json": "3.4.0",
|
|
69
81
|
"typescript": "5.9.3",
|
|
70
|
-
"typescript-eslint": "8.
|
|
82
|
+
"typescript-eslint": "8.47.0",
|
|
83
|
+
"vitest": "4.0.8"
|
|
71
84
|
},
|
|
72
|
-
"packageManager": "yarn@4.
|
|
85
|
+
"packageManager": "yarn@4.11.0",
|
|
73
86
|
"engines": {
|
|
74
87
|
"node": ">=24"
|
|
75
88
|
},
|