@things-factory/operato-tools 6.0.0-alpha.19 → 6.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/actions/main.js +1 -1
- package/client/pages/generator/button-config-tab-mixin.js +4 -4
- package/client/pages/generator/column-config-tab-mixin.js +4 -4
- package/client/pages/generator/graphql-config-tab-mixin.js +24 -24
- package/client/pages/generator/grid-config-tab-mixin.js +22 -22
- package/client/pages/generator/menu-config-tab-mixin.js +11 -11
- package/client/pages/generator/meta-generator-page.js +11 -11
- package/client/pages/generator/search-config-tab-mixin.js +4 -4
- package/client/pages/main.js +50 -9
- package/client/reducers/main.js +1 -1
- package/client/route.js +1 -1
- package/dist-server/constants/error-code.js +1 -1
- package/dist-server/constants/error-code.js.map +1 -1
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/errors/index.js +2 -15
- package/dist-server/errors/index.js.map +1 -1
- package/dist-server/errors/license-error.js +1 -1
- package/dist-server/errors/license-error.js.map +1 -1
- package/dist-server/index.js +4 -17
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/migrations/index.js.map +1 -1
- package/dist-server/routes.js +1 -1
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/index.js +3 -1
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/tool-entity/create-menu.js +1 -0
- package/dist-server/service/tool-entity/create-menu.js.map +1 -0
- package/dist-server/service/tool-entity/create-service.js +1 -0
- package/dist-server/service/tool-entity/create-service.js.map +1 -0
- package/dist-server/service/tool-entity/index.js +7 -0
- package/dist-server/service/tool-entity/index.js.map +1 -0
- package/dist-server/service/tool-secret/index.js.map +1 -1
- package/dist-server/service/tool-secret/tool-permission.js +1 -0
- package/dist-server/service/tool-secret/tool-permission.js.map +1 -0
- package/dist-server/service/tool-secret/tool-resolver.js +1 -1
- package/dist-server/service/tool-secret/tool-resolver.js.map +1 -1
- package/package.json +3 -3
- package/translations/en.json +1 -0
- package/translations/ko.json +5 -4
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/views/auth-page.html +4 -0
- package/views/public/home.html +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-menu.js","sourceRoot":"","sources":["../../../server/service/tool-entity/create-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Mutation, Directive, Resolver } from 'type-graphql'\nimport { Entity, EntityColumn } from '@things-factory/resource-base'\nimport { Menu } from '@things-factory/menu-base'\nimport { checkStudioTemplateIsOverLimit } from './../tool-secret/tool-permission'\nconst { camelCase, startCase, snakeCase } = 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 = name.toLowerCase();\n\n // 이름 치환 (타이틀 , grapql 관련 서비스 )\n let pageTemplate = modelTemplate.replace(/{{pascalCase name}}/g, startCase(camelCase(serviceName)).replace(/ /g, ''))\n .replace(/{{camelCase name}}/g, camelCase(serviceName))\n .replace(/{{snakeCase name}}/g, snakeCase(serviceName))\n .replace(/{{pluralPascalCase name}}/g, startCase(camelCase(plural(serviceName))).replace(/ /g, ''))\n .replace(/{{pluralCamelCase name}}/g, camelCase(plural(serviceName)))\n .replace(/{{name}}/g, name);\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\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\": 80}`\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 let { entityParams = \"\" } = x.refParams;\n\n if (entityParams == \"\") {\n colTxt = colTxt + `,\"object_opt\":{\"queryName\":\"${x.refUrl}\"}`;\n } else {\n let objectSelectFields = entityParams.split(\",\").map(x => {\n if (x == \"id\") return `{\"name\": \"id\",\"hidden\": true}`;\n else {\n return `{\"name\": \"${x}\"}`;\n }\n })\n colTxt = colTxt + `,\"object_opt\":{\"queryName\":\"${x.refUrl}\", \"select\":[${objectSelectFields.join(\",\")}]}`;\n }\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 },\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\":\"save\"\n },\n {\n \"name\":\"delete\"\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 \"option\": {\n \"mobile_mode\": \"LIST\",\n \"desk_mode\": \"GRID\",\n \"use_row_checker\": true,\n \"pages\": [\n 20,\n 50,\n 100,\n 300\n ],\n \"view_mode\": [\n \"GRID\",\n \"LIST\",\n \"CARD\"\n ],\n \"sorters\": [\n{{SortColumns}}\n ]\n },\n \"row\": {\n \"multiple_select\": true,\n \"click\": \"select-row-toggle\"\n }\n },\n \"search\": [\n{{SearchColumns}}\n ]\n}\n`"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';const a0_0x1425d0=a0_0x55a8;function a0_0x55a8(_0x23493b,_0x40e659){const _0x5babc7=a0_0x5bab();return a0_0x55a8=function(_0x55a8a3,_0x33ca1b){_0x55a8a3=_0x55a8a3-0xa4;let _0x41b11f=_0x5babc7[_0x55a8a3];return _0x41b11f;},a0_0x55a8(_0x23493b,_0x40e659);}(function(_0x4f5404,_0x43c120){const _0x471e19=a0_0x55a8,_0x34151d=_0x4f5404();while(!![]){try{const _0x1d0e2c=parseInt(_0x471e19(0xc4))/0x1*(-parseInt(_0x471e19(0x102))/0x2)+parseInt(_0x471e19(0x10d))/0x3+-parseInt(_0x471e19(0xb7))/0x4*(-parseInt(_0x471e19(0xa8))/0x5)+parseInt(_0x471e19(0xf8))/0x6+-parseInt(_0x471e19(0x10c))/0x7*(parseInt(_0x471e19(0xb8))/0x8)+parseInt(_0x471e19(0x10e))/0x9*(-parseInt(_0x471e19(0xc9))/0xa)+-parseInt(_0x471e19(0xb5))/0xb*(-parseInt(_0x471e19(0xdc))/0xc);if(_0x1d0e2c===_0x43c120)break;else _0x34151d['push'](_0x34151d['shift']());}catch(_0x4b4492){_0x34151d['push'](_0x34151d['shift']());}}}(a0_0x5bab,0x359b2));Object[a0_0x1425d0(0x101)](exports,a0_0x1425d0(0xcd),{'value':!0x0}),exports[a0_0x1425d0(0xad)]=void 0x0;const tslib_1=require(a0_0x1425d0(0xed)),type_graphql_1=require(a0_0x1425d0(0xeb)),shell_1=require('@things-factory/shell'),resource_base_1=require(a0_0x1425d0(0xd1)),{camelCase:camelCase,startCase:startCase,snakeCase:snakeCase}=require(a0_0x1425d0(0xfe)),{plural:plural}=require(a0_0x1425d0(0xe4)),fs=require('fs');function a0_0x5bab(){const _0x1c2911=['map','existsSync','filter','/packages/','106897nYDsuB','utf8','Date','@Index(\x27ix_{{snakeCase\x20name}}_0\x27,\x20({{camelCase\x20name}}:\x20{{pascalCase\x20name}})\x20=>\x20[{{indexColumns}}],\x20{\x20unique:\x20true\x20})','...','2049730dhvqWj','domain_id','name','createServicePath','__esModule','join','__param','design:paramtypes','@things-factory/resource-base','nullable','text','toolCreateService','\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}\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{{table\x20name}}\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)\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{nullable:\x20true})\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{nullable:\x20true})\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','updater_id','/*\x20IMPORT\x20ENTITIES\x20AND\x20RESOLVERS\x20*/\x0aimport\x20{\x20entities\x20as\x20','Entity','findOne','double\x20precision','Resolvers,','372VsQfwI','number','indexOf','__decorate','writeFile','character\x20varying','columnToEntityColumn','-type.ts','pluralize','import\x20{\x20entities\x20as\x20','\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({where:\x20{\x20domain,\x20id\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({where:\x20{\x20domain,\x20id:updRecord.id\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\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20await\x20tx.getRepository({{pascalCase\x20name}}).delete({\x20domain,\x20id\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\x20}\x20=\x20context.state\x0a\x0a\x20\x20\x20\x20await\x20tx.getRepository({{pascalCase\x20name}}).delete({\x0a\x20\x20\x20\x20\x20\x20domain,\x0a\x20\x20\x20\x20\x20\x20id:\x20In(ids)\x0a\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20return\x20true\x0a\x20\x20}\x0a}\x0a','type\x20=>','/server/service/','string','Int','type-graphql','creator','tslib','replace','created_at','replaceNamesMap','@Column({name:\x27','push','getRepository','pascalCaseName','EntityColumn','/packages','updater','1971480jnVjwM','getColTxtType','design:type','createServiceFiles','uniqRank','\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','lodash','Operato\x20Tool\x20Create\x20Service','/service','defineProperty','6ofbAIF','Resolvers\x20}\x20from\x20\x27./','split','createTypeText','/*\x20EXPORT\x20ENTITY\x20TYPES\x20*/\x0aexport\x20*\x20from\x20\x27./','float','/server','\x27,\x20nullable:\x20','Query','length','143381QFgrFx','780222GDqNUC','9YUvKaQ','Entities,\x20resolvers\x20as\x20','-mutation.ts','double','__metadata','PWD','state','Entities,','domain','getFieldType','\x20{\x20nullable:\x20','Float','Arg','.ts','pluralPascalCaseName','createDir','decimal','bigint','prototype','/*\x20ENTITIES\x20*/\x0a\x09...','@Field(','colType','snakeCaseName','integer','updated_at','createEntityText','env','find','546265swzRLg','camelCaseName','design:returntype','colSize','tableName','OperatoToolCreateService','timestamp\x20without\x20time\x20zone','existsPath','writeFileSync','creator_id','long','/*\x20RESOLVER\x20CLASSES\x20*/\x0a\x09\x09...','sort','101585vRuagQ','rank','8cIwGMe','136FnnKBx','toLowerCase','\x0a\x20\x20','packages','export\x20*\x20from\x20\x27./','index.ts','\x20})','datetime'];a0_0x5bab=function(){return _0x1c2911;};return a0_0x5bab();}let OperatoToolCreateService=class{async[a0_0x1425d0(0xd4)](_0x53d9b1,_0x562e2c){const _0x192a20=a0_0x1425d0,{domain:_0x4dad09}=_0x562e2c[_0x192a20(0x114)],_0x5bb009=await(0x0,shell_1[_0x192a20(0xf3)])(resource_base_1[_0x192a20(0xd8)])[_0x192a20(0xd9)]({'where':{'domain':{'id':_0x4dad09['id']},'id':_0x53d9b1}}),_0x35ae7c=await(0x0,shell_1[_0x192a20(0xf3)])(resource_base_1[_0x192a20(0xf5)])[_0x192a20(0xa7)]({'where':{'domain':{'id':_0x4dad09['id']},'entity':{'id':_0x5bb009['id']}}});let {name:_0xa67589='',bundle:_0x4f84bb=''}=_0x5bb009||{};_0xa67589=_0xa67589[_0x192a20(0xb9)]();let _0x3d16af=this['getProjectRootPath']();return await this[_0x192a20(0xcc)](_0x3d16af,_0x4f84bb,_0xa67589),await this['createServiceFiles'](_0x3d16af,_0x4f84bb,_0xa67589,_0x5bb009,_0x35ae7c),!0x0;}async[a0_0x1425d0(0xfb)](_0x40ef10,_0x4cee0c,_0x8cfd9b,_0x57408f,_0x26b821){const _0x1bf299=a0_0x1425d0;let _0x13c8f9={'name':_0x8cfd9b,'pascalCaseName':startCase(camelCase(_0x8cfd9b))[_0x1bf299(0xee)](/ /g,''),'camelCaseName':camelCase(_0x8cfd9b),'snakeCaseName':snakeCase(_0x8cfd9b),'pluralPascalCaseName':startCase(camelCase(plural(_0x8cfd9b)))[_0x1bf299(0xee)](/ /g,''),'pluralCamelCaseName':camelCase(plural(_0x8cfd9b))},_0x4665fd=_0x40ef10+_0x1bf299(0xc3)+_0x4cee0c+_0x1bf299(0xe8);await this[_0x1bf299(0xe0)](_0x4665fd+(_0x8cfd9b+'/index.ts'),serviceIndex,_0x13c8f9),await this[_0x1bf299(0xe0)](_0x4665fd+(_0x8cfd9b+'/'+_0x8cfd9b+'-query.ts'),serviceQuery,_0x13c8f9),await this[_0x1bf299(0xe0)](_0x4665fd+(_0x8cfd9b+'/'+_0x8cfd9b+_0x1bf299(0x110)),serviceMutation,_0x13c8f9);let _0x5a7755=this[_0x1bf299(0xa5)](_0x57408f,_0x26b821);await this[_0x1bf299(0xe0)](_0x4665fd+(_0x8cfd9b+'/'+_0x8cfd9b+_0x1bf299(0x11b)),_0x5a7755,_0x13c8f9);let _0x3af07c=this['createTypeText'](_0x26b821);await this['writeFile'](_0x4665fd+(_0x8cfd9b+'/'+_0x8cfd9b+_0x1bf299(0xe3)),_0x3af07c,_0x13c8f9);let _0xc611ab=_0x4665fd+_0x1bf299(0xbd);0x0==await this[_0x1bf299(0xaf)](_0xc611ab)&&await this[_0x1bf299(0xe0)](_0xc611ab,allIndex,_0x13c8f9);let _0x53af73=await fs['readFileSync'](_0xc611ab,_0x1bf299(0xc5));_0x53af73[_0x1bf299(0xde)](_0x1bf299(0xbc)+_0x13c8f9['name']+'/'+_0x13c8f9[_0x1bf299(0xcb)]+'\x27')<0x0&&(_0x53af73=_0x53af73[_0x1bf299(0xee)](/\/\* EXPORT ENTITY TYPES \*\//,_0x1bf299(0x106)+_0x13c8f9[_0x1bf299(0xcb)]+'/'+_0x13c8f9['name']+'\x27')),_0x53af73[_0x1bf299(0xde)](_0x1bf299(0xe5)+_0x13c8f9[_0x1bf299(0xf4)]+_0x1bf299(0x10f)+_0x13c8f9['pascalCaseName']+_0x1bf299(0x103)+_0x13c8f9['name']+'\x27')<0x0&&(_0x53af73=_0x53af73['replace'](/\/\* IMPORT ENTITIES AND RESOLVERS \*\//,_0x1bf299(0xd7)+_0x13c8f9[_0x1bf299(0xf4)]+'Entities,\x20resolvers\x20as\x20'+_0x13c8f9[_0x1bf299(0xf4)]+'Resolvers\x20}\x20from\x20\x27./'+_0x13c8f9['name']+'\x27')),_0x53af73[_0x1bf299(0xde)]('...'+_0x13c8f9[_0x1bf299(0xf4)]+_0x1bf299(0x115))<0x0&&(_0x53af73=_0x53af73[_0x1bf299(0xee)](/\/\* ENTITIES \*\//,_0x1bf299(0x121)+_0x13c8f9['pascalCaseName']+_0x1bf299(0x115))),_0x53af73['indexOf'](_0x1bf299(0xc8)+_0x13c8f9[_0x1bf299(0xf4)]+_0x1bf299(0xdb))<0x0&&(_0x53af73=_0x53af73[_0x1bf299(0xee)](/\/\* RESOLVER CLASSES \*\//,_0x1bf299(0xb3)+_0x13c8f9[_0x1bf299(0xf4)]+_0x1bf299(0xdb))),await this[_0x1bf299(0xe0)](_0xc611ab,_0x53af73,_0x13c8f9);}[a0_0x1425d0(0x105)](_0x299c98){const _0x5ca86f=a0_0x1425d0;let _0x3fd037=sereviceType,_0x2853d2=_0x299c98[_0x5ca86f(0xc0)](_0x4ff42b=>{const _0x25eeed=_0x5ca86f;if('id'==_0x4ff42b[_0x25eeed(0xcb)])return'';if(_0x25eeed(0xca)==_0x4ff42b[_0x25eeed(0xcb)])return'';if('created_at'==_0x4ff42b['name'])return'';if(_0x25eeed(0xa4)==_0x4ff42b[_0x25eeed(0xcb)])return'';if('creator_id'==_0x4ff42b[_0x25eeed(0xcb)])return'';if(_0x25eeed(0xd6)==_0x4ff42b[_0x25eeed(0xcb)])return'';let _0x3ef24c=this[_0x25eeed(0x117)](_0x4ff42b),_0x56ee06=this[_0x25eeed(0xf9)](_0x4ff42b),_0x1314ff=camelCase(_0x4ff42b[_0x25eeed(0xcb)]);return'\x20\x20'+('@Field('+(0x0==_0x3ef24c[_0x25eeed(0x10b)]?'':_0x25eeed(0xe7)+_0x3ef24c+',')+_0x25eeed(0x118)+_0x4ff42b[_0x25eeed(0xd2)]+_0x25eeed(0xbe))+_0x25eeed(0xba)+(''+_0x1314ff+(_0x4ff42b['nullable']?'?':'')+':\x20'+_0x56ee06)+'\x0a';});_0x3fd037=_0x3fd037[_0x5ca86f(0xee)](/{{newTypeColumns}}/g,_0x2853d2[_0x5ca86f(0xce)]('\x0a'));let _0xef1aa7=_0x299c98[_0x5ca86f(0xc0)](_0x13b88d=>{const _0x3e3710=_0x5ca86f;if('id'==_0x13b88d[_0x3e3710(0xcb)])return'';if('domain_id'==_0x13b88d[_0x3e3710(0xcb)])return'';if(_0x3e3710(0xef)==_0x13b88d[_0x3e3710(0xcb)])return'';if('updated_at'==_0x13b88d['name'])return'';if(_0x3e3710(0xb1)==_0x13b88d[_0x3e3710(0xcb)])return'';if(_0x3e3710(0xd6)==_0x13b88d[_0x3e3710(0xcb)])return'';let _0xee1a65=this['getFieldType'](_0x13b88d),_0x2efc72=this[_0x3e3710(0xf9)](_0x13b88d);_0x13b88d[_0x3e3710(0xd2)]=!0x0;let _0x384ac3=camelCase(_0x13b88d[_0x3e3710(0xcb)]);return'\x20\x20'+(_0x3e3710(0x122)+(0x0==_0xee1a65[_0x3e3710(0x10b)]?'':_0x3e3710(0xe7)+_0xee1a65+',')+_0x3e3710(0x118)+_0x13b88d[_0x3e3710(0xd2)]+_0x3e3710(0xbe))+_0x3e3710(0xba)+(''+_0x384ac3+(_0x13b88d['nullable']?'?':'')+':\x20'+_0x2efc72)+'\x0a';});return _0x3fd037=_0x3fd037[_0x5ca86f(0xee)](/{{patchTypeColumns}}/g,_0xef1aa7[_0x5ca86f(0xce)]('\x0a')),_0x3fd037;}['createEntityText'](_0x1f375e,_0x341c2b){const _0x2f3177=a0_0x1425d0;let _0x346425=serviceEntity;_0x346425=_0x346425[_0x2f3177(0xee)](/{{table name}}/g,_0x1f375e[_0x2f3177(0xac)]);let _0x535bf9=_0x341c2b[_0x2f3177(0xb4)](function(_0x51f4dc,_0x468a0e){const _0x5f018e=_0x2f3177;return _0x51f4dc[_0x5f018e(0xb6)]-_0x468a0e[_0x5f018e(0xb6)];})[_0x2f3177(0xc0)](_0x2644ee=>this[_0x2f3177(0xe2)](_0x2644ee));_0x346425=_0x346425[_0x2f3177(0xee)](/{{entityColumns}}/g,_0x535bf9[_0x2f3177(0xce)]('\x0a'));let _0x4375d9='',_0x376106=_0x341c2b[_0x2f3177(0xc2)](_0x28f16f=>0x0!=_0x28f16f[_0x2f3177(0xfc)])[_0x2f3177(0xb4)](function(_0x14a2be,_0x2e5050){return _0x14a2be['uniqRank']-_0x2e5050['uniqRank'];});if(_0x376106[_0x2f3177(0x10b)]>0x0){_0x4375d9=_0x2f3177(0xc7);let _0x45725a=_0x376106[_0x2f3177(0xc0)](_0x304b0d=>{const _0x573a96=_0x2f3177;let _0xd2158f=_0x304b0d['name'];return'domain_id'==_0x304b0d['name']&&(_0xd2158f=_0x573a96(0x116)),'creator_id'==_0x304b0d[_0x573a96(0xcb)]&&(_0xd2158f=_0x573a96(0xec)),_0x573a96(0xd6)==_0x304b0d[_0x573a96(0xcb)]&&(_0xd2158f=_0x573a96(0xf7)),'{{camelCase\x20name}}.'+camelCase(_0xd2158f);});_0x4375d9=_0x4375d9[_0x2f3177(0xee)](/{{indexColumns}}/g,_0x45725a[_0x2f3177(0xce)](','));}return _0x346425=_0x346425[_0x2f3177(0xee)](/{{indexAnn}}/g,_0x4375d9),_0x346425;}['columnToEntityColumn'](_0x317f98){const _0x21ef4b=a0_0x1425d0;if('id'==_0x317f98[_0x21ef4b(0xcb)])return'';if(_0x21ef4b(0xca)==_0x317f98[_0x21ef4b(0xcb)])return'';if(_0x21ef4b(0xef)==_0x317f98[_0x21ef4b(0xcb)])return'';if(_0x21ef4b(0xa4)==_0x317f98[_0x21ef4b(0xcb)])return'';if(_0x21ef4b(0xb1)==_0x317f98[_0x21ef4b(0xcb)])return'';if(_0x21ef4b(0xd6)==_0x317f98[_0x21ef4b(0xcb)])return'';let _0x2befe9=_0x317f98[_0x21ef4b(0x123)];_0x21ef4b(0x111)==_0x317f98[_0x21ef4b(0x123)]&&(_0x2befe9=_0x21ef4b(0xda)),_0x21ef4b(0xb2)==_0x317f98[_0x21ef4b(0x123)]&&(_0x2befe9=_0x21ef4b(0x11f)),'string'==_0x317f98[_0x21ef4b(0x123)]&&(_0x2befe9=_0x21ef4b(0xe1)),_0x21ef4b(0xbf)==_0x317f98[_0x21ef4b(0x123)]&&(_0x2befe9=_0x21ef4b(0xae));let _0x108ecb='';_0x21ef4b(0xe9)==_0x317f98[_0x21ef4b(0x123)]&&(_0x108ecb=_0x317f98[_0x21ef4b(0xab)]);let _0x2ac1dc=this[_0x21ef4b(0x117)](_0x317f98),_0x3bb75a=this[_0x21ef4b(0xf9)](_0x317f98),_0x1e26b0=camelCase(_0x317f98[_0x21ef4b(0xcb)]);return'\x20\x20'+(_0x21ef4b(0xf1)+_0x317f98[_0x21ef4b(0xcb)]+'\x27,\x20type:\x20\x27'+_0x2befe9+_0x21ef4b(0x109)+_0x317f98['nullable']+'\x20'+(0x0==_0x108ecb[_0x21ef4b(0x10b)]?'':',length:'+_0x108ecb)+_0x21ef4b(0xbe))+_0x21ef4b(0xba)+(_0x21ef4b(0x122)+(0x0==_0x2ac1dc[_0x21ef4b(0x10b)]?'':_0x21ef4b(0xe7)+_0x2ac1dc+',')+_0x21ef4b(0x118)+_0x317f98[_0x21ef4b(0xd2)]+_0x21ef4b(0xbe))+_0x21ef4b(0xba)+(''+_0x1e26b0+(_0x317f98['nullable']?'?':'')+':\x20'+_0x3bb75a)+'\x0a';}[a0_0x1425d0(0x117)](_0x24dd8d){const _0x4354b0=a0_0x1425d0;let _0x2dd9da='';return _0x4354b0(0x111)==_0x24dd8d[_0x4354b0(0x123)]&&(_0x2dd9da='Float'),_0x4354b0(0x107)==_0x24dd8d['colType']&&(_0x2dd9da=_0x4354b0(0x119)),_0x4354b0(0xb2)==_0x24dd8d[_0x4354b0(0x123)]&&(_0x2dd9da=_0x4354b0(0xea)),'integer'==_0x24dd8d[_0x4354b0(0x123)]&&(_0x2dd9da=_0x4354b0(0xea)),_0x2dd9da;}[a0_0x1425d0(0xf9)](_0x56b8f7){const _0x36eefe=a0_0x1425d0;let _0x14233a=_0x56b8f7[_0x36eefe(0x123)];return _0x36eefe(0x11e)==_0x56b8f7[_0x36eefe(0x123)]&&(_0x14233a=_0x36eefe(0xdd)),'double'==_0x56b8f7[_0x36eefe(0x123)]&&(_0x14233a='number'),_0x36eefe(0x107)==_0x56b8f7['colType']&&(_0x14233a=_0x36eefe(0xdd)),_0x36eefe(0x125)==_0x56b8f7['colType']&&(_0x14233a=_0x36eefe(0xdd)),_0x36eefe(0xb2)==_0x56b8f7['colType']&&(_0x14233a='number'),_0x36eefe(0xbf)==_0x56b8f7[_0x36eefe(0x123)]&&(_0x14233a=_0x36eefe(0xc6)),'date'==_0x56b8f7[_0x36eefe(0x123)]&&(_0x14233a='Date'),_0x36eefe(0xd3)==_0x56b8f7[_0x36eefe(0x123)]&&(_0x14233a=_0x36eefe(0xe9)),_0x14233a;}async['writeFile'](_0x9567c,_0x59d221,_0x1b1ab2){const _0xa40bb9=a0_0x1425d0;await fs[_0xa40bb9(0xb0)](_0x9567c,this[_0xa40bb9(0xf0)](_0x59d221,_0x1b1ab2),_0xa40bb9(0xc5));}[a0_0x1425d0(0xf0)](_0x56de10,_0x328633){const _0x4a5a32=a0_0x1425d0;return _0x56de10[_0x4a5a32(0xee)](/{{pascalCase name}}/g,_0x328633['pascalCaseName'])['replace'](/{{camelCase name}}/g,_0x328633[_0x4a5a32(0xa9)])[_0x4a5a32(0xee)](/{{snakeCase name}}/g,_0x328633[_0x4a5a32(0x124)])['replace'](/{{pluralPascalCase name}}/g,_0x328633[_0x4a5a32(0x11c)])[_0x4a5a32(0xee)](/{{pluralCamelCase name}}/g,_0x328633['pluralCamelCaseName'])[_0x4a5a32(0xee)](/{{name}}/g,_0x328633[_0x4a5a32(0xcb)]);}async[a0_0x1425d0(0xcc)](_0x11da13,_0xbc4b17,_0x360c65){const _0x24e247=a0_0x1425d0;let _0x2cc3c3=_0x11da13+_0x24e247(0xf6);await this[_0x24e247(0x11d)](_0x2cc3c3),_0x2cc3c3=_0x2cc3c3+'/'+_0xbc4b17,await this[_0x24e247(0x11d)](_0x2cc3c3),_0x2cc3c3+=_0x24e247(0x108),await this[_0x24e247(0x11d)](_0x2cc3c3),_0x2cc3c3+=_0x24e247(0x100),await this[_0x24e247(0x11d)](_0x2cc3c3),_0x2cc3c3=_0x2cc3c3+'/'+_0x360c65,await this[_0x24e247(0x11d)](_0x2cc3c3);}['getProjectRootPath'](){const _0x17d4f0=a0_0x1425d0;let _0x4e30be=process[_0x17d4f0(0xa6)][_0x17d4f0(0x113)][_0x17d4f0(0x104)]('/'),_0x3b76a3=[];for(let _0x30a367=0x0;_0x30a367<_0x4e30be[_0x17d4f0(0x10b)]&&_0x17d4f0(0xbb)!=_0x4e30be[_0x30a367];_0x30a367++)_0x3b76a3[_0x17d4f0(0xf2)](_0x4e30be[_0x30a367]);return _0x3b76a3[_0x17d4f0(0xce)]('/');}async[a0_0x1425d0(0x11d)](_0x1c6092){const _0x4c9245=a0_0x1425d0;0x0==await this[_0x4c9245(0xaf)](_0x1c6092)&&fs['mkdirSync'](_0x1c6092);}async['existsPath'](_0x2b3694){const _0x89bb99=a0_0x1425d0;return await fs[_0x89bb99(0xc1)](_0x2b3694);}};tslib_1['__decorate']([(0x0,type_graphql_1[a0_0x1425d0(0x10a)])(_0x1ac1df=>Boolean,{'description':a0_0x1425d0(0xff)}),tslib_1['__param'](0x0,(0x0,type_graphql_1[a0_0x1425d0(0x11a)])('id')),tslib_1[a0_0x1425d0(0xcf)](0x1,(0x0,type_graphql_1['Ctx'])()),tslib_1[a0_0x1425d0(0x112)](a0_0x1425d0(0xfa),Function),tslib_1[a0_0x1425d0(0x112)](a0_0x1425d0(0xd0),[String,Object]),tslib_1['__metadata'](a0_0x1425d0(0xaa),Promise)],OperatoToolCreateService[a0_0x1425d0(0x120)],a0_0x1425d0(0xd4),null),OperatoToolCreateService=tslib_1[a0_0x1425d0(0xdf)]([(0x0,type_graphql_1['Resolver'])()],OperatoToolCreateService),exports[a0_0x1425d0(0xad)]=OperatoToolCreateService;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',serviceIndex='\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',serviceQuery='\x0aimport\x20{\x20Resolver,\x20Query,\x20FieldResolver,\x20Root,\x20Args,\x20Arg,\x20Ctx,\x20Directive\x20}\x20from\x20\x27type-graphql\x27\x0aimport\x20{\x20Domain,\x20ListParam,\x20convertListParams,\x20getRepository\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,\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\x20convertedParams\x20=\x20convertListParams(params,\x20domain.id)\x0a\x20\x20\x20\x20const\x20[items,\x20total]\x20=\x20await\x20getRepository({{pascalCase\x20name}}).findAndCount(convertedParams)\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',serviceMutation=a0_0x1425d0(0xe6),sereviceType=a0_0x1425d0(0xfd),serviceEntity=a0_0x1425d0(0xd5);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-service.js","sourceRoot":"","sources":["../../../server/service/tool-entity/create-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\nimport { getRepository } from '@things-factory/shell'\nimport { Entity, EntityColumn } from '@things-factory/resource-base'\n\nconst { camelCase, startCase, snakeCase } = 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 domain: { id: domain.id },\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 name = name.toLowerCase();\n\n // 프로젝트 Root Path 구하기 \n let appRootPath: string = this.getProjectRootPath();\n\n // 서비스 경로 생성 \n await this.createServicePath(appRootPath, bundle, name);\n\n // 서비스 파일 생성 \n await this.createServiceFiles(appRootPath, bundle, name, entity, entityColumns);\n\n return true;\n }\n\n\n /**\n * 서비스 연관 파일 생성 \n * {{name}}-query.ts\n * {{name}}-mutation.ts\n * {{name}}-type.ts\n * {{name}}.ts\n * index.ts\n * @param appRootPath \n * @param moduleName \n * @param serviceName \n * @param entity \n * @param entityColumns \n */\n async createServiceFiles(appRootPath: string, moduleName: string, serviceName: string, entity: Entity, entityColumns: EntityColumn[]) {\n // 이름 케이스 워드 만들기 \n let nameMap = {\n name: serviceName,\n pascalCaseName: startCase(camelCase(serviceName)).replace(/ /g, ''),\n camelCaseName: camelCase(serviceName),\n snakeCaseName: snakeCase(serviceName),\n pluralPascalCaseName: startCase(camelCase(plural(serviceName))).replace(/ /g, ''),\n pluralCamelCaseName: camelCase(plural(serviceName))\n }\n let servicePath = `${appRootPath}/packages/${moduleName}/server/service/`;\n\n // 서비스 연관 파일 생성 \n await this.writeFile(servicePath + `${serviceName}/index.ts`, serviceIndex, nameMap);\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 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 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 * 엔티티 생성 텍스트 \n * @param entity \n * @param entityColumns \n * @param nameMap \n * @returns \n */\n createEntityText(entity: Entity, entityColumns: EntityColumn[]) {\n let entityText = serviceEntity;\n // 테이블명 \n entityText = entityText.replace(/{{table name}}/g, entity.tableName);\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 entityText = entityText.replace(/{{entityColumns}}/g, entityColsText.join(\"\\n\"));\n\n // index 정보\n let indexAnn = ``;\n let sortedIdxCols: EntityColumn[] = entityColumns.filter(x => 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 * 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(/{{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`\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/* 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 } 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 }\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 convertedParams = convertListParams(params, domain.id)\n const [items, total] = await getRepository({{pascalCase name}}).findAndCount(convertedParams)\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 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({where: { domain, id }})\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({where: { domain, id:updRecord.id }})\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 } = context.state\n\n await tx.getRepository({{pascalCase name}}).delete({ domain, id })\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 } = context.state\n\n await tx.getRepository({{pascalCase name}}).delete({\n domain,\n id: In(ids)\n })\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 entity {{name}}.ts */\nconst serviceEntity = `\nimport {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn\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('{{table name}}')\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 @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, {nullable: true})\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, {nullable: true})\n @Field({ nullable: true })\n updater?: User\n\n @RelationId(({{camelCase name}}: {{pascalCase name}}) => {{camelCase name}}.updater)\n updaterId?: string\n}\n`"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvers = void 0;
|
|
4
|
+
const create_menu_1 = require("./create-menu");
|
|
5
|
+
const create_service_1 = require("./create-service");
|
|
6
|
+
exports.resolvers = [create_menu_1.OperatoToolCreateMenu, create_service_1.OperatoToolCreateService];
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/tool-entity/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqD;AACrD,qDAA2D;AAE9C,QAAA,SAAS,GAAG,CAAC,mCAAqB,EAAE,yCAAwB,CAAC,CAAA","sourcesContent":["import { OperatoToolCreateMenu } from './create-menu'\nimport { OperatoToolCreateService } from './create-service'\n\nexport const resolvers = [OperatoToolCreateMenu, OperatoToolCreateService]\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/tool-secret/index.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAExC,QAAA,SAAS,GAAG,CAAC,mCAAmB,CAAC,CAAA"}
|
|
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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';const a0_0x14981a=a0_0x5482;function a0_0x5482(_0x374bcd,_0x1d5fc6){const _0x49f37b=a0_0x49f3();return a0_0x5482=function(_0x5482ec,_0x5339d1){_0x5482ec=_0x5482ec-0x191;let _0x90b089=_0x49f37b[_0x5482ec];return _0x90b089;},a0_0x5482(_0x374bcd,_0x1d5fc6);}(function(_0x5d9f1c,_0x3998a9){const _0x5926b7=a0_0x5482,_0x360739=_0x5d9f1c();while(!![]){try{const _0x8a4bd0=parseInt(_0x5926b7(0x1a6))/0x1+parseInt(_0x5926b7(0x1a9))/0x2*(-parseInt(_0x5926b7(0x1ad))/0x3)+parseInt(_0x5926b7(0x1a3))/0x4*(parseInt(_0x5926b7(0x197))/0x5)+-parseInt(_0x5926b7(0x1b3))/0x6+parseInt(_0x5926b7(0x1b1))/0x7+parseInt(_0x5926b7(0x1a2))/0x8*(-parseInt(_0x5926b7(0x1b4))/0x9)+-parseInt(_0x5926b7(0x1b2))/0xa;if(_0x8a4bd0===_0x3998a9)break;else _0x360739['push'](_0x360739['shift']());}catch(_0x3b3337){_0x360739['push'](_0x360739['shift']());}}}(a0_0x49f3,0x9e9be));function a0_0x49f3(){const _0x441f97=['INVALID_LICENSE','960EBmRja','select','@things-factory/shell','@things-factory/menu-base','6344863oFecrt','7812070jcvyHQ','3558354LISIga','18EbAQCm','trim','checkStudioPermission','LicenseError','from','OVER_LIMIT','checkTarget','40ObxwDd','menu','ERROR_CODES','checkStudioTemplateIsOverLimit','@things-factory/operato-license-checker','manager','Menu','where','getPermission','andWhere','(template\x20is\x20not\x20null\x20and\x20template\x20!=\x20\x27\x27\x20)','114344cHFeZb','109372oyPfnd','includes','Permissions\x20For\x20Tailor\x20Tool','927681fOsJIq','getRepository','getCount','2HKsriA','split','createQueryBuilder'];a0_0x49f3=function(){return _0x441f97;};return a0_0x49f3();}Object['defineProperty'](exports,'__esModule',{'value':!0x0}),exports[a0_0x14981a(0x19a)]=exports['checkStudioPermission']=void 0x0;const operato_license_checker_1=require(a0_0x14981a(0x19b)),shell_1=require(a0_0x14981a(0x1af)),menu_base_1=require(a0_0x14981a(0x1b0)),license_error_1=require('../../errors/license-error');async function checkStudioPermission(){const _0x3d654c=a0_0x14981a;let _0xefdad7=((0x0,operato_license_checker_1[_0x3d654c(0x19f)])(_0x3d654c(0x1a5))||',')[_0x3d654c(0x1aa)](',')['map'](_0x3432f8=>_0x3432f8[_0x3d654c(0x191)]()),_0x18e1e5=!0x1;return _0xefdad7['forEach'](_0x473f42=>{const _0x4f3db0=_0x3d654c;_0x473f42[_0x4f3db0(0x1a4)]('Studio')&&(_0x18e1e5=!0x0);}),_0x18e1e5;}async function checkStudioTemplateIsOverLimit(_0x47cb65,_0x479dc6){const _0x2543d5=a0_0x14981a;if(0x0==await checkStudioPermission())throw new license_error_1['LicenseError']({'errorCode':_0x479dc6['t'](license_error_1['LicenseError'][_0x2543d5(0x199)][_0x2543d5(0x1ac)])});var _0x4febc9=0x0;if(_0x4febc9=_0x47cb65&&''!=_0x47cb65?await(0x0,shell_1[_0x2543d5(0x1a7)])(menu_base_1['Menu'])[_0x2543d5(0x19c)]['createQueryBuilder']()[_0x2543d5(0x1ae)](_0x2543d5(0x198))['from'](menu_base_1[_0x2543d5(0x19d)],_0x2543d5(0x198))[_0x2543d5(0x19e)]('id\x20!=\x20:id',{'id':_0x47cb65})[_0x2543d5(0x1a0)](_0x2543d5(0x1a1))[_0x2543d5(0x1a8)]()+0x1:await(0x0,shell_1[_0x2543d5(0x1a7)])(menu_base_1[_0x2543d5(0x19d)])['manager'][_0x2543d5(0x1ab)]()['select'](_0x2543d5(0x198))[_0x2543d5(0x194)](menu_base_1[_0x2543d5(0x19d)],_0x2543d5(0x198))['where']('(template\x20is\x20not\x20null\x20and\x20template\x20!=\x20\x27\x27\x20)')[_0x2543d5(0x1a8)]()+0x1,!(0x0,operato_license_checker_1[_0x2543d5(0x196)])(_0x4febc9))throw new license_error_1[(_0x2543d5(0x193))]({'errorCode':_0x479dc6['t'](license_error_1[_0x2543d5(0x193)][_0x2543d5(0x199)][_0x2543d5(0x195)])});return!0x0;}exports[a0_0x14981a(0x192)]=checkStudioPermission,exports[a0_0x14981a(0x19a)]=checkStudioTemplateIsOverLimit;
|
|
@@ -0,0 +1 @@
|
|
|
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 +1 @@
|
|
|
1
|
-
'use strict';
|
|
1
|
+
'use strict';function a0_0x33cd(_0x271ef2,_0x480490){const _0x4f009b=a0_0x4f00();return a0_0x33cd=function(_0x33cdbf,_0x31580d){_0x33cdbf=_0x33cdbf-0x77;let _0x12f7f0=_0x4f009b[_0x33cdbf];return _0x12f7f0;},a0_0x33cd(_0x271ef2,_0x480490);}const a0_0x1954de=a0_0x33cd;(function(_0x46e3e9,_0x553606){const _0x4bedf6=a0_0x33cd,_0x2b65f8=_0x46e3e9();while(!![]){try{const _0x3ce222=-parseInt(_0x4bedf6(0x7f))/0x1+-parseInt(_0x4bedf6(0x8b))/0x2+-parseInt(_0x4bedf6(0x8d))/0x3*(-parseInt(_0x4bedf6(0x95))/0x4)+-parseInt(_0x4bedf6(0x85))/0x5*(-parseInt(_0x4bedf6(0x82))/0x6)+parseInt(_0x4bedf6(0x80))/0x7*(-parseInt(_0x4bedf6(0x8c))/0x8)+parseInt(_0x4bedf6(0x88))/0x9*(-parseInt(_0x4bedf6(0x77))/0xa)+-parseInt(_0x4bedf6(0x90))/0xb*(-parseInt(_0x4bedf6(0x79))/0xc);if(_0x3ce222===_0x553606)break;else _0x2b65f8['push'](_0x2b65f8['shift']());}catch(_0x13f9c7){_0x2b65f8['push'](_0x2b65f8['shift']());}}}(a0_0x4f00,0xe1070));Object[a0_0x1954de(0x87)](exports,a0_0x1954de(0x94),{'value':!0x0}),exports[a0_0x1954de(0x83)]=void 0x0;const tslib_1=require(a0_0x1954de(0x91)),type_graphql_1=require(a0_0x1954de(0x7a)),tool_permission_1=require(a0_0x1954de(0x7c));let OperatoToolResolver=class{async[a0_0x1954de(0x84)](_0x48936f){return(0x0,tool_permission_1['checkStudioPermission'])();}async[a0_0x1954de(0x8f)](_0x1e2f31,_0x1d1968){const _0xc34410=a0_0x1954de;return(0x0,tool_permission_1[_0xc34410(0x7e)])(_0x1e2f31,_0x1d1968);}};function a0_0x4f00(){const _0x56e614=['14670ETCXwE','__param','1080OZyIsu','type-graphql','Resolver','./tool-permission','design:returntype','checkStudioTemplateIsOverLimit','1070815IeyRhe','36673uouCmY','Ctx','299190PnSNKI','OperatoToolResolver','studioPermission','130ObLCaW','__decorate','defineProperty','3204WsxaKL','Arg','Query','2524454VLEUpC','1296UWspFd','12wRHSrc','prototype','studioTemplateIsOverLimit','373241HqGYeg','tslib','design:type','design:paramtypes','__esModule','275444NzmkeU','__metadata'];a0_0x4f00=function(){return _0x56e614;};return a0_0x4f00();}tslib_1['__decorate']([(0x0,type_graphql_1[a0_0x1954de(0x8a)])(_0x5f58d=>Boolean,{'description':'Operato\x20Tool\x20Studio\x20Usage\x20Permissions'}),tslib_1[a0_0x1954de(0x78)](0x0,(0x0,type_graphql_1[a0_0x1954de(0x81)])()),tslib_1[a0_0x1954de(0x96)](a0_0x1954de(0x92),Function),tslib_1[a0_0x1954de(0x96)](a0_0x1954de(0x93),[Object]),tslib_1[a0_0x1954de(0x96)]('design:returntype',Promise)],OperatoToolResolver['prototype'],a0_0x1954de(0x84),null),tslib_1['__decorate']([(0x0,type_graphql_1[a0_0x1954de(0x8a)])(_0x1f9c30=>Boolean,{'description':'Operato\x20Tool\x20Studio\x20Limit\x20check'}),tslib_1[a0_0x1954de(0x78)](0x0,(0x0,type_graphql_1[a0_0x1954de(0x89)])('id')),tslib_1['__param'](0x1,(0x0,type_graphql_1[a0_0x1954de(0x81)])()),tslib_1[a0_0x1954de(0x96)](a0_0x1954de(0x92),Function),tslib_1['__metadata'](a0_0x1954de(0x93),[String,Object]),tslib_1[a0_0x1954de(0x96)](a0_0x1954de(0x7d),Promise)],OperatoToolResolver[a0_0x1954de(0x8e)],a0_0x1954de(0x8f),null),OperatoToolResolver=tslib_1[a0_0x1954de(0x86)]([(0x0,type_graphql_1[a0_0x1954de(0x7b)])()],OperatoToolResolver),exports[a0_0x1954de(0x83)]=OperatoToolResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-resolver.js","sourceRoot":"","sources":["../../../server/service/tool-secret/tool-resolver.ts"],"names":[],"mappings":"
|
|
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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/operato-tools",
|
|
3
|
-
"version": "6.0.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.21",
|
|
4
4
|
"main": "dist-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.0.0-alpha.
|
|
32
|
+
"@things-factory/meta-ui": "^6.0.0-alpha.21",
|
|
33
33
|
"@things-factory/operato-license-checker": "^3.1.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@things-factory/builder": "^6.0.0-alpha.14",
|
|
37
37
|
"@things-factory/meta-ui": "^6.0.0-alpha.6"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "484fbcb93bff65e7ffe0104b79eb7360ac9a8134"
|
|
40
40
|
}
|
package/translations/en.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"text.tool start msg": "Experience Operato development tools...",
|
|
2
3
|
"error.license token not valid": "Your license token data is not valid!",
|
|
3
4
|
"error.page count over license limit": "Your page count over license limit!",
|
|
4
5
|
"error.count over license limit": "Your board or domain count over license limit!",
|
package/translations/ko.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"error.
|
|
4
|
-
"error.count over license limit": "
|
|
2
|
+
"text.tool start msg": "Operato 개발 툴을 경험해보세요...",
|
|
3
|
+
"error.license token not valid": "라이센스 토큰 데이터 검사에 실패하였습니다!",
|
|
4
|
+
"error.page count over license limit": "라이센스에서 규정한 페이지 수량을 초과 하였습니다!",
|
|
5
|
+
"error.count over license limit": "라이센스에서 규정한 보드 또는 도메인 수량을 초과 하였습니다!",
|
|
5
6
|
"error.your license is not valid in this host": "이 호스트에서 라이센스가 유효하지 않습니다!",
|
|
6
7
|
"error.your license is expired! expired date is [x]": " 라이센스가 만료되었습니다! 만료일은 [{x}]입니다!",
|
|
7
8
|
"error.license key is empty": "라이센스 정보가 없습니다!",
|
|
8
9
|
"error.license key is not certified": "라이센스가 인증되지 않았습니다!",
|
|
9
10
|
"error.invalid license key": "라이센스가 유효하지 않습니다!",
|
|
10
|
-
"error.license expiration notice": "
|
|
11
|
+
"error.license expiration notice": "라이센스 만료예정 알림",
|
|
11
12
|
"error.your license due date is x, please renewal your license!": "라이센스 기한은 {x}입니다. 라이센스를 갱신하십시오!",
|
|
12
13
|
"label.header": "헤더",
|
|
13
14
|
"label.editable": "편집 여부",
|
package/translations/ms.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"text.tool start msg": "[ms] Experience Operato development tools...",
|
|
2
3
|
"error.license token not valid": "[ms] Your license token data is not valid!",
|
|
3
4
|
"error.page count over license limit": "[ms] Your page count over license limit!",
|
|
4
5
|
"error.count over license limit": "[ms] Your board or domain count over license limit!",
|
package/translations/zh.json
CHANGED
package/views/auth-page.html
CHANGED
|
@@ -59,10 +59,14 @@
|
|
|
59
59
|
padding: 0;
|
|
60
60
|
overflow: hidden;
|
|
61
61
|
|
|
62
|
+
overscroll-behavior-y: none;
|
|
63
|
+
|
|
62
64
|
/* This is a font-stack that tries to use the system-default sans-serifs first */
|
|
63
65
|
font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
64
66
|
line-height: 1.5;
|
|
65
67
|
-webkit-font-smoothing: antialiased;
|
|
68
|
+
|
|
69
|
+
accent-color: var(--primary-color);
|
|
66
70
|
}
|
|
67
71
|
</style>
|
|
68
72
|
|
package/views/public/home.html
CHANGED
|
@@ -59,10 +59,14 @@
|
|
|
59
59
|
padding: 0;
|
|
60
60
|
overflow: hidden;
|
|
61
61
|
|
|
62
|
+
overscroll-behavior-y: none;
|
|
63
|
+
|
|
62
64
|
/* This is a font-stack that tries to use the system-default sans-serifs first */
|
|
63
65
|
font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
|
64
66
|
line-height: 1.5;
|
|
65
67
|
-webkit-font-smoothing: antialiased;
|
|
68
|
+
|
|
69
|
+
accent-color: var(--primary-color);
|
|
66
70
|
}
|
|
67
71
|
</style>
|
|
68
72
|
|