@exercode/problem-utils 1.2.1 → 1.3.1

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.
@@ -0,0 +1,2 @@
1
+ "use strict";var r=require("../_virtual/_rollupPluginBabelHelpers.cjs"),e=require("node:fs"),n=require("node:path");function t(){return(t=r.asyncToGenerator(r.regenerator().m(function n(t){var a;return r.regenerator().w(function(r){for(;;)switch(r.n){case 0:return r.n=1,e.promises.readdir(t,{recursive:!0});case 1:return a=r.v,r.a(2,new Set(a))}},n)}))).apply(this,arguments)}function a(){return(a=r.asyncToGenerator(r.regenerator().m(function t(a,s){var o,i,c,u,p;return r.regenerator().w(function(t){for(;;)switch(t.p=t.n){case 0:return u=r.createForOfIteratorHelper,t.n=1,e.promises.readdir(a,{recursive:!0});case 1:o=u(t.v),t.p=2,o.s();case 3:if((i=o.n()).done){t.n=6;break}if(c=i.value,!s.has(c)){t.n=4;break}return t.a(3,5);case 4:return t.n=5,e.promises.rm(n.join(a,c),{force:!0,recursive:!0});case 5:t.n=3;break;case 6:t.n=8;break;case 7:t.p=7,p=t.v,o.e(p);case 8:return t.p=8,o.f(),t.f(8);case 9:return t.a(2)}},t,null,[[2,7,8,9]])}))).apply(this,arguments)}exports.cleanWorkingDirectory=function(r,e){return a.apply(this,arguments)},exports.snapshotWorkingDirectory=function(r){return t.apply(this,arguments)};
2
+ //# sourceMappingURL=cleanWorkingDirectory.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanWorkingDirectory.cjs","sources":["../../src/helpers/cleanWorkingDirectory.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\n// Currently, it does not support changing file contents and deleting files.\nexport async function snapshotWorkingDirectory(cwd: string): Promise<ReadonlySet<string>> {\n const paths = await fs.promises.readdir(cwd, { recursive: true });\n return new Set(paths);\n}\n\nexport async function cleanWorkingDirectory(cwd: string, snapshot: ReadonlySet<string>): Promise<void> {\n for (const p of await fs.promises.readdir(cwd, { recursive: true })) {\n if (snapshot.has(p)) continue;\n await fs.promises.rm(path.join(cwd, p), { force: true, recursive: true });\n }\n}\n"],"names":["_snapshotWorkingDirectory","_asyncToGenerator","_regenerator","m","_callee","cwd","paths","w","_context","n","fs","promises","readdir","recursive","v","a","Set","apply","this","arguments","_cleanWorkingDirectory","_callee2","snapshot","_iterator","_step","p","_t","_t2","_context2","_createForOfIteratorHelper","s","done","value","has","rm","path","join","force","e","f","_x2","_x3","_x"],"mappings":"oHAOC,SAAAA,IAAA,OAAAA,EAAAC,EAAAA,iBAAAC,EAAAA,cAAAC,EAHM,SAAAC,EAAwCC,GAAW,IAAAC,EAAA,OAAAJ,gBAAAK,EAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,OAAAD,EAAAC,EAAA,EACpCC,EAAGC,SAASC,QAAQP,EAAK,CAAEQ,WAAW,IAAO,KAAA,EAAtD,OAALP,EAAKE,EAAAM,EAAAN,EAAAO,EAAA,EACJ,IAAIC,IAAIV,IAAM,EAAAF,EAAA,KACtBa,MAAAC,KAAAC,UAAA,CAOA,SAAAC,IAAA,OAAAA,EAAAnB,EAAAA,iBAAAC,gBAAAC,EALM,SAAAkB,EAAqChB,EAAaiB,GAA6B,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAzB,gBAAAK,EAAA,SAAAqB,GAAA,cAAAA,EAAAH,EAAAG,EAAAnB,GAAA,KAAA,EAAA,OAAAiB,EAAAG,EAAAA,0BAAAD,EAAAnB,EAAA,EAC9DC,EAAGC,SAASC,QAAQP,EAAK,CAAEQ,WAAW,IAAO,KAAA,EAAAU,EAAAG,EAAAE,EAAAd,GAAAc,EAAAH,EAAA,EAAAF,EAAAO,IAAA,KAAA,EAAA,IAAAN,EAAAD,EAAAd,KAAAsB,KAAA,CAAAH,EAAAnB,EAAA,EAAA,KAAA,CAAvD,GAADgB,EAACD,EAAAQ,OACNV,EAASW,IAAIR,GAAE,CAAAG,EAAAnB,EAAA,EAAA,KAAA,CAAA,OAAAmB,EAAAb,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAa,EAAAnB,EAAA,EACbC,EAAGC,SAASuB,GAAGC,EAAKC,KAAK/B,EAAKoB,GAAI,CAAEY,OAAO,EAAMxB,WAAW,IAAO,KAAA,EAAAe,EAAAnB,EAAA,EAAA,MAAA,KAAA,EAAAmB,EAAAnB,EAAA,EAAA,MAAA,KAAA,EAAAmB,EAAAH,EAAA,EAAAE,EAAAC,EAAAd,EAAAS,EAAAe,EAAAX,GAAA,KAAA,EAAA,OAAAC,EAAAH,EAAA,EAAAF,EAAAgB,IAAAX,EAAAW,EAAA,GAAA,KAAA,EAAA,OAAAX,EAAAb,EAAA,GAAA,EAAAM,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,IAAA,KAE5EJ,MAAAC,KAAAC,UAAA,+BALD,SAA2CqB,EAAAC,GAAA,OAAArB,EAAAH,MAAAC,KAAAC,UAAA,mCAL3C,SAA8CuB,GAAA,OAAA1C,EAAAiB,MAAAC,KAAAC,UAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function snapshotWorkingDirectory(cwd: string): Promise<ReadonlySet<string>>;
2
+ export declare function cleanWorkingDirectory(cwd: string, snapshot: ReadonlySet<string>): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import{asyncToGenerator as r,regenerator as e,createForOfIteratorHelper as n}from"../_virtual/_rollupPluginBabelHelpers.js";import a from"node:fs";import t from"node:path";function s(r){return o.apply(this,arguments)}function o(){return(o=r(e().m(function r(n){var t;return e().w(function(r){for(;;)switch(r.n){case 0:return r.n=1,a.promises.readdir(n,{recursive:!0});case 1:return t=r.v,r.a(2,new Set(t))}},r)}))).apply(this,arguments)}function i(r,e){return u.apply(this,arguments)}function u(){return(u=r(e().m(function r(s,o){var i,u,c,p,f;return e().w(function(r){for(;;)switch(r.p=r.n){case 0:return p=n,r.n=1,a.promises.readdir(s,{recursive:!0});case 1:i=p(r.v),r.p=2,i.s();case 3:if((u=i.n()).done){r.n=6;break}if(c=u.value,!o.has(c)){r.n=4;break}return r.a(3,5);case 4:return r.n=5,a.promises.rm(t.join(s,c),{force:!0,recursive:!0});case 5:r.n=3;break;case 6:r.n=8;break;case 7:r.p=7,f=r.v,i.e(f);case 8:return r.p=8,i.f(),r.f(8);case 9:return r.a(2)}},r,null,[[2,7,8,9]])}))).apply(this,arguments)}export{i as cleanWorkingDirectory,s as snapshotWorkingDirectory};
2
+ //# sourceMappingURL=cleanWorkingDirectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanWorkingDirectory.js","sources":["../../src/helpers/cleanWorkingDirectory.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\n// Currently, it does not support changing file contents and deleting files.\nexport async function snapshotWorkingDirectory(cwd: string): Promise<ReadonlySet<string>> {\n const paths = await fs.promises.readdir(cwd, { recursive: true });\n return new Set(paths);\n}\n\nexport async function cleanWorkingDirectory(cwd: string, snapshot: ReadonlySet<string>): Promise<void> {\n for (const p of await fs.promises.readdir(cwd, { recursive: true })) {\n if (snapshot.has(p)) continue;\n await fs.promises.rm(path.join(cwd, p), { force: true, recursive: true });\n }\n}\n"],"names":["snapshotWorkingDirectory","_x","_snapshotWorkingDirectory","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","cwd","paths","w","_context","n","fs","promises","readdir","recursive","v","a","Set","cleanWorkingDirectory","_x2","_x3","_cleanWorkingDirectory","_callee2","snapshot","_iterator","_step","p","_t","_t2","_context2","_createForOfIteratorHelper","s","done","value","has","rm","path","join","force","e","f"],"mappings":"4KAIA,SAAsBA,EAAwBC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAG7C,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EAHM,SAAAC,EAAwCC,GAAW,IAAAC,EAAA,OAAAJ,IAAAK,EAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,OAAAD,EAAAC,EAAA,EACpCC,EAAGC,SAASC,QAAQP,EAAK,CAAEQ,WAAW,IAAO,KAAA,EAAtD,OAALP,EAAKE,EAAAM,EAAAN,EAAAO,EAAA,EACJ,IAAIC,IAAIV,IAAM,EAAAF,EAAA,KACtBN,MAAAC,KAAAC,UAAA,CAED,SAAsBiB,EAAqBC,EAAAC,GAAA,OAAAC,EAAAtB,MAAAC,KAAAC,UAAA,CAK1C,SAAAoB,IAAA,OAAAA,EAAAnB,EAAAC,IAAAC,EALM,SAAAkB,EAAqChB,EAAaiB,GAA6B,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAzB,IAAAK,EAAA,SAAAqB,GAAA,cAAAA,EAAAH,EAAAG,EAAAnB,GAAA,KAAA,EAAA,OAAAiB,EAAAG,EAAAD,EAAAnB,EAAA,EAC9DC,EAAGC,SAASC,QAAQP,EAAK,CAAEQ,WAAW,IAAO,KAAA,EAAAU,EAAAG,EAAAE,EAAAd,GAAAc,EAAAH,EAAA,EAAAF,EAAAO,IAAA,KAAA,EAAA,IAAAN,EAAAD,EAAAd,KAAAsB,KAAA,CAAAH,EAAAnB,EAAA,EAAA,KAAA,CAAvD,GAADgB,EAACD,EAAAQ,OACNV,EAASW,IAAIR,GAAE,CAAAG,EAAAnB,EAAA,EAAA,KAAA,CAAA,OAAAmB,EAAAb,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAa,EAAAnB,EAAA,EACbC,EAAGC,SAASuB,GAAGC,EAAKC,KAAK/B,EAAKoB,GAAI,CAAEY,OAAO,EAAMxB,WAAW,IAAO,KAAA,EAAAe,EAAAnB,EAAA,EAAA,MAAA,KAAA,EAAAmB,EAAAnB,EAAA,EAAA,MAAA,KAAA,EAAAmB,EAAAH,EAAA,EAAAE,EAAAC,EAAAd,EAAAS,EAAAe,EAAAX,GAAA,KAAA,EAAA,OAAAC,EAAAH,EAAA,EAAAF,EAAAgB,IAAAX,EAAAW,EAAA,GAAA,KAAA,EAAA,OAAAX,EAAAb,EAAA,GAAA,EAAAM,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,IAAA,KAE5EvB,MAAAC,KAAAC,UAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var r=require("../_virtual/_rollupPluginBabelHelpers.cjs"),e=require("node:fs");function n(){return(n=r.asyncToGenerator(r.regenerator().m(function n(t,s){return r.regenerator().w(function(r){for(;;)switch(r.n){case 0:return r.n=1,e.promises.cp(t,s,{force:!0,recursive:!0});case 1:return r.a(2)}},n)}))).apply(this,arguments)}exports.copyTestCaseFileInput=function(r,e){return n.apply(this,arguments)};
2
+ //# sourceMappingURL=copyTestCaseFileInput.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyTestCaseFileInput.cjs","sources":["../../src/helpers/copyTestCaseFileInput.ts"],"sourcesContent":["import fs from 'node:fs';\n\nexport async function copyTestCaseFileInput(fileInputPath: string, cwd: string): Promise<void> {\n await fs.promises.cp(fileInputPath, cwd, { force: true, recursive: true });\n}\n"],"names":["_copyTestCaseFileInput","_asyncToGenerator","_regenerator","m","_callee","fileInputPath","cwd","w","_context","n","fs","promises","cp","force","recursive","a","apply","this","arguments","_x","_x2"],"mappings":"6FAIC,SAAAA,IAAA,OAAAA,EAAAC,EAAAA,iBAAAC,gBAAAC,EAFM,SAAAC,EAAqCC,EAAuBC,GAAW,OAAAJ,gBAAAK,EAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,OAAAD,EAAAC,EAAA,EACtEC,EAAGC,SAASC,GAAGP,EAAeC,EAAK,CAAEO,OAAO,EAAMC,WAAW,IAAO,KAAA,EAAA,OAAAN,EAAAO,EAAA,GAAA,EAAAX,EAAA,KAC3EY,MAAAC,KAAAC,UAAA,+BAFD,SAA2CC,EAAAC,GAAA,OAAApB,EAAAgB,MAAAC,KAAAC,UAAA"}
@@ -0,0 +1 @@
1
+ export declare function copyTestCaseFileInput(fileInputPath: string, cwd: string): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import{asyncToGenerator as r,regenerator as e}from"../_virtual/_rollupPluginBabelHelpers.js";import n from"node:fs";function t(r,e){return o.apply(this,arguments)}function o(){return(o=r(e().m(function r(t,o){return e().w(function(r){for(;;)switch(r.n){case 0:return r.n=1,n.promises.cp(t,o,{force:!0,recursive:!0});case 1:return r.a(2)}},r)}))).apply(this,arguments)}export{t as copyTestCaseFileInput};
2
+ //# sourceMappingURL=copyTestCaseFileInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyTestCaseFileInput.js","sources":["../../src/helpers/copyTestCaseFileInput.ts"],"sourcesContent":["import fs from 'node:fs';\n\nexport async function copyTestCaseFileInput(fileInputPath: string, cwd: string): Promise<void> {\n await fs.promises.cp(fileInputPath, cwd, { force: true, recursive: true });\n}\n"],"names":["copyTestCaseFileInput","_x","_x2","_copyTestCaseFileInput","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","fileInputPath","cwd","w","_context","n","fs","promises","cp","force","recursive","a"],"mappings":"oHAEA,SAAsBA,EAAqBC,EAAAC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAE1C,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EAFM,SAAAC,EAAqCC,EAAuBC,GAAW,OAAAJ,IAAAK,EAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,OAAAD,EAAAC,EAAA,EACtEC,EAAGC,SAASC,GAAGP,EAAeC,EAAK,CAAEO,OAAO,EAAMC,WAAW,IAAO,KAAA,EAAA,OAAAN,EAAAO,EAAA,GAAA,EAAAX,EAAA,KAC3EN,MAAAC,KAAAC,UAAA"}
@@ -1,2 +1,2 @@
1
- "use strict";exports.parseArgs=function(r){var a=r[2];if(!a)throw new Error("params argument required");try{return{params:JSON.parse(a)}}catch(r){throw new Error("bad params argument",{cause:r})}};
1
+ "use strict";exports.parseArgs=function(r){var a=r[2];if(!a)throw new Error("cwd argument required");var e=r[3];try{return{cwd:a,params:e?JSON.parse(e):{}}}catch(r){throw new Error("bad params argument",{cause:r})}};
2
2
  //# sourceMappingURL=parseArgs.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseArgs.cjs","sources":["../../src/helpers/parseArgs.ts"],"sourcesContent":["/**\n * Parse command line arguments in `judge.ts` or `debug.ts`.\n */\nexport function parseArgs(argv: readonly string[]): { params: unknown } {\n const paramsJson = argv[2];\n if (!paramsJson) throw new Error('params argument required');\n\n try {\n return { params: JSON.parse(paramsJson) };\n } catch (error) {\n throw new Error('bad params argument', { cause: error });\n }\n}\n"],"names":["argv","paramsJson","Error","params","JSON","parse","error","cause"],"mappings":"+BAGO,SAAmBA,GACxB,IAAMC,EAAaD,EAAK,GACxB,IAAKC,EAAY,MAAM,IAAIC,MAAM,4BAEjC,IACE,MAAO,CAAEC,OAAQC,KAAKC,MAAMJ,GAC9B,CAAE,MAAOK,GACP,MAAM,IAAIJ,MAAM,sBAAuB,CAAEK,MAAOD,GAClD,CACF"}
