@things-factory/operato-tools 6.2.15 → 6.2.17

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 (46) hide show
  1. package/_index.html +1 -1
  2. package/client/actions/main.js +1 -1
  3. package/client/pages/generator/button-config-tab-mixin.js +4 -4
  4. package/client/pages/generator/column-config-tab-mixin.js +4 -4
  5. package/client/pages/generator/etc-config-tab-mixin.js +4 -4
  6. package/client/pages/generator/form-config-tab-mixin.js +4 -4
  7. package/client/pages/generator/graphql-config-tab-mixin.js +24 -24
  8. package/client/pages/generator/grid-config-tab-mixin.js +22 -22
  9. package/client/pages/generator/grid-emphasized-config-tab-mixin.js +8 -8
  10. package/client/pages/generator/menu-config-tab-mixin.js +11 -11
  11. package/client/pages/generator/meta-generator-page.js +11 -11
  12. package/client/pages/generator/search-config-tab-mixin.js +4 -4
  13. package/client/pages/generator/tab-config-tab-mixin.js +4 -4
  14. package/client/pages/main.js +4 -4
  15. package/client/reducers/main.js +1 -1
  16. package/dist-server/constants/error-code.js +1 -0
  17. package/dist-server/constants/error-code.js.map +1 -0
  18. package/dist-server/controllers/index.js +1 -0
  19. package/dist-server/controllers/index.js.map +1 -0
  20. package/dist-server/errors/index.js +5 -0
  21. package/dist-server/errors/index.js.map +1 -0
  22. package/dist-server/errors/license-error.js +1 -0
  23. package/dist-server/errors/license-error.js.map +1 -0
  24. package/dist-server/index.js +8 -0
  25. package/dist-server/index.js.map +1 -0
  26. package/dist-server/middlewares/index.js +19 -0
  27. package/dist-server/middlewares/index.js.map +1 -0
  28. package/dist-server/migrations/index.js +12 -0
  29. package/dist-server/migrations/index.js.map +1 -0
  30. package/dist-server/routes.js +1 -0
  31. package/dist-server/routes.js.map +1 -0
  32. package/dist-server/service/index.js +18 -0
  33. package/dist-server/service/index.js.map +1 -0
  34. package/dist-server/service/tool-entity/create-menu.js +1 -0
  35. package/dist-server/service/tool-entity/create-menu.js.map +1 -0
  36. package/dist-server/service/tool-entity/create-service.js +1 -0
  37. package/dist-server/service/tool-entity/create-service.js.map +1 -0
  38. package/dist-server/service/tool-entity/index.js +7 -0
  39. package/dist-server/service/tool-entity/index.js.map +1 -0
  40. package/dist-server/service/tool-secret/index.js +6 -0
  41. package/dist-server/service/tool-secret/index.js.map +1 -0
  42. package/dist-server/service/tool-secret/tool-permission.js +1 -0
  43. package/dist-server/service/tool-secret/tool-permission.js.map +1 -0
  44. package/dist-server/service/tool-secret/tool-resolver.js +1 -0
  45. package/dist-server/service/tool-secret/tool-resolver.js.map +1 -0
  46. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- function a0_0x2021(_0x3f3012,_0x1f62c5){var _0x5ad396=a0_0x5ad3();return a0_0x2021=function(_0x202173,_0x33c7e2){_0x202173=_0x202173-0x1b1;var _0x426a00=_0x5ad396[_0x202173];return _0x426a00;},a0_0x2021(_0x3f3012,_0x1f62c5);}var a0_0x18b213=a0_0x2021;(function(_0x231446,_0x10b51b){var _0x490365=a0_0x2021,_0xac292=_0x231446();while(!![]){try{var _0x4fa775=-parseInt(_0x490365(0x1bc))/0x1+-parseInt(_0x490365(0x1b3))/0x2*(parseInt(_0x490365(0x1b1))/0x3)+parseInt(_0x490365(0x1be))/0x4+parseInt(_0x490365(0x1c0))/0x5*(parseInt(_0x490365(0x1b9))/0x6)+-parseInt(_0x490365(0x1c2))/0x7*(parseInt(_0x490365(0x1b7))/0x8)+parseInt(_0x490365(0x1b2))/0x9+-parseInt(_0x490365(0x1b4))/0xa*(parseInt(_0x490365(0x1ba))/0xb);if(_0x4fa775===_0x10b51b)break;else _0xac292['push'](_0xac292['shift']());}catch(_0x51a964){_0xac292['push'](_0xac292['shift']());}}}(a0_0x5ad3,0x9a971));function a0_0x5ad3(){var _0x55f97a=['78OyUGlx','10108503zqkKab','11746UiNEWA','70jxUZWb','define','customElements','13696lZlFnl','operato-tools-main','18ZSggBX','356576VbZxJt','render','69661SNGDSf','context','3887896HzAohr','styles','166885EzeAUA','Operato\x20Tools','4550BFzhKK'];a0_0x5ad3=function(){return _0x55f97a;};return a0_0x5ad3();}import{html,css}from'lit-element';import{connect}from'pwa-helpers/connect-mixin.js';import{store,PageView}from'@things-factory/shell';import{TermsUtil}from'@things-factory/meta-ui';class OperatoToolsMain extends connect(store)(PageView){static get[a0_0x18b213(0x1bf)](){return[css`
1
+ function a0_0x183e(){var _0x5f8e14=['define','4161640WaChkb','2cPKxxe','2038760CtXcTF','9oNJwEz','Operato\x20Tools','6932261mjAewP','2960922hUYQWz','3524660SAKYVJ','394662yGFfTf','tText','3222gdauoP','7085yMoytW'];a0_0x183e=function(){return _0x5f8e14;};return a0_0x183e();}var a0_0xd4568c=a0_0x5e22;(function(_0x10708a,_0x13f249){var _0x72e16b=a0_0x5e22,_0x5bb4d8=_0x10708a();while(!![]){try{var _0x4349b8=parseInt(_0x72e16b(0x139))/0x1+parseInt(_0x72e16b(0x132))/0x2*(parseInt(_0x72e16b(0x137))/0x3)+-parseInt(_0x72e16b(0x131))/0x4+parseInt(_0x72e16b(0x13c))/0x5*(parseInt(_0x72e16b(0x13b))/0x6)+-parseInt(_0x72e16b(0x136))/0x7+-parseInt(_0x72e16b(0x133))/0x8*(-parseInt(_0x72e16b(0x134))/0x9)+parseInt(_0x72e16b(0x138))/0xa;if(_0x4349b8===_0x13f249)break;else _0x5bb4d8['push'](_0x5bb4d8['shift']());}catch(_0x5e2421){_0x5bb4d8['push'](_0x5bb4d8['shift']());}}}(a0_0x183e,0xaf927));import{html,css}from'lit-element';import{connect}from'pwa-helpers/connect-mixin.js';import{store,PageView}from'@things-factory/shell';function a0_0x5e22(_0x4337a0,_0x4a89a5){var _0x183e77=a0_0x183e();return a0_0x5e22=function(_0x5e22f0,_0x3258a9){_0x5e22f0=_0x5e22f0-0x131;var _0x24504c=_0x183e77[_0x5e22f0];return _0x24504c;},a0_0x5e22(_0x4337a0,_0x4a89a5);}import{TermsUtil}from'@things-factory/meta-ui';class OperatoToolsMain extends connect(store)(PageView){static get['styles'](){return[css`
2
2
  :host {
3
3
  display: block;
4
4
  background-color: var(--main-section-background-color);
@@ -41,11 +41,11 @@ function a0_0x2021(_0x3f3012,_0x1f62c5){var _0x5ad396=a0_0x5ad3();return a0_0x20
41
41
  display: none;
42
42
  }
43
43
  }
44
- `];}get[a0_0x18b213(0x1bd)](){var _0x2a285d=a0_0x18b213;return{'title':_0x2a285d(0x1c1),'actions':[]};}[a0_0x18b213(0x1bb)](){return html`
44
+ `];}get['context'](){var _0x417224=a0_0x5e22;return{'title':_0x417224(0x135),'actions':[]};}['render'](){var _0x3b7940=a0_0x5e22;return html`
45
45
  <h2>Operato Tools</h2>
46
46
  <p page-description>
47
- ${TermsUtil['tText']('tool\x20start\x20msg')}
47
+ ${TermsUtil[_0x3b7940(0x13a)]('tool\x20start\x20msg')}
48
48
  </p>
49
49
 
50
50
  <img src="/assets/images/operato-tools.png" />
51
- `;}}window[a0_0x18b213(0x1b6)][a0_0x18b213(0x1b5)](a0_0x18b213(0x1b8),OperatoToolsMain);
51
+ `;}}window['customElements'][a0_0xd4568c(0x13d)]('operato-tools-main',OperatoToolsMain);
@@ -1 +1 @@
1
- const a0_0x406ffa=a0_0x4c50;(function(_0x26e795,_0xe29c85){const _0x102d2a=a0_0x4c50,_0x51431d=_0x26e795();while(!![]){try{const _0x2768d5=parseInt(_0x102d2a(0xf5))/0x1+-parseInt(_0x102d2a(0xf0))/0x2*(parseInt(_0x102d2a(0xee))/0x3)+-parseInt(_0x102d2a(0xec))/0x4+-parseInt(_0x102d2a(0xed))/0x5*(parseInt(_0x102d2a(0xf2))/0x6)+parseInt(_0x102d2a(0xef))/0x7*(-parseInt(_0x102d2a(0xf4))/0x8)+-parseInt(_0x102d2a(0xf6))/0x9*(-parseInt(_0x102d2a(0xf7))/0xa)+parseInt(_0x102d2a(0xeb))/0xb;if(_0x2768d5===_0xe29c85)break;else _0x51431d['push'](_0x51431d['shift']());}catch(_0x3643ed){_0x51431d['push'](_0x51431d['shift']());}}}(a0_0x2129,0xd8cdf));import a0_0x40ccf4 from'graphql-tag';import{i18next}from'@operato/i18n';import{store}from'@operato/shell';import{client,gqlContext}from'@operato/graphql';import{UPDATE_OPERATO_TOOLS}from'../actions/main';const INITIAL_STATE={'operatoTools':a0_0x406ffa(0xea),'studioPermission':!0x1};export const UPDATE_OPERATO_TOOLS_PERMISSION='UPDATE_OPERATO_TOOLS_PERMISSION';function a0_0x2129(){const _0x2ba659=['dispatch','2295080ZEotfo','307203gfVfvI','1910529LojSsw','10WbzNwE','ABC','40912080AKTiGy','2641216XTvTng','4668595PNaEjK','3VigvIm','7REtcOq','2939650sajUuN','studioPermission','6bczZQw'];a0_0x2129=function(){return _0x2ba659;};return a0_0x2129();}((async()=>{const _0x28d554=a0_0x406ffa;var _0x4a5765=await client['query']({'query':a0_0x40ccf4`{studioPermission}`});let _0x496d7b=!0x1;_0x4a5765['errors']||(_0x496d7b=_0x4a5765['data'][_0x28d554(0xf1)]),store[_0x28d554(0xf3)]({'type':UPDATE_OPERATO_TOOLS_PERMISSION,'state':{'studioPermission':_0x496d7b}});})());function a0_0x4c50(_0x518b3c,_0x227430){const _0x21295f=a0_0x2129();return a0_0x4c50=function(_0x4c5095,_0x250031){_0x4c5095=_0x4c5095-0xea;let _0x270297=_0x21295f[_0x4c5095];return _0x270297;},a0_0x4c50(_0x518b3c,_0x227430);}const operatoTools=(_0x2d2840=INITIAL_STATE,_0x4fd347)=>{switch(_0x4fd347['type']){case UPDATE_OPERATO_TOOLS:return{..._0x2d2840};case UPDATE_OPERATO_TOOLS_PERMISSION:return{...INITIAL_STATE,..._0x4fd347['state']};default:return _0x2d2840;}};export default operatoTools;
1
+ const a0_0x26e6d2=a0_0x58fd;(function(_0x991a8e,_0x50ecb9){const _0x15993c=a0_0x58fd,_0x224ba7=_0x991a8e();while(!![]){try{const _0x1a9aa1=-parseInt(_0x15993c(0x189))/0x1*(-parseInt(_0x15993c(0x194))/0x2)+parseInt(_0x15993c(0x18a))/0x3+-parseInt(_0x15993c(0x188))/0x4*(-parseInt(_0x15993c(0x18f))/0x5)+parseInt(_0x15993c(0x18b))/0x6+parseInt(_0x15993c(0x187))/0x7*(-parseInt(_0x15993c(0x191))/0x8)+parseInt(_0x15993c(0x193))/0x9+-parseInt(_0x15993c(0x18d))/0xa;if(_0x1a9aa1===_0x50ecb9)break;else _0x224ba7['push'](_0x224ba7['shift']());}catch(_0x304c71){_0x224ba7['push'](_0x224ba7['shift']());}}}(a0_0x3667,0x48a39));import a0_0x5466d1 from'graphql-tag';import{i18next}from'@operato/i18n';import{store}from'@operato/shell';import{client,gqlContext}from'@operato/graphql';function a0_0x58fd(_0xc624fc,_0x149b95){const _0x3667eb=a0_0x3667();return a0_0x58fd=function(_0x58fd8a,_0x412225){_0x58fd8a=_0x58fd8a-0x186;let _0x137e68=_0x3667eb[_0x58fd8a];return _0x137e68;},a0_0x58fd(_0xc624fc,_0x149b95);}function a0_0x3667(){const _0x2f4bf0=['15FHhWNG','dispatch','4672088mpqznZ','ABC','3857508dKFtyz','5258LkzOLV','UPDATE_OPERATO_TOOLS_PERMISSION','errors','type','7OfdsEc','485004wLZrZh','53mRQxoz','1233543djYaFF','1328850OYNsbn','studioPermission','6828180ofHToV','state'];a0_0x3667=function(){return _0x2f4bf0;};return a0_0x3667();}import{UPDATE_OPERATO_TOOLS}from'../actions/main';const INITIAL_STATE={'operatoTools':a0_0x26e6d2(0x192),'studioPermission':!0x1};export const UPDATE_OPERATO_TOOLS_PERMISSION=a0_0x26e6d2(0x195);((async()=>{const _0x3db8a3=a0_0x26e6d2;var _0x3ce64a=await client['query']({'query':a0_0x5466d1`{studioPermission}`});let _0x1af570=!0x1;_0x3ce64a[_0x3db8a3(0x196)]||(_0x1af570=_0x3ce64a['data'][_0x3db8a3(0x18c)]),store[_0x3db8a3(0x190)]({'type':UPDATE_OPERATO_TOOLS_PERMISSION,'state':{'studioPermission':_0x1af570}});})());const operatoTools=(_0x477b40=INITIAL_STATE,_0x1e6fd4)=>{const _0x114d15=a0_0x26e6d2;switch(_0x1e6fd4[_0x114d15(0x186)]){case UPDATE_OPERATO_TOOLS:return{..._0x477b40};case UPDATE_OPERATO_TOOLS_PERMISSION:return{...INITIAL_STATE,..._0x1e6fd4[_0x114d15(0x18e)]};default:return _0x477b40;}};export default operatoTools;
@@ -0,0 +1 @@
1
+ 'use strict';var a0_0x2e25bd=a0_0x342b;(function(_0x2f0bd0,_0x4ef72f){var _0xecc434=a0_0x342b,_0x2f9d72=_0x2f0bd0();while(!![]){try{var _0x3f4dee=parseInt(_0xecc434(0xad))/0x1+-parseInt(_0xecc434(0xa2))/0x2*(-parseInt(_0xecc434(0xa6))/0x3)+-parseInt(_0xecc434(0xa8))/0x4*(-parseInt(_0xecc434(0xab))/0x5)+-parseInt(_0xecc434(0xaa))/0x6+parseInt(_0xecc434(0xae))/0x7+parseInt(_0xecc434(0xa9))/0x8+parseInt(_0xecc434(0xa1))/0x9*(-parseInt(_0xecc434(0xa3))/0xa);if(_0x3f4dee===_0x4ef72f)break;else _0x2f9d72['push'](_0x2f9d72['shift']());}catch(_0x5908ae){_0x2f9d72['push'](_0x2f9d72['shift']());}}}(a0_0x9043,0x66bcb));function a0_0x342b(_0x5099f0,_0x15c573){var _0x9043bd=a0_0x9043();return a0_0x342b=function(_0x342b3,_0x6c98eb){_0x342b3=_0x342b3-0xa0;var _0xd67fd9=_0x9043bd[_0x342b3];return _0xd67fd9;},a0_0x342b(_0x5099f0,_0x15c573);}function a0_0x9043(){var _0x16f0e1=['2153392xQNFUY','4467384aTcJig','505dPJfMS','OVER_LIMIT','717064DCDVnk','61754QKgxVU','__esModule','error.invalid\x20license\x20key','36ImFtob','110LGeMuk','924230ThUDPc','defineProperty','error.page\x20count\x20over\x20license\x20limit','7077zjgKEe','INVALID_LICENSE','16248sGMcXx'];a0_0x9043=function(){return _0x16f0e1;};return a0_0x9043();}Object[a0_0x2e25bd(0xa4)](exports,a0_0x2e25bd(0xaf),{'value':!0x0}),exports[a0_0x2e25bd(0xac)]=exports[a0_0x2e25bd(0xa7)]=void 0x0,exports[a0_0x2e25bd(0xa7)]=a0_0x2e25bd(0xa0),exports['OVER_LIMIT']=a0_0x2e25bd(0xa5);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-code.js","sourceRoot":"","sources":["../../server/constants/error-code.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,2BAA2B,CAAA;AAC7C,QAAA,UAAU,GAAG,qCAAqC,CAAA","sourcesContent":["export const INVALID_LICENSE = 'error.invalid license key'\nexport const OVER_LIMIT = 'error.page count over license limit'\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./license-error"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/errors/index.ts"],"names":[],"mappings":";;;AAAA,0DAA+B","sourcesContent":["export * from './license-error'\n"]}
@@ -0,0 +1 @@
1
+ 'use strict';const a0_0x1c81df=a0_0x161d;(function(_0x201d48,_0x106e04){const _0x2c5c34=a0_0x161d,_0x15ae64=_0x201d48();while(!![]){try{const _0x189ba3=-parseInt(_0x2c5c34(0x192))/0x1+parseInt(_0x2c5c34(0x185))/0x2+-parseInt(_0x2c5c34(0x18c))/0x3*(parseInt(_0x2c5c34(0x18a))/0x4)+-parseInt(_0x2c5c34(0x18e))/0x5*(-parseInt(_0x2c5c34(0x188))/0x6)+-parseInt(_0x2c5c34(0x186))/0x7+parseInt(_0x2c5c34(0x184))/0x8+-parseInt(_0x2c5c34(0x187))/0x9;if(_0x189ba3===_0x106e04)break;else _0x15ae64['push'](_0x15ae64['shift']());}catch(_0x1eb909){_0x15ae64['push'](_0x15ae64['shift']());}}}(a0_0x4402,0x883a4));function a0_0x4402(){const _0x8134cc=['5HZEPbV','name','LicenseError','ERROR_CODES','4479uUGwzG','detail','errorCode','__importStar','8860136yJjktw','2143044CYhYGd','6277978znZKPu','12472218wvEsqE','4536786VbuKGS','tslib','360188oolUar','../constants/error-code','3NFuBvN','__esModule'];a0_0x4402=function(){return _0x8134cc;};return a0_0x4402();}Object['defineProperty'](exports,a0_0x1c81df(0x18d),{'value':!0x0}),exports[a0_0x1c81df(0x190)]=void 0x0;const tslib_1=require(a0_0x1c81df(0x189)),ERROR_CODES=tslib_1[a0_0x1c81df(0x183)](require(a0_0x1c81df(0x18b)));class LicenseError extends Error{static get[a0_0x1c81df(0x191)](){return Object['assign']({},ERROR_CODES);}constructor({errorCode:_0x3ba3e8,detail:_0x3a1beb}){const _0x15b7f8=a0_0x1c81df;super(_0x3ba3e8),this[_0x15b7f8(0x18f)]='license-error',this[_0x15b7f8(0x182)]=_0x3ba3e8,this[_0x15b7f8(0x181)]=_0x3a1beb;}}function a0_0x161d(_0x4b9e3f,_0x270468){const _0x44020d=a0_0x4402();return a0_0x161d=function(_0x161d53,_0x269385){_0x161d53=_0x161d53-0x181;let _0x2fd04b=_0x44020d[_0x161d53];return _0x2fd04b;},a0_0x161d(_0x4b9e3f,_0x270468);}exports[a0_0x1c81df(0x190)]=LicenseError;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-error.js","sourceRoot":"","sources":["../../server/errors/license-error.ts"],"names":[],"mappings":";;;;AAAA,6EAAsD;AAMtD,MAAa,YAAa,SAAQ,KAAK;IACrC,MAAM,KAAK,WAAW;QACpB,yBACK,WAAW,EACf;IACH,CAAC;IAGD,YAAY,EAAE,SAAS,EAAE,MAAM,EAAwB;QACrD,KAAK,CAAC,SAAS,CAAC,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAdD,oCAcC","sourcesContent":["import * as ERROR_CODES from '../constants/error-code'\n\ntype LicenseErrorArgument = {\n errorCode: string\n detail?: Object\n}\nexport class LicenseError extends Error {\n static get ERROR_CODES(): any {\n return {\n ...ERROR_CODES\n }\n }\n errorCode: any\n detail: Object\n constructor({ errorCode, detail }: LicenseErrorArgument) {\n super(errorCode)\n this.name = 'license-error'\n this.errorCode = errorCode\n this.detail = detail\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ require("./routes");
5
+ tslib_1.__exportStar(require("./migrations"), exports);
6
+ tslib_1.__exportStar(require("./middlewares"), exports);
7
+ tslib_1.__exportStar(require("./service"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,oBAAkB;AAElB,uDAA4B;AAC5B,wDAA6B;AAC7B,oDAAyB","sourcesContent":["import './routes';\n\nexport * from './migrations'\nexport * from './middlewares'\nexport * from './service'\n"]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initMiddlewares = void 0;
4
+ const env_1 = require("@things-factory/env");
5
+ const operato_license_checker_1 = require("@things-factory/operato-license-checker");
6
+ function initMiddlewares(app) {
7
+ app.use(async (context, next) => {
8
+ const { request } = context;
9
+ let userAgent = request.header["user-agent"] || '';
10
+ if (userAgent.replace(/[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi, '').toLowerCase().indexOf('healthcheck') > -1) {
11
+ await next();
12
+ }
13
+ else {
14
+ await (0, operato_license_checker_1.checkValidity)(context, next, env_1.config, env_1.logger);
15
+ }
16
+ });
17
+ }
18
+ exports.initMiddlewares = initMiddlewares;
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/middlewares/index.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AACpD,qFAAuE;AAEvE,SAAgB,eAAe,CAAC,GAAG;IACjC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QAC3B,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;QAClD,IAAG,SAAS,CAAC,OAAO,CAAC,mDAAmD,EAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAC;YACrH,MAAM,IAAI,EAAE,CAAA;SACb;aAAM;YACL,MAAM,IAAA,uCAAa,EAAC,OAAO,EAAE,IAAI,EAAE,YAAM,EAAE,YAAM,CAAC,CAAA;SACnD;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAVD,0CAUC","sourcesContent":["import { config, logger } from '@things-factory/env'\nimport { checkValidity } from '@things-factory/operato-license-checker'\n\nexport function initMiddlewares(app) {\n app.use(async (context, next) => {\n const { request } = context\n let userAgent = request.header[\"user-agent\"] || ''\n if(userAgent.replace(/[\\{\\}\\[\\]\\/?.,;:|\\)*~`!^\\-_+<>@\\#$%&\\\\\\=\\(\\'\\\"]/gi,'').toLowerCase().indexOf('healthcheck') > -1){\n await next()\n } else {\n await checkValidity(context, next, config, logger)\n }\n })\n}\n"]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrations = void 0;
4
+ const glob = require('glob');
5
+ const path = require('path');
6
+ exports.migrations = [];
7
+ glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function (file) {
8
+ if (file.indexOf('index.js') !== -1)
9
+ return;
10
+ exports.migrations = exports.migrations.concat(Object.values(require(path.resolve(file))) || []);
11
+ });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/migrations/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB,QAAA,UAAU,GAAG,EAAE,CAAA;AAE1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAS,IAAI;IACzE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,OAAM;IAC3C,kBAAU,GAAG,kBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA","sourcesContent":["const glob = require('glob')\nconst path = require('path')\n\nexport var migrations = []\n\nglob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {\n if (file.indexOf('index.js') !== -1) return\n migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])\n})\n"]}
@@ -0,0 +1 @@
1
+ function a0_0x4c7e(){const _0x40e323=['debug','7jMXxuH','2757496IVSthZ','8876421JtqCTX','bootstrap-module-global-private-route','bootstrap-module-domain-private-route','150ujPEWC','6309LHOfFp','2783568FzhNKS','things-factory:operato-tools:routes','4601140PSmELj','5271528zAXNzg','1666552QrKLes'];a0_0x4c7e=function(){return _0x40e323;};return a0_0x4c7e();}function a0_0x2abf(_0x2fd425,_0x1c441c){const _0x4c7e2e=a0_0x4c7e();return a0_0x2abf=function(_0x2abf9e,_0x3c5e19){_0x2abf9e=_0x2abf9e-0x1b7;let _0x22eb2a=_0x4c7e2e[_0x2abf9e];return _0x22eb2a;},a0_0x2abf(_0x2fd425,_0x1c441c);}const a0_0x3480d0=a0_0x2abf;(function(_0x9fdc8e,_0x3b15fe){const _0x3bf259=a0_0x2abf,_0x18432d=_0x9fdc8e();while(!![]){try{const _0xc82a15=parseInt(_0x3bf259(0x1c0))/0x1*(parseInt(_0x3bf259(0x1bf))/0x2)+-parseInt(_0x3bf259(0x1c1))/0x3+parseInt(_0x3bf259(0x1b8))/0x4+parseInt(_0x3bf259(0x1c3))/0x5+-parseInt(_0x3bf259(0x1b7))/0x6*(parseInt(_0x3bf259(0x1ba))/0x7)+-parseInt(_0x3bf259(0x1bb))/0x8+parseInt(_0x3bf259(0x1bc))/0x9;if(_0xc82a15===_0x3b15fe)break;else _0x18432d['push'](_0x18432d['shift']());}catch(_0x27af1a){_0x18432d['push'](_0x18432d['shift']());}}}(a0_0x4c7e,0x9d83b));const debug=require(a0_0x3480d0(0x1b9))(a0_0x3480d0(0x1c2));process['on']('bootstrap-module-global-public-route',(_0x406bbc,_0x1f2686)=>{}),process['on'](a0_0x3480d0(0x1bd),(_0x21d533,_0x38e22f)=>{}),process['on']('bootstrap-module-domain-public-route',(_0x16d95a,_0x5f55ae)=>{}),process['on'](a0_0x3480d0(0x1be),(_0xea3eed,_0xa0b5c6)=>{});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,qCAAqC,CAAC,CAAA;AAErE,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;;;;OAKG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF;;OAEG;AACL,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF;;OAEG;AACL,CAAC,CAAC,CAAA","sourcesContent":["const debug = require('debug')('things-factory:operato-tools:routes')\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n /*\n * can add global public routes to application (auth not required, tenancy not required)\n *\n * ex) routes.get('/path', async(context, next) => {})\n * ex) routes.post('/path', async(context, next) => {})\n */\n})\n\nprocess.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {\n /*\n * can add global private routes to application (auth required, tenancy not required)\n */\n})\n\nprocess.on('bootstrap-module-domain-public-route' as any, (app, domainPublicRouter) => {\n /*\n * can add domain public routes to application (auth not required, tenancy required)\n */\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n /*\n * can add domain private routes to application (auth required, tenancy required)\n */\n})\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /* EXPORT ENTITY TYPES */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.schema = exports.entities = void 0;
5
+ /* IMPORT ENTITIES AND RESOLVERS */
6
+ const tool_secret_1 = require("./tool-secret");
7
+ const tool_entity_1 = require("./tool-entity");
8
+ exports.entities = [
9
+ /* ENTITIES */
10
+ ];
11
+ exports.schema = {
12
+ resolverClasses: [
13
+ /* RESOLVER CLASSES */
14
+ ...tool_secret_1.resolvers,
15
+ ...tool_entity_1.resolvers
16
+ ]
17
+ };
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";AAAA,yBAAyB;;;AAGzB,mCAAmC;AACnC,+CAA4D;AAC5D,+CAA4D;AAE/C,QAAA,QAAQ,GAAG;AACtB,cAAc;CACf,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,uBAAe;QAClB,GAAG,uBAAe;KACnB;CACF,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\n\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport { resolvers as secretResolvers } from './tool-secret'\nimport { resolvers as entityResolvers } from './tool-entity'\n\nexport const entities = [\n /* ENTITIES */\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...secretResolvers,\n ...entityResolvers\n ]\n}"]}
@@ -0,0 +1 @@
1
+ 'use strict';const a0_0x3eba60=a0_0x1373;(function(_0x50a16e,_0x4eaa1b){const _0x1191cc=a0_0x1373,_0x310d78=_0x50a16e();while(!![]){try{const _0x32f386=-parseInt(_0x1191cc(0x217))/0x1+parseInt(_0x1191cc(0x21f))/0x2*(parseInt(_0x1191cc(0x21e))/0x3)+parseInt(_0x1191cc(0x215))/0x4*(parseInt(_0x1191cc(0x240))/0x5)+parseInt(_0x1191cc(0x243))/0x6+-parseInt(_0x1191cc(0x232))/0x7+parseInt(_0x1191cc(0x1fe))/0x8+-parseInt(_0x1191cc(0x1e1))/0x9*(-parseInt(_0x1191cc(0x1fb))/0xa);if(_0x32f386===_0x4eaa1b)break;else _0x310d78['push'](_0x310d78['shift']());}catch(_0xc6c2d7){_0x310d78['push'](_0x310d78['shift']());}}}(a0_0x521e,0xf135d));function a0_0x521e(){const _0x5718c9=['name','108850ycVeAt','from','EntityColumn','4430528udwnnP','reverseSort','__esModule','rank','__decorate','hiddenFlag','\x20,\x22exportable\x22:\x20true','sort','h1z0q9i9x7q6','findOne','select\x20coalesce(max(rank),0)\x20as\x20rank\x20from\x20menus\x20where\x20parent_id\x20=\x20\x27','\x22,\x22width\x22:\x20100,\x22editable\x22:false,\x20\x22align\x22:\x20\x22center\x22,\x22object_opt\x22:{\x22queryName\x22:\x22users\x22}}',',\x22select_opt\x22:{\x22type\x22:\x22code\x22,\x22name\x22:\x22','\x22,\x22desc\x22:','\x22,\x22header\x22:\x20\x22','hidden','toString','parent','created_at','join','crypto','searchRank','save','59932xQwIZd','getRepository','1063804kTPBsu','design:paramtypes','substring','creator_id','dataProp','createSortCols','prototype','345183pROnHK','2aqRIQT','code','enc','randomBytes','gridRank','./../tool-secret/tool-permission','@things-factory/meta-ui/client/pages/meta-grist-page','assign','map','JSON','createCipheriv','refType','Menu','left','{\x22type\x22:\x20\x22object\x22,\x22name\x22:\x20\x22',',\x22select_opt\x22:{\x22type\x22:\x22scenario\x22,\x22name\x22:\x22','createSearchCols','__importDefault','template','7372316ZfNsBA','aes-256-cfb8','lodash','aes-256-ecb','Directive','state','checkStudioTemplateIsOverLimit','find','updater_id','Mutation','design:type','menuType','final','\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22name\x22:\x20\x22history\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22type\x22:\x20\x22basic\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22label\x22:\x20\x22data_history\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22icon\x22:\x20\x22history\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22logic\x22:\x20\x22history_copy\x22\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20','395tVVniG','split','readonly','1571520xokoEx','createMenuData','push','__metadata','string','tslib','__param','createGridColumns','Arg','aes-256-cfb','aes-256-cfb1','defineProperty','\x27\x20or\x20id\x20=\x20\x27','Entity','\x22,\x22hidden\x22:','entity','searchOper','routing','length','{\x22name\x22:\x22','query','sortRank','stringify','@things-factory/menu-base','updated_at','{\x22type\x22:\x20\x22datetime\x22,\x22name\x22:\x20\x22','{\x22name\x22:\x20\x22','filter','SCREEN','819IXnHIt','replace','update','\x22,\x22width\x22:\x20160,\x22editable\x22:false,\x20\x22align\x22:\x20\x22center\x22}','\x22,\x22width\x22:','toolCreateMenu','{\x22type\x22:\x20\x22','\x22,\x22name\x22:\x20\x22',',\x22mandatory\x22:\x20','type-graphql','Operato\x20Tool\x20Create\x20Menu','default','Resolver','OperatoToolCreateMenu','aes-256-cbc','\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22name\x22:\x20\x22history\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22type\x22:\x20\x22basic\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22label\x22:\x20\x22data_history\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22icon\x22:\x20\x22history\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x22logic\x22:\x20\x22history_json\x22\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20','COPY','hex','pluralize','resourceUrl','aes-256-ofb','@things-factory/resource-base','aes-256-ctr','refName','aes256'];a0_0x521e=function(){return _0x5718c9;};return a0_0x521e();}Object[a0_0x3eba60(0x24e)](exports,a0_0x3eba60(0x200),{'value':!0x0}),exports[a0_0x3eba60(0x1ee)]=void 0x0;const tslib_1=require(a0_0x3eba60(0x248)),type_graphql_1=require(a0_0x3eba60(0x1ea)),resource_base_1=require(a0_0x3eba60(0x1f6)),menu_base_1=require(a0_0x3eba60(0x1db)),tool_permission_1=require(a0_0x3eba60(0x224)),{camelCase:camelCase,startCase:startCase,snakeCase:snakeCase,kebabCase:kebabCase}=require(a0_0x3eba60(0x234)),{plural:plural}=require(a0_0x3eba60(0x1f3)),crypto_1=tslib_1[a0_0x3eba60(0x230)](require(a0_0x3eba60(0x212)));let OperatoToolCreateMenu=class{async[a0_0x3eba60(0x1e6)](_0x29b634,_0x417ad7,_0x3733f8){const _0x2a7f28=a0_0x3eba60,{domain:_0x4ea5f7,user:_0x379a0c,tx:_0x2a779a}=_0x3733f8[_0x2a7f28(0x237)];await(0x0,tool_permission_1[_0x2a7f28(0x238)])('',_0x3733f8);const _0x43e22e=await _0x2a779a[_0x2a7f28(0x216)](resource_base_1[_0x2a7f28(0x1d1)])[_0x2a7f28(0x207)]({'where':{'domain':{'id':_0x4ea5f7['id']},'id':_0x29b634}}),_0x587d83=await _0x2a779a['getRepository'](resource_base_1[_0x2a7f28(0x1fd)])[_0x2a7f28(0x239)]({'where':{'domain':{'id':_0x4ea5f7['id']},'entity':{'id':_0x43e22e['id']}}});let {name:_0x437914=''}=_0x43e22e||{},_0xb0f1ca=kebabCase(_0x437914),_0x3d542d=modelTemplate[_0x2a7f28(0x1e2)](/{{pascalCase name}}/g,startCase(camelCase(_0x437914))[_0x2a7f28(0x1e2)](/ /g,''))['replace'](/{{camelCase name}}/g,camelCase(_0x437914))['replace'](/{{snakeCase name}}/g,snakeCase(_0x437914))[_0x2a7f28(0x1e2)](/{{pluralPascalCase name}}/g,startCase(camelCase(plural(_0x437914)))[_0x2a7f28(0x1e2)](/ /g,''))['replace'](/{{pluralCamelCase name}}/g,camelCase(plural(_0x437914)))[_0x2a7f28(0x1e2)](/{{name}}/g,_0x437914),_0x4b8886='';_0x2a7f28(0x228)==_0x43e22e[_0x2a7f28(0x21b)]?_0x4b8886=_0x2a7f28(0x1f0):_0x2a7f28(0x1f1)==_0x43e22e['dataProp']&&(_0x4b8886=_0x2a7f28(0x23f)),_0x3d542d=_0x3d542d[_0x2a7f28(0x1e2)](/{{HistoryButton}}/g,_0x4b8886);let _0x697665=this[_0x2a7f28(0x21c)](_0x587d83);_0x3d542d=_0x3d542d['replace'](/{{SortColumns}}/g,_0x697665['join'](','));let _0x5ce37d=this[_0x2a7f28(0x22f)](_0x587d83);_0x3d542d=_0x3d542d[_0x2a7f28(0x1e2)](/{{SearchColumns}}/g,_0x5ce37d[_0x2a7f28(0x211)](','));let _0x19c793=this[_0x2a7f28(0x24a)](_0x587d83);return _0x3d542d=_0x3d542d[_0x2a7f28(0x1e2)](/{{GridColumns}}/g,_0x19c793[_0x2a7f28(0x211)](',')),_0x3d542d=this[_0x2a7f28(0x221)](_0x3d542d),await this[_0x2a7f28(0x244)](_0x2a779a,_0x4ea5f7,_0x379a0c,_0x417ad7,_0xb0f1ca,_0x3d542d),!0x0;}[a0_0x3eba60(0x24a)](_0x1d2fd3){const _0x51ba21=a0_0x3eba60;return _0x1d2fd3[_0x51ba21(0x1df)](_0x391ca3=>'id'!=_0x391ca3['name']&&_0x391ca3[_0x51ba21(0x223)]>0x0)['sort'](function(_0x405cde,_0x3c56e4){const _0x1217cb=_0x51ba21;return _0x405cde[_0x1217cb(0x223)]-_0x3c56e4['gridRank'];})['map'](_0x2ebfd9=>{const _0x2363c1=_0x51ba21;let {gridEditor:_0x4e5296=_0x2363c1(0x247),name:_0x1eac9f,term:_0x4ebb9e,gridWidth:_0x307e4b=0x0,gridAlign:_0x2ea34b=_0x2363c1(0x22c),nullable:_0x52e6bd=!0x1}=_0x2ebfd9;if(null==_0x4e5296&&(_0x4e5296=_0x2363c1(0x247)),null==_0x2ea34b&&(_0x2ea34b=_0x2363c1(0x22c)),_0x2363c1(0x23a)==_0x1eac9f||_0x2363c1(0x21a)==_0x1eac9f)return _0x1eac9f=_0x2363c1(0x23a)==_0x1eac9f?'updater':'creator',_0x2363c1(0x22d)+_0x1eac9f+_0x2363c1(0x20c)+_0x1eac9f+_0x2363c1(0x209);if(_0x2363c1(0x1dc)==_0x1eac9f||_0x2363c1(0x210)==_0x1eac9f)return _0x2363c1(0x1dd)+(_0x2363c1(0x1dc)==_0x1eac9f?'updatedAt':'createdAt')+'\x22,\x22header\x22:\x20\x22'+_0x1eac9f+_0x2363c1(0x1e4);let _0x13942c=_0x2363c1(0x242)!=_0x4e5296&&_0x2363c1(0x20d)!=_0x4e5296,_0x612daa='hidden'==_0x4e5296;0x1!=_0x612daa&&0x0!=_0x13942c||(_0x4e5296=_0x2363c1(0x247));let _0x23dc14=_0x2363c1(0x1e7)+_0x4e5296+_0x2363c1(0x1e8)+camelCase(_0x1eac9f)+_0x2363c1(0x20c)+_0x4ebb9e+_0x2363c1(0x1d2)+_0x612daa+'\x20,\x22editable\x22:\x20'+_0x13942c+_0x2363c1(0x1e9)+!_0x52e6bd+',\x22sortable\x22:true\x20,\x22align\x22:\x20\x22'+_0x2ea34b+_0x2363c1(0x1e5)+_0x307e4b+_0x2363c1(0x204);return _0x2363c1(0x220)==_0x2ebfd9['refType']&&(_0x23dc14+=_0x2363c1(0x20a)+_0x2ebfd9[_0x2363c1(0x1f8)]+'\x22}'),'scenario'==_0x2ebfd9['refType']&&(_0x23dc14+=_0x2363c1(0x22e)+_0x2ebfd9[_0x2363c1(0x1f8)]+'\x22}'),_0x2363c1(0x1d3)==_0x2ebfd9[_0x2363c1(0x22a)]&&(_0x23dc14+=',\x22select_opt\x22:{\x22type\x22:\x20\x22entity\x22,\x22args\x22:\x20{\x22queryName\x22:\x20\x22'+camelCase(plural(_0x2ebfd9[_0x2363c1(0x1f8)]))+'\x22,\x22codeField\x22:\x20\x22id\x22,\x22dispField\x22:\x20\x22name\x22}}'),_0x23dc14+='}',_0x23dc14;});}[a0_0x3eba60(0x22f)](_0x3fe980){const _0x1afd0f=a0_0x3eba60;return _0x3fe980['filter'](_0x422998=>_0x422998[_0x1afd0f(0x213)]>0x0)[_0x1afd0f(0x205)](function(_0xa7921f,_0x46dae1){const _0x448477=_0x1afd0f;return _0xa7921f[_0x448477(0x213)]-_0x46dae1['searchRank'];})[_0x1afd0f(0x227)](_0x31cdc4=>{const _0x133cd7=_0x1afd0f;let _0x30dd82=_0x31cdc4[_0x133cd7(0x1d4)];return'filter'==_0x30dd82?'\x22'+camelCase(_0x31cdc4['name'])+'\x22':(_0x30dd82||(_0x30dd82='eq'),_0x133cd7(0x1de)+camelCase(_0x31cdc4[_0x133cd7(0x1fa)])+'\x22,\x22operator\x22:\x20\x22'+_0x30dd82+'\x22}');});}[a0_0x3eba60(0x21c)](_0x3b2730){const _0x464069=a0_0x3eba60;return _0x3b2730[_0x464069(0x1df)](_0x4ed8e3=>_0x4ed8e3['sortRank']>0x0)['sort'](function(_0x206ff6,_0x53f32b){const _0x46f4e5=_0x464069;return _0x206ff6[_0x46f4e5(0x1d9)]-_0x53f32b[_0x46f4e5(0x1d9)];})[_0x464069(0x227)](_0x12bfd7=>_0x464069(0x1d7)+camelCase(_0x12bfd7[_0x464069(0x1fa)])+_0x464069(0x20b)+_0x12bfd7[_0x464069(0x1ff)]+'}');}async[a0_0x3eba60(0x244)](_0x373dc1,_0x465370,_0x567624,_0x864dde,_0x5ed712,_0x35a1e7){const _0x349068=a0_0x3eba60;let _0x3556b6=await _0x373dc1[_0x349068(0x216)](menu_base_1[_0x349068(0x22b)])['findOne']({'where':{'domain':{'id':_0x465370['id']},'id':_0x864dde}}),_0x2bc0c7=(await _0x373dc1['getRepository'](menu_base_1[_0x349068(0x22b)])[_0x349068(0x1d8)](_0x349068(0x208)+_0x864dde+_0x349068(0x24f)+_0x864dde+'\x27'))[0x0]['rank']+0xa,_0xeb5952=new menu_base_1[(_0x349068(0x22b))]();_0xeb5952[_0x349068(0x1fa)]=_0x5ed712,_0xeb5952[_0x349068(0x23d)]=_0x349068(0x1e0),_0xeb5952['category']='meta-grist-page',_0xeb5952[_0x349068(0x201)]=_0x2bc0c7,_0xeb5952[_0x349068(0x203)]=!0x1,_0xeb5952[_0x349068(0x1d5)]=_0x5ed712,_0xeb5952[_0x349068(0x231)]=_0x35a1e7,_0xeb5952[_0x349068(0x1f4)]=_0x349068(0x225),_0xeb5952[_0x349068(0x20f)]=_0x3556b6,await _0x373dc1['getRepository'](menu_base_1[_0x349068(0x22b)])[_0x349068(0x214)](Object[_0x349068(0x226)](Object[_0x349068(0x226)]({},_0xeb5952),{'domain':_0x465370,'creator':_0x567624,'updater':_0x567624}));}['enc'](_0x383be3){const _0x5847aa=a0_0x3eba60;let _0x4be233=JSON[_0x5847aa(0x1da)](_0x383be3)[_0x5847aa(0x241)](/(.{100})/)[_0x5847aa(0x1df)](_0x2281d9=>_0x2281d9),_0x35d69a=[_0x5847aa(0x235),_0x5847aa(0x1ef),_0x5847aa(0x24c),_0x5847aa(0x233),_0x5847aa(0x24d),_0x5847aa(0x1f5),_0x5847aa(0x1f7),_0x5847aa(0x1f9)],_0xe6945=crypto_1[_0x5847aa(0x1ec)][_0x5847aa(0x222)](0x20)[_0x5847aa(0x20e)](_0x5847aa(0x1f2)),_0xaa186b=Buffer[_0x5847aa(0x1fc)](_0xe6945,'hex'),_0x2bba18=_0xe6945[_0x5847aa(0x219)](0x0,0x10),_0x28110b=['',_0x2bba18,_0x2bba18,_0x2bba18,_0x2bba18,_0x2bba18,_0x2bba18,_0x2bba18],_0xabd5d2=0x0,_0x4dbd63=[];_0x4dbd63['push'](_0xe6945);for(var _0x3706ac=0x0;_0x3706ac<_0x4be233[_0x5847aa(0x1d6)];_0x3706ac++,_0xabd5d2++){_0xabd5d2==_0x35d69a[_0x5847aa(0x1d6)]&&(_0xabd5d2=0x0);let _0x222f2f=crypto_1[_0x5847aa(0x1ec)][_0x5847aa(0x229)](_0x35d69a[_0xabd5d2],_0xaa186b,_0x28110b[_0xabd5d2]),_0x7ee7a0=_0x222f2f[_0x5847aa(0x1e3)](_0x4be233[_0x3706ac],'utf8','hex');_0x7ee7a0+=_0x222f2f[_0x5847aa(0x23e)](_0x5847aa(0x1f2)),_0x4dbd63[_0x5847aa(0x245)](_0x7ee7a0);}return _0x4dbd63[_0x5847aa(0x211)](_0x5847aa(0x206));}};function a0_0x1373(_0x130e42,_0x3afd33){const _0x521ece=a0_0x521e();return a0_0x1373=function(_0x137372,_0x1a0283){_0x137372=_0x137372-0x1d1;let _0x5c5e05=_0x521ece[_0x137372];return _0x5c5e05;},a0_0x1373(_0x130e42,_0x3afd33);}tslib_1[a0_0x3eba60(0x202)]([(0x0,type_graphql_1[a0_0x3eba60(0x236)])('@transaction'),(0x0,type_graphql_1[a0_0x3eba60(0x23b)])(_0x5831b2=>Boolean,{'description':a0_0x3eba60(0x1eb)}),tslib_1[a0_0x3eba60(0x249)](0x0,(0x0,type_graphql_1[a0_0x3eba60(0x24b)])('id')),tslib_1[a0_0x3eba60(0x249)](0x1,(0x0,type_graphql_1[a0_0x3eba60(0x24b)])('parent_menu_id')),tslib_1[a0_0x3eba60(0x249)](0x2,(0x0,type_graphql_1['Ctx'])()),tslib_1[a0_0x3eba60(0x246)](a0_0x3eba60(0x23c),Function),tslib_1['__metadata'](a0_0x3eba60(0x218),[String,String,Object]),tslib_1[a0_0x3eba60(0x246)]('design:returntype',Promise)],OperatoToolCreateMenu[a0_0x3eba60(0x21d)],a0_0x3eba60(0x1e6),null),OperatoToolCreateMenu=tslib_1[a0_0x3eba60(0x202)]([(0x0,type_graphql_1[a0_0x3eba60(0x1ed)])()],OperatoToolCreateMenu),exports['OperatoToolCreateMenu']=OperatoToolCreateMenu;const modelTemplate='\x0a{\x0a\x20\x20\x22menu\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x22title\x22:\x20\x22{{name}}\x22,\x0a\x20\x20\x20\x20\x20\x20\x22name\x22:\x20\x22\x22,\x0a\x20\x20\x20\x20\x20\x20\x22desc\x22:\x20\x22\x22\x0a\x20\x20},\x0a\x20\x20\x22gql\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x22query\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22list_func\x22:\x20\x22{{pluralCamelCase\x20name}}\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22find_one_func\x22:\x22{{camelCase\x20name}}\x22\x0a\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x22mutation\x22:{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22multiple\x22:{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22func\x22:\x22updateMultiple{{pascalCase\x20name}}\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22type\x22:\x20\x22{{pascalCase\x20name}}Patch\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22delete\x22:{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22func\x22:\x22delete{{pluralPascalCase\x20name}}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20},\x0a\x20\x20\x22button\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22name\x22:\x22export\x22\x0a\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22name\x22:\x22add\x22\x0a\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22name\x22:\x22delete\x22\x0a\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22name\x22:\x22save\x22\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20],\x0a\x20\x20\x22grid_column\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22type\x22:\x20\x22string\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22name\x22:\x20\x22id\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22header\x22:\x20\x22id\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22hidden\x22:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22editable\x22:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22mandatory\x22:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22sortable\x22:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22align\x22:\x20\x22left\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22width\x22:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22exportable\x22:\x20false\x0a\x20\x20\x20\x20\x20\x20},\x0a{{GridColumns}}\x0a\x20\x20],\x0a\x20\x20\x22grid\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22button\x22:[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{HistoryButton}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22option\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22mobile_mode\x22:\x20\x22LIST\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22desk_mode\x22:\x20\x22GRID\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22use_row_checker\x22:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22pages\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2020,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2050,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20100,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20300\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22view_mode\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22GRID\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22LIST\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22CARD\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22sorters\x22:\x20[\x0a{{SortColumns}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x22row\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22multiple_select\x22:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22click\x22:\x20\x22select-row-toggle\x22\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20},\x0a\x20\x20\x22search\x22:\x20[\x0a{{SearchColumns}}\x0a\x20\x20]\x0a}\x0a';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-menu.js","sourceRoot":"","sources":["../../../server/service/tool-entity/create-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Mutation, Directive, Resolver } from 'type-graphql'\nimport { Entity, EntityColumn } from '@things-factory/resource-base'\nimport { Menu } from '@things-factory/menu-base'\nimport { checkStudioTemplateIsOverLimit } from './../tool-secret/tool-permission'\nconst { camelCase, startCase, snakeCase, kebabCase } = require('lodash')\nconst { plural } = require('pluralize')\nimport crypto from 'crypto'\n\n@Resolver()\nexport class OperatoToolCreateMenu {\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'Operato Tool Create Menu' })\n async toolCreateMenu(@Arg('id') id: string, @Arg('parent_menu_id') parent_menu_id: string, @Ctx() context: any): Promise<Boolean> {\n const { domain, user, tx } = context.state\n\n // 라이센스 체크 \n await checkStudioTemplateIsOverLimit('', context);\n\n // Entity 조회 \n const entity: Entity = await tx.getRepository(Entity).findOne({\n where: {\n domain: { id: domain.id },\n id\n }\n })\n\n // Entity 컬럼 조회 \n const entityColumns: EntityColumn[] = await tx.getRepository(EntityColumn).find({\n where: {\n domain: { id: domain.id },\n entity: { id: entity.id }\n }\n })\n\n let { name = '' } = entity || {};\n let serviceName: string = kebabCase(name);\n\n // 이름 치환 (타이틀 , grapql 관련 서비스 )\n let pageTemplate = modelTemplate.replace(/{{pascalCase name}}/g, startCase(camelCase(name)).replace(/ /g, ''))\n .replace(/{{camelCase name}}/g, camelCase(name))\n .replace(/{{snakeCase name}}/g, snakeCase(name))\n .replace(/{{pluralPascalCase name}}/g, startCase(camelCase(plural(name))).replace(/ /g, ''))\n .replace(/{{pluralCamelCase name}}/g, camelCase(plural(name)))\n .replace(/{{name}}/g, name);\n\n // 이력조회 버튼 추가\n let historyButton = '';\n if(entity.dataProp == 'JSON'){\n historyButton = `\n {\n \"name\": \"history\",\n \"type\": \"basic\",\n \"label\": \"data_history\",\n \"icon\": \"history\",\n \"logic\": \"history_json\"\n }\n `\n } else if(entity.dataProp == 'COPY'){\n historyButton = `\n {\n \"name\": \"history\",\n \"type\": \"basic\",\n \"label\": \"data_history\",\n \"icon\": \"history\",\n \"logic\": \"history_copy\"\n }\n `\n }\n pageTemplate = pageTemplate.replace(/{{HistoryButton}}/g, historyButton);\n\n // 그리드 정렬 \n let sortColumns = this.createSortCols(entityColumns);\n pageTemplate = pageTemplate.replace(/{{SortColumns}}/g, sortColumns.join(\",\"));\n\n // 검색 필드 \n let searchColumns = this.createSearchCols(entityColumns);\n pageTemplate = pageTemplate.replace(/{{SearchColumns}}/g, searchColumns.join(\",\"));\n\n // 그리드 컬럼 \n let gridColumns = this.createGridColumns(entityColumns);\n pageTemplate = pageTemplate.replace(/{{GridColumns}}/g, gridColumns.join(\",\"));\n\n // 암호화 \n pageTemplate = this.enc(pageTemplate);\n\n // 메뉴 생성 \n await this.createMenuData(tx, domain, user, parent_menu_id, serviceName, pageTemplate);\n return true;\n }\n\n /**\n * 그리드 컬럼 \n * @param entityColumns \n */\n createGridColumns(entityColumns: EntityColumn[]) {\n return entityColumns.filter(x => x.name != \"id\" && x.gridRank > 0).sort(function (a, b) {\n return a.gridRank - b.gridRank;\n }).map(x => {\n let { gridEditor = \"string\", name, term, gridWidth = 0, gridAlign = \"left\", nullable = false } = x;\n if (gridEditor == null) gridEditor = \"string\";\n if (gridAlign == null) gridAlign = \"left\";\n\n // 생성 자 수정 자 기본 값 \n if (name == \"updater_id\" || name == \"creator_id\") {\n name = name == \"updater_id\" ? \"updater\" : \"creator\";\n return `{\"type\": \"object\",\"name\": \"${name}\",\"header\": \"${name}\",\"width\": 100,\"editable\":false, \"align\": \"center\",\"object_opt\":{\"queryName\":\"users\"}}`\n }\n // 생성 시간 수정 시간 기본 값 \n if (name == \"updated_at\" || name == \"created_at\") {\n return `{\"type\": \"datetime\",\"name\": \"${name == \"updated_at\" ? \"updatedAt\" : \"createdAt\"}\",\"header\": \"${name}\",\"width\": 160,\"editable\":false, \"align\": \"center\"}`\n }\n\n // 읽기 / 숨김 필드는 수정 불가 \n let editable = (gridEditor == \"readonly\" || gridEditor == \"hidden\") ? false : true;\n // 히든 필드\n let hidden = gridEditor == \"hidden\" ? true : false;\n if (hidden == true || editable == false) {\n // 히든 필드는 문자열로 변환 숨김 \n gridEditor = \"string\";\n }\n\n let colTxt = `{\"type\": \"${gridEditor}\",\"name\": \"${camelCase(name)}\",\"header\": \"${term}\",\"hidden\":${hidden} ,\"editable\": ${editable},\"mandatory\": ${!nullable},\"sortable\":true ,\"align\": \"${gridAlign}\",\"width\":${gridWidth} ,\"exportable\": true`;\n\n\n // 참조 타입이 공통 코드 \n if (x.refType == \"code\") {\n colTxt = colTxt + `,\"select_opt\":{\"type\":\"code\",\"name\":\"${x.refName}\"}`;\n }\n\n // 참조 타입이 시나리오\n if (x.refType == \"scenario\") {\n colTxt = colTxt + `,\"select_opt\":{\"type\":\"scenario\",\"name\":\"${x.refName}\"}`;\n }\n\n // 참조 타입이 엔티티 \n if (x.refType == \"entity\") {\n colTxt = colTxt + `,\"select_opt\":{\"type\": \"entity\",\"args\": {\"queryName\": \"${camelCase(plural(x.refName))}\",\"codeField\": \"id\",\"dispField\": \"name\"}}`;\n }\n colTxt = colTxt + \"}\";\n return colTxt;\n });\n }\n\n /**\n * 검색 컬럼 \n * @param entityColumns \n */\n createSearchCols(entityColumns: EntityColumn[]) {\n return entityColumns.filter(x => x.searchRank > 0).sort(function (a, b) {\n return a.searchRank - b.searchRank;\n }).map(x => {\n let operator = x.searchOper;\n\n if (operator == 'filter') {\n return `\"${camelCase(x.name)}\"`;\n }\n\n if (!operator) operator = 'eq';\n return `{\"name\": \"${camelCase(x.name)}\",\"operator\": \"${operator}\"}`\n });\n }\n\n /**\n * 그리드 정렬 \n * @param entityColumns \n * @returns \n */\n createSortCols(entityColumns: EntityColumn[]) {\n return entityColumns.filter(x => x.sortRank > 0).sort(function (a, b) {\n return a.sortRank - b.sortRank;\n }).map(x => {\n return `{\"name\":\"${camelCase(x.name)}\",\"desc\":${x.reverseSort}}`\n });\n }\n\n /**\n * 메뉴 데이터 생성 \n * @param tx \n * @param domain \n * @param user \n * @param parent_menu_id \n * @param name \n * @param pageTemplate \n */\n async createMenuData(tx: any, domain: any, user: any, parent_menu_id: string, name: string, pageTemplate: string) {\n // 상위 메뉴 \n let parentMenu = await tx.getRepository(Menu).findOne({\n where: {\n domain: { id: domain.id },\n id: parent_menu_id\n }\n });\n\n // 메뉴 랭크 \n let menuRank = (await tx.getRepository(Menu).query(`select coalesce(max(rank),0) as rank from menus where parent_id = '${parent_menu_id}' or id = '${parent_menu_id}'`));\n let rank = menuRank[0].rank + 10;\n\n\n // 메뉴 저장 \n let menu: Menu = new Menu();\n menu.name = name;\n menu.menuType = 'SCREEN';\n menu.category = 'meta-grist-page';\n menu.rank = rank;\n menu.hiddenFlag = false;\n menu.routing = name;\n menu.template = pageTemplate;\n menu.resourceUrl = '@things-factory/meta-ui/client/pages/meta-grist-page';\n menu.parent = parentMenu;\n\n await tx.getRepository(Menu).save({\n ...menu,\n domain,\n creator: user,\n updater: user\n });\n }\n\n\n /**\n * json 모델 암호화 \n * @param template \n * @returns \n */\n enc(template: string) {\n let jsonStr = JSON.stringify(template);\n let templates = jsonStr.split(/(.{100})/).filter(O => O);\n let filters = ['aes-256-ecb', 'aes-256-cbc', 'aes-256-cfb', 'aes-256-cfb8', 'aes-256-cfb1', 'aes-256-ofb', 'aes-256-ctr', 'aes256'];\n let salt = crypto.randomBytes(32).toString('hex');\n let hexKey = Buffer.from(salt, 'hex');\n let ivBase = salt.substring(0, 16);\n let iv = ['', ivBase, ivBase, ivBase, ivBase, ivBase, ivBase, ivBase];\n let filterIdx = 0;\n let encResults = [];\n encResults.push(salt);\n\n for (var i = 0; i < templates.length; i++, filterIdx++) {\n if (filterIdx == filters.length) filterIdx = 0;\n\n let cipher = crypto.createCipheriv(filters[filterIdx], hexKey, iv[filterIdx]);\n let encrypted = cipher.update(templates[i], 'utf8', 'hex');\n encrypted += cipher.final('hex');\n encResults.push(encrypted);\n }\n\n return encResults.join('h1z0q9i9x7q6');\n }\n\n\n}\n\nconst modelTemplate = `\n{\n \"menu\": {\n \"title\": \"{{name}}\",\n \"name\": \"\",\n \"desc\": \"\"\n },\n \"gql\": {\n \"query\": {\n \"list_func\": \"{{pluralCamelCase name}}\",\n \"find_one_func\":\"{{camelCase name}}\"\n },\n \"mutation\":{\n \"multiple\":{\n \"func\":\"updateMultiple{{pascalCase name}}\",\n \"type\": \"{{pascalCase name}}Patch\"\n },\n \"delete\":{\n \"func\":\"delete{{pluralPascalCase name}}\"\n }\n }\n },\n \"button\": [\n {\n \"name\":\"export\"\n },\n {\n \"name\":\"add\"\n },\n {\n \"name\":\"delete\"\n },\n {\n \"name\":\"save\"\n }\n ],\n \"grid_column\": [\n {\n \"type\": \"string\",\n \"name\": \"id\",\n \"header\": \"id\",\n \"hidden\": true,\n \"editable\": false,\n \"mandatory\": false,\n \"sortable\": false,\n \"align\": \"left\",\n \"width\": 0,\n \"exportable\": false\n },\n{{GridColumns}}\n ],\n \"grid\": {\n \"button\":[\n {{HistoryButton}}\n ],\n \"option\": {\n \"mobile_mode\": \"LIST\",\n \"desk_mode\": \"GRID\",\n \"use_row_checker\": true,\n \"pages\": [\n 20,\n 50,\n 100,\n 300\n ],\n \"view_mode\": [\n \"GRID\",\n \"LIST\",\n \"CARD\"\n ],\n \"sorters\": [\n{{SortColumns}}\n ]\n },\n \"row\": {\n \"multiple_select\": true,\n \"click\": \"select-row-toggle\"\n }\n },\n \"search\": [\n{{SearchColumns}}\n ]\n}\n`"]}
@@ -0,0 +1 @@
1
+ 'use strict';const a0_0x32228d=a0_0x1ab1;function a0_0x58c7(){const _0xad6eff=['defineProperty','datetime','name','readFileSync','Date','createDir','tslib','9486840hdvbOd','createTypeText','design:type','findOne','/server','@Field(','createHistoryEntityText','1464ofzhBx','date','Entities,\x20resolvers\x20as\x20','Arg','updated_at','domain','-history.ts','@things-factory/shell','/*\x20EXPORT\x20ENTITY\x20TYPES\x20*/\x0aexport\x20*\x20from\x20\x27./','13JAEkyn','\x27,\x20nullable:\x20','-query.ts','64114GBiYFo','string','type\x20=>','replace','/*\x20RESOLVER\x20CLASSES\x20*/\x0a\x09\x09...','long','indexOf','type-graphql','4004913efqHPO','/*\x20ENTITIES\x20*/\x0a\x09...','-type.ts','\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0aimport\x20{\x20{{pascalCase\x20name}}Query\x20}\x20from\x20\x27./{{name}}-query\x27\x0aimport\x20{\x20{{pascalCase\x20name}}Mutation\x20}\x20from\x20\x27./{{name}}-mutation\x27\x0a\x0aexport\x20const\x20entities\x20=\x20[{{pascalCase\x20name}}]\x0aexport\x20const\x20resolvers\x20=\x20[{{pascalCase\x20name}}Query,\x20{{pascalCase\x20name}}Mutation]\x0a','sort','prototype','/*\x20IMPORT\x20ENTITIES\x20AND\x20RESOLVERS\x20*/\x0aimport\x20{\x20entities\x20as\x20','uniqRank','env','/packages','filter','createNoHistoryServiceFiels','2947210wnMiHJ','13636bElEeM','colType','split','10jhKYeK','Resolver','OperatoToolCreateService','3ZwYSpG','join','-history-query.ts','{{camelCase\x20name}}.','bigint','colSize','creator_id','import\x20{\x20entities\x20as\x20','writeFile','toolCreateService','includes','snakeCaseName','__decorate','integer','pascalCaseName','COPY','__metadata','PWD','Resolvers,\x20subscribers\x20as\x20','columnToEntityColumn','tableName','\x0a\x20\x20@VersionColumn({\x20default:\x201\x20})\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20dataRevisionNo?:\x20number\x20=\x201','getColTxtType','\x0a\x20\x20','-history-type.ts','__param','\x0aimport\x20{\x20EventSubscriber\x20}\x20from\x20\x27typeorm\x27\x0aimport\x20{\x20HistoryEntitySubscriber\x20}\x20from\x20\x27@operato/typeorm-history\x27\x0a\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0aimport\x20{\x20{{pascalCase\x20name}}History\x20}\x20from\x20\x27./{{name}}-history\x27\x0aimport\x20{\x20getRepository\x20}\x20from\x20\x27@things-factory/shell\x27\x0a\x0a@EventSubscriber()\x0aexport\x20class\x20{{pascalCase\x20name}}HistoryEntitySubscriber\x20extends\x20HistoryEntitySubscriber<{{pascalCase\x20name}},{{pascalCase\x20name}}History>\x20{\x0a\x20\x20public\x20get\x20entity()\x20{\x0a\x20\x20\x20\x20return\x20{{pascalCase\x20name}}\x0a\x20\x20}\x0a\x0a\x20\x20public\x20get\x20historyEntity()\x20{\x0a\x20\x20\x20\x20return\x20{{pascalCase\x20name}}History\x0a\x20\x20}\x0a\x0a\x20\x20{{entityToJson}}\x0a\x0a\x20\x20async\x20beforeRemoveHistory(history:{{pascalCase\x20name}}History,entity:{{pascalCase\x20name}}){\x0a\x20\x20\x20\x20let\x20repo\x20=\x20getRepository({{pascalCase\x20name}}History);\x0a\x20\x20\x20\x20const\x20revNo\x20=\x20await\x20repo.createQueryBuilder()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.select(\x27max(data_revision_no)\x27,\x20\x27rev_no\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.where(\x27domain_id\x20=\x20:domainId\x27,\x20{\x20domainId:\x20entity.domain.id\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.andWhere(\x27original_id\x20=\x20:originalId\x27,\x20{\x20originalId:\x20entity.id\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.getRawOne()\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20history.dataRevisionNo\x20=\x20revNo\x20?\x20revNo.rev_no\x20+\x201\x20:\x201;\x0a\x20\x20\x20\x20return\x20history;\x0a\x20\x20}\x0a}\x0a','\x0aimport\x20{\x20ObjectType,\x20Field,\x20InputType,\x20Int,\x20ID,\x20Float,\x20registerEnumType\x20}\x20from\x20\x27type-graphql\x27\x0a\x0aimport\x20{\x20{{pascalCase\x20name}}History\x20}\x20from\x20\x27./{{name}}-history\x27\x0a\x0a@ObjectType()\x0aexport\x20class\x20{{pascalCase\x20name}}HistoryList\x20{\x0a\x20\x20@Field(type\x20=>\x20[{{pascalCase\x20name}}History])\x0a\x20\x20items:\x20{{pascalCase\x20name}}History[]\x0a\x0a\x20\x20@Field(type\x20=>\x20Int)\x0a\x20\x20total:\x20number\x0a}\x0a','@Column({name:\x27','Entities,','creator','double','\x27,\x20type:\x20\x27','getFieldType','updater_id','\x20})','@Index(\x27ix_{{snakeCase\x20name}}_0\x27,\x20({{camelCase\x20name}}:\x20{{pascalCase\x20name}})\x20=>\x20[{{indexColumns}}],\x20{\x20unique:\x20true\x20})','design:paramtypes','replaceNamesMap','\x0a\x20\x20public\x20createHistoryEntity(manager,\x20entity)\x20{\x0a\x20\x20\x20\x20let\x20history\x20=\x20manager.create(this.historyEntity,\x20entity);\x0a\x20\x20\x20\x20history.historyJson\x20=\x20JSON.stringify(entity);\x0a\x20\x20\x20\x20return\x20history;\x0a\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20','Query','\x0aimport\x20{\x0a\x20\x20CreateDateColumn,\x0a\x20\x20UpdateDateColumn,\x0a\x20\x20Entity,\x0a\x20\x20Index,\x0a\x20\x20Column,\x0a\x20\x20RelationId,\x0a\x20\x20ManyToOne,\x0a\x20\x20PrimaryGeneratedColumn,\x0a\x20\x20VersionColumn\x0a}\x20from\x20\x27typeorm\x27\x0a\x0aimport\x20{\x0a\x20\x20HistoryActionColumn,\x0a\x20\x20HistoryActionType,\x0a\x20\x20HistoryEntityInterface,\x0a\x20\x20HistoryOriginalIdColumn\x0a}\x20from\x20\x27@operato/typeorm-history\x27\x0a\x0aimport\x20{\x20ObjectType,\x20Field,\x20Int,\x20ID,\x20Float,\x20registerEnumType\x20}\x20from\x20\x27type-graphql\x27\x0a\x0aimport\x20{\x20config\x20}\x20from\x20\x27@things-factory/env\x27\x0aimport\x20{\x20Domain,\x20ScalarObject\x20}\x20from\x20\x27@things-factory/shell\x27\x0aimport\x20{\x20User\x20}\x20from\x20\x27@things-factory/auth-base\x27\x0a\x0aconst\x20ORMCONFIG\x20=\x20config.get(\x27ormconfig\x27,\x20{})\x0aconst\x20DATABASE_TYPE\x20=\x20ORMCONFIG.type\x0a\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0a\x0a@Entity(\x27{{tableName}}_histories\x27)\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_0\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.originalId,{{camelCase\x20name}}History.dataRevisionNo],\x20{\x20unique:\x20true\x20})\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_1\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.originalId\x20],\x20{\x20unique:\x20false\x20})\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_2\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.domain,\x20{{camelCase\x20name}}History.originalId\x20],\x20{\x20unique:\x20false\x20})\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_3\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.domain,\x20{{camelCase\x20name}}History.originalId,\x20{{camelCase\x20name}}History.dataRevisionNo],\x20{\x20unique:\x20true\x20})\x0a@ObjectType({\x20description:\x20\x27Entity\x20for\x20{{pascalCase\x20name}}History\x27\x20})\x0aexport\x20class\x20{{pascalCase\x20name}}History\x20\x20implements\x20HistoryEntityInterface<{{pascalCase\x20name}}>{\x0a\x20\x20@PrimaryGeneratedColumn(\x27uuid\x27)\x0a\x20\x20@Field(type\x20=>\x20ID)\x0a\x20\x20readonly\x20id:\x20string\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20Domain,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20domain:\x20Domain\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20{{camelCase\x20name}}History.domain)\x0a\x20\x20domainId:\x20string\x0a\x0a\x20\x20@HistoryOriginalIdColumn({type:\x20\x27character\x20varying\x27,\x20nullable:\x20false\x20,length:40})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20public\x20originalId!:\x20string\x0a\x0a\x0a\x20\x20@HistoryActionColumn({\x0a\x20\x20\x20\x20nullable:\x20false,\x0a\x20\x20\x20\x20type:\x0a\x20\x20\x20\x20\x20\x20DATABASE_TYPE\x20==\x20\x27postgres\x27\x20||\x20DATABASE_TYPE\x20==\x20\x27mysql\x27\x20||\x20DATABASE_TYPE\x20==\x20\x27mariadb\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27enum\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20DATABASE_TYPE\x20==\x20\x27oracle\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27varchar2\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27smallint\x27,\x0a\x20\x20\x20\x20enum:\x20HistoryActionType\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20public\x20dataRevisionAction!:\x20HistoryActionType\x0a\x0a\x20\x20@Column({\x20default:\x201,\x20nullable:\x20false\x20})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20dataRevisionNo?:\x20number\x20=\x201\x0a\x0a{{entityColumns}}\x0a\x0a\x20\x20@CreateDateColumn()\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20createdAt?:\x20Date\x0a\x0a\x20\x20@UpdateDateColumn()\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20updatedAt?:\x20Date\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20User,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false,\x0a\x20\x20\x20\x20nullable:\x20true\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20creator?:\x20User\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20{{camelCase\x20name}}History.creator)\x0a\x20\x20creatorId?:\x20string\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20User,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false,\x0a\x20\x20\x20\x20nullable:\x20true\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20updater?:\x20User\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20{{camelCase\x20name}}History.updater)\x0a\x20\x20updaterId?:\x20string\x0a}\x0a','.ts','dataProp','domain_id','utf8','__esModule','\x0aimport\x20{\x20ObjectType,\x20Field,\x20InputType,\x20Int,\x20ID,\x20Float,\x20registerEnumType\x20}\x20from\x20\x27type-graphql\x27\x0a\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0a\x0a@InputType()\x0aexport\x20class\x20New{{pascalCase\x20name}}\x20{\x0a{{newTypeColumns}}\x0a}\x0a\x0a@InputType()\x0aexport\x20class\x20{{pascalCase\x20name}}Patch\x20{\x0a\x20\x20@Field(type\x20=>\x20ID,\x20{\x20nullable:\x20true\x20})\x0a\x20\x20id?:\x20string\x0a\x0a{{patchTypeColumns}}\x0a\x0a\x20\x20@Field()\x0a\x20\x20cuFlag:\x20string\x0a}\x0a\x0a@ObjectType()\x0aexport\x20class\x20{{pascalCase\x20name}}List\x20{\x0a\x20\x20@Field(type\x20=>\x20[{{pascalCase\x20name}}])\x0a\x20\x20items:\x20{{pascalCase\x20name}}[]\x0a\x0a\x20\x20@Field(type\x20=>\x20Int)\x0a\x20\x20total:\x20number\x0a}\x0a','Float','\x0aimport\x20{\x20Resolver,\x20Query,\x20FieldResolver,\x20Root,\x20Args,\x20Arg,\x20Ctx,\x20Directive\x20}\x20from\x20\x27type-graphql\x27\x0aimport\x20{\x20Domain,\x20ListParam,\x20convertListParams,\x20getRepository,\x20getQueryBuilderFromListParams\x20}\x20from\x20\x27@things-factory/shell\x27\x0aimport\x20{\x20User\x20}\x20from\x20\x27@things-factory/auth-base\x27\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0aimport\x20{\x20{{pascalCase\x20name}}List\x20}\x20from\x20\x27./{{name}}-type\x27\x0a\x0a@Resolver({{pascalCase\x20name}})\x0aexport\x20class\x20{{pascalCase\x20name}}Query\x20{\x0a\x20\x20@Query(returns\x20=>\x20{{pascalCase\x20name}},\x20{\x20description:\x20\x27To\x20fetch\x20a\x20{{pascalCase\x20name}}\x27\x20})\x0a\x20\x20async\x20{{camelCase\x20name}}(@Arg(\x27id\x27)\x20id:\x20string,\x20@Ctx()\x20context:\x20any):\x20Promise<{{pascalCase\x20name}}>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain\x20}\x20=\x20context.state\x0a\x20\x20\x20\x20return\x20await\x20getRepository({{pascalCase\x20name}}).findOne({\x0a\x20\x20\x20\x20\x20\x20where:\x20{\x20domain:\x20{\x20id:\x20domain.id\x20},\x20id\x20}\x0a\x20\x20\x20\x20})\x0a\x20\x20}\x0a\x0a\x20\x20@Query(returns\x20=>\x20{{pascalCase\x20name}}List,\x20{\x20description:\x20\x27To\x20fetch\x20multiple\x20{{pluralPascalCase\x20name}}\x27\x20})\x0a\x20\x20async\x20{{pluralCamelCase\x20name}}(@Args()\x20params:\x20ListParam,\x20@Ctx()\x20context:\x20any):\x20Promise<{{pascalCase\x20name}}List>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20const\x20queryBuilder\x20=\x20getQueryBuilderFromListParams({\x0a\x20\x20\x20\x20\x20\x20domain,\x0a\x20\x20\x20\x20\x20\x20params,\x0a\x20\x20\x20\x20\x20\x20repository:\x20await\x20getRepository({{pascalCase\x20name}})\x0a\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20const\x20convertedParams\x20=\x20convertListParams(params,\x20domain.id)\x0a\x20\x20\x20\x20const\x20[items,\x20total]\x20=\x20await\x20queryBuilder.getManyAndCount()\x0a\x0a\x20\x20\x20\x20return\x20{\x20items,\x20total\x20}\x0a\x20\x20}\x0a\x0a\x20\x20@FieldResolver(type\x20=>\x20Domain)\x0a\x20\x20async\x20domain(@Root()\x20{{camelCase\x20name}}:\x20{{pascalCase\x20name}}):\x20Promise<Domain>\x20{\x0a\x20\x20\x20\x20return\x20await\x20getRepository(Domain).findOneBy({id:{{camelCase\x20name}}.domainId})\x0a\x20\x20}\x0a\x0a\x20\x20@FieldResolver(type\x20=>\x20User)\x0a\x20\x20async\x20updater(@Root()\x20{{camelCase\x20name}}:\x20{{pascalCase\x20name}}):\x20Promise<User>\x20{\x0a\x20\x20\x20\x20return\x20await\x20getRepository(User).findOneBy({id:{{camelCase\x20name}}.updaterId})\x0a\x20\x20}\x0a\x0a\x20\x20@FieldResolver(type\x20=>\x20User)\x0a\x20\x20async\x20creator(@Root()\x20{{camelCase\x20name}}:\x20{{pascalCase\x20name}}):\x20Promise<User>\x20{\x0a\x20\x20\x20\x20return\x20await\x20getRepository(User).findOneBy({id:{{camelCase\x20name}}.creatorId})\x0a\x20\x20}\x0a}\x0a','pluralCamelCaseName','/event-subscriber.ts','6706701dfSFgK','writeFileSync','-mutation.ts','@things-factory/resource-base','Resolvers\x20}\x20from\x20\x27./','updater','Resolvers,','\x20{\x20nullable:\x20','\x0aimport\x20{\x20Resolver,\x20Query,\x20FieldResolver,\x20Root,\x20Args,\x20Arg,\x20Ctx,\x20Directive\x20}\x20from\x20\x27type-graphql\x27\x0aimport\x20{\x20Domain,\x20ListParam,\x20convertListParams,\x20getRepository,\x20getQueryBuilderFromListParams\x20}\x20from\x20\x27@things-factory/shell\x27\x0aimport\x20{\x20User\x20}\x20from\x20\x27@things-factory/auth-base\x27\x0aimport\x20{\x20{{pascalCase\x20name}}History\x20}\x20from\x20\x27./{{name}}-history\x27\x0aimport\x20{\x20{{pascalCase\x20name}}HistoryList\x20}\x20from\x20\x27./{{name}}-history-type\x27\x0a\x0a@Resolver({{pascalCase\x20name}}History)\x0aexport\x20class\x20{{pascalCase\x20name}}HistoryQuery\x20{\x0a\x20\x20@Query(returns\x20=>\x20{{pascalCase\x20name}}History,\x20{\x20description:\x20\x27To\x20fetch\x20a\x20{{pascalCase\x20name}}History\x27\x20})\x0a\x20\x20async\x20{{camelCase\x20name}}History(@Arg(\x27id\x27)\x20id:\x20string,\x20@Ctx()\x20context:\x20any):\x20Promise<{{pascalCase\x20name}}History>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain\x20}\x20=\x20context.state\x0a\x20\x20\x20\x20return\x20await\x20getRepository({{pascalCase\x20name}}History).findOne({\x0a\x20\x20\x20\x20\x20\x20where:\x20{\x20domain:\x20{\x20id:\x20domain.id\x20},\x20id\x20}\x0a\x20\x20\x20\x20})\x0a\x20\x20}\x0a\x0a\x20\x20@Query(returns\x20=>\x20{{pascalCase\x20name}}HistoryList,\x20{\x20description:\x20\x27To\x20fetch\x20multiple\x20{{pluralPascalCase\x20name}}History\x27\x20})\x0a\x20\x20async\x20{{camelCase\x20name}}Histories(@Args()\x20params:\x20ListParam,\x20@Ctx()\x20context:\x20any):\x20Promise<{{pascalCase\x20name}}HistoryList>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20const\x20queryBuilder\x20=\x20getQueryBuilderFromListParams({\x0a\x20\x20\x20\x20\x20\x20domain,\x0a\x20\x20\x20\x20\x20\x20params,\x0a\x20\x20\x20\x20\x20\x20repository:\x20await\x20getRepository({{pascalCase\x20name}}History)\x0a\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20const\x20[items,\x20total]\x20=\x20await\x20queryBuilder.getManyAndCount()\x0a\x0a\x20\x20\x20\x20return\x20{\x20items,\x20total\x20}\x0a\x20\x20}\x0a\x0a\x20\x20@FieldResolver(type\x20=>\x20Domain)\x0a\x20\x20async\x20domain(@Root()\x20{{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History):\x20Promise<Domain>\x20{\x0a\x20\x20\x20\x20return\x20await\x20getRepository(Domain).findOneBy({id:{{camelCase\x20name}}History.domainId})\x0a\x20\x20}\x0a\x0a\x20\x20@FieldResolver(type\x20=>\x20User)\x0a\x20\x20async\x20updater(@Root()\x20{{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History):\x20Promise<User>\x20{\x0a\x20\x20\x20\x20return\x20await\x20getRepository(User).findOneBy({id:{{camelCase\x20name}}History.updaterId})\x0a\x20\x20}\x0a\x0a\x20\x20@FieldResolver(type\x20=>\x20User)\x0a\x20\x20async\x20creator(@Root()\x20{{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History):\x20Promise<User>\x20{\x0a\x20\x20\x20\x20return\x20await\x20getRepository(User).findOneBy({id:{{camelCase\x20name}}History.creatorId})\x0a\x20\x20}\x0a}\x0a','\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0aimport\x20{\x20{{pascalCase\x20name}}Query\x20}\x20from\x20\x27./{{name}}-query\x27\x0aimport\x20{\x20{{pascalCase\x20name}}HistoryQuery\x20}\x20from\x20\x27./{{name}}-history-query\x27\x0aimport\x20{\x20{{pascalCase\x20name}}Mutation\x20}\x20from\x20\x27./{{name}}-mutation\x27\x0aimport\x20{\x20{{pascalCase\x20name}}History\x20}\x20from\x20\x27./{{name}}-history\x27\x0aimport\x20{\x20{{pascalCase\x20name}}HistoryEntitySubscriber\x20}\x20from\x20\x27./event-subscriber\x27\x0a\x0aexport\x20const\x20entities\x20=\x20[{{pascalCase\x20name}},\x20{{pascalCase\x20name}}History]\x0aexport\x20const\x20resolvers\x20=\x20[{{pascalCase\x20name}}Query,\x20{{pascalCase\x20name}}HistoryQuery,\x20{{pascalCase\x20name}}Mutation]\x0aexport\x20const\x20subscribers\x20=\x20[{{pascalCase\x20name}}HistoryEntitySubscriber]\x0a\x0a','rank','EntitySubscribers\x20}\x20from\x20\x27./','map','length','createEntityText','created_at','Entity','double\x20precision','push','nullable','...','export\x20*\x20from\x20\x27./','getRepository','/index.ts','existsPath','character\x20varying','index.ts','getProjectRootPath','JSON','number','/server/service/','createServiceFiles','6vByyFP','state','EntitySubscribers,','pluralPascalCaseName','Operato\x20Tool\x20Create\x20Service','EntityColumn','1350012sbJTEi','text','mkdirSync','5bVqqmL','float','createServicePath','existsSync'];a0_0x58c7=function(){return _0xad6eff;};return a0_0x58c7();}(function(_0x2b2486,_0x2a18c7){const _0x2ec7e2=a0_0x1ab1,_0x484f4b=_0x2b2486();while(!![]){try{const _0x193edf=-parseInt(_0x2ec7e2(0x182))/0x1*(-parseInt(_0x2ec7e2(0x1a0))/0x2)+-parseInt(_0x2ec7e2(0x125))/0x3*(parseInt(_0x2ec7e2(0x17f))/0x4)+-parseInt(_0x2ec7e2(0x11e))/0x5*(-parseInt(_0x2ec7e2(0x179))/0x6)+-parseInt(_0x2ec7e2(0x11f))/0x7*(parseInt(_0x2ec7e2(0x194))/0x8)+-parseInt(_0x2ec7e2(0x159))/0x9*(-parseInt(_0x2ec7e2(0x122))/0xa)+parseInt(_0x2ec7e2(0x112))/0xb+parseInt(_0x2ec7e2(0x18d))/0xc*(-parseInt(_0x2ec7e2(0x19d))/0xd);if(_0x193edf===_0x2a18c7)break;else _0x484f4b['push'](_0x484f4b['shift']());}catch(_0x110883){_0x484f4b['push'](_0x484f4b['shift']());}}}(a0_0x58c7,0x5b6aa));Object[a0_0x32228d(0x186)](exports,a0_0x32228d(0x153),{'value':!0x0}),exports['OperatoToolCreateService']=void 0x0;const tslib_1=require(a0_0x32228d(0x18c)),type_graphql_1=require(a0_0x32228d(0x111)),shell_1=require(a0_0x32228d(0x19b)),resource_base_1=require(a0_0x32228d(0x15c)),{camelCase:camelCase,startCase:startCase,snakeCase:snakeCase,kebabCase:kebabCase}=require('lodash'),{plural:plural}=require('pluralize'),fs=require('fs');let OperatoToolCreateService=class{async[a0_0x32228d(0x12e)](_0x3316dc,_0xedcc37){const _0x55a154=a0_0x32228d,{domain:_0x3c250f}=_0xedcc37[_0x55a154(0x17a)],_0x1f071c=await(0x0,shell_1[_0x55a154(0x16f)])(resource_base_1[_0x55a154(0x169)])[_0x55a154(0x190)]({'where':{'id':_0x3316dc}}),_0x5e4ab2=await(0x0,shell_1[_0x55a154(0x16f)])(resource_base_1[_0x55a154(0x17e)])['find']({'where':{'domain':{'id':_0x3c250f['id']},'entity':{'id':_0x1f071c['id']}}});let {name:_0x2f7ace='',bundle:_0x2bb50e=''}=_0x1f071c||{},_0x48a05c=this[_0x55a154(0x174)](),_0x3146f7=kebabCase(_0x2f7ace);return await this[_0x55a154(0x184)](_0x48a05c,_0x2bb50e,_0x3146f7),await this[_0x55a154(0x178)](_0x48a05c,_0x2bb50e,_0x2f7ace,_0x3146f7,_0x1f071c,_0x5e4ab2),!0x0;}async[a0_0x32228d(0x178)](_0x32834d,_0x17a939,_0x4d13c9,_0x571836,_0xc21de0,_0x2779f0){const _0x3e3568=a0_0x32228d;let _0x19bbc7={'name':_0x571836,'tableName':_0xc21de0[_0x3e3568(0x139)],'pascalCaseName':startCase(camelCase(_0x4d13c9))[_0x3e3568(0x10d)](/ /g,''),'camelCaseName':camelCase(_0x4d13c9),'snakeCaseName':snakeCase(_0x4d13c9),'pluralPascalCaseName':startCase(camelCase(plural(_0x4d13c9)))[_0x3e3568(0x10d)](/ /g,''),'pluralCamelCaseName':camelCase(plural(_0x4d13c9))},_0x40477e=_0x32834d+'/packages/'+_0x17a939+_0x3e3568(0x177);[_0x3e3568(0x175),'COPY'][_0x3e3568(0x12f)](_0xc21de0['dataProp'])?await this['createHistoryServiceFiles'](_0x40477e,_0x571836,_0xc21de0,_0x2779f0,_0x19bbc7):await this['createNoHistoryServiceFiels'](_0x40477e,_0x571836,_0xc21de0,_0x2779f0,_0x19bbc7);}async['createHistoryServiceFiles'](_0x4a76c8,_0x4d6eee,_0x2f211f,_0xa8e75d,_0x3bffcc){const _0x27434e=a0_0x32228d;await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+_0x27434e(0x170)),serviceHistoryIndex,_0x3bffcc);let _0x124b92=this[_0x27434e(0x167)](_0x2f211f,_0xa8e75d);await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+'/'+_0x4d6eee+_0x27434e(0x14f)),_0x124b92,_0x3bffcc),await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+'/'+_0x4d6eee+_0x27434e(0x19f)),serviceQuery,_0x3bffcc),await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+'/'+_0x4d6eee+_0x27434e(0x15b)),serviceMutation,_0x3bffcc);let _0x1a27a9=this[_0x27434e(0x18e)](_0xa8e75d);await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+'/'+_0x4d6eee+_0x27434e(0x114)),_0x1a27a9,_0x3bffcc);let _0x213ef2=this[_0x27434e(0x193)](_0x2f211f,_0xa8e75d);await this['writeFile'](_0x4a76c8+(_0x4d6eee+'/'+_0x4d6eee+_0x27434e(0x19a)),_0x213ef2,_0x3bffcc);let _0x1bb405='';_0x27434e(0x175)==_0x2f211f[_0x27434e(0x150)]?(_0x1bb405=_0x27434e(0x14c),await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+_0x27434e(0x158)),serviceEntitySubscriber,_0x3bffcc)):_0x1bb405='';let _0x1cd74d=serviceEntitySubscriber[_0x27434e(0x10d)](/{{entityToJson}}/g,_0x1bb405);await this['writeFile'](_0x4a76c8+(_0x4d6eee+_0x27434e(0x158)),_0x1cd74d,_0x3bffcc),await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+'/'+_0x4d6eee+_0x27434e(0x127)),serviceHistoryQuery,_0x3bffcc),await this[_0x27434e(0x12d)](_0x4a76c8+(_0x4d6eee+'/'+_0x4d6eee+_0x27434e(0x13d)),sereviceHistoryType,_0x3bffcc);let _0x60c8f=_0x4a76c8+'index.ts';0x0==await this['existsPath'](_0x60c8f)&&await this[_0x27434e(0x12d)](_0x60c8f,allIndex,_0x3bffcc);let _0x49b017=await fs[_0x27434e(0x189)](_0x60c8f,_0x27434e(0x152));_0x49b017[_0x27434e(0x110)]('export\x20*\x20from\x20\x27./'+_0x3bffcc[_0x27434e(0x188)]+'/'+_0x3bffcc[_0x27434e(0x188)]+'-history\x27')<0x0&&(_0x49b017=_0x49b017[_0x27434e(0x10d)](/\/\* EXPORT ENTITY TYPES \*\//,_0x27434e(0x19c)+_0x3bffcc[_0x27434e(0x188)]+'/'+_0x3bffcc[_0x27434e(0x188)]+'-history\x27')),_0x49b017['indexOf']('export\x20*\x20from\x20\x27./'+_0x3bffcc[_0x27434e(0x188)]+'/'+_0x3bffcc['name']+'\x27')<0x0&&(_0x49b017=_0x49b017[_0x27434e(0x10d)](/\/\* EXPORT ENTITY TYPES \*\//,_0x27434e(0x19c)+_0x3bffcc[_0x27434e(0x188)]+'/'+_0x3bffcc[_0x27434e(0x188)]+'\x27')),_0x49b017['indexOf'](_0x27434e(0x12c)+_0x3bffcc[_0x27434e(0x133)]+'Entities,\x20resolvers\x20as\x20'+_0x3bffcc['pascalCaseName']+_0x27434e(0x137)+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x164)+_0x3bffcc[_0x27434e(0x188)]+'\x27')<0x0&&(_0x49b017=_0x49b017['replace'](/\/\* IMPORT ENTITIES AND RESOLVERS \*\//,_0x27434e(0x118)+_0x3bffcc['pascalCaseName']+_0x27434e(0x196)+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x137)+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x164)+_0x3bffcc[_0x27434e(0x188)]+'\x27')),_0x49b017['indexOf'](_0x27434e(0x16d)+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x142))<0x0&&(_0x49b017=_0x49b017['replace'](/\/\* ENTITIES \*\//,_0x27434e(0x113)+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x142))),_0x49b017['indexOf']('...'+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x15f))<0x0&&(_0x49b017=_0x49b017[_0x27434e(0x10d)](/\/\* RESOLVER CLASSES \*\//,_0x27434e(0x10e)+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x15f))),_0x49b017['indexOf'](_0x27434e(0x16d)+_0x3bffcc[_0x27434e(0x133)]+'EntitySubscribers,')<0x0&&(_0x49b017=_0x49b017['replace'](/\/\* SUBSCRIBERS \*\//,'/*\x20SUBSCRIBERS\x20*/\x0a\x09\x09...'+_0x3bffcc[_0x27434e(0x133)]+_0x27434e(0x17b))),await this[_0x27434e(0x12d)](_0x60c8f,_0x49b017,_0x3bffcc);}async[a0_0x32228d(0x11d)](_0x14b8df,_0x128acf,_0x5a5749,_0x47ad49,_0x3f471b){const _0x802aa6=a0_0x32228d;await this[_0x802aa6(0x12d)](_0x14b8df+(_0x128acf+_0x802aa6(0x170)),serviceIndex,_0x3f471b),await this['writeFile'](_0x14b8df+(_0x128acf+'/'+_0x128acf+_0x802aa6(0x19f)),serviceQuery,_0x3f471b),await this[_0x802aa6(0x12d)](_0x14b8df+(_0x128acf+'/'+_0x128acf+_0x802aa6(0x15b)),serviceMutation,_0x3f471b);let _0x47d1ab=this[_0x802aa6(0x167)](_0x5a5749,_0x47ad49);await this['writeFile'](_0x14b8df+(_0x128acf+'/'+_0x128acf+_0x802aa6(0x14f)),_0x47d1ab,_0x3f471b);let _0x358dc7=this[_0x802aa6(0x18e)](_0x47ad49);await this['writeFile'](_0x14b8df+(_0x128acf+'/'+_0x128acf+_0x802aa6(0x114)),_0x358dc7,_0x3f471b);let _0x201710=_0x14b8df+_0x802aa6(0x173);0x0==await this[_0x802aa6(0x171)](_0x201710)&&await this['writeFile'](_0x201710,allIndex,_0x3f471b);let _0x84136f=await fs[_0x802aa6(0x189)](_0x201710,_0x802aa6(0x152));_0x84136f[_0x802aa6(0x110)](_0x802aa6(0x16e)+_0x3f471b[_0x802aa6(0x188)]+'/'+_0x3f471b[_0x802aa6(0x188)]+'\x27')<0x0&&(_0x84136f=_0x84136f[_0x802aa6(0x10d)](/\/\* EXPORT ENTITY TYPES \*\//,_0x802aa6(0x19c)+_0x3f471b[_0x802aa6(0x188)]+'/'+_0x3f471b[_0x802aa6(0x188)]+'\x27')),_0x84136f['indexOf'](_0x802aa6(0x12c)+_0x3f471b[_0x802aa6(0x133)]+_0x802aa6(0x196)+_0x3f471b[_0x802aa6(0x133)]+_0x802aa6(0x15d)+_0x3f471b[_0x802aa6(0x188)]+'\x27')<0x0&&(_0x84136f=_0x84136f[_0x802aa6(0x10d)](/\/\* IMPORT ENTITIES AND RESOLVERS \*\//,_0x802aa6(0x118)+_0x3f471b[_0x802aa6(0x133)]+_0x802aa6(0x196)+_0x3f471b[_0x802aa6(0x133)]+'Resolvers\x20}\x20from\x20\x27./'+_0x3f471b['name']+'\x27')),_0x84136f[_0x802aa6(0x110)](_0x802aa6(0x16d)+_0x3f471b[_0x802aa6(0x133)]+_0x802aa6(0x142))<0x0&&(_0x84136f=_0x84136f[_0x802aa6(0x10d)](/\/\* ENTITIES \*\//,'/*\x20ENTITIES\x20*/\x0a\x09...'+_0x3f471b[_0x802aa6(0x133)]+_0x802aa6(0x142))),_0x84136f[_0x802aa6(0x110)](_0x802aa6(0x16d)+_0x3f471b['pascalCaseName']+_0x802aa6(0x15f))<0x0&&(_0x84136f=_0x84136f[_0x802aa6(0x10d)](/\/\* RESOLVER CLASSES \*\//,_0x802aa6(0x10e)+_0x3f471b[_0x802aa6(0x133)]+_0x802aa6(0x15f))),await this[_0x802aa6(0x12d)](_0x201710,_0x84136f,_0x3f471b);}[a0_0x32228d(0x18e)](_0x273879){const _0xdafc0=a0_0x32228d;let _0x5555ce=sereviceType,_0x458aa1=_0x273879[_0xdafc0(0x165)](_0x2325fa=>{const _0x239dd6=_0xdafc0;if('id'==_0x2325fa['name'])return'';if('domain_id'==_0x2325fa[_0x239dd6(0x188)])return'';if(_0x239dd6(0x168)==_0x2325fa[_0x239dd6(0x188)])return'';if(_0x239dd6(0x198)==_0x2325fa[_0x239dd6(0x188)])return'';if(_0x239dd6(0x12b)==_0x2325fa[_0x239dd6(0x188)])return'';if(_0x239dd6(0x147)==_0x2325fa[_0x239dd6(0x188)])return'';let _0x3fda1a=this[_0x239dd6(0x146)](_0x2325fa),_0x48f28d=this[_0x239dd6(0x13b)](_0x2325fa),_0x2d4ae8=camelCase(_0x2325fa[_0x239dd6(0x188)]);return'\x20\x20'+(_0x239dd6(0x192)+(0x0==_0x3fda1a[_0x239dd6(0x166)]?'':_0x239dd6(0x10c)+_0x3fda1a+',')+'\x20{\x20nullable:\x20'+_0x2325fa[_0x239dd6(0x16c)]+_0x239dd6(0x148))+_0x239dd6(0x13c)+(''+_0x2d4ae8+(_0x2325fa[_0x239dd6(0x16c)]?'?':'')+':\x20'+_0x48f28d)+'\x0a';});_0x5555ce=_0x5555ce[_0xdafc0(0x10d)](/{{newTypeColumns}}/g,_0x458aa1['join']('\x0a'));let _0x373852=_0x273879[_0xdafc0(0x165)](_0x409507=>{const _0x25f989=_0xdafc0;if('id'==_0x409507[_0x25f989(0x188)])return'';if('domain_id'==_0x409507[_0x25f989(0x188)])return'';if(_0x25f989(0x168)==_0x409507[_0x25f989(0x188)])return'';if(_0x25f989(0x198)==_0x409507[_0x25f989(0x188)])return'';if(_0x25f989(0x12b)==_0x409507[_0x25f989(0x188)])return'';if('updater_id'==_0x409507['name'])return'';let _0x1fceb8=this[_0x25f989(0x146)](_0x409507),_0x64714=this[_0x25f989(0x13b)](_0x409507);_0x409507[_0x25f989(0x16c)]=!0x0;let _0x3789fc=camelCase(_0x409507[_0x25f989(0x188)]);return'\x20\x20'+('@Field('+(0x0==_0x1fceb8[_0x25f989(0x166)]?'':_0x25f989(0x10c)+_0x1fceb8+',')+_0x25f989(0x160)+_0x409507['nullable']+_0x25f989(0x148))+_0x25f989(0x13c)+(''+_0x3789fc+(_0x409507[_0x25f989(0x16c)]?'?':'')+':\x20'+_0x64714)+'\x0a';});return _0x5555ce=_0x5555ce[_0xdafc0(0x10d)](/{{patchTypeColumns}}/g,_0x373852[_0xdafc0(0x126)]('\x0a')),_0x5555ce;}['createEntityText'](_0xbcc260,_0xd5bfb3){const _0x493145=a0_0x32228d;let _0x2d8ed0=serviceEntity,_0x27bda0=_0xd5bfb3[_0x493145(0x116)](function(_0x1a5c46,_0x3f879c){const _0x2710cf=_0x493145;return _0x1a5c46[_0x2710cf(0x163)]-_0x3f879c[_0x2710cf(0x163)];})[_0x493145(0x165)](_0x5b460c=>this[_0x493145(0x138)](_0x5b460c));[_0x493145(0x134),_0x493145(0x175)]['includes'](_0xbcc260[_0x493145(0x150)])&&_0x27bda0[_0x493145(0x16b)](_0x493145(0x13a)),_0x2d8ed0=_0x2d8ed0[_0x493145(0x10d)](/{{entityColumns}}/g,_0x27bda0[_0x493145(0x126)]('\x0a'));let _0x1e79e1='',_0x5bab82=_0xd5bfb3[_0x493145(0x11c)](_0x30e8cc=>_0x30e8cc[_0x493145(0x119)]&&_0x30e8cc[_0x493145(0x119)]>0x0)[_0x493145(0x116)](function(_0x1d36ef,_0x40151e){const _0x5d31fe=_0x493145;return _0x1d36ef[_0x5d31fe(0x119)]-_0x40151e[_0x5d31fe(0x119)];});if(_0x5bab82['length']>0x0){_0x1e79e1=_0x493145(0x149);let _0x35621b=_0x5bab82['map'](_0x43942d=>{const _0x5aeeed=_0x493145;let _0x1805c6=_0x43942d[_0x5aeeed(0x188)];return _0x5aeeed(0x151)==_0x43942d[_0x5aeeed(0x188)]&&(_0x1805c6=_0x5aeeed(0x199)),_0x5aeeed(0x12b)==_0x43942d[_0x5aeeed(0x188)]&&(_0x1805c6=_0x5aeeed(0x143)),'updater_id'==_0x43942d[_0x5aeeed(0x188)]&&(_0x1805c6=_0x5aeeed(0x15e)),_0x5aeeed(0x128)+camelCase(_0x1805c6);});_0x1e79e1=_0x1e79e1['replace'](/{{indexColumns}}/g,_0x35621b['join'](','));}return _0x2d8ed0=_0x2d8ed0[_0x493145(0x10d)](/{{indexAnn}}/g,_0x1e79e1),_0x2d8ed0;}['createHistoryEntityText'](_0x39ce11,_0x2ae0e3){const _0x3dc2d2=a0_0x32228d;let _0x6e3a50=_0x3dc2d2(0x175)==_0x39ce11['dataProp']?serviceEntityHistJson:serviceEntityHistCopy,_0x4392f8=_0x2ae0e3[_0x3dc2d2(0x116)](function(_0x42fa23,_0xc003a9){const _0x5386e3=_0x3dc2d2;return _0x42fa23[_0x5386e3(0x163)]-_0xc003a9[_0x5386e3(0x163)];})[_0x3dc2d2(0x165)](_0x54aa00=>this[_0x3dc2d2(0x138)](_0x54aa00));return _0x6e3a50=_0x6e3a50[_0x3dc2d2(0x10d)](/{{entityColumns}}/g,_0x4392f8[_0x3dc2d2(0x126)]('\x0a')),_0x6e3a50;}['columnToEntityColumn'](_0x136ec7){const _0x373b41=a0_0x32228d;if('id'==_0x136ec7['name'])return'';if('domain_id'==_0x136ec7[_0x373b41(0x188)])return'';if(_0x373b41(0x168)==_0x136ec7[_0x373b41(0x188)])return'';if(_0x373b41(0x198)==_0x136ec7[_0x373b41(0x188)])return'';if(_0x373b41(0x12b)==_0x136ec7[_0x373b41(0x188)])return'';if(_0x373b41(0x147)==_0x136ec7[_0x373b41(0x188)])return'';let _0x37d2a2=_0x136ec7[_0x373b41(0x120)];_0x373b41(0x144)==_0x136ec7[_0x373b41(0x120)]&&(_0x37d2a2=_0x373b41(0x16a)),_0x373b41(0x10f)==_0x136ec7[_0x373b41(0x120)]&&(_0x37d2a2=_0x373b41(0x129)),'string'==_0x136ec7['colType']&&(_0x37d2a2=_0x373b41(0x172)),'datetime'==_0x136ec7[_0x373b41(0x120)]&&(_0x37d2a2='timestamp\x20without\x20time\x20zone');let _0x90ada3='';_0x373b41(0x10b)==_0x136ec7[_0x373b41(0x120)]&&(_0x90ada3=_0x136ec7[_0x373b41(0x12a)]);let _0x26be4b=this[_0x373b41(0x146)](_0x136ec7),_0x470da6=this[_0x373b41(0x13b)](_0x136ec7),_0x52b392=camelCase(_0x136ec7[_0x373b41(0x188)]);return'\x20\x20'+(_0x373b41(0x141)+_0x136ec7['name']+_0x373b41(0x145)+_0x37d2a2+_0x373b41(0x19e)+_0x136ec7[_0x373b41(0x16c)]+'\x20'+(0x0==_0x90ada3['length']?'':',length:'+_0x90ada3)+_0x373b41(0x148))+_0x373b41(0x13c)+(_0x373b41(0x192)+(0x0==_0x26be4b[_0x373b41(0x166)]?'':'type\x20=>'+_0x26be4b+',')+_0x373b41(0x160)+_0x136ec7[_0x373b41(0x16c)]+_0x373b41(0x148))+'\x0a\x20\x20'+(''+_0x52b392+(_0x136ec7[_0x373b41(0x16c)]?'?':'')+':\x20'+_0x470da6)+'\x0a';}['getFieldType'](_0x45752f){const _0xcac176=a0_0x32228d;let _0x4da005='';return _0xcac176(0x144)==_0x45752f[_0xcac176(0x120)]&&(_0x4da005=_0xcac176(0x155)),_0xcac176(0x183)==_0x45752f['colType']&&(_0x4da005=_0xcac176(0x155)),_0xcac176(0x10f)==_0x45752f[_0xcac176(0x120)]&&(_0x4da005='Int'),_0xcac176(0x132)==_0x45752f[_0xcac176(0x120)]&&(_0x4da005='Int'),_0x4da005;}[a0_0x32228d(0x13b)](_0x3f862e){const _0x5b377c=a0_0x32228d;let _0x31e41b=_0x3f862e[_0x5b377c(0x120)];return'decimal'==_0x3f862e['colType']&&(_0x31e41b=_0x5b377c(0x176)),_0x5b377c(0x144)==_0x3f862e[_0x5b377c(0x120)]&&(_0x31e41b=_0x5b377c(0x176)),'float'==_0x3f862e[_0x5b377c(0x120)]&&(_0x31e41b=_0x5b377c(0x176)),'integer'==_0x3f862e[_0x5b377c(0x120)]&&(_0x31e41b=_0x5b377c(0x176)),_0x5b377c(0x10f)==_0x3f862e[_0x5b377c(0x120)]&&(_0x31e41b='number'),_0x5b377c(0x187)==_0x3f862e['colType']&&(_0x31e41b=_0x5b377c(0x18a)),_0x5b377c(0x195)==_0x3f862e[_0x5b377c(0x120)]&&(_0x31e41b='Date'),_0x5b377c(0x180)==_0x3f862e[_0x5b377c(0x120)]&&(_0x31e41b=_0x5b377c(0x10b)),_0x31e41b;}async[a0_0x32228d(0x12d)](_0x1c3fdd,_0x6df806,_0x369bcf){const _0x379efc=a0_0x32228d;await fs[_0x379efc(0x15a)](_0x1c3fdd,this[_0x379efc(0x14b)](_0x6df806,_0x369bcf),_0x379efc(0x152));}[a0_0x32228d(0x14b)](_0x188d83,_0x516c48){const _0x28ab30=a0_0x32228d;return _0x188d83['replace'](/{{pascalCase name}}/g,_0x516c48[_0x28ab30(0x133)])[_0x28ab30(0x10d)](/{{camelCase name}}/g,_0x516c48['camelCaseName'])[_0x28ab30(0x10d)](/{{snakeCase name}}/g,_0x516c48[_0x28ab30(0x130)])[_0x28ab30(0x10d)](/{{pluralPascalCase name}}/g,_0x516c48[_0x28ab30(0x17c)])['replace'](/{{pluralCamelCase name}}/g,_0x516c48[_0x28ab30(0x157)])[_0x28ab30(0x10d)](/{{tableName}}/g,_0x516c48[_0x28ab30(0x139)])[_0x28ab30(0x10d)](/{{name}}/g,_0x516c48[_0x28ab30(0x188)]);}async[a0_0x32228d(0x184)](_0x14507b,_0x1a0412,_0x14f120){const _0x572cbc=a0_0x32228d;let _0x4b48d2=_0x14507b+_0x572cbc(0x11b);await this[_0x572cbc(0x18b)](_0x4b48d2),_0x4b48d2=_0x4b48d2+'/'+_0x1a0412,await this[_0x572cbc(0x18b)](_0x4b48d2),_0x4b48d2+=_0x572cbc(0x191),await this[_0x572cbc(0x18b)](_0x4b48d2),_0x4b48d2+='/service',await this['createDir'](_0x4b48d2),_0x4b48d2=_0x4b48d2+'/'+_0x14f120,await this[_0x572cbc(0x18b)](_0x4b48d2);}[a0_0x32228d(0x174)](){const _0x43f9a2=a0_0x32228d;let _0x4a5445=process[_0x43f9a2(0x11a)][_0x43f9a2(0x136)][_0x43f9a2(0x121)]('/'),_0x21efb7=[];for(let _0x2f52c5=0x0;_0x2f52c5<_0x4a5445[_0x43f9a2(0x166)]&&'packages'!=_0x4a5445[_0x2f52c5];_0x2f52c5++)_0x21efb7['push'](_0x4a5445[_0x2f52c5]);return _0x21efb7[_0x43f9a2(0x126)]('/');}async[a0_0x32228d(0x18b)](_0x1d1bdf){const _0xdecdb4=a0_0x32228d;0x0==await this[_0xdecdb4(0x171)](_0x1d1bdf)&&fs[_0xdecdb4(0x181)](_0x1d1bdf);}async[a0_0x32228d(0x171)](_0x59af0b){const _0x28f041=a0_0x32228d;return await fs[_0x28f041(0x185)](_0x59af0b);}};tslib_1[a0_0x32228d(0x131)]([(0x0,type_graphql_1[a0_0x32228d(0x14d)])(_0x65f33c=>Boolean,{'description':a0_0x32228d(0x17d)}),tslib_1[a0_0x32228d(0x13e)](0x0,(0x0,type_graphql_1[a0_0x32228d(0x197)])('id')),tslib_1[a0_0x32228d(0x13e)](0x1,(0x0,type_graphql_1['Ctx'])()),tslib_1[a0_0x32228d(0x135)](a0_0x32228d(0x18f),Function),tslib_1[a0_0x32228d(0x135)](a0_0x32228d(0x14a),[String,Object]),tslib_1[a0_0x32228d(0x135)]('design:returntype',Promise)],OperatoToolCreateService[a0_0x32228d(0x117)],a0_0x32228d(0x12e),null),OperatoToolCreateService=tslib_1[a0_0x32228d(0x131)]([(0x0,type_graphql_1[a0_0x32228d(0x123)])()],OperatoToolCreateService),exports[a0_0x32228d(0x124)]=OperatoToolCreateService;function a0_0x1ab1(_0x24a69c,_0x424907){const _0x58c7f1=a0_0x58c7();return a0_0x1ab1=function(_0x1ab12c,_0x4a4b6e){_0x1ab12c=_0x1ab12c-0x10b;let _0x24db77=_0x58c7f1[_0x1ab12c];return _0x24db77;},a0_0x1ab1(_0x24a69c,_0x424907);}const allIndex='\x0a/*\x20EXPORT\x20ENTITY\x20TYPES\x20*/\x0a\x0a/*\x20IMPORT\x20ENTITIES\x20AND\x20RESOLVERS\x20*/\x0a\x0aexport\x20const\x20entities\x20=\x20[\x20\x20\x0a\x20\x20/*\x20ENTITIES\x20*/\x0a]\x20\x0a\x0a\x0aexport\x20const\x20schema\x20=\x20{\x0a\x20\x20resolverClasses:\x20[\x0a\x20\x20\x20\x20/*\x20RESOLVER\x20CLASSES\x20*/\x0a\x20\x20]\x20\x0a}\x0a\x0aexport\x20const\x20subscribers\x20=\x20[\x0a\x20\x20/*\x20SUBSCRIBERS\x20*/\x0a]\x0a',serviceIndex=a0_0x32228d(0x115),serviceHistoryIndex=a0_0x32228d(0x162),serviceQuery=a0_0x32228d(0x156),serviceHistoryQuery=a0_0x32228d(0x161),serviceMutation='\x0aimport\x20{\x20Resolver,\x20Mutation,\x20Arg,\x20Ctx,\x20Directive\x20}\x20from\x20\x27type-graphql\x27\x0aimport\x20{\x20In\x20}\x20from\x20\x27typeorm\x27\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0aimport\x20{\x20New{{pascalCase\x20name}},\x20{{pascalCase\x20name}}Patch\x20}\x20from\x20\x27./{{name}}-type\x27\x0aimport\x20{\x20getRepository\x20}\x20from\x20\x27@things-factory/shell\x27\x0a\x0a@Resolver({{pascalCase\x20name}})\x0aexport\x20class\x20{{pascalCase\x20name}}Mutation\x20{\x0a\x20\x20@Directive(\x27@transaction\x27)\x0a\x20\x20@Mutation(returns\x20=>\x20{{pascalCase\x20name}},\x20{\x20description:\x20\x27To\x20create\x20new\x20{{pascalCase\x20name}}\x27\x20})\x0a\x20\x20async\x20create{{pascalCase\x20name}}(@Arg(\x27{{camelCase\x20name}}\x27)\x20{{camelCase\x20name}}:\x20New{{pascalCase\x20name}},\x20@Ctx()\x20context:\x20any):\x20Promise<{{pascalCase\x20name}}>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain,\x20user,\x20tx\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20return\x20await\x20tx.getRepository({{pascalCase\x20name}}).save({\x0a\x20\x20\x20\x20\x20\x20...{{camelCase\x20name}},\x0a\x20\x20\x20\x20\x20\x20domain,\x0a\x20\x20\x20\x20\x20\x20creator:\x20user,\x0a\x20\x20\x20\x20\x20\x20updater:\x20user\x0a\x20\x20\x20\x20})\x0a\x20\x20}\x0a\x0a\x20\x20@Directive(\x27@transaction\x27)\x0a\x20\x20@Mutation(returns\x20=>\x20{{pascalCase\x20name}},\x20{\x20description:\x20\x27To\x20modify\x20{{pascalCase\x20name}}\x20information\x27\x20})\x0a\x20\x20async\x20update{{pascalCase\x20name}}(\x0a\x20\x20\x20\x20@Arg(\x27id\x27)\x20id:\x20string,\x0a\x20\x20\x20\x20@Arg(\x27patch\x27)\x20patch:\x20{{pascalCase\x20name}}Patch,\x0a\x20\x20\x20\x20@Ctx()\x20context:\x20any\x0a\x20\x20):\x20Promise<{{pascalCase\x20name}}>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain,\x20user,\x20tx\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20const\x20repository\x20=\x20tx.getRepository({{pascalCase\x20name}})\x0a\x20\x20\x20\x20const\x20{{camelCase\x20name}}\x20=\x20await\x20repository.findOne(\x0a\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20{\x20domain:\x20{\x20id:\x20domain.id\x20},\x20id\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20relations:\x20[\x27domain\x27,\x20\x27updater\x27,\x20\x27creator\x27]\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20)\x0a\x0a\x20\x20\x20\x20return\x20await\x20repository.save({\x0a\x20\x20\x20\x20\x20\x20...{{camelCase\x20name}},\x0a\x20\x20\x20\x20\x20\x20...patch,\x0a\x20\x20\x20\x20\x20\x20updater:\x20user\x0a\x20\x20\x20\x20})\x0a\x20\x20}\x0a\x0a\x20\x20@Directive(\x27@transaction\x27)\x0a\x20\x20@Mutation(returns\x20=>\x20[{{pascalCase\x20name}}],\x20{\x20description:\x20\x22To\x20modify\x20multiple\x20{{pluralPascalCase\x20name}}\x27\x20information\x22\x20})\x0a\x20\x20async\x20updateMultiple{{pascalCase\x20name}}(\x0a\x20\x20\x20\x20@Arg(\x27patches\x27,\x20type\x20=>\x20[{{pascalCase\x20name}}Patch])\x20patches:\x20{{pascalCase\x20name}}Patch[],\x0a\x20\x20\x20\x20@Ctx()\x20context:\x20any\x0a\x20\x20):\x20Promise<{{pascalCase\x20name}}[]>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain,\x20user,\x20tx\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20let\x20results\x20=\x20[]\x0a\x20\x20\x20\x20const\x20_createRecords\x20=\x20patches.filter((patch:\x20any)\x20=>\x20patch.cuFlag.toUpperCase()\x20===\x20\x27+\x27)\x0a\x20\x20\x20\x20const\x20_updateRecords\x20=\x20patches.filter((patch:\x20any)\x20=>\x20patch.cuFlag.toUpperCase()\x20===\x20\x27M\x27)\x0a\x20\x20\x20\x20const\x20{{camelCase\x20name}}Repo\x20=\x20tx.getRepository({{pascalCase\x20name}})\x0a\x0a\x20\x20\x20\x20if\x20(_createRecords.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20_createRecords.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20newRecord\x20=\x20_createRecords[i]\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20await\x20{{camelCase\x20name}}Repo.save({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...newRecord,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20domain,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20creator:\x20user,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updater:\x20user\x0a\x20\x20\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20results.push({\x20...result,\x20cuFlag:\x20\x27+\x27\x20})\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(_updateRecords.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20_updateRecords.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updRecord\x20=\x20_updateRecords[i]\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{{camelCase\x20name}}\x20=\x20await\x20{{camelCase\x20name}}Repo.findOne({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20where:\x20{\x20domain:\x20{\x20id:\x20domain.id\x20},\x20id:updRecord.id\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20relations:\x20[\x27domain\x27,\x20\x27updater\x27,\x20\x27creator\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20await\x20{{camelCase\x20name}}Repo.save({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...{{camelCase\x20name}},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...updRecord,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updater:\x20user\x0a\x20\x20\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20results.push({\x20...result,\x20cuFlag:\x20\x27M\x27\x20})\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20results\x0a\x20\x20}\x0a\x0a\x20\x20@Directive(\x27@transaction\x27)\x0a\x20\x20@Mutation(returns\x20=>\x20Boolean,\x20{\x20description:\x20\x27To\x20delete\x20{{pascalCase\x20name}}\x27\x20})\x0a\x20\x20async\x20delete{{pascalCase\x20name}}(@Arg(\x27id\x27)\x20id:\x20string,\x20@Ctx()\x20context:\x20any):\x20Promise<boolean>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain,\x20tx,\x20user\x20}\x20=\x20context.state\x0a\x20\x20\x20\x20await\x20tx.getRepository({{pascalCase\x20name}}).remove({\x20domain,\x20id,\x20updater:user\x20})\x0a\x20\x20\x20\x20return\x20true\x0a\x20\x20}\x0a\x0a\x20\x20@Directive(\x27@transaction\x27)\x0a\x20\x20@Mutation(returns\x20=>\x20Boolean,\x20{\x20description:\x20\x27To\x20delete\x20multiple\x20{{camelCase\x20name}}s\x27\x20})\x0a\x20\x20async\x20delete{{pluralPascalCase\x20name}}(\x0a\x20\x20\x20\x20@Arg(\x27ids\x27,\x20type\x20=>\x20[String])\x20ids:\x20string[],\x0a\x20\x20\x20\x20@Ctx()\x20context:\x20any\x0a\x20\x20):\x20Promise<boolean>\x20{\x0a\x20\x20\x20\x20const\x20{\x20domain,\x20tx,\x20user\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20let\x20delEntitis\x20=\x20ids.map(id=>{\x0a\x20\x20\x20\x20\x20\x20return\x20{domain,id,updater:user}\x0a\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20await\x20tx.getRepository({{pascalCase\x20name}}).remove(delEntitis)\x0a\x0a\x20\x20\x20\x20return\x20true\x0a\x20\x20}\x0a}\x0a',sereviceType=a0_0x32228d(0x154),sereviceHistoryType=a0_0x32228d(0x140),serviceEntity='\x0aimport\x20{\x0a\x20\x20CreateDateColumn,\x0a\x20\x20UpdateDateColumn,\x0a\x20\x20Entity,\x0a\x20\x20Index,\x0a\x20\x20Column,\x0a\x20\x20RelationId,\x0a\x20\x20ManyToOne,\x0a\x20\x20PrimaryGeneratedColumn,\x0a\x20\x20VersionColumn\x0a}\x20from\x20\x27typeorm\x27\x0aimport\x20{\x20ObjectType,\x20Field,\x20Int,\x20ID,\x20Float,\x20registerEnumType\x20}\x20from\x20\x27type-graphql\x27\x0a\x0aimport\x20{\x20Domain\x20}\x20from\x20\x27@things-factory/shell\x27\x0aimport\x20{\x20User\x20}\x20from\x20\x27@things-factory/auth-base\x27\x0a\x0a@Entity(\x27{{tableName}}\x27)\x0a{{indexAnn}}\x0a@ObjectType({\x20description:\x20\x27Entity\x20for\x20{{pascalCase\x20name}}\x27\x20})\x0aexport\x20class\x20{{pascalCase\x20name}}\x20{\x0a\x20\x20@PrimaryGeneratedColumn(\x27uuid\x27)\x0a\x20\x20@Field(type\x20=>\x20ID)\x0a\x20\x20readonly\x20id:\x20string\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20Domain,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20domain:\x20Domain\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}:\x20{{pascalCase\x20name}})\x20=>\x20{{camelCase\x20name}}.domain)\x0a\x20\x20domainId:\x20string\x0a\x0a{{entityColumns}}\x0a\x0a\x20\x20@CreateDateColumn()\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20createdAt?:\x20Date\x0a\x0a\x20\x20@UpdateDateColumn()\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20updatedAt?:\x20Date\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20User,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false,\x0a\x20\x20\x20\x20nullable:\x20true\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20creator?:\x20User\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}:\x20{{pascalCase\x20name}})\x20=>\x20{{camelCase\x20name}}.creator)\x0a\x20\x20creatorId?:\x20string\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20User,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false,\x0a\x20\x20\x20\x20nullable:\x20true\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20updater?:\x20User\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}:\x20{{pascalCase\x20name}})\x20=>\x20{{camelCase\x20name}}.updater)\x0a\x20\x20updaterId?:\x20string\x0a}\x0a',serviceEntityHistCopy=a0_0x32228d(0x14e),serviceEntityHistJson='\x0aimport\x20{\x0a\x20\x20CreateDateColumn,\x0a\x20\x20UpdateDateColumn,\x0a\x20\x20Entity,\x0a\x20\x20Index,\x0a\x20\x20Column,\x0a\x20\x20RelationId,\x0a\x20\x20ManyToOne,\x0a\x20\x20PrimaryGeneratedColumn,\x0a\x20\x20VersionColumn\x0a}\x20from\x20\x27typeorm\x27\x0a\x0aimport\x20{\x0a\x20\x20HistoryActionColumn,\x0a\x20\x20HistoryActionType,\x0a\x20\x20HistoryEntityInterface,\x0a\x20\x20HistoryOriginalIdColumn\x0a}\x20from\x20\x27@operato/typeorm-history\x27\x0a\x0aimport\x20{\x20ObjectType,\x20Field,\x20Int,\x20ID,\x20Float,\x20registerEnumType\x20}\x20from\x20\x27type-graphql\x27\x0a\x0aimport\x20{\x20config\x20}\x20from\x20\x27@things-factory/env\x27\x0aimport\x20{\x20Domain,\x20ScalarObject\x20}\x20from\x20\x27@things-factory/shell\x27\x0aimport\x20{\x20User\x20}\x20from\x20\x27@things-factory/auth-base\x27\x0a\x0aconst\x20ORMCONFIG\x20=\x20config.get(\x27ormconfig\x27,\x20{})\x0aconst\x20DATABASE_TYPE\x20=\x20ORMCONFIG.type\x0a\x0aimport\x20{\x20{{pascalCase\x20name}}\x20}\x20from\x20\x27./{{name}}\x27\x0a\x0a@Entity(\x27{{tableName}}_histories\x27)\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_0\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.originalId,{{camelCase\x20name}}History.dataRevisionNo],\x20{\x20unique:\x20true\x20})\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_1\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.originalId\x20],\x20{\x20unique:\x20false\x20})\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_2\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.domain,\x20{{camelCase\x20name}}History.originalId\x20],\x20{\x20unique:\x20false\x20})\x0a@Index(\x27ix_{{snakeCase\x20name}}_histories_3\x27,\x20({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20[{{camelCase\x20name}}History.domain,\x20{{camelCase\x20name}}History.originalId,\x20{{camelCase\x20name}}History.dataRevisionNo],\x20{\x20unique:\x20true\x20})\x0a@ObjectType({\x20description:\x20\x27Entity\x20for\x20{{pascalCase\x20name}}History\x27\x20})\x0aexport\x20class\x20{{pascalCase\x20name}}History\x20\x20implements\x20HistoryEntityInterface<{{pascalCase\x20name}}>{\x0a\x20\x20@PrimaryGeneratedColumn(\x27uuid\x27)\x0a\x20\x20@Field(type\x20=>\x20ID)\x0a\x20\x20readonly\x20id:\x20string\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20Domain,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20domain:\x20Domain\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20{{camelCase\x20name}}History.domain)\x0a\x20\x20domainId:\x20string\x0a\x0a\x20\x20@HistoryOriginalIdColumn({type:\x20\x27character\x20varying\x27,\x20nullable:\x20false\x20,length:40})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20public\x20originalId!:\x20string\x0a\x0a\x20\x20@HistoryActionColumn({\x0a\x20\x20\x20\x20nullable:\x20false,\x0a\x20\x20\x20\x20type:\x0a\x20\x20\x20\x20\x20\x20DATABASE_TYPE\x20==\x20\x27postgres\x27\x20||\x20DATABASE_TYPE\x20==\x20\x27mysql\x27\x20||\x20DATABASE_TYPE\x20==\x20\x27mariadb\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27enum\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20DATABASE_TYPE\x20==\x20\x27oracle\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27varchar2\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27smallint\x27,\x0a\x20\x20\x20\x20enum:\x20HistoryActionType\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20public\x20dataRevisionAction!:\x20HistoryActionType\x0a\x0a\x0a\x20\x20@Column({\x20default:\x201,\x20nullable:\x20false\x20})\x0a\x20\x20@Field({\x20nullable:\x20false\x20})\x0a\x20\x20dataRevisionNo?:\x20number\x20=\x201\x0a\x0a\x20\x20@Column(\x27simple-json\x27,\x20{\x20nullable:\x20true\x20})\x0a\x20\x20@Field(type\x20=>\x20ScalarObject,\x20{\x20nullable:\x20true\x20})\x0a\x20\x20historyJson?:\x20any\x0a\x0a\x20\x20@CreateDateColumn()\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20createdAt?:\x20Date\x0a\x0a\x20\x20@UpdateDateColumn()\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20updatedAt?:\x20Date\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20User,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false,\x0a\x20\x20\x20\x20nullable:\x20true\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20creator?:\x20User\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20{{camelCase\x20name}}History.creator)\x0a\x20\x20creatorId?:\x20string\x0a\x0a\x20\x20@ManyToOne(type\x20=>\x20User,\x20{\x0a\x20\x20\x20\x20createForeignKeyConstraints:\x20false,\x0a\x20\x20\x20\x20nullable:\x20true\x0a\x20\x20})\x0a\x20\x20@Field({\x20nullable:\x20true\x20})\x0a\x20\x20updater?:\x20User\x0a\x0a\x20\x20@RelationId(({{camelCase\x20name}}History:\x20{{pascalCase\x20name}}History)\x20=>\x20{{camelCase\x20name}}History.updater)\x0a\x20\x20updaterId?:\x20string\x0a}\x0a',serviceEntitySubscriber=a0_0x32228d(0x13f);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-service.js","sourceRoot":"","sources":["../../../server/service/tool-entity/create-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\nimport { getRepository } from '@things-factory/shell'\nimport { Entity, EntityColumn } from '@things-factory/resource-base'\n\nconst { camelCase, startCase, snakeCase, kebabCase } = require('lodash')\nconst { plural } = require('pluralize')\nconst fs = require('fs');\n\n\n@Resolver()\nexport class OperatoToolCreateService {\n @Query(returns => Boolean, { description: 'Operato Tool Create Service' })\n async toolCreateService(@Arg('id') id: string, @Ctx() context: any): Promise<Boolean> {\n const { domain } = context.state\n // Entity 조회 \n const entity: Entity = await getRepository(Entity).findOne({\n where: {\n id\n }\n })\n\n // Entity 컬럼 조회 \n const entityColumns: EntityColumn[] = await getRepository(EntityColumn).find({\n where: {\n domain: { id: domain.id },\n entity: { id: entity.id }\n }\n })\n\n let { name = '', bundle = '' } = entity || {};\n\n // 프로젝트 Root Path 구하기 \n let appRootPath: string = this.getProjectRootPath();\n let serviceName: string = kebabCase(name);\n // 서비스 경로 생성 \n await this.createServicePath(appRootPath, bundle, serviceName);\n\n // 서비스 파일 생성 \n await this.createServiceFiles(appRootPath, bundle, name, serviceName, entity, entityColumns);\n\n return true;\n }\n\n\n /**\n * 서비스 연관 파일 생성 \n * @param appRootPath \n * @param moduleName \n * @param name \n * @param serviceName\n * @param entity \n * @param entityColumns \n */\n async createServiceFiles(appRootPath: string, moduleName: string, name: string, serviceName: string, entity: Entity, entityColumns: EntityColumn[]) {\n // 이름 케이스 워드 만들기 \n let nameMap = {\n name: serviceName,\n tableName: entity.tableName,\n pascalCaseName: startCase(camelCase(name)).replace(/ /g, ''),\n camelCaseName: camelCase(name),\n snakeCaseName: snakeCase(name),\n pluralPascalCaseName: startCase(camelCase(plural(name))).replace(/ /g, ''),\n pluralCamelCaseName: camelCase(plural(name))\n }\n let servicePath = `${appRootPath}/packages/${moduleName}/server/service/`;\n\n if(['JSON','COPY'].includes(entity.dataProp)){\n await this.createHistoryServiceFiles(servicePath, serviceName, entity, entityColumns, nameMap);\n } else {\n await this.createNoHistoryServiceFiels(servicePath, serviceName, entity, entityColumns, nameMap);\n }\n }\n\n async createHistoryServiceFiles(servicePath: string, serviceName: string, entity: Entity, entityColumns: EntityColumn[], nameMap: any){\n // 서비스 연관 파일 생성 \n await this.writeFile(servicePath + `${serviceName}/index.ts`, serviceHistoryIndex, nameMap);\n\n // Entity\n let entityText = this.createEntityText(entity, entityColumns);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}.ts`, entityText, nameMap);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-query.ts`, serviceQuery, nameMap);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-mutation.ts`, serviceMutation, nameMap);\n // TYPE\n let typeText = this.createTypeText(entityColumns);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-type.ts`, typeText, nameMap);\n \n\n // 이력관리 entity 생성 \n let historyText = this.createHistoryEntityText(entity, entityColumns);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-history.ts`, historyText, nameMap);\n let entitySubscriberEntityToJson = '';\n if(entity.dataProp == 'JSON'){\n entitySubscriberEntityToJson = \n `\n public createHistoryEntity(manager, entity) {\n let history = manager.create(this.historyEntity, entity);\n history.historyJson = JSON.stringify(entity);\n return history;\n }\n `\n await this.writeFile(servicePath + `${serviceName}/event-subscriber.ts`, serviceEntitySubscriber, nameMap);\n } else {\n entitySubscriberEntityToJson = '';\n }\n let subscriberTxt = serviceEntitySubscriber.replace(/{{entityToJson}}/g, entitySubscriberEntityToJson);\n await this.writeFile(servicePath + `${serviceName}/event-subscriber.ts`, subscriberTxt, nameMap);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-history-query.ts`, serviceHistoryQuery, nameMap);\n // TYPE\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-history-type.ts`, sereviceHistoryType, nameMap);\n\n \n // 전체 서비스 index.ts 파일\n let allServiceIdxPath = servicePath + 'index.ts';\n if (await this.existsPath(allServiceIdxPath) == false) {\n await this.writeFile(allServiceIdxPath, allIndex, nameMap);\n }\n \n let allIdxFileTxt = await fs.readFileSync(allServiceIdxPath, 'utf8');\n \n if (allIdxFileTxt.indexOf(`export * from './${nameMap.name}/${nameMap.name}-history'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* EXPORT ENTITY TYPES \\*\\//,\n `/* EXPORT ENTITY TYPES */\\nexport * from './${nameMap.name}/${nameMap.name}-history'`\n );\n }\n\n if (allIdxFileTxt.indexOf(`export * from './${nameMap.name}/${nameMap.name}'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* EXPORT ENTITY TYPES \\*\\//,\n `/* EXPORT ENTITY TYPES */\\nexport * from './${nameMap.name}/${nameMap.name}'`\n );\n }\n \n if (allIdxFileTxt.indexOf(`import { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers, subscribers as ${nameMap.pascalCaseName}EntitySubscribers } from './${nameMap.name}'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* IMPORT ENTITIES AND RESOLVERS \\*\\//,\n `/* IMPORT ENTITIES AND RESOLVERS */\\nimport { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers, subscribers as ${nameMap.pascalCaseName}EntitySubscribers } from './${nameMap.name}'`\n );\n }\n \n \n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Entities,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* ENTITIES \\*\\//, `/* ENTITIES */\\n\\t...${nameMap.pascalCaseName}Entities,`\n );\n }\n \n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Resolvers,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* RESOLVER CLASSES \\*\\//,\n `/* RESOLVER CLASSES */\\n\\t\\t...${nameMap.pascalCaseName}Resolvers,`\n );\n }\n \n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}EntitySubscribers,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* SUBSCRIBERS \\*\\//,\n `/* SUBSCRIBERS */\\n\\t\\t...${nameMap.pascalCaseName}EntitySubscribers,`\n );\n }\n \n await this.writeFile(allServiceIdxPath, allIdxFileTxt, nameMap);\n }\n\n async createNoHistoryServiceFiels(servicePath: string, serviceName: string, entity: Entity, entityColumns: EntityColumn[], nameMap: any){\n // 서비스 연관 파일 생성 \n await this.writeFile(servicePath + `${serviceName}/index.ts`, serviceIndex, nameMap);\n\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-query.ts`, serviceQuery, nameMap);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-mutation.ts`, serviceMutation, nameMap);\n \n // Entity\n let entityText = this.createEntityText(entity, entityColumns);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}.ts`, entityText, nameMap);\n \n // TYPE\n let typeText = this.createTypeText(entityColumns);\n await this.writeFile(servicePath + `${serviceName}/${serviceName}-type.ts`, typeText, nameMap);\n \n \n // 전체 서비스 index.ts 파일\n let allServiceIdxPath = servicePath + 'index.ts';\n if (await this.existsPath(allServiceIdxPath) == false) {\n await this.writeFile(allServiceIdxPath, allIndex, nameMap);\n }\n \n let allIdxFileTxt = await fs.readFileSync(allServiceIdxPath, 'utf8');\n \n if (allIdxFileTxt.indexOf(`export * from './${nameMap.name}/${nameMap.name}'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* EXPORT ENTITY TYPES \\*\\//,\n `/* EXPORT ENTITY TYPES */\\nexport * from './${nameMap.name}/${nameMap.name}'`\n );\n }\n \n if (allIdxFileTxt.indexOf(`import { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers } from './${nameMap.name}'`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* IMPORT ENTITIES AND RESOLVERS \\*\\//,\n `/* IMPORT ENTITIES AND RESOLVERS */\\nimport { entities as ${nameMap.pascalCaseName}Entities, resolvers as ${nameMap.pascalCaseName}Resolvers } from './${nameMap.name}'`\n );\n }\n \n \n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Entities,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* ENTITIES \\*\\//, `/* ENTITIES */\\n\\t...${nameMap.pascalCaseName}Entities,`\n );\n }\n \n if (allIdxFileTxt.indexOf(`...${nameMap.pascalCaseName}Resolvers,`) < 0) {\n allIdxFileTxt = allIdxFileTxt.replace(\n /\\/\\* RESOLVER CLASSES \\*\\//,\n `/* RESOLVER CLASSES */\\n\\t\\t...${nameMap.pascalCaseName}Resolvers,`\n );\n }\n\n await this.writeFile(allServiceIdxPath, allIdxFileTxt, nameMap);\n }\n\n\n /**\n * 엔티티 타입 텍스트 \n * @param entityColumns \n * @returns \n */\n createTypeText(entityColumns: EntityColumn[]) {\n let typeText = sereviceType;\n\n let newTypeColumns = entityColumns.map(column => {\n if (column.name == 'id') return '';\n if (column.name == 'domain_id') return '';\n if (column.name == 'created_at') return '';\n if (column.name == 'updated_at') return '';\n if (column.name == 'creator_id') return '';\n if (column.name == 'updater_id') return '';\n\n let fieldType: string = this.getFieldType(column);\n let colTxtType: string = this.getColTxtType(column);\n\n let colName = camelCase(column.name);\n let fieldAnn = `@Field(${fieldType.length == 0 ? '' : 'type =>' + fieldType + ','} { nullable: ${column.nullable} })`;\n let columnTxt = `${colName}${column.nullable ? '?' : ''}: ${colTxtType}`\n\n return \" \" + fieldAnn + \"\\n \" + columnTxt + \"\\n\";\n })\n\n typeText = typeText.replace(/{{newTypeColumns}}/g, newTypeColumns.join(\"\\n\"));\n\n let patchTypeColumns = entityColumns.map(column => {\n if (column.name == 'id') return '';\n if (column.name == 'domain_id') return '';\n if (column.name == 'created_at') return '';\n if (column.name == 'updated_at') return '';\n if (column.name == 'creator_id') return '';\n if (column.name == 'updater_id') return '';\n\n let fieldType: string = this.getFieldType(column);\n let colTxtType: string = this.getColTxtType(column);\n\n // patch ?\n column.nullable = true;\n\n let colName = camelCase(column.name);\n let fieldAnn = `@Field(${fieldType.length == 0 ? '' : 'type =>' + fieldType + ','} { nullable: ${column.nullable} })`;\n let columnTxt = `${colName}${column.nullable ? '?' : ''}: ${colTxtType}`\n\n return \" \" + fieldAnn + \"\\n \" + columnTxt + \"\\n\";\n })\n\n typeText = typeText.replace(/{{patchTypeColumns}}/g, patchTypeColumns.join(\"\\n\"));\n\n return typeText;\n }\n\n /**\n * 엔티티 생성 텍스트 \n * @param entity \n * @param entityColumns \n * @returns \n */\n createEntityText(entity: Entity, entityColumns: EntityColumn[]) {\n let entityText = serviceEntity;\n\n // 컬럼 정렬\n let sortedCols: EntityColumn[] = entityColumns.sort(function (a, b) {\n return a.rank - b.rank;\n })\n\n // 컬럼 정보 txt 변환 \n let entityColsText: string[] = sortedCols.map(x => {\n return this.columnToEntityColumn(x);\n })\n\n if(['COPY','JSON'].includes(entity.dataProp)){\n entityColsText.push(`\n @VersionColumn({ default: 1 })\n @Field({ nullable: true })\n dataRevisionNo?: number = 1`)\n }\n\n entityText = entityText.replace(/{{entityColumns}}/g, entityColsText.join(\"\\n\"));\n\n // index 정보\n let indexAnn = ``;\n let sortedIdxCols: EntityColumn[] = entityColumns.filter(x => x.uniqRank && x.uniqRank > 0).sort(function (a, b) {\n return a.uniqRank - b.uniqRank;\n })\n\n if (sortedIdxCols.length > 0) {\n indexAnn = `@Index('ix_{{snakeCase name}}_0', ({{camelCase name}}: {{pascalCase name}}) => [{{indexColumns}}], { unique: true })`;\n\n let idxColumns = sortedIdxCols.map(x => {\n let colName = x.name;\n if (x.name == 'domain_id') colName = 'domain';\n if (x.name == 'creator_id') colName = 'creator';\n if (x.name == 'updater_id') colName = 'updater';\n\n\n return '{{camelCase name}}.' + camelCase(colName);\n })\n\n indexAnn = indexAnn.replace(/{{indexColumns}}/g, idxColumns.join(\",\"));\n }\n entityText = entityText.replace(/{{indexAnn}}/g, indexAnn);\n\n return entityText;\n }\n\n /**\n * 이력관리 엔티티 생성 텍스트 \n * @param entity \n * @param entityColumns \n * @returns \n */\n createHistoryEntityText(entity: Entity, entityColumns: EntityColumn[]) {\n let entityText = entity.dataProp == 'JSON' ? serviceEntityHistJson : serviceEntityHistCopy;\n\n // 컬럼 정렬\n let sortedCols: EntityColumn[] = entityColumns.sort(function (a, b) {\n return a.rank - b.rank;\n })\n\n // 컬럼 정보 txt 변환 \n let entityColsText: string[] = sortedCols.map(x => {\n return this.columnToEntityColumn(x);\n })\n\n entityText = entityText.replace(/{{entityColumns}}/g, entityColsText.join(\"\\n\"));\n return entityText;\n }\n\n \n\n /**\n * EntityColumn to entity column Text \n * @param column \n * @returns \n */\n columnToEntityColumn(column: EntityColumn) {\n if (column.name == 'id') return '';\n if (column.name == 'domain_id') return '';\n if (column.name == 'created_at') return '';\n if (column.name == 'updated_at') return '';\n if (column.name == 'creator_id') return '';\n if (column.name == 'updater_id') return '';\n\n\n let colType: string = column.colType;\n if (column.colType == 'double') colType = 'double precision';\n if (column.colType == 'long') colType = 'bigint';\n if (column.colType == 'string') colType = 'character varying';\n if (column.colType == 'datetime') colType = 'timestamp without time zone';\n\n let colSize: string = '';\n if (column.colType == 'string') colSize = column.colSize;\n\n let fieldType: string = this.getFieldType(column);\n let colTxtType: string = this.getColTxtType(column);\n\n let colName = camelCase(column.name);\n\n let columnAnn = `@Column({name:'${column.name}', type: '${colType}', nullable: ${column.nullable} ${colSize.length == 0 ? '' : ',length:' + colSize} })`;\n let fieldAnn = `@Field(${fieldType.length == 0 ? '' : 'type =>' + fieldType + ','} { nullable: ${column.nullable} })`;\n let columnTxt = `${colName}${column.nullable ? '?' : ''}: ${colTxtType}`\n\n return \" \" + columnAnn + \"\\n \" + fieldAnn + \"\\n \" + columnTxt + \"\\n\";\n }\n\n getFieldType(column: EntityColumn) {\n let fieldType: string = '';\n\n if (column.colType == 'double') fieldType = 'Float';\n if (column.colType == 'float') fieldType = 'Float';\n if (column.colType == 'long') fieldType = 'Int';\n if (column.colType == 'integer') fieldType = 'Int';\n\n return fieldType;\n }\n\n getColTxtType(column: EntityColumn) {\n let colTxtType: string = column.colType;\n if (column.colType == 'decimal') colTxtType = 'number';\n if (column.colType == 'double') colTxtType = 'number';\n if (column.colType == 'float') colTxtType = 'number';\n if (column.colType == 'integer') colTxtType = 'number';\n if (column.colType == 'long') colTxtType = 'number';\n if (column.colType == 'datetime') colTxtType = 'Date';\n if (column.colType == 'date') colTxtType = 'Date';\n if (column.colType == 'text') colTxtType = 'string';\n return colTxtType;\n }\n\n /**\n * 파일 생성 \n * @param filePath \n * @param fileText \n * @param nameMap \n */\n async writeFile(filePath: string, fileText: string, nameMap: any) {\n await fs.writeFileSync(filePath, this.replaceNamesMap(fileText, nameMap), 'utf8');\n }\n\n /**\n * 문자열 치환 \n * @param text \n * @param nameMap \n * @returns \n */\n replaceNamesMap(text: string, nameMap: any) {\n return text.replace(/{{pascalCase name}}/g, nameMap.pascalCaseName)\n .replace(/{{camelCase name}}/g, nameMap.camelCaseName)\n .replace(/{{snakeCase name}}/g, nameMap.snakeCaseName)\n .replace(/{{pluralPascalCase name}}/g, nameMap.pluralPascalCaseName)\n .replace(/{{pluralCamelCase name}}/g, nameMap.pluralCamelCaseName)\n .replace(/{{tableName}}/g, nameMap.tableName)\n .replace(/{{name}}/g, nameMap.name);\n }\n\n /**\n * 서비스 경로 만들기 \n * @param appRootPath \n * @param moduleName \n * @param serviceName \n */\n async createServicePath(appRootPath: string, moduleName: string, serviceName: string) {\n let path: string = appRootPath + '/' + 'packages';\n await this.createDir(path);\n\n path = path + '/' + moduleName;\n await this.createDir(path);\n\n path = path + '/server';\n await this.createDir(path);\n\n path = path + '/service';\n await this.createDir(path);\n\n path = path + '/' + serviceName;\n await this.createDir(path);\n }\n\n /**\n * 프로젝트 Root Path 구하기 \n * @returns String\n */\n getProjectRootPath() {\n let appPath: string = process.env.PWD;\n let splitPath: string[] = appPath.split('/');\n let pathArr: string[] = [];\n for (let i = 0; i < splitPath.length; i++) {\n if (splitPath[i] == 'packages') {\n break;\n }\n\n pathArr.push(splitPath[i]);\n }\n\n return pathArr.join('/');\n }\n\n /**\n * 디렉토리 생성 \n * @param path \n */\n async createDir(path: string) {\n if (await this.existsPath(path) == false) fs.mkdirSync(path);\n }\n\n /**\n * Path 존재 여부 \n * @param path \n * @returns \n */\n async existsPath(path: string) {\n return await fs.existsSync(path);\n }\n}\n\n/* all service index text index.ts */\nconst allIndex = `\n/* EXPORT ENTITY TYPES */\n\n/* IMPORT ENTITIES AND RESOLVERS */\n\nexport const entities = [ \n /* ENTITIES */\n] \n\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ] \n}\n\nexport const subscribers = [\n /* SUBSCRIBERS */\n]\n`\n\n/* service index text index.ts */\nconst serviceIndex = `\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}Query } from './{{name}}-query'\nimport { {{pascalCase name}}Mutation } from './{{name}}-mutation'\n\nexport const entities = [{{pascalCase name}}]\nexport const resolvers = [{{pascalCase name}}Query, {{pascalCase name}}Mutation]\n`\n\n/* service index text index.ts */\nconst serviceHistoryIndex = `\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}Query } from './{{name}}-query'\nimport { {{pascalCase name}}HistoryQuery } from './{{name}}-history-query'\nimport { {{pascalCase name}}Mutation } from './{{name}}-mutation'\nimport { {{pascalCase name}}History } from './{{name}}-history'\nimport { {{pascalCase name}}HistoryEntitySubscriber } from './event-subscriber'\n\nexport const entities = [{{pascalCase name}}, {{pascalCase name}}History]\nexport const resolvers = [{{pascalCase name}}Query, {{pascalCase name}}HistoryQuery, {{pascalCase name}}Mutation]\nexport const subscribers = [{{pascalCase name}}HistoryEntitySubscriber]\n\n`\n\n/* service Query text {{name}}-query.ts */\nconst serviceQuery = `\nimport { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, ListParam, convertListParams, getRepository, getQueryBuilderFromListParams } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}List } from './{{name}}-type'\n\n@Resolver({{pascalCase name}})\nexport class {{pascalCase name}}Query {\n @Query(returns => {{pascalCase name}}, { description: 'To fetch a {{pascalCase name}}' })\n async {{camelCase name}}(@Arg('id') id: string, @Ctx() context: any): Promise<{{pascalCase name}}> {\n const { domain } = context.state\n return await getRepository({{pascalCase name}}).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => {{pascalCase name}}List, { description: 'To fetch multiple {{pluralPascalCase name}}' })\n async {{pluralCamelCase name}}(@Args() params: ListParam, @Ctx() context: any): Promise<{{pascalCase name}}List> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository({{pascalCase name}})\n })\n\n const convertedParams = convertListParams(params, domain.id)\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() {{camelCase name}}: {{pascalCase name}}): Promise<Domain> {\n return await getRepository(Domain).findOneBy({id:{{camelCase name}}.domainId})\n }\n\n @FieldResolver(type => User)\n async updater(@Root() {{camelCase name}}: {{pascalCase name}}): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}.updaterId})\n }\n\n @FieldResolver(type => User)\n async creator(@Root() {{camelCase name}}: {{pascalCase name}}): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}.creatorId})\n }\n}\n`\n/* service Query text {{name}}-query.ts */\nconst serviceHistoryQuery = `\nimport { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { Domain, ListParam, convertListParams, getRepository, getQueryBuilderFromListParams } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { {{pascalCase name}}History } from './{{name}}-history'\nimport { {{pascalCase name}}HistoryList } from './{{name}}-history-type'\n\n@Resolver({{pascalCase name}}History)\nexport class {{pascalCase name}}HistoryQuery {\n @Query(returns => {{pascalCase name}}History, { description: 'To fetch a {{pascalCase name}}History' })\n async {{camelCase name}}History(@Arg('id') id: string, @Ctx() context: any): Promise<{{pascalCase name}}History> {\n const { domain } = context.state\n return await getRepository({{pascalCase name}}History).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => {{pascalCase name}}HistoryList, { description: 'To fetch multiple {{pluralPascalCase name}}History' })\n async {{camelCase name}}Histories(@Args() params: ListParam, @Ctx() context: any): Promise<{{pascalCase name}}HistoryList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository({{pascalCase name}}History)\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() {{camelCase name}}History: {{pascalCase name}}History): Promise<Domain> {\n return await getRepository(Domain).findOneBy({id:{{camelCase name}}History.domainId})\n }\n\n @FieldResolver(type => User)\n async updater(@Root() {{camelCase name}}History: {{pascalCase name}}History): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}History.updaterId})\n }\n\n @FieldResolver(type => User)\n async creator(@Root() {{camelCase name}}History: {{pascalCase name}}History): Promise<User> {\n return await getRepository(User).findOneBy({id:{{camelCase name}}History.creatorId})\n }\n}\n`\n/* service mutation text {{name}}-mutation.ts */\nconst serviceMutation = `\nimport { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { {{pascalCase name}} } from './{{name}}'\nimport { New{{pascalCase name}}, {{pascalCase name}}Patch } from './{{name}}-type'\nimport { getRepository } from '@things-factory/shell'\n\n@Resolver({{pascalCase name}})\nexport class {{pascalCase name}}Mutation {\n @Directive('@transaction')\n @Mutation(returns => {{pascalCase name}}, { description: 'To create new {{pascalCase name}}' })\n async create{{pascalCase name}}(@Arg('{{camelCase name}}') {{camelCase name}}: New{{pascalCase name}}, @Ctx() context: any): Promise<{{pascalCase name}}> {\n const { domain, user, tx } = context.state\n\n return await tx.getRepository({{pascalCase name}}).save({\n ...{{camelCase name}},\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => {{pascalCase name}}, { description: 'To modify {{pascalCase name}} information' })\n async update{{pascalCase name}}(\n @Arg('id') id: string,\n @Arg('patch') patch: {{pascalCase name}}Patch,\n @Ctx() context: any\n ): Promise<{{pascalCase name}}> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository({{pascalCase name}})\n const {{camelCase name}} = await repository.findOne(\n {\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'updater', 'creator']\n }\n )\n\n return await repository.save({\n ...{{camelCase name}},\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => [{{pascalCase name}}], { description: \"To modify multiple {{pluralPascalCase name}}' information\" })\n async updateMultiple{{pascalCase name}}(\n @Arg('patches', type => [{{pascalCase name}}Patch]) patches: {{pascalCase name}}Patch[],\n @Ctx() context: any\n ): Promise<{{pascalCase name}}[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const {{camelCase name}}Repo = tx.getRepository({{pascalCase name}})\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await {{camelCase name}}Repo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updRecord = _updateRecords[i]\n const {{camelCase name}} = await {{camelCase name}}Repo.findOne({\n where: { domain: { id: domain.id }, id:updRecord.id },\n relations: ['domain', 'updater', 'creator']\n })\n \n const result = await {{camelCase name}}Repo.save({\n ...{{camelCase name}},\n ...updRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete {{pascalCase name}}' })\n async delete{{pascalCase name}}(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {\n const { domain, tx, user } = context.state\n await tx.getRepository({{pascalCase name}}).remove({ domain, id, updater:user })\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple {{camelCase name}}s' })\n async delete{{pluralPascalCase name}}(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: any\n ): Promise<boolean> {\n const { domain, tx, user } = context.state\n\n let delEntitis = ids.map(id=>{\n return {domain,id,updater:user}\n })\n\n await tx.getRepository({{pascalCase name}}).remove(delEntitis)\n\n return true\n }\n}\n`\n/* service type text {{name}}-type.ts */\nconst sereviceType = `\nimport { ObjectType, Field, InputType, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { {{pascalCase name}} } from './{{name}}'\n\n@InputType()\nexport class New{{pascalCase name}} {\n{{newTypeColumns}}\n}\n\n@InputType()\nexport class {{pascalCase name}}Patch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n{{patchTypeColumns}}\n\n @Field()\n cuFlag: string\n}\n\n@ObjectType()\nexport class {{pascalCase name}}List {\n @Field(type => [{{pascalCase name}}])\n items: {{pascalCase name}}[]\n\n @Field(type => Int)\n total: number\n}\n`\n/* service type text {{name}}-type.ts */\nconst sereviceHistoryType = `\nimport { ObjectType, Field, InputType, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { {{pascalCase name}}History } from './{{name}}-history'\n\n@ObjectType()\nexport class {{pascalCase name}}HistoryList {\n @Field(type => [{{pascalCase name}}History])\n items: {{pascalCase name}}History[]\n\n @Field(type => Int)\n total: number\n}\n`\n\n/* service entity {{name}}.ts */\nconst serviceEntity = `\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n@Entity('{{tableName}}')\n{{indexAnn}}\n@ObjectType({ description: 'Entity for {{pascalCase name}}' })\nexport class {{pascalCase name}} {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain, {\n createForeignKeyConstraints: false\n })\n @Field({ nullable: false })\n domain: Domain\n\n @RelationId(({{camelCase name}}: {{pascalCase name}}) => {{camelCase name}}.domain)\n domainId: string\n\n{{entityColumns}}\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field({ nullable: true })\n creator?: User\n\n @RelationId(({{camelCase name}}: {{pascalCase name}}) => {{camelCase name}}.creator)\n creatorId?: string\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field({ nullable: true })\n updater?: User\n\n @RelationId(({{camelCase name}}: {{pascalCase name}}) => {{camelCase name}}.updater)\n updaterId?: string\n}\n`\n\n/* service entity {{name}}-history.ts */\nconst serviceEntityHistCopy = `\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\n\nimport { ObjectType, Field, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { config } from '@things-factory/env'\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\nimport { {{pascalCase name}} } from './{{name}}'\n\n@Entity('{{tableName}}_histories')\n@Index('ix_{{snakeCase name}}_histories_0', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId,{{camelCase name}}History.dataRevisionNo], { unique: true })\n@Index('ix_{{snakeCase name}}_histories_1', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_2', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_3', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId, {{camelCase name}}History.dataRevisionNo], { unique: true })\n@ObjectType({ description: 'Entity for {{pascalCase name}}History' })\nexport class {{pascalCase name}}History implements HistoryEntityInterface<{{pascalCase name}}>{\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain, {\n createForeignKeyConstraints: false\n })\n @Field({ nullable: false })\n domain: Domain\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.domain)\n domainId: string\n\n @HistoryOriginalIdColumn({type: 'character varying', nullable: false ,length:40})\n @Field({ nullable: false })\n public originalId!: string\n\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : 'smallint',\n enum: HistoryActionType\n })\n @Field({ nullable: false })\n public dataRevisionAction!: HistoryActionType\n\n @Column({ default: 1, nullable: false })\n @Field({ nullable: false })\n dataRevisionNo?: number = 1\n\n{{entityColumns}}\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field({ nullable: true })\n creator?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.creator)\n creatorId?: string\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field({ nullable: true })\n updater?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.updater)\n updaterId?: string\n}\n`\n\n/* service entity {{name}}-history.ts */\nconst serviceEntityHistJson = `\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\n\nimport { ObjectType, Field, Int, ID, Float, registerEnumType } from 'type-graphql'\n\nimport { config } from '@things-factory/env'\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\nimport { {{pascalCase name}} } from './{{name}}'\n\n@Entity('{{tableName}}_histories')\n@Index('ix_{{snakeCase name}}_histories_0', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId,{{camelCase name}}History.dataRevisionNo], { unique: true })\n@Index('ix_{{snakeCase name}}_histories_1', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_2', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId ], { unique: false })\n@Index('ix_{{snakeCase name}}_histories_3', ({{camelCase name}}History: {{pascalCase name}}History) => [{{camelCase name}}History.domain, {{camelCase name}}History.originalId, {{camelCase name}}History.dataRevisionNo], { unique: true })\n@ObjectType({ description: 'Entity for {{pascalCase name}}History' })\nexport class {{pascalCase name}}History implements HistoryEntityInterface<{{pascalCase name}}>{\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain, {\n createForeignKeyConstraints: false\n })\n @Field({ nullable: false })\n domain: Domain\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.domain)\n domainId: string\n\n @HistoryOriginalIdColumn({type: 'character varying', nullable: false ,length:40})\n @Field({ nullable: false })\n public originalId!: string\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : 'smallint',\n enum: HistoryActionType\n })\n @Field({ nullable: false })\n public dataRevisionAction!: HistoryActionType\n\n\n @Column({ default: 1, nullable: false })\n @Field({ nullable: false })\n dataRevisionNo?: number = 1\n\n @Column('simple-json', { nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n historyJson?: any\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field({ nullable: true })\n creator?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.creator)\n creatorId?: string\n\n @ManyToOne(type => User, {\n createForeignKeyConstraints: false,\n nullable: true\n })\n @Field({ nullable: true })\n updater?: User\n\n @RelationId(({{camelCase name}}History: {{pascalCase name}}History) => {{camelCase name}}History.updater)\n updaterId?: string\n}\n`\n\n/* service entity subscriber event-subscriber.ts */\nconst serviceEntitySubscriber = `\nimport { EventSubscriber } from 'typeorm'\nimport { HistoryEntitySubscriber } from '@operato/typeorm-history'\n\nimport { {{pascalCase name}} } from './{{name}}'\nimport { {{pascalCase name}}History } from './{{name}}-history'\nimport { getRepository } from '@things-factory/shell'\n\n@EventSubscriber()\nexport class {{pascalCase name}}HistoryEntitySubscriber extends HistoryEntitySubscriber<{{pascalCase name}},{{pascalCase name}}History> {\n public get entity() {\n return {{pascalCase name}}\n }\n\n public get historyEntity() {\n return {{pascalCase name}}History\n }\n\n {{entityToJson}}\n\n async beforeRemoveHistory(history:{{pascalCase name}}History,entity:{{pascalCase name}}){\n let repo = getRepository({{pascalCase name}}History);\n const revNo = await repo.createQueryBuilder()\n .select('max(data_revision_no)', 'rev_no')\n .where('domain_id = :domainId', { domainId: entity.domain.id })\n .andWhere('original_id = :originalId', { originalId: entity.id })\n .getRawOne()\n \n history.dataRevisionNo = revNo ? revNo.rev_no + 1 : 1;\n return history;\n }\n}\n`\n"]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvers = void 0;
4
+ const create_menu_1 = require("./create-menu");
5
+ const create_service_1 = require("./create-service");
6
+ exports.resolvers = [create_menu_1.OperatoToolCreateMenu, create_service_1.OperatoToolCreateService];
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/tool-entity/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqD;AACrD,qDAA2D;AAE9C,QAAA,SAAS,GAAG,CAAC,mCAAqB,EAAE,yCAAwB,CAAC,CAAA","sourcesContent":["import { OperatoToolCreateMenu } from './create-menu'\nimport { OperatoToolCreateService } from './create-service'\n\nexport const resolvers = [OperatoToolCreateMenu, OperatoToolCreateService]\n"]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvers = void 0;
4
+ const tool_resolver_1 = require("./tool-resolver");
5
+ exports.resolvers = [tool_resolver_1.OperatoToolResolver];
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/tool-secret/index.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAExC,QAAA,SAAS,GAAG,CAAC,mCAAmB,CAAC,CAAA","sourcesContent":["import { OperatoToolResolver } from './tool-resolver'\n\nexport const resolvers = [OperatoToolResolver]\n"]}