create-entity-app-server 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist-create/template/.gateway-version +1 -1
  2. package/dist-create/template/app/plugins/ocr/cache.ts +1 -1
  3. package/dist-create/template/app/plugins/ocr/config.ts +1 -1
  4. package/dist-create/template/app/plugins/ocr/direction.ts +1 -1
  5. package/dist-create/template/app/plugins/ocr/dispatch.ts +1 -1
  6. package/dist-create/template/app/plugins/ocr/entity-adapter.ts +1 -1
  7. package/dist-create/template/app/plugins/ocr/errors.ts +1 -1
  8. package/dist-create/template/app/plugins/ocr/handlers.ts +1 -1
  9. package/dist-create/template/app/plugins/ocr/index.ts +1 -1
  10. package/dist-create/template/app/plugins/ocr/llm-parser.ts +1 -1
  11. package/dist-create/template/app/plugins/ocr/parsing-pipeline.ts +1 -1
  12. package/dist-create/template/app/plugins/ocr/pdf-converter.ts +1 -1
  13. package/dist-create/template/app/plugins/ocr/preprocessor.ts +1 -1
  14. package/dist-create/template/app/plugins/ocr/providers/aws.ts +1 -1
  15. package/dist-create/template/app/plugins/ocr/providers/azure.ts +1 -1
  16. package/dist-create/template/app/plugins/ocr/providers/google.ts +1 -1
  17. package/dist-create/template/app/plugins/ocr/providers/index.ts +1 -1
  18. package/dist-create/template/app/plugins/ocr/providers/naver.ts +1 -1
  19. package/dist-create/template/app/plugins/ocr/providers/tesseract.ts +1 -1
  20. package/dist-create/template/app/plugins/ocr/providers/upstage.ts +1 -1
  21. package/dist-create/template/app/plugins/ocr/quota.ts +1 -1
  22. package/dist-create/template/app/plugins/ocr/refiner.ts +1 -1
  23. package/dist-create/template/app/plugins/ocr/routes.ts +1 -1
  24. package/dist-create/template/app/plugins/ocr/service.ts +1 -1
  25. package/dist-create/template/app/plugins/ocr/template-loader.ts +1 -1
  26. package/dist-create/template/app/plugins/ocr/template-matcher.ts +1 -1
  27. package/dist-create/template/app/plugins/ocr/types/config.ts +1 -1
  28. package/dist-create/template/app/plugins/ocr/types/driver.ts +1 -1
  29. package/dist-create/template/app/plugins/ocr/types/index.ts +1 -1
  30. package/dist-create/template/app/plugins/ocr/types/parsed.ts +1 -1
  31. package/dist-create/template/app/plugins/ocr/types/store.ts +1 -1
  32. package/dist-create/template/app/plugins/ocr/types/template.ts +1 -1
  33. package/dist-create/template/app/plugins/ocr/utils.ts +1 -1
  34. package/dist-create/template/docs/scripts-guide.md +1 -1
  35. package/dist-create/template/scripts/build.sh +222 -0
  36. package/dist-create/template/scripts/run.sh +22 -6
  37. package/dist-create/template/scripts/update-server.sh +1 -1
  38. package/dist-create/template/system-api.js +1 -1
  39. package/dist-create/template/system.js +1 -1
  40. package/package.json +1 -1