1
+ {"version":3,"file":"parseArgs.cjs","sources":["../../src/helpers/parseArgs.ts"],"sourcesContent":["/**\n * Parse command line arguments in `judge.ts` or `debug.ts`.\n */\nexport function parseArgs(argv: readonly string[]): { cwd: string; params: unknown } {\n const cwd = argv[2];\n if (!cwd) throw new Error('cwd argument required');\n\n const paramsJson = argv[3];\n\n try {\n return { cwd, params: paramsJson ? JSON.parse(paramsJson) : {} };\n } catch (error) {\n throw new Error('bad params argument', { cause: error });\n }\n}\n"],"names":["argv","cwd","Error","paramsJson","params","JSON","parse","error","cause"],"mappings":"+BAGO,SAAmBA,GACxB,IAAMC,EAAMD,EAAK,GACjB,IAAKC,EAAK,MAAM,IAAIC,MAAM,yBAE1B,IAAMC,EAAaH,EAAK,GAExB,IACE,MAAO,CAAEC,IAAAA,EAAKG,OAAQD,EAAaE,KAAKC,MAAMH,GAAc,CAAA,EAC9D,CAAE,MAAOI,GACP,MAAM,IAAIL,MAAM,sBAAuB,CAAEM,MAAOD,GAClD,CACF"}
@@ -2,5 +2,6 @@
2
2
  * Parse command line arguments in `judge.ts` or `debug.ts`.
3
3
  */
4
4
  export declare function parseArgs(argv: readonly string[]): {
5
+ cwd: string;
5
6
  params: unknown;
6
7
  };
@@ -1,2 +1,2 @@
1
- function r(r){var a=r[2];if(!a)throw new Error("params argument required");try{return{params:JSON.parse(a)}}catch(r){throw new Error("bad params argument",{cause:r})}}export{r as parseArgs};
1
+ function r(r){var a=r[2];if(!a)throw new Error("cwd argument required");var e=r[3];try{return{cwd:a,params:e?JSON.parse(e):{}}}catch(r){throw new Error("bad params argument",{cause:r})}}export{r as parseArgs};
2
2
  //# sourceMappingURL=parseArgs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseArgs.js","sources":["../../src/helpers/parseArgs.ts"],"sourcesContent":["/**\n * Parse command line arguments in `judge.ts` or `debug.ts`.\n */\nexport function parseArgs(argv: readonly string[]): { params: unknown } {\n const paramsJson = argv[2];\n if (!paramsJson) throw new Error('params argument required');\n\n try {\n return { params: JSON.parse(paramsJson) };\n } catch (error) {\n throw new Error('bad params argument', { cause: error });\n }\n}\n"],"names":["parseArgs","argv","paramsJson","Error","params","JSON","parse","error","cause"],"mappings":"AAGO,SAASA,EAAUC,GACxB,IAAMC,EAAaD,EAAK,GACxB,IAAKC,EAAY,MAAM,IAAIC,MAAM,4BAEjC,IACE,MAAO,CAAEC,OAAQC,KAAKC,MAAMJ,GAC9B,CAAE,MAAOK,GACP,MAAM,IAAIJ,MAAM,sBAAuB,CAAEK,MAAOD,GAClD,CACF"}
