@exercode/problem-utils
Advanced tools
| "use strict";function r(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=Array(t);e<t;e++)n[e]=r[e];return n}function t(r){if(Array.isArray(r))return r}function e(t){if(Array.isArray(t))return r(t)}function n(r,t,e,n,o,i,a){try{var u=r[i](a),c=u.value}catch(r){return void e(r)}u.done?t(c):Promise.resolve(c).then(n,o)}function o(r,t,e){return(t=s(t))in r?Object.defineProperty(r,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[t]=e,r}function i(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function a(r,t){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(r)).next,0===t);else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==t);c=!0);}catch(r){f=!0,o=r}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}function u(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable})),e.push.apply(e,n)}return e}function l(){ | ||
| /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ | ||
| var r,t,e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,n,o,i){var c=n&&n.prototype instanceof u?n:u,f=Object.create(c.prototype);return y(f,"_invoke",function(e,n,o){var i,u,c,f=0,l=o||[],y=!1,p={p:0,n:0,v:r,a:s,f:s.bind(r,4),d:function(t,e){return i=t,u=0,c=r,p.n=e,a}};function s(e,n){for(u=e,c=n,t=0;!y&&f&&!o&&t<l.length;t++){var o,i=l[t],s=p.p,b=i[2];e>3?(o=b===n)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=r):i[0]<=s&&((o=e<2&&s<i[1])?(u=0,p.v=n,p.n=i[1]):s<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,p.n=b,u=0))}if(o||e>1)return a;throw y=!0,n}return function(o,l,b){if(f>1)throw TypeError("Generator is already running");for(y&&1===l&&s(l,b),u=l,c=b;(t=u<2?r:c)||!y;){i||(u?u<3?(u>1&&(p.n=-1),s(u,c)):p.n=c:p.v=c);try{if(f=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=r}else if((t=(y=p.n<0)?c:e.call(n,p))!==a)break}catch(t){i=r,u=1,c=t}finally{f=1}}return{value:t,done:y}}}(e,o,i),!0),f}var a={};function u(){}function c(){}function f(){}t=Object.getPrototypeOf;var p=[][n]?t(t([][n]())):(y(t={},n,function(){return this}),t),s=f.prototype=u.prototype=Object.create(p);function b(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,f):(r.__proto__=f,y(r,o,"GeneratorFunction")),r.prototype=Object.create(s),r}return c.prototype=f,y(s,"constructor",f),y(f,"constructor",c),c.displayName="GeneratorFunction",y(f,o,"GeneratorFunction"),y(s),y(s,o,"Generator"),y(s,n,function(){return this}),y(s,"toString",function(){return"[object Generator]"}),(l=function(){return{w:i,m:b}})()}function y(r,t,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(r){o=0}y=function(r,t,e,n){function i(t,e){y(r,t,function(r){return this._invoke(t,e,r)})}t?o?o(r,t,{value:e,enumerable:!n,configurable:!n,writable:!n}):r[t]=e:(i("next",0),i("throw",1),i("return",2))},y(r,t,e,n)}function p(r,t){if("object"!=typeof r||!r)return r;var e=r[Symbol.toPrimitive];if(void 0!==e){var n=e.call(r,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(r)}function s(r){var t=p(r,"string");return"symbol"==typeof t?t:t+""}function b(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}exports.arrayLikeToArray=r,exports.arrayWithHoles=t,exports.arrayWithoutHoles=e,exports.asyncToGenerator=function(r){return function(){var t=this,e=arguments;return new Promise(function(o,i){var a=r.apply(t,e);function u(r){n(a,o,i,u,c,"next",r)}function c(r){n(a,o,i,u,c,"throw",r)}u(void 0)})}},exports.createForOfIteratorHelper=function(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!e){if(Array.isArray(r)||(e=b(r))||t&&r&&"number"==typeof r.length){e&&(r=e);var n=0,o=function(){};return{s:o,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return a=r.done,r},e:function(r){u=!0,i=r},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}},exports.defineProperty=o,exports.iterableToArray=i,exports.iterableToArrayLimit=a,exports.nonIterableRest=u,exports.nonIterableSpread=c,exports.objectSpread2=function(r){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?f(Object(e),!0).forEach(function(t){o(r,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(e)):f(Object(e)).forEach(function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(e,t))})}return r},exports.regenerator=l,exports.regeneratorDefine=y,exports.regeneratorValues=function(r){if(null!=r){var t=r["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],e=0;if(t)return t.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length))return{next:function(){return r&&e>=r.length&&(r=void 0),{value:r&&r[e++],done:!r}}}}throw new TypeError(typeof r+" is not iterable")},exports.slicedToArray=function(r,e){return t(r)||a(r,e)||b(r,e)||u()},exports.toConsumableArray=function(r){return e(r)||i(r)||b(r)||c()},exports.toPrimitive=p,exports.toPropertyKey=s,exports.unsupportedIterableToArray=b; | ||
| //# sourceMappingURL=_rollupPluginBabelHelpers.cjs.map |
| {"version":3,"file":"_rollupPluginBabelHelpers.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"} |
| function r(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=Array(t);e<t;e++)n[e]=r[e];return n}function t(r){if(Array.isArray(r))return r}function e(t){if(Array.isArray(t))return r(t)}function n(r,t,e,n,o,i,a){try{var u=r[i](a),c=u.value}catch(r){return void e(r)}u.done?t(c):Promise.resolve(c).then(n,o)}function o(r){return function(){var t=this,e=arguments;return new Promise(function(o,i){var a=r.apply(t,e);function u(r){n(a,o,i,u,c,"next",r)}function c(r){n(a,o,i,u,c,"throw",r)}u(void 0)})}}function i(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!e){if(Array.isArray(r)||(e=O(r))||t&&r&&"number"==typeof r.length){e&&(r=e);var n=0,o=function(){};return{s:o,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return a=r.done,r},e:function(r){u=!0,i=r},f:function(){try{a||null==e.return||e.return()}finally{if(u)throw i}}}}function a(r,t,e){return(t=g(t))in r?Object.defineProperty(r,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[t]=e,r}function u(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function c(r,t){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=e){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(e=e.call(r)).next,0===t);else for(;!(c=(n=i.call(e)).done)&&(u.push(n.value),u.length!==t);c=!0);}catch(r){f=!0,o=r}finally{try{if(!c&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}function f(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function y(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable})),e.push.apply(e,n)}return e}function s(r){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?y(Object(e),!0).forEach(function(t){a(r,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(e)):y(Object(e)).forEach(function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(e,t))})}return r}function p(){ | ||
| /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ | ||
| var r,t,e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",o=e.toStringTag||"@@toStringTag";function i(e,n,o,i){var c=n&&n.prototype instanceof u?n:u,f=Object.create(c.prototype);return b(f,"_invoke",function(e,n,o){var i,u,c,f=0,l=o||[],y=!1,s={p:0,n:0,v:r,a:p,f:p.bind(r,4),d:function(t,e){return i=t,u=0,c=r,s.n=e,a}};function p(e,n){for(u=e,c=n,t=0;!y&&f&&!o&&t<l.length;t++){var o,i=l[t],p=s.p,b=i[2];e>3?(o=b===n)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=r):i[0]<=p&&((o=e<2&&p<i[1])?(u=0,s.v=n,s.n=i[1]):p<b&&(o=e<3||i[0]>n||n>b)&&(i[4]=e,i[5]=n,s.n=b,u=0))}if(o||e>1)return a;throw y=!0,n}return function(o,l,b){if(f>1)throw TypeError("Generator is already running");for(y&&1===l&&p(l,b),u=l,c=b;(t=u<2?r:c)||!y;){i||(u?u<3?(u>1&&(s.n=-1),p(u,c)):s.n=c:s.v=c);try{if(f=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=r}else if((t=(y=s.n<0)?c:e.call(n,s))!==a)break}catch(t){i=r,u=1,c=t}finally{f=1}}return{value:t,done:y}}}(e,o,i),!0),f}var a={};function u(){}function c(){}function f(){}t=Object.getPrototypeOf;var l=[][n]?t(t([][n]())):(b(t={},n,function(){return this}),t),y=f.prototype=u.prototype=Object.create(l);function s(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,f):(r.__proto__=f,b(r,o,"GeneratorFunction")),r.prototype=Object.create(y),r}return c.prototype=f,b(y,"constructor",f),b(f,"constructor",c),c.displayName="GeneratorFunction",b(f,o,"GeneratorFunction"),b(y),b(y,o,"Generator"),b(y,n,function(){return this}),b(y,"toString",function(){return"[object Generator]"}),(p=function(){return{w:i,m:s}})()}function b(r,t,e,n){var o=Object.defineProperty;try{o({},"",{})}catch(r){o=0}b=function(r,t,e,n){function i(t,e){b(r,t,function(r){return this._invoke(t,e,r)})}t?o?o(r,t,{value:e,enumerable:!n,configurable:!n,writable:!n}):r[t]=e:(i("next",0),i("throw",1),i("return",2))},b(r,t,e,n)}function v(r){if(null!=r){var t=r["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],e=0;if(t)return t.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length))return{next:function(){return r&&e>=r.length&&(r=void 0),{value:r&&r[e++],done:!r}}}}throw new TypeError(typeof r+" is not iterable")}function m(r,e){return t(r)||c(r,e)||O(r,e)||f()}function d(r){return e(r)||u(r)||O(r)||l()}function h(r,t){if("object"!=typeof r||!r)return r;var e=r[Symbol.toPrimitive];if(void 0!==e){var n=e.call(r,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(r)}function g(r){var t=h(r,"string");return"symbol"==typeof t?t:t+""}function O(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}export{r as arrayLikeToArray,t as arrayWithHoles,e as arrayWithoutHoles,o as asyncToGenerator,i as createForOfIteratorHelper,a as defineProperty,u as iterableToArray,c as iterableToArrayLimit,f as nonIterableRest,l as nonIterableSpread,s as objectSpread2,p as regenerator,b as regeneratorDefine,v as regeneratorValues,m as slicedToArray,d as toConsumableArray,h as toPrimitive,g as toPropertyKey,O as unsupportedIterableToArray}; | ||
| //# sourceMappingURL=_rollupPluginBabelHelpers.js.map |
| {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"} |
| "use strict";var r=require("../_virtual/_rollupPluginBabelHelpers.cjs"),e=1e-6;exports.compareStdoutAsSpaceSeparatedTokens=function(t,a){var i=t.trim().split(/\s+/),s=a.trim().split(/\s+/);if(i.length!==s.length)return!1;var n,u=r.createForOfIteratorHelper(s.entries());try{for(u.s();!(n=u.n()).done;){var l=r.slicedToArray(n.value,2),o=l[0],N=l[1],c=i[o];if(!Number.isNaN(Number(N))&&N.includes(".")){var f=Number(c),b=Number(N);if(Number.isNaN(b))throw new TypeError("invalid token in test case: ".concat(N));if(Number.isNaN(f))return!1;var m=Math.abs(f-b),p=0===b?Number.POSITIVE_INFINITY:Math.abs(m/b);if(m>e&&p>e)return!1}else if(c!==N)return!1}}catch(r){u.e(r)}finally{u.f()}return!0}; | ||
| //# sourceMappingURL=compareStdoutAsSpaceSeparatedTokens.cjs.map |
| {"version":3,"file":"compareStdoutAsSpaceSeparatedTokens.cjs","sources":["../../src/helpers/compareStdoutAsSpaceSeparatedTokens.ts"],"sourcesContent":["const ACCEPTABLE_FLOAT_ERROR = 1e-6;\n\nexport function compareStdoutAsSpaceSeparatedTokens(received: string, expected: string): boolean {\n // Consecutive white spaces (including tabs, page breaks, and line breaks) are treated as one space character.\n const receivedTokens = received.trim().split(/\\s+/);\n const expectedTokens = expected.trim().split(/\\s+/);\n\n if (receivedTokens.length !== expectedTokens.length) return false;\n\n for (const [i, expectedToken] of expectedTokens.entries()) {\n const receivedToken = receivedTokens[i];\n\n const isDecimal = !Number.isNaN(Number(expectedToken)) && expectedToken.includes('.');\n if (isDecimal) {\n const receivedNumber = Number(receivedToken);\n const expectedNumber = Number(expectedToken);\n\n if (Number.isNaN(expectedNumber)) throw new TypeError(`invalid token in test case: ${expectedToken}`);\n if (Number.isNaN(receivedNumber)) return false;\n\n const absoluteError = Math.abs(receivedNumber - expectedNumber);\n const relativeError = expectedNumber === 0 ? Number.POSITIVE_INFINITY : Math.abs(absoluteError / expectedNumber);\n if (absoluteError > ACCEPTABLE_FLOAT_ERROR && relativeError > ACCEPTABLE_FLOAT_ERROR) return false;\n } else {\n if (receivedToken !== expectedToken) return false;\n }\n }\n\n return true;\n}\n"],"names":["ACCEPTABLE_FLOAT_ERROR","received","expected","receivedTokens","trim","split","expectedTokens","length","_step","_iterator","_createForOfIteratorHelper","entries","s","n","done","_step$value","_slicedToArray","value","i","expectedToken","receivedToken","Number","isNaN","includes","receivedNumber","expectedNumber","TypeError","concat","absoluteError","Math","abs","relativeError","POSITIVE_INFINITY","err","e","f"],"mappings":"wEAAMA,EAAyB,iDAExB,SAA6CC,EAAkBC,GAEpE,IAAMC,EAAiBF,EAASG,OAAOC,MAAM,OACvCC,EAAiBJ,EAASE,OAAOC,MAAM,OAE7C,GAAIF,EAAeI,SAAWD,EAAeC,OAAQ,OAAO,EAAM,IAETC,EAFSC,EAAAC,EAAAA,0BAEjCJ,EAAeK,WAAS,IAAzD,IAAAF,EAAAG,MAAAJ,EAAAC,EAAAI,KAAAC,MAA2D,CAAA,IAAAC,EAAAC,EAAAA,cAAAR,EAAAS,MAAA,GAA/CC,EAACH,EAAA,GAAEI,EAAaJ,EAAA,GACpBK,EAAgBjB,EAAee,GAGrC,IADmBG,OAAOC,MAAMD,OAAOF,KAAmBA,EAAcI,SAAS,KAClE,CACb,IAAMC,EAAiBH,OAAOD,GACxBK,EAAiBJ,OAAOF,GAE9B,GAAIE,OAAOC,MAAMG,GAAiB,MAAM,IAAIC,UAAS,+BAAAC,OAAgCR,IACrF,GAAIE,OAAOC,MAAME,GAAiB,OAAO,EAEzC,IAAMI,EAAgBC,KAAKC,IAAIN,EAAiBC,GAC1CM,EAAmC,IAAnBN,EAAuBJ,OAAOW,kBAAoBH,KAAKC,IAAIF,EAAgBH,GACjG,GAAIG,EAAgB5B,GAA0B+B,EAAgB/B,EAAwB,OAAO,CAC/F,MACE,GAAIoB,IAAkBD,EAAe,OAAO,CAEhD,CAAC,CAAA,MAAAc,GAAAxB,EAAAyB,EAAAD,EAAA,CAAA,QAAAxB,EAAA0B,GAAA,CAED,OAAO,CACT"} |
| export declare function compareStdoutAsSpaceSeparatedTokens(received: string, expected: string): boolean; |
| import{createForOfIteratorHelper as r,slicedToArray as e}from"../_virtual/_rollupPluginBabelHelpers.js";var t=1e-6;function a(a,i){var n=a.trim().split(/\s+/),s=i.trim().split(/\s+/);if(n.length!==s.length)return!1;var l,u=r(s.entries());try{for(u.s();!(l=u.n()).done;){var N=e(l.value,2),o=N[0],f=N[1],m=n[o];if(!Number.isNaN(Number(f))&&f.includes(".")){var b=Number(m),c=Number(f);if(Number.isNaN(c))throw new TypeError("invalid token in test case: ".concat(f));if(Number.isNaN(b))return!1;var v=Math.abs(b-c),p=0===c?Number.POSITIVE_INFINITY:Math.abs(v/c);if(v>t&&p>t)return!1}else if(m!==f)return!1}}catch(r){u.e(r)}finally{u.f()}return!0}export{a as compareStdoutAsSpaceSeparatedTokens}; | ||
| //# sourceMappingURL=compareStdoutAsSpaceSeparatedTokens.js.map |
| {"version":3,"file":"compareStdoutAsSpaceSeparatedTokens.js","sources":["../../src/helpers/compareStdoutAsSpaceSeparatedTokens.ts"],"sourcesContent":["const ACCEPTABLE_FLOAT_ERROR = 1e-6;\n\nexport function compareStdoutAsSpaceSeparatedTokens(received: string, expected: string): boolean {\n // Consecutive white spaces (including tabs, page breaks, and line breaks) are treated as one space character.\n const receivedTokens = received.trim().split(/\\s+/);\n const expectedTokens = expected.trim().split(/\\s+/);\n\n if (receivedTokens.length !== expectedTokens.length) return false;\n\n for (const [i, expectedToken] of expectedTokens.entries()) {\n const receivedToken = receivedTokens[i];\n\n const isDecimal = !Number.isNaN(Number(expectedToken)) && expectedToken.includes('.');\n if (isDecimal) {\n const receivedNumber = Number(receivedToken);\n const expectedNumber = Number(expectedToken);\n\n if (Number.isNaN(expectedNumber)) throw new TypeError(`invalid token in test case: ${expectedToken}`);\n if (Number.isNaN(receivedNumber)) return false;\n\n const absoluteError = Math.abs(receivedNumber - expectedNumber);\n const relativeError = expectedNumber === 0 ? Number.POSITIVE_INFINITY : Math.abs(absoluteError / expectedNumber);\n if (absoluteError > ACCEPTABLE_FLOAT_ERROR && relativeError > ACCEPTABLE_FLOAT_ERROR) return false;\n } else {\n if (receivedToken !== expectedToken) return false;\n }\n }\n\n return true;\n}\n"],"names":["ACCEPTABLE_FLOAT_ERROR","compareStdoutAsSpaceSeparatedTokens","received","expected","receivedTokens","trim","split","expectedTokens","length","_step","_iterator","_createForOfIteratorHelper","entries","s","n","done","_step$value","_slicedToArray","value","i","expectedToken","receivedToken","Number","isNaN","includes","receivedNumber","expectedNumber","TypeError","concat","absoluteError","Math","abs","relativeError","POSITIVE_INFINITY","err","e","f"],"mappings":"wGAAA,IAAMA,EAAyB,KAExB,SAASC,EAAoCC,EAAkBC,GAEpE,IAAMC,EAAiBF,EAASG,OAAOC,MAAM,OACvCC,EAAiBJ,EAASE,OAAOC,MAAM,OAE7C,GAAIF,EAAeI,SAAWD,EAAeC,OAAQ,OAAO,EAAM,IAETC,EAFSC,EAAAC,EAEjCJ,EAAeK,WAAS,IAAzD,IAAAF,EAAAG,MAAAJ,EAAAC,EAAAI,KAAAC,MAA2D,CAAA,IAAAC,EAAAC,EAAAR,EAAAS,MAAA,GAA/CC,EAACH,EAAA,GAAEI,EAAaJ,EAAA,GACpBK,EAAgBjB,EAAee,GAGrC,IADmBG,OAAOC,MAAMD,OAAOF,KAAmBA,EAAcI,SAAS,KAClE,CACb,IAAMC,EAAiBH,OAAOD,GACxBK,EAAiBJ,OAAOF,GAE9B,GAAIE,OAAOC,MAAMG,GAAiB,MAAM,IAAIC,UAAS,+BAAAC,OAAgCR,IACrF,GAAIE,OAAOC,MAAME,GAAiB,OAAO,EAEzC,IAAMI,EAAgBC,KAAKC,IAAIN,EAAiBC,GAC1CM,EAAmC,IAAnBN,EAAuBJ,OAAOW,kBAAoBH,KAAKC,IAAIF,EAAgBH,GACjG,GAAIG,EAAgB7B,GAA0BgC,EAAgBhC,EAAwB,OAAO,CAC/F,MACE,GAAIqB,IAAkBD,EAAe,OAAO,CAEhD,CAAC,CAAA,MAAAc,GAAAxB,EAAAyB,EAAAD,EAAA,CAAA,QAAAxB,EAAA0B,GAAA,CAED,OAAO,CACT"} |
| "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),n=require("../types/language.cjs"),a=["index","main"],t=[".DS_Store",".class"];function i(){return(i=e.asyncToGenerator(e.regenerator().m(function i(s,u){var o,c,l,f,p,d,m,g;return e.regenerator().w(function(i){for(;;)switch(i.p=i.n){case 0:return o=u&&[u].flat().flatMap(function(e){var r,a;return null!=(r=null==(a=n.languageIdToDefinition[e])?void 0:a.fileExtensions)?r:[]}),l=-1,m=e.createForOfIteratorHelper,i.n=1,r.promises.readdir(s,{withFileTypes:!0});case 1:f=m(i.v),i.p=2,d=e.regenerator().m(function r(){var n,i;return e.regenerator().w(function(e){for(;;)switch(e.n){case 0:if((n=p.value).isFile()){e.n=1;break}return e.a(2,0);case 1:if(!t.some(function(e){return n.name.endsWith(e)})){e.n=2;break}return e.a(2,0);case 2:if(!o||o.some(function(e){return n.name.endsWith(e)})){e.n=3;break}return e.a(2,0);case 3:i=a.findLastIndex(function(e){return n.name.toLowerCase().startsWith("".concat(e,"."))}),c&&!(i===l?n.name.localeCompare(c)<0:i>l)||(c=n.name,l=i);case 4:return e.a(2)}},r)}),f.s();case 3:if((p=f.n()).done){i.n=6;break}return i.d(e.regeneratorValues(d()),4);case 4:if(0!==i.v){i.n=5;break}return i.a(3,5);case 5:i.n=3;break;case 6:i.n=8;break;case 7:i.p=7,g=i.v,f.e(g);case 8:return i.p=8,f.f(),i.f(8);case 9:return i.a(2,c)}},i,null,[[2,7,8,9]])}))).apply(this,arguments)}exports.findEntryPointFile=function(e,r){return i.apply(this,arguments)}; | ||
| //# sourceMappingURL=findEntryPointFile.cjs.map |
| {"version":3,"file":"findEntryPointFile.cjs","sources":["../../src/helpers/findEntryPointFile.ts"],"sourcesContent":["import fs from 'node:fs';\n\nimport { languageIdToDefinition } from '../types/language.js';\n\n// The last is most prioritized.\nconst PRIOTIZED_FILE_NAMES = ['index', 'main'] as const;\n\nconst IGNORED_FILE_EXTENSIONS = ['.DS_Store', '.class'] as const;\n\nexport async function findEntryPointFile(\n cwd: string,\n language?: string | readonly string[]\n): Promise<string | undefined> {\n const fileExtensions =\n language && [language].flat().flatMap((language) => languageIdToDefinition[language]?.fileExtensions ?? []);\n\n let mainFileName: string | undefined;\n let mainFilePrioryty = -1;\n\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n if (IGNORED_FILE_EXTENSIONS.some((ext) => dirent.name.endsWith(ext))) continue;\n if (fileExtensions && !fileExtensions.some((ext) => dirent.name.endsWith(ext))) continue;\n\n const direntPrioryty = PRIOTIZED_FILE_NAMES.findLastIndex((name) =>\n dirent.name.toLowerCase().startsWith(`${name}.`)\n );\n\n if (\n !mainFileName ||\n (direntPrioryty === mainFilePrioryty\n ? dirent.name.localeCompare(mainFileName) < 0\n : direntPrioryty > mainFilePrioryty)\n ) {\n mainFileName = dirent.name;\n mainFilePrioryty = direntPrioryty;\n }\n }\n\n return mainFileName;\n}\n"],"names":["PRIOTIZED_FILE_NAMES","IGNORED_FILE_EXTENSIONS","_findEntryPointFile","_asyncToGenerator","_regenerator","m","_callee","cwd","language","fileExtensions","mainFileName","mainFilePrioryty","_iterator","_step","_loop","_t","_t2","w","_context2","p","n","flat","flatMap","_languageIdToDefiniti","_languageIdToDefiniti2","languageIdToDefinition","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","dirent","direntPrioryty","_context","value","isFile","a","some","ext","name","endsWith","findLastIndex","toLowerCase","startsWith","concat","localeCompare","s","done","d","_regeneratorValues","e","f","apply","this","arguments","_x","_x2"],"mappings":"gIAKMA,EAAuB,CAAC,QAAS,QAEjCC,EAA0B,CAAC,YAAa,UAiC7C,SAAAC,IAAA,OAAAA,EAAAC,EAAAA,iBAAAC,gBAAAC,EA/BM,SAAAC,EACLC,EACAC,GAAqC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAZ,gBAAAa,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAMZ,OAJnBX,EACJD,GAAY,CAACA,GAAUa,OAAOC,QAAQ,SAACd,GAAQ,IAAAe,EAAAC,EAAA,OAAqD,OAArDD,EAAqC,OAArCC,EAAKC,EAAAA,uBAAuBjB,SAAS,EAAhCgB,EAAkCf,gBAAcc,EAAI,EAAE,GAGxGZ,GAAmB,EAAEI,EAAAW,EAAAA,0BAAAR,EAAAE,EAAA,EAEEO,EAAGC,SAASC,QAAQtB,EAAK,CAAEuB,eAAe,IAAO,KAAA,EAAAlB,EAAAG,EAAAG,EAAAa,GAAAb,EAAAC,EAAA,EAAAL,EAAAV,EAAAA,cAAAC,WAAAS,IAAA,IAAAkB,EAAAC,EAAA,OAAA7B,gBAAAa,EAAA,SAAAiB,GAAA,cAAAA,EAAAd,GAAA,KAAA,EAA3D,IAANY,EAAMnB,EAAAsB,OACHC,SAAQ,CAAAF,EAAAd,EAAA,EAAA,KAAA,CAAA,OAAAc,EAAAG,EAAA,EAAA,GAAA,KAAA,EAAA,IAChBpC,EAAwBqC,KAAK,SAACC,GAAG,OAAKP,EAAOQ,KAAKC,SAASF,EAAI,GAAC,CAAAL,EAAAd,EAAA,EAAA,KAAA,CAAA,OAAAc,EAAAG,EAAA,EAAA,GAAA,KAAA,EAAA,IAChE5B,GAAmBA,EAAe6B,KAAK,SAACC,GAAG,OAAKP,EAAOQ,KAAKC,SAASF,EAAI,GAAC,CAAAL,EAAAd,EAAA,EAAA,KAAA,CAAA,OAAAc,EAAAG,EAAA,EAAA,GAAA,KAAA,EAExEJ,EAAiBjC,EAAqB0C,cAAc,SAACF,GAAI,OAC7DR,EAAOQ,KAAKG,cAAcC,WAAU,GAAAC,OAAIL,OAAQ,GAI/C9B,KACAuB,IAAmBtB,EAChBqB,EAAOQ,KAAKM,cAAcpC,GAAgB,EAC1CuB,EAAiBtB,KAErBD,EAAesB,EAAOQ,KACtB7B,EAAmBsB,GACpB,KAAA,EAAA,OAAAC,EAAAG,EAAA,GAAA,EAAAvB,EAAA,GAAAF,EAAAmC,IAAA,KAAA,EAAA,IAAAlC,EAAAD,EAAAQ,KAAA4B,KAAA,CAAA9B,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAA+B,EAAAC,EAAAA,kBAAApC,KAAA,GAAA,KAAA,EAAA,GAAA,IAAAI,EAAAa,EAAA,CAAAb,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAmB,EAAA,EAAA,GAAA,KAAA,EAAAnB,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAa,EAAAnB,EAAAuC,EAAAnC,GAAA,KAAA,EAAA,OAAAE,EAAAC,EAAA,EAAAP,EAAAwC,IAAAlC,EAAAkC,EAAA,GAAA,KAAA,EAAA,OAAAlC,EAAAmB,EAAA,EAGI3B,GAAY,EAAAJ,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,IAAA,KACpB+C,MAAAC,KAAAC,UAAA,4BA/BD,SAAwCC,EAAAC,GAAA,OAAAvD,EAAAmD,MAAAC,KAAAC,UAAA"} |
| export declare function findEntryPointFile(cwd: string, language?: string | readonly string[]): Promise<string | undefined>; |
| import{asyncToGenerator as e,regenerator as r,regeneratorValues as n,createForOfIteratorHelper as a}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:fs";import{languageIdToDefinition as s}from"../types/language.js";var i=["index","main"],o=[".DS_Store",".class"];function u(e,r){return c.apply(this,arguments)}function c(){return(c=e(r().m(function e(u,c){var f,l,p,m,d,v,b,h;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return f=c&&[c].flat().flatMap(function(e){var r,n;return null!=(r=null==(n=s[e])?void 0:n.fileExtensions)?r:[]}),p=-1,b=a,e.n=1,t.promises.readdir(u,{withFileTypes:!0});case 1:m=b(e.v),e.p=2,v=r().m(function e(){var n,a;return r().w(function(e){for(;;)switch(e.n){case 0:if((n=d.value).isFile()){e.n=1;break}return e.a(2,0);case 1:if(!o.some(function(e){return n.name.endsWith(e)})){e.n=2;break}return e.a(2,0);case 2:if(!f||f.some(function(e){return n.name.endsWith(e)})){e.n=3;break}return e.a(2,0);case 3:a=i.findLastIndex(function(e){return n.name.toLowerCase().startsWith("".concat(e,"."))}),l&&!(a===p?n.name.localeCompare(l)<0:a>p)||(l=n.name,p=a);case 4:return e.a(2)}},e)}),m.s();case 3:if((d=m.n()).done){e.n=6;break}return e.d(n(v()),4);case 4:if(0!==e.v){e.n=5;break}return e.a(3,5);case 5:e.n=3;break;case 6:e.n=8;break;case 7:e.p=7,h=e.v,m.e(h);case 8:return e.p=8,m.f(),e.f(8);case 9:return e.a(2,l)}},e,null,[[2,7,8,9]])}))).apply(this,arguments)}export{u as findEntryPointFile}; | ||
| //# sourceMappingURL=findEntryPointFile.js.map |
| {"version":3,"file":"findEntryPointFile.js","sources":["../../src/helpers/findEntryPointFile.ts"],"sourcesContent":["import fs from 'node:fs';\n\nimport { languageIdToDefinition } from '../types/language.js';\n\n// The last is most prioritized.\nconst PRIOTIZED_FILE_NAMES = ['index', 'main'] as const;\n\nconst IGNORED_FILE_EXTENSIONS = ['.DS_Store', '.class'] as const;\n\nexport async function findEntryPointFile(\n cwd: string,\n language?: string | readonly string[]\n): Promise<string | undefined> {\n const fileExtensions =\n language && [language].flat().flatMap((language) => languageIdToDefinition[language]?.fileExtensions ?? []);\n\n let mainFileName: string | undefined;\n let mainFilePrioryty = -1;\n\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n if (IGNORED_FILE_EXTENSIONS.some((ext) => dirent.name.endsWith(ext))) continue;\n if (fileExtensions && !fileExtensions.some((ext) => dirent.name.endsWith(ext))) continue;\n\n const direntPrioryty = PRIOTIZED_FILE_NAMES.findLastIndex((name) =>\n dirent.name.toLowerCase().startsWith(`${name}.`)\n );\n\n if (\n !mainFileName ||\n (direntPrioryty === mainFilePrioryty\n ? dirent.name.localeCompare(mainFileName) < 0\n : direntPrioryty > mainFilePrioryty)\n ) {\n mainFileName = dirent.name;\n mainFilePrioryty = direntPrioryty;\n }\n }\n\n return mainFileName;\n}\n"],"names":["PRIOTIZED_FILE_NAMES","IGNORED_FILE_EXTENSIONS","findEntryPointFile","_x","_x2","_findEntryPointFile","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","cwd","language","fileExtensions","mainFileName","mainFilePrioryty","_iterator","_step","_loop","_t","_t2","w","_context2","p","n","flat","flatMap","_languageIdToDefiniti","_languageIdToDefiniti2","languageIdToDefinition","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","dirent","direntPrioryty","_context","value","isFile","a","some","ext","name","endsWith","findLastIndex","toLowerCase","startsWith","concat","localeCompare","s","done","d","_regeneratorValues","e","f"],"mappings":"wOAKA,IAAMA,EAAuB,CAAC,QAAS,QAEjCC,EAA0B,CAAC,YAAa,UAE9C,SAAsBC,EAAkBC,EAAAC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CA+BvC,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EA/BM,SAAAC,EACLC,EACAC,GAAqC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAZ,IAAAa,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAMZ,OAJnBX,EACJD,GAAY,CAACA,GAAUa,OAAOC,QAAQ,SAACd,GAAQ,IAAAe,EAAAC,EAAA,OAAqD,OAArDD,EAAqC,OAArCC,EAAKC,EAAuBjB,SAAS,EAAhCgB,EAAkCf,gBAAcc,EAAI,EAAE,GAGxGZ,GAAmB,EAAEI,EAAAW,EAAAR,EAAAE,EAAA,EAEEO,EAAGC,SAASC,QAAQtB,EAAK,CAAEuB,eAAe,IAAO,KAAA,EAAAlB,EAAAG,EAAAG,EAAAa,GAAAb,EAAAC,EAAA,EAAAL,EAAAV,IAAAC,WAAAS,IAAA,IAAAkB,EAAAC,EAAA,OAAA7B,IAAAa,EAAA,SAAAiB,GAAA,cAAAA,EAAAd,GAAA,KAAA,EAA3D,IAANY,EAAMnB,EAAAsB,OACHC,SAAQ,CAAAF,EAAAd,EAAA,EAAA,KAAA,CAAA,OAAAc,EAAAG,EAAA,EAAA,GAAA,KAAA,EAAA,IAChB1C,EAAwB2C,KAAK,SAACC,GAAG,OAAKP,EAAOQ,KAAKC,SAASF,EAAI,GAAC,CAAAL,EAAAd,EAAA,EAAA,KAAA,CAAA,OAAAc,EAAAG,EAAA,EAAA,GAAA,KAAA,EAAA,IAChE5B,GAAmBA,EAAe6B,KAAK,SAACC,GAAG,OAAKP,EAAOQ,KAAKC,SAASF,EAAI,GAAC,CAAAL,EAAAd,EAAA,EAAA,KAAA,CAAA,OAAAc,EAAAG,EAAA,EAAA,GAAA,KAAA,EAExEJ,EAAiBvC,EAAqBgD,cAAc,SAACF,GAAI,OAC7DR,EAAOQ,KAAKG,cAAcC,WAAU,GAAAC,OAAIL,OAAQ,GAI/C9B,KACAuB,IAAmBtB,EAChBqB,EAAOQ,KAAKM,cAAcpC,GAAgB,EAC1CuB,EAAiBtB,KAErBD,EAAesB,EAAOQ,KACtB7B,EAAmBsB,GACpB,KAAA,EAAA,OAAAC,EAAAG,EAAA,GAAA,EAAAvB,EAAA,GAAAF,EAAAmC,IAAA,KAAA,EAAA,IAAAlC,EAAAD,EAAAQ,KAAA4B,KAAA,CAAA9B,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAA+B,EAAAC,EAAApC,KAAA,GAAA,KAAA,EAAA,GAAA,IAAAI,EAAAa,EAAA,CAAAb,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAmB,EAAA,EAAA,GAAA,KAAA,EAAAnB,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAa,EAAAnB,EAAAuC,EAAAnC,GAAA,KAAA,EAAA,OAAAE,EAAAC,EAAA,EAAAP,EAAAwC,IAAAlC,EAAAkC,EAAA,GAAA,KAAA,EAAA,OAAAlC,EAAAmB,EAAA,EAGI3B,GAAY,EAAAJ,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,IAAA,KACpBN,MAAAC,KAAAC,UAAA"} |
| "use strict";var n=require("../types/language.cjs");exports.findLanguageDefinitionByPath=function(e){return Object.values(n.languageIdToDefinition).find(function(n){return n.fileExtensions.some(function(n){return e.endsWith(n)})})}; | ||
| //# sourceMappingURL=findLanguageDefinitionByPath.cjs.map |
| {"version":3,"file":"findLanguageDefinitionByPath.cjs","sources":["../../src/helpers/findLanguageDefinitionByPath.ts"],"sourcesContent":["import { languageIdToDefinition } from '../types/language.js';\nimport type { LanguageDefinition } from '../types/language.js';\n\nexport function findLanguageDefinitionByPath(path: string): LanguageDefinition | undefined {\n return Object.values(languageIdToDefinition).find((definition) =>\n definition.fileExtensions.some((ext) => path.endsWith(ext))\n );\n}\n"],"names":["path","Object","values","languageIdToDefinition","find","definition","fileExtensions","some","ext","endsWith"],"mappings":"yFAGO,SAAsCA,GAC3C,OAAOC,OAAOC,OAAOC,EAAAA,wBAAwBC,KAAK,SAACC,GAAU,OAC3DA,EAAWC,eAAeC,KAAK,SAACC,GAAG,OAAKR,EAAKS,SAASD,EAAI,EAAC,EAE/D"} |
| import type { LanguageDefinition } from '../types/language.js'; | ||
| export declare function findLanguageDefinitionByPath(path: string): LanguageDefinition | undefined; |
| import{languageIdToDefinition as n}from"../types/language.js";function e(e){return Object.values(n).find(function(n){return n.fileExtensions.some(function(n){return e.endsWith(n)})})}export{e as findLanguageDefinitionByPath}; | ||
| //# sourceMappingURL=findLanguageDefinitionByPath.js.map |
| {"version":3,"file":"findLanguageDefinitionByPath.js","sources":["../../src/helpers/findLanguageDefinitionByPath.ts"],"sourcesContent":["import { languageIdToDefinition } from '../types/language.js';\nimport type { LanguageDefinition } from '../types/language.js';\n\nexport function findLanguageDefinitionByPath(path: string): LanguageDefinition | undefined {\n return Object.values(languageIdToDefinition).find((definition) =>\n definition.fileExtensions.some((ext) => path.endsWith(ext))\n );\n}\n"],"names":["findLanguageDefinitionByPath","path","Object","values","languageIdToDefinition","find","definition","fileExtensions","some","ext","endsWith"],"mappings":"8DAGO,SAASA,EAA6BC,GAC3C,OAAOC,OAAOC,OAAOC,GAAwBC,KAAK,SAACC,GAAU,OAC3DA,EAAWC,eAAeC,KAAK,SAACC,GAAG,OAAKR,EAAKS,SAASD,EAAI,EAAC,EAE/D"} |
| "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),n=require("node:path"),a=require("../types/decisionCode.cjs"),t=require("./findLanguageDefinitionByPath.cjs"),c=require("./removeCommentsInSourceCode.cjs");function o(){return(o=e.asyncToGenerator(e.regenerator().m(function o(s,i){var u,f,p,d,l,h,g,b,m,k,v,R,C,I,y,E,O,_,w,D,F,j,q,x,S,T,H,P,B,N,A,L,M,G;return e.regenerator().w(function(o){for(;;)switch(o.p=o.n){case 0:return f=[],A=e.createForOfIteratorHelper,o.n=1,r.promises.readdir(s,{withFileTypes:!0,recursive:!0});case 1:p=A(o.v),o.p=2,p.s();case 3:if((d=p.n()).done){o.n=9;break}if((l=d.value).isFile()){o.n=4;break}return o.a(3,8);case 4:return o.n=5,r.promises.readFile(n.join(l.parentPath,l.name),"utf8");case 5:if(h=o.v,!h.includes("�")){o.n=6;break}return o.a(3,8);case 6:if(g=t.findLanguageDefinitionByPath(l.name)){o.n=7;break}return o.a(3,8);case 7:f.push({path:l.name,data:g.grammer?c.removeCommentsInSourceCode(g.grammer,h):h});case 8:o.n=3;break;case 9:o.n=11;break;case 10:o.p=10,L=o.v,p.e(L);case 11:return o.p=11,p.f(),o.f(11);case 12:b=[],m=0,k=f;case 13:if(!(m<k.length)){o.n=23;break}C=k[m],I=e.createForOfIteratorHelper(null!=(v=i.forbiddenRegExpsInCode)?v:[]);try{for(I.s();!(y=I.n()).done;){E=y.value,O=new RegExp(E,"g"),_=C.data.matchAll(O),w=e.createForOfIteratorHelper(_);try{for(w.s();!(D=w.n()).done;)F=D.value,b.push({pattern:O.toString(),path:C.path,match:F[0]})}catch(e){w.e(e)}finally{w.f()}}}catch(e){I.e(e)}finally{I.f()}j=e.createForOfIteratorHelper(null!=(R=i.forbiddenTextsInCode)?R:[]),o.p=14,j.s();case 15:if((q=j.n()).done){o.n=19;break}x=q.value,S=0;case 16:if(!(S<C.data.length)){o.n=18;break}if(-1!==(T=C.data.indexOf(x,S))){o.n=17;break}return o.a(3,18);case 17:b.push({pattern:x,path:C.path,match:x}),S=T+x.length,o.n=16;break;case 18:o.n=15;break;case 19:o.n=21;break;case 20:o.p=20,M=o.v,j.e(M);case 21:return o.p=21,j.f(),o.f(21);case 22:m++,o.n=13;break;case 23:if(!(b.length>0)){o.n=24;break}return o.a(2,{decisionCode:a.DecisionCode.FORBIDDEN_PATTERNS_IN_CODE_ERROR,feedbackMarkdown:"ソースコード中に禁止された文字列が含まれています。\nソースコードを修正してから再度提出してください。\n\n| ファイル | 禁止パターン | 文字列 |\n| -------- | ------------ | ------ |\n".concat(b.map(function(e){return"| `".concat(e.path,"` | `").concat(e.pattern,"` | `").concat(e.match,"` |")}).join("\n"),"\n")});case 24:H=[],P=e.createForOfIteratorHelper(null!=(u=i.requiredRegExpsInCode)?u:[]),o.p=25,N=e.regenerator().m(function r(){var n,a;return e.regenerator().w(function(e){for(;;)switch(e.n){case 0:n=B.value,a=new RegExp(n),f.some(function(e){return a.test(e.data)})||H.push(a.toString());case 1:return e.a(2)}},r)}),P.s();case 26:if((B=P.n()).done){o.n=28;break}return o.d(e.regeneratorValues(N()),27);case 27:o.n=26;break;case 28:o.n=30;break;case 29:o.p=29,G=o.v,P.e(G);case 30:return o.p=30,P.f(),o.f(30);case 31:if(!(H.length>0)){o.n=32;break}return o.a(2,{decisionCode:a.DecisionCode.REQUIRED_PATTERNS_IN_CODE_ERROR,feedbackMarkdown:"ソースコード中に必要な文字列が含まれていません。\nソースコードを修正してから再度提出してください。\n\n".concat(H.map(function(e){return"- `".concat(e,"`")}).join("\n"),"\n")});case 32:return o.a(2)}},o,null,[[25,29,30,31],[14,20,21,22],[2,10,11,12]])}))).apply(this,arguments)}exports.judgeByStaticAnalysis=function(e,r){return o.apply(this,arguments)}; | ||
| //# sourceMappingURL=judgeByStaticAnalysis.cjs.map |
| {"version":3,"file":"judgeByStaticAnalysis.cjs","sources":["../../src/helpers/judgeByStaticAnalysis.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { DecisionCode } from '../types/decisionCode.js';\nimport type { ProblemMarkdownFrontMatter } from '../types/problem.js';\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nimport { findLanguageDefinitionByPath } from './findLanguageDefinitionByPath.js';\nimport { removeCommentsInSourceCode } from './removeCommentsInSourceCode.js';\n\nexport async function judgeByStaticAnalysis(\n cwd: string,\n problemMarkdownFrontMatterLike: Pick<\n ProblemMarkdownFrontMatter,\n 'forbiddenRegExpsInCode' | 'forbiddenTextsInCode' | 'requiredRegExpsInCode'\n >\n): Promise<Pick<TestCaseResult, 'decisionCode' | 'feedbackMarkdown'> | undefined> {\n const sourceCodeWithoutCommentFiles: { path: string; data: string }[] = [];\n\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true, recursive: true })) {\n if (!dirent.isFile()) continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n const isBinary = text.includes('\\uFFFD');\n if (isBinary) continue;\n\n const languageDefinition = findLanguageDefinitionByPath(dirent.name);\n if (!languageDefinition) continue;\n\n sourceCodeWithoutCommentFiles.push({\n path: dirent.name,\n data: languageDefinition.grammer ? removeCommentsInSourceCode(languageDefinition.grammer, text) : text,\n });\n }\n\n const forbiddenFounds: { pattern: string; path: string; match: string }[] = [];\n\n for (const file of sourceCodeWithoutCommentFiles) {\n for (const pattern of problemMarkdownFrontMatterLike.forbiddenRegExpsInCode ?? []) {\n const re = new RegExp(pattern, 'g');\n const mathces = file.data.matchAll(re);\n for (const match of mathces) forbiddenFounds.push({ pattern: re.toString(), path: file.path, match: match[0] });\n }\n for (const pattern of problemMarkdownFrontMatterLike.forbiddenTextsInCode ?? []) {\n let p = 0;\n while (p < file.data.length) {\n const index = file.data.indexOf(pattern, p);\n if (index === -1) break;\n forbiddenFounds.push({ pattern, path: file.path, match: pattern });\n p = index + pattern.length;\n }\n }\n }\n\n if (forbiddenFounds.length > 0) {\n return {\n decisionCode: DecisionCode.FORBIDDEN_PATTERNS_IN_CODE_ERROR,\n feedbackMarkdown: `ソースコード中に禁止された文字列が含まれています。\nソースコードを修正してから再度提出してください。\n\n| ファイル | 禁止パターン | 文字列 |\n| -------- | ------------ | ------ |\n${forbiddenFounds.map((f) => `| \\`${f.path}\\` | \\`${f.pattern}\\` | \\`${f.match}\\` |`).join('\\n')}\n`,\n };\n }\n\n const missingRequiredPatterns: string[] = [];\n\n for (const pattern of problemMarkdownFrontMatterLike.requiredRegExpsInCode ?? []) {\n const re = new RegExp(pattern);\n const isFound = sourceCodeWithoutCommentFiles.some((f) => re.test(f.data));\n if (!isFound) missingRequiredPatterns.push(re.toString());\n }\n\n if (missingRequiredPatterns.length > 0) {\n return {\n decisionCode: DecisionCode.REQUIRED_PATTERNS_IN_CODE_ERROR,\n feedbackMarkdown: `ソースコード中に必要な文字列が含まれていません。\nソースコードを修正してから再度提出してください。\n\n${missingRequiredPatterns.map((p) => `- \\`${p}\\``).join('\\n')}\n`,\n };\n }\n\n return;\n}\n"],"names":["_judgeByStaticAnalysis","_asyncToGenerator","_regenerator","m","_callee","cwd","problemMarkdownFrontMatterLike","_problemMarkdownFront3","sourceCodeWithoutCommentFiles","_iterator","_step","dirent","text","languageDefinition","forbiddenFounds","_i","_sourceCodeWithoutCom","_problemMarkdownFront","_problemMarkdownFront2","file","_iterator2","_step2","pattern","re","mathces","_iterator4","_step4","match","_iterator3","_step3","_pattern","p","index","missingRequiredPatterns","_iterator5","_step5","_loop","_t","_t2","_t3","_t4","w","_context2","n","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","recursive","v","s","done","value","isFile","a","readFile","path","join","parentPath","name","includes","findLanguageDefinitionByPath","push","data","grammer","removeCommentsInSourceCode","e","f","length","forbiddenRegExpsInCode","RegExp","matchAll","toString","err","forbiddenTextsInCode","indexOf","decisionCode","DecisionCode","FORBIDDEN_PATTERNS_IN_CODE_ERROR","feedbackMarkdown","concat","map","requiredRegExpsInCode","_context","some","test","d","_regeneratorValues","REQUIRED_PATTERNS_IN_CODE_ERROR","apply","this","arguments","_x","_x2"],"mappings":"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"} |
| import type { ProblemMarkdownFrontMatter } from '../types/problem.js'; | ||
| import type { TestCaseResult } from '../types/testCaseResult.js'; | ||
| export declare function judgeByStaticAnalysis(cwd: string, problemMarkdownFrontMatterLike: Pick<ProblemMarkdownFrontMatter, 'forbiddenRegExpsInCode' | 'forbiddenTextsInCode' | 'requiredRegExpsInCode'>): Promise<Pick<TestCaseResult, 'decisionCode' | 'feedbackMarkdown'> | undefined>; |
| import{asyncToGenerator as e,regenerator as n,regeneratorValues as a,createForOfIteratorHelper as r}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:fs";import s from"node:path";import{DecisionCode as c}from"../types/decisionCode.js";import{findLanguageDefinitionByPath as o}from"./findLanguageDefinitionByPath.js";import{removeCommentsInSourceCode as i}from"./removeCommentsInSourceCode.js";function u(e,n){return f.apply(this,arguments)}function f(){return(f=e(n().m(function e(u,f){var p,d,l,m,h,b,k,g,v,R,E,y,C,_,w,I,j,x,O,T,D,F,N,P,S,A,B,H,M,q,G,L,Q,U;return n().w(function(e){for(;;)switch(e.p=e.n){case 0:return d=[],G=r,e.n=1,t.promises.readdir(u,{withFileTypes:!0,recursive:!0});case 1:l=G(e.v),e.p=2,l.s();case 3:if((m=l.n()).done){e.n=9;break}if((h=m.value).isFile()){e.n=4;break}return e.a(3,8);case 4:return e.n=5,t.promises.readFile(s.join(h.parentPath,h.name),"utf8");case 5:if(b=e.v,!b.includes("�")){e.n=6;break}return e.a(3,8);case 6:if(k=o(h.name)){e.n=7;break}return e.a(3,8);case 7:d.push({path:h.name,data:k.grammer?i(k.grammer,b):b});case 8:e.n=3;break;case 9:e.n=11;break;case 10:e.p=10,L=e.v,l.e(L);case 11:return e.p=11,l.f(),e.f(11);case 12:g=[],v=0,R=d;case 13:if(!(v<R.length)){e.n=23;break}C=R[v],_=r(null!=(E=f.forbiddenRegExpsInCode)?E:[]);try{for(_.s();!(w=_.n()).done;){I=w.value,j=new RegExp(I,"g"),x=C.data.matchAll(j),O=r(x);try{for(O.s();!(T=O.n()).done;)D=T.value,g.push({pattern:j.toString(),path:C.path,match:D[0]})}catch(e){O.e(e)}finally{O.f()}}}catch(e){_.e(e)}finally{_.f()}F=r(null!=(y=f.forbiddenTextsInCode)?y:[]),e.p=14,F.s();case 15:if((N=F.n()).done){e.n=19;break}P=N.value,S=0;case 16:if(!(S<C.data.length)){e.n=18;break}if(-1!==(A=C.data.indexOf(P,S))){e.n=17;break}return e.a(3,18);case 17:g.push({pattern:P,path:C.path,match:P}),S=A+P.length,e.n=16;break;case 18:e.n=15;break;case 19:e.n=21;break;case 20:e.p=20,Q=e.v,F.e(Q);case 21:return e.p=21,F.f(),e.f(21);case 22:v++,e.n=13;break;case 23:if(!(g.length>0)){e.n=24;break}return e.a(2,{decisionCode:c.FORBIDDEN_PATTERNS_IN_CODE_ERROR,feedbackMarkdown:"ソースコード中に禁止された文字列が含まれています。\nソースコードを修正してから再度提出してください。\n\n| ファイル | 禁止パターン | 文字列 |\n| -------- | ------------ | ------ |\n".concat(g.map(function(e){return"| `".concat(e.path,"` | `").concat(e.pattern,"` | `").concat(e.match,"` |")}).join("\n"),"\n")});case 24:B=[],H=r(null!=(p=f.requiredRegExpsInCode)?p:[]),e.p=25,q=n().m(function e(){var a,r;return n().w(function(e){for(;;)switch(e.n){case 0:a=M.value,r=new RegExp(a),d.some(function(e){return r.test(e.data)})||B.push(r.toString());case 1:return e.a(2)}},e)}),H.s();case 26:if((M=H.n()).done){e.n=28;break}return e.d(a(q()),27);case 27:e.n=26;break;case 28:e.n=30;break;case 29:e.p=29,U=e.v,H.e(U);case 30:return e.p=30,H.f(),e.f(30);case 31:if(!(B.length>0)){e.n=32;break}return e.a(2,{decisionCode:c.REQUIRED_PATTERNS_IN_CODE_ERROR,feedbackMarkdown:"ソースコード中に必要な文字列が含まれていません。\nソースコードを修正してから再度提出してください。\n\n".concat(B.map(function(e){return"- `".concat(e,"`")}).join("\n"),"\n")});case 32:return e.a(2)}},e,null,[[25,29,30,31],[14,20,21,22],[2,10,11,12]])}))).apply(this,arguments)}export{u as judgeByStaticAnalysis}; | ||
| //# sourceMappingURL=judgeByStaticAnalysis.js.map |
| {"version":3,"file":"judgeByStaticAnalysis.js","sources":["../../src/helpers/judgeByStaticAnalysis.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { DecisionCode } from '../types/decisionCode.js';\nimport type { ProblemMarkdownFrontMatter } from '../types/problem.js';\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nimport { findLanguageDefinitionByPath } from './findLanguageDefinitionByPath.js';\nimport { removeCommentsInSourceCode } from './removeCommentsInSourceCode.js';\n\nexport async function judgeByStaticAnalysis(\n cwd: string,\n problemMarkdownFrontMatterLike: Pick<\n ProblemMarkdownFrontMatter,\n 'forbiddenRegExpsInCode' | 'forbiddenTextsInCode' | 'requiredRegExpsInCode'\n >\n): Promise<Pick<TestCaseResult, 'decisionCode' | 'feedbackMarkdown'> | undefined> {\n const sourceCodeWithoutCommentFiles: { path: string; data: string }[] = [];\n\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true, recursive: true })) {\n if (!dirent.isFile()) continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n const isBinary = text.includes('\\uFFFD');\n if (isBinary) continue;\n\n const languageDefinition = findLanguageDefinitionByPath(dirent.name);\n if (!languageDefinition) continue;\n\n sourceCodeWithoutCommentFiles.push({\n path: dirent.name,\n data: languageDefinition.grammer ? removeCommentsInSourceCode(languageDefinition.grammer, text) : text,\n });\n }\n\n const forbiddenFounds: { pattern: string; path: string; match: string }[] = [];\n\n for (const file of sourceCodeWithoutCommentFiles) {\n for (const pattern of problemMarkdownFrontMatterLike.forbiddenRegExpsInCode ?? []) {\n const re = new RegExp(pattern, 'g');\n const mathces = file.data.matchAll(re);\n for (const match of mathces) forbiddenFounds.push({ pattern: re.toString(), path: file.path, match: match[0] });\n }\n for (const pattern of problemMarkdownFrontMatterLike.forbiddenTextsInCode ?? []) {\n let p = 0;\n while (p < file.data.length) {\n const index = file.data.indexOf(pattern, p);\n if (index === -1) break;\n forbiddenFounds.push({ pattern, path: file.path, match: pattern });\n p = index + pattern.length;\n }\n }\n }\n\n if (forbiddenFounds.length > 0) {\n return {\n decisionCode: DecisionCode.FORBIDDEN_PATTERNS_IN_CODE_ERROR,\n feedbackMarkdown: `ソースコード中に禁止された文字列が含まれています。\nソースコードを修正してから再度提出してください。\n\n| ファイル | 禁止パターン | 文字列 |\n| -------- | ------------ | ------ |\n${forbiddenFounds.map((f) => `| \\`${f.path}\\` | \\`${f.pattern}\\` | \\`${f.match}\\` |`).join('\\n')}\n`,\n };\n }\n\n const missingRequiredPatterns: string[] = [];\n\n for (const pattern of problemMarkdownFrontMatterLike.requiredRegExpsInCode ?? []) {\n const re = new RegExp(pattern);\n const isFound = sourceCodeWithoutCommentFiles.some((f) => re.test(f.data));\n if (!isFound) missingRequiredPatterns.push(re.toString());\n }\n\n if (missingRequiredPatterns.length > 0) {\n return {\n decisionCode: DecisionCode.REQUIRED_PATTERNS_IN_CODE_ERROR,\n feedbackMarkdown: `ソースコード中に必要な文字列が含まれていません。\nソースコードを修正してから再度提出してください。\n\n${missingRequiredPatterns.map((p) => `- \\`${p}\\``).join('\\n')}\n`,\n };\n }\n\n return;\n}\n"],"names":["judgeByStaticAnalysis","_x","_x2","_judgeByStaticAnalysis","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","cwd","problemMarkdownFrontMatterLike","_problemMarkdownFront3","sourceCodeWithoutCommentFiles","_iterator","_step","dirent","text","languageDefinition","forbiddenFounds","_i","_sourceCodeWithoutCom","_problemMarkdownFront","_problemMarkdownFront2","file","_iterator2","_step2","pattern","re","mathces","_iterator4","_step4","match","_iterator3","_step3","_pattern","p","index","missingRequiredPatterns","_iterator5","_step5","_loop","_t","_t2","_t3","_t4","w","_context2","n","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","recursive","v","s","done","value","isFile","a","readFile","path","join","parentPath","name","includes","findLanguageDefinitionByPath","push","data","grammer","removeCommentsInSourceCode","e","f","length","forbiddenRegExpsInCode","RegExp","matchAll","toString","err","forbiddenTextsInCode","indexOf","decisionCode","DecisionCode","FORBIDDEN_PATTERNS_IN_CODE_ERROR","feedbackMarkdown","concat","map","requiredRegExpsInCode","_context","some","test","d","_regeneratorValues","REQUIRED_PATTERNS_IN_CODE_ERROR"],"mappings":"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"} |
| "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})}}; | ||
| //# sourceMappingURL=parseArgs.cjs.map |
| {"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"} |
| /** | ||
| * Parse command line arguments in `judge.ts` or `debug.ts`. | ||
| */ | ||
| export declare function parseArgs(argv: readonly string[]): { | ||
| params: unknown; | ||
| }; |
| 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}; | ||
| //# sourceMappingURL=parseArgs.js.map |
| {"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"} |
| "use strict";var t=require("../types/testCaseResult.cjs");exports.encodeFileForTestCaseResult=function(t,e){var s=e.toString("utf8");return s.includes("�")?{path:t,encoding:"base64",data:e.toString("base64")}:{path:t,data:s}},exports.printTestCaseResult=function(e){console.info("".concat(t.TEST_CASE_RESULT_PREFIX).concat(JSON.stringify(e)))}; | ||
| //# sourceMappingURL=printTestCaseResult.cjs.map |
| {"version":3,"file":"printTestCaseResult.cjs","sources":["../../src/helpers/printTestCaseResult.ts"],"sourcesContent":["import type { TestCaseResult } from '../types/testCaseResult.js';\nimport { TEST_CASE_RESULT_PREFIX } from '../types/testCaseResult.js';\n\n/**\n * Print a test case result in a format that can be read by the judge server.\n */\nexport function printTestCaseResult(result: TestCaseResult): void {\n console.info(`${TEST_CASE_RESULT_PREFIX}${JSON.stringify(result)}`);\n}\n\nexport function encodeFileForTestCaseResult(\n path: string,\n data: Buffer\n): NonNullable<TestCaseResult['outputFiles']>[number] {\n const utf8Text = data.toString('utf8');\n const isBinary = utf8Text.includes('\\uFFFD');\n return isBinary ? { path, encoding: 'base64', data: data.toString('base64') } : { path, data: utf8Text };\n}\n"],"names":["path","data","utf8Text","toString","includes","encoding","result","console","info","concat","TEST_CASE_RESULT_PREFIX","JSON","stringify"],"mappings":"8FAUO,SACLA,EACAC,GAEA,IAAMC,EAAWD,EAAKE,SAAS,QAE/B,OADiBD,EAASE,SAAS,KACjB,CAAEJ,KAAAA,EAAMK,SAAU,SAAUJ,KAAMA,EAAKE,SAAS,WAAc,CAAEH,KAAAA,EAAMC,KAAMC,EAChG,8BAXO,SAA6BI,GAClCC,QAAQC,KAAI,GAAAC,OAAIC,EAAAA,yBAAuBD,OAAGE,KAAKC,UAAUN,IAC3D"} |
| import type { TestCaseResult } from '../types/testCaseResult.js'; | ||
| /** | ||
| * Print a test case result in a format that can be read by the judge server. | ||
| */ | ||
| export declare function printTestCaseResult(result: TestCaseResult): void; | ||
| export declare function encodeFileForTestCaseResult(path: string, data: Buffer): NonNullable<TestCaseResult['outputFiles']>[number]; |
| import{TEST_CASE_RESULT_PREFIX as t}from"../types/testCaseResult.js";function n(n){console.info("".concat(t).concat(JSON.stringify(n)))}function o(t,n){var o=n.toString("utf8");return o.includes("�")?{path:t,encoding:"base64",data:n.toString("base64")}:{path:t,data:o}}export{o as encodeFileForTestCaseResult,n as printTestCaseResult}; | ||
| //# sourceMappingURL=printTestCaseResult.js.map |
| {"version":3,"file":"printTestCaseResult.js","sources":["../../src/helpers/printTestCaseResult.ts"],"sourcesContent":["import type { TestCaseResult } from '../types/testCaseResult.js';\nimport { TEST_CASE_RESULT_PREFIX } from '../types/testCaseResult.js';\n\n/**\n * Print a test case result in a format that can be read by the judge server.\n */\nexport function printTestCaseResult(result: TestCaseResult): void {\n console.info(`${TEST_CASE_RESULT_PREFIX}${JSON.stringify(result)}`);\n}\n\nexport function encodeFileForTestCaseResult(\n path: string,\n data: Buffer\n): NonNullable<TestCaseResult['outputFiles']>[number] {\n const utf8Text = data.toString('utf8');\n const isBinary = utf8Text.includes('\\uFFFD');\n return isBinary ? { path, encoding: 'base64', data: data.toString('base64') } : { path, data: utf8Text };\n}\n"],"names":["printTestCaseResult","result","console","info","concat","TEST_CASE_RESULT_PREFIX","JSON","stringify","encodeFileForTestCaseResult","path","data","utf8Text","toString","includes","encoding"],"mappings":"qEAMO,SAASA,EAAoBC,GAClCC,QAAQC,KAAI,GAAAC,OAAIC,GAAuBD,OAAGE,KAAKC,UAAUN,IAC3D,CAEO,SAASO,EACdC,EACAC,GAEA,IAAMC,EAAWD,EAAKE,SAAS,QAE/B,OADiBD,EAASE,SAAS,KACjB,CAAEJ,KAAAA,EAAMK,SAAU,SAAUJ,KAAMA,EAAKE,SAAS,WAAc,CAAEH,KAAAA,EAAMC,KAAMC,EAChG"} |
| "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),n=require("node:path"),a=require("./printTestCaseResult.cjs");function s(){return(s=e.asyncToGenerator(e.regenerator().m(function s(t,u){var i,c,o,p,l,f;return e.regenerator().w(function(s){for(;;)switch(s.p=s.n){case 0:i=[],c=e.createForOfIteratorHelper(u),s.p=1,c.s();case 2:if((o=c.n()).done){s.n=7;break}return p=o.value,s.p=3,s.n=4,r.promises.readFile(n.join(t,p));case 4:l=s.v,i.push(a.encodeFileForTestCaseResult(p,l)),s.n=6;break;case 5:s.p=5,s.v;case 6:s.n=2;break;case 7:s.n=9;break;case 8:s.p=8,f=s.v,c.e(f);case 9:return s.p=9,c.f(),s.f(9);case 10:return s.a(2,i)}},s,null,[[3,5],[1,8,9,10]])}))).apply(this,arguments)}exports.readOutputFiles=function(e,r){return s.apply(this,arguments)}; | ||
| //# sourceMappingURL=readOutputFiles.cjs.map |
| {"version":3,"file":"readOutputFiles.cjs","sources":["../../src/helpers/readOutputFiles.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nimport { encodeFileForTestCaseResult } from './printTestCaseResult.js';\n\nexport async function readOutputFiles(\n cwd: string,\n outputFilePaths: readonly string[]\n): Promise<NonNullable<TestCaseResult['outputFiles']>> {\n const outputFiles: NonNullable<TestCaseResult['outputFiles']> = [];\n for (const filePath of outputFilePaths) {\n try {\n const buffer = await fs.promises.readFile(path.join(cwd, filePath));\n outputFiles.push(encodeFileForTestCaseResult(filePath, buffer));\n } catch {\n // file not found\n }\n }\n return outputFiles;\n}\n"],"names":["_readOutputFiles","_asyncToGenerator","_regenerator","m","_callee","cwd","outputFilePaths","outputFiles","_iterator","_step","filePath","buffer","_t2","w","_context","p","n","_createForOfIteratorHelper","s","done","value","fs","promises","readFile","path","join","v","push","encodeFileForTestCaseResult","e","f","a","apply","this","arguments","_x","_x2"],"mappings":"2JAqBC,SAAAA,IAAA,OAAAA,EAAAC,EAAAA,iBAAAC,gBAAAC,EAdM,SAAAC,EACLC,EACAC,GAAkC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAV,gBAAAW,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAE5BT,EAA0D,GAAEC,EAAAS,EAAAA,0BAC3CX,GAAeQ,EAAAC,EAAA,EAAAP,EAAAU,IAAA,KAAA,EAAA,IAAAT,EAAAD,EAAAQ,KAAAG,KAAA,CAAAL,EAAAE,EAAA,EAAA,KAAA,CAAnB,OAARN,EAAQD,EAAAW,MAAAN,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAEMK,EAAGC,SAASC,SAASC,EAAKC,KAAKpB,EAAKK,IAAU,KAAA,EAA7DC,EAAMG,EAAAY,EACZnB,EAAYoB,KAAKC,EAAAA,4BAA4BlB,EAAUC,IAASG,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAD,EAAAY,EAAA,KAAA,EAAAZ,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAY,EAAAlB,EAAAqB,EAAAjB,GAAA,KAAA,EAAA,OAAAE,EAAAC,EAAA,EAAAP,EAAAsB,IAAAhB,EAAAgB,EAAA,GAAA,KAAA,GAAA,OAAAhB,EAAAiB,EAAA,EAK7DxB,GAAW,EAAAH,EAAA,KAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,EAAA,EAAA,KAAA,KACnB4B,MAAAC,KAAAC,UAAA,yBAdD,SAAqCC,EAAAC,GAAA,OAAApC,EAAAgC,MAAAC,KAAAC,UAAA"} |
| import type { TestCaseResult } from '../types/testCaseResult.js'; | ||
| export declare function readOutputFiles(cwd: string, outputFilePaths: readonly string[]): Promise<NonNullable<TestCaseResult['outputFiles']>>; |
| import{asyncToGenerator as e,regenerator as r,createForOfIteratorHelper as a}from"../_virtual/_rollupPluginBabelHelpers.js";import n from"node:fs";import t from"node:path";import{encodeFileForTestCaseResult as s}from"./printTestCaseResult.js";function o(e,r){return p.apply(this,arguments)}function p(){return(p=e(r().m(function e(o,p){var i,u,c,f,l,m;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:i=[],u=a(p),e.p=1,u.s();case 2:if((c=u.n()).done){e.n=7;break}return f=c.value,e.p=3,e.n=4,n.promises.readFile(t.join(o,f));case 4:l=e.v,i.push(s(f,l)),e.n=6;break;case 5:e.p=5,e.v;case 6:e.n=2;break;case 7:e.n=9;break;case 8:e.p=8,m=e.v,u.e(m);case 9:return e.p=9,u.f(),e.f(9);case 10:return e.a(2,i)}},e,null,[[3,5],[1,8,9,10]])}))).apply(this,arguments)}export{o as readOutputFiles}; | ||
| //# sourceMappingURL=readOutputFiles.js.map |
| {"version":3,"file":"readOutputFiles.js","sources":["../../src/helpers/readOutputFiles.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nimport { encodeFileForTestCaseResult } from './printTestCaseResult.js';\n\nexport async function readOutputFiles(\n cwd: string,\n outputFilePaths: readonly string[]\n): Promise<NonNullable<TestCaseResult['outputFiles']>> {\n const outputFiles: NonNullable<TestCaseResult['outputFiles']> = [];\n for (const filePath of outputFilePaths) {\n try {\n const buffer = await fs.promises.readFile(path.join(cwd, filePath));\n outputFiles.push(encodeFileForTestCaseResult(filePath, buffer));\n } catch {\n // file not found\n }\n }\n return outputFiles;\n}\n"],"names":["readOutputFiles","_x","_x2","_readOutputFiles","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","cwd","outputFilePaths","outputFiles","_iterator","_step","filePath","buffer","_t2","w","_context","p","n","_createForOfIteratorHelper","s","done","value","fs","promises","readFile","path","join","v","push","encodeFileForTestCaseResult","e","f","a"],"mappings":"mPAOA,SAAsBA,EAAeC,EAAAC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAcpC,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EAdM,SAAAC,EACLC,EACAC,GAAkC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAV,IAAAW,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAE5BT,EAA0D,GAAEC,EAAAS,EAC3CX,GAAeQ,EAAAC,EAAA,EAAAP,EAAAU,IAAA,KAAA,EAAA,IAAAT,EAAAD,EAAAQ,KAAAG,KAAA,CAAAL,EAAAE,EAAA,EAAA,KAAA,CAAnB,OAARN,EAAQD,EAAAW,MAAAN,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAEMK,EAAGC,SAASC,SAASC,EAAKC,KAAKpB,EAAKK,IAAU,KAAA,EAA7DC,EAAMG,EAAAY,EACZnB,EAAYoB,KAAKC,EAA4BlB,EAAUC,IAASG,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAD,EAAAY,EAAA,KAAA,EAAAZ,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAY,EAAAlB,EAAAqB,EAAAjB,GAAA,KAAA,EAAA,OAAAE,EAAAC,EAAA,EAAAP,EAAAsB,IAAAhB,EAAAgB,EAAA,GAAA,KAAA,GAAA,OAAAhB,EAAAiB,EAAA,EAK7DxB,GAAW,EAAAH,EAAA,KAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,EAAA,EAAA,KAAA,KACnBN,MAAAC,KAAAC,UAAA"} |
| "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),a=require("node:path"),n=require("front-matter"),t=require("../types/problem.cjs");function o(){return(o=e.asyncToGenerator(e.regenerator().m(function o(s){var i,u,c,p,l,f,m,d;return e.regenerator().w(function(o){for(;;)switch(o.p=o.n){case 0:return m=e.createForOfIteratorHelper,o.n=1,r.promises.readdir(s,{withFileTypes:!0});case 1:i=m(o.v),o.p=2,i.s();case 3:if((u=i.n()).done){o.n=8;break}if((c=u.value).isFile()){o.n=4;break}return o.a(3,7);case 4:if(c.name.endsWith(".problem.md")){o.n=5;break}return o.a(3,7);case 5:return o.n=6,r.promises.readFile(a.join(c.parentPath,c.name),"utf8");case 6:return p=o.v,l=n(p),f=l.attributes,o.a(2,t.problemMarkdownFrontMatterSchema.parse(f));case 7:o.n=3;break;case 8:o.n=10;break;case 9:o.p=9,d=o.v,i.e(d);case 10:return o.p=10,i.f(),o.f(10);case 11:throw new Error("problem markdown not found: ".concat(s));case 12:return o.a(2)}},o,null,[[2,9,10,11]])}))).apply(this,arguments)}exports.readProblemMarkdownFrontMatter=function(e){return o.apply(this,arguments)}; | ||
| //# sourceMappingURL=readProblemMarkdownFrontMatter.cjs.map |
| {"version":3,"file":"readProblemMarkdownFrontMatter.cjs","sources":["../../src/helpers/readProblemMarkdownFrontMatter.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport parseFrontMatter from 'front-matter';\n\nimport type { ProblemMarkdownFrontMatter } from '../types/problem.js';\nimport { problemMarkdownFrontMatterSchema } from '../types/problem.js';\n\nexport async function readProblemMarkdownFrontMatter(problemDir: string): Promise<ProblemMarkdownFrontMatter> {\n for (const dirent of await fs.promises.readdir(problemDir, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n if (!dirent.name.endsWith('.problem.md')) continue;\n\n const markdown = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n const { attributes } = (parseFrontMatter as unknown as (markdown: string) => { attributes: unknown })(markdown);\n\n return problemMarkdownFrontMatterSchema.parse(attributes);\n }\n\n throw new Error(`problem markdown not found: ${problemDir}`);\n}\n"],"names":["_readProblemMarkdownFrontMatter","_asyncToGenerator","_regenerator","m","_callee","problemDir","_iterator","_step","dirent","markdown","_ref","attributes","_t","_t2","w","_context","p","n","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","a","name","endsWith","readFile","path","join","parentPath","parseFrontMatter","problemMarkdownFrontMatterSchema","parse","e","f","Error","concat","apply","this","arguments","_x"],"mappings":"gLAqBC,SAAAA,IAAA,OAAAA,EAAAC,EAAAA,iBAAAC,EAAAA,cAAAC,EAbM,SAAAC,EAA8CC,GAAkB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAX,gBAAAY,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAAA,OAAAL,EAAAM,EAAAA,0BAAAH,EAAAE,EAAA,EAC1CE,EAAGC,SAASC,QAAQhB,EAAY,CAAEiB,eAAe,IAAO,KAAA,EAAAhB,EAAAM,EAAAG,EAAAQ,GAAAR,EAAAC,EAAA,EAAAV,EAAAkB,IAAA,KAAA,EAAA,IAAAjB,EAAAD,EAAAW,KAAAQ,KAAA,CAAAV,EAAAE,EAAA,EAAA,KAAA,CAAlE,IAANT,EAAMD,EAAAmB,OACHC,SAAQ,CAAAZ,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAa,EAAA,EAAA,GAAA,KAAA,EAAA,GACfpB,EAAOqB,KAAKC,SAAS,eAAc,CAAAf,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAa,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAb,EAAAE,EAAA,EAEjBE,EAAGC,SAASW,SAASC,EAAKC,KAAKzB,EAAO0B,WAAY1B,EAAOqB,MAAO,QAAO,KAAA,EAE5E,OAFZpB,EAAQM,EAAAQ,EAAAb,EAEUyB,EAA8E1B,GAA9FE,EAAUD,EAAVC,WAAUI,EAAAa,EAAA,EAEXQ,EAAAA,iCAAiCC,MAAM1B,IAAW,KAAA,EAAAI,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAQ,EAAAjB,EAAAgC,EAAAzB,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAV,EAAAiC,IAAAxB,EAAAwB,EAAA,IAAA,KAAA,GAAA,MAGrD,IAAIC,MAAK,+BAAAC,OAAgCpC,IAAa,KAAA,GAAA,OAAAU,EAAAa,EAAA,GAAA,EAAAxB,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,KAAA,KAC7DsC,MAAAC,KAAAC,UAAA,wCAbD,SAAoDC,GAAA,OAAA7C,EAAA0C,MAAAC,KAAAC,UAAA"} |
| import type { ProblemMarkdownFrontMatter } from '../types/problem.js'; | ||
| export declare function readProblemMarkdownFrontMatter(problemDir: string): Promise<ProblemMarkdownFrontMatter>; |
| import{asyncToGenerator as r,regenerator as e,createForOfIteratorHelper as a}from"../_virtual/_rollupPluginBabelHelpers.js";import n from"node:fs";import t from"node:path";import o from"front-matter";import{problemMarkdownFrontMatterSchema as s}from"../types/problem.js";function i(r){return p.apply(this,arguments)}function p(){return(p=r(e().m(function r(i){var p,u,c,m,f,l,b,d;return e().w(function(r){for(;;)switch(r.p=r.n){case 0:return b=a,r.n=1,n.promises.readdir(i,{withFileTypes:!0});case 1:p=b(r.v),r.p=2,p.s();case 3:if((u=p.n()).done){r.n=8;break}if((c=u.value).isFile()){r.n=4;break}return r.a(3,7);case 4:if(c.name.endsWith(".problem.md")){r.n=5;break}return r.a(3,7);case 5:return r.n=6,n.promises.readFile(t.join(c.parentPath,c.name),"utf8");case 6:return m=r.v,f=o(m),l=f.attributes,r.a(2,s.parse(l));case 7:r.n=3;break;case 8:r.n=10;break;case 9:r.p=9,d=r.v,p.e(d);case 10:return r.p=10,p.f(),r.f(10);case 11:throw new Error("problem markdown not found: ".concat(i));case 12:return r.a(2)}},r,null,[[2,9,10,11]])}))).apply(this,arguments)}export{i as readProblemMarkdownFrontMatter}; | ||
| //# sourceMappingURL=readProblemMarkdownFrontMatter.js.map |
| {"version":3,"file":"readProblemMarkdownFrontMatter.js","sources":["../../src/helpers/readProblemMarkdownFrontMatter.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport parseFrontMatter from 'front-matter';\n\nimport type { ProblemMarkdownFrontMatter } from '../types/problem.js';\nimport { problemMarkdownFrontMatterSchema } from '../types/problem.js';\n\nexport async function readProblemMarkdownFrontMatter(problemDir: string): Promise<ProblemMarkdownFrontMatter> {\n for (const dirent of await fs.promises.readdir(problemDir, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n if (!dirent.name.endsWith('.problem.md')) continue;\n\n const markdown = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n const { attributes } = (parseFrontMatter as unknown as (markdown: string) => { attributes: unknown })(markdown);\n\n return problemMarkdownFrontMatterSchema.parse(attributes);\n }\n\n throw new Error(`problem markdown not found: ${problemDir}`);\n}\n"],"names":["readProblemMarkdownFrontMatter","_x","_readProblemMarkdownFrontMatter","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","problemDir","_iterator","_step","dirent","markdown","_ref","attributes","_t","_t2","w","_context","p","n","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","a","name","endsWith","readFile","path","join","parentPath","parseFrontMatter","problemMarkdownFrontMatterSchema","parse","e","f","Error","concat"],"mappings":"+QAQA,SAAsBA,EAA8BC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAanD,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EAbM,SAAAC,EAA8CC,GAAkB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAX,IAAAY,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAAA,OAAAL,EAAAM,EAAAH,EAAAE,EAAA,EAC1CE,EAAGC,SAASC,QAAQhB,EAAY,CAAEiB,eAAe,IAAO,KAAA,EAAAhB,EAAAM,EAAAG,EAAAQ,GAAAR,EAAAC,EAAA,EAAAV,EAAAkB,IAAA,KAAA,EAAA,IAAAjB,EAAAD,EAAAW,KAAAQ,KAAA,CAAAV,EAAAE,EAAA,EAAA,KAAA,CAAlE,IAANT,EAAMD,EAAAmB,OACHC,SAAQ,CAAAZ,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAa,EAAA,EAAA,GAAA,KAAA,EAAA,GACfpB,EAAOqB,KAAKC,SAAS,eAAc,CAAAf,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAa,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAb,EAAAE,EAAA,EAEjBE,EAAGC,SAASW,SAASC,EAAKC,KAAKzB,EAAO0B,WAAY1B,EAAOqB,MAAO,QAAO,KAAA,EAE5E,OAFZpB,EAAQM,EAAAQ,EAAAb,EAEUyB,EAA8E1B,GAA9FE,EAAUD,EAAVC,WAAUI,EAAAa,EAAA,EAEXQ,EAAiCC,MAAM1B,IAAW,KAAA,EAAAI,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAQ,EAAAjB,EAAAgC,EAAAzB,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAV,EAAAiC,IAAAxB,EAAAwB,EAAA,IAAA,KAAA,GAAA,MAGrD,IAAIC,MAAK,+BAAAC,OAAgCpC,IAAa,KAAA,GAAA,OAAAU,EAAAa,EAAA,GAAA,EAAAxB,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,KAAA,KAC7DN,MAAAC,KAAAC,UAAA"} |
| "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,i,u,o,c,p,l,f,d,m,b,v;return e.regenerator().w(function(a){for(;;)switch(a.p=a.n){case 0:return s=new Set,i=new Map,u=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((c=o.n()).done){a.n=8;break}if((p=c.value).isFile()){a.n=4;break}return a.a(3,7);case 4:if(l=n.parse(p.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(p.parentPath,p.name),"utf8");case 6:m=a.v,s.add(d),".in"===f&&i.set(d,m),".out"===f&&u.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,stdin:i.get(e),stdout:u.get(e)}}))}},a,null,[[2,9,10,11]])}))).apply(this,arguments)}exports.readTestCases=function(e){return a.apply(this,arguments)}; | ||
| //# sourceMappingURL=readTestCases.cjs.map |
| {"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; stdin?: string; stdout?: string }[]> {\n const idSet = new Set<string>();\n const idToStdin = new Map<string, string>();\n const idToStdout = 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') idToStdin.set(name, text);\n if (ext === '.out') idToStdout.set(name, text);\n }\n\n return [...idSet].toSorted().map((id) => ({ id, stdin: idToStdin.get(id), stdout: idToStdout.get(id) }));\n}\n"],"names":["_readTestCases","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToStdin","idToStdout","_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","stdin","get","stdout","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"} |
| export declare function readTestCases(directory: string): Promise<{ | ||
| id: string; | ||
| stdin?: string; | ||
| stdout?: string; | ||
| }[]>; |
| 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,stdin:u.get(e),stdout:p.get(e)}}))}},e,null,[[2,9,10,11]])}))).apply(this,arguments)}export{o as readTestCases}; | ||
| //# sourceMappingURL=readTestCases.js.map |
| {"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; stdin?: string; stdout?: string }[]> {\n const idSet = new Set<string>();\n const idToStdin = new Map<string, string>();\n const idToStdout = 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') idToStdin.set(name, text);\n if (ext === '.out') idToStdout.set(name, text);\n }\n\n return [...idSet].toSorted().map((id) => ({ id, stdin: idToStdin.get(id), stdout: idToStdout.get(id) }));\n}\n"],"names":["readTestCases","_x","_readTestCases","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToStdin","idToStdout","_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","stdin","get","stdout"],"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"} |
| "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs");exports.removeCommentsInSourceCode=function(n,t){var r;if(null==(r=n.comments)||!r.length)return t;for(var l=[],o=0;o<t.length;){for(var s=void 0,a=0,i=[].concat(e.toConsumableArray(n.comments.map(function(n){return e.objectSpread2({isComment:!0},n)})),e.toConsumableArray(null!=(m=null==(c=n.strings)?void 0:c.map(function(n){return e.objectSpread2({isComment:!1},n)}))?m:[]));a<i.length;a++){var m,c,u=i[a],g=new RegExp(u.open,"g");g.lastIndex=o;var h=g.exec(t);h&&(!s||h.index<s.match.index)&&(s={match:h,closeRegExp:u.close,isComment:u.isComment})}if(s){var p;l.push(t.slice(o,s.match.index));var x=new RegExp(null!=(p=s.closeRegExp)?p:/(?=\n)/g,"g");x.lastIndex=s.match.index+s.match[0].length;var d=x.exec(t);o=d?d.index+d[0].length:t.length,s.isComment||l.push(t.slice(s.match.index,o))}else l.push(t.slice(o)),o=t.length}return l.join("")}; | ||
| //# sourceMappingURL=removeCommentsInSourceCode.cjs.map |
| {"version":3,"file":"removeCommentsInSourceCode.cjs","sources":["../../src/helpers/removeCommentsInSourceCode.ts"],"sourcesContent":["import type { LanguageDefinition } from '../types/language.js';\n\nexport function removeCommentsInSourceCode(\n grammer: NonNullable<LanguageDefinition['grammer']>,\n sourceCode: string\n): string {\n if (!grammer.comments?.length) return sourceCode;\n\n const newSourceCodeSlices: string[] = [];\n\n let lastIndex = 0;\n\n while (lastIndex < sourceCode.length) {\n let first: { match: RegExpExecArray; closeRegExp: RegExp | undefined; isComment: boolean } | undefined;\n\n for (const commentOrStringGrammer of [\n ...grammer.comments.map((v) => ({ isComment: true, ...v })),\n ...(grammer.strings?.map((v) => ({ isComment: false, ...v })) ?? []),\n ]) {\n const startRegExp = new RegExp(commentOrStringGrammer.open, 'g');\n startRegExp.lastIndex = lastIndex;\n\n const match = startRegExp.exec(sourceCode);\n\n if (match && (!first || match.index < first.match.index)) {\n first = { match, closeRegExp: commentOrStringGrammer.close, isComment: commentOrStringGrammer.isComment };\n }\n }\n\n if (first) {\n newSourceCodeSlices.push(sourceCode.slice(lastIndex, first.match.index));\n\n const closeRegExp = new RegExp(first.closeRegExp ?? /(?=\\n)/g, 'g');\n closeRegExp.lastIndex = first.match.index + first.match[0].length;\n\n const match = closeRegExp.exec(sourceCode);\n\n lastIndex = match ? match.index + match[0].length : sourceCode.length;\n if (!first.isComment) newSourceCodeSlices.push(sourceCode.slice(first.match.index, lastIndex));\n } else {\n newSourceCodeSlices.push(sourceCode.slice(lastIndex));\n lastIndex = sourceCode.length;\n }\n }\n\n return newSourceCodeSlices.join('');\n}\n"],"names":["grammer","sourceCode","_grammer$comments","comments","length","newSourceCodeSlices","lastIndex","first","_i","_arr","concat","_toConsumableArray","map","v","_objectSpread","isComment","_grammer$strings$map","_grammer$strings","strings","commentOrStringGrammer","startRegExp","RegExp","open","match","exec","index","closeRegExp","close","_first$closeRegExp","push","slice","join"],"mappings":"2GAEO,SACLA,EACAC,GACQ,IAAAC,EACR,GAAqB,OAAjBA,EAACF,EAAQG,YAARD,EAAkBE,OAAQ,OAAOH,EAMtC,IAJA,IAAMI,EAAgC,GAElCC,EAAY,EAETA,EAAYL,EAAWG,QAAQ,CAGpC,IAFA,IAAIG,OAAkG,EAEtGC,EAAA,EAAAC,EAAA,GAAAC,OAAAC,EAAAA,kBACKX,EAAQG,SAASS,IAAI,SAACC,GAAC,OAAAC,gBAAA,CAAQC,WAAW,GAASF,EAAC,IAAIF,EAAAA,kBACE,OADFK,EACxC,OADwCC,EACvDjB,EAAQkB,cAAO,EAAfD,EAAiBL,IAAI,SAACC,GAAC,OAAAC,gBAAA,CAAQC,WAAW,GAAUF,EAAC,IAAIG,EAAI,KAAER,EAAAC,EAAAL,OAAAI,IAClE,CAAA,IAAAQ,EAAAC,EAHQE,EAAsBV,EAAAD,GAIzBY,EAAc,IAAIC,OAAOF,EAAuBG,KAAM,KAC5DF,EAAYd,UAAYA,EAExB,IAAMiB,EAAQH,EAAYI,KAAKvB,GAE3BsB,KAAWhB,GAASgB,EAAME,MAAQlB,EAAMgB,MAAME,SAChDlB,EAAQ,CAAEgB,MAAAA,EAAOG,YAAaP,EAAuBQ,MAAOZ,UAAWI,EAAuBJ,WAElG,CAEA,GAAIR,EAAO,CAAA,IAAAqB,EACTvB,EAAoBwB,KAAK5B,EAAW6B,MAAMxB,EAAWC,EAAMgB,MAAME,QAEjE,IAAMC,EAAc,IAAIL,cAAMO,EAACrB,EAAMmB,aAAWE,EAAI,UAAW,KAC/DF,EAAYpB,UAAYC,EAAMgB,MAAME,MAAQlB,EAAMgB,MAAM,GAAGnB,OAE3D,IAAMmB,EAAQG,EAAYF,KAAKvB,GAE/BK,EAAYiB,EAAQA,EAAME,MAAQF,EAAM,GAAGnB,OAASH,EAAWG,OAC1DG,EAAMQ,WAAWV,EAAoBwB,KAAK5B,EAAW6B,MAAMvB,EAAMgB,MAAME,MAAOnB,GACrF,MACED,EAAoBwB,KAAK5B,EAAW6B,MAAMxB,IAC1CA,EAAYL,EAAWG,MAE3B,CAEA,OAAOC,EAAoB0B,KAAK,GAClC"} |
| import type { LanguageDefinition } from '../types/language.js'; | ||
| export declare function removeCommentsInSourceCode(grammer: NonNullable<LanguageDefinition['grammer']>, sourceCode: string): string; |
| import{toConsumableArray as e,objectSpread2 as n}from"../_virtual/_rollupPluginBabelHelpers.js";function t(t,l){var r;if(null==(r=t.comments)||!r.length)return l;for(var o=[],a=0;a<l.length;){for(var i=void 0,s=0,m=[].concat(e(t.comments.map(function(e){return n({isComment:!0},e)})),e(null!=(c=null==(u=t.strings)?void 0:u.map(function(e){return n({isComment:!1},e)}))?c:[]));s<m.length;s++){var c,u,g=m[s],h=new RegExp(g.open,"g");h.lastIndex=a;var p=h.exec(l);p&&(!i||p.index<i.match.index)&&(i={match:p,closeRegExp:g.close,isComment:g.isComment})}if(i){var x;o.push(l.slice(a,i.match.index));var d=new RegExp(null!=(x=i.closeRegExp)?x:/(?=\n)/g,"g");d.lastIndex=i.match.index+i.match[0].length;var v=d.exec(l);a=v?v.index+v[0].length:l.length,i.isComment||o.push(l.slice(i.match.index,a))}else o.push(l.slice(a)),a=l.length}return o.join("")}export{t as removeCommentsInSourceCode}; | ||
| //# sourceMappingURL=removeCommentsInSourceCode.js.map |
| {"version":3,"file":"removeCommentsInSourceCode.js","sources":["../../src/helpers/removeCommentsInSourceCode.ts"],"sourcesContent":["import type { LanguageDefinition } from '../types/language.js';\n\nexport function removeCommentsInSourceCode(\n grammer: NonNullable<LanguageDefinition['grammer']>,\n sourceCode: string\n): string {\n if (!grammer.comments?.length) return sourceCode;\n\n const newSourceCodeSlices: string[] = [];\n\n let lastIndex = 0;\n\n while (lastIndex < sourceCode.length) {\n let first: { match: RegExpExecArray; closeRegExp: RegExp | undefined; isComment: boolean } | undefined;\n\n for (const commentOrStringGrammer of [\n ...grammer.comments.map((v) => ({ isComment: true, ...v })),\n ...(grammer.strings?.map((v) => ({ isComment: false, ...v })) ?? []),\n ]) {\n const startRegExp = new RegExp(commentOrStringGrammer.open, 'g');\n startRegExp.lastIndex = lastIndex;\n\n const match = startRegExp.exec(sourceCode);\n\n if (match && (!first || match.index < first.match.index)) {\n first = { match, closeRegExp: commentOrStringGrammer.close, isComment: commentOrStringGrammer.isComment };\n }\n }\n\n if (first) {\n newSourceCodeSlices.push(sourceCode.slice(lastIndex, first.match.index));\n\n const closeRegExp = new RegExp(first.closeRegExp ?? /(?=\\n)/g, 'g');\n closeRegExp.lastIndex = first.match.index + first.match[0].length;\n\n const match = closeRegExp.exec(sourceCode);\n\n lastIndex = match ? match.index + match[0].length : sourceCode.length;\n if (!first.isComment) newSourceCodeSlices.push(sourceCode.slice(first.match.index, lastIndex));\n } else {\n newSourceCodeSlices.push(sourceCode.slice(lastIndex));\n lastIndex = sourceCode.length;\n }\n }\n\n return newSourceCodeSlices.join('');\n}\n"],"names":["removeCommentsInSourceCode","grammer","sourceCode","_grammer$comments","comments","length","newSourceCodeSlices","lastIndex","first","_i","_arr","concat","_toConsumableArray","map","v","_objectSpread","isComment","_grammer$strings$map","_grammer$strings","strings","commentOrStringGrammer","startRegExp","RegExp","open","match","exec","index","closeRegExp","close","_first$closeRegExp","push","slice","join"],"mappings":"gGAEO,SAASA,EACdC,EACAC,GACQ,IAAAC,EACR,GAAqB,OAAjBA,EAACF,EAAQG,YAARD,EAAkBE,OAAQ,OAAOH,EAMtC,IAJA,IAAMI,EAAgC,GAElCC,EAAY,EAETA,EAAYL,EAAWG,QAAQ,CAGpC,IAFA,IAAIG,OAAkG,EAEtGC,EAAA,EAAAC,EAAA,GAAAC,OAAAC,EACKX,EAAQG,SAASS,IAAI,SAACC,GAAC,OAAAC,EAAA,CAAQC,WAAW,GAASF,EAAC,IAAIF,EACE,OADFK,EACxC,OADwCC,EACvDjB,EAAQkB,cAAO,EAAfD,EAAiBL,IAAI,SAACC,GAAC,OAAAC,EAAA,CAAQC,WAAW,GAAUF,EAAC,IAAIG,EAAI,KAAER,EAAAC,EAAAL,OAAAI,IAClE,CAAA,IAAAQ,EAAAC,EAHQE,EAAsBV,EAAAD,GAIzBY,EAAc,IAAIC,OAAOF,EAAuBG,KAAM,KAC5DF,EAAYd,UAAYA,EAExB,IAAMiB,EAAQH,EAAYI,KAAKvB,GAE3BsB,KAAWhB,GAASgB,EAAME,MAAQlB,EAAMgB,MAAME,SAChDlB,EAAQ,CAAEgB,MAAAA,EAAOG,YAAaP,EAAuBQ,MAAOZ,UAAWI,EAAuBJ,WAElG,CAEA,GAAIR,EAAO,CAAA,IAAAqB,EACTvB,EAAoBwB,KAAK5B,EAAW6B,MAAMxB,EAAWC,EAAMgB,MAAME,QAEjE,IAAMC,EAAc,IAAIL,cAAMO,EAACrB,EAAMmB,aAAWE,EAAI,UAAW,KAC/DF,EAAYpB,UAAYC,EAAMgB,MAAME,MAAQlB,EAAMgB,MAAM,GAAGnB,OAE3D,IAAMmB,EAAQG,EAAYF,KAAKvB,GAE/BK,EAAYiB,EAAQA,EAAME,MAAQF,EAAM,GAAGnB,OAASH,EAAWG,OAC1DG,EAAMQ,WAAWV,EAAoBwB,KAAK5B,EAAW6B,MAAMvB,EAAMgB,MAAME,MAAOnB,GACrF,MACED,EAAoBwB,KAAK5B,EAAW6B,MAAMxB,IAC1CA,EAAYL,EAAWG,MAE3B,CAEA,OAAOC,EAAoB0B,KAAK,GAClC"} |
| "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:child_process"),t=["darwin"===require("node:os").platform()?"gtime":"/usr/bin/time","--format","%e %M"];exports.spawnSyncWithTimeout=function(o,s,d,i){var n=Date.now(),a=r.spawnSync("timeout",[i.toFixed(3)].concat(t,[o],e.toConsumableArray(s)),d),u=Date.now(),c=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(a.stderr),m=c?a.stderr.slice(0,c.index):a.stderr,l=Number(null==c?void 0:c[1])||(u-n)/1e3,p=1024*Number(null==c?void 0:c[2])||0;return 124===a.status?e.objectSpread2(e.objectSpread2({},a),{},{status:0,stderr:m,timeSeconds:i+.001,memoryBytes:p}):e.objectSpread2(e.objectSpread2({},a),{},{stderr:m,timeSeconds:l,memoryBytes:p})}; | ||
| //# sourceMappingURL=spawnSyncWithTimeout.cjs.map |
| {"version":3,"file":"spawnSyncWithTimeout.cjs","sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"names":["TIME_COMMAND","platform","command","args","options","timeoutSeconds","startTimeMilliseconds","Date","now","spawnResult","child_process","spawnSync","toFixed","concat","_toConsumableArray","stopTimeMilliseconds","match","exec","stderr","slice","index","timeSeconds","Number","memoryBytes","status","_objectSpread"],"mappings":"wGAGMA,EAAe,CAAmB,8BAAfC,WAA0B,QAAU,gBAAiB,WAAY,sCAEnF,SACLC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAwBC,KAAKC,MAE7BC,EAAcC,EAAcC,UAChC,UAAS,CACRN,EAAeO,QAAQ,IAAEC,OAAKb,EAAY,CAAEE,GAAOY,EAAAA,kBAAKX,IACzDC,GAGIW,EAAuBR,KAAKC,MAE5BQ,EAAQ,+BAA+BC,KAAKR,EAAYS,QACxDA,EAASF,EAAQP,EAAYS,OAAOC,MAAM,EAAGH,EAAMI,OAASX,EAAYS,OACxEG,EAAcC,aAAON,SAAAA,EAAQ,MAAQD,EAAuBT,GAAyB,IACrFiB,EAAmC,KAArBD,OAAY,MAALN,OAAK,EAALA,EAAQ,KAAc,EAGjD,OAA2B,MAAvBP,EAAYe,OACdC,EAAAA,cAAAA,EAAAA,cAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAEe,OAAQ,EAAGN,OAAAA,EAAQG,YAAahB,EAAiB,KAAMkB,YAAAA,IAGlFE,EAAAA,cAAAA,EAAAA,cAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAES,OAAAA,EAAQG,YAAAA,EAAaE,YAAAA,GAChD"} |
| import child_process from 'node:child_process'; | ||
| export declare function spawnSyncWithTimeout(command: string, args: readonly string[], options: child_process.SpawnSyncOptionsWithStringEncoding, timeoutSeconds: number): child_process.SpawnSyncReturns<string> & { | ||
| timeSeconds: number; | ||
| memoryBytes: number; | ||
| }; |
| import{toConsumableArray as e,objectSpread2 as r}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:child_process";import o from"node:os";var s=["darwin"===o.platform()?"gtime":"/usr/bin/time","--format","%e %M"];function m(o,m,n,d){var i=Date.now(),a=t.spawnSync("timeout",[d.toFixed(3)].concat(s,[o],e(m)),n),l=Date.now(),u=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(a.stderr),c=u?a.stderr.slice(0,u.index):a.stderr,p=Number(null==u?void 0:u[1])||(l-i)/1e3,b=1024*Number(null==u?void 0:u[2])||0;return 124===a.status?r(r({},a),{},{status:0,stderr:c,timeSeconds:d+.001,memoryBytes:b}):r(r({},a),{},{stderr:c,timeSeconds:p,memoryBytes:b})}export{m as spawnSyncWithTimeout}; | ||
| //# sourceMappingURL=spawnSyncWithTimeout.js.map |
| {"version":3,"file":"spawnSyncWithTimeout.js","sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"names":["TIME_COMMAND","os","platform","spawnSyncWithTimeout","command","args","options","timeoutSeconds","startTimeMilliseconds","Date","now","spawnResult","child_process","spawnSync","toFixed","concat","_toConsumableArray","stopTimeMilliseconds","match","exec","stderr","slice","index","timeSeconds","Number","memoryBytes","status","_objectSpread"],"mappings":"yJAGA,IAAMA,EAAe,CAAmB,WAAlBC,EAAGC,WAA0B,QAAU,gBAAiB,WAAY,SAEnF,SAASC,EACdC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAwBC,KAAKC,MAE7BC,EAAcC,EAAcC,UAChC,UAAS,CACRN,EAAeO,QAAQ,IAAEC,OAAKf,EAAY,CAAEI,GAAOY,EAAKX,IACzDC,GAGIW,EAAuBR,KAAKC,MAE5BQ,EAAQ,+BAA+BC,KAAKR,EAAYS,QACxDA,EAASF,EAAQP,EAAYS,OAAOC,MAAM,EAAGH,EAAMI,OAASX,EAAYS,OACxEG,EAAcC,aAAON,SAAAA,EAAQ,MAAQD,EAAuBT,GAAyB,IACrFiB,EAAmC,KAArBD,OAAY,MAALN,OAAK,EAALA,EAAQ,KAAc,EAGjD,OAA2B,MAAvBP,EAAYe,OACdC,EAAAA,EAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAEe,OAAQ,EAAGN,OAAAA,EAAQG,YAAahB,EAAiB,KAAMkB,YAAAA,IAGlFE,EAAAA,EAAA,CAAA,EAAYhB,GAAW,CAAA,EAAA,CAAES,OAAAA,EAAQG,YAAAA,EAAaE,YAAAA,GAChD"} |
| "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.stdin,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.stdout)?H:"")||(se=C.DecisionCode.WRONG_ANSWER),a.printTestCaseResult({testCaseId:J.id,decisionCode:se,exitStatus:null!=(V=ee.status)?V:void 0,stdin:J.stdin,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)}; | ||
| //# sourceMappingURL=stdio.cjs.map |
| {"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.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 } else if (!compareStdoutAsSpaceSeparatedTokens(spawnResult.stdout, testCase.stdout ?? '')) {\n decisionCode = DecisionCode.WRONG_ANSWER;\n }\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode,\n exitStatus: spawnResult.status ?? undefined,\n stdin: testCase.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 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$stdout","_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","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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"} |
| /** | ||
| * A preset judge function using stdin and stdout as test cases. | ||
| * | ||
| * @example | ||
| * Create `judge.ts`: | ||
| * ```ts | ||
| * import { stdioJudgePreset } from 'judge-utils/presets/stdio'; | ||
| * | ||
| * await stdioJudgePreset(import.meta.dirname); | ||
| * ``` | ||
| * | ||
| * Run with the required parameters: | ||
| * ```bash | ||
| * bun judge.ts '{ "cwd": "model_answers/java" }' | ||
| * ``` | ||
| */ | ||
| export declare function stdioJudgePreset(problemDir: string): Promise<void>; | ||
| /** | ||
| * A preset debug function using stdin and stdout as test cases. | ||
| * | ||
| * @example | ||
| * Create `debug.ts`: | ||
| * ```ts | ||
| * import { stdioDebugPreset } from 'judge-utils/presets/stdio'; | ||
| * | ||
| * await stdioDebugPreset(import.meta.dirname); | ||
| * ``` | ||
| * | ||
| * Run with the required parameters: | ||
| * ```bash | ||
| * bun debug.ts '{ "cwd": "model_answers/java", "stdin": "1 2" }' | ||
| * ``` | ||
| */ | ||
| export declare function stdioDebugPreset(problemDir: string): Promise<void>; |
| 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:$.stdin,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=$.stdout)?J:"")||(ne=g.WRONG_ANSWER),c({testCaseId:$.id,decisionCode:ne,exitStatus:null!=(K=re.status)?K:void 0,stdin:$.stdin,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}; | ||
| //# sourceMappingURL=stdio.js.map |
| {"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.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 } else if (!compareStdoutAsSpaceSeparatedTokens(spawnResult.stdout, testCase.stdout ?? '')) {\n decisionCode = DecisionCode.WRONG_ANSWER;\n }\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode,\n exitStatus: spawnResult.status ?? undefined,\n stdin: testCase.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 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$stdout","_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","e","f","stdioDebugPreset","_x2","_stdioDebugPreset","_callee2","_buildSpawnResult$sta2","_problemMarkdownFront5","_problemMarkdownFront6","_problemMarkdownFront7","_problemMarkdownFront8","_problemMarkdownFront9","_spawnResult$status2","_decisionCode2","_t4","_t5","_context2","Math","max"],"mappings":"4+BAgBA,IAIMA,EAAoB,IAEpBC,EAAoBC,EAAEC,OAAO,CACjCC,IAAKF,EAAEG,SACPC,SAAUJ,EAAEK,MAAM,CAACL,EAAEG,SAAUH,EAAEM,MAAMN,EAAEG,YAAYI,aAGjDC,EAAoBT,EAAkBU,OAAO,CACjDC,MAAOV,EAAEG,SAASI,aAmBpB,SAAsBI,EAAgBC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAyJtC,SAAAH,IAFC,OAEDA,EAAAI,EAAAC,IAAAC,EAzJO,SAAAC,EAAgCC,GAAkB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA,OAAA9C,IAAA+C,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAEJ,OAD7C9C,EAAO+C,EAAUC,QAAQC,MACzBhD,EAASxB,EAAkByE,MAAMlD,EAAKC,QAAO2C,EAAAE,EAAA,EAEVK,EAA+BpD,GAAW,KAAA,EAAnD,OAA1BG,EAA0B0C,EAAAQ,EAAAR,EAAAE,EAAA,EACRO,EAAcC,EAAKC,KAAKxD,EAAY,eAAc,KAAA,EAA3D,OAATI,EAASyC,EAAAQ,EAAAR,EAAAE,EAAA,EAE4BU,EAAsBvD,EAAOrB,IAAKsB,GAA2B,KAAA,EAAtE,KAA5BE,EAA4BwC,EAAAQ,GACF,CAAAR,EAAAE,EAAA,EAAA,KAAA,CACuE,OAArGW,EAAmBC,EAAA,CAAGC,WAA4B,OAAlBtD,SAAAC,EAAEH,EAAU,WAAVG,EAAcsD,IAAEvD,EAAI,YAAeD,IAAgCwC,EAAAiB,EAAA,GAAA,KAAA,EAAA,OAAAjB,EAAAE,EAAA,EAIpEgB,EAAmB7D,EAAOrB,IAAKqB,EAAOnB,UAAS,KAAA,EAAxD,GAApByB,EAAoBqC,EAAAQ,EACD,CAAAR,EAAAE,EAAA,EAAA,KAAA,CAKpB,OAJHW,EAAoB,CAClBE,WAA4B,OAAlBnD,EAAc,OAAdC,EAAEN,EAAU,SAAE,EAAZM,EAAcmD,IAAEpD,EAAI,WAChCY,aAAc2C,EAAaC,uCAC3BC,OAAM,sBAAAC,OAAwBjE,EAAOnB,SAAQ,eAAAoF,OAAkBjE,EAAOnB,UAAa,MAClF8D,EAAAiB,EAAA,GAAA,KAAA,EAIwE,GAAvEnD,EAAqByD,EAA6B5D,GACjC,CAAAqC,EAAAE,EAAA,EAAA,KAAA,CAKlB,OAJHW,EAAoB,CAClBE,WAA4B,OAAlBhD,EAAc,OAAdC,EAAET,EAAU,SAAE,EAAZS,EAAcgD,IAAEjD,EAAI,WAChCS,aAAc2C,EAAaK,aAC3BH,OAAQ,yBACPrB,EAAAiB,EAAA,GAAA,KAAA,EAKiD,GAAhDhD,EAAG6C,EAAAA,EAAA,CAAA,EAAQV,QAAQnC,KAAG,GAAA,CAAEwD,GAAI,GAAIC,YAAa,OAI/C5D,EAAmB6D,SAAQ,CAAA3B,EAAAE,EAAA,GAAA,KAAA,CAAA,OAAAF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAErBpC,EAAmB6D,SAAStE,EAAOrB,KAAI,KAAA,EAAA,OAAAgE,EAAAE,EAAA,GAChBgB,EAAmB7D,EAAOrB,IAAKqB,EAAOnB,UAAS,KAAA,GAA5EgC,EAAoB8B,EAAAQ,EAAAR,EAAAE,EAAA,GAAA,MAAA,KAAA,GAQjB,OARiBF,EAAAC,EAAA,GAAAL,GAAAI,EAAAQ,EAEpBoB,QAAQC,MAAM,iBAAgBjC,IAE9BiB,EAAoB,CAClBE,WAA4B,OAAlB5C,EAAc,OAAdC,EAAEb,EAAU,SAAE,EAAZa,EAAc4C,IAAE7C,EAAI,WAChCK,aAAc2C,EAAaW,YAC3BT,OAAQzB,cAAiBmC,MAAQnC,GAAMoC,QAAUC,OAAMrC,MACtDI,EAAAiB,EAAA,GAAA,KAAA,GAK0D,GAA3D5C,EAAmC,MAApBH,EAAAA,EAAwBP,GAEzCG,EAAmBQ,aAAY,CAAA0B,EAAAE,EAAA,GAAA,KAAA,CAsB9B,GAtB8BF,EAAAC,EAAA,GAEzB3B,EAAeR,EAAmBQ,aAAaD,GAE/CE,EAAmB2D,EACvB5D,EAAa,GACbA,EAAa6D,MAAM,GACnB,CAAEnG,IAAKqB,EAAOrB,IAAKoG,SAAU,OAAQnE,IAAAA,GA9Ff,IAkGpBO,EAA6B2C,EAAakB,SAEd,IAA5B9D,EAAiB+D,OACnB9D,EAAe2C,EAAaW,YACnBvD,EAAiBgE,YAtGJ,GAuGtB/D,EAAe2C,EAAaqB,2BAE5BjE,EAAiBkE,OAAOC,OAAS9G,GACjC2C,EAAiB8C,OAAOqB,OAAS9G,KAEjC4C,EAAe2C,EAAawB,kCAG1BnE,IAAiB2C,EAAakB,SAAQ,CAAArC,EAAAE,EAAA,GAAA,KAAA,CASrC,OARHW,EAAoB,CAClBE,WAA4B,OAAlBtC,EAAc,OAAdC,EAAEnB,EAAU,SAAE,EAAZmB,EAAcsC,IAAEvC,EAAI,QAChCD,aAAAA,EACAoE,WAAmC,OAAzBjE,EAAEJ,EAAiB+D,QAAM3D,OAAIkE,EACvCJ,OAAQlE,EAAiBkE,OAAON,MAAM,EAAGvG,SAAsBiH,EAC/DxB,OAAQ9C,EAAiB8C,OAAOc,MAAM,EAAGvG,SAAsBiH,EAC/DN,YAAahE,EAAiBgE,YAC9BO,YAAavE,EAAiBuE,cAC7B9C,EAAAiB,EAAA,GAAA,KAAA,GAAAjB,EAAAE,EAAA,GAAA,MAAA,KAAA,GAUF,OAVEF,EAAAC,EAAA,GAAAJ,GAAAG,EAAAQ,EAILoB,QAAQC,MAAM,cAAahC,IAE3BgB,EAAoB,CAClBE,WAA4B,OAAlBnC,EAAc,OAAdC,EAAEtB,EAAU,SAAE,EAAZsB,EAAcmC,IAAEpC,EAAI,QAChCJ,aAAc2C,EAAaW,YAC3BT,OAAQxB,cAAiBkC,MAAQlC,GAAMmC,QAAUC,OAAMpC,MACtDG,EAAAiB,EAAA,GAAA,KAAA,GAAAnC,EAAAiE,EAKgBxF,GAASyC,EAAAC,EAAA,GAAAnB,EAAAkE,IAAA,KAAA,GAAA,IAAAjE,EAAAD,EAAAoB,KAAA+C,KAAA,CAAAjD,EAAAE,EAAA,GAAA,KAAA,CAa7B,OAbQZ,EAAQP,EAAAmE,MACX3D,GAC8C,iBAA3CjC,EAA2B6F,YAC9B7F,EAA2B6F,YAAc,IAzIb,EA4I5B3D,GAAU1B,EAAmB0B,QAAQnB,GAErCoB,GAAcyC,EAClB1C,GAAQ,GACRA,GAAQ2C,MAAM,GACd,CAAEnG,IAAKqB,EAAOrB,IAAKoG,SAAU,OAAQgB,MAAO9D,EAAS9C,MAAOyB,IAAAA,GAC5DsB,IACDS,EAAAE,EAAA,GAEyBmD,EAAgBhG,EAAOrB,IAAuD,OAApDgD,EAAE1B,EAA2BgG,yBAAuBtE,EAAI,IAAG,KAAA,GA4B5G,GA5BGU,GAAWM,EAAAQ,EAEbhC,GAA6B2C,EAAakB,SAEnB,IAAvB5C,GAAY6C,OACd9D,GAAe2C,EAAaoC,cACnB9D,GAAY8C,YAAchD,GACnCf,GAAe2C,EAAaqC,oBACnB/D,GAAYqD,oBAAW7D,EAAI3B,EAA2BmG,iBAAexE,EAAIyE,OAAOC,mBACzFnF,GAAe2C,EAAayC,sBACnBnE,GAAYgD,OAAOC,OAAS9G,GAAqB6D,GAAY4B,OAAOqB,OAAS9G,EACtF4C,GAAe2C,EAAa0C,2BACnBnE,GAAYgD,eAAMxD,EAAsD,OAAtDC,EAAI7B,EAA2BgG,8BAAuB,EAAlDnE,EAAoDuD,QAAMxD,EAAI,GAC7FV,GAAe2C,EAAa2C,mCAClBC,EAAoCtE,GAAYgD,OAAuB,OAAjBrD,EAAEE,EAASmD,QAAMrD,EAAI,MACrFZ,GAAe2C,EAAaK,cAG9BX,EAAoB,CAClBE,WAAYzB,EAAS0B,GACrBxC,aAAAA,GACAoE,WAA8B,OAApBvD,EAAEI,GAAY6C,QAAMjD,OAAIwD,EAClCrG,MAAO8C,EAAS9C,MAChBiG,OAAQhD,GAAYgD,OAAON,MAAM,EAAGvG,SAAsBiH,EAC1DxB,OAAQ5B,GAAY4B,OAAOc,MAAM,EAAGvG,SAAsBiH,EAC1DN,YAAa9C,GAAY8C,YACzBO,YAAarD,GAAYqD,YACzBpD,YAAaA,GAAYgD,OAAS,EAAIhD,QAAcmD,IAGlDrE,KAAiB2C,EAAakB,SAAQ,CAAArC,EAAAE,EAAA,GAAA,KAAA,CAAA,OAAAF,EAAAiB,EAAA,EAAA,IAAA,KAAA,GAAAjB,EAAAE,EAAA,GAAA,MAAA,KAAA,GAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,GAAAF,EAAAC,EAAA,GAAAH,GAAAE,EAAAQ,EAAA1B,EAAAkF,EAAAlE,IAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAnB,EAAAmF,IAAAjE,EAAAiE,EAAA,IAAA,KAAA,GAAA,OAAAjE,EAAAiB,EAAA,GAAA,EAAA/D,EAAA,KAAA,CAAA,CAAA,GAAA,GAAA,GAAA,IAAA,CAAA,GAAA,IAAA,CAAA,EAAA,KAAA,KAE7CN,MAAAC,KAAAC,UAAA,CAkBD,SAAsBoH,EAAgBC,GAAA,OAAAC,EAAAxH,MAAAC,KAAAC,UAAA,CA4IrC,SAAAsH,IAAA,OAAAA,EAAArH,EAAAC,IAAAC,EA5IM,SAAAoH,EAAgClH,GAAkB,IAAAC,EAAAC,EAAAC,EAAAK,EAAAG,EAAAG,EAAAC,EAAAG,EAAAC,EAAAC,EAAAC,EAAA8F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAArF,EAAAC,EAAAC,EAAAC,EAAAmF,EAAAC,EAAAC,EAAA,OAAA/H,IAAA+C,EAAA,SAAAiF,GAAA,cAAAA,EAAA/E,EAAA+E,EAAA9E,GAAA,KAAA,EAEJ,OAD7C9C,EAAO+C,EAAUC,QAAQC,MACzBhD,EAASf,EAAkBgE,MAAMlD,EAAKC,QAAO2H,EAAA9E,EAAA,EAEVK,EAA+BpD,GAAW,KAAA,EAAnD,OAA1BG,EAA0B0H,EAAAxE,EAAAwE,EAAA9E,EAAA,EAEGgB,EAAmB7D,EAAOrB,IAAKqB,EAAOnB,UAAS,KAAA,EAAxD,GAApByB,EAAoBqH,EAAAxE,EACD,CAAAwE,EAAA9E,EAAA,EAAA,KAAA,CAKpB,OAJHW,EAAoB,CAClBE,WAAY,WACZvC,aAAc2C,EAAaC,uCAC3BC,OAAM,sBAAAC,OAAwBjE,EAAOnB,SAAQ,eAAAoF,OAAkBjE,EAAOnB,UAAa,MAClF8I,EAAA/D,EAAA,GAAA,KAAA,EAIwE,GAAvEnD,EAAqByD,EAA6B5D,GACjC,CAAAqH,EAAA9E,EAAA,EAAA,KAAA,CAKlB,OAJHW,EAAoB,CAClBE,WAAY,WACZvC,aAAc2C,EAAaK,aAC3BH,OAAQ,yBACP2D,EAAA/D,EAAA,GAAA,KAAA,EAKiD,GAAhDhD,EAAG6C,EAAAA,EAAA,CAAA,EAAQV,QAAQnC,KAAG,GAAA,CAAEwD,GAAI,GAAIC,YAAa,OAI/C5D,EAAmB6D,SAAQ,CAAAqD,EAAA9E,EAAA,EAAA,KAAA,CAAA,OAAA8E,EAAA/E,EAAA,EAAA+E,EAAA9E,EAAA,EAErBpC,EAAmB6D,SAAStE,EAAOrB,KAAI,KAAA,EAAA,OAAAgJ,EAAA9E,EAAA,EAChBgB,EAAmB7D,EAAOrB,IAAKqB,EAAOnB,UAAS,KAAA,EAA5EgC,EAAoB8G,EAAAxE,EAAAwE,EAAA9E,EAAA,EAAA,MAAA,KAAA,EAQjB,OARiB8E,EAAA/E,EAAA,EAAA6E,EAAAE,EAAAxE,EAEpBoB,QAAQC,MAAM,iBAAgBiD,GAE9BjE,EAAoB,CAClBE,WAAY,WACZvC,aAAc2C,EAAaW,YAC3BT,OAAQyD,aAAiB/C,MAAQ+C,EAAM9C,QAAUC,OAAM6C,KACtDE,EAAA/D,EAAA,GAAA,KAAA,EAK0D,GAA3D5C,EAAmC,MAApBH,EAAAA,EAAwBP,GAEzCG,EAAmBQ,aAAY,CAAA0G,EAAA9E,EAAA,GAAA,KAAA,CAsB9B,GAtB8B8E,EAAA/E,EAAA,GAEzB3B,EAAeR,EAAmBQ,aAAaD,GAE/CE,EAAmB2D,EACvB5D,EAAa,GACbA,EAAa6D,MAAM,GACnB,CAAEnG,IAAKqB,EAAOrB,IAAKoG,SAAU,OAAQnE,IAAAA,GAhQf,IAoQpBO,EAA6B2C,EAAakB,SAEd,IAA5B9D,EAAiB+D,OACnB9D,EAAe2C,EAAaW,YACnBvD,EAAiBgE,YAxQJ,GAyQtB/D,EAAe2C,EAAaqB,2BAE5BjE,EAAiBkE,OAAOC,OAAS9G,GACjC2C,EAAiB8C,OAAOqB,OAAS9G,KAEjC4C,EAAe2C,EAAawB,kCAG1BnE,IAAiB2C,EAAakB,SAAQ,CAAA2C,EAAA9E,EAAA,GAAA,KAAA,CASrC,OARHW,EAAoB,CAClBE,WAAY,QACZvC,aAAAA,EACAoE,WAAmC,OAAzB0B,EAAE/F,EAAiB+D,QAAMgC,OAAIzB,EACvCJ,OAAQlE,EAAiBkE,OAAON,MAAM,EAAGvG,SAAsBiH,EAC/DxB,OAAQ9C,EAAiB8C,OAAOc,MAAM,EAAGvG,SAAsBiH,EAC/DN,YAAahE,EAAiBgE,YAC9BO,YAAavE,EAAiBuE,cAC7BkC,EAAA/D,EAAA,GAAA,KAAA,GAAA+D,EAAA9E,EAAA,GAAA,MAAA,KAAA,GAUF,OAVE8E,EAAA/E,EAAA,GAAA8E,EAAAC,EAAAxE,EAILoB,QAAQC,MAAM,cAAakD,GAE3BlE,EAAoB,CAClBE,WAAY,QACZvC,aAAc2C,EAAaW,YAC3BT,OAAQ0D,aAAiBhD,MAAQgD,EAAM/C,QAAUC,OAAM8C,KACtDC,EAAA/D,EAAA,GAAA,KAAA,GAkBJ,OAZK1B,EAAiB0F,KAAKC,IAxSM,IA0SO,OAAvCX,EAACjH,EAA2B6F,aAAWoB,EAAI,GAAK,KAG5C/E,EAAU1B,EAAmB0B,QAAQnB,GAErCoB,EAAcyC,EAClB1C,EAAQ,GACRA,EAAQ2C,MAAM,GACd,CAAEnG,IAAKqB,EAAOrB,IAAKoG,SAAU,OAAQgB,MAAO/F,EAAOb,MAAOyB,IAAAA,GAC1DsB,GACDyF,EAAA9E,EAAA,GAEyBmD,EAAgBhG,EAAOrB,IAAuD,OAApDwI,EAAElH,EAA2BgG,yBAAuBkB,EAAI,IAAG,KAAA,GAAzG9E,EAAWsF,EAAAxE,EAEbhC,EAA6B2C,EAAakB,SAEnB,IAAvB5C,EAAY6C,OACd9D,EAAe2C,EAAaoC,cACnB9D,EAAY8C,YAAchD,EACnCf,EAAe2C,EAAaqC,oBACnB/D,EAAYqD,oBAAW2B,EAAInH,EAA2BmG,iBAAegB,EAAIf,OAAOC,mBACzFnF,EAAe2C,EAAayC,sBACnBnE,EAAYgD,OAAOC,OAAS9G,GAAqB6D,EAAY4B,OAAOqB,OAAS9G,EACtF4C,EAAe2C,EAAa0C,2BACnBnE,EAAYgD,eAAMgC,EAAsD,OAAtDC,EAAIrH,EAA2BgG,8BAAuB,EAAlDqB,EAAoDjC,QAAMgC,EAAI,KAC7FlG,EAAe2C,EAAa2C,oCAG9BjD,EAAoB,CAClBE,WAAY,QACZvC,aAAAA,EACAoE,WAA8B,OAApBgC,EAAEnF,EAAY6C,QAAMsC,OAAI/B,EAClCrG,MAAOa,EAAOb,MACdiG,OAAQhD,EAAYgD,OAAON,MAAM,EAAGvG,SAAsBiH,EAC1DxB,OAAQ5B,EAAY4B,OAAOc,MAAM,EAAGvG,SAAsBiH,EAC1DN,YAAa9C,EAAY8C,YACzBO,YAAarD,EAAYqD,YACzBpD,YAAaA,EAAYgD,OAAS,EAAIhD,OAAcmD,IACnD,KAAA,GAAA,OAAAmC,EAAA/D,EAAA,GAAA,EAAAoD,EAAA,KAAA,CAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,KAENzH,MAAAC,KAAAC,UAAA"} |
| "use strict";exports.DecisionCode={WAITING_JUDGE:0,JUDGE_NOT_AVAILABLE:1,WRONG_ANSWER:1e3,RUNTIME_ERROR:1001,TIME_LIMIT_EXCEEDED:1002,MEMORY_LIMIT_EXCEEDED:1003,OUTPUT_SIZE_LIMIT_EXCEEDED:1004,PRESENTATION_ERROR:1005,FORBIDDEN_PATTERNS_IN_CODE_ERROR:1006,REQUIRED_PATTERNS_IN_CODE_ERROR:1007,BUILD_ERROR:1100,BUILD_TIME_LIMIT_EXCEEDED:1101,BUILD_MEMORY_LIMIT_EXCEEDED:1102,BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED:1103,MISSING_REQUIRED_SUBMISSION_FILE_ERROR:1201,MISSING_REQUIRED_OUTPUT_FILE_ERROR:1202,ACCEPTED:2e3}; | ||
| //# sourceMappingURL=decisionCode.cjs.map |
| {"version":3,"file":"decisionCode.cjs","sources":["../../src/types/decisionCode.ts"],"sourcesContent":["export const DecisionCode = {\n /** ジャッジ待ち */\n WAITING_JUDGE: 0,\n\n /** ジャッジ利用不可 */\n JUDGE_NOT_AVAILABLE: 1,\n\n /** 不正解 */\n WRONG_ANSWER: 1000,\n\n /** 実行時エラー */\n RUNTIME_ERROR: 1001,\n\n /** 時間制限超過 */\n TIME_LIMIT_EXCEEDED: 1002,\n\n /** メモリ制限超過 */\n MEMORY_LIMIT_EXCEEDED: 1003,\n\n /** 出力サイズ制限超過 */\n OUTPUT_SIZE_LIMIT_EXCEEDED: 1004,\n\n /** 出力形式エラー */\n PRESENTATION_ERROR: 1005,\n\n /** コード中の禁止された表現 */\n FORBIDDEN_PATTERNS_IN_CODE_ERROR: 1006,\n\n /** コード中の必要な表現 */\n REQUIRED_PATTERNS_IN_CODE_ERROR: 1007,\n\n /** ビルドエラー */\n BUILD_ERROR: 1100,\n\n /** ビルド時間制限超過 */\n BUILD_TIME_LIMIT_EXCEEDED: 1101,\n\n /** ビルドメモリ制限超過 */\n BUILD_MEMORY_LIMIT_EXCEEDED: 1102,\n\n /** ビルド時の出力サイズ制限超過 */\n BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED: 1103,\n\n /** 必須ファイル不足 */\n MISSING_REQUIRED_SUBMISSION_FILE_ERROR: 1201,\n\n /** 必須出力ファイル不足 */\n MISSING_REQUIRED_OUTPUT_FILE_ERROR: 1202,\n\n /**\n * 受理\n *\n * 最大の値であり、降順で取得したときに最初に見つかることが保証されている。\n */\n ACCEPTED: 2000,\n} as const;\n\nexport type DecisionCode = (typeof DecisionCode)[keyof typeof DecisionCode];\n"],"names":["WAITING_JUDGE","JUDGE_NOT_AVAILABLE","WRONG_ANSWER","RUNTIME_ERROR","TIME_LIMIT_EXCEEDED","MEMORY_LIMIT_EXCEEDED","OUTPUT_SIZE_LIMIT_EXCEEDED","PRESENTATION_ERROR","FORBIDDEN_PATTERNS_IN_CODE_ERROR","REQUIRED_PATTERNS_IN_CODE_ERROR","BUILD_ERROR","BUILD_TIME_LIMIT_EXCEEDED","BUILD_MEMORY_LIMIT_EXCEEDED","BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED","MISSING_REQUIRED_SUBMISSION_FILE_ERROR","MISSING_REQUIRED_OUTPUT_FILE_ERROR","ACCEPTED"],"mappings":"kCAA4B,CAE1BA,cAAe,EAGfC,oBAAqB,EAGrBC,aAAc,IAGdC,cAAe,KAGfC,oBAAqB,KAGrBC,sBAAuB,KAGvBC,2BAA4B,KAG5BC,mBAAoB,KAGpBC,iCAAkC,KAGlCC,gCAAiC,KAGjCC,YAAa,KAGbC,0BAA2B,KAG3BC,4BAA6B,KAG7BC,iCAAkC,KAGlCC,uCAAwC,KAGxCC,mCAAoC,KAOpCC,SAAU"} |
| export declare const DecisionCode: { | ||
| /** ジャッジ待ち */ | ||
| readonly WAITING_JUDGE: 0; | ||
| /** ジャッジ利用不可 */ | ||
| readonly JUDGE_NOT_AVAILABLE: 1; | ||
| /** 不正解 */ | ||
| readonly WRONG_ANSWER: 1000; | ||
| /** 実行時エラー */ | ||
| readonly RUNTIME_ERROR: 1001; | ||
| /** 時間制限超過 */ | ||
| readonly TIME_LIMIT_EXCEEDED: 1002; | ||
| /** メモリ制限超過 */ | ||
| readonly MEMORY_LIMIT_EXCEEDED: 1003; | ||
| /** 出力サイズ制限超過 */ | ||
| readonly OUTPUT_SIZE_LIMIT_EXCEEDED: 1004; | ||
| /** 出力形式エラー */ | ||
| readonly PRESENTATION_ERROR: 1005; | ||
| /** コード中の禁止された表現 */ | ||
| readonly FORBIDDEN_PATTERNS_IN_CODE_ERROR: 1006; | ||
| /** コード中の必要な表現 */ | ||
| readonly REQUIRED_PATTERNS_IN_CODE_ERROR: 1007; | ||
| /** ビルドエラー */ | ||
| readonly BUILD_ERROR: 1100; | ||
| /** ビルド時間制限超過 */ | ||
| readonly BUILD_TIME_LIMIT_EXCEEDED: 1101; | ||
| /** ビルドメモリ制限超過 */ | ||
| readonly BUILD_MEMORY_LIMIT_EXCEEDED: 1102; | ||
| /** ビルド時の出力サイズ制限超過 */ | ||
| readonly BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED: 1103; | ||
| /** 必須ファイル不足 */ | ||
| readonly MISSING_REQUIRED_SUBMISSION_FILE_ERROR: 1201; | ||
| /** 必須出力ファイル不足 */ | ||
| readonly MISSING_REQUIRED_OUTPUT_FILE_ERROR: 1202; | ||
| /** | ||
| * 受理 | ||
| * | ||
| * 最大の値であり、降順で取得したときに最初に見つかることが保証されている。 | ||
| */ | ||
| readonly ACCEPTED: 2000; | ||
| }; | ||
| export type DecisionCode = (typeof DecisionCode)[keyof typeof DecisionCode]; |
| var E={WAITING_JUDGE:0,JUDGE_NOT_AVAILABLE:1,WRONG_ANSWER:1e3,RUNTIME_ERROR:1001,TIME_LIMIT_EXCEEDED:1002,MEMORY_LIMIT_EXCEEDED:1003,OUTPUT_SIZE_LIMIT_EXCEEDED:1004,PRESENTATION_ERROR:1005,FORBIDDEN_PATTERNS_IN_CODE_ERROR:1006,REQUIRED_PATTERNS_IN_CODE_ERROR:1007,BUILD_ERROR:1100,BUILD_TIME_LIMIT_EXCEEDED:1101,BUILD_MEMORY_LIMIT_EXCEEDED:1102,BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED:1103,MISSING_REQUIRED_SUBMISSION_FILE_ERROR:1201,MISSING_REQUIRED_OUTPUT_FILE_ERROR:1202,ACCEPTED:2e3};export{E as DecisionCode}; | ||
| //# sourceMappingURL=decisionCode.js.map |
| {"version":3,"file":"decisionCode.js","sources":["../../src/types/decisionCode.ts"],"sourcesContent":["export const DecisionCode = {\n /** ジャッジ待ち */\n WAITING_JUDGE: 0,\n\n /** ジャッジ利用不可 */\n JUDGE_NOT_AVAILABLE: 1,\n\n /** 不正解 */\n WRONG_ANSWER: 1000,\n\n /** 実行時エラー */\n RUNTIME_ERROR: 1001,\n\n /** 時間制限超過 */\n TIME_LIMIT_EXCEEDED: 1002,\n\n /** メモリ制限超過 */\n MEMORY_LIMIT_EXCEEDED: 1003,\n\n /** 出力サイズ制限超過 */\n OUTPUT_SIZE_LIMIT_EXCEEDED: 1004,\n\n /** 出力形式エラー */\n PRESENTATION_ERROR: 1005,\n\n /** コード中の禁止された表現 */\n FORBIDDEN_PATTERNS_IN_CODE_ERROR: 1006,\n\n /** コード中の必要な表現 */\n REQUIRED_PATTERNS_IN_CODE_ERROR: 1007,\n\n /** ビルドエラー */\n BUILD_ERROR: 1100,\n\n /** ビルド時間制限超過 */\n BUILD_TIME_LIMIT_EXCEEDED: 1101,\n\n /** ビルドメモリ制限超過 */\n BUILD_MEMORY_LIMIT_EXCEEDED: 1102,\n\n /** ビルド時の出力サイズ制限超過 */\n BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED: 1103,\n\n /** 必須ファイル不足 */\n MISSING_REQUIRED_SUBMISSION_FILE_ERROR: 1201,\n\n /** 必須出力ファイル不足 */\n MISSING_REQUIRED_OUTPUT_FILE_ERROR: 1202,\n\n /**\n * 受理\n *\n * 最大の値であり、降順で取得したときに最初に見つかることが保証されている。\n */\n ACCEPTED: 2000,\n} as const;\n\nexport type DecisionCode = (typeof DecisionCode)[keyof typeof DecisionCode];\n"],"names":["DecisionCode","WAITING_JUDGE","JUDGE_NOT_AVAILABLE","WRONG_ANSWER","RUNTIME_ERROR","TIME_LIMIT_EXCEEDED","MEMORY_LIMIT_EXCEEDED","OUTPUT_SIZE_LIMIT_EXCEEDED","PRESENTATION_ERROR","FORBIDDEN_PATTERNS_IN_CODE_ERROR","REQUIRED_PATTERNS_IN_CODE_ERROR","BUILD_ERROR","BUILD_TIME_LIMIT_EXCEEDED","BUILD_MEMORY_LIMIT_EXCEEDED","BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED","MISSING_REQUIRED_SUBMISSION_FILE_ERROR","MISSING_REQUIRED_OUTPUT_FILE_ERROR","ACCEPTED"],"mappings":"AAAO,IAAMA,EAAe,CAE1BC,cAAe,EAGfC,oBAAqB,EAGrBC,aAAc,IAGdC,cAAe,KAGfC,oBAAqB,KAGrBC,sBAAuB,KAGvBC,2BAA4B,KAG5BC,mBAAoB,KAGpBC,iCAAkC,KAGlCC,gCAAiC,KAGjCC,YAAa,KAGbC,0BAA2B,KAG3BC,4BAA6B,KAG7BC,iCAAkC,KAGlCC,uCAAwC,KAGxCC,mCAAoC,KAOpCC,SAAU"} |
| "use strict";var n,e,o=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),t=require("node:path"),s=require("../helpers/removeCommentsInSourceCode.cjs"),i={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},c={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/},{open:/`/,close:/(?<!\\)(?:\\{2})*`/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},a={c:{fileExtensions:[".c"],buildCommand:function(n){return["gcc","--std=c17","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:i},cpp:{fileExtensions:[".cpp"],buildCommand:function(n){return["g++","--std=c++20","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:i},csharp:{fileExtensions:[".cs"],prebuild:(e=o.asyncToGenerator(o.regenerator().m(function n(e){return o.regenerator().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,r.promises.writeFile(t.join(e,"Main.csproj"),'<Project Sdk="Microsoft.NET.Sdk">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>');case 1:return n.a(2)}},n)})),function(n){return e.apply(this,arguments)}),buildCommand:function(){return["dotnet","build","Main.csproj","--configuration","Release","--verbosity","quiet"]},command:function(){return["dotnet","bin/Release/net8.0/Main.dll"]},grammer:i},css:{fileExtensions:[".css"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//}]}},dart:{fileExtensions:[".dart"],buildCommand:function(n){return["dart","compile","exe",n,"-o","main"]},command:function(){return["./main"]},grammer:i},java:{fileExtensions:[".java"],prebuild:(n=o.asyncToGenerator(o.regenerator().m(function n(e){var c,a,m,u,l,p,f,d,g,b,x;return o.regenerator().w(function(n){for(;;)switch(n.p=n.n){case 0:return c=/\bpublic\s+class\s+(\w+)\b/,b=o.createForOfIteratorHelper,n.n=1,r.promises.readdir(e,{withFileTypes:!0});case 1:a=b(n.v),n.p=2,a.s();case 3:if((m=a.n()).done){n.n=7;break}if((l=m.value).isFile()&&l.name.endsWith(".java")){n.n=4;break}return n.a(3,6);case 4:return n.n=5,r.promises.readFile(t.join(e,l.name),"utf8");case 5:if(p=n.v,f=null!=(u=c.exec(s.removeCommentsInSourceCode(i,p)))?u:[],d=o.slicedToArray(f,2),!(g=d[1])){n.n=6;break}return n.n=6,r.promises.rename(t.join(e,l.name),t.join(e,"".concat(g,".java")));case 6:n.n=3;break;case 7:n.n=9;break;case 8:n.p=8,x=n.v,a.e(x);case 9:return n.p=9,a.f(),n.f(9);case 10:return n.a(2)}},n,null,[[2,8,9,10]])})),function(e){return n.apply(this,arguments)}),buildCommand:function(n){return["javac",n]},command:function(n){return["java","-Xmx1024m",n.replace(/\.java$/,"")]},grammer:i},javascript:{fileExtensions:[".js",".cjs",".mjs"],command:function(n){return["bun",n]},grammer:c},jsp:{fileExtensions:[".jsp"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/},{open:/\n?[ \t]*<%--/,close:/--%>/},{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]}},haskell:{fileExtensions:[".hs"],buildCommand:function(n){return["ghc","-o","main",n]},command:function(){return["./main"]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\{-/,close:/-\}/},{open:/\n?[ \t]*--/}]}},html:{fileExtensions:[".html"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/}]}},php:{fileExtensions:[".php"],command:function(n){return["php",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//},{open:/\n?[ \t]*#/}]}},python:{fileExtensions:[".py"],command:function(n){return["python3",n]},grammer:{strings:[{open:/'''/,close:/(?<!\\)(?:\\{2})*'''/},{open:/"""/,close:/(?<!\\)(?:\\{2})*"""/},{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*'''/,close:/'''/},{open:/\n?[ \t]*"""/,close:/"""/},{open:/\n?[ \t]*#/}]}},ruby:{fileExtensions:[".rb"],buildCommand:function(n){return["ruby","-c",n]},command:function(n){return["ruby","--jit",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*=begin/,close:/=end/},{open:/\n?[ \t]*#/}]}},rust:{fileExtensions:[".rs"],buildCommand:function(n){return["rustc",n,"-o","main"]},command:function(){return["./main"]},grammer:i},zig:{fileExtensions:[".zig"],buildCommand:function(n){return["zig","build-exe",n]},command:function(n){return["./"+n.replace(/\.zig$/,"")]},grammer:i},typescript:{fileExtensions:[".ts",".cts",".mts"],command:function(n){return["bun",n]},grammer:c},text:{fileExtensions:[".txt"],command:function(n){return["cat",n]}}};exports.languageIdToDefinition=a; | ||
| //# sourceMappingURL=language.cjs.map |
| {"version":3,"file":"language.cjs","sources":["../../src/types/language.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { removeCommentsInSourceCode } from '../helpers/removeCommentsInSourceCode.js';\n\nexport interface LanguageDefinition {\n /** File extensions to judge with this config. */\n fileExtensions: readonly string[];\n\n /** Function executed before the build. */\n prebuild?(cwd: string): Promise<void>;\n\n /** Returns the command to build a user program. */\n buildCommand?(filePath: string): [string, ...string[]];\n\n /** Returns the command to run a user program. */\n command(filePath: string): [string, ...string[]];\n\n /** Grammer definition for static analysis. */\n grammer?: {\n strings?: readonly { open: RegExp; close: RegExp }[];\n comments?: readonly { open: RegExp; close?: RegExp }[];\n };\n}\n\nconst cLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nconst javaScriptLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n { open: /`/, close: /(?<!\\\\)(?:\\\\{2})*`/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nexport const languageIdToDefinition: Readonly<Record<string, Readonly<LanguageDefinition>>> = {\n c: {\n fileExtensions: ['.c'],\n buildCommand: (filePath) => ['gcc', '--std=c17', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n cpp: {\n fileExtensions: ['.cpp'],\n buildCommand: (filePath) => ['g++', '--std=c++20', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n csharp: {\n fileExtensions: ['.cs'],\n prebuild: async (cwd) => {\n await fs.promises.writeFile(\n path.join(cwd, 'Main.csproj'),\n `<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>`\n );\n },\n buildCommand: () => ['dotnet', 'build', 'Main.csproj', '--configuration', 'Release', '--verbosity', 'quiet'],\n command: () => ['dotnet', 'bin/Release/net8.0/Main.dll'],\n grammer: cLikeGrammer,\n },\n\n css: {\n fileExtensions: ['.css'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }],\n },\n },\n\n dart: {\n fileExtensions: ['.dart'],\n buildCommand: (filePath) => ['dart', 'compile', 'exe', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n java: {\n fileExtensions: ['.java'],\n prebuild: async (cwd) => {\n const publicClassRegex = /\\bpublic\\s+class\\s+(\\w+)\\b/;\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true })) {\n if (!dirent.isFile() || !dirent.name.endsWith('.java')) continue;\n const data = await fs.promises.readFile(path.join(cwd, dirent.name), 'utf8');\n const [, className] = publicClassRegex.exec(removeCommentsInSourceCode(cLikeGrammer, data)) ?? [];\n if (className) await fs.promises.rename(path.join(cwd, dirent.name), path.join(cwd, `${className}.java`));\n }\n },\n buildCommand: (fileName) => ['javac', fileName],\n // For example, Problem 7-3 in WillBooster's Java lecture uses at least 256MB.\n command: (fileName) => ['java', '-Xmx1024m', fileName.replace(/\\.java$/, '')],\n grammer: cLikeGrammer,\n },\n\n javascript: {\n fileExtensions: ['.js', '.cjs', '.mjs'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n jsp: {\n fileExtensions: ['.jsp'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*<!--/, close: /-->/ },\n { open: /\\n?[ \\t]*<%--/, close: /--%>/ },\n { open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// },\n { open: /\\n?[ \\t]*\\/\\// },\n ],\n },\n },\n\n haskell: {\n fileExtensions: ['.hs'],\n buildCommand: (filePath) => ['ghc', '-o', 'main', filePath],\n command: () => ['./main'],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\{-/, close: /-\\}/ }, { open: /\\n?[ \\t]*--/ }],\n },\n },\n\n html: {\n fileExtensions: ['.html'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*<!--/, close: /-->/ }],\n },\n },\n\n php: {\n fileExtensions: ['.php'],\n command: (fileName) => ['php', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n python: {\n fileExtensions: ['.py'],\n command: (fileName) => ['python3', fileName],\n grammer: {\n strings: [\n { open: /'''/, close: /(?<!\\\\)(?:\\\\{2})*'''/ },\n { open: /\"\"\"/, close: /(?<!\\\\)(?:\\\\{2})*\"\"\"/ },\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*'''/, close: /'''/ },\n { open: /\\n?[ \\t]*\"\"\"/, close: /\"\"\"/ },\n { open: /\\n?[ \\t]*#/ },\n ],\n },\n },\n\n ruby: {\n fileExtensions: ['.rb'],\n buildCommand: (fileName) => ['ruby', '-c', fileName],\n command: (fileName) => ['ruby', '--jit', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*=begin/, close: /=end/ }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n rust: {\n fileExtensions: ['.rs'],\n buildCommand: (filePath) => ['rustc', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n zig: {\n fileExtensions: ['.zig'],\n buildCommand: (filePath) => ['zig', 'build-exe', filePath],\n command: (filePath) => ['./' + filePath.replace(/\\.zig$/, '')],\n grammer: cLikeGrammer,\n },\n\n typescript: {\n fileExtensions: ['.ts', '.cts', '.mts'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n text: {\n fileExtensions: ['.txt'],\n command: (fileName) => ['cat', fileName],\n },\n} as const;\n"],"names":["_prebuild2","_prebuild","cLikeGrammer","strings","open","close","comments","javaScriptLikeGrammer","languageIdToDefinition","c","fileExtensions","buildCommand","filePath","command","grammer","cpp","csharp","prebuild","_asyncToGenerator","_regenerator","m","_callee","cwd","w","_context","n","fs","promises","writeFile","path","join","a","_x","apply","this","arguments","css","dart","java","_callee2","publicClassRegex","_iterator","_step","_publicClassRegex$exe","dirent","data","_ref","_ref2","className","_t","_t2","_context2","p","_createForOfIteratorHelper","readdir","withFileTypes","v","s","done","value","isFile","name","endsWith","readFile","exec","removeCommentsInSourceCode","_slicedToArray","rename","concat","e","f","_x2","fileName","replace","javascript","jsp","haskell","html","php","python","ruby","rust","zig","typescript","text"],"mappings":"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"} |
| export interface LanguageDefinition { | ||
| /** File extensions to judge with this config. */ | ||
| fileExtensions: readonly string[]; | ||
| /** Function executed before the build. */ | ||
| prebuild?(cwd: string): Promise<void>; | ||
| /** Returns the command to build a user program. */ | ||
| buildCommand?(filePath: string): [string, ...string[]]; | ||
| /** Returns the command to run a user program. */ | ||
| command(filePath: string): [string, ...string[]]; | ||
| /** Grammer definition for static analysis. */ | ||
| grammer?: { | ||
| strings?: readonly { | ||
| open: RegExp; | ||
| close: RegExp; | ||
| }[]; | ||
| comments?: readonly { | ||
| open: RegExp; | ||
| close?: RegExp; | ||
| }[]; | ||
| }; | ||
| } | ||
| export declare const languageIdToDefinition: Readonly<Record<string, Readonly<LanguageDefinition>>>; |
| import{asyncToGenerator as n,regenerator as e,slicedToArray as o,createForOfIteratorHelper as r}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:fs";import s from"node:path";import{removeCommentsInSourceCode as i}from"../helpers/removeCommentsInSourceCode.js";var c,m,a={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},l={strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/},{open:/`/,close:/(?<!\\)(?:\\{2})*`/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]},u={c:{fileExtensions:[".c"],buildCommand:function(n){return["gcc","--std=c17","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:a},cpp:{fileExtensions:[".cpp"],buildCommand:function(n){return["g++","--std=c++20","-O2",n,"-o","main"]},command:function(){return["./main"]},grammer:a},csharp:{fileExtensions:[".cs"],prebuild:(m=n(e().m(function n(o){return e().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,t.promises.writeFile(s.join(o,"Main.csproj"),'<Project Sdk="Microsoft.NET.Sdk">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>');case 1:return n.a(2)}},n)})),function(n){return m.apply(this,arguments)}),buildCommand:function(){return["dotnet","build","Main.csproj","--configuration","Release","--verbosity","quiet"]},command:function(){return["dotnet","bin/Release/net8.0/Main.dll"]},grammer:a},css:{fileExtensions:[".css"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//}]}},dart:{fileExtensions:[".dart"],buildCommand:function(n){return["dart","compile","exe",n,"-o","main"]},command:function(){return["./main"]},grammer:a},java:{fileExtensions:[".java"],prebuild:(c=n(e().m(function n(c){var m,l,u,p,f,d,g,b,x,j,h;return e().w(function(n){for(;;)switch(n.p=n.n){case 0:return m=/\bpublic\s+class\s+(\w+)\b/,j=r,n.n=1,t.promises.readdir(c,{withFileTypes:!0});case 1:l=j(n.v),n.p=2,l.s();case 3:if((u=l.n()).done){n.n=7;break}if((f=u.value).isFile()&&f.name.endsWith(".java")){n.n=4;break}return n.a(3,6);case 4:return n.n=5,t.promises.readFile(s.join(c,f.name),"utf8");case 5:if(d=n.v,g=null!=(p=m.exec(i(a,d)))?p:[],b=o(g,2),!(x=b[1])){n.n=6;break}return n.n=6,t.promises.rename(s.join(c,f.name),s.join(c,"".concat(x,".java")));case 6:n.n=3;break;case 7:n.n=9;break;case 8:n.p=8,h=n.v,l.e(h);case 9:return n.p=9,l.f(),n.f(9);case 10:return n.a(2)}},n,null,[[2,8,9,10]])})),function(n){return c.apply(this,arguments)}),buildCommand:function(n){return["javac",n]},command:function(n){return["java","-Xmx1024m",n.replace(/\.java$/,"")]},grammer:a},javascript:{fileExtensions:[".js",".cjs",".mjs"],command:function(n){return["bun",n]},grammer:l},jsp:{fileExtensions:[".jsp"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/},{open:/\n?[ \t]*<%--/,close:/--%>/},{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//}]}},haskell:{fileExtensions:[".hs"],buildCommand:function(n){return["ghc","-o","main",n]},command:function(){return["./main"]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\{-/,close:/-\}/},{open:/\n?[ \t]*--/}]}},html:{fileExtensions:[".html"],command:function(){return["echo",""]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*<!--/,close:/-->/}]}},php:{fileExtensions:[".php"],command:function(n){return["php",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*\/\*/,close:/\*\//},{open:/\n?[ \t]*\/\//},{open:/\n?[ \t]*#/}]}},python:{fileExtensions:[".py"],command:function(n){return["python3",n]},grammer:{strings:[{open:/'''/,close:/(?<!\\)(?:\\{2})*'''/},{open:/"""/,close:/(?<!\\)(?:\\{2})*"""/},{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*'''/,close:/'''/},{open:/\n?[ \t]*"""/,close:/"""/},{open:/\n?[ \t]*#/}]}},ruby:{fileExtensions:[".rb"],buildCommand:function(n){return["ruby","-c",n]},command:function(n){return["ruby","--jit",n]},grammer:{strings:[{open:/'/,close:/(?<!\\)(?:\\{2})*'/},{open:/"/,close:/(?<!\\)(?:\\{2})*"/}],comments:[{open:/\n?[ \t]*=begin/,close:/=end/},{open:/\n?[ \t]*#/}]}},rust:{fileExtensions:[".rs"],buildCommand:function(n){return["rustc",n,"-o","main"]},command:function(){return["./main"]},grammer:a},zig:{fileExtensions:[".zig"],buildCommand:function(n){return["zig","build-exe",n]},command:function(n){return["./"+n.replace(/\.zig$/,"")]},grammer:a},typescript:{fileExtensions:[".ts",".cts",".mts"],command:function(n){return["bun",n]},grammer:l},text:{fileExtensions:[".txt"],command:function(n){return["cat",n]}}};export{u as languageIdToDefinition}; | ||
| //# sourceMappingURL=language.js.map |
| {"version":3,"file":"language.js","sources":["../../src/types/language.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { removeCommentsInSourceCode } from '../helpers/removeCommentsInSourceCode.js';\n\nexport interface LanguageDefinition {\n /** File extensions to judge with this config. */\n fileExtensions: readonly string[];\n\n /** Function executed before the build. */\n prebuild?(cwd: string): Promise<void>;\n\n /** Returns the command to build a user program. */\n buildCommand?(filePath: string): [string, ...string[]];\n\n /** Returns the command to run a user program. */\n command(filePath: string): [string, ...string[]];\n\n /** Grammer definition for static analysis. */\n grammer?: {\n strings?: readonly { open: RegExp; close: RegExp }[];\n comments?: readonly { open: RegExp; close?: RegExp }[];\n };\n}\n\nconst cLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nconst javaScriptLikeGrammer = {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n { open: /`/, close: /(?<!\\\\)(?:\\\\{2})*`/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }],\n} as const satisfies LanguageDefinition['grammer'];\n\nexport const languageIdToDefinition: Readonly<Record<string, Readonly<LanguageDefinition>>> = {\n c: {\n fileExtensions: ['.c'],\n buildCommand: (filePath) => ['gcc', '--std=c17', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n cpp: {\n fileExtensions: ['.cpp'],\n buildCommand: (filePath) => ['g++', '--std=c++20', '-O2', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n csharp: {\n fileExtensions: ['.cs'],\n prebuild: async (cwd) => {\n await fs.promises.writeFile(\n path.join(cwd, 'Main.csproj'),\n `<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net8.0</TargetFramework>\n <ImplicitUsings>enable</ImplicitUsings>\n <Nullable>enable</Nullable>\n <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n <AssemblyName>Main</AssemblyName>\n </PropertyGroup>\n</Project>`\n );\n },\n buildCommand: () => ['dotnet', 'build', 'Main.csproj', '--configuration', 'Release', '--verbosity', 'quiet'],\n command: () => ['dotnet', 'bin/Release/net8.0/Main.dll'],\n grammer: cLikeGrammer,\n },\n\n css: {\n fileExtensions: ['.css'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }],\n },\n },\n\n dart: {\n fileExtensions: ['.dart'],\n buildCommand: (filePath) => ['dart', 'compile', 'exe', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n java: {\n fileExtensions: ['.java'],\n prebuild: async (cwd) => {\n const publicClassRegex = /\\bpublic\\s+class\\s+(\\w+)\\b/;\n for (const dirent of await fs.promises.readdir(cwd, { withFileTypes: true })) {\n if (!dirent.isFile() || !dirent.name.endsWith('.java')) continue;\n const data = await fs.promises.readFile(path.join(cwd, dirent.name), 'utf8');\n const [, className] = publicClassRegex.exec(removeCommentsInSourceCode(cLikeGrammer, data)) ?? [];\n if (className) await fs.promises.rename(path.join(cwd, dirent.name), path.join(cwd, `${className}.java`));\n }\n },\n buildCommand: (fileName) => ['javac', fileName],\n // For example, Problem 7-3 in WillBooster's Java lecture uses at least 256MB.\n command: (fileName) => ['java', '-Xmx1024m', fileName.replace(/\\.java$/, '')],\n grammer: cLikeGrammer,\n },\n\n javascript: {\n fileExtensions: ['.js', '.cjs', '.mjs'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n jsp: {\n fileExtensions: ['.jsp'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*<!--/, close: /-->/ },\n { open: /\\n?[ \\t]*<%--/, close: /--%>/ },\n { open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// },\n { open: /\\n?[ \\t]*\\/\\// },\n ],\n },\n },\n\n haskell: {\n fileExtensions: ['.hs'],\n buildCommand: (filePath) => ['ghc', '-o', 'main', filePath],\n command: () => ['./main'],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\{-/, close: /-\\}/ }, { open: /\\n?[ \\t]*--/ }],\n },\n },\n\n html: {\n fileExtensions: ['.html'],\n command: () => ['echo', ''],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*<!--/, close: /-->/ }],\n },\n },\n\n php: {\n fileExtensions: ['.php'],\n command: (fileName) => ['php', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*\\/\\*/, close: /\\*\\// }, { open: /\\n?[ \\t]*\\/\\// }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n python: {\n fileExtensions: ['.py'],\n command: (fileName) => ['python3', fileName],\n grammer: {\n strings: [\n { open: /'''/, close: /(?<!\\\\)(?:\\\\{2})*'''/ },\n { open: /\"\"\"/, close: /(?<!\\\\)(?:\\\\{2})*\"\"\"/ },\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [\n { open: /\\n?[ \\t]*'''/, close: /'''/ },\n { open: /\\n?[ \\t]*\"\"\"/, close: /\"\"\"/ },\n { open: /\\n?[ \\t]*#/ },\n ],\n },\n },\n\n ruby: {\n fileExtensions: ['.rb'],\n buildCommand: (fileName) => ['ruby', '-c', fileName],\n command: (fileName) => ['ruby', '--jit', fileName],\n grammer: {\n strings: [\n { open: /'/, close: /(?<!\\\\)(?:\\\\{2})*'/ },\n { open: /\"/, close: /(?<!\\\\)(?:\\\\{2})*\"/ },\n ],\n comments: [{ open: /\\n?[ \\t]*=begin/, close: /=end/ }, { open: /\\n?[ \\t]*#/ }],\n },\n },\n\n rust: {\n fileExtensions: ['.rs'],\n buildCommand: (filePath) => ['rustc', filePath, '-o', 'main'],\n command: () => ['./main'],\n grammer: cLikeGrammer,\n },\n\n zig: {\n fileExtensions: ['.zig'],\n buildCommand: (filePath) => ['zig', 'build-exe', filePath],\n command: (filePath) => ['./' + filePath.replace(/\\.zig$/, '')],\n grammer: cLikeGrammer,\n },\n\n typescript: {\n fileExtensions: ['.ts', '.cts', '.mts'],\n command: (fileName) => ['bun', fileName],\n grammer: javaScriptLikeGrammer,\n },\n\n text: {\n fileExtensions: ['.txt'],\n command: (fileName) => ['cat', fileName],\n },\n} as const;\n"],"names":["_prebuild2","_prebuild","cLikeGrammer","strings","open","close","comments","javaScriptLikeGrammer","languageIdToDefinition","c","fileExtensions","buildCommand","filePath","command","grammer","cpp","csharp","prebuild","_asyncToGenerator","_regenerator","m","_callee","cwd","w","_context","n","fs","promises","writeFile","path","join","a","_x","apply","this","arguments","css","dart","java","_callee2","publicClassRegex","_iterator","_step","_publicClassRegex$exe","dirent","data","_ref","_ref2","className","_t","_t2","_context2","p","_createForOfIteratorHelper","readdir","withFileTypes","v","s","done","value","isFile","name","endsWith","readFile","exec","removeCommentsInSourceCode","_slicedToArray","rename","concat","e","f","_x2","fileName","replace","javascript","jsp","haskell","html","php","python","ruby","rust","zig","typescript","text"],"mappings":"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"} |
| "use strict";var i=require("zod"),r=i.z.object({timeLimitMs:i.z.number().int().min(0).optional(),memoryLimitByte:i.z.number().int().min(0).optional(),requiredRegExpsInCode:i.z.array(i.z.string().min(1)).optional(),forbiddenRegExpsInCode:i.z.array(i.z.string().min(1)).optional(),forbiddenTextsInCode:i.z.array(i.z.string().min(1)).optional(),isManualScoringRequired:i.z.boolean().optional(),requiredEnvironmentVariables:i.z.array(i.z.string().min(1)).optional(),requiredOutputFilePaths:i.z.array(i.z.string().min(1)).optional(),requiredSubmissionFilePaths:i.z.array(i.z.string().min(1)).optional()});exports.problemMarkdownFrontMatterSchema=r; | ||
| //# sourceMappingURL=problem.cjs.map |
| {"version":3,"file":"problem.cjs","sources":["../../src/types/problem.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const problemMarkdownFrontMatterSchema = z.object({\n timeLimitMs: z.number().int().min(0).optional(),\n memoryLimitByte: z.number().int().min(0).optional(),\n requiredRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenTextsInCode: z.array(z.string().min(1)).optional(),\n isManualScoringRequired: z.boolean().optional(),\n requiredEnvironmentVariables: z.array(z.string().min(1)).optional(),\n requiredOutputFilePaths: z.array(z.string().min(1)).optional(),\n requiredSubmissionFilePaths: z.array(z.string().min(1)).optional(),\n});\n\nexport type ProblemMarkdownFrontMatter = z.infer<typeof problemMarkdownFrontMatterSchema>;\n"],"names":["problemMarkdownFrontMatterSchema","z","object","timeLimitMs","number","min","optional","memoryLimitByte","requiredRegExpsInCode","array","string","forbiddenRegExpsInCode","forbiddenTextsInCode","isManualScoringRequired","requiredEnvironmentVariables","requiredOutputFilePaths","requiredSubmissionFilePaths"],"mappings":"kCAEaA,EAAmCC,EAAAA,EAAEC,OAAO,CACvDC,YAAaF,EAAAA,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACrCC,gBAAiBN,EAAAA,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACzCE,sBAAuBP,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WAClDK,uBAAwBV,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACnDM,qBAAsBX,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACjDO,wBAAyBZ,EAAAA,EAAC,UAAWK,WACrCQ,6BAA8Bb,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACzDS,wBAAyBd,EAAAA,EAAEQ,MAAMR,IAAES,SAASL,IAAI,IAAIC,WACpDU,4BAA6Bf,EAAAA,EAAEQ,MAAMR,EAAAA,EAAES,SAASL,IAAI,IAAIC"} |
| import { z } from 'zod'; | ||
| export declare const problemMarkdownFrontMatterSchema: z.ZodObject<{ | ||
| timeLimitMs: z.ZodOptional<z.ZodNumber>; | ||
| memoryLimitByte: z.ZodOptional<z.ZodNumber>; | ||
| requiredRegExpsInCode: z.ZodOptional<z.ZodArray<z.ZodString>>; | ||
| forbiddenRegExpsInCode: z.ZodOptional<z.ZodArray<z.ZodString>>; | ||
| forbiddenTextsInCode: z.ZodOptional<z.ZodArray<z.ZodString>>; | ||
| isManualScoringRequired: z.ZodOptional<z.ZodBoolean>; | ||
| requiredEnvironmentVariables: z.ZodOptional<z.ZodArray<z.ZodString>>; | ||
| requiredOutputFilePaths: z.ZodOptional<z.ZodArray<z.ZodString>>; | ||
| requiredSubmissionFilePaths: z.ZodOptional<z.ZodArray<z.ZodString>>; | ||
| }, z.core.$strip>; | ||
| export type ProblemMarkdownFrontMatter = z.infer<typeof problemMarkdownFrontMatterSchema>; |
| import{z as i}from"zod";var n=i.object({timeLimitMs:i.number().int().min(0).optional(),memoryLimitByte:i.number().int().min(0).optional(),requiredRegExpsInCode:i.array(i.string().min(1)).optional(),forbiddenRegExpsInCode:i.array(i.string().min(1)).optional(),forbiddenTextsInCode:i.array(i.string().min(1)).optional(),isManualScoringRequired:i.boolean().optional(),requiredEnvironmentVariables:i.array(i.string().min(1)).optional(),requiredOutputFilePaths:i.array(i.string().min(1)).optional(),requiredSubmissionFilePaths:i.array(i.string().min(1)).optional()});export{n as problemMarkdownFrontMatterSchema}; | ||
| //# sourceMappingURL=problem.js.map |
| {"version":3,"file":"problem.js","sources":["../../src/types/problem.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const problemMarkdownFrontMatterSchema = z.object({\n timeLimitMs: z.number().int().min(0).optional(),\n memoryLimitByte: z.number().int().min(0).optional(),\n requiredRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenRegExpsInCode: z.array(z.string().min(1)).optional(),\n forbiddenTextsInCode: z.array(z.string().min(1)).optional(),\n isManualScoringRequired: z.boolean().optional(),\n requiredEnvironmentVariables: z.array(z.string().min(1)).optional(),\n requiredOutputFilePaths: z.array(z.string().min(1)).optional(),\n requiredSubmissionFilePaths: z.array(z.string().min(1)).optional(),\n});\n\nexport type ProblemMarkdownFrontMatter = z.infer<typeof problemMarkdownFrontMatterSchema>;\n"],"names":["problemMarkdownFrontMatterSchema","z","object","timeLimitMs","number","min","optional","memoryLimitByte","requiredRegExpsInCode","array","string","forbiddenRegExpsInCode","forbiddenTextsInCode","isManualScoringRequired","requiredEnvironmentVariables","requiredOutputFilePaths","requiredSubmissionFilePaths"],"mappings":"4BAEaA,EAAmCC,EAAEC,OAAO,CACvDC,YAAaF,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACrCC,gBAAiBN,EAAEG,SAAQ,MAAOC,IAAI,GAAGC,WACzCE,sBAAuBP,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WAClDK,uBAAwBV,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACnDM,qBAAsBX,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACjDO,wBAAyBZ,EAAC,UAAWK,WACrCQ,6BAA8Bb,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACzDS,wBAAyBd,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC,WACpDU,4BAA6Bf,EAAEQ,MAAMR,EAAES,SAASL,IAAI,IAAIC"} |
| "use strict";var t=require("zod"),e=t.z.object({path:t.z.string(),data:t.z.string(),encoding:t.z.literal("base64").optional()}),o=t.z.object({testCaseId:t.z.string(),decisionCode:t.z.number().int(),exitStatus:t.z.number().int().optional(),stdin:t.z.string().optional(),stdout:t.z.string().optional(),stderr:t.z.string().optional(),timeSeconds:t.z.number().optional(),memoryBytes:t.z.number().optional(),feedbackMarkdown:t.z.string().optional(),outputFiles:t.z.array(e).optional()});exports.TEST_CASE_RESULT_PREFIX="TEST_CASE_RESULT ",exports.testCaseResultSchema=o; | ||
| //# sourceMappingURL=testCaseResult.cjs.map |
| {"version":3,"file":"testCaseResult.cjs","sources":["../../src/types/testCaseResult.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const TEST_CASE_RESULT_PREFIX = 'TEST_CASE_RESULT ';\n\nconst testCaseResultOutputFileSchema = z.object({\n path: z.string(),\n data: z.string(),\n encoding: z.literal('base64').optional(),\n});\n\nexport const testCaseResultSchema = z.object({\n testCaseId: z.string(),\n decisionCode: z.number().int(),\n exitStatus: z.number().int().optional(),\n stdin: z.string().optional(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n timeSeconds: z.number().optional(),\n memoryBytes: z.number().optional(),\n feedbackMarkdown: z.string().optional(),\n outputFiles: z.array(testCaseResultOutputFileSchema).optional(),\n});\n\nexport type TestCaseResult = z.infer<typeof testCaseResultSchema>;\n"],"names":["testCaseResultOutputFileSchema","z","object","path","string","data","encoding","literal","optional","testCaseResultSchema","testCaseId","decisionCode","number","exitStatus","stdin","stdout","stderr","timeSeconds","memoryBytes","feedbackMarkdown","outputFiles","array"],"mappings":"kCAIMA,EAAiCC,EAAAA,EAAEC,OAAO,CAC9CC,KAAMF,EAAAA,EAAEG,SACRC,KAAMJ,EAAAA,EAAEG,SACRE,SAAUL,EAAAA,EAAEM,QAAQ,UAAUC,aAGnBC,EAAuBR,EAAAA,EAAEC,OAAO,CAC3CQ,WAAYT,EAAAA,EAAEG,SACdO,aAAcV,EAAAA,EAAEW,SAAQ,MACxBC,WAAYZ,EAAAA,EAAEW,SAAQ,MAAOJ,WAC7BM,MAAOb,EAAAA,EAAEG,SAASI,WAClBO,OAAQd,EAAAA,EAAEG,SAASI,WACnBQ,OAAQf,EAAAA,EAAEG,SAASI,WACnBS,YAAahB,EAAAA,EAAEW,SAASJ,WACxBU,YAAajB,EAAAA,EAAEW,SAASJ,WACxBW,iBAAkBlB,EAAAA,EAAEG,SAASI,WAC7BY,YAAanB,EAAAA,EAAEoB,MAAMrB,GAAgCQ,6CAlBhB"} |
| import { z } from 'zod'; | ||
| export declare const TEST_CASE_RESULT_PREFIX = "TEST_CASE_RESULT "; | ||
| export declare const testCaseResultSchema: z.ZodObject<{ | ||
| testCaseId: z.ZodString; | ||
| decisionCode: z.ZodNumber; | ||
| exitStatus: z.ZodOptional<z.ZodNumber>; | ||
| stdin: z.ZodOptional<z.ZodString>; | ||
| stdout: z.ZodOptional<z.ZodString>; | ||
| stderr: z.ZodOptional<z.ZodString>; | ||
| timeSeconds: z.ZodOptional<z.ZodNumber>; | ||
| memoryBytes: z.ZodOptional<z.ZodNumber>; | ||
| feedbackMarkdown: z.ZodOptional<z.ZodString>; | ||
| outputFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{ | ||
| path: z.ZodString; | ||
| data: z.ZodString; | ||
| encoding: z.ZodOptional<z.ZodLiteral<"base64">>; | ||
| }, z.core.$strip>>>; | ||
| }, z.core.$strip>; | ||
| export type TestCaseResult = z.infer<typeof testCaseResultSchema>; |
| import{z as t}from"zod";var o="TEST_CASE_RESULT ",n=t.object({path:t.string(),data:t.string(),encoding:t.literal("base64").optional()}),i=t.object({testCaseId:t.string(),decisionCode:t.number().int(),exitStatus:t.number().int().optional(),stdin:t.string().optional(),stdout:t.string().optional(),stderr:t.string().optional(),timeSeconds:t.number().optional(),memoryBytes:t.number().optional(),feedbackMarkdown:t.string().optional(),outputFiles:t.array(n).optional()});export{o as TEST_CASE_RESULT_PREFIX,i as testCaseResultSchema}; | ||
| //# sourceMappingURL=testCaseResult.js.map |
| {"version":3,"file":"testCaseResult.js","sources":["../../src/types/testCaseResult.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const TEST_CASE_RESULT_PREFIX = 'TEST_CASE_RESULT ';\n\nconst testCaseResultOutputFileSchema = z.object({\n path: z.string(),\n data: z.string(),\n encoding: z.literal('base64').optional(),\n});\n\nexport const testCaseResultSchema = z.object({\n testCaseId: z.string(),\n decisionCode: z.number().int(),\n exitStatus: z.number().int().optional(),\n stdin: z.string().optional(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n timeSeconds: z.number().optional(),\n memoryBytes: z.number().optional(),\n feedbackMarkdown: z.string().optional(),\n outputFiles: z.array(testCaseResultOutputFileSchema).optional(),\n});\n\nexport type TestCaseResult = z.infer<typeof testCaseResultSchema>;\n"],"names":["TEST_CASE_RESULT_PREFIX","testCaseResultOutputFileSchema","z","object","path","string","data","encoding","literal","optional","testCaseResultSchema","testCaseId","decisionCode","number","exitStatus","stdin","stdout","stderr","timeSeconds","memoryBytes","feedbackMarkdown","outputFiles","array"],"mappings":"wBAEO,IAAMA,EAA0B,oBAEjCC,EAAiCC,EAAEC,OAAO,CAC9CC,KAAMF,EAAEG,SACRC,KAAMJ,EAAEG,SACRE,SAAUL,EAAEM,QAAQ,UAAUC,aAGnBC,EAAuBR,EAAEC,OAAO,CAC3CQ,WAAYT,EAAEG,SACdO,aAAcV,EAAEW,SAAQ,MACxBC,WAAYZ,EAAEW,SAAQ,MAAOJ,WAC7BM,MAAOb,EAAEG,SAASI,WAClBO,OAAQd,EAAEG,SAASI,WACnBQ,OAAQf,EAAEG,SAASI,WACnBS,YAAahB,EAAEW,SAASJ,WACxBU,YAAajB,EAAEW,SAASJ,WACxBW,iBAAkBlB,EAAEG,SAASI,WAC7BY,YAAanB,EAAEoB,MAAMrB,GAAgCQ"} |
+1
-1
@@ -1,2 +0,2 @@ | ||
| "use strict";exports.hello=function(){return"Hello World!"}; | ||
| "use strict";var e=require("./types/decisionCode.cjs"),s=require("./types/testCaseResult.cjs");exports.DecisionCode=e.DecisionCode,exports.TEST_CASE_RESULT_PREFIX=s.TEST_CASE_RESULT_PREFIX,exports.testCaseResultSchema=s.testCaseResultSchema; | ||
| //# sourceMappingURL=index.cjs.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["export function hello(): string {\n return 'Hello World!';\n}\n"],"names":[],"mappings":"2BAAO,WACL,MAAO,cACT"} | ||
| {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""} |
+2
-1
@@ -1,1 +0,2 @@ | ||
| export declare function hello(): string; | ||
| export * from './types/decisionCode.js'; | ||
| export * from './types/testCaseResult.js'; |
+1
-1
@@ -1,2 +0,2 @@ | ||
| function o(){return"Hello World!"}export{o as hello}; | ||
| export{DecisionCode}from"./types/decisionCode.js";export{TEST_CASE_RESULT_PREFIX,testCaseResultSchema}from"./types/testCaseResult.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["export function hello(): string {\n return 'Hello World!';\n}\n"],"names":["hello"],"mappings":"AAAO,SAASA,IACd,MAAO,cACT"} | ||
| {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} |
+17
-4
| { | ||
| "name": "@exercode/problem-utils", | ||
| "version": "1.0.2", | ||
| "version": "1.1.1", | ||
| "description": ":100: A set of utilities for judging programs on Exercode (https://exercode.willbooster.com/).", | ||
@@ -19,2 +19,7 @@ "keywords": [ | ||
| "require": "./dist/index.cjs" | ||
| }, | ||
| "./presets/*": { | ||
| "types": "./dist/presets/*.d.ts", | ||
| "import": "./dist/presets/*.js", | ||
| "require": "./dist/presets/*.cjs" | ||
| } | ||
@@ -29,3 +34,3 @@ }, | ||
| "scripts": { | ||
| "build": "build-ts lib", | ||
| "build": "build-ts lib --input src/index.ts src/presets/*.ts", | ||
| "check-all-for-ai": "yarn check-for-ai && yarn test", | ||
@@ -43,8 +48,15 @@ "check-for-ai": "yarn install > /dev/null && yarn format > /dev/null 2> /dev/null || true && yarn lint-fix --quiet && yarn typecheck", | ||
| "start": "build-ts run src/index.ts", | ||
| "test": "echo 'no tests'", | ||
| "test": "rm -fr temp && vitest test", | ||
| "test/ci-setup": "yarn build && bun install --cwd example", | ||
| "typecheck": "tsc --noEmit --Pretty" | ||
| }, | ||
| "prettier": "@willbooster/prettier-config", | ||
| "dependencies": { | ||
| "front-matter": "4.0.2", | ||
| "zod": "4.1.12" | ||
| }, | ||
| "devDependencies": { | ||
| "@tsconfig/node24": "24.0.1", | ||
| "@types/eslint": "8.56.11", | ||
| "@types/node": "24.10.1", | ||
| "@willbooster/eslint-config-ts": "11.4.10", | ||
@@ -73,3 +85,4 @@ "@willbooster/prettier-config": "10.2.1", | ||
| "typescript": "5.9.3", | ||
| "typescript-eslint": "8.46.3" | ||
| "typescript-eslint": "8.46.3", | ||
| "vitest": "4.0.8" | ||
| }, | ||
@@ -76,0 +89,0 @@ "packageManager": "yarn@4.10.3", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 5 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Trivial Package
Supply chain riskPackages less than 10 lines of code are easily copied into your own project and may not warrant the additional supply chain risk of an external dependency.
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
239074
1473.37%92
1050%467
9240%2
Infinity%28
12%26
1200%6
500%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added