@@ -1 +1 @@
1
- 'use strict';(function(_0x20b8b1,_0x9bcc2){var _0x98b45d=_0x435e,_0x497a72=_0x20b8b1();while(!![]){try{var _0x70b3f3=parseInt(_0x98b45d(0xe3))/0x1+-parseInt(_0x98b45d(0xe9))/0x2*(parseInt(_0x98b45d(0xea))/0x3)+parseInt(_0x98b45d(0xe7))/0x4+-parseInt(_0x98b45d(0xe5))/0x5*(parseInt(_0x98b45d(0xe8))/0x6)+-parseInt(_0x98b45d(0xe4))/0x7+parseInt(_0x98b45d(0xe6))/0x8+parseInt(_0x98b45d(0xeb))/0x9;if(_0x70b3f3===_0x9bcc2)break;else _0x497a72['push'](_0x497a72['shift']());}catch(_0x319cff){_0x497a72['push'](_0x497a72['shift']());}}}(_0x4f7a,0xea07c));function _0x435e(_0x4668f3,_0x9312a0){_0x4668f3=_0x4668f3-0xe3;var _0x4f7a4b=_0x4f7a();var _0x435eae=_0x4f7a4b[_0x4668f3];if(_0x435e['COKrYM']===undefined){var _0x61ee57=function(_0x4a4090){var _0x2f815a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5afaca='',_0x39a48b='';for(var _0x188471=0x0,_0x3a0740,_0x144f8d,_0x165b2d=0x0;_0x144f8d=_0x4a4090['charAt'](_0x165b2d++);~_0x144f8d&&(_0x3a0740=_0x188471%0x4?_0x3a0740*0x40+_0x144f8d:_0x144f8d,_0x188471++%0x4)?_0x5afaca+=String['fromCharCode'](0xff&_0x3a0740>>(-0x2*_0x188471&0x6)):0x0){_0x144f8d=_0x2f815a['indexOf'](_0x144f8d);}for(var _0x4e5ab1=0x0,_0x202bb3=_0x5afaca['length'];_0x4e5ab1<_0x202bb3;_0x4e5ab1++){_0x39a48b+='%'+('00'+_0x5afaca['charCodeAt'](_0x4e5ab1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x39a48b);};_0x435e['zgFKKv']=_0x61ee57,_0x435e['IXcOmU']={},_0x435e['COKrYM']=!![];}var _0x3e1089=_0x4f7a4b[0x0],_0x37e433=_0x4668f3+_0x3e1089,_0x14734e=_0x435e['IXcOmU'][_0x37e433];return!_0x14734e?(_0x435eae=_0x435e['zgFKKv'](_0x435eae),_0x435e['IXcOmU'][_0x37e433]=_0x435eae):_0x435eae=_0x14734e,_0x435eae;}function _0x4f7a(){var _0x2040d4=['otG2ndyWmgTJC0PQsq','mty2mZa2oeTsyNnRva','mtjVEfjdv0W','mtmZmtaYtKT5wwPs','ndjprM1lqKm','mtC2ndyWodrQyw1Qrvi','ndaWmJyYCfL3wwzf','nZeZmdmXmMjwB2Doua','mJC1mJe1nvf0DgDYqq'];_0x4f7a=function(){return _0x2040d4;};return _0x4f7a();}
1
+ 'use strict';(function(_0x4fb4f1,_0x42f70a){var _0x55d262=_0x5821,_0x5ce359=_0x4fb4f1();while(!![]){try{var _0x14f92a=parseInt(_0x55d262(0xba))/0x1*(-parseInt(_0x55d262(0xb4))/0x2)+parseInt(_0x55d262(0xb3))/0x3+-parseInt(_0x55d262(0xb8))/0x4+parseInt(_0x55d262(0xb6))/0x5+parseInt(_0x55d262(0xbb))/0x6*(-parseInt(_0x55d262(0xb5))/0x7)+parseInt(_0x55d262(0xb9))/0x8*(parseInt(_0x55d262(0xb2))/0x9)+-parseInt(_0x55d262(0xb7))/0xa;if(_0x14f92a===_0x42f70a)break;else _0x5ce359['push'](_0x5ce359['shift']());}catch(_0x3a2dc0){_0x5ce359['push'](_0x5ce359['shift']());}}}(_0x9971,0x692ce));function _0x5821(_0x85b53a,_0x52271e){_0x85b53a=_0x85b53a-0xb2;var _0x9971f=_0x9971();var _0x58211e=_0x9971f[_0x85b53a];if(_0x5821['oySoMb']===undefined){var _0x2e9062=function(_0x43f00e){var _0x179803='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x230f06='',_0x2124ae='';for(var _0x5634b9=0x0,_0x1eae41,_0x5ad6b2,_0x2382ba=0x0;_0x5ad6b2=_0x43f00e['charAt'](_0x2382ba++);~_0x5ad6b2&&(_0x1eae41=_0x5634b9%0x4?_0x1eae41*0x40+_0x5ad6b2:_0x5ad6b2,_0x5634b9++%0x4)?_0x230f06+=String['fromCharCode'](0xff&_0x1eae41>>(-0x2*_0x5634b9&0x6)):0x0){_0x5ad6b2=_0x179803['indexOf'](_0x5ad6b2);}for(var _0x3838f3=0x0,_0x493172=_0x230f06['length'];_0x3838f3<_0x493172;_0x3838f3++){_0x2124ae+='%'+('00'+_0x230f06['charCodeAt'](_0x3838f3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2124ae);};_0x5821['piMcao']=_0x2e9062,_0x5821['QDqxND']={},_0x5821['oySoMb']=!![];}var _0x2b85a3=_0x9971f[0x0],_0x182250=_0x85b53a+_0x2b85a3,_0x5e30c9=_0x5821['QDqxND'][_0x182250];return!_0x5e30c9?(_0x58211e=_0x5821['piMcao'](_0x58211e),_0x5821['QDqxND'][_0x182250]=_0x58211e):_0x58211e=_0x5e30c9,_0x58211e;}function _0x9971(){var _0x5b09e7=['nda4oty3mhjKs3rpAa','mtiYotm3nMriDfHlyW','nJrTzgTgCKC','n25OBKHsBq','nK9rteDVta','mtCZndKZCKn0Dvnj','mJa4odeYm2T2B0PVDa','nZuWotHgteDSswq','mtu0mdq0muLgBKzdrG','mZG5odC5mefAyu5NDW'];_0x9971=function(){return _0x5b09e7;};return _0x9971();}
@@ -1 +1 @@
1
- 'use strict';function _0x39f5(_0x54d33a,_0x34cef6){_0x54d33a=_0x54d33a-0xd9;var _0x2e8032=_0x2e80();var _0x39f5bc=_0x2e8032[_0x54d33a];if(_0x39f5['aqSitj']===undefined){var _0x12c6e9=function(_0x1df15a){var _0x53f8fc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x12ee89='',_0x2f8604='';for(var _0x46965f=0x0,_0x398d1c,_0x3f2b86,_0x429826=0x0;_0x3f2b86=_0x1df15a['charAt'](_0x429826++);~_0x3f2b86&&(_0x398d1c=_0x46965f%0x4?_0x398d1c*0x40+_0x3f2b86:_0x3f2b86,_0x46965f++%0x4)?_0x12ee89+=String['fromCharCode'](0xff&_0x398d1c>>(-0x2*_0x46965f&0x6)):0x0){_0x3f2b86=_0x53f8fc['indexOf'](_0x3f2b86);}for(var _0xc1e3c3=0x0,_0xd361da=_0x12ee89['length'];_0xc1e3c3<_0xd361da;_0xc1e3c3++){_0x2f8604+='%'+('00'+_0x12ee89['charCodeAt'](_0xc1e3c3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2f8604);};_0x39f5['hFEvFT']=_0x12c6e9,_0x39f5['hvZdWk']={},_0x39f5['aqSitj']=!![];}var _0x4c4051=_0x2e8032[0x0],_0x466f4f=_0x54d33a+_0x4c4051,_0x450550=_0x39f5['hvZdWk'][_0x466f4f];return!_0x450550?(_0x39f5bc=_0x39f5['hFEvFT'](_0x39f5bc),_0x39f5['hvZdWk'][_0x466f4f]=_0x39f5bc):_0x39f5bc=_0x450550,_0x39f5bc;}(function(_0x2db981,_0xe3f89c){var _0x4039ea=_0x39f5,_0x4df43e=_0x2db981();while(!![]){try{var _0x193d96=-parseInt(_0x4039ea(0xd9))/0x1+parseInt(_0x4039ea(0xde))/0x2+parseInt(_0x4039ea(0xdb))/0x3+parseInt(_0x4039ea(0xdf))/0x4+parseInt(_0x4039ea(0xdd))/0x5+-parseInt(_0x4039ea(0xdc))/0x6+-parseInt(_0x4039ea(0xda))/0x7*(parseInt(_0x4039ea(0xe0))/0x8);if(_0x193d96===_0xe3f89c)break;else _0x4df43e['push'](_0x4df43e['shift']());}catch(_0x3c4b25){_0x4df43e['push'](_0x4df43e['shift']());}}}(_0x2e80,0x4403e));export*from'./config.ts';function _0x2e80(){var _0x89730a=['mZu0mdu2vgDIAKjz','mtKYofDpAwPhqW','mtreBuX5DLC','mZq1nZCXrLn5D3Le','mJq5nda3ngPwqNvhsa','mteWndy4mgrzqu5kyq','ntm1mtK4y1PtruvH','nZiZnJC2A1HmzNPo'];_0x2e80=function(){return _0x89730a;};return _0x2e80();}export*from'./parsed.ts';export*from'./driver.ts';export*from'./template.ts';export*from'./store.ts';
1
+ 'use strict';(function(_0x559947,_0x1c801f){var _0x207f50=_0x2bdf,_0x1ed4f4=_0x559947();while(!![]){try{var _0x4ef844=-parseInt(_0x207f50(0x1ee))/0x1+parseInt(_0x207f50(0x1ec))/0x2*(parseInt(_0x207f50(0x1f1))/0x3)+-parseInt(_0x207f50(0x1ea))/0x4*(parseInt(_0x207f50(0x1ef))/0x5)+parseInt(_0x207f50(0x1ed))/0x6*(parseInt(_0x207f50(0x1f4))/0x7)+-parseInt(_0x207f50(0x1f2))/0x8+-parseInt(_0x207f50(0x1eb))/0x9*(-parseInt(_0x207f50(0x1f0))/0xa)+parseInt(_0x207f50(0x1f3))/0xb;if(_0x4ef844===_0x1c801f)break;else _0x1ed4f4['push'](_0x1ed4f4['shift']());}catch(_0x1418a4){_0x1ed4f4['push'](_0x1ed4f4['shift']());}}}(_0x3379,0xe738b));export*from'./config.ts';export*from'./parsed.ts';function _0x2bdf(_0x194bb0,_0x1e9742){_0x194bb0=_0x194bb0-0x1ea;var _0x33790c=_0x3379();var _0x2bdf82=_0x33790c[_0x194bb0];if(_0x2bdf['bMqWHO']===undefined){var _0x5aa455=function(_0x6db3f7){var _0x503ac4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x59c2bb='',_0x10777f='';for(var _0x567b59=0x0,_0xe3e56f,_0x4f93b0,_0x21c96e=0x0;_0x4f93b0=_0x6db3f7['charAt'](_0x21c96e++);~_0x4f93b0&&(_0xe3e56f=_0x567b59%0x4?_0xe3e56f*0x40+_0x4f93b0:_0x4f93b0,_0x567b59++%0x4)?_0x59c2bb+=String['fromCharCode'](0xff&_0xe3e56f>>(-0x2*_0x567b59&0x6)):0x0){_0x4f93b0=_0x503ac4['indexOf'](_0x4f93b0);}for(var _0x33175e=0x0,_0x2b5bff=_0x59c2bb['length'];_0x33175e<_0x2b5bff;_0x33175e++){_0x10777f+='%'+('00'+_0x59c2bb['charCodeAt'](_0x33175e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10777f);};_0x2bdf['uMrgMm']=_0x5aa455,_0x2bdf['bCpsBg']={},_0x2bdf['bMqWHO']=!![];}var _0xadfb8=_0x33790c[0x0],_0x58fbf5=_0x194bb0+_0xadfb8,_0x2a95ab=_0x2bdf['bCpsBg'][_0x58fbf5];return!_0x2a95ab?(_0x2bdf82=_0x2bdf['uMrgMm'](_0x2bdf82),_0x2bdf['bCpsBg'][_0x58fbf5]=_0x2bdf82):_0x2bdf82=_0x2a95ab,_0x2bdf82;}function _0x3379(){var _0x3833b2=['nKLABwLpAq','mtq0oduYmZjhrNHfu3G','mJyYmtK0ntD4qMHTD2W','mtmYmtzethDvugm','mJy1nZm3mLLAvej4vq','nJqWmZvpA3HsEK8','mtu0mte2ngjjsw1Yqq','ndaYnLzQv3nSsW','mti0mdm2mxvSrKPvsG','mtbRB0n4tgG','mtKWwuPOvgTw'];_0x3379=function(){return _0x3833b2;};return _0x3379();}export*from'./driver.ts';export*from'./template.ts';export*from'./store.ts';
@@ -1 +1 @@
1
- 'use strict';(function(_0x422a5b,_0xd7f40e){var _0x156827=_0x7716,_0x589d72=_0x422a5b();while(!![]){try{var _0x442bfb=parseInt(_0x156827(0x1df))/0x1+-parseInt(_0x156827(0x1da))/0x2+parseInt(_0x156827(0x1dd))/0x3+-parseInt(_0x156827(0x1d9))/0x4+parseInt(_0x156827(0x1de))/0x5+parseInt(_0x156827(0x1db))/0x6*(parseInt(_0x156827(0x1dc))/0x7)+parseInt(_0x156827(0x1d8))/0x8;if(_0x442bfb===_0xd7f40e)break;else _0x589d72['push'](_0x589d72['shift']());}catch(_0xb05455){_0x589d72['push'](_0x589d72['shift']());}}}(_0x1f27,0x64070));function _0x1f27(){var _0x3c4c74=['mtm1nteXmNPAqM5JsW','mJr6BMrpr0W','mJa0mJGXuu90z2rM','otaWmZG3sMTgD211','mtq0odm0nurAy1bxCq','nteWmdKXrLLhC05U','mZiYndq1nLjRBhjTwq','mJeYoty0mfPssMDuqW'];_0x1f27=function(){return _0x3c4c74;};return _0x1f27();}function _0x7716(_0xc4bf4a,_0x20e422){_0xc4bf4a=_0xc4bf4a-0x1d8;var _0x1f273d=_0x1f27();var _0x77163d=_0x1f273d[_0xc4bf4a];if(_0x7716['KPLdgj']===undefined){var _0x36af3a=function(_0x19040e){var _0x5947e2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x20d315='',_0x4d5e5c='';for(var _0x843a83=0x0,_0x4126d9,_0x10b5af,_0x408b0b=0x0;_0x10b5af=_0x19040e['charAt'](_0x408b0b++);~_0x10b5af&&(_0x4126d9=_0x843a83%0x4?_0x4126d9*0x40+_0x10b5af:_0x10b5af,_0x843a83++%0x4)?_0x20d315+=String['fromCharCode'](0xff&_0x4126d9>>(-0x2*_0x843a83&0x6)):0x0){_0x10b5af=_0x5947e2['indexOf'](_0x10b5af);}for(var _0x367b0c=0x0,_0x80e40b=_0x20d315['length'];_0x367b0c<_0x80e40b;_0x367b0c++){_0x4d5e5c+='%'+('00'+_0x20d315['charCodeAt'](_0x367b0c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4d5e5c);};_0x7716['hghHfX']=_0x36af3a,_0x7716['SnDacF']={},_0x7716['KPLdgj']=!![];}var _0xf1473d=_0x1f273d[0x0],_0x3e3bd3=_0xc4bf4a+_0xf1473d,_0x29c839=_0x7716['SnDacF'][_0x3e3bd3];return!_0x29c839?(_0x77163d=_0x7716['hghHfX'](_0x77163d),_0x7716['SnDacF'][_0x3e3bd3]=_0x77163d):_0x77163d=_0x29c839,_0x77163d;}
1
+ 'use strict';(function(_0xc7d1fe,_0x3071df){var _0x4107d0=_0x22c1,_0x1f1135=_0xc7d1fe();while(!![]){try{var _0xe13e4=-parseInt(_0x4107d0(0xeb))/0x1+parseInt(_0x4107d0(0xed))/0x2*(parseInt(_0x4107d0(0xea))/0x3)+-parseInt(_0x4107d0(0xec))/0x4+-parseInt(_0x4107d0(0xe5))/0x5+parseInt(_0x4107d0(0xe8))/0x6*(-parseInt(_0x4107d0(0xe3))/0x7)+-parseInt(_0x4107d0(0xe7))/0x8*(-parseInt(_0x4107d0(0xe9))/0x9)+parseInt(_0x4107d0(0xe4))/0xa*(parseInt(_0x4107d0(0xe6))/0xb);if(_0xe13e4===_0x3071df)break;else _0x1f1135['push'](_0x1f1135['shift']());}catch(_0x1b523b){_0x1f1135['push'](_0x1f1135['shift']());}}}(_0x2e8e,0x9ca06));function _0x22c1(_0xbabe6a,_0x21df13){_0xbabe6a=_0xbabe6a-0xe3;var _0x2e8e37=_0x2e8e();var _0x22c1d5=_0x2e8e37[_0xbabe6a];if(_0x22c1['GphXng']===undefined){var _0x3b15ac=function(_0x325a76){var _0x19846d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x39633a='',_0x277cda='';for(var _0x3f72c9=0x0,_0x198754,_0x10556e,_0xd8945d=0x0;_0x10556e=_0x325a76['charAt'](_0xd8945d++);~_0x10556e&&(_0x198754=_0x3f72c9%0x4?_0x198754*0x40+_0x10556e:_0x10556e,_0x3f72c9++%0x4)?_0x39633a+=String['fromCharCode'](0xff&_0x198754>>(-0x2*_0x3f72c9&0x6)):0x0){_0x10556e=_0x19846d['indexOf'](_0x10556e);}for(var _0x317ce2=0x0,_0x84979a=_0x39633a['length'];_0x317ce2<_0x84979a;_0x317ce2++){_0x277cda+='%'+('00'+_0x39633a['charCodeAt'](_0x317ce2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x277cda);};_0x22c1['jbABzC']=_0x3b15ac,_0x22c1['QtMOeA']={},_0x22c1['GphXng']=!![];}var _0xcc1533=_0x2e8e37[0x0],_0x2fce78=_0xbabe6a+_0xcc1533,_0x5c194b=_0x22c1['QtMOeA'][_0x2fce78];return!_0x5c194b?(_0x22c1d5=_0x22c1['jbABzC'](_0x22c1d5),_0x22c1['QtMOeA'][_0x2fce78]=_0x22c1d5):_0x22c1d5=_0x5c194b,_0x22c1d5;}function _0x2e8e(){var _0x5bd4d1=['mti3mJm0mKTxCuDVuq','mJiWnJKXAxfLA3jO','mJm4ntm2oe9rA0LbqW','mKjKC1bbrq','nJqZmZq4m2zoq29Vrq','odG2nZqWwLrfzxne','ndiXodKZmfH1sLPmyq','mZqXDxfizKXr','mtzUtvzUqwq','nMvhug5OrG','mJe3odK5CejQAvfP'];_0x2e8e=function(){return _0x5bd4d1;};return _0x2e8e();}
@@ -1 +1 @@
1
- 'use strict';(function(_0x51b8bc,_0x18eabf){var _0x646bf8=_0x46be,_0x1a700e=_0x51b8bc();while(!![]){try{var _0x2a6c50=parseInt(_0x646bf8(0x131))/0x1+parseInt(_0x646bf8(0x12f))/0x2*(-parseInt(_0x646bf8(0x135))/0x3)+parseInt(_0x646bf8(0x134))/0x4*(-parseInt(_0x646bf8(0x133))/0x5)+parseInt(_0x646bf8(0x138))/0x6*(parseInt(_0x646bf8(0x12e))/0x7)+parseInt(_0x646bf8(0x132))/0x8*(parseInt(_0x646bf8(0x130))/0x9)+parseInt(_0x646bf8(0x139))/0xa*(-parseInt(_0x646bf8(0x137))/0xb)+parseInt(_0x646bf8(0x12d))/0xc*(parseInt(_0x646bf8(0x136))/0xd);if(_0x2a6c50===_0x18eabf)break;else _0x1a700e['push'](_0x1a700e['shift']());}catch(_0x35aeac){_0x1a700e['push'](_0x1a700e['shift']());}}}(_0x5c78,0xb491f));function _0x46be(_0x176027,_0x39611c){_0x176027=_0x176027-0x12d;var _0x5c78e0=_0x5c78();var _0x46befa=_0x5c78e0[_0x176027];if(_0x46be['tIAjHf']===undefined){var _0x48a80a=function(_0x5743bc){var _0x53b002='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x43c75d='',_0x3d5d1b='';for(var _0x9f4716=0x0,_0x45292d,_0x466c97,_0x404fa6=0x0;_0x466c97=_0x5743bc['charAt'](_0x404fa6++);~_0x466c97&&(_0x45292d=_0x9f4716%0x4?_0x45292d*0x40+_0x466c97:_0x466c97,_0x9f4716++%0x4)?_0x43c75d+=String['fromCharCode'](0xff&_0x45292d>>(-0x2*_0x9f4716&0x6)):0x0){_0x466c97=_0x53b002['indexOf'](_0x466c97);}for(var _0x654c3c=0x0,_0x1c398a=_0x43c75d['length'];_0x654c3c<_0x1c398a;_0x654c3c++){_0x3d5d1b+='%'+('00'+_0x43c75d['charCodeAt'](_0x654c3c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3d5d1b);};_0x46be['wIYDzp']=_0x48a80a,_0x46be['wwebqc']={},_0x46be['tIAjHf']=!![];}var _0x4b2ade=_0x5c78e0[0x0],_0x507830=_0x176027+_0x4b2ade,_0x262a3e=_0x46be['wwebqc'][_0x507830];return!_0x262a3e?(_0x46befa=_0x46be['wIYDzp'](_0x46befa),_0x46be['wwebqc'][_0x507830]=_0x46befa):_0x46befa=_0x262a3e,_0x46befa;}function _0x5c78(){var _0x152c9e=['nZy2mdLRBKrwvfG','mtqXmtqXntvdzvDswgm','nNf5BKLKrW','mtbZteTfqM4','ntG5mM1ZwM5dBW','ndKZnZu5n21jD2PQqG','mJm0mtm1ogXhr0z1uW','owPtEvHbBq','ndi0mJCXufnUwgXQ','ndeYntCXmKLgzMjQqG','mty4mtC3nwzHs1reqq','mtzOBhnZtfO','m1n1A1rMwG'];_0x5c78=function(){return _0x152c9e;};return _0x5c78();}
1
+ 'use strict';function _0x61d4(_0x40b8a4,_0x206f54){_0x40b8a4=_0x40b8a4-0x144;var _0x3ecf55=_0x3ecf();var _0x61d4c5=_0x3ecf55[_0x40b8a4];if(_0x61d4['apVhfR']===undefined){var _0x398121=function(_0x404ed4){var _0x15325d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x18f3b9='',_0x508e3e='';for(var _0x3b6452=0x0,_0x4b9f93,_0x106153,_0x4cd848=0x0;_0x106153=_0x404ed4['charAt'](_0x4cd848++);~_0x106153&&(_0x4b9f93=_0x3b6452%0x4?_0x4b9f93*0x40+_0x106153:_0x106153,_0x3b6452++%0x4)?_0x18f3b9+=String['fromCharCode'](0xff&_0x4b9f93>>(-0x2*_0x3b6452&0x6)):0x0){_0x106153=_0x15325d['indexOf'](_0x106153);}for(var _0x352dfd=0x0,_0x17c812=_0x18f3b9['length'];_0x352dfd<_0x17c812;_0x352dfd++){_0x508e3e+='%'+('00'+_0x18f3b9['charCodeAt'](_0x352dfd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x508e3e);};_0x61d4['oJjjnq']=_0x398121,_0x61d4['jrdPfQ']={},_0x61d4['apVhfR']=!![];}var _0x5f01aa=_0x3ecf55[0x0],_0x430ff2=_0x40b8a4+_0x5f01aa,_0x12e990=_0x61d4['jrdPfQ'][_0x430ff2];return!_0x12e990?(_0x61d4c5=_0x61d4['oJjjnq'](_0x61d4c5),_0x61d4['jrdPfQ'][_0x430ff2]=_0x61d4c5):_0x61d4c5=_0x12e990,_0x61d4c5;}function _0x3ecf(){var _0x3d7e06=['nJq2mMXet0fvDq','ndyYndi1CvnYrM1L','mtfNswzosgu','mJG2m1HWDNfOta','mZy5mtK1m2PlCwvxqW','mZyYody4v1HSBunO','mZzKAhLKEwe','ofrZz3H2ua','nJi0mtKXme1HtfnAqG','mJm1mJnMBfv0txG','ndjws2vLr2m','mJe4mZuWEuL0rMfK'];_0x3ecf=function(){return _0x3d7e06;};return _0x3ecf();}(function(_0x46b6b1,_0x2a859d){var _0x312841=_0x61d4,_0x23e26c=_0x46b6b1();while(!![]){try{var _0x32caca=parseInt(_0x312841(0x148))/0x1+-parseInt(_0x312841(0x145))/0x2*(-parseInt(_0x312841(0x144))/0x3)+parseInt(_0x312841(0x14d))/0x4*(parseInt(_0x312841(0x146))/0x5)+-parseInt(_0x312841(0x147))/0x6*(parseInt(_0x312841(0x14a))/0x7)+-parseInt(_0x312841(0x14e))/0x8*(-parseInt(_0x312841(0x14b))/0x9)+-parseInt(_0x312841(0x14f))/0xa+-parseInt(_0x312841(0x149))/0xb*(parseInt(_0x312841(0x14c))/0xc);if(_0x32caca===_0x2a859d)break;else _0x23e26c['push'](_0x23e26c['shift']());}catch(_0x4030c4){_0x23e26c['push'](_0x23e26c['shift']());}}}(_0x3ecf,0x51e32));
@@ -1 +1 @@
1
- 'use strict';function _0x5e4b(_0x2f2ed9,_0x45c5d1){_0x2f2ed9=_0x2f2ed9-0x12d;var _0x2c0937=_0x2c09();var _0x5e4b4e=_0x2c0937[_0x2f2ed9];if(_0x5e4b['ndtiuc']===undefined){var _0x368bff=function(_0x135528){var _0x129c61='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4f51a6='',_0x17119c='';for(var _0x4f365b=0x0,_0x1489ed,_0x5bba0d,_0x1b51ed=0x0;_0x5bba0d=_0x135528['charAt'](_0x1b51ed++);~_0x5bba0d&&(_0x1489ed=_0x4f365b%0x4?_0x1489ed*0x40+_0x5bba0d:_0x5bba0d,_0x4f365b++%0x4)?_0x4f51a6+=String['fromCharCode'](0xff&_0x1489ed>>(-0x2*_0x4f365b&0x6)):0x0){_0x5bba0d=_0x129c61['indexOf'](_0x5bba0d);}for(var _0x34e6e1=0x0,_0x29dbfb=_0x4f51a6['length'];_0x34e6e1<_0x29dbfb;_0x34e6e1++){_0x17119c+='%'+('00'+_0x4f51a6['charCodeAt'](_0x34e6e1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x17119c);};_0x5e4b['CSflmT']=_0x368bff,_0x5e4b['WrfTjd']={},_0x5e4b['ndtiuc']=!![];}var _0x1f65cd=_0x2c0937[0x0],_0x4e5a42=_0x2f2ed9+_0x1f65cd,_0x52d970=_0x5e4b['WrfTjd'][_0x4e5a42];return!_0x52d970?(_0x5e4b4e=_0x5e4b['CSflmT'](_0x5e4b4e),_0x5e4b['WrfTjd'][_0x4e5a42]=_0x5e4b4e):_0x5e4b4e=_0x52d970,_0x5e4b4e;}(function(_0xdb81b9,_0x46dfc0){var _0x34e737=_0x5e4b,_0x9f2356=_0xdb81b9();while(!![]){try{var _0x51f06b=-parseInt(_0x34e737(0x135))/0x1+parseInt(_0x34e737(0x130))/0x2+-parseInt(_0x34e737(0x12f))/0x3*(parseInt(_0x34e737(0x131))/0x4)+parseInt(_0x34e737(0x12d))/0x5+parseInt(_0x34e737(0x136))/0x6*(-parseInt(_0x34e737(0x134))/0x7)+-parseInt(_0x34e737(0x132))/0x8*(-parseInt(_0x34e737(0x12e))/0x9)+-parseInt(_0x34e737(0x133))/0xa*(-parseInt(_0x34e737(0x137))/0xb);if(_0x51f06b===_0x46dfc0)break;else _0x9f2356['push'](_0x9f2356['shift']());}catch(_0x419acc){_0x9f2356['push'](_0x9f2356['shift']());}}}(_0x2c09,0xcf295));function _0x2c09(){var _0x5b691e=['mZe4wMDXEunU','mtfVvfjPCwO','nZGZnZqXmgLVEKHswq','nJniB2rnuve','mJG5ota2ohbfs3zqBW','mJi0nda5nKDcB1bpwG','nhfXCe9PzW','mJeYmdCYrNztv2z6','ntqXmdG3mg15ueHqEq','otu3ntnpt3zpuNG','odC2mZa0y1Lbr1rg'];_0x2c09=function(){return _0x5b691e;};return _0x2c09();}
1
+ 'use strict';function _0x1e94(_0x527cb4,_0x2b2012){_0x527cb4=_0x527cb4-0x170;var _0x116197=_0x1161();var _0x1e94df=_0x116197[_0x527cb4];if(_0x1e94['bamWqT']===undefined){var _0x2c493b=function(_0xf2e0c2){var _0x2d2f44='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x505fe7='',_0x235631='';for(var _0x2ef18e=0x0,_0x2702ae,_0x57bc33,_0x26b503=0x0;_0x57bc33=_0xf2e0c2['charAt'](_0x26b503++);~_0x57bc33&&(_0x2702ae=_0x2ef18e%0x4?_0x2702ae*0x40+_0x57bc33:_0x57bc33,_0x2ef18e++%0x4)?_0x505fe7+=String['fromCharCode'](0xff&_0x2702ae>>(-0x2*_0x2ef18e&0x6)):0x0){_0x57bc33=_0x2d2f44['indexOf'](_0x57bc33);}for(var _0x57b0f1=0x0,_0x45cce0=_0x505fe7['length'];_0x57b0f1<_0x45cce0;_0x57b0f1++){_0x235631+='%'+('00'+_0x505fe7['charCodeAt'](_0x57b0f1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x235631);};_0x1e94['tvsGyK']=_0x2c493b,_0x1e94['Zbjosn']={},_0x1e94['bamWqT']=!![];}var _0x454f61=_0x116197[0x0],_0xa25d0f=_0x527cb4+_0x454f61,_0x1ebe04=_0x1e94['Zbjosn'][_0xa25d0f];return!_0x1ebe04?(_0x1e94df=_0x1e94['tvsGyK'](_0x1e94df),_0x1e94['Zbjosn'][_0xa25d0f]=_0x1e94df):_0x1e94df=_0x1ebe04,_0x1e94df;}(function(_0x4ee732,_0x31806e){var _0x55b327=_0x1e94,_0x9fdf97=_0x4ee732();while(!![]){try{var _0x4c522b=-parseInt(_0x55b327(0x174))/0x1*(parseInt(_0x55b327(0x178))/0x2)+parseInt(_0x55b327(0x17b))/0x3*(-parseInt(_0x55b327(0x176))/0x4)+parseInt(_0x55b327(0x175))/0x5*(-parseInt(_0x55b327(0x170))/0x6)+-parseInt(_0x55b327(0x173))/0x7+parseInt(_0x55b327(0x177))/0x8*(-parseInt(_0x55b327(0x172))/0x9)+-parseInt(_0x55b327(0x171))/0xa*(-parseInt(_0x55b327(0x17a))/0xb)+parseInt(_0x55b327(0x179))/0xc;if(_0x4c522b===_0x31806e)break;else _0x9fdf97['push'](_0x9fdf97['shift']());}catch(_0x174611){_0x9fdf97['push'](_0x9fdf97['shift']());}}}(_0x1161,0xd1980));function _0x1161(){var _0x4a2f17=['nJG4otyZCMjmBw5U','ndm1vxrWCNbu','mtG3nta0ohHmCMPesG','mJmWEeTwCfrH','owr6yMDMuq','mta2mZKWodnpuhjAr3q','mtfYt0jvwuK','nw9tDfrSuq','nZqWvNrhz01V','mtmWnde3mZzIq1jiwey','oda4nZrMrufbC1q','ndaYmJu5ntz6BvHZCNi'];_0x1161=function(){return _0x4a2f17;};return _0x1161();}
@@ -1 +1 @@
1
- 'use strict';(function(_0xa5a457,_0x556a0b){const _0x57debf=_0x36e4,_0x68cdf9=_0xa5a457();while(!![]){try{const _0x3e0db8=-parseInt(_0x57debf(0xe7))/0x1*(-parseInt(_0x57debf(0xe1))/0x2)+parseInt(_0x57debf(0xe9))/0x3+-parseInt(_0x57debf(0xe8))/0x4*(-parseInt(_0x57debf(0xe2))/0x5)+-parseInt(_0x57debf(0xe0))/0x6*(parseInt(_0x57debf(0xe3))/0x7)+parseInt(_0x57debf(0xde))/0x8+-parseInt(_0x57debf(0xe5))/0x9+parseInt(_0x57debf(0xe6))/0xa*(-parseInt(_0x57debf(0xe4))/0xb);if(_0x3e0db8===_0x556a0b)break;else _0x68cdf9['push'](_0x68cdf9['shift']());}catch(_0x58b7b6){_0x68cdf9['push'](_0x68cdf9['shift']());}}}(_0x25e6,0x31893));import{execFile as _0x3e59d4}from'node:child_process';function _0x36e4(_0xd6df93,_0x100a57){_0xd6df93=_0xd6df93-0xde;const _0x25e6cb=_0x25e6();let _0x36e496=_0x25e6cb[_0xd6df93];if(_0x36e4['dBPubm']===undefined){var _0x36fe5a=function(_0xd2a07a){const _0x252462='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xf99bfe='',_0x792a34='';for(let _0xeefc25=0x0,_0x5e8b9b,_0x47a673,_0x2a316a=0x0;_0x47a673=_0xd2a07a['charAt'](_0x2a316a++);~_0x47a673&&(_0x5e8b9b=_0xeefc25%0x4?_0x5e8b9b*0x40+_0x47a673:_0x47a673,_0xeefc25++%0x4)?_0xf99bfe+=String['fromCharCode'](0xff&_0x5e8b9b>>(-0x2*_0xeefc25&0x6)):0x0){_0x47a673=_0x252462['indexOf'](_0x47a673);}for(let _0x11a645=0x0,_0x44818b=_0xf99bfe['length'];_0x11a645<_0x44818b;_0x11a645++){_0x792a34+='%'+('00'+_0xf99bfe['charCodeAt'](_0x11a645)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x792a34);};_0x36e4['lYBzVM']=_0x36fe5a,_0x36e4['iVmFfh']={},_0x36e4['dBPubm']=!![];}const _0x45d5d1=_0x25e6cb[0x0],_0x4e92f1=_0xd6df93+_0x45d5d1,_0x3f7777=_0x36e4['iVmFfh'][_0x4e92f1];return!_0x3f7777?(_0x36e496=_0x36e4['lYBzVM'](_0x36e496),_0x36e4['iVmFfh'][_0x4e92f1]=_0x36e496):_0x36e496=_0x3f7777,_0x36e496;}import{promisify as _0xbff0e7}from'node:util';function _0x25e6(){const _0x2d281d=['ntC4nZq1uvD1vfP4','D2HPy2G','mte3ntu4ngfIAxreta','vfPRt1m','odrgCMzzD2S','mLL3wuTZEG','mtbczgD4zhu','mtaYndfQCwrlv2G','mtqZAg51zuL3','mJmXmtiYn3DyEuL6vW','nduXndbOsxzgB1y','mtaZnJG3C0fhwgDd','mtKWnJmYuvbXrgXN'];_0x25e6=function(){return _0x2d281d;};return _0x25e6();}const t=_0xbff0e7(_0x3e59d4);export async function which(_0xb3a747){const _0x359875=_0x36e4,_0x351ff7={'TZkOS':function(_0x5d1d95,_0x461f07,_0x5d1dcd){return _0x5d1d95(_0x461f07,_0x5d1dcd);}};try{return await _0x351ff7[_0x359875(0xdf)](t,_0x359875(0xea),[_0xb3a747]),!0x0;}catch{return!0x1;}}
1
+ 'use strict';function _0xbe23(_0x3edc4c,_0x4ae80c){_0x3edc4c=_0x3edc4c-0xe9;const _0x34c23c=_0x34c2();let _0xbe23de=_0x34c23c[_0x3edc4c];if(_0xbe23['dNSqep']===undefined){var _0x45cc4a=function(_0x2483a4){const _0x2454c4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb2cb5f='',_0x149ae8='';for(let _0x52f7de=0x0,_0x10a242,_0x5b76aa,_0x1401df=0x0;_0x5b76aa=_0x2483a4['charAt'](_0x1401df++);~_0x5b76aa&&(_0x10a242=_0x52f7de%0x4?_0x10a242*0x40+_0x5b76aa:_0x5b76aa,_0x52f7de++%0x4)?_0xb2cb5f+=String['fromCharCode'](0xff&_0x10a242>>(-0x2*_0x52f7de&0x6)):0x0){_0x5b76aa=_0x2454c4['indexOf'](_0x5b76aa);}for(let _0x3ea32a=0x0,_0x52562a=_0xb2cb5f['length'];_0x3ea32a<_0x52562a;_0x3ea32a++){_0x149ae8+='%'+('00'+_0xb2cb5f['charCodeAt'](_0x3ea32a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x149ae8);};_0xbe23['NWrplj']=_0x45cc4a,_0xbe23['JDIcYT']={},_0xbe23['dNSqep']=!![];}const _0xeb3a49=_0x34c23c[0x0],_0x4248c9=_0x3edc4c+_0xeb3a49,_0x4dbe7a=_0xbe23['JDIcYT'][_0x4248c9];return!_0x4dbe7a?(_0xbe23de=_0xbe23['NWrplj'](_0xbe23de),_0xbe23['JDIcYT'][_0x4248c9]=_0xbe23de):_0xbe23de=_0x4dbe7a,_0xbe23de;}(function(_0x42d7ec,_0x3e58c5){const _0x493d62=_0xbe23,_0x2159a5=_0x42d7ec();while(!![]){try{const _0x39d87f=-parseInt(_0x493d62(0xef))/0x1*(parseInt(_0x493d62(0xf2))/0x2)+parseInt(_0x493d62(0xee))/0x3*(-parseInt(_0x493d62(0xec))/0x4)+parseInt(_0x493d62(0xf0))/0x5+-parseInt(_0x493d62(0xf4))/0x6*(parseInt(_0x493d62(0xf6))/0x7)+parseInt(_0x493d62(0xe9))/0x8+parseInt(_0x493d62(0xf3))/0x9*(-parseInt(_0x493d62(0xf1))/0xa)+parseInt(_0x493d62(0xf5))/0xb*(parseInt(_0x493d62(0xeb))/0xc);if(_0x39d87f===_0x3e58c5)break;else _0x2159a5['push'](_0x2159a5['shift']());}catch(_0x4ed93c){_0x2159a5['push'](_0x2159a5['shift']());}}}(_0x34c2,0xbfdab));import{execFile as _0x18e252}from'node:child_process';function _0x34c2(){const _0x30ae72=['ndKWoty0mejNruresW','mZbezhHLCui','mZm0q1Htr2rM','mta4ndC0m2TwtMXOEa','mJC1mtzLrvvUqKO','mtfYy3zUqvG','nZu2r1nOwhvH','odiZnJCYB0Hzruff','D2HPy2G','mZy3ndm3otzNwxrstfy','mZaWmJK5nKPut0X0za','sevLALu','nMvIChvWva','nJaWnhfgy29orq'];_0x34c2=function(){return _0x30ae72;};return _0x34c2();}import{promisify as _0x155539}from'node:util';const t=_0x155539(_0x18e252);export async function which(_0x293bdb){const _0x1478b0=_0xbe23,_0x114c50={'HEejU':function(_0x525641,_0x455977,_0x2a35db){return _0x525641(_0x455977,_0x2a35db);},'RPZyn':_0x1478b0(0xea)};try{return await _0x114c50[_0x1478b0(0xed)](t,_0x114c50['RPZyn'],[_0x293bdb]),!0x0;}catch{return!0x1;}}
@@ -181,7 +181,7 @@ GitHub PR 기반으로 `현재 브랜치 -> main -> release` 승격을 진행합
181
181
 
182
182
  - `system.js`
183
183
  - `system-api.js`
184
- - `scripts/run.sh`, `scripts/entity.sh`, `scripts/reset-all.sh`, `scripts/update-server.sh`, `scripts/service-install.sh`, `scripts/service-remove.sh`
184
+ - `scripts/build.sh`, `scripts/run.sh`, `scripts/entity.sh`, `scripts/reset-all.sh`, `scripts/update-server.sh`, `scripts/service-install.sh`, `scripts/service-remove.sh`
185
185
  - `docs/`
186
186
  - `tsconfig.json`
187
187
  - `.env.example`
@@ -0,0 +1,222 @@
1
+ #!/bin/bash
2
+ # build.sh — Gateway TypeScript 빌드 + dist/ dist-create/ 패키징
3
+ #
4
+ # dist/ 구조:
5
+ # 실행/배포용 산출물. build 결과를 바로 실행하거나 서버에 배포할 때 사용한다.
6
+ #
7
+ # dist-create/ 구조:
8
+ # npm create entity-app-server 가 내려받는 템플릿 원본.
9
+ # create 스캐폴딩 시 복사될 파일만 template/ 아래에 담는다.
10
+ #
11
+ # 실행:
12
+ # ./scripts/build.sh — 빌드 + 패키징
13
+ # ./scripts/build.sh --no-tar — tar.gz 없이 빌드만
14
+
15
+ set -eo pipefail
16
+
17
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
18
+ PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
19
+
20
+ cd "$PROJECT_ROOT"
21
+
22
+ is_source_repo_mode() {
23
+ [ -d "$PROJECT_ROOT/src/system" ] && [ -f "$PROJECT_ROOT/scripts/build-obfuscate-system.mjs" ]
24
+ }
25
+
26
+ package_generated_project() {
27
+ VERSION=$(grep '"version"' package.json | head -1 | sed 's/.*: *"\([^"]*\)".*/\1/')
28
+ COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
29
+ BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
30
+
31
+ echo ""
32
+ echo " Entity App Server v${VERSION} · ${COMMIT} · ${BUILD_TIME}"
33
+ echo ""
34
+
35
+ echo " [1/3] Packaging runtime files..."
36
+
37
+ rm -rf dist
38
+ mkdir -p dist/scripts
39
+
40
+ [ -f "system.js" ] && cp "system.js" dist/system.js
41
+ [ -f "system-api.js" ] && cp "system-api.js" dist/system-api.js
42
+ [ -f "tsconfig.json" ] && cp "tsconfig.json" dist/tsconfig.json
43
+
44
+ [ -d "app" ] && cp -R app dist/app
45
+ [ -d "configs" ] && cp -R configs dist/configs
46
+ [ -d "entities" ] && cp -R entities dist/entities
47
+
48
+ for script in build.sh reset-all.sh run.sh entity.sh update-server.sh service-install.sh service-remove.sh; do
49
+ [ -f "scripts/$script" ] && install -m 755 "scripts/$script" "dist/scripts/$script"
50
+ done
51
+
52
+ if [ -d "docs" ]; then
53
+ cp -R docs dist/docs
54
+ fi
55
+
56
+ [ -f ".env.example" ] && cp .env.example dist/.env
57
+ [ -f ".env.example" ] && cp .env.example dist/.env.example
58
+ [ -f ".gateway-version" ] && cp .gateway-version dist/.gateway-version
59
+
60
+ echo " ✓ dist/"
61
+
62
+ if [ "${1:-}" != "--no-tar" ]; then
63
+ echo " [2/3] Creating dist.tar.gz..."
64
+ (cd dist && tar -czf "$PROJECT_ROOT/dist.tar.gz" .)
65
+ echo " ✓ dist.tar.gz"
66
+ else
67
+ echo " [2/3] Skipped dist.tar.gz (--no-tar)"
68
+ fi
69
+
70
+ echo " [3/3] Done"
71
+ echo ""
72
+ echo " 실행: ./scripts/run.sh start"
73
+ echo " 개발: ./scripts/run.sh dev"
74
+ echo ""
75
+ }
76
+
77
+ if ! is_source_repo_mode; then
78
+ package_generated_project "$1"
79
+ exit 0
80
+ fi
81
+
82
+ replace_example_configs() {
83
+ local target_root="$1"
84
+
85
+ for scope in plugins routes schedules; do
86
+ [ -d "$target_root/app/$scope" ] || continue
87
+
88
+ find "$target_root/app/$scope" -name "config.example.json" | while read -r file; do
89
+ dir="$(dirname "$file")"
90
+ rm -f "$dir/config.json"
91
+ cp "$file" "$dir/config.json"
92
+ rm -f "$file"
93
+ done
94
+ done
95
+ }
96
+
97
+ VERSION=$(grep '"version"' package.json | head -1 | sed 's/.*: *"\([^"]*\)".*/\1/')
98
+ COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
99
+ BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
100
+
101
+ echo ""
102
+ echo " Entity Server Gateway v${VERSION} · ${COMMIT} · ${BUILD_TIME}"
103
+ echo ""
104
+
105
+ # ─── [1/5] TypeScript 빌드 (난독화 번들 + 타입 체크) ──────────────────────────
106
+
107
+ echo " [1/5] Building TypeScript..."
108
+ npm run build
109
+ node "$SCRIPT_DIR/build-obfuscate-system.mjs" 2>&1 | grep -v "\[javascript-obfuscator\]" || true
110
+ echo " ✓ dist/system.js (난독화 번들)"
111
+ echo " ✓ dist/system-api.js (공개 API 번들)"
112
+
113
+ # ─── [2/5] 소스 복사 ──────────────────────────────────────────────────────────
114
+
115
+ echo " [2/5] Copying sources..."
116
+
117
+ # 이전 빌드 잔재 system/ 폴더 제거 (system-api.js 번들로 대체됨)
118
+ rm -rf dist/system
119
+
120
+ # app/ — 사용자 편집 가능 TypeScript 소스
121
+ rm -rf dist/app
122
+ cp -r src/app dist/app
123
+
124
+ # example config 초기화:
125
+ # - plugins/routes/schedules 에 config.example.json 이 있으면 dist 의 config.json 으로 교체
126
+ # - source config.json 은 deploy/minify 판단용으로만 유지
127
+ replace_example_configs "dist"
128
+
129
+ echo " ✓ dist/app/ (plugins/routes/schedules config.json ← config.example.json)"
130
+
131
+ # deploy 가 true가 아닌 항목(false 또는 누락)은 dist에서 제거
132
+ for category in plugins routes schedules; do
133
+ src_base="src/app/${category}"
134
+ dist_base="dist/app/${category}"
135
+ for cfg in "${src_base}"/*/config.json "${src_base}"/*/*/config.json; do
136
+ [ -f "$cfg" ] || continue
137
+ if ! grep -q '"deploy"[[:space:]]*:[[:space:]]*true' "$cfg" 2>/dev/null; then
138
+ rel="${cfg#${src_base}/}"
139
+ name="${rel%/config.json}"
140
+ rm -rf "${dist_base}/${name}"
141
+ echo " ✗ app/${category}/${name} (배포 제외)"
142
+ fi
143
+ done
144
+ done
145
+
146
+ # 난독화 실행 (복사 후 dist .ts 파일 인플레이스 처리)
147
+ node "$SCRIPT_DIR/build-minify-plugins.mjs" 2>&1 | grep -v "\[javascript-obfuscator\]" || true
148
+
149
+ # 배포 결과물의 app config 는 config.example.json 기준으로 생성됨
150
+
151
+ # tsconfig.json — tsx 런타임 경로 별칭 (@system/* @app/*)
152
+ cp "$SCRIPT_DIR/dist-tsconfig.json" dist/tsconfig.json
153
+ echo " ✓ dist/tsconfig.json"
154
+
155
+ # ─── [3/5] 설정·리소스 복사 ────────────────────────────────────────────────────
156
+
157
+ echo " [3/5] Packaging resources..."
158
+
159
+ # configs/
160
+ if [ -d "configs" ]; then
161
+ rm -rf dist/configs && mkdir -p dist/configs
162
+ cp -r configs/. dist/configs/
163
+ fi
164
+
165
+ # entities/
166
+ if [ -d "entities" ]; then
167
+ rm -rf dist/entities && mkdir -p dist/entities
168
+ cp -r entities/. dist/entities/
169
+ fi
170
+
171
+ # scripts/
172
+ mkdir -p dist/scripts
173
+ for script in build.sh reset-all.sh run.sh entity.sh update-server.sh service-install.sh service-remove.sh; do
174
+ [ -f "scripts/$script" ] && install -m 755 "scripts/$script" "dist/scripts/$script"
175
+ done
176
+
177
+ # docs/ (design/ 제외)
178
+ if [ -d "docs" ]; then
179
+ rm -rf dist/docs
180
+ cp -r docs dist/docs
181
+ rm -rf dist/docs/design
182
+ fi
183
+
184
+ # .env / .env.example
185
+ [ -f ".env.example" ] && cp .env.example dist/.env
186
+ [ -f ".env.example" ] && cp .env.example dist/.env.example
187
+ printf 'v%s\n' "$VERSION" > dist/.gateway-version
188
+
189
+ echo " ✓ configs/ entities/ scripts/ docs/ .env .env.example"
190
+
191
+ # ─── [4/5] create 템플릿 패키징 ───────────────────────────────────────────────
192
+
193
+ echo " [4/5] Packaging dist-create/..."
194
+
195
+ rm -rf dist-create
196
+ mkdir -p dist-create/template
197
+
198
+ for entry in app configs docs scripts system.js system-api.js tsconfig.json .env .env.example .gateway-version; do
199
+ [ -e "dist/$entry" ] && cp -R "dist/$entry" dist-create/template/
200
+ done
201
+
202
+ echo " ✓ dist-create/template/"
203
+
204
+ # ─── [5/5] tar.gz 패키징 ──────────────────────────────────────────────────────
205
+
206
+ if [ "$1" != "--no-tar" ]; then
207
+ echo " [5/5] Creating dist.tar.gz..."
208
+ (cd dist && tar -czf "$PROJECT_ROOT/dist.tar.gz" .)
209
+ echo " ✓ dist.tar.gz"
210
+ else
211
+ echo " [5/5] Skipped dist.tar.gz (--no-tar)"
212
+ fi
213
+
214
+ echo ""
215
+ echo " Done."
216
+ echo ""
217
+ echo " 스크립트 사용법:"
218
+ echo " ./scripts/run.sh start # 프로덕션 실행"
219
+ echo " ./scripts/run.sh stop # 서버 종료"
220
+ echo " ./scripts/run.sh dev # 개발 모드 (tsx watch)"
221
+ echo ""
222
+
@@ -2,7 +2,7 @@
2
2
  # run.sh — Entity App Server 실행 / 종료
3
3
  #
4
4
  # 사용법:
5
- # ./scripts/run.sh start — 프로덕션 모드 백그라운드 실행 (dist/system.js)
5
+ # ./scripts/run.sh start — 프로덕션 모드 백그라운드 실행 (dist/system.js 또는 system.js)
6
6
  # ./scripts/run.sh stop — 실행 중인 서버 종료
7
7
  # ./scripts/run.sh dev — 개발 모드 실행 (tsx watch)
8
8
 
@@ -272,6 +272,20 @@ show_port_in_use_error() {
272
272
  echo " 먼저 종료하려면: $0 stop"
273
273
  }
274
274
 
275
+ get_runtime_entry() {
276
+ if [ -f "$PROJECT_ROOT/dist/system.js" ]; then
277
+ echo "$PROJECT_ROOT/dist/system.js"
278
+ return 0
279
+ fi
280
+
281
+ if [ -f "$PROJECT_ROOT/system.js" ]; then
282
+ echo "$PROJECT_ROOT/system.js"
283
+ return 0
284
+ fi
285
+
286
+ return 1
287
+ }
288
+
275
289
  ensure_port_available() {
276
290
  mapfile -t PORT_PIDS < <(find_gateway_pids)
277
291
  if [ "${#PORT_PIDS[@]}" -gt 0 ]; then
@@ -312,7 +326,7 @@ _print_help() {
312
326
  echo " 사용법: $0 <명령>"
313
327
  echo ""
314
328
  echo " 명령:"
315
- echo " start 프로덕션 모드로 백그라운드 실행 (dist/system.js)"
329
+ echo " start 프로덕션 모드로 백그라운드 실행 (dist/system.js 또는 system.js)"
316
330
  echo " stop 실행 중인 서버 종료"
317
331
  echo " status 실행 상태 확인"
318
332
  echo " dev 개발 모드 실행 (tsx watch)"
@@ -345,14 +359,16 @@ fi
345
359
 
346
360
  case "$1" in
347
361
  start)
362
+ local_runtime_entry=""
348
363
  ensure_port_available
349
364
  ensure_env_ready
350
365
  ensure_runtime_dependencies_installed
351
366
  verify_entity_server_credentials
352
367
 
353
- if [ ! -f "dist/system.js" ]; then
354
- echo "❌ dist/system.js 없습니다. 먼저 빌드하세요:"
355
- echo " ./scripts/build.sh prod"
368
+ if ! local_runtime_entry="$(get_runtime_entry)"; then
369
+ echo "❌ 실행할 system.js 찾지 못했습니다."
370
+ echo " dist/system.js 또는 system.js 중 하나가 있어야 합니다."
371
+ echo " 패키지가 손상됐다면 ./scripts/update-server.sh latest 를 다시 실행하세요."
356
372
  exit 1
357
373
  fi
358
374
 
@@ -368,7 +384,7 @@ case "$1" in
368
384
  fi
369
385
 
370
386
  mkdir -p "$(dirname "$LOG_FILE")"
371
- nohup node --import tsx/esm dist/system.js >> "$LOG_FILE" 2>&1 &
387
+ nohup node --import tsx/esm "$local_runtime_entry" >> "$LOG_FILE" 2>&1 &
372
388
  echo $! > "$PID_FILE"
373
389
  PID=$(cat "$PID_FILE")
374
390
 
@@ -14,7 +14,7 @@ PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
14
14
  PACKAGE_NAME="create-entity-app-server"
15
15
  VERSION_FILE="$PROJECT_ROOT/.gateway-version"
16
16
  PID_FILE="$PROJECT_ROOT/.gateway.pid"
17
- MANAGED_SCRIPTS=("run.sh" "entity.sh" "reset-all.sh" "update-server.sh" "service-install.sh" "service-remove.sh")
17
+ MANAGED_SCRIPTS=("build.sh" "run.sh" "entity.sh" "reset-all.sh" "update-server.sh" "service-install.sh" "service-remove.sh")
18
18
  MANAGED_FILES=("system.js" "system-api.js" "tsconfig.json" ".env.example" ".gateway-version")
19
19
 
20
20
  cd "$PROJECT_ROOT"