@exercode/problem-utils 1.5.2 → 1.5.3

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.
@@ -1,2 +1,2 @@
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)};
1
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),a=require("node:path"),n="_shared";function t(){return(t=e.asyncToGenerator(e.regenerator().m(function t(s){var i,u,o,p,c,f,l,d,h,m,b,k,g,w,v,y,P,j;return e.regenerator().w(function(t){for(;;)switch(t.p=t.n){case 0:if(r.existsSync(s)){t.n=1;break}return t.a(2,[]);case 1:return i=new Set,u=new Map,o=new Map,p=new Map,c=new Map,P=e.createForOfIteratorHelper,t.n=2,r.promises.readdir(s,{withFileTypes:!0});case 2:f=P(t.v),t.p=3,f.s();case 4:if((l=f.n()).done){t.n=10;break}if(!(d=l.value).isFile()){t.n=7;break}if(h=a.parse(d.name),m=h.ext,b=h.name,".in"===m||".out"===m){t.n=5;break}return t.a(3,9);case 5:return t.n=6,r.promises.readFile(a.join(d.parentPath,d.name),"utf8");case 6:k=t.v,i.add(b),".in"===m&&u.set(b,k),".out"===m&&o.set(b,k),t.n=9;break;case 7:if(!d.isDirectory()){t.n=9;break}if(g=a.parse(d.name),w=g.ext,v=g.name,".fin"===w||".fout"===w){t.n=8;break}return t.a(3,9);case 8:i.add(v),".fin"===w&&p.set(v,a.join(d.parentPath,d.name)),".fout"===w&&c.set(v,a.join(d.parentPath,d.name));case 9:t.n=4;break;case 10:t.n=12;break;case 11:t.p=11,j=t.v,f.e(j);case 12:return t.p=12,f.f(),t.f(12);case 13:return y=e.toConsumableArray(i).filter(function(e){return e!==n}).toSorted().map(function(e){return{id:e,input:u.get(e),output:o.get(e),fileInputPath:p.get(e),fileOutputPath:c.get(e)}}),i.has(n)&&(y.shared={fileInputPath:p.get(n)}),t.a(2,y)}},t,null,[[3,11,12,13]])}))).apply(this,arguments)}exports.readTestCases=function(e){return t.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\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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"}
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 if (!fs.existsSync(directory)) return [];\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","fs","existsSync","a","Set","Map","_createForOfIteratorHelper","promises","readdir","withFileTypes","v","s","done","value","isFile","path","parse","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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"}
@@ -1,2 +1,2 @@
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};
1
+ import{asyncToGenerator as e,regenerator as a,toConsumableArray as r,createForOfIteratorHelper as n}from"../_virtual/_rollupPluginBabelHelpers.js";import t 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,y,P,j,x,F;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t.existsSync(o)){e.n=1;break}return e.a(2,[]);case 1:return u=new Set,p=new Map,f=new Map,c=new Map,l=new Map,x=n,e.n=2,t.promises.readdir(o,{withFileTypes:!0});case 2:m=x(e.v),e.p=3,m.s();case 4:if((d=m.n()).done){e.n=10;break}if(!(h=d.value).isFile()){e.n=7;break}if(b=i.parse(h.name),k=b.ext,w=b.name,".in"===k||".out"===k){e.n=5;break}return e.a(3,9);case 5:return e.n=6,t.promises.readFile(i.join(h.parentPath,h.name),"utf8");case 6:g=e.v,u.add(w),".in"===k&&p.set(w,g),".out"===k&&f.set(w,g),e.n=9;break;case 7:if(!h.isDirectory()){e.n=9;break}if(v=i.parse(h.name),y=v.ext,P=v.name,".fin"===y||".fout"===y){e.n=8;break}return e.a(3,9);case 8:u.add(P),".fin"===y&&c.set(P,i.join(h.parentPath,h.name)),".fout"===y&&l.set(P,i.join(h.parentPath,h.name));case 9:e.n=4;break;case 10:e.n=12;break;case 11:e.p=11,F=e.v,m.e(F);case 12:return e.p=12,m.f(),e.f(12);case 13: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,[[3,11,12,13]])}))).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\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":"mMAGA,IAAMA,EAAwB,UAE9B,SAAsBC,EAAaC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CA+ClC,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EA/CM,SAAAC,EAA6BC,GAAiB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAArB,IAAAsB,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EASC,OAJ9CrB,EAAQ,IAAIsB,IACZrB,EAAY,IAAIsB,IAChBrB,EAAa,IAAIqB,IACjBpB,EAAoB,IAAIoB,IACxBnB,EAAqB,IAAImB,IAAqBP,EAAAQ,EAAAL,EAAAE,EAAA,EAEzBI,EAAGC,SAASC,QAAQ5B,EAAW,CAAE6B,eAAe,IAAO,KAAA,EAAAvB,EAAAW,EAAAG,EAAAU,GAAAV,EAAAC,EAAA,EAAAf,EAAAyB,IAAA,KAAA,EAAA,IAAAxB,EAAAD,EAAAgB,KAAAU,KAAA,CAAAZ,EAAAE,EAAA,EAAA,KAAA,CAAjE,KAANd,EAAMD,EAAA0B,OACJC,SAAQ,CAAAd,EAAAE,EAAA,EAAA,KAAA,CACA,GADAb,EACK0B,EAAKC,MAAM5B,EAAOG,MAAhCD,EAAGD,EAAHC,IAAKC,EAAIF,EAAJE,KACD,QAARD,GAAyB,SAARA,EAAc,CAAAU,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAiB,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAjB,EAAAE,EAAA,EAEhBI,EAAGC,SAASW,SAASH,EAAKI,KAAK/B,EAAOgC,WAAYhC,EAAOG,MAAO,QAAO,KAAA,EAApFC,EAAIQ,EAAAU,EAEV7B,EAAMwC,IAAI9B,GACE,QAARD,GAAeR,EAAUwC,IAAI/B,EAAMC,GAC3B,SAARF,GAAgBP,EAAWuC,IAAI/B,EAAMC,GAAMQ,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAA,IACtCd,EAAOmC,cAAa,CAAAvB,EAAAE,EAAA,EAAA,KAAA,CACZ,GADYT,EACPsB,EAAKC,MAAM5B,EAAOG,MAAhCD,EAAGG,EAAHH,IAAKC,EAAIE,EAAJF,KACD,SAARD,GAA0B,UAARA,EAAe,CAAAU,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAiB,EAAA,EAAA,GAAA,KAAA,EAErCpC,EAAMwC,IAAI9B,GACE,SAARD,GAAgBN,EAAkBsC,IAAI/B,EAAMwB,EAAKI,KAAK/B,EAAOgC,WAAYhC,EAAOG,OACxE,UAARD,GAAiBL,EAAmBqC,IAAI/B,EAAMwB,EAAKI,KAAK/B,EAAOgC,WAAYhC,EAAOG,OAAO,KAAA,EAAAS,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,GAAAF,EAAAC,EAAA,GAAAH,EAAAE,EAAAU,EAAAxB,EAAAsC,EAAA1B,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAf,EAAAuC,IAAAzB,EAAAyB,EAAA,IAAA,KAAA,GAiBhG,OAbK7B,EAAuD8B,EAAI7C,GAC9D8C,OAAO,SAACC,GAAE,OAAKA,IAAO3D,CAAqB,GAC3C4D,WACAC,IAAI,SAACF,GAAE,MAAM,CACZA,GAAAA,EACAG,MAAOjD,EAAUkD,IAAIJ,GACrBK,OAAQlD,EAAWiD,IAAIJ,GACvBM,cAAelD,EAAkBgD,IAAIJ,GACrCO,eAAgBlD,EAAmB+C,IAAIJ,GACxC,GAEC/C,EAAMuD,IAAInE,KACZ2B,EAAUyC,OAAS,CAAEH,cAAelD,EAAkBgD,IAAI/D,KAC3D+B,EAAAiB,EAAA,EAEMrB,GAAS,EAAAjB,EAAA,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,KAAA,KACjBN,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 if (!fs.existsSync(directory)) return [];\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","fs","existsSync","a","Set","Map","_createForOfIteratorHelper","promises","readdir","withFileTypes","v","s","done","value","isFile","path","parse","readFile","join","parentPath","add","set","isDirectory","e","f","_toConsumableArray","filter","id","toSorted","map","input","get","output","fileInputPath","fileOutputPath","has","shared"],"mappings":"mMAGA,IAAMA,EAAwB,UAE9B,SAAsBC,EAAaC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAiDlC,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EAjDM,SAAAC,EAA6BC,GAAiB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAArB,IAAAsB,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAAA,GAK9CC,EAAGC,WAAWxB,GAAU,CAAAoB,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAK,EAAA,EAAS,IAAE,KAAA,EAMY,OAJ9CxB,EAAQ,IAAIyB,IACZxB,EAAY,IAAIyB,IAChBxB,EAAa,IAAIwB,IACjBvB,EAAoB,IAAIuB,IACxBtB,EAAqB,IAAIsB,IAAqBV,EAAAW,EAAAR,EAAAE,EAAA,EAEzBC,EAAGM,SAASC,QAAQ9B,EAAW,CAAE+B,eAAe,IAAO,KAAA,EAAAzB,EAAAW,EAAAG,EAAAY,GAAAZ,EAAAC,EAAA,EAAAf,EAAA2B,IAAA,KAAA,EAAA,IAAA1B,EAAAD,EAAAgB,KAAAY,KAAA,CAAAd,EAAAE,EAAA,GAAA,KAAA,CAAjE,KAANd,EAAMD,EAAA4B,OACJC,SAAQ,CAAAhB,EAAAE,EAAA,EAAA,KAAA,CACA,GADAb,EACK4B,EAAKC,MAAM9B,EAAOG,MAAhCD,EAAGD,EAAHC,IAAKC,EAAIF,EAAJE,KACD,QAARD,GAAyB,SAARA,EAAc,CAAAU,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAK,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAL,EAAAE,EAAA,EAEhBC,EAAGM,SAASU,SAASF,EAAKG,KAAKhC,EAAOiC,WAAYjC,EAAOG,MAAO,QAAO,KAAA,EAApFC,EAAIQ,EAAAY,EAEV/B,EAAMyC,IAAI/B,GACE,QAARD,GAAeR,EAAUyC,IAAIhC,EAAMC,GAC3B,SAARF,GAAgBP,EAAWwC,IAAIhC,EAAMC,GAAMQ,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAA,IACtCd,EAAOoC,cAAa,CAAAxB,EAAAE,EAAA,EAAA,KAAA,CACZ,GADYT,EACPwB,EAAKC,MAAM9B,EAAOG,MAAhCD,EAAGG,EAAHH,IAAKC,EAAIE,EAAJF,KACD,SAARD,GAA0B,UAARA,EAAe,CAAAU,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAK,EAAA,EAAA,GAAA,KAAA,EAErCxB,EAAMyC,IAAI/B,GACE,SAARD,GAAgBN,EAAkBuC,IAAIhC,EAAM0B,EAAKG,KAAKhC,EAAOiC,WAAYjC,EAAOG,OACxE,UAARD,GAAiBL,EAAmBsC,IAAIhC,EAAM0B,EAAKG,KAAKhC,EAAOiC,WAAYjC,EAAOG,OAAO,KAAA,EAAAS,EAAAE,EAAA,EAAA,MAAA,KAAA,GAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,GAAAF,EAAAC,EAAA,GAAAH,EAAAE,EAAAY,EAAA1B,EAAAuC,EAAA3B,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAf,EAAAwC,IAAA1B,EAAA0B,EAAA,IAAA,KAAA,GAiBhG,OAbK9B,EAAuD+B,EAAI9C,GAC9D+C,OAAO,SAACC,GAAE,OAAKA,IAAO5D,CAAqB,GAC3C6D,WACAC,IAAI,SAACF,GAAE,MAAM,CACZA,GAAAA,EACAG,MAAOlD,EAAUmD,IAAIJ,GACrBK,OAAQnD,EAAWkD,IAAIJ,GACvBM,cAAenD,EAAkBiD,IAAIJ,GACrCO,eAAgBnD,EAAmBgD,IAAIJ,GACxC,GAEChD,EAAMwD,IAAIpE,KACZ2B,EAAU0C,OAAS,CAAEH,cAAenD,EAAkBiD,IAAIhE,KAC3D+B,EAAAK,EAAA,EAEMT,GAAS,EAAAjB,EAAA,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,KAAA,KACjBN,MAAAC,KAAAC,UAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exercode/problem-utils",
3
- "version": "1.5.2",
3
+ "version": "1.5.3",
4
4
  "description": ":100: A set of utilities for judging programs on Exercode (https://exercode.willbooster.com/).",
5
5
  "keywords": [
6
6
  "exercode",
@@ -72,7 +72,7 @@
72
72
  "eslint-plugin-sort-destructure-keys": "2.0.0",
73
73
  "eslint-plugin-unicorn": "62.0.0",
74
74
  "eslint-plugin-unused-imports": "4.3.0",
75
- "globals": "16.5.0",
75
+ "globals": "17.0.0",
76
76
  "husky": "9.1.7",
77
77
  "lint-staged": "16.2.7",
78
78
  "micromatch": "4.0.8",