@exercode/problem-utils 1.0.2 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +4 -3
  2. package/dist/_virtual/_rollupPluginBabelHelpers.cjs +4 -0
  3. package/dist/_virtual/_rollupPluginBabelHelpers.cjs.map +1 -0
  4. package/dist/_virtual/_rollupPluginBabelHelpers.js +4 -0
  5. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  6. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.cjs +2 -0
  7. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.cjs.map +1 -0
  8. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.d.ts +1 -0
  9. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.js +2 -0
  10. package/dist/helpers/compareStdoutAsSpaceSeparatedTokens.js.map +1 -0
  11. package/dist/helpers/findEntryPointFile.cjs +2 -0
  12. package/dist/helpers/findEntryPointFile.cjs.map +1 -0
  13. package/dist/helpers/findEntryPointFile.d.ts +1 -0
  14. package/dist/helpers/findEntryPointFile.js +2 -0
  15. package/dist/helpers/findEntryPointFile.js.map +1 -0
  16. package/dist/helpers/findLanguageDefinitionByPath.cjs +2 -0
  17. package/dist/helpers/findLanguageDefinitionByPath.cjs.map +1 -0
  18. package/dist/helpers/findLanguageDefinitionByPath.d.ts +2 -0
  19. package/dist/helpers/findLanguageDefinitionByPath.js +2 -0
  20. package/dist/helpers/findLanguageDefinitionByPath.js.map +1 -0
  21. package/dist/helpers/judgeByStaticAnalysis.cjs +2 -0
  22. package/dist/helpers/judgeByStaticAnalysis.cjs.map +1 -0
  23. package/dist/helpers/judgeByStaticAnalysis.d.ts +3 -0
  24. package/dist/helpers/judgeByStaticAnalysis.js +2 -0
  25. package/dist/helpers/judgeByStaticAnalysis.js.map +1 -0
  26. package/dist/helpers/parseArgs.cjs +2 -0
  27. package/dist/helpers/parseArgs.cjs.map +1 -0
  28. package/dist/helpers/parseArgs.d.ts +6 -0
  29. package/dist/helpers/parseArgs.js +2 -0
  30. package/dist/helpers/parseArgs.js.map +1 -0
  31. package/dist/helpers/printTestCaseResult.cjs +2 -0
  32. package/dist/helpers/printTestCaseResult.cjs.map +1 -0
  33. package/dist/helpers/printTestCaseResult.d.ts +6 -0
  34. package/dist/helpers/printTestCaseResult.js +2 -0
  35. package/dist/helpers/printTestCaseResult.js.map +1 -0
  36. package/dist/helpers/readOutputFiles.cjs +2 -0
  37. package/dist/helpers/readOutputFiles.cjs.map +1 -0
  38. package/dist/helpers/readOutputFiles.d.ts +2 -0
  39. package/dist/helpers/readOutputFiles.js +2 -0
  40. package/dist/helpers/readOutputFiles.js.map +1 -0
  41. package/dist/helpers/readProblemMarkdownFrontMatter.cjs +2 -0
  42. package/dist/helpers/readProblemMarkdownFrontMatter.cjs.map +1 -0
  43. package/dist/helpers/readProblemMarkdownFrontMatter.d.ts +2 -0
  44. package/dist/helpers/readProblemMarkdownFrontMatter.js +2 -0
  45. package/dist/helpers/readProblemMarkdownFrontMatter.js.map +1 -0
  46. package/dist/helpers/readTestCases.cjs +2 -0
  47. package/dist/helpers/readTestCases.cjs.map +1 -0
  48. package/dist/helpers/readTestCases.d.ts +5 -0
  49. package/dist/helpers/readTestCases.js +2 -0
  50. package/dist/helpers/readTestCases.js.map +1 -0
  51. package/dist/helpers/removeCommentsInSourceCode.cjs +2 -0
  52. package/dist/helpers/removeCommentsInSourceCode.cjs.map +1 -0
  53. package/dist/helpers/removeCommentsInSourceCode.d.ts +2 -0
  54. package/dist/helpers/removeCommentsInSourceCode.js +2 -0
  55. package/dist/helpers/removeCommentsInSourceCode.js.map +1 -0
  56. package/dist/helpers/spawnSyncWithTimeout.cjs +2 -0
  57. package/dist/helpers/spawnSyncWithTimeout.cjs.map +1 -0
  58. package/dist/helpers/spawnSyncWithTimeout.d.ts +5 -0
  59. package/dist/helpers/spawnSyncWithTimeout.js +2 -0
  60. package/dist/helpers/spawnSyncWithTimeout.js.map +1 -0
  61. package/dist/index.cjs +1 -1
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.ts +2 -1
  64. package/dist/index.js +1 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/presets/stdio.cjs +2 -0
  67. package/dist/presets/stdio.cjs.map +1 -0
  68. package/dist/presets/stdio.d.ts +34 -0
  69. package/dist/presets/stdio.js +2 -0
  70. package/dist/presets/stdio.js.map +1 -0
  71. package/dist/types/decisionCode.cjs +2 -0
  72. package/dist/types/decisionCode.cjs.map +1 -0
  73. package/dist/types/decisionCode.d.ts +41 -0
  74. package/dist/types/decisionCode.js +2 -0
  75. package/dist/types/decisionCode.js.map +1 -0
  76. package/dist/types/language.cjs +2 -0
  77. package/dist/types/language.cjs.map +1 -0
  78. package/dist/types/language.d.ts +22 -0
  79. package/dist/types/language.js +2 -0
  80. package/dist/types/language.js.map +1 -0
  81. package/dist/types/problem.cjs +2 -0
  82. package/dist/types/problem.cjs.map +1 -0
  83. package/dist/types/problem.d.ts +13 -0
  84. package/dist/types/problem.js +2 -0
  85. package/dist/types/problem.js.map +1 -0
  86. package/dist/types/testCaseResult.cjs +2 -0
  87. package/dist/types/testCaseResult.cjs.map +1 -0
  88. package/dist/types/testCaseResult.d.ts +19 -0
  89. package/dist/types/testCaseResult.js +2 -0
  90. package/dist/types/testCaseResult.js.map +1 -0
  91. package/package.json +19 -6
