@things-factory/operato-tools 6.2.19 → 6.2.22

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 (31) hide show
  1. package/package.json +3 -3
  2. package/dist-server/constants/error-code.js +0 -1
  3. package/dist-server/constants/error-code.js.map +0 -1
  4. package/dist-server/controllers/index.js +0 -1
  5. package/dist-server/controllers/index.js.map +0 -1
  6. package/dist-server/errors/index.js +0 -5
  7. package/dist-server/errors/index.js.map +0 -1
  8. package/dist-server/errors/license-error.js +0 -1
  9. package/dist-server/errors/license-error.js.map +0 -1
  10. package/dist-server/index.js +0 -8
  11. package/dist-server/index.js.map +0 -1
  12. package/dist-server/middlewares/index.js +0 -19
  13. package/dist-server/middlewares/index.js.map +0 -1
  14. package/dist-server/migrations/index.js +0 -12
  15. package/dist-server/migrations/index.js.map +0 -1
  16. package/dist-server/routes.js +0 -1
  17. package/dist-server/routes.js.map +0 -1
  18. package/dist-server/service/index.js +0 -18
  19. package/dist-server/service/index.js.map +0 -1
  20. package/dist-server/service/tool-entity/create-menu.js +0 -1
  21. package/dist-server/service/tool-entity/create-menu.js.map +0 -1
  22. package/dist-server/service/tool-entity/create-service.js +0 -1
  23. package/dist-server/service/tool-entity/create-service.js.map +0 -1
  24. package/dist-server/service/tool-entity/index.js +0 -7
  25. package/dist-server/service/tool-entity/index.js.map +0 -1
  26. package/dist-server/service/tool-secret/index.js +0 -6
  27. package/dist-server/service/tool-secret/index.js.map +0 -1
  28. package/dist-server/service/tool-secret/tool-permission.js +0 -1
  29. package/dist-server/service/tool-secret/tool-permission.js.map +0 -1
  30. package/dist-server/service/tool-secret/tool-resolver.js +0 -1
  31. package/dist-server/service/tool-secret/tool-resolver.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/operato-tools",
3
- "version": "6.2.19",
3
+ "version": "6.2.22",
4
4
  "main": "server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -29,12 +29,12 @@
29
29
  "docker:run": "docker run -it -p 4000:3000 hatiolab/operato-tools:latest"
30
30
  },
31
31
  "dependencies": {
32
- "@things-factory/meta-ui": "^6.2.19",
32
+ "@things-factory/meta-ui": "^6.2.22",
33
33
  "@things-factory/operato-license-checker": "^3.1.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@things-factory/builder": "^6.2.2",
37
37
  "@things-factory/meta-ui": "^6.1.127"
38
38
  },
39
- "gitHead": "5b5f3c02adca0ecb6344310bfeaf27b04c5dc657"
39
+ "gitHead": "ed224085e09ba792320f9a44ca7586adf2067423"
40
40
  }
