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.
- package/dist-create/template/.gateway-version +1 -1
- package/dist-create/template/app/plugins/ocr/cache.ts +1 -1
- package/dist-create/template/app/plugins/ocr/config.ts +1 -1
- package/dist-create/template/app/plugins/ocr/direction.ts +1 -1
- package/dist-create/template/app/plugins/ocr/dispatch.ts +1 -1
- package/dist-create/template/app/plugins/ocr/entity-adapter.ts +1 -1
- package/dist-create/template/app/plugins/ocr/errors.ts +1 -1
- package/dist-create/template/app/plugins/ocr/handlers.ts +1 -1
- package/dist-create/template/app/plugins/ocr/index.ts +1 -1
- package/dist-create/template/app/plugins/ocr/llm-parser.ts +1 -1
- package/dist-create/template/app/plugins/ocr/parsing-pipeline.ts +1 -1
- package/dist-create/template/app/plugins/ocr/pdf-converter.ts +1 -1
- package/dist-create/template/app/plugins/ocr/preprocessor.ts +1 -1
- package/dist-create/template/app/plugins/ocr/providers/aws.ts +1 -1
- package/dist-create/template/app/plugins/ocr/providers/azure.ts +1 -1
- package/dist-create/template/app/plugins/ocr/providers/google.ts +1 -1
- package/dist-create/template/app/plugins/ocr/providers/index.ts +1 -1
- package/dist-create/template/app/plugins/ocr/providers/naver.ts +1 -1
- package/dist-create/template/app/plugins/ocr/providers/tesseract.ts +1 -1
- package/dist-create/template/app/plugins/ocr/providers/upstage.ts +1 -1
- package/dist-create/template/app/plugins/ocr/quota.ts +1 -1
- package/dist-create/template/app/plugins/ocr/refiner.ts +1 -1
- package/dist-create/template/app/plugins/ocr/routes.ts +1 -1
- package/dist-create/template/app/plugins/ocr/service.ts +1 -1
- package/dist-create/template/app/plugins/ocr/template-loader.ts +1 -1
- package/dist-create/template/app/plugins/ocr/template-matcher.ts +1 -1
- package/dist-create/template/app/plugins/ocr/types/config.ts +1 -1
- package/dist-create/template/app/plugins/ocr/types/driver.ts +1 -1
- package/dist-create/template/app/plugins/ocr/types/index.ts +1 -1
- package/dist-create/template/app/plugins/ocr/types/parsed.ts +1 -1
- package/dist-create/template/app/plugins/ocr/types/store.ts +1 -1
- package/dist-create/template/app/plugins/ocr/types/template.ts +1 -1
- package/dist-create/template/app/plugins/ocr/utils.ts +1 -1
- package/dist-create/template/docs/scripts-guide.md +1 -1
- package/dist-create/template/scripts/build.sh +222 -0
- package/dist-create/template/scripts/run.sh +22 -6
- package/dist-create/template/scripts/update-server.sh +1 -1
- package/dist-create/template/system-api.js +1 -1
- package/dist-create/template/system.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
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
|
|
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(
|
|
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';
|
|
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
|
|
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';
|
|
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
|
|
354
|
-
echo "❌
|
|
355
|
-
echo "
|
|
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
|
-
|
|
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"
|