1
+ {"version":3,"file":"parseArgs.js","sources":["../../src/helpers/parseArgs.ts"],"sourcesContent":["/**\n * Parse command line arguments in `judge.ts` or `debug.ts`.\n */\nexport function parseArgs(argv: readonly string[]): { cwd: string; params: unknown } {\n const cwd = argv[2];\n if (!cwd) throw new Error('cwd argument required');\n\n const paramsJson = argv[3];\n\n try {\n return { cwd, params: paramsJson ? JSON.parse(paramsJson) : {} };\n } catch (error) {\n throw new Error('bad params argument', { cause: error });\n }\n}\n"],"names":["parseArgs","argv","cwd","Error","paramsJson","params","JSON","parse","error","cause"],"mappings":"AAGO,SAASA,EAAUC,GACxB,IAAMC,EAAMD,EAAK,GACjB,IAAKC,EAAK,MAAM,IAAIC,MAAM,yBAE1B,IAAMC,EAAaH,EAAK,GAExB,IACE,MAAO,CAAEC,IAAAA,EAAKG,OAAQD,EAAaE,KAAKC,MAAMH,GAAc,CAAA,EAC9D,CAAE,MAAOI,GACP,MAAM,IAAIL,MAAM,sBAAuB,CAAEM,MAAOD,GAClD,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),n=require("node:path");function a(){return(a=e.asyncToGenerator(e.regenerator().m(function a(t){var s,u,i,o,p,c,l,f,d,m,b,v;return e.regenerator().w(function(a){for(;;)switch(a.p=a.n){case 0:return s=new Set,u=new Map,i=new Map,b=e.createForOfIteratorHelper,a.n=1,r.promises.readdir(t,{withFileTypes:!0});case 1:o=b(a.v),a.p=2,o.s();case 3:if((p=o.n()).done){a.n=8;break}if((c=p.value).isFile()){a.n=4;break}return a.a(3,7);case 4:if(l=n.parse(c.name),f=l.ext,d=l.name,".in"===f||".out"===f){a.n=5;break}return a.a(3,7);case 5:return a.n=6,r.promises.readFile(n.join(c.parentPath,c.name),"utf8");case 6:m=a.v,s.add(d),".in"===f&&u.set(d,m),".out"===f&&i.set(d,m);case 7:a.n=3;break;case 8:a.n=10;break;case 9:a.p=9,v=a.v,o.e(v);case 10:return a.p=10,o.f(),a.f(10);case 11:return a.a(2,e.toConsumableArray(s).toSorted().map(function(e){return{id:e,input:u.get(e),output:i.get(e)}}))}},a,null,[[2,9,10,11]])}))).apply(this,arguments)}exports.readTestCases=function(e){return a.apply(this,arguments)};
1
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),a=require("node:path"),t="_shared";function n(){return(n=e.asyncToGenerator(e.regenerator().m(function n(i){var s,u,o,p,f,c,l,d,h,m,b,g,k,w,v,P,y,j;return e.regenerator().w(function(n){for(;;)switch(n.p=n.n){case 0:return s=new Set,u=new Map,o=new Map,p=new Map,f=new Map,y=e.createForOfIteratorHelper,n.n=1,r.promises.readdir(i,{withFileTypes:!0});case 1:c=y(n.v),n.p=2,c.s();case 3:if((l=c.n()).done){n.n=9;break}if(!(d=l.value).isFile()){n.n=6;break}if(h=a.parse(d.name),m=h.ext,b=h.name,".in"===m||".out"===m){n.n=4;break}return n.a(3,8);case 4:return n.n=5,r.promises.readFile(a.join(d.parentPath,d.name),"utf8");case 5:g=n.v,s.add(b),".in"===m&&u.set(b,g),".out"===m&&o.set(b,g),n.n=8;break;case 6:if(!d.isDirectory()){n.n=8;break}if(k=a.parse(d.name),w=k.ext,v=k.name,".fin"===w||".fout"===w){n.n=7;break}return n.a(3,8);case 7:s.add(v),".fin"===w&&p.set(v,a.join(d.parentPath,d.name)),".fout"===w&&f.set(v,a.join(d.parentPath,d.name));case 8:n.n=3;break;case 9:n.n=11;break;case 10:n.p=10,j=n.v,c.e(j);case 11:return n.p=11,c.f(),n.f(11);case 12:return P=e.toConsumableArray(s).filter(function(e){return e!==t}).toSorted().map(function(e){return{id:e,input:u.get(e),output:o.get(e),fileInputPath:p.get(e),fileOutputPath:f.get(e)}}),s.has(t)&&(P.shared={fileInputPath:p.get(t)}),n.a(2,P)}},n,null,[[2,10,11,12]])}))).apply(this,arguments)}exports.readTestCases=function(e){return n.apply(this,arguments)};
2
2
  //# sourceMappingURL=readTestCases.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"readTestCases.cjs","sources":["../../src/helpers/readTestCases.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function readTestCases(directory: string): Promise<{ id: string; input?: string; output?: string }[]> {\n const idSet = new Set<string>();\n const idToInput = new Map<string, string>();\n const idToOutput = new Map<string, string>();\n\n for (const dirent of await fs.promises.readdir(directory, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.in' && ext !== '.out') continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n idSet.add(name);\n if (ext === '.in') idToInput.set(name, text);\n if (ext === '.out') idToOutput.set(name, text);\n }\n\n return [...idSet].toSorted().map((id) => ({ id, input: idToInput.get(id), output: idToOutput.get(id) }));\n}\n"],"names":["_readTestCases","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToInput","idToOutput","_iterator","_step","dirent","_path$parse","ext","name","text","_t","_t2","w","_context","p","n","Set","Map","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","a","path","parse","readFile","join","parentPath","add","set","e","f","_toConsumableArray","toSorted","map","id","input","get","output","apply","this","arguments","_x"],"mappings":"oHAsBC,SAAAA,IAAA,OAAAA,EAAAC,EAAAA,iBAAAC,EAAAA,cAAAC,EAnBM,SAAAC,EAA6BC,GAAiB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAf,gBAAAgB,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAGP,OAFtCf,EAAQ,IAAIgB,IACZf,EAAY,IAAIgB,IAChBf,EAAa,IAAIe,IAAqBP,EAAAQ,EAAAA,0BAAAL,EAAAE,EAAA,EAEjBI,EAAGC,SAASC,QAAQtB,EAAW,CAAEuB,eAAe,IAAO,KAAA,EAAAnB,EAAAO,EAAAG,EAAAU,GAAAV,EAAAC,EAAA,EAAAX,EAAAqB,IAAA,KAAA,EAAA,IAAApB,EAAAD,EAAAY,KAAAU,KAAA,CAAAZ,EAAAE,EAAA,EAAA,KAAA,CAAjE,IAANV,EAAMD,EAAAsB,OACHC,SAAQ,CAAAd,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAEH,GAFGtB,EAEEuB,EAAKC,MAAMzB,EAAOG,MAAhCD,EAAGD,EAAHC,IAAKC,EAAIF,EAAJE,KACD,QAARD,GAAyB,SAARA,EAAc,CAAAM,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAf,EAAAE,EAAA,EAEhBI,EAAGC,SAASW,SAASF,EAAKG,KAAK3B,EAAO4B,WAAY5B,EAAOG,MAAO,QAAO,KAAA,EAApFC,EAAII,EAAAU,EAEVvB,EAAMkC,IAAI1B,GACE,QAARD,GAAeN,EAAUkC,IAAI3B,EAAMC,GAC3B,SAARF,GAAgBL,EAAWiC,IAAI3B,EAAMC,GAAM,KAAA,EAAAI,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAU,EAAApB,EAAAiC,EAAAzB,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAX,EAAAkC,IAAAxB,EAAAwB,EAAA,IAAA,KAAA,GAAA,OAAAxB,EAAAe,EAAA,EAG1CU,EAAAA,kBAAItC,GAAOuC,WAAWC,IAAI,SAACC,GAAE,MAAM,CAAEA,GAAAA,EAAIC,MAAOzC,EAAU0C,IAAIF,GAAKG,OAAQ1C,EAAWyC,IAAIF,GAAK,IAAE,EAAA3C,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,KAAA,KACzG+C,MAAAC,KAAAC,UAAA,uBAnBD,SAAmCC,GAAA,OAAAtD,EAAAmD,MAAAC,KAAAC,UAAA"}