@@ -1 +0,0 @@
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);
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -1,5 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/errors/index.ts"],"names":[],"mappings":";;;AAAA,0DAA+B","sourcesContent":["export * from './license-error'\n"]}
@@ -1 +0,0 @@
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;
@@ -1 +0,0 @@
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"]}
@@ -1,8 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,19 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,12 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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)=>{});
@@ -1 +0,0 @@
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"]}
@@ -1,18 +0,0 @@
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
@@ -1 +0,0 @@
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}"]}
@@ -1 +0,0 @@
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';
@@ -1 +0,0 @@
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`"]}
@@ -1 +0,0 @@
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);
@@ -1 +0,0 @@
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"]}
@@ -1,7 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,6 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- 'use strict';const a0_0x25e0b0=a0_0x3380;(function(_0x1e87b4,_0x41482e){const _0x4512c0=a0_0x3380,_0x4b08ea=_0x1e87b4();while(!![]){try{const _0x50cbc9=-parseInt(_0x4512c0(0x1c7))/0x1+parseInt(_0x4512c0(0x1d3))/0x2*(parseInt(_0x4512c0(0x1d8))/0x3)+-parseInt(_0x4512c0(0x1cd))/0x4+-parseInt(_0x4512c0(0x1cc))/0x5*(parseInt(_0x4512c0(0x1e4))/0x6)+-parseInt(_0x4512c0(0x1d6))/0x7+parseInt(_0x4512c0(0x1d7))/0x8*(parseInt(_0x4512c0(0x1c8))/0x9)+-parseInt(_0x4512c0(0x1d0))/0xa*(-parseInt(_0x4512c0(0x1c3))/0xb);if(_0x50cbc9===_0x41482e)break;else _0x4b08ea['push'](_0x4b08ea['shift']());}catch(_0x326b19){_0x4b08ea['push'](_0x4b08ea['shift']());}}}(a0_0x39cd,0x85442));Object['defineProperty'](exports,a0_0x25e0b0(0x1d4),{'value':!0x0}),exports[a0_0x25e0b0(0x1d1)]=exports[a0_0x25e0b0(0x1dc)]=void 0x0;const operato_license_checker_1=require('@things-factory/operato-license-checker'),shell_1=require(a0_0x25e0b0(0x1e1)),menu_base_1=require('@things-factory/menu-base'),license_error_1=require(a0_0x25e0b0(0x1df));async function checkStudioPermission(){const _0x5bcb80=a0_0x25e0b0;let _0x4a9c1e=((0x0,operato_license_checker_1[_0x5bcb80(0x1cf)])(_0x5bcb80(0x1dd))||',')[_0x5bcb80(0x1de)](',')[_0x5bcb80(0x1c0)](_0x3a9b57=>_0x3a9b57['trim']()),_0x7a64ab=!0x1;return _0x4a9c1e[_0x5bcb80(0x1d2)](_0x265f31=>{const _0x210e82=_0x5bcb80;_0x265f31[_0x210e82(0x1e7)](_0x210e82(0x1c2))&&(_0x7a64ab=!0x0);}),_0x7a64ab;}function a0_0x3380(_0x38287d,_0x37918e){const _0x39cd0c=a0_0x39cd();return a0_0x3380=function(_0x3380fe,_0x46337e){_0x3380fe=_0x3380fe-0x1c0;let _0x241fe3=_0x39cd0c[_0x3380fe];return _0x241fe3;},a0_0x3380(_0x38287d,_0x37918e);}async function checkStudioTemplateIsOverLimit(_0x5ab1c0,_0x145b9f){const _0x56cb62=a0_0x25e0b0;if(0x0==await checkStudioPermission())throw new license_error_1[(_0x56cb62(0x1d9))]({'errorCode':_0x145b9f['t'](license_error_1[_0x56cb62(0x1d9)][_0x56cb62(0x1d5)][_0x56cb62(0x1db)])});var _0x4afa62=0x0;if(_0x4afa62=_0x5ab1c0&&''!=_0x5ab1c0?await(0x0,shell_1[_0x56cb62(0x1c6)])(menu_base_1[_0x56cb62(0x1c1)])[_0x56cb62(0x1e5)]['createQueryBuilder']()[_0x56cb62(0x1ce)](_0x56cb62(0x1c4))[_0x56cb62(0x1e0)](menu_base_1['Menu'],'menu')[_0x56cb62(0x1c9)](_0x56cb62(0x1e2),{'id':_0x5ab1c0})[_0x56cb62(0x1c5)]('(template\x20is\x20not\x20null\x20and\x20template\x20!=\x20\x27\x27\x20)')[_0x56cb62(0x1e6)]()+0x1:await(0x0,shell_1[_0x56cb62(0x1c6)])(menu_base_1[_0x56cb62(0x1c1)])[_0x56cb62(0x1e5)][_0x56cb62(0x1cb)]()[_0x56cb62(0x1ce)](_0x56cb62(0x1c4))[_0x56cb62(0x1e0)](menu_base_1[_0x56cb62(0x1c1)],_0x56cb62(0x1c4))[_0x56cb62(0x1c9)](_0x56cb62(0x1da))[_0x56cb62(0x1e6)]()+0x1,!(0x0,operato_license_checker_1[_0x56cb62(0x1ca)])(_0x4afa62))throw new license_error_1[(_0x56cb62(0x1d9))]({'errorCode':_0x145b9f['t'](license_error_1[_0x56cb62(0x1d9)][_0x56cb62(0x1d5)][_0x56cb62(0x1e3)])});return!0x0;}function a0_0x39cd(){const _0x2f6990=['770238ypVJKH','8NofBju','490140chplAb','LicenseError','(template\x20is\x20not\x20null\x20and\x20template\x20!=\x20\x27\x27\x20)','INVALID_LICENSE','checkStudioPermission','Permissions\x20For\x20Tailor\x20Tool','split','../../errors/license-error','from','@things-factory/shell','id\x20!=\x20:id','OVER_LIMIT','789282tHMObk','manager','getCount','includes','map','Menu','Studio','11WbQBNq','menu','andWhere','getRepository','133887xAQbXc','45747WkHfEg','where','checkTarget','createQueryBuilder','25rKwIwl','1806372ghHXhb','select','getPermission','14038840OSMgdu','checkStudioTemplateIsOverLimit','forEach','6rqqEOa','__esModule','ERROR_CODES'];a0_0x39cd=function(){return _0x2f6990;};return a0_0x39cd();}exports[a0_0x25e0b0(0x1dc)]=checkStudioPermission,exports['checkStudioTemplateIsOverLimit']=checkStudioTemplateIsOverLimit;
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-permission.js","sourceRoot":"","sources":["../../../server/service/tool-secret/tool-permission.ts"],"names":[],"mappings":";;;AAAA,qFAAiG;AACjG,iDAAqD;AACrD,yDAAgD;AAChD,8DAAyD;AAElD,KAAK,UAAU,qBAAqB;IACvC,IAAI,GAAG,GAAG,CAAC,IAAA,uCAAa,EAAC,6BAA6B,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9F,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACf,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACzB,MAAM,GAAG,IAAI,CAAC;SACjB;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAXD,sDAWC;AAEM,KAAK,UAAU,8BAA8B,CAAC,EAAU,EAAE,OAAY;IACzE,IAAI,gBAAgB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAErD,IAAI,gBAAgB,IAAI,KAAK,EAAE;QAC3B,MAAM,IAAI,4BAAY,CAAC;YACnB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,eAAe,CAAC;SACjE,CAAC,CAAA;KACL;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAChB,KAAK,GAAG,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE;aAC1D,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,gBAAI,EAAE,MAAM,CAAC;aAClB,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;aAC9B,QAAQ,CAAC,4CAA4C,CAAC;aACtD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;KACxB;SAAM;QACH,KAAK,GAAG,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE;aAC1D,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,gBAAI,EAAE,MAAM,CAAC;aAClB,KAAK,CAAC,4CAA4C,CAAC;aACnD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,CAAC,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;QACrB,MAAM,IAAI,4BAAY,CAAC;YACnB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,UAAU,CAAC;SAC5D,CAAC,CAAA;KACL;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAhCD,wEAgCC","sourcesContent":["import { getPermission, getValidity, checkTarget } from '@things-factory/operato-license-checker'\nimport { getRepository } from '@things-factory/shell'\nimport { Menu } from '@things-factory/menu-base'\nimport { LicenseError } from '../../errors/license-error'\n\nexport async function checkStudioPermission(): Promise<Boolean> {\n let lic = (getPermission('Permissions For Tailor Tool') || ',').split(',').map(p => p.trim());\n let result = false;\n\n lic.forEach(item => {\n if (item.includes('Studio')) {\n result = true;\n }\n });\n\n return result;\n}\n\nexport async function checkStudioTemplateIsOverLimit(id: string, context: any): Promise<Boolean> {\n let studioPermission = await checkStudioPermission();\n\n if (studioPermission == false) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.INVALID_LICENSE)\n })\n }\n\n var count = 0;\n\n if (id && id != '') {\n count = (await getRepository(Menu).manager.createQueryBuilder()\n .select('menu')\n .from(Menu, 'menu')\n .where('id != :id', { id: id })\n .andWhere(\"(template is not null and template != '' )\")\n .getCount()) + 1;\n } else {\n count = (await getRepository(Menu).manager.createQueryBuilder()\n .select('menu')\n .from(Menu, 'menu')\n .where(\"(template is not null and template != '' )\")\n .getCount()) + 1;\n }\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n }\n return true;\n}"]}
@@ -1 +0,0 @@
1
- 'use strict';const a0_0xa8bc6e=a0_0x3d64;(function(_0x252a62,_0x566443){const _0xf61770=a0_0x3d64,_0x4ab221=_0x252a62();while(!![]){try{const _0xedece8=parseInt(_0xf61770(0x7e))/0x1*(-parseInt(_0xf61770(0x86))/0x2)+-parseInt(_0xf61770(0x93))/0x3+-parseInt(_0xf61770(0x7d))/0x4*(-parseInt(_0xf61770(0x78))/0x5)+parseInt(_0xf61770(0x8f))/0x6+parseInt(_0xf61770(0x7f))/0x7+-parseInt(_0xf61770(0x81))/0x8+parseInt(_0xf61770(0x79))/0x9*(-parseInt(_0xf61770(0x80))/0xa);if(_0xedece8===_0x566443)break;else _0x4ab221['push'](_0x4ab221['shift']());}catch(_0x4887f4){_0x4ab221['push'](_0x4ab221['shift']());}}}(a0_0x8a23,0x533d8));Object[a0_0xa8bc6e(0x94)](exports,a0_0xa8bc6e(0x89),{'value':!0x0}),exports[a0_0xa8bc6e(0x84)]=void 0x0;const tslib_1=require(a0_0xa8bc6e(0x8c)),type_graphql_1=require('type-graphql'),tool_permission_1=require(a0_0xa8bc6e(0x77));function a0_0x8a23(){const _0x29c6e1=['143982cBweLN','4605433ubTSrF','30hELIDv','73504KCcgPW','__metadata','Operato\x20Tool\x20Studio\x20Limit\x20check','OperatoToolResolver','design:returntype','4Ialdqo','prototype','checkStudioTemplateIsOverLimit','__esModule','studioPermission','Operato\x20Tool\x20Studio\x20Usage\x20Permissions','tslib','design:type','__param','3901368mvSjWR','Query','Arg','design:paramtypes','431025RDdCqC','defineProperty','./tool-permission','1818195FWBfuy','2670021KQyiOL','__decorate','studioTemplateIsOverLimit','Resolver','4mJPPPM'];a0_0x8a23=function(){return _0x29c6e1;};return a0_0x8a23();}function a0_0x3d64(_0x21531c,_0x1b70ff){const _0x8a2318=a0_0x8a23();return a0_0x3d64=function(_0x3d64e6,_0x370c9d){_0x3d64e6=_0x3d64e6-0x77;let _0x18db90=_0x8a2318[_0x3d64e6];return _0x18db90;},a0_0x3d64(_0x21531c,_0x1b70ff);}let OperatoToolResolver=class{async[a0_0xa8bc6e(0x8a)](_0x50d665){return(0x0,tool_permission_1['checkStudioPermission'])();}async[a0_0xa8bc6e(0x7b)](_0x2a3425,_0x31218e){const _0x3a3612=a0_0xa8bc6e;return(0x0,tool_permission_1[_0x3a3612(0x88)])(_0x2a3425,_0x31218e);}};tslib_1[a0_0xa8bc6e(0x7a)]([(0x0,type_graphql_1['Query'])(_0x3c9542=>Boolean,{'description':a0_0xa8bc6e(0x8b)}),tslib_1[a0_0xa8bc6e(0x8e)](0x0,(0x0,type_graphql_1['Ctx'])()),tslib_1[a0_0xa8bc6e(0x82)](a0_0xa8bc6e(0x8d),Function),tslib_1[a0_0xa8bc6e(0x82)](a0_0xa8bc6e(0x92),[Object]),tslib_1[a0_0xa8bc6e(0x82)](a0_0xa8bc6e(0x85),Promise)],OperatoToolResolver[a0_0xa8bc6e(0x87)],a0_0xa8bc6e(0x8a),null),tslib_1['__decorate']([(0x0,type_graphql_1[a0_0xa8bc6e(0x90)])(_0x4fd597=>Boolean,{'description':a0_0xa8bc6e(0x83)}),tslib_1['__param'](0x0,(0x0,type_graphql_1[a0_0xa8bc6e(0x91)])('id')),tslib_1[a0_0xa8bc6e(0x8e)](0x1,(0x0,type_graphql_1['Ctx'])()),tslib_1['__metadata']('design:type',Function),tslib_1['__metadata'](a0_0xa8bc6e(0x92),[String,Object]),tslib_1[a0_0xa8bc6e(0x82)](a0_0xa8bc6e(0x85),Promise)],OperatoToolResolver['prototype'],a0_0xa8bc6e(0x7b),null),OperatoToolResolver=tslib_1[a0_0xa8bc6e(0x7a)]([(0x0,type_graphql_1[a0_0xa8bc6e(0x7c)])()],OperatoToolResolver),exports[a0_0xa8bc6e(0x84)]=OperatoToolResolver;
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-resolver.js","sourceRoot":"","sources":["../../../server/service/tool-secret/tool-resolver.ts"],"names":[],"mappings":";;;;AAAA,+CAAwD;AAExD,uDAAyF;AAGlF,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAExB,AAAN,KAAK,CAAC,gBAAgB,CAAQ,OAAY;QACxC,OAAO,IAAA,uCAAqB,GAAE,CAAC;IACjC,CAAC;IAGK,AAAN,KAAK,CAAC,yBAAyB,CAAY,EAAU,EAAS,OAAY;QACxE,OAAO,IAAA,gDAA8B,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AARO;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IAC5D,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;2DAE5B;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;IAC7C,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;oEAE5D;AATU,mBAAmB;IAD/B,IAAA,uBAAQ,GAAE;GACE,mBAAmB,CAU/B;AAVY,kDAAmB","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { checkStudioPermission, checkStudioTemplateIsOverLimit } from './tool-permission'\n\n@Resolver()\nexport class OperatoToolResolver {\n @Query(returns => Boolean, { description: 'Operato Tool Studio Usage Permissions' })\n async studioPermission(@Ctx() context: any): Promise<Boolean> {\n return checkStudioPermission();\n }\n\n @Query(returns => Boolean, { description: 'Operato Tool Studio Limit check' })\n async studioTemplateIsOverLimit(@Arg('id') id: string, @Ctx() context: any): Promise<Boolean> {\n return checkStudioTemplateIsOverLimit(id, context);\n }\n}\n"]}