package/README.md CHANGED
@@ -1,7 +1,8 @@
1
- # problem-utils
1
+ # @exercode/problem-utils
2
2
 
3
- [![Test](https://github.com/WillBooster/problem-utils/actions/workflows/test.yml/badge.svg)](https://github.com/WillBooster/problem-utils/actions/workflows/test.yml)
4
- [![Test](https://github.com/WillBooster/problem-utils/actions/workflows/test.yml/badge.svg)](https://github.com/WillBooster/problem-utils/actions/workflows/test.yml)
3
+ [![Test](https://github.com/WillBooster/exercode-problem-utils/actions/workflows/test.yml/badge.svg)](https://github.com/WillBooster/exercode-problem-utils/actions/workflows/test.yml)
5
4
  [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
6
5
 
6
+ [![Test](https://github.com/WillBooster/exercode-problem-utils/actions/workflows/test.yml/badge.svg)](https://github.com/WillBooster/exercode-problem-utils/actions/workflows/test.yml)
7
+
7
8
  :100: A set of utilities for judging programs on Exercode (https://exercode.willbooster.com/).
@@ -0,0 +1,4 @@
1
+ "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(){
2
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3
+ 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;
4
+ //# sourceMappingURL=_rollupPluginBabelHelpers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,4 @@
1
+ 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(){
2
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
3
+ 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};
4
+ //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,2 @@
1
+ "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};
2
+ //# sourceMappingURL=compareStdoutAsSpaceSeparatedTokens.cjs.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1 @@
1
+ export declare function compareStdoutAsSpaceSeparatedTokens(received: string, expected: string): boolean;
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=compareStdoutAsSpaceSeparatedTokens.js.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ "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)};
2
+ //# sourceMappingURL=findEntryPointFile.cjs.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1 @@
1
+ export declare function findEntryPointFile(cwd: string, language?: string | readonly string[]): Promise<string | undefined>;
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=findEntryPointFile.js.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ "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)})})};
2
+ //# sourceMappingURL=findLanguageDefinitionByPath.cjs.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ import type { LanguageDefinition } from '../types/language.js';
2
+ export declare function findLanguageDefinitionByPath(path: string): LanguageDefinition | undefined;
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=findLanguageDefinitionByPath.js.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ "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)};
2
+ //# sourceMappingURL=judgeByStaticAnalysis.cjs.map
@@ -0,0 +1 @@
1
+ {"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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"}
@@ -0,0 +1,3 @@
1
+ import type { ProblemMarkdownFrontMatter } from '../types/problem.js';
2
+ import type { TestCaseResult } from '../types/testCaseResult.js';
3
+ export declare function judgeByStaticAnalysis(cwd: string, problemMarkdownFrontMatterLike: Pick<ProblemMarkdownFrontMatter, 'forbiddenRegExpsInCode' | 'forbiddenTextsInCode' | 'requiredRegExpsInCode'>): Promise<Pick<TestCaseResult, 'decisionCode' | 'feedbackMarkdown'> | undefined>;
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=judgeByStaticAnalysis.js.map
@@ -0,0 +1 @@
1
+ {"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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"}
@@ -0,0 +1,2 @@
1
+ "use strict";exports.parseArgs=function(r){var a=r[2];if(!a)throw new Error("params argument required");try{return{params:JSON.parse(a)}}catch(r){throw new Error("bad params argument",{cause:r})}};
2
+ //# sourceMappingURL=parseArgs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArgs.cjs","sources":["../../src/helpers/parseArgs.ts"],"sourcesContent":["/**\n * Parse command line arguments in `judge.ts` or `debug.ts`.\n */\nexport function parseArgs(argv: readonly string[]): { params: unknown } {\n const paramsJson = argv[2];\n if (!paramsJson) throw new Error('params argument required');\n\n try {\n return { params: JSON.parse(paramsJson) };\n } catch (error) {\n throw new Error('bad params argument', { cause: error });\n }\n}\n"],"names":["argv","paramsJson","Error","params","JSON","parse","error","cause"],"mappings":"+BAGO,SAAmBA,GACxB,IAAMC,EAAaD,EAAK,GACxB,IAAKC,EAAY,MAAM,IAAIC,MAAM,4BAEjC,IACE,MAAO,CAAEC,OAAQC,KAAKC,MAAMJ,GAC9B,CAAE,MAAOK,GACP,MAAM,IAAIJ,MAAM,sBAAuB,CAAEK,MAAOD,GAClD,CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Parse command line arguments in `judge.ts` or `debug.ts`.
3
+ */
4
+ export declare function parseArgs(argv: readonly string[]): {
5
+ params: unknown;
6
+ };
@@ -0,0 +1,2 @@
1
+ function r(r){var a=r[2];if(!a)throw new Error("params argument required");try{return{params:JSON.parse(a)}}catch(r){throw new Error("bad params argument",{cause:r})}}export{r as parseArgs};
2
+ //# sourceMappingURL=parseArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArgs.js","sources":["../../src/helpers/parseArgs.ts"],"sourcesContent":["/**\n * Parse command line arguments in `judge.ts` or `debug.ts`.\n */\nexport function parseArgs(argv: readonly string[]): { params: unknown } {\n const paramsJson = argv[2];\n if (!paramsJson) throw new Error('params argument required');\n\n try {\n return { params: JSON.parse(paramsJson) };\n } catch (error) {\n throw new Error('bad params argument', { cause: error });\n }\n}\n"],"names":["parseArgs","argv","paramsJson","Error","params","JSON","parse","error","cause"],"mappings":"AAGO,SAASA,EAAUC,GACxB,IAAMC,EAAaD,EAAK,GACxB,IAAKC,EAAY,MAAM,IAAIC,MAAM,4BAEjC,IACE,MAAO,CAAEC,OAAQC,KAAKC,MAAMJ,GAC9B,CAAE,MAAOK,GACP,MAAM,IAAIJ,MAAM,sBAAuB,CAAEK,MAAOD,GAClD,CACF"}
@@ -0,0 +1,2 @@
1
+ "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)))};
2
+ //# sourceMappingURL=printTestCaseResult.cjs.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,6 @@
1
+ import type { TestCaseResult } from '../types/testCaseResult.js';
2
+ /**
3
+ * Print a test case result in a format that can be read by the judge server.
4
+ */
5
+ export declare function printTestCaseResult(result: TestCaseResult): void;
6
+ export declare function encodeFileForTestCaseResult(path: string, data: Buffer): NonNullable<TestCaseResult['outputFiles']>[number];
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=printTestCaseResult.js.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ "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)};
2
+ //# sourceMappingURL=readOutputFiles.cjs.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ import type { TestCaseResult } from '../types/testCaseResult.js';
2
+ export declare function readOutputFiles(cwd: string, outputFilePaths: readonly string[]): Promise<NonNullable<TestCaseResult['outputFiles']>>;
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=readOutputFiles.js.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ "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)};
2
+ //# sourceMappingURL=readProblemMarkdownFrontMatter.cjs.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ import type { ProblemMarkdownFrontMatter } from '../types/problem.js';
2
+ export declare function readProblemMarkdownFrontMatter(problemDir: string): Promise<ProblemMarkdownFrontMatter>;
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=readProblemMarkdownFrontMatter.js.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),n=require("node:path");function a(){return(a=e.asyncToGenerator(e.regenerator().m(function a(t){var s,u,i,o,p,c,l,f,d,m,b,v;return e.regenerator().w(function(a){for(;;)switch(a.p=a.n){case 0:return s=new Set,u=new Map,i=new Map,b=e.createForOfIteratorHelper,a.n=1,r.promises.readdir(t,{withFileTypes:!0});case 1:o=b(a.v),a.p=2,o.s();case 3:if((p=o.n()).done){a.n=8;break}if((c=p.value).isFile()){a.n=4;break}return a.a(3,7);case 4:if(l=n.parse(c.name),f=l.ext,d=l.name,".in"===f||".out"===f){a.n=5;break}return a.a(3,7);case 5:return a.n=6,r.promises.readFile(n.join(c.parentPath,c.name),"utf8");case 6:m=a.v,s.add(d),".in"===f&&u.set(d,m),".out"===f&&i.set(d,m);case 7:a.n=3;break;case 8:a.n=10;break;case 9:a.p=9,v=a.v,o.e(v);case 10:return a.p=10,o.f(),a.f(10);case 11:return a.a(2,e.toConsumableArray(s).toSorted().map(function(e){return{id:e,input:u.get(e),output:i.get(e)}}))}},a,null,[[2,9,10,11]])}))).apply(this,arguments)}exports.readTestCases=function(e){return a.apply(this,arguments)};
2
+ //# sourceMappingURL=readTestCases.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readTestCases.cjs","sources":["../../src/helpers/readTestCases.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function readTestCases(directory: string): Promise<{ id: string; input?: string; output?: string }[]> {\n const idSet = new Set<string>();\n const idToInput = new Map<string, string>();\n const idToOutput = new Map<string, string>();\n\n for (const dirent of await fs.promises.readdir(directory, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.in' && ext !== '.out') continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n idSet.add(name);\n if (ext === '.in') idToInput.set(name, text);\n if (ext === '.out') idToOutput.set(name, text);\n }\n\n return [...idSet].toSorted().map((id) => ({ id, input: idToInput.get(id), output: idToOutput.get(id) }));\n}\n"],"names":["_readTestCases","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToInput","idToOutput","_iterator","_step","dirent","_path$parse","ext","name","text","_t","_t2","w","_context","p","n","Set","Map","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","a","path","parse","readFile","join","parentPath","add","set","e","f","_toConsumableArray","toSorted","map","id","input","get","output","apply","this","arguments","_x"],"mappings":"oHAsBC,SAAAA,IAAA,OAAAA,EAAAC,EAAAA,iBAAAC,EAAAA,cAAAC,EAnBM,SAAAC,EAA6BC,GAAiB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAf,gBAAAgB,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAGP,OAFtCf,EAAQ,IAAIgB,IACZf,EAAY,IAAIgB,IAChBf,EAAa,IAAIe,IAAqBP,EAAAQ,EAAAA,0BAAAL,EAAAE,EAAA,EAEjBI,EAAGC,SAASC,QAAQtB,EAAW,CAAEuB,eAAe,IAAO,KAAA,EAAAnB,EAAAO,EAAAG,EAAAU,GAAAV,EAAAC,EAAA,EAAAX,EAAAqB,IAAA,KAAA,EAAA,IAAApB,EAAAD,EAAAY,KAAAU,KAAA,CAAAZ,EAAAE,EAAA,EAAA,KAAA,CAAjE,IAANV,EAAMD,EAAAsB,OACHC,SAAQ,CAAAd,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAEH,GAFGtB,EAEEuB,EAAKC,MAAMzB,EAAOG,MAAhCD,EAAGD,EAAHC,IAAKC,EAAIF,EAAJE,KACD,QAARD,GAAyB,SAARA,EAAc,CAAAM,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAf,EAAAE,EAAA,EAEhBI,EAAGC,SAASW,SAASF,EAAKG,KAAK3B,EAAO4B,WAAY5B,EAAOG,MAAO,QAAO,KAAA,EAApFC,EAAII,EAAAU,EAEVvB,EAAMkC,IAAI1B,GACE,QAARD,GAAeN,EAAUkC,IAAI3B,EAAMC,GAC3B,SAARF,GAAgBL,EAAWiC,IAAI3B,EAAMC,GAAM,KAAA,EAAAI,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAU,EAAApB,EAAAiC,EAAAzB,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAX,EAAAkC,IAAAxB,EAAAwB,EAAA,IAAA,KAAA,GAAA,OAAAxB,EAAAe,EAAA,EAG1CU,EAAAA,kBAAItC,GAAOuC,WAAWC,IAAI,SAACC,GAAE,MAAM,CAAEA,GAAAA,EAAIC,MAAOzC,EAAU0C,IAAIF,GAAKG,OAAQ1C,EAAWyC,IAAIF,GAAK,IAAE,EAAA3C,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,KAAA,KACzG+C,MAAAC,KAAAC,UAAA,uBAnBD,SAAmCC,GAAA,OAAAtD,EAAAmD,MAAAC,KAAAC,UAAA"}
@@ -0,0 +1,5 @@
1
+ export declare function readTestCases(directory: string): Promise<{
2
+ id: string;
3
+ input?: string;
4
+ output?: string;
5
+ }[]>;
@@ -0,0 +1,2 @@
1
+ import{asyncToGenerator as e,regenerator as r,toConsumableArray as a,createForOfIteratorHelper as n}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:fs";import s from"node:path";function o(e){return i.apply(this,arguments)}function i(){return(i=e(r().m(function e(o){var i,u,p,c,f,l,m,d,b,h,v,w;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return i=new Set,u=new Map,p=new Map,v=n,e.n=1,t.promises.readdir(o,{withFileTypes:!0});case 1:c=v(e.v),e.p=2,c.s();case 3:if((f=c.n()).done){e.n=8;break}if((l=f.value).isFile()){e.n=4;break}return e.a(3,7);case 4:if(m=s.parse(l.name),d=m.ext,b=m.name,".in"===d||".out"===d){e.n=5;break}return e.a(3,7);case 5:return e.n=6,t.promises.readFile(s.join(l.parentPath,l.name),"utf8");case 6:h=e.v,i.add(b),".in"===d&&u.set(b,h),".out"===d&&p.set(b,h);case 7:e.n=3;break;case 8:e.n=10;break;case 9:e.p=9,w=e.v,c.e(w);case 10:return e.p=10,c.f(),e.f(10);case 11:return e.a(2,a(i).toSorted().map(function(e){return{id:e,input:u.get(e),output:p.get(e)}}))}},e,null,[[2,9,10,11]])}))).apply(this,arguments)}export{o as readTestCases};
2
+ //# sourceMappingURL=readTestCases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readTestCases.js","sources":["../../src/helpers/readTestCases.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function readTestCases(directory: string): Promise<{ id: string; input?: string; output?: string }[]> {\n const idSet = new Set<string>();\n const idToInput = new Map<string, string>();\n const idToOutput = new Map<string, string>();\n\n for (const dirent of await fs.promises.readdir(directory, { withFileTypes: true })) {\n if (!dirent.isFile()) continue;\n\n const { ext, name } = path.parse(dirent.name);\n if (ext !== '.in' && ext !== '.out') continue;\n\n const text = await fs.promises.readFile(path.join(dirent.parentPath, dirent.name), 'utf8');\n\n idSet.add(name);\n if (ext === '.in') idToInput.set(name, text);\n if (ext === '.out') idToOutput.set(name, text);\n }\n\n return [...idSet].toSorted().map((id) => ({ id, input: idToInput.get(id), output: idToOutput.get(id) }));\n}\n"],"names":["readTestCases","_x","_readTestCases","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","directory","idSet","idToInput","idToOutput","_iterator","_step","dirent","_path$parse","ext","name","text","_t","_t2","w","_context","p","n","Set","Map","_createForOfIteratorHelper","fs","promises","readdir","withFileTypes","v","s","done","value","isFile","a","path","parse","readFile","join","parentPath","add","set","e","f","_toConsumableArray","toSorted","map","id","input","get","output"],"mappings":"mMAGA,SAAsBA,EAAaC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAmBlC,SAAAH,IAAA,OAAAA,EAAAI,EAAAC,IAAAC,EAnBM,SAAAC,EAA6BC,GAAiB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAf,IAAAgB,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAGP,OAFtCf,EAAQ,IAAIgB,IACZf,EAAY,IAAIgB,IAChBf,EAAa,IAAIe,IAAqBP,EAAAQ,EAAAL,EAAAE,EAAA,EAEjBI,EAAGC,SAASC,QAAQtB,EAAW,CAAEuB,eAAe,IAAO,KAAA,EAAAnB,EAAAO,EAAAG,EAAAU,GAAAV,EAAAC,EAAA,EAAAX,EAAAqB,IAAA,KAAA,EAAA,IAAApB,EAAAD,EAAAY,KAAAU,KAAA,CAAAZ,EAAAE,EAAA,EAAA,KAAA,CAAjE,IAANV,EAAMD,EAAAsB,OACHC,SAAQ,CAAAd,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAEH,GAFGtB,EAEEuB,EAAKC,MAAMzB,EAAOG,MAAhCD,EAAGD,EAAHC,IAAKC,EAAIF,EAAJE,KACD,QAARD,GAAyB,SAARA,EAAc,CAAAM,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAe,EAAA,EAAA,GAAA,KAAA,EAAA,OAAAf,EAAAE,EAAA,EAEhBI,EAAGC,SAASW,SAASF,EAAKG,KAAK3B,EAAO4B,WAAY5B,EAAOG,MAAO,QAAO,KAAA,EAApFC,EAAII,EAAAU,EAEVvB,EAAMkC,IAAI1B,GACE,QAARD,GAAeN,EAAUkC,IAAI3B,EAAMC,GAC3B,SAARF,GAAgBL,EAAWiC,IAAI3B,EAAMC,GAAM,KAAA,EAAAI,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAE,EAAA,GAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAU,EAAApB,EAAAiC,EAAAzB,GAAA,KAAA,GAAA,OAAAE,EAAAC,EAAA,GAAAX,EAAAkC,IAAAxB,EAAAwB,EAAA,IAAA,KAAA,GAAA,OAAAxB,EAAAe,EAAA,EAG1CU,EAAItC,GAAOuC,WAAWC,IAAI,SAACC,GAAE,MAAM,CAAEA,GAAAA,EAAIC,MAAOzC,EAAU0C,IAAIF,GAAKG,OAAQ1C,EAAWyC,IAAIF,GAAK,IAAE,EAAA3C,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,KAAA,KACzGN,MAAAC,KAAAC,UAAA"}
@@ -0,0 +1,2 @@
1
+ "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("")};
2
+ //# sourceMappingURL=removeCommentsInSourceCode.cjs.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ import type { LanguageDefinition } from '../types/language.js';
2
+ export declare function removeCommentsInSourceCode(grammer: NonNullable<LanguageDefinition['grammer']>, sourceCode: string): string;
@@ -0,0 +1,2 @@
1
+ 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};
2
+ //# sourceMappingURL=removeCommentsInSourceCode.js.map
@@ -0,0 +1 @@
1
+ {"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:child_process"),t=["darwin"===require("node:os").platform()?"gtime":"/usr/bin/time","--format","%e %M"];exports.spawnSyncWithTimeout=function(o,s,d,i){var n=Date.now(),a=r.spawnSync("timeout",[i.toFixed(3)].concat(t,[o],e.toConsumableArray(s)),d),u=Date.now(),c=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(a.stderr),m=c?a.stderr.slice(0,c.index):a.stderr,l=Number(null==c?void 0:c[1])||(u-n)/1e3,p=1024*Number(null==c?void 0:c[2])||0;return 124===a.status?e.objectSpread2(e.objectSpread2({},a),{},{status:0,stderr:m,timeSeconds:i+.001,memoryBytes:p}):e.objectSpread2(e.objectSpread2({},a),{},{stderr:m,timeSeconds:l,memoryBytes:p})};
2
+ //# sourceMappingURL=spawnSyncWithTimeout.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawnSyncWithTimeout.cjs","sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"names":["TIME_COMMAND","platform","command","args","options","timeoutSeconds","startTimeMilliseconds","Date","now","spawnResult","child_process","spawnSync","toFixed","concat","_toConsumableArray","stopTimeMilliseconds","match","exec","stderr","slice","index","timeSeconds","Number","memoryBytes","status","_objectSpread"],"mappings":"wGAGMA,EAAe,CAAmB,8BAAfC,WAA0B,QAAU,gBAAiB,WAAY,sCAEnF,SACLC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAwBC,KAAKC,MAE7BC,EAAcC,EAAcC,UAChC,UAAS,CACRN,EAAeO,QAAQ,IAAEC,OAAKb,EAAY,CAAEE,GAAOY,EAAAA,kBAAKX,IACzDC,GAGIW,EAAuBR,KAAKC,MAE5BQ,EAAQ,+BAA+BC,KAAKR,EAAYS,QACxDA,EAASF,EAAQP,EAAYS,OAAOC,MAAM,EAAGH,EAAMI,OAASX,EAAYS,OACxEG,EAAcC,aAAON,SAAAA,EAAQ,MAAQD,EAAuBT,GAAyB,IACrFiB,EAAmC,KAArBD,OAAY,MAALN,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"}
@@ -0,0 +1,5 @@
1
+ import child_process from 'node:child_process';
2
+ export declare function spawnSyncWithTimeout(command: string, args: readonly string[], options: child_process.SpawnSyncOptionsWithStringEncoding, timeoutSeconds: number): child_process.SpawnSyncReturns<string> & {
3
+ timeSeconds: number;
4
+ memoryBytes: number;
5
+ };
@@ -0,0 +1,2 @@
1
+ import{toConsumableArray as e,objectSpread2 as r}from"../_virtual/_rollupPluginBabelHelpers.js";import t from"node:child_process";import o from"node:os";var s=["darwin"===o.platform()?"gtime":"/usr/bin/time","--format","%e %M"];function m(o,m,n,d){var i=Date.now(),a=t.spawnSync("timeout",[d.toFixed(3)].concat(s,[o],e(m)),n),l=Date.now(),u=/(?:^|\n)(\d+\.\d+) (\d+)\s*$/.exec(a.stderr),c=u?a.stderr.slice(0,u.index):a.stderr,p=Number(null==u?void 0:u[1])||(l-i)/1e3,b=1024*Number(null==u?void 0:u[2])||0;return 124===a.status?r(r({},a),{},{status:0,stderr:c,timeSeconds:d+.001,memoryBytes:b}):r(r({},a),{},{stderr:c,timeSeconds:p,memoryBytes:b})}export{m as spawnSyncWithTimeout};
2
+ //# sourceMappingURL=spawnSyncWithTimeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawnSyncWithTimeout.js","sources":["../../src/helpers/spawnSyncWithTimeout.ts"],"sourcesContent":["import child_process from 'node:child_process';\nimport os from 'node:os';\n\nconst TIME_COMMAND = [os.platform() === 'darwin' ? 'gtime' : '/usr/bin/time', '--format', '%e %M'] as const;\n\nexport function spawnSyncWithTimeout(\n command: string,\n args: readonly string[],\n options: child_process.SpawnSyncOptionsWithStringEncoding,\n timeoutSeconds: number\n): child_process.SpawnSyncReturns<string> & { timeSeconds: number; memoryBytes: number } {\n const startTimeMilliseconds = Date.now();\n\n const spawnResult = child_process.spawnSync(\n 'timeout',\n [timeoutSeconds.toFixed(3), ...TIME_COMMAND, command, ...args],\n options\n );\n\n const stopTimeMilliseconds = Date.now();\n\n const match = /(?:^|\\n)(\\d+\\.\\d+) (\\d+)\\s*$/.exec(spawnResult.stderr);\n const stderr = match ? spawnResult.stderr.slice(0, match.index) : spawnResult.stderr;\n const timeSeconds = Number(match?.[1]) || (stopTimeMilliseconds - startTimeMilliseconds) / 1000;\n const memoryBytes = Number(match?.[2]) * 1024 || 0;\n\n // timeout\n if (spawnResult.status === 124) {\n return { ...spawnResult, status: 0, stderr, timeSeconds: timeoutSeconds + 1e-3, memoryBytes };\n }\n\n return { ...spawnResult, stderr, timeSeconds, memoryBytes };\n}\n"],"names":["TIME_COMMAND","os","platform","spawnSyncWithTimeout","command","args","options","timeoutSeconds","startTimeMilliseconds","Date","now","spawnResult","child_process","spawnSync","toFixed","concat","_toConsumableArray","stopTimeMilliseconds","match","exec","stderr","slice","index","timeSeconds","Number","memoryBytes","status","_objectSpread"],"mappings":"yJAGA,IAAMA,EAAe,CAAmB,WAAlBC,EAAGC,WAA0B,QAAU,gBAAiB,WAAY,SAEnF,SAASC,EACdC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAwBC,KAAKC,MAE7BC,EAAcC,EAAcC,UAChC,UAAS,CACRN,EAAeO,QAAQ,IAAEC,OAAKf,EAAY,CAAEI,GAAOY,EAAKX,IACzDC,GAGIW,EAAuBR,KAAKC,MAE5BQ,EAAQ,+BAA+BC,KAAKR,EAAYS,QACxDA,EAASF,EAAQP,EAAYS,OAAOC,MAAM,EAAGH,EAAMI,OAASX,EAAYS,OACxEG,EAAcC,aAAON,SAAAA,EAAQ,MAAQD,EAAuBT,GAAyB,IACrFiB,EAAmC,KAArBD,OAAY,MAALN,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"}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";exports.hello=function(){return"Hello World!"};
1
+ "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;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export declare function hello(): string;
1
+ export * from './types/decisionCode.js';
2
+ export * from './types/testCaseResult.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function o(){return"Hello World!"}export{o as hello};
1
+ export{DecisionCode}from"./types/decisionCode.js";export{TEST_CASE_RESULT_PREFIX,testCaseResultSchema}from"./types/testCaseResult.js";
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),t=require("node:path"),s=require("zod"),r=require("../helpers/compareStdoutAsSpaceSeparatedTokens.cjs"),n=require("../helpers/findEntryPointFile.cjs"),i=require("../helpers/findLanguageDefinitionByPath.cjs"),o=require("../helpers/judgeByStaticAnalysis.cjs"),d=require("../helpers/parseArgs.cjs"),a=require("../helpers/printTestCaseResult.cjs"),u=require("../helpers/readOutputFiles.cjs"),c=require("../helpers/readProblemMarkdownFrontMatter.cjs"),l=require("../helpers/readTestCases.cjs"),p=require("../helpers/spawnSyncWithTimeout.cjs"),C=require("../types/decisionCode.cjs"),E=5e4,I=s.z.object({cwd:s.z.string(),language:s.z.union([s.z.string(),s.z.array(s.z.string())]).optional()}),m=I.extend({stdin:s.z.string().optional()});function g(){return(g=e.asyncToGenerator(e.regenerator().m(function s(m){var g,D,R,T,_,S,b,f,v,y,h,O,M,L,P,w,B,U,F,k,j,N,q,A,W,X,G,x,z,Q,Y,Z,H,V,J,K,$,ee,te,se,re,ne,ie;return e.regenerator().w(function(s){for(;;)switch(s.p=s.n){case 0:return g=d.parseArgs(process.argv),D=I.parse(g.params),s.n=1,c.readProblemMarkdownFrontMatter(m);case 1:return R=s.v,s.n=2,l.readTestCases(t.join(m,"test_cases"));case 2:return T=s.v,s.n=3,o.judgeByStaticAnalysis(D.cwd,R);case 3:if(!(_=s.v)){s.n=4;break}return a.printTestCaseResult(e.objectSpread2({testCaseId:null!=(S=null==(b=T[0])?void 0:b.id)?S:"prebuild"},_)),s.a(2);case 4:return s.n=5,n.findEntryPointFile(D.cwd,D.language);case 5:if(f=s.v){s.n=6;break}return a.printTestCaseResult({testCaseId:null!=(v=null==(y=T[0])?void 0:y.id)?v:"prebuild",decisionCode:C.DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(D.language?": language: ".concat(D.language):"")}),s.a(2);case 6:if(h=i.findLanguageDefinitionByPath(f)){s.n=7;break}return a.printTestCaseResult({testCaseId:null!=(O=null==(M=T[0])?void 0:M.id)?O:"prebuild",decisionCode:C.DecisionCode.WRONG_ANSWER,stderr:"unsupported language"}),s.a(2);case 7:if(L=e.objectSpread2(e.objectSpread2({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!h.prebuild){s.n=12;break}return s.p=8,s.n=9,h.prebuild(D.cwd);case 9:return s.n=10,n.findEntryPointFile(D.cwd,D.language);case 10:P=s.v,s.n=12;break;case 11:return s.p=11,re=s.v,console.error("prebuild error",re),a.printTestCaseResult({testCaseId:null!=(w=null==(B=T[0])?void 0:B.id)?w:"prebuild",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:re instanceof Error?re.message:String(re)}),s.a(2);case 12:if(U=null!=P?P:f,!h.buildCommand){s.n=16;break}if(s.p=13,F=h.buildCommand(U),k=p.spawnSyncWithTimeout(F[0],F.slice(1),{cwd:D.cwd,encoding:"utf8",env:L},10),j=C.DecisionCode.ACCEPTED,0!==k.status?j=C.DecisionCode.BUILD_ERROR:k.timeSeconds>10?j=C.DecisionCode.BUILD_TIME_LIMIT_EXCEEDED:(k.stdout.length>E||k.stderr.length>E)&&(j=C.DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),j===C.DecisionCode.ACCEPTED){s.n=14;break}return a.printTestCaseResult({testCaseId:null!=(N=null==(q=T[0])?void 0:q.id)?N:"build",decisionCode:j,exitStatus:null!=(A=k.status)?A:void 0,stdout:k.stdout.slice(0,E)||void 0,stderr:k.stderr.slice(0,E)||void 0,timeSeconds:k.timeSeconds,memoryBytes:k.memoryBytes}),s.a(2);case 14:s.n=16;break;case 15:return s.p=15,ne=s.v,console.error("build error",ne),a.printTestCaseResult({testCaseId:null!=(W=null==(X=T[0])?void 0:X.id)?W:"build",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:ne instanceof Error?ne.message:String(ne)}),s.a(2);case 16:G=e.createForOfIteratorHelper(T),s.p=17,G.s();case 18:if((x=G.n()).done){s.n=21;break}return J=x.value,K="number"==typeof R.timeLimitMs?R.timeLimitMs/1e3:2,$=h.command(U),ee=p.spawnSyncWithTimeout($[0],$.slice(1),{cwd:D.cwd,encoding:"utf8",input:J.input,env:L},K),s.n=19,u.readOutputFiles(D.cwd,null!=(z=R.requiredOutputFilePaths)?z:[]);case 19:if(te=s.v,se=C.DecisionCode.ACCEPTED,0!==ee.status?se=C.DecisionCode.RUNTIME_ERROR:ee.timeSeconds>K?se=C.DecisionCode.TIME_LIMIT_EXCEEDED:ee.memoryBytes>(null!=(Q=R.memoryLimitByte)?Q:Number.POSITIVE_INFINITY)?se=C.DecisionCode.MEMORY_LIMIT_EXCEEDED:ee.stdout.length>E||ee.stderr.length>E?se=C.DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED:te.length<(null!=(Y=null==(Z=R.requiredOutputFilePaths)?void 0:Z.length)?Y:0)?se=C.DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR:r.compareStdoutAsSpaceSeparatedTokens(ee.stdout,null!=(H=J.output)?H:"")||(se=C.DecisionCode.WRONG_ANSWER),a.printTestCaseResult({testCaseId:J.id,decisionCode:se,exitStatus:null!=(V=ee.status)?V:void 0,stdin:J.input,stdout:ee.stdout.slice(0,E)||void 0,stderr:ee.stderr.slice(0,E)||void 0,timeSeconds:ee.timeSeconds,memoryBytes:ee.memoryBytes,outputFiles:te.length>0?te:void 0}),se===C.DecisionCode.ACCEPTED){s.n=20;break}return s.a(3,21);case 20:s.n=18;break;case 21:s.n=23;break;case 22:s.p=22,ie=s.v,G.e(ie);case 23:return s.p=23,G.f(),s.f(23);case 24:return s.a(2)}},s,null,[[17,22,23,24],[13,15],[8,11]])}))).apply(this,arguments)}function D(){return(D=e.asyncToGenerator(e.regenerator().m(function t(s){var r,o,l,I,g,D,R,T,_,S,b,f,v,y,h,O,M,L,P,w,B,U,F,k,j;return e.regenerator().w(function(t){for(;;)switch(t.p=t.n){case 0:return r=d.parseArgs(process.argv),o=m.parse(r.params),t.n=1,c.readProblemMarkdownFrontMatter(s);case 1:return l=t.v,t.n=2,n.findEntryPointFile(o.cwd,o.language);case 2:if(I=t.v){t.n=3;break}return a.printTestCaseResult({testCaseId:"prebuild",decisionCode:C.DecisionCode.MISSING_REQUIRED_SUBMISSION_FILE_ERROR,stderr:"main file not found".concat(o.language?": language: ".concat(o.language):"")}),t.a(2);case 3:if(g=i.findLanguageDefinitionByPath(I)){t.n=4;break}return a.printTestCaseResult({testCaseId:"prebuild",decisionCode:C.DecisionCode.WRONG_ANSWER,stderr:"unsupported language"}),t.a(2);case 4:if(D=e.objectSpread2(e.objectSpread2({},process.env),{},{CI:"",FORCE_COLOR:"0"}),!g.prebuild){t.n=9;break}return t.p=5,t.n=6,g.prebuild(o.cwd);case 6:return t.n=7,n.findEntryPointFile(o.cwd,o.language);case 7:R=t.v,t.n=9;break;case 8:return t.p=8,k=t.v,console.error("prebuild error",k),a.printTestCaseResult({testCaseId:"prebuild",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:k instanceof Error?k.message:String(k)}),t.a(2);case 9:if(T=null!=R?R:I,!g.buildCommand){t.n=13;break}if(t.p=10,_=g.buildCommand(T),S=p.spawnSyncWithTimeout(_[0],_.slice(1),{cwd:o.cwd,encoding:"utf8",env:D},10),b=C.DecisionCode.ACCEPTED,0!==S.status?b=C.DecisionCode.BUILD_ERROR:S.timeSeconds>10?b=C.DecisionCode.BUILD_TIME_LIMIT_EXCEEDED:(S.stdout.length>E||S.stderr.length>E)&&(b=C.DecisionCode.BUILD_OUTPUT_SIZE_LIMIT_EXCEEDED),b===C.DecisionCode.ACCEPTED){t.n=11;break}return a.printTestCaseResult({testCaseId:"build",decisionCode:b,exitStatus:null!=(f=S.status)?f:void 0,stdout:S.stdout.slice(0,E)||void 0,stderr:S.stderr.slice(0,E)||void 0,timeSeconds:S.timeSeconds,memoryBytes:S.memoryBytes}),t.a(2);case 11:t.n=13;break;case 12:return t.p=12,j=t.v,console.error("build error",j),a.printTestCaseResult({testCaseId:"build",decisionCode:C.DecisionCode.BUILD_ERROR,stderr:j instanceof Error?j.message:String(j)}),t.a(2);case 13:return P=Math.max(10,(null!=(v=l.timeLimitMs)?v:0)/1e3),w=g.command(T),B=p.spawnSyncWithTimeout(w[0],w.slice(1),{cwd:o.cwd,encoding:"utf8",input:o.stdin,env:D},P),t.n=14,u.readOutputFiles(o.cwd,null!=(y=l.requiredOutputFilePaths)?y:[]);case 14:U=t.v,F=C.DecisionCode.ACCEPTED,0!==B.status?F=C.DecisionCode.RUNTIME_ERROR:B.timeSeconds>P?F=C.DecisionCode.TIME_LIMIT_EXCEEDED:B.memoryBytes>(null!=(h=l.memoryLimitByte)?h:Number.POSITIVE_INFINITY)?F=C.DecisionCode.MEMORY_LIMIT_EXCEEDED:B.stdout.length>E||B.stderr.length>E?F=C.DecisionCode.OUTPUT_SIZE_LIMIT_EXCEEDED:U.length<(null!=(O=null==(M=l.requiredOutputFilePaths)?void 0:M.length)?O:0)&&(F=C.DecisionCode.MISSING_REQUIRED_OUTPUT_FILE_ERROR),a.printTestCaseResult({testCaseId:"debug",decisionCode:F,exitStatus:null!=(L=B.status)?L:void 0,stdin:o.stdin,stdout:B.stdout.slice(0,E)||void 0,stderr:B.stderr.slice(0,E)||void 0,timeSeconds:B.timeSeconds,memoryBytes:B.memoryBytes,outputFiles:U.length>0?U:void 0});case 15:return t.a(2)}},t,null,[[10,12],[5,8]])}))).apply(this,arguments)}exports.stdioDebugPreset=function(e){return D.apply(this,arguments)},exports.stdioJudgePreset=function(e){return g.apply(this,arguments)};
2
+ //# sourceMappingURL=stdio.cjs.map