1
+ {"version":3,"file":"readTestCases.cjs","sources":["../../src/helpers/readTestCases.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nconst SHARED_TEST_CASE_NAME = '_shared';\n\nexport async function readTestCases(directory: string): Promise<\n { id: string; input?: string; output?: string; fileInputPath?: string; fileOutputPath?: string }[] & {\n shared?: { fileInputPath?: string };\n }\n> {\n const idSet = new Set<string>();\n const idToInput = new Map<string, string>();\n const idToOutput = new Map<string, string>();\n const idToFileInputPath = new Map<string, string>();\n const idToFileOutputPath = new Map<string, string>();\n\n for (const dirent of await fs.promises.readdir(directory, { withFileTypes: true })) {\n if (dirent.isFile()) {\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.in' && ext !== '.out') continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n idSet.add(name);\n if (ext === '.in') idToInput.set(name, text);\n if (ext === '.out') idToOutput.set(name, text);\n } else if (dirent.isDirectory()) {\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.fin' && ext !== '.fout') continue;\n\n idSet.add(name);\n if (ext === '.fin') idToFileInputPath.set(name, path.join(dirent.parentPath, dirent.name));\n if (ext === '.fout') idToFileOutputPath.set(name, path.join(dirent.parentPath, dirent.name));\n }\n }\n\n const testCases: Awaited<ReturnType<typeof readTestCases>> = [...idSet]\n .filter((id) => id !== SHARED_TEST_CASE_NAME)\n .toSorted()\n .map((id) => ({\n id,\n input: idToInput.get(id),\n output: idToOutput.get(id),\n fileInputPath: idToFileInputPath.get(id),\n fileOutputPath: idToFileOutputPath.get(id),\n }));\n\n if (idSet.has(SHARED_TEST_CASE_NAME)) {\n testCases.shared = { fileInputPath: idToFileInputPath.get(SHARED_TEST_CASE_NAME) };\n }\n\n return testCases;\n}\n"],"names":["SHARED_TEST_CASE_NAME","_readTestCases","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToInput","idToOutput","idToFileInputPath","idToFileOutputPath","_iterator","_step","dirent","_path$parse","ext","name","text","_path$parse2","_ext","_name","testCases","_t","_t2","w","_context","p","n","Set","Map","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","path","parse","a","readFile","join","parentPath","add","set","isDirectory","e","f","_toConsumableArray","filter","id","toSorted","map","input","get","output","fileInputPath","fileOutputPath","has","shared","apply","this","arguments","_x"],"mappings":"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"}
@@ -2,4 +2,10 @@ export declare function readTestCases(directory: string): Promise<{
2
2
  id: string;
3
3
  input?: string;
4
4
  output?: string;
5
- }[]>;
5
+ fileInputPath?: string;
6
+ fileOutputPath?: string;
7
+ }[] & {
8
+ shared?: {
9
+ fileInputPath?: string;
10
+ };
11
+ }>;
@@ -1,2 +1,2 @@
1
- import{asyncToGenerator as e,regenerator as r,toConsumableArray as a,createForOfIteratorHelper as n}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:fs";import s from"node:path";function o(e){return i.apply(this,arguments)}function i(){return(i=e(r().m(function e(o){var i,u,p,c,f,l,m,d,b,h,v,w;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return i=new Set,u=new Map,p=new Map,v=n,e.n=1,t.promises.readdir(o,{withFileTypes:!0});case 1:c=v(e.v),e.p=2,c.s();case 3:if((f=c.n()).done){e.n=8;break}if((l=f.value).isFile()){e.n=4;break}return e.a(3,7);case 4:if(m=s.parse(l.name),d=m.ext,b=m.name,".in"===d||".out"===d){e.n=5;break}return e.a(3,7);case 5:return e.n=6,t.promises.readFile(s.join(l.parentPath,l.name),"utf8");case 6:h=e.v,i.add(b),".in"===d&&u.set(b,h),".out"===d&&p.set(b,h);case 7:e.n=3;break;case 8:e.n=10;break;case 9:e.p=9,w=e.v,c.e(w);case 10:return e.p=10,c.f(),e.f(10);case 11:return e.a(2,a(i).toSorted().map(function(e){return{id:e,input:u.get(e),output:p.get(e)}}))}},e,null,[[2,9,10,11]])}))).apply(this,arguments)}export{o as readTestCases};
1
+ import{asyncToGenerator as e,regenerator as a,toConsumableArray as r,createForOfIteratorHelper as t}from"../_virtual/_rollupPluginBabelHelpers.js";import n from"node:fs";import i from"node:path";var s="_shared";function o(e){return u.apply(this,arguments)}function u(){return(u=e(a().m(function e(o){var u,p,f,c,l,m,d,h,b,k,w,g,v,P,y,j,F,M;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return u=new Set,p=new Map,f=new Map,c=new Map,l=new Map,F=t,e.n=1,n.promises.readdir(o,{withFileTypes:!0});case 1:m=F(e.v),e.p=2,m.s();case 3:if((d=m.n()).done){e.n=9;break}if(!(h=d.value).isFile()){e.n=6;break}if(b=i.parse(h.name),k=b.ext,w=b.name,".in"===k||".out"===k){e.n=4;break}return e.a(3,8);case 4:return e.n=5,n.promises.readFile(i.join(h.parentPath,h.name),"utf8");case 5:g=e.v,u.add(w),".in"===k&&p.set(w,g),".out"===k&&f.set(w,g),e.n=8;break;case 6:if(!h.isDirectory()){e.n=8;break}if(v=i.parse(h.name),P=v.ext,y=v.name,".fin"===P||".fout"===P){e.n=7;break}return e.a(3,8);case 7:u.add(y),".fin"===P&&c.set(y,i.join(h.parentPath,h.name)),".fout"===P&&l.set(y,i.join(h.parentPath,h.name));case 8:e.n=3;break;case 9:e.n=11;break;case 10:e.p=10,M=e.v,m.e(M);case 11:return e.p=11,m.f(),e.f(11);case 12:return j=r(u).filter(function(e){return e!==s}).toSorted().map(function(e){return{id:e,input:p.get(e),output:f.get(e),fileInputPath:c.get(e),fileOutputPath:l.get(e)}}),u.has(s)&&(j.shared={fileInputPath:c.get(s)}),e.a(2,j)}},e,null,[[2,10,11,12]])}))).apply(this,arguments)}export{o as readTestCases};
2
2
  //# sourceMappingURL=readTestCases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"readTestCases.js","sources":["../../src/helpers/readTestCases.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function readTestCases(directory: string): Promise<{ id: string; input?: string; output?: string }[]> {\n const idSet = new Set<string>();\n const idToInput = new Map<string, string>();\n const idToOutput = new Map<string, string>();\n\n for (const dirent of await fs.promises.readdir(directory, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.in' && ext !== '.out') continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n idSet.add(name);\n if (ext === '.in') idToInput.set(name, text);\n if (ext === '.out') idToOutput.set(name, text);\n }\n\n return [...idSet].toSorted().map((id) => ({ id, input: idToInput.get(id), output: idToOutput.get(id) }));\n}\n"],"names":["readTestCases","_x","_readTestCases","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToInput","idToOutput","_iterator","_step","dirent","_path$parse","ext","name","text","_t","_t2","w","_context","p","n","Set","Map","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","a","path","parse","readFile","join","parentPath","add","set","e","f","_toConsumableArray","toSorted","map","id","input","get","output"],"mappings":"mMAGA,SAAsBA,EAAaC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAmBlC,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EAnBM,SAAAC,EAA6BC,GAAiB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAf,IAAAgB,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAGP,OAFtCf,EAAQ,IAAIgB,IACZf,EAAY,IAAIgB,IAChBf,EAAa,IAAIe,IAAqBP,EAAAQ,EAAAL,EAAAE,EAAA,EAEjBI,EAAGC,SAASC,QAAQtB,EAAW,CAAEuB,eAAe,IAAO,KAAA,EAAAnB,EAAAO,EAAAG,EAAAU,GAAAV,EAAAC,EAAA,EAAAX,EAAAqB,IAAA,KAAA,EAAA,IAAApB,EAAAD,EAAAY,KAAAU,KAAA,CAAAZ,EAAAE,EAAA,EAAA,KAAA,CAAjE,IAANV,EAAMD,EAAAsB,OACHC,SAAQ,CAAAd,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAEH,GAFGtB,EAEEuB,EAAKC,MAAMzB,EAAOG,MAAhCD,EAAGD,EAAHC,IAAKC,EAAIF,EAAJE,KACD,QAARD,GAAyB,SAARA,EAAc,CAAAM,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAf,EAAAE,EAAA,EAEhBI,EAAGC,SAASW,SAASF,EAAKG,KAAK3B,EAAO4B,WAAY5B,EAAOG,MAAO,QAAO,KAAA,EAApFC,EAAII,EAAAU,EAEVvB,EAAMkC,IAAI1B,GACE,QAARD,GAAeN,EAAUkC,IAAI3B,EAAMC,GAC3B,SAARF,GAAgBL,EAAWiC,IAAI3B,EAAMC,GAAM,KAAA,EAAAI,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAU,EAAApB,EAAAiC,EAAAzB,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAX,EAAAkC,IAAAxB,EAAAwB,EAAA,IAAA,KAAA,GAAA,OAAAxB,EAAAe,EAAA,EAG1CU,EAAItC,GAAOuC,WAAWC,IAAI,SAACC,GAAE,MAAM,CAAEA,GAAAA,EAAIC,MAAOzC,EAAU0C,IAAIF,GAAKG,OAAQ1C,EAAWyC,IAAIF,GAAK,IAAE,EAAA3C,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,KAAA,KACzGN,MAAAC,KAAAC,UAAA"}
1
+ {"version":3,"file":"readTestCases.js","sources":["../../src/helpers/readTestCases.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nconst SHARED_TEST_CASE_NAME = '_shared';\n\nexport async function readTestCases(directory: string): Promise<\n { id: string; input?: string; output?: string; fileInputPath?: string; fileOutputPath?: string }[] & {\n shared?: { fileInputPath?: string };\n }\n> {\n const idSet = new Set<string>();\n const idToInput = new Map<string, string>();\n const idToOutput = new Map<string, string>();\n const idToFileInputPath = new Map<string, string>();\n const idToFileOutputPath = new Map<string, string>();\n\n for (const dirent of await fs.promises.readdir(directory, { withFileTypes: true })) {\n if (dirent.isFile()) {\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.in' && ext !== '.out') continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n idSet.add(name);\n if (ext === '.in') idToInput.set(name, text);\n if (ext === '.out') idToOutput.set(name, text);\n } else if (dirent.isDirectory()) {\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.fin' && ext !== '.fout') continue;\n\n idSet.add(name);\n if (ext === '.fin') idToFileInputPath.set(name, path.join(dirent.parentPath, dirent.name));\n if (ext === '.fout') idToFileOutputPath.set(name, path.join(dirent.parentPath, dirent.name));\n }\n }\n\n const testCases: Awaited<ReturnType<typeof readTestCases>> = [...idSet]\n .filter((id) => id !== SHARED_TEST_CASE_NAME)\n .toSorted()\n .map((id) => ({\n id,\n input: idToInput.get(id),\n output: idToOutput.get(id),\n fileInputPath: idToFileInputPath.get(id),\n fileOutputPath: idToFileOutputPath.get(id),\n }));\n\n if (idSet.has(SHARED_TEST_CASE_NAME)) {\n testCases.shared = { fileInputPath: idToFileInputPath.get(SHARED_TEST_CASE_NAME) };\n }\n\n return testCases;\n}\n"],"names":["SHARED_TEST_CASE_NAME","readTestCases","_x","_readTestCases","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToInput","idToOutput","idToFileInputPath","idToFileOutputPath","_iterator","_step","dirent","_path$parse","ext","name","text","_path$parse2","_ext","_name","testCases","_t","_t2","w","_context","p","n","Set","Map","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","path","parse","a","readFile","join","parentPath","add","set","isDirectory","e","f","_toConsumableArray","filter","id","toSorted","map","input","get","output","fileInputPath","fileOutputPath","has","shared"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),t=require("node:path"),s=require("zod"),r=require("../helpers/compareStdoutAsSpaceSeparatedTokens.cjs"),n=require("../helpers/findEntryPointFile.cjs"),i=require("../helpers/findLanguageDefinitionByPath.cjs"),o=require("../helpers/judgeByStaticAnalysis.cjs"),d=require("../helpers/parseArgs.cjs"),a=require("../helpers/printTestCaseResult.cjs"),u=require("../helpers/readOutputFiles.cjs"),c=require("../helpers/readProblemMarkdownFrontMatter.cjs"),l=require("../helpers/readTestCases.cjs"),p=require("../helpers/spawnSyncWithTimeout.cjs"),C=require("../types/decisionCode.cjs"),E=5e4,I=s.z.object({cwd:s.z.string(),language:s.z.union([s.z.string(),s.z.array(s.z.string())]).optional()}),m=I.extend({stdin:s.z.string().optional()});function g(){return(g=e.asyncToGenerator(e.regenerator().m(function s(m){var g,D,R,T,_,S,b,f,v,y,h,O,M,L,P,w,B,U,F,k,j,N,q,A,W,X,G,x,z,Q,Y,Z,H,V,J,K,$,ee,te,se,re,ne,ie;return e.regenerator().w(function(s){for(;;)switch(s.p=s.n){case 0:return g=d.parseArgs(process.argv),D=I.parse(g.params),s.n=1,c.readProblemMarkdownFrontMatter(m);case 1:return R=s.v,s.n=2,l.readTestCases(t.join(m,"test_cases"));case 2:return T=s.v,s.n=3,o.judgeByStaticAnalysis(D.cwd,R);case 3:if(!(_=s.v)){s.n=4;break}return a.printTestCaseResult(e.objectSpread2({testCaseId:null!=(S=null==(b=T[0])?void 0:b.id)?S:"prebuild"},_)),s.a(2);case 4:return s.n=5,n.findEntryPointFile(D.cwd,D.language);case 5:if(f=s.v){s.n=6;break}return a.printTestCaseResult({testCaseId:null!=(v=null==(y=T[0])?void 0:y.id)?v:"prebuild",decisionCode:C.DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(D.language?": language: ".concat(D.language):"")}),s.a(2);case 6:if(h=i.findLanguageDefinitionByPath(f)){s.n=7;break}return a.printTestCaseResult({testCaseId:null!=(O=null==(M=T[0])?void 0:M.id)?O:"prebuild",decisionCode:C.DecisionCode.WRONG_ANSWER,stderr:"unsupported language"}),s.a(2);case 7:if(L=e.objectSpread2(e.objectSpread2({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!h.prebuild){s.n=12;break}return s.p=8,s.n=9,h.prebuild(D.cwd);case 9:return s.n=10,n.findEntryPointFile(D.cwd,D.language);case 10:P=s.v,s.n=12;break;case 11:return s.p=11,re=s.v,console.error("prebuild error",re),a.printTestCaseResult({testCaseId:null!=(w=null==(B=T[0])?void 0:B.id)?w:"prebuild",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:re instanceof Error?re.message:String(re)}),s.a(2);case 12:if(U=null!=P?P:f,!h.buildCommand){s.n=16;break}if(s.p=13,F=h.buildCommand(U),k=p.spawnSyncWithTimeout(F[0],F.slice(1),{cwd:D.cwd,encoding:"utf8",env:L},10),j=C.DecisionCode.ACCEPTED,0!==k.status?j=C.DecisionCode.BUILD_ERROR:k.timeSeconds>10?j=C.DecisionCode.BUILD_TIME_LIMIT_EXCEEDED:(k.stdout.length>E||k.stderr.length>E)&&(j=C.DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),j===C.DecisionCode.ACCEPTED){s.n=14;break}return a.printTestCaseResult({testCaseId:null!=(N=null==(q=T[0])?void 0:q.id)?N:"build",decisionCode:j,exitStatus:null!=(A=k.status)?A:void 0,stdout:k.stdout.slice(0,E)||void 0,stderr:k.stderr.slice(0,E)||void 0,timeSeconds:k.timeSeconds,memoryBytes:k.memoryBytes}),s.a(2);case 14:s.n=16;break;case 15:return s.p=15,ne=s.v,console.error("build error",ne),a.printTestCaseResult({testCaseId:null!=(W=null==(X=T[0])?void 0:X.id)?W:"build",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:ne instanceof Error?ne.message:String(ne)}),s.a(2);case 16:G=e.createForOfIteratorHelper(T),s.p=17,G.s();case 18:if((x=G.n()).done){s.n=21;break}return J=x.value,K="number"==typeof R.timeLimitMs?R.timeLimitMs/1e3:2,$=h.command(U),ee=p.spawnSyncWithTimeout($[0],$.slice(1),{cwd:D.cwd,encoding:"utf8",input:J.input,env:L},K),s.n=19,u.readOutputFiles(D.cwd,null!=(z=R.requiredOutputFilePaths)?z:[]);case 19:if(te=s.v,se=C.DecisionCode.ACCEPTED,0!==ee.status?se=C.DecisionCode.RUNTIME_ERROR:ee.timeSeconds>K?se=C.DecisionCode.TIME_LIMIT_EXCEEDED:ee.memoryBytes>(null!=(Q=R.memoryLimitByte)?Q:Number.POSITIVE_INFINITY)?se=C.DecisionCode.MEMORY_LIMIT_EXCEEDED:ee.stdout.length>E||ee.stderr.length>E?se=C.DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED:te.length<(null!=(Y=null==(Z=R.requiredOutputFilePaths)?void 0:Z.length)?Y:0)?se=C.DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR:r.compareStdoutAsSpaceSeparatedTokens(ee.stdout,null!=(H=J.output)?H:"")||(se=C.DecisionCode.WRONG_ANSWER),a.printTestCaseResult({testCaseId:J.id,decisionCode:se,exitStatus:null!=(V=ee.status)?V:void 0,stdin:J.input,stdout:ee.stdout.slice(0,E)||void 0,stderr:ee.stderr.slice(0,E)||void 0,timeSeconds:ee.timeSeconds,memoryBytes:ee.memoryBytes,outputFiles:te.length>0?te:void 0}),se===C.DecisionCode.ACCEPTED){s.n=20;break}return s.a(3,21);case 20:s.n=18;break;case 21:s.n=23;break;case 22:s.p=22,ie=s.v,G.e(ie);case 23:return s.p=23,G.f(),s.f(23);case 24:return s.a(2)}},s,null,[[17,22,23,24],[13,15],[8,11]])}))).apply(this,arguments)}function D(){return(D=e.asyncToGenerator(e.regenerator().m(function t(s){var r,o,l,I,g,D,R,T,_,S,b,f,v,y,h,O,M,L,P,w,B,U,F,k,j;return e.regenerator().w(function(t){for(;;)switch(t.p=t.n){case 0:return r=d.parseArgs(process.argv),o=m.parse(r.params),t.n=1,c.readProblemMarkdownFrontMatter(s);case 1:return l=t.v,t.n=2,n.findEntryPointFile(o.cwd,o.language);case 2:if(I=t.v){t.n=3;break}return a.printTestCaseResult({testCaseId:"prebuild",decisionCode:C.DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(o.language?": language: ".concat(o.language):"")}),t.a(2);case 3:if(g=i.findLanguageDefinitionByPath(I)){t.n=4;break}return a.printTestCaseResult({testCaseId:"prebuild",decisionCode:C.DecisionCode.WRONG_ANSWER,stderr:"unsupported language"}),t.a(2);case 4:if(D=e.objectSpread2(e.objectSpread2({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!g.prebuild){t.n=9;break}return t.p=5,t.n=6,g.prebuild(o.cwd);case 6:return t.n=7,n.findEntryPointFile(o.cwd,o.language);case 7:R=t.v,t.n=9;break;case 8:return t.p=8,k=t.v,console.error("prebuild error",k),a.printTestCaseResult({testCaseId:"prebuild",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:k instanceof Error?k.message:String(k)}),t.a(2);case 9:if(T=null!=R?R:I,!g.buildCommand){t.n=13;break}if(t.p=10,_=g.buildCommand(T),S=p.spawnSyncWithTimeout(_[0],_.slice(1),{cwd:o.cwd,encoding:"utf8",env:D},10),b=C.DecisionCode.ACCEPTED,0!==S.status?b=C.DecisionCode.BUILD_ERROR:S.timeSeconds>10?b=C.DecisionCode.BUILD_TIME_LIMIT_EXCEEDED:(S.stdout.length>E||S.stderr.length>E)&&(b=C.DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),b===C.DecisionCode.ACCEPTED){t.n=11;break}return a.printTestCaseResult({testCaseId:"build",decisionCode:b,exitStatus:null!=(f=S.status)?f:void 0,stdout:S.stdout.slice(0,E)||void 0,stderr:S.stderr.slice(0,E)||void 0,timeSeconds:S.timeSeconds,memoryBytes:S.memoryBytes}),t.a(2);case 11:t.n=13;break;case 12:return t.p=12,j=t.v,console.error("build error",j),a.printTestCaseResult({testCaseId:"build",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:j instanceof Error?j.message:String(j)}),t.a(2);case 13:return P=Math.max(10,(null!=(v=l.timeLimitMs)?v:0)/1e3),w=g.command(T),B=p.spawnSyncWithTimeout(w[0],w.slice(1),{cwd:o.cwd,encoding:"utf8",input:o.stdin,env:D},P),t.n=14,u.readOutputFiles(o.cwd,null!=(y=l.requiredOutputFilePaths)?y:[]);case 14:U=t.v,F=C.DecisionCode.ACCEPTED,0!==B.status?F=C.DecisionCode.RUNTIME_ERROR:B.timeSeconds>P?F=C.DecisionCode.TIME_LIMIT_EXCEEDED:B.memoryBytes>(null!=(h=l.memoryLimitByte)?h:Number.POSITIVE_INFINITY)?F=C.DecisionCode.MEMORY_LIMIT_EXCEEDED:B.stdout.length>E||B.stderr.length>E?F=C.DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED:U.length<(null!=(O=null==(M=l.requiredOutputFilePaths)?void 0:M.length)?O:0)&&(F=C.DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR),a.printTestCaseResult({testCaseId:"debug",decisionCode:F,exitStatus:null!=(L=B.status)?L:void 0,stdin:o.stdin,stdout:B.stdout.slice(0,E)||void 0,stderr:B.stderr.slice(0,E)||void 0,timeSeconds:B.timeSeconds,memoryBytes:B.memoryBytes,outputFiles:U.length>0?U:void 0});case 15:return t.a(2)}},t,null,[[10,12],[5,8]])}))).apply(this,arguments)}exports.stdioDebugPreset=function(e){return D.apply(this,arguments)},exports.stdioJudgePreset=function(e){return g.apply(this,arguments)};
1
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),t=require("node:path"),s=require("zod"),n=require("../helpers/cleanWorkingDirectory.cjs"),i=require("../helpers/compareStdoutAsSpaceSeparatedTokens.cjs"),a=require("../helpers/copyTestCaseFileInput.cjs"),o=require("../helpers/findEntryPointFile.cjs"),d=require("../helpers/findLanguageDefinitionByPath.cjs"),u=require("../helpers/judgeByStaticAnalysis.cjs"),c=require("../helpers/parseArgs.cjs"),l=require("../helpers/printTestCaseResult.cjs"),p=require("../helpers/readOutputFiles.cjs"),C=require("../helpers/readProblemMarkdownFrontMatter.cjs"),E=require("../helpers/readTestCases.cjs"),I=require("../helpers/spawnSyncWithTimeout.cjs"),m=require("../types/decisionCode.cjs"),D=5e4,g=s.z.object({language:s.z.union([s.z.string(),s.z.array(s.z.string())]).optional()}),b=g.extend({stdin:s.z.string().optional()});function R(){return(R=e.asyncToGenerator(e.regenerator().m(function s(b){var R,f,T,_,S,h,v,y,k,O,P,M,w,F,L,B,U,j,N,q,A,W,G,X,x,z,Q,Y,Z,H,V,J,K,$,ee,re,te,se,ne,ie,ae,oe,de,ue,ce,le,pe,Ce,Ee,Ie,me,De,ge;return e.regenerator().w(function(s){for(;;)switch(s.p=s.n){case 0:return R=c.parseArgs(process.argv),f=g.parse(R.params),s.n=1,C.readProblemMarkdownFrontMatter(b);case 1:return T=s.v,s.n=2,E.readTestCases(t.join(b,"test_cases"));case 2:return _=s.v,s.n=3,u.judgeByStaticAnalysis(R.cwd,T);case 3:if(!(S=s.v)){s.n=4;break}return l.printTestCaseResult(e.objectSpread2({testCaseId:null!=(h=null==(v=_[0])?void 0:v.id)?h:"prebuild"},S)),s.a(2);case 4:return s.n=5,o.findEntryPointFile(R.cwd,f.language);case 5:if(y=s.v){s.n=6;break}return l.printTestCaseResult({testCaseId:null!=(k=null==(O=_[0])?void 0:O.id)?k:"prebuild",decisionCode:m.DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(f.language?": language: ".concat(f.language):"")}),s.a(2);case 6:if(P=d.findLanguageDefinitionByPath(y)){s.n=7;break}return l.printTestCaseResult({testCaseId:null!=(M=null==(w=_[0])?void 0:w.id)?M:"prebuild",decisionCode:m.DecisionCode.WRONG_ANSWER,stderr:"unsupported language"}),s.a(2);case 7:if(F=e.objectSpread2(e.objectSpread2({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!P.prebuild){s.n=12;break}return s.p=8,s.n=9,P.prebuild(R.cwd);case 9:return s.n=10,o.findEntryPointFile(R.cwd,f.language);case 10:L=s.v,s.n=12;break;case 11:return s.p=11,Ee=s.v,console.error("prebuild error",Ee),l.printTestCaseResult({testCaseId:null!=(B=null==(U=_[0])?void 0:U.id)?B:"prebuild",decisionCode:m.DecisionCode.BUILD_ERROR,stderr:Ee instanceof Error?Ee.message:String(Ee)}),s.a(2);case 12:if(j=null!=L?L:y,!P.buildCommand){s.n=16;break}if(s.p=13,N=P.buildCommand(j),q=I.spawnSyncWithTimeout(N[0],N.slice(1),{cwd:R.cwd,encoding:"utf8",env:F},10),A=m.DecisionCode.ACCEPTED,0!==q.status?A=m.DecisionCode.BUILD_ERROR:q.timeSeconds>10?A=m.DecisionCode.BUILD_TIME_LIMIT_EXCEEDED:(q.stdout.length>D||q.stderr.length>D)&&(A=m.DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),A===m.DecisionCode.ACCEPTED){s.n=14;break}return l.printTestCaseResult({testCaseId:null!=(W=null==(G=_[0])?void 0:G.id)?W:"build",decisionCode:A,exitStatus:null!=(X=q.status)?X:void 0,stdout:q.stdout.slice(0,D)||void 0,stderr:q.stderr.slice(0,D)||void 0,timeSeconds:q.timeSeconds,memoryBytes:q.memoryBytes}),s.a(2);case 14:s.n=16;break;case 15:return s.p=15,Ie=s.v,console.error("build error",Ie),l.printTestCaseResult({testCaseId:null!=(x=null==(z=_[0])?void 0:z.id)?x:"build",decisionCode:m.DecisionCode.BUILD_ERROR,stderr:Ie instanceof Error?Ie.message:String(Ie)}),s.a(2);case 16:return s.n=17,n.snapshotWorkingDirectory(R.cwd);case 17:Q=s.v,Y=e.createForOfIteratorHelper(_),s.p=18,Y.s();case 19:if((Z=Y.n()).done){s.n=44;break}if(te=Z.value,null==(H=_.shared)||!H.fileInputPath){s.n=20;break}return s.n=20,a.copyTestCaseFileInput(_.shared.fileInputPath,R.cwd);case 20:if(!te.fileInputPath){s.n=21;break}return s.n=21,a.copyTestCaseFileInput(te.fileInputPath,R.cwd);case 21:return se="number"==typeof T.timeLimitMs?T.timeLimitMs/1e3:2,ne=P.command(j),ie=I.spawnSyncWithTimeout(ne[0],ne.slice(1),{cwd:R.cwd,encoding:"utf8",input:te.input,env:F},se),s.n=22,p.readOutputFiles(R.cwd,null!=(V=T.requiredOutputFilePaths)?V:[]);case 22:if(ae=s.v,oe=m.DecisionCode.ACCEPTED,0===ie.status){s.n=23;break}oe=m.DecisionCode.RUNTIME_ERROR,s.n=41;break;case 23:if(!(ie.timeSeconds>se)){s.n=24;break}oe=m.DecisionCode.TIME_LIMIT_EXCEEDED,s.n=41;break;case 24:if(!(ie.memoryBytes>(null!=(J=T.memoryLimitByte)?J:Number.POSITIVE_INFINITY))){s.n=25;break}oe=m.DecisionCode.MEMORY_LIMIT_EXCEEDED,s.n=41;break;case 25:if(!(ie.stdout.length>D||ie.stderr.length>D)){s.n=26;break}oe=m.DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED,s.n=41;break;case 26:if(!(ae.length<(null!=(K=null==($=T.requiredOutputFilePaths)?void 0:$.length)?K:0))){s.n=27;break}oe=m.DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR,s.n=41;break;case 27:if(i.compareStdoutAsSpaceSeparatedTokens(ie.stdout,null!=(ee=te.output)?ee:"")){s.n=28;break}oe=m.DecisionCode.WRONG_ANSWER,s.n=41;break;case 28:if(!te.fileOutputPath){s.n=41;break}return s.n=29,r.promises.readdir(te.fileOutputPath,{withFileTypes:!0,recursive:!0});case 29:de=s.v,ue=e.createForOfIteratorHelper(de),s.p=30,ue.s();case 31:if((ce=ue.n()).done){s.n=38;break}if((le=ce.value).isFile()){s.n=32;break}return s.a(3,37);case 32:return pe=t.relative(te.fileOutputPath,le.parentPath),s.n=33,r.promises.readFile(t.join(le.parentPath,le.name));case 33:return Ce=s.v,s.p=34,s.n=35,r.promises.readFile(t.join(R.cwd,pe,le.name));case 35:0!==s.v.compare(Ce)&&(oe=m.DecisionCode.WRONG_ANSWER),s.n=37;break;case 36:s.p=36,me=s.v,console.error(me),oe=m.DecisionCode.WRONG_ANSWER;case 37:s.n=31;break;case 38:s.n=40;break;case 39:s.p=39,De=s.v,ue.e(De);case 40:return s.p=40,ue.f(),s.f(40);case 41:return l.printTestCaseResult({testCaseId:te.id,decisionCode:oe,exitStatus:null!=(re=ie.status)?re:void 0,stdin:te.input,stdout:ie.stdout.slice(0,D)||void 0,stderr:ie.stderr.slice(0,D)||void 0,timeSeconds:ie.timeSeconds,memoryBytes:ie.memoryBytes,outputFiles:ae.length>0?ae:void 0}),s.n=42,n.cleanWorkingDirectory(R.cwd,Q);case 42:if(oe===m.DecisionCode.ACCEPTED){s.n=43;break}return s.a(3,44);case 43:s.n=19;break;case 44:s.n=46;break;case 45:s.p=45,ge=s.v,Y.e(ge);case 46:return s.p=46,Y.f(),s.f(46);case 47:return s.a(2)}},s,null,[[34,36],[30,39,40,41],[18,45,46,47],[13,15],[8,11]])}))).apply(this,arguments)}function f(){return(f=e.asyncToGenerator(e.regenerator().m(function r(t){var s,n,i,a,u,E,g,R,f,T,_,S,h,v,y,k,O,P,M,w,F,L,B,U,j;return e.regenerator().w(function(r){for(;;)switch(r.p=r.n){case 0:return s=c.parseArgs(process.argv),n=b.parse(s.params),r.n=1,C.readProblemMarkdownFrontMatter(t);case 1:return i=r.v,r.n=2,o.findEntryPointFile(s.cwd,n.language);case 2:if(a=r.v){r.n=3;break}return l.printTestCaseResult({testCaseId:"prebuild",decisionCode:m.DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(n.language?": language: ".concat(n.language):"")}),r.a(2);case 3:if(u=d.findLanguageDefinitionByPath(a)){r.n=4;break}return l.printTestCaseResult({testCaseId:"prebuild",decisionCode:m.DecisionCode.WRONG_ANSWER,stderr:"unsupported language"}),r.a(2);case 4:if(E=e.objectSpread2(e.objectSpread2({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!u.prebuild){r.n=9;break}return r.p=5,r.n=6,u.prebuild(s.cwd);case 6:return r.n=7,o.findEntryPointFile(s.cwd,n.language);case 7:g=r.v,r.n=9;break;case 8:return r.p=8,U=r.v,console.error("prebuild error",U),l.printTestCaseResult({testCaseId:"prebuild",decisionCode:m.DecisionCode.BUILD_ERROR,stderr:U instanceof Error?U.message:String(U)}),r.a(2);case 9:if(R=null!=g?g:a,!u.buildCommand){r.n=13;break}if(r.p=10,f=u.buildCommand(R),T=I.spawnSyncWithTimeout(f[0],f.slice(1),{cwd:s.cwd,encoding:"utf8",env:E},10),_=m.DecisionCode.ACCEPTED,0!==T.status?_=m.DecisionCode.BUILD_ERROR:T.timeSeconds>10?_=m.DecisionCode.BUILD_TIME_LIMIT_EXCEEDED:(T.stdout.length>D||T.stderr.length>D)&&(_=m.DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),_===m.DecisionCode.ACCEPTED){r.n=11;break}return l.printTestCaseResult({testCaseId:"build",decisionCode:_,exitStatus:null!=(S=T.status)?S:void 0,stdout:T.stdout.slice(0,D)||void 0,stderr:T.stderr.slice(0,D)||void 0,timeSeconds:T.timeSeconds,memoryBytes:T.memoryBytes}),r.a(2);case 11:r.n=13;break;case 12:return r.p=12,j=r.v,console.error("build error",j),l.printTestCaseResult({testCaseId:"build",decisionCode:m.DecisionCode.BUILD_ERROR,stderr:j instanceof Error?j.message:String(j)}),r.a(2);case 13:return M=Math.max(10,(null!=(h=i.timeLimitMs)?h:0)/1e3),w=u.command(R),F=I.spawnSyncWithTimeout(w[0],w.slice(1),{cwd:s.cwd,encoding:"utf8",input:n.stdin,env:E},M),r.n=14,p.readOutputFiles(s.cwd,null!=(v=i.requiredOutputFilePaths)?v:[]);case 14:L=r.v,B=m.DecisionCode.ACCEPTED,0!==F.status?B=m.DecisionCode.RUNTIME_ERROR:F.timeSeconds>M?B=m.DecisionCode.TIME_LIMIT_EXCEEDED:F.memoryBytes>(null!=(y=i.memoryLimitByte)?y:Number.POSITIVE_INFINITY)?B=m.DecisionCode.MEMORY_LIMIT_EXCEEDED:F.stdout.length>D||F.stderr.length>D?B=m.DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED:L.length<(null!=(k=null==(O=i.requiredOutputFilePaths)?void 0:O.length)?k:0)&&(B=m.DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR),l.printTestCaseResult({testCaseId:"debug",decisionCode:B,exitStatus:null!=(P=F.status)?P:void 0,stdin:n.stdin,stdout:F.stdout.slice(0,D)||void 0,stderr:F.stderr.slice(0,D)||void 0,timeSeconds:F.timeSeconds,memoryBytes:F.memoryBytes,outputFiles:L.length>0?L:void 0});case 15:return r.a(2)}},r,null,[[10,12],[5,8]])}))).apply(this,arguments)}exports.stdioDebugPreset=function(e){return f.apply(this,arguments)},exports.stdioJudgePreset=function(e){return R.apply(this,arguments)};
2
2
  //# sourceMappingURL=stdio.cjs.map
@@ -1 +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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"}
1
+ {"version":3,"file":"stdio.cjs","sources":["../../src/presets/stdio.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { z } from 'zod';\n\nimport { cleanWorkingDirectory, snapshotWorkingDirectory } from '../helpers/cleanWorkingDirectory.js';\nimport { compareStdoutAsSpaceSeparatedTokens } from '../helpers/compareStdoutAsSpaceSeparatedTokens.js';\nimport { copyTestCaseFileInput } from '../helpers/copyTestCaseFileInput.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 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 model_answers/java\n * ```\n *\n * Run with the optional parameters:\n * ```bash\n * bun judge.ts model_answers/java '{ \"language\": \"javascript\" }'\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(args.cwd, problemMarkdownFrontMatter);\n if (staticAnalysisTestCaseResult) {\n printTestCaseResult({ testCaseId: testCases[0]?.id ?? 'prebuild', ...staticAnalysisTestCaseResult });\n return;\n }\n\n const originalMainFilePath = await findEntryPointFile(args.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(args.cwd);\n prebuiltMainFilePath = await findEntryPointFile(args.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: args.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 const cwdSnapshot = await snapshotWorkingDirectory(args.cwd);\n\n for (const testCase of testCases) {\n // prepare test case\n if (testCases.shared?.fileInputPath) await copyTestCaseFileInput(testCases.shared.fileInputPath, args.cwd);\n if (testCase.fileInputPath) await copyTestCaseFileInput(testCase.fileInputPath, args.cwd);\n\n // run\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: args.cwd, encoding: 'utf8', input: testCase.input, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(args.cwd, problemMarkdownFrontMatter.requiredOutputFilePaths ?? []);\n\n // calculate decision\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 } else if (testCase.fileOutputPath) {\n const dirents = await fs.promises.readdir(testCase.fileOutputPath, { withFileTypes: true, recursive: true });\n for (const dirent of dirents) {\n if (!dirent.isFile()) continue;\n const direntRelativePath = path.relative(testCase.fileOutputPath, dirent.parentPath);\n const expected = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name));\n try {\n const received = await fs.promises.readFile(path.join(args.cwd, direntRelativePath, dirent.name));\n if (received.compare(expected) !== 0) decisionCode = DecisionCode.WRONG_ANSWER;\n } catch (error) {\n console.error(error);\n decisionCode = DecisionCode.WRONG_ANSWER;\n }\n }\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 // clean up\n await cleanWorkingDirectory(args.cwd, cwdSnapshot);\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 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(args.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(args.cwd);\n prebuiltMainFilePath = await findEntryPointFile(args.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: args.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: args.cwd, encoding: 'utf8', input: params.stdin, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(args.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","language","union","string","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","cwdSnapshot","_iterator","_step","_testCases$shared","_problemMarkdownFront","_problemMarkdownFront2","_problemMarkdownFront3","_problemMarkdownFront4","_testCase$output","_spawnResult$status","testCase","timeoutSeconds","command","spawnResult","outputFiles","_decisionCode","dirents","_iterator2","_step2","dirent","direntRelativePath","expected","_t","_t2","_t3","_t4","_t5","w","_context","p","n","parseArgs","process","argv","parse","readProblemMarkdownFrontMatter","v","readTestCases","path","join","judgeByStaticAnalysis","cwd","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","snapshotWorkingDirectory","_createForOfIteratorHelper","s","done","value","shared","fileInputPath","copyTestCaseFileInput","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","fileOutputPath","fs","promises","readdir","withFileTypes","recursive","isFile","relative","parentPath","readFile","name","compare","e","f","cleanWorkingDirectory","apply","this","arguments","_stdioDebugPreset","_callee2","_buildSpawnResult$sta2","_problemMarkdownFront5","_problemMarkdownFront6","_problemMarkdownFront7","_problemMarkdownFront8","_problemMarkdownFront9","_spawnResult$status2","_decisionCode2","_t6","_t7","_context2","Math","max","_x2","_x"],"mappings":"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"}
@@ -11,7 +11,12 @@
11
11
  *
12
12
  * Run with the required parameters:
13
13
  * ```bash
14
- * bun judge.ts '{ "cwd": "model_answers/java" }'
14
+ * bun judge.ts model_answers/java
15
+ * ```
16
+ *
17
+ * Run with the optional parameters:
18
+ * ```bash
19
+ * bun judge.ts model_answers/java '{ "language": "javascript" }'
15
20
  * ```
16
21
  */
17
22
  export declare function stdioJudgePreset(problemDir: string): Promise<void>;
@@ -28,7 +33,7 @@ export declare function stdioJudgePreset(problemDir: string): Promise<void>;
28
33
  *
29
34
  * Run with the required parameters:
30
35
  * ```bash
31
- * bun debug.ts '{ "cwd": "model_answers/java", "stdin": "1 2" }'
36
+ * bun debug.ts model_answers/java '{ "stdin": "1 2" }'
32
37
  * ```
33
38
  */
34
39
  export declare function stdioDebugPreset(problemDir: string): Promise<void>;
@@ -1,2 +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};
1
+ import{asyncToGenerator as e,regenerator as r,createForOfIteratorHelper as t,objectSpread2 as n}from"../_virtual/_rollupPluginBabelHelpers.js";import s from"node:fs";import a from"node:path";import{z as i}from"zod";import{cleanWorkingDirectory as o,snapshotWorkingDirectory as d}from"../helpers/cleanWorkingDirectory.js";import{compareStdoutAsSpaceSeparatedTokens as u}from"../helpers/compareStdoutAsSpaceSeparatedTokens.js";import{copyTestCaseFileInput as l}from"../helpers/copyTestCaseFileInput.js";import{findEntryPointFile as c}from"../helpers/findEntryPointFile.js";import{findLanguageDefinitionByPath as p}from"../helpers/findLanguageDefinitionByPath.js";import{judgeByStaticAnalysis as m}from"../helpers/judgeByStaticAnalysis.js";import{parseArgs as E}from"../helpers/parseArgs.js";import{printTestCaseResult as I}from"../helpers/printTestCaseResult.js";import{readOutputFiles as f}from"../helpers/readOutputFiles.js";import{readProblemMarkdownFrontMatter as b}from"../helpers/readProblemMarkdownFrontMatter.js";import{readTestCases as g}from"../helpers/readTestCases.js";import{spawnSyncWithTimeout as _}from"../helpers/spawnSyncWithTimeout.js";import{DecisionCode as C}from"../types/decisionCode.js";var R=5e4,v=i.object({language:i.union([i.string(),i.array(i.string())]).optional()}),h=v.extend({stdin:i.string().optional()});function S(e){return T.apply(this,arguments)}function T(){return(T=e(r().m(function e(i){var h,S,T,O,D,k,y,L,M,P,U,w,B,N,F,j,A,W,G,X,x,q,Q,Y,Z,H,V,z,J,K,$,ee,re,te,ne,se,ae,ie,oe,de,ue,le,ce,pe,me,Ee,Ie,fe,be,ge,_e,Ce,Re;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return h=E(process.argv),S=v.parse(h.params),e.n=1,b(i);case 1:return T=e.v,e.n=2,g(a.join(i,"test_cases"));case 2:return O=e.v,e.n=3,m(h.cwd,T);case 3:if(!(D=e.v)){e.n=4;break}return I(n({testCaseId:null!=(k=null==(y=O[0])?void 0:y.id)?k:"prebuild"},D)),e.a(2);case 4:return e.n=5,c(h.cwd,S.language);case 5:if(L=e.v){e.n=6;break}return I({testCaseId:null!=(M=null==(P=O[0])?void 0:P.id)?M:"prebuild",decisionCode:C.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(S.language?": language: ".concat(S.language):"")}),e.a(2);case 6:if(U=p(L)){e.n=7;break}return I({testCaseId:null!=(w=null==(B=O[0])?void 0:B.id)?w:"prebuild",decisionCode:C.WRONG_ANSWER,stderr:"unsupported language"}),e.a(2);case 7:if(N=n(n({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!U.prebuild){e.n=12;break}return e.p=8,e.n=9,U.prebuild(h.cwd);case 9:return e.n=10,c(h.cwd,S.language);case 10:F=e.v,e.n=12;break;case 11:return e.p=11,be=e.v,console.error("prebuild error",be),I({testCaseId:null!=(j=null==(A=O[0])?void 0:A.id)?j:"prebuild",decisionCode:C.BUILD_ERROR,stderr:be instanceof Error?be.message:String(be)}),e.a(2);case 12:if(W=null!=F?F:L,!U.buildCommand){e.n=16;break}if(e.p=13,G=U.buildCommand(W),X=_(G[0],G.slice(1),{cwd:h.cwd,encoding:"utf8",env:N},10),x=C.ACCEPTED,0!==X.status?x=C.BUILD_ERROR:X.timeSeconds>10?x=C.BUILD_TIME_LIMIT_EXCEEDED:(X.stdout.length>R||X.stderr.length>R)&&(x=C.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),x===C.ACCEPTED){e.n=14;break}return I({testCaseId:null!=(q=null==(Q=O[0])?void 0:Q.id)?q:"build",decisionCode:x,exitStatus:null!=(Y=X.status)?Y:void 0,stdout:X.stdout.slice(0,R)||void 0,stderr:X.stderr.slice(0,R)||void 0,timeSeconds:X.timeSeconds,memoryBytes:X.memoryBytes}),e.a(2);case 14:e.n=16;break;case 15:return e.p=15,ge=e.v,console.error("build error",ge),I({testCaseId:null!=(Z=null==(H=O[0])?void 0:H.id)?Z:"build",decisionCode:C.BUILD_ERROR,stderr:ge instanceof Error?ge.message:String(ge)}),e.a(2);case 16:return e.n=17,d(h.cwd);case 17:V=e.v,z=t(O),e.p=18,z.s();case 19:if((J=z.n()).done){e.n=44;break}if(ae=J.value,null==(K=O.shared)||!K.fileInputPath){e.n=20;break}return e.n=20,l(O.shared.fileInputPath,h.cwd);case 20:if(!ae.fileInputPath){e.n=21;break}return e.n=21,l(ae.fileInputPath,h.cwd);case 21:return ie="number"==typeof T.timeLimitMs?T.timeLimitMs/1e3:2,oe=U.command(W),de=_(oe[0],oe.slice(1),{cwd:h.cwd,encoding:"utf8",input:ae.input,env:N},ie),e.n=22,f(h.cwd,null!=($=T.requiredOutputFilePaths)?$:[]);case 22:if(ue=e.v,le=C.ACCEPTED,0===de.status){e.n=23;break}le=C.RUNTIME_ERROR,e.n=41;break;case 23:if(!(de.timeSeconds>ie)){e.n=24;break}le=C.TIME_LIMIT_EXCEEDED,e.n=41;break;case 24:if(!(de.memoryBytes>(null!=(ee=T.memoryLimitByte)?ee:Number.POSITIVE_INFINITY))){e.n=25;break}le=C.MEMORY_LIMIT_EXCEEDED,e.n=41;break;case 25:if(!(de.stdout.length>R||de.stderr.length>R)){e.n=26;break}le=C.OUTPUT_SIZE_LIMIT_EXCEEDED,e.n=41;break;case 26:if(!(ue.length<(null!=(re=null==(te=T.requiredOutputFilePaths)?void 0:te.length)?re:0))){e.n=27;break}le=C.MISSING_REQUIRED_OUTPUT_FILE_ERROR,e.n=41;break;case 27:if(u(de.stdout,null!=(ne=ae.output)?ne:"")){e.n=28;break}le=C.WRONG_ANSWER,e.n=41;break;case 28:if(!ae.fileOutputPath){e.n=41;break}return e.n=29,s.promises.readdir(ae.fileOutputPath,{withFileTypes:!0,recursive:!0});case 29:ce=e.v,pe=t(ce),e.p=30,pe.s();case 31:if((me=pe.n()).done){e.n=38;break}if((Ee=me.value).isFile()){e.n=32;break}return e.a(3,37);case 32:return Ie=a.relative(ae.fileOutputPath,Ee.parentPath),e.n=33,s.promises.readFile(a.join(Ee.parentPath,Ee.name));case 33:return fe=e.v,e.p=34,e.n=35,s.promises.readFile(a.join(h.cwd,Ie,Ee.name));case 35:0!==e.v.compare(fe)&&(le=C.WRONG_ANSWER),e.n=37;break;case 36:e.p=36,_e=e.v,console.error(_e),le=C.WRONG_ANSWER;case 37:e.n=31;break;case 38:e.n=40;break;case 39:e.p=39,Ce=e.v,pe.e(Ce);case 40:return e.p=40,pe.f(),e.f(40);case 41:return I({testCaseId:ae.id,decisionCode:le,exitStatus:null!=(se=de.status)?se:void 0,stdin:ae.input,stdout:de.stdout.slice(0,R)||void 0,stderr:de.stderr.slice(0,R)||void 0,timeSeconds:de.timeSeconds,memoryBytes:de.memoryBytes,outputFiles:ue.length>0?ue:void 0}),e.n=42,o(h.cwd,V);case 42:if(le===C.ACCEPTED){e.n=43;break}return e.a(3,44);case 43:e.n=19;break;case 44:e.n=46;break;case 45:e.p=45,Re=e.v,z.e(Re);case 46:return e.p=46,z.f(),e.f(46);case 47:return e.a(2)}},e,null,[[34,36],[30,39,40,41],[18,45,46,47],[13,15],[8,11]])}))).apply(this,arguments)}function O(e){return D.apply(this,arguments)}function D(){return(D=e(r().m(function e(t){var s,a,i,o,d,u,l,m,g,v,S,T,O,D,k,y,L,M,P,U,w,B,N,F,j;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return s=E(process.argv),a=h.parse(s.params),e.n=1,b(t);case 1:return i=e.v,e.n=2,c(s.cwd,a.language);case 2:if(o=e.v){e.n=3;break}return I({testCaseId:"prebuild",decisionCode:C.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(a.language?": language: ".concat(a.language):"")}),e.a(2);case 3:if(d=p(o)){e.n=4;break}return I({testCaseId:"prebuild",decisionCode:C.WRONG_ANSWER,stderr:"unsupported language"}),e.a(2);case 4:if(u=n(n({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!d.prebuild){e.n=9;break}return e.p=5,e.n=6,d.prebuild(s.cwd);case 6:return e.n=7,c(s.cwd,a.language);case 7:l=e.v,e.n=9;break;case 8:return e.p=8,F=e.v,console.error("prebuild error",F),I({testCaseId:"prebuild",decisionCode:C.BUILD_ERROR,stderr:F instanceof Error?F.message:String(F)}),e.a(2);case 9:if(m=null!=l?l:o,!d.buildCommand){e.n=13;break}if(e.p=10,g=d.buildCommand(m),v=_(g[0],g.slice(1),{cwd:s.cwd,encoding:"utf8",env:u},10),S=C.ACCEPTED,0!==v.status?S=C.BUILD_ERROR:v.timeSeconds>10?S=C.BUILD_TIME_LIMIT_EXCEEDED:(v.stdout.length>R||v.stderr.length>R)&&(S=C.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),S===C.ACCEPTED){e.n=11;break}return I({testCaseId:"build",decisionCode:S,exitStatus:null!=(T=v.status)?T:void 0,stdout:v.stdout.slice(0,R)||void 0,stderr:v.stderr.slice(0,R)||void 0,timeSeconds:v.timeSeconds,memoryBytes:v.memoryBytes}),e.a(2);case 11:e.n=13;break;case 12:return e.p=12,j=e.v,console.error("build error",j),I({testCaseId:"build",decisionCode:C.BUILD_ERROR,stderr:j instanceof Error?j.message:String(j)}),e.a(2);case 13:return P=Math.max(10,(null!=(O=i.timeLimitMs)?O:0)/1e3),U=d.command(m),w=_(U[0],U.slice(1),{cwd:s.cwd,encoding:"utf8",input:a.stdin,env:u},P),e.n=14,f(s.cwd,null!=(D=i.requiredOutputFilePaths)?D:[]);case 14:B=e.v,N=C.ACCEPTED,0!==w.status?N=C.RUNTIME_ERROR:w.timeSeconds>P?N=C.TIME_LIMIT_EXCEEDED:w.memoryBytes>(null!=(k=i.memoryLimitByte)?k:Number.POSITIVE_INFINITY)?N=C.MEMORY_LIMIT_EXCEEDED:w.stdout.length>R||w.stderr.length>R?N=C.OUTPUT_SIZE_LIMIT_EXCEEDED:B.length<(null!=(y=null==(L=i.requiredOutputFilePaths)?void 0:L.length)?y:0)&&(N=C.MISSING_REQUIRED_OUTPUT_FILE_ERROR),I({testCaseId:"debug",decisionCode:N,exitStatus:null!=(M=w.status)?M:void 0,stdin:a.stdin,stdout:w.stdout.slice(0,R)||void 0,stderr:w.stderr.slice(0,R)||void 0,timeSeconds:w.timeSeconds,memoryBytes:w.memoryBytes,outputFiles:B.length>0?B:void 0});case 15:return e.a(2)}},e,null,[[10,12],[5,8]])}))).apply(this,arguments)}export{O as stdioDebugPreset,S as stdioJudgePreset};
2
2
  //# sourceMappingURL=stdio.js.map
@@ -1 +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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"}
1
+ {"version":3,"file":"stdio.js","sources":["../../src/presets/stdio.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { z } from 'zod';\n\nimport { cleanWorkingDirectory, snapshotWorkingDirectory } from '../helpers/cleanWorkingDirectory.js';\nimport { compareStdoutAsSpaceSeparatedTokens } from '../helpers/compareStdoutAsSpaceSeparatedTokens.js';\nimport { copyTestCaseFileInput } from '../helpers/copyTestCaseFileInput.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 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 model_answers/java\n * ```\n *\n * Run with the optional parameters:\n * ```bash\n * bun judge.ts model_answers/java '{ \"language\": \"javascript\" }'\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(args.cwd, problemMarkdownFrontMatter);\n if (staticAnalysisTestCaseResult) {\n printTestCaseResult({ testCaseId: testCases[0]?.id ?? 'prebuild', ...staticAnalysisTestCaseResult });\n return;\n }\n\n const originalMainFilePath = await findEntryPointFile(args.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(args.cwd);\n prebuiltMainFilePath = await findEntryPointFile(args.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: args.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 const cwdSnapshot = await snapshotWorkingDirectory(args.cwd);\n\n for (const testCase of testCases) {\n // prepare test case\n if (testCases.shared?.fileInputPath) await copyTestCaseFileInput(testCases.shared.fileInputPath, args.cwd);\n if (testCase.fileInputPath) await copyTestCaseFileInput(testCase.fileInputPath, args.cwd);\n\n // run\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: args.cwd, encoding: 'utf8', input: testCase.input, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(args.cwd, problemMarkdownFrontMatter.requiredOutputFilePaths ?? []);\n\n // calculate decision\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 } else if (testCase.fileOutputPath) {\n const dirents = await fs.promises.readdir(testCase.fileOutputPath, { withFileTypes: true, recursive: true });\n for (const dirent of dirents) {\n if (!dirent.isFile()) continue;\n const direntRelativePath = path.relative(testCase.fileOutputPath, dirent.parentPath);\n const expected = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name));\n try {\n const received = await fs.promises.readFile(path.join(args.cwd, direntRelativePath, dirent.name));\n if (received.compare(expected) !== 0) decisionCode = DecisionCode.WRONG_ANSWER;\n } catch (error) {\n console.error(error);\n decisionCode = DecisionCode.WRONG_ANSWER;\n }\n }\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 // clean up\n await cleanWorkingDirectory(args.cwd, cwdSnapshot);\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 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(args.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(args.cwd);\n prebuiltMainFilePath = await findEntryPointFile(args.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: args.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: args.cwd, encoding: 'utf8', input: params.stdin, env },\n timeoutSeconds\n );\n\n const outputFiles = await readOutputFiles(args.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","language","union","string","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","cwdSnapshot","_iterator","_step","_testCases$shared","_problemMarkdownFront","_problemMarkdownFront2","_problemMarkdownFront3","_problemMarkdownFront4","_testCase$output","_spawnResult$status","testCase","timeoutSeconds","command","spawnResult","outputFiles","_decisionCode","dirents","_iterator2","_step2","dirent","direntRelativePath","expected","_t","_t2","_t3","_t4","_t5","w","_context","p","n","parseArgs","process","argv","parse","readProblemMarkdownFrontMatter","v","readTestCases","path","join","judgeByStaticAnalysis","cwd","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","snapshotWorkingDirectory","_createForOfIteratorHelper","s","done","value","shared","fileInputPath","copyTestCaseFileInput","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","fileOutputPath","fs","promises","readdir","withFileTypes","recursive","isFile","relative","parentPath","readFile","name","compare","e","f","cleanWorkingDirectory","stdioDebugPreset","_x2","_stdioDebugPreset","_callee2","_buildSpawnResult$sta2","_problemMarkdownFront5","_problemMarkdownFront6","_problemMarkdownFront7","_problemMarkdownFront8","_problemMarkdownFront9","_spawnResult$status2","_decisionCode2","_t6","_t7","_context2","Math","max"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exercode/problem-utils",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": ":100: A set of utilities for judging programs on Exercode (https://exercode.willbooster.com/).",
5
5
  "keywords": [
6
6
  "exercode",