@synergy-server/core 1.1.9 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see main.js.LICENSE.txt */
2
- (()=>{"use strict";var __webpack_modules__={9:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(5788)),r=a(9031);class o extends r.Model{}o.init({id:{type:r.DataTypes.UUID,primaryKey:!0},sid:{type:r.DataTypes.UUID,allowNull:!1,unique:!0},userId:r.DataTypes.UUID,expires:r.DataTypes.DATE,data:r.DataTypes.TEXT,licNumber:r.DataTypes.STRING(100),clientType:{type:r.DataTypes.ENUM,values:["browser","mobile","electron","api"],defaultValue:"browser"}},{sequelize:n.default,tableName:"session",modelName:"Session"})},360:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=a(9031),o=s(a(9896)),i=a(7138),l=s(a(1688)),u=s(a(3786)),c=s(a(5788)),d=s(a(2282)),f=n.default.Router();function m(e={},t){let a;const s={};return e.userRole?s.id=e.userRole:t.accessRoleId?s.id=t.accessRoleId:s.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?l.default.canRead(s):"CAN_MODIFY"===e.accessLevel?l.default.canModify(s):"IS_AUTH"===e.accessLevel?l.default.isAuth:l.default.isFullRights:"GET"===e.httpMethod?l.default.canRead(s):l.default.canModify(s),a}t.default={async initRoutes(){const e=await c.default.query('SELECT * FROM rest_api WHERE rest_api."markedToDelete" = false AND rest_api."active" = true',{type:r.QueryTypes.SELECT});for(const t of e){if(!t.methods)continue;let e;const a=`restApi/${t.name}/server.module.js`,s=`${process.cwd()}/src/modules/${a}`;if(o.default.existsSync(s)&&(e=require(s)),!e)continue;const n=JSON.parse(t.methods);for(const a of n)e[a.controller]&&"function"==typeof e[a.controller]?f[a.httpMethod.toLowerCase()](`/api/${t.path}/${a.path}`,m(a.httpMethod,t),(e,t,a)=>{const s=e.headers["content-type"];if(s&&s.includes("multipart/form-data"))return u.default.array("files")(e,t,e=>{if(e)return t.status(i.StatusCodes.INTERNAL_SERVER_ERROR).json({message:`File upload error: ${e}`});a()});a()},e[a.controller]):d.default.error("Rest API controller is not exist: ",{meta:{name:t.name,controller:a.controller}})}return f}}},664:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(2282)),r=s(a(5788));t.default={async onChangeHandler(e,t,a,s,o){try{const n=await r.default.models.ObjectVersioningSetting.findOne({where:{objectType:e.name}});if(n&&("all"===n.versioningMethod||n.versioningMethod===a)){let n=function(e){let t=[];if(e.associations)for(let a in e.associations){if("chargedServicesAcc"===a)continue;let s=e.associations[a].target;if(e.associations[a].isSingleAssociation){let n=["id","presentation"];e.associations[a].source.rawAttributes.name&&n.push("name"),t.push({model:s,as:a,attributes:n})}else{const e=t.push({model:s,as:a,include:[]});if(s.associations){t[e-1].include=[];for(let a in s.associations){let n=s.associations[a].target;if(s.associations[a].isSingleAssociation){let r=["id","presentation"];s.associations[a].target.rawAttributes.name&&r.push("name"),t[e-1].include.push({model:n,as:a,attributes:r})}}}}}return t}(e);await e.findByPk(t,{include:n,transaction:o}).then(async n=>{if(n){const i={objectId:t,objectData:JSON.stringify(n),objectType:e.name,userId:s,description:a},l={transaction:o||null};await r.default.models.ObjectVersion.create(i,l).catch(e=>{console.error(e)})}})}}catch(t){n.default.error(`Error in ${e.options.name?.plural} objectVersionsService onChangeHandler`,{meta:t})}},async addChanges(e,t){let a={...e};t.user&&(a.userId=t.user.id),await r.default.models.ObjectVersion.create(a).catch(e=>{console.error(e)})}}},696:e=>{e.exports=require("ssf")},829:e=>{e.exports=require("jsonwebtoken")},1572:e=>{e.exports=require("nodemailer")},1688:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(1691)),r=a(7138),o=s(a(2282));t.default={isAuth(e,t,a){if(!e.user){const e="Error in accessRight.isAuth. User not authenticated";return o.default.error(e),t.status(r.StatusCodes.FORBIDDEN).send({message:e})}a()},isFullRights(e,t,a){if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),t.status(r.StatusCodes.FORBIDDEN).send({message:e})}if(!0!==e.user.fullRights){const e="Error in accessRight.isFullRights. User not has full rights";return o.default.error(e),t.status(r.StatusCodes.FORBIDDEN).send({message:e})}a()},canRead:e=>async(t,a,s)=>{if(!t.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),a.status(r.StatusCodes.FORBIDDEN).send({message:e})}if(!0===t.user.fullRights)return void s();const i=t.user?.id;i?await n.default.checkUserAccess(i,e,!0).then(n=>{if(!0===n)s();else{const s=`User ${t.user?.name} not have access to read. Role ${e}`;o.default.error("Error in accessRight.canRead",{meta:s}),a.status(r.StatusCodes.FORBIDDEN).send({message:s})}}).catch(e=>{o.default.error("Error in accessRight.canRead",{meta:e}),a.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(r.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},canModify:e=>async(t,a,s)=>{if(!0===t.user?.fullRights)return void s();const i=t.user?.id;i?await n.default.checkUserAccess(i,e,!0,!0).then(n=>{if(!0===n)s();else{const s=`User ${t.user?.name} not have access to modify. Role ${e}`;o.default.error("Error in accessRight.canModify",{meta:s}),a.status(r.StatusCodes.FORBIDDEN).send({message:s})}}).catch(e=>{o.default.error("Error in accessRight.canModify",{meta:e}),a.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(r.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})}}},1691:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(9031),r=s(a(5788)),o=s(a(2555));async function i(e){const t=[];return await r.default.models.Department.findAll({where:{[n.Op.or]:[{leaderId:e},{deputyId:e}]}}).then(e=>{for(const a of e)t.push(a.id)}).catch(e=>{throw e}),await r.default.models.DepartmentEmployee.findAll({where:{employeeId:e}}).then(e=>{for(const a of e)t.push(a.parentId)}).catch(e=>{throw e}),t}t.default={getUserAccessRoles:async(e,t=!1,a=!1)=>await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await r.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const s={parentId:e};return!0===a?s.canModify=!0:!0===t&&(s.canRead=!0),await r.default.models.RoleGroupSetting.findAll({where:s}).then(e=>{const t=[];for(const a of e){const e=t.findIndex(e=>e.userRoleId===a.id);e>-1?(a.canRead!==t[e].canRead&&!0===a.canRead&&(t[e].canRead=a.canRead),a.canModify!==t[e].canModify&&!0===a.canModify&&(t[e].canModify=a.canModify)):t.push({userRoleId:a.userRoleId,canRead:a.canRead,canModify:a.canModify})}return t}).catch(e=>{throw e})}).catch(e=>{throw e}),getUserAccessRoleId:async(e,t=!1,a=!1)=>await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>{const s={parentId:e.map(e=>e.parentId)};return!0===a?s.canModify=!0:!0===t&&(s.canRead=!0),await r.default.models.RoleGroupSetting.findAll({where:s}).then(t=>e=t.map(e=>e.userRoleId)).catch(e=>{throw e})}).catch(e=>{throw e}),getUserRoleByKey:async e=>await r.default.models.UserRole.findOne({where:{key:e}}).then(async e=>e).catch(e=>{throw e}),getUserRoleById:async e=>await r.default.models.UserRole.findByPk(e).then(async e=>e).catch(e=>{throw e}),async checkUserAccess(e,t,a=!1,s=!1){const n=t?.id?await this.getUserRoleById(t.id):await this.getUserRoleByKey(t.key);return n?await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await r.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const t={parentId:e,userRoleId:n.id};return!0===s?t.canModify=!0:!0===a&&(t.canRead=!0),await r.default.models.RoleGroupSetting.findAll({where:t}).then(e=>!!(e&&e.length>0)).catch(e=>{throw e})}).catch(e=>{throw e}):new Error(`Role with key ${t} does not exist`)},async getAllSubDepartments(e,t){const a=[],s=await r.default.models.Department.findAll({where:{groupId:e.id},include:t});for(const e of s){a.push(e);const s=await this.getAllSubDepartments(e,t);for(const e of s)a.push(e)}return a},async accessRestrictions(e,t){const a={use:!1,users:[]},s=await r.default.models.AccessRestriction.findOne({where:{objectType:t.name}});if(s&&(!0===s.useRestriction||!0===s.useDepartmentRestriction)&&(a.use=!0,a.users.push(e.user?.id),!0===s.useDepartmentRestriction)){const t=o.default.prepareIncludes(r.default.models.Department,{withTableParts:!0}),s=await r.default.models.Department.findAll({where:{[n.Op.or]:[{leaderId:e.user?.id},{deputyId:e.user?.id}]},include:t}),i=[];for(const e of s){const a=await this.getAllSubDepartments(e,t);for(const e of a)i.push(e)}for(const e of i)s.push(e);if(s)for(const e of s)for(const t of e.employees)a.users.push(t.employeeId)}return a},getUserAccessNavigation:async e=>await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await r.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>await r.default.models.RoleGroupNavigation.findAll({where:{parentId:e}}).then(e=>{const t=e.map(e=>e.navigationId);return[...new Set(t)]}).catch(e=>{throw e})).catch(e=>{throw e})}},1752:e=>{e.exports=require("passport-local")},1763:e=>{e.exports=require("express-rate-limit")},1814:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(7138),r=s(a(2282)),o=s(a(7099));t.default={async sendSMS(e,t,a){try{const{dest:a,smsText:s,delivNotifRequest:r}=e.body,i=await o.default.sendSms(a,s,r);t.status(n.StatusCodes.OK).send(i)}catch(e){r.default.error("Error while trying to send sms",{meta:e}),t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}}}},2096:e=>{e.exports=require("morgan")},2103:e=>{e.exports=require("crypto-js")},2282:function(e,t,a){var s,n=this&&this.__createBinding||(Object.create?function(e,t,a,s){void 0===s&&(s=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,s,n)}:function(e,t,a,s){void 0===s&&(s=a),e[s]=t[a]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(s=function(e){return s=Object.getOwnPropertyNames||function(e){var t=[];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[t.length]=a);return t},s(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a=s(e),o=0;o<a.length;o++)"default"!==a[o]&&n(t,e,a[o]);return r(t,e),t});Object.defineProperty(t,"__esModule",{value:!0});const i=o(a(5124));i.default.addColors({error:"bold red",warn:"yellow",info:"green",verbose:"dim white",debug:"gray",silly:"magenta"});const l=i.default.createLogger({level:"info",format:i.format.combine(i.format.colorize(),i.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),i.format.prettyPrint(),i.format.printf(e=>`${e.timestamp}${e.context?` [${e.context}]`:""}${e.level?` ${e.level}`:""}: ${e.message?e.message:""} ${e.meta?e.meta?.stack?`${e.meta.original?.message?e.meta.original?.message:""} ${e.meta.stack}`:e.meta:""} ${e.stack?`\n${e.stack}`:""}`)),transports:[new i.transports.File({level:"error",filename:"logs/common/error.log",format:i.default.format.uncolorize()}),new i.transports.File({filename:"logs/common/combined.log",format:i.default.format.uncolorize()}),new i.transports.Console],exceptionHandlers:[new i.transports.File({filename:"logs/common/exceptions.log"})]});t.default=l},2362:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(6261));t.default={sendMessage(e,t){e.app.get("eventEmitter").emit("processing",{message:t})},sendData(e,t){e.app.get("eventEmitter").emit("processing",t)},init(e){const t=new n.default;e.set("eventEmitter",t),e.get("/client_events",(e,a)=>{a.setHeader("Content-Type","text/event-stream"),a.setHeader("Cache-Control","no-cache"),a.setHeader("Connection","keep-alive"),a.setHeader("Access-Control-Allow-Credentials","true"),a.flushHeaders(),t.on("processing",e=>{(e=>{a.write(`data: ${JSON.stringify(e)}\n\n`),a.flush()})(e)}),e.on("close",()=>{a.end()})})}}},2525:e=>{e.exports=require("helmet")},2555:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(5788)),r=a(9031);function o(e){const t={};if(0===e.length)return t;for(const a of e){const e=a.split(".");e.length>0&&(t[e[0]]?2==e.length?t[e[0]].push(e[1]):e.length>2&&(t[e[0]][e[1]]?t[e[0]][e[1]].push(e[2]):t[e[0]].push({[e[1]]:[e[2]]})):2==e.length?t[e[0]]=[e[1]]:e.length>2&&(t[e[0]]={},t[e[0]][e[1]]=[e[2]]))}return t}t.default={prepareIncludes(e,t,a=[],s=null,n=null,r=[]){let i=[],l=!0;Object.prototype.hasOwnProperty.call(t,"compactInclude")&&(l=t.compactInclude);const u=o(a),c=o(r);if(t.include)i=t.include;else if(e.associations){if(!0!==l)return{all:!0};for(let a in e.associations){if(e.associations[a].options._noTablePart)continue;let r=e.associations[a].target;if(e.associations[a].isSingleAssociation){let t=["id","presentation"];e.associations[a].target.getAttributes().name&&t.push("name");const n=[];if(u[a])for(const e of u[a])if("object"==typeof e)for(const t in e){const a=r.associations[t]?.target;if(a){const s=e[t];if(Array.isArray(s)){let e=[...new Set(["id","presentation",...s])];a.getAttributes().name&&e.push("name"),n.push({model:a,as:t,attributes:e})}}}else t.includes(e)||t.push(e);c[a]&&(t=[...new Set([...t,...c[a]])]);const o=s?.[a];i.push({model:r,as:a,attributes:t,where:o,include:n})}else if(t.withTableParts){const e=s?.[a],t=i.push({model:r,as:a,where:e,include:[]});if(n&&r.getAttributes().rowNumber&&n.push([{model:r,as:a},"rowNumber","asc"]),r.associations){i[t-1].include=[];for(let e in r.associations){let s=r.associations[e].target;if(r.associations[e].isSingleAssociation){let n=["id","presentation"];r.associations[e].target.getAttributes().name&&n.push("name"),u[a]?.[e]&&(n=[...new Set([...n,...u[a][e]])]),i[t-1].include?.push({model:s,as:e,attributes:n})}}}}}}return i},async setAuthor(e,t){t.user?(e.authorId=t.user.id,e.author=t.user):console.error("Not found user on request!")},executeConditionCode:(e,t)=>new Function("args",e)(t),translateField:(e,t,a)=>!0!==(a&&"pl"!==a)||null===e.lang?e[t]:e.lang?.[t]?.[a]||e[t],async initEnums(){try{return(await n.default.query('\n SELECT \n enums.id AS "id",\n enums.name AS "enumName",\n enum_values.id AS "valueId",\n enum_values.value AS "value",\n enum_values."rowNumber" AS "rowNumber"\n FROM \n enums\n LEFT JOIN \n enum_values \n ON \n enum_values."parentId" = enums.id\n ORDER BY \n enums.id ASC, \n enum_values."rowNumber" ASC',{type:r.QueryTypes.SELECT})).reduce((e,t)=>(e[t.enumName]||(e[t.enumName]=[]),e[t.enumName].push(t.value),e),{})}catch(e){return console.error(e),{}}},normalizeFloat(e,t=6){if(!Number.isFinite(e))return e;const a=Math.pow(10,t),s=Math.round(e*a)/a,n=Math.pow(10,3);return 0===Math.round(e*n)/n?0:s}}},2562:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(2282)),r=a(7138),o=s(a(9896)),i=s(a(2103)),l=s(a(9880));t.default={async executeProcessing(e,t,a,s){const i=e.body.name;if(!i){const e="Object name is not correct!";return n.default.error(`Error in ${s.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let l;const u=`dataProcessors/${i}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;if(o.default.existsSync(c)){const e=require.resolve(c);require.cache[e]&&delete require.cache[e],l=require(c)}if(!l){const e="Data processor module is empty!";return n.default.error(`Error in ${s.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if(!l?.executeProcessing||"function"!=typeof l?.executeProcessing){const e="Data processor run function is not exist!";return n.default.error(`Error in ${s.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}try{const n=await l.executeProcessing(e,t,a,s);return{status:r.StatusCodes.OK,responseData:{executionComplited:!0,result:n}}}catch(e){return n.default.error(`Error in ${s.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async exportProcessor(e,t,a,s){const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length){const e="Object id is not correct!";return n.default.error(`Error in ${s.name} findItem controller`,{meta:e}),t.status(r.StatusCodes.BAD_REQUEST).send({message:e})}return await s.model.findByPk(l).then(e=>{if(!e){const e=`${s.name} with id ${l} not found`;return n.default.error(`Error in ${s.name} exportProcessor controller`,{meta:e}),t.status(r.StatusCodes.NOT_FOUND).send({message:e})}{const a=JSON.parse(JSON.stringify(e));let l;const u=`dataProcessors/${a.name}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;o.default.existsSync(c)&&(delete require.cache[require.resolve(c)],l=require(c)),a.serverModule=l?o.default.readFileSync(`src/modules/${u}`,{encoding:"utf8",flag:"r"}):"";const d=i.default.AES.encrypt(JSON.stringify(a),"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3").toString(),f=`/tmp/${a.id}.sdp`;o.default.writeFileSync(f,d),t.status(r.StatusCodes.OK).download(f,`${a.name}.sdp`,e=>{if(e)return n.default.error(`Error in ${s.name} exportProcessor controller`,{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).json({message:e.message});o.default.unlinkSync(f)})}}).catch(e=>(n.default.error(`Error in ${s.name} exportProcessor controller`,{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})))},async importProcessor(e,t,a,s){let{data:u}=e.body;if(u=JSON.parse(u||"{}"),!e.files||!u){const e="No file uploaded!";return n.default.error(`Error in ${s.name} importProcessor controller`,{meta:e}),t.status(r.StatusCodes.BAD_REQUEST).send({message:e})}try{for(let a of e.files){const e=a.path,n=o.default.readFileSync(e,{encoding:"utf8",flag:"r"}),c=i.default.AES.decrypt(n,"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3"),d=JSON.parse(c.toString(i.default.enc.Utf8));o.default.unlinkSync(e);let f=await s.model.findByPk(u.id);const m={objectId:u.id,serverModule:d.serverModule};let p;return f?(p=await f.update({name:d.name,title:d.title,lang:d.lang},{where:{id:u.id}}),m.event="update",m.oldValue=f,m.newValue=p):(p=await s.model.create({id:u.id,name:d.name,title:d.title,lang:d.lang}),m.event="create",m.newValue=p),await l.default.updateInitialData(s.model,s.path,m),t.status(r.StatusCodes.OK).send({message:"OK"})}}catch(e){return n.default.error(`Error in ${s.name} importProcessor controller`,{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})}}}},2671:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(5788)),r=s(a(4716)),o=s(a(2282)),i=a(9031);t.default={async setNumber(e,t,a){if(t.noSetPrefix&&!0===t.noSetPrefix)return;t.prefix?t.prefix.id&&(t.prefix=await n.default.models.DocumentPrefix.findByPk(t.prefix.id)):t.prefix="AA",function(e){"numberPeriod"in e&&e.prefix.id&&("year"===e.prefix.periodicity?e.numberPeriod=(0,r.default)(e.date).startOf("year").toDate():"quarter"===e.prefix.periodicity?e.numberPeriod=(0,r.default)(e.date).startOf("quarter").toDate():"month"===e.prefix.periodicity?e.numberPeriod=(0,r.default)(e.date).startOf("month").toDate():"day"===e.prefix.periodicity?e.numberPeriod=e.date.startOf("day").toDate():e.numberPeriod=null)}(t);const s=t.prefix?.id?t.prefix.name:t.prefix,l=t.numberPeriod?t.numberPeriod:null;let u=1;try{let r=await n.default.models.Numerator.findOne({where:{tableName:e.path,prefix:s,period:l},lock:i.Transaction.LOCK.UPDATE,transaction:a});if(r)r.number++,await r.save({transaction:a});else{let o={prefixId:null};t.prefix.id?o.prefixId=t.prefix.id:o.prefixId=null,"numberPeriod"in t&&(o.numberPeriod=l);const i=await e.model.findOne({where:o,order:[["number","DESC"]],transaction:a});i&&(u=parseFloat(i.number)+1),r=await n.default.models.Numerator.create({tableName:e.path,prefix:s,period:l,number:u},{transaction:a})}u=r.number}catch(t){o.default.error(`Error in ${e.name} createItem controller`,{meta:t})}t.number=u,function(e){if(e.prefix?.template&&""!=e.prefix?.template){const t=e.prefix.template.trim().replace(/\[([^\]]+)\]/g,(t,a)=>"Number"===a?e.number.toString().padStart(6,"0"):"MonthDay"===a?(0,r.default)(e.date).format("DD"):"MonthNumber"===a?(0,r.default)(e.date).format("MM"):"QuarterNumber"===a?(0,r.default)(e.date).quarter().toString().padStart(2,"0"):"YearTwoDigits"===a?(0,r.default)(e.date).format("YY"):"YearFourDigits"===a?(0,r.default)(e.date).format("YYYY"):"Prefix"===a?e.prefix.name:"Organization"===a?e.organization?.code?e.organization.code:t:"CounterpartyCode"===a?e.counterparty?.code?e.counterparty.code:t:"StoreCode"===a&&e.warehouse?.code?e.warehouse.code:t);e.numberStr=t}else e.numberStr=(e.prefix?.name?e.prefix?.name:e.prefix)+"-"+e.number.toString().padStart(6,"0")}(t)},async nextNumber(e,t,a=void 0,s){let r,l=1,u=!1;s?(r=s,u=!0):r=await(e.sequelize?.transaction());try{const a=e.getTableName();let s=await n.default.models.Numerator.findOne({where:{tableName:a,prefix:t},lock:i.Transaction.LOCK.UPDATE,transaction:r});if(s)s.number++,await s.save({transaction:r});else{const o=await e.findOne({where:{prefix:t},order:[["number","DESC"]],transaction:r});o&&(l=o.number+1),s=await n.default.models.Numerator.create({tableName:a,prefix:t,number:l},{transaction:r})}!0!==u&&r&&await r.commit(),l=s.number}catch(t){!0!==u&&r&&await r.rollback(),o.default.error(`Error in ${e.options.name?.plural} createItem controller`,{meta:t})}return l}}},2703:e=>{e.exports=require("node-cron")},3275:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default={typesSufixes:()=>({string:"ST",text:"TX",integer:"IN",decimal:"DC",boolean:"BL",date:"DT"}),typeIncludesRef:e=>e.includes("enum")||e.includes("catalog")||e.includes("document")||e.includes("anyRef")||e.findIndex(e=>e.includes("."))>-1,isRefType:e=>"enum"===e||"catalog"===e||"document"===e||"anyRef"===e||e.includes("."),getFieldNameByType(e,t){const a=this.typesSufixes();return a[t]?`_${e}${a[t]}`:this.isRefType(t)?`_${e}Ref`:null}}},3407:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(4139)),r=s(a(7281)),o=s(a(9816)),i=s(a(7565)),l=s(a(6961)),u=s(a(9911));t.default=e=>{e.use(o.default),e.use(n.default),e.use(r.default),e.use(l.default),e.use(i.default),e.use(u.default)}},3464:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(2703)),r=s(a(5788)),o=s(a(9896)),i=a(7138),l=s(a(2282)),u=[];t.default={async init(e){if(process.env.NODE_APP_INSTANCE&&"0"!==process.env.NODE_APP_INSTANCE)return;if(!r.default.models.ScheduledJob)return void l.default.error("Error in Scheduled Jobs init.",{meta:"Scheduled jobs is not initialized!!!"});const t=await r.default.models.ScheduledJob.findAll({where:{active:!0,markedToDelete:!1}});if(Array.isArray(t)&&t.length>0)for(const a of t){const t=a.schedule,s=`scheduledJobs/${a.name}/server.module.js`;let n;const r=`${process.cwd()}/src/modules/${s}`;if(!o.default.existsSync(r))return console.log(`Serwer module for scheduled job "${a.name}" is not found!`);if(n=require(r),t.dateFrom||t.dateTo){const e=new Date;if(t.dateFrom&&e<new Date(t.dateFrom))continue;if(t.dateTo&&e>new Date(t.dateTo))continue}c(a,t,n,e)}},async executeManually(e,t,a,s){const n=e.body.name;if(!n){const e="Object name is not correct!";return l.default.error(`Error in ${s.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let u;const c=`scheduledJobs/${n}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;if(o.default.existsSync(d)&&(delete require.cache[require.resolve(d)],u=require(d)),!u){const e="Scheduled job module is empty!";return l.default.error(`Error in ${s.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if("function"!=typeof u){const e="Scheduled job run function is not exist!";return l.default.error(`Error in ${s.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const f=await r.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.body.id,status:"started"});try{const t=[],a=await u(e.objects,t),s=t.find(e=>"error"===e.status),n=t.find(e=>"info"===e.status);let r="";if(s){for(let e of t)r+=e.meta+"\n";await f.update({endDate:new Date,status:"error",errorDescription:r,userId:e.user?.id,manual:!0})}else if(n){for(let e of t)r+=e.meta+"\n";await f.update({endDate:new Date,status:"success",errorDescription:r,userId:e.user?.id,manual:!0})}else await f.update({endDate:new Date,status:"success",userId:e.user?.id,manual:!0});return{status:i.StatusCodes.OK,responseData:{executionComplited:!0,result:a}}}catch(e){return l.default.error(`Error in ${s.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}}};const c=(e,t,a,s)=>{const o=`${d(t.minutes,t.startTime,"minutes")} \n ${d(t.hours,t.startTime,"hours")} \n ${f(t.daysOfMonth)} \n ${f(t.months)} \n ${f(t.daysOfWeek)}\n `,i=n.default.schedule(o,async()=>{const t=await r.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.id,status:"started"});try{const e=[];await a(s,e);const n=e.find(e=>"error"===e.status),r=e.find(e=>"info"===e.status);let o="";if(n){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"error",errorDescription:o})}else if(r){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"success",errorDescription:o})}else await t.update({endDate:new Date,status:"success"})}catch(e){console.error("Error executing module code:",e),await t.update({endDate:new Date,status:"error",errorDescription:e.message})}},{scheduled:!1});i.start(),u.push({jobId:e.id,jobExemplar:i})},d=(e,t,a)=>e&&"00"!==e?`*/${Number(e)}`:t?"minutes"===a?`${t.substring(3,5)}`:`${t.substring(0,2)}`:"*",f=e=>{if(e.length>0){let t="";for(const a of e)t+=a,e.length-1!==e.indexOf(a)&&(t+=",");return t}return"*"}},3648:e=>{e.exports=require("pdfmake")},3786:function(e,t,a){var s=a(8287).hp,n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(8461)),o=n(a(4716)),i=n(a(9896)),l=r.default.diskStorage({destination:function(e,t,a){a(null,function(){const e=(0,o.default)().format("DD_MM_YYYY"),t=`${process.env.DESTINATION}/common/${e}`;return i.default.existsSync(t)||i.default.mkdirSync(t,{recursive:!0}),t}())},filename:function(e,t,a){t.originalname=s.from(t.originalname,"latin1").toString("utf8");const n=function(e){let t=e.originalname,a="";const s=/(?:\.([^.]+))?$/.exec(e.originalname);if(!s)return`file_${Date.now()}${a}`;a=s[0],t=String(e.originalname).replace(a,"");return t=String(t).replace(/[^a-zA-Z0-9-_]/g,"_"),t=t.toLowerCase(),`${t}_${Date.now()}${a}`}(t);a(null,n)}});t.default=(0,r.default)({storage:l,limits:{fileSize:104857600}})},3830:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(8894));t.default=async e=>{const t=await r(e);return[{name:"customerRequests",query:'select * from customer_requests where "authorId" = :authorId',params:{authorId:e.user?.id}},{name:"customerRequestStatuses",query:"select * from customer_request_statuses"},{name:"deliveryNotes",query:`SELECT * FROM delivery_notes as virtual_table ${t}`},{name:"deliveryOrders",query:`SELECT * FROM delivery_orders as virtual_table ${t}`},{name:"Dispositions",query:`SELECT * FROM dispositions as virtual_table ${t}`}]};const r=async e=>{let t="";const a=await n.default.getForwarderFilter(e);return!1===a.fullAccess&&(t=`WHERE virtual_table."forwarderId" = '${a.forwarder}'`),t}},3857:e=>{e.exports=require("connect-session-sequelize")},3903:e=>{e.exports=require("uuid")},3958:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(3903),r=a(7138),o=a(9031),i=s(a(4716)),l=s(a(9896)),u=s(a(2282)),c=s(a(2555)),d=s(a(2671)),f=s(a(6299)),m=s(a(9880)),p=s(a(664)),h=s(a(5788)),y=s(a(2103));function g(e,t){const a=[];if(e.associations)for(const s in e.associations)if(e.associations[s].isMultiAssociation){if(e.associations[s].options._noTablePart)continue;if(Object.prototype.hasOwnProperty.call(t,s)){let t=e.associations[s].target;a.push({model:t,as:s})}}if(t.addInclude)for(const e of t.addInclude){const t=a.findIndex(t=>t.model===e.model);-1===t?a.push({...e}):a[t].fkField=e.fkField}return a}function b(e,t,a){for(const s in e){const n=e[s];if("object"==typeof n){const e={};for(const t in n)"inList"===t?e[o.Op.in]=n[t]:"notInList"===t?e[o.Op.notIn]=n[t]:e[o.Op[t]]=n[t];if(s.includes(".")){const t=s.split(".");a[t[0]]?a[t[0]][t[1]]=e:a[t[0]]={[t[1]]:e}}else t[s]=e}else if(s.includes(".")){const e=s.split(".");a[e[0]]?a[e[0]][e[1]]=n:a[e[0]]={[e[1]]:n}}else t[s]=n}}function w(e,t){let a=t.sortBy.split(".");if(a.length>1){const t=e.model.associations[a[0]]?.target;a[1]=t?.rawAttributes?.numberStr?"numberStr":"name"}return!0===t.sortDesc&&a.push("DESC"),a}function _(e,t,a){"appObjects"!==e.name&&"reportSettings"!==e.name&&"dataProcessors"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(a.serverModule=t.serverModule),"commonModules"===e.name&&(a.module=t.module),"appObjects"!==e.name&&"viewSettings"!==e.name&&"reportSettings"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(a.info=t.info)}t.default={async findAllItems(e,t,a,s,n={}){const l=JSON.parse(e.query?.pagination||"{}"),d=JSON.parse(e.query?.sort||"{}");let f={};e.query?.filter&&(f="string"==typeof e.query?.filter?JSON.parse(e.query?.filter):e.query?.filter);const m=e.query?.limit||null,p=e.query?.withTableParts||null;let h={},y=[];e.query?.attributes&&(h=e.query?.attributes,"string"==typeof h&&(h=JSON.parse(h))),n.attributes&&"object"==typeof n.attributes&&("object"!=typeof h||Array.isArray(h)||0!==Object.keys(h).length?"object"==typeof h&&Array.isArray(h)&&0===h.length?h=n.attributes:"object"!=typeof h||Array.isArray(h)||Array.isArray(n.attributes)?"object"==typeof h&&Array.isArray(h)&&Array.isArray(n.attributes)&&(h=[...new Set([...h,...n.attributes])]):h=Object.assign(h,n.attributes):h=n.attributes),Array.isArray(h)&&(y=h.filter(e=>e.includes(".")),h=h.filter(e=>!e.includes(".")));let g=[];e.query?.extraAttributes&&(g="string"==typeof e.query?.extraAttributes?JSON.parse(e.query?.extraAttributes):e.query?.extraAttributes);let _={};if(n.filter&&(f=Object.assign(f,n.filter)),f.searchStr){const e=function(e){const t=[];for(const a in e.model.rawAttributes)e.model.rawAttributes[a]._fullSearch&&t.push(a);for(const a in e.model.associations)if(e.model.associations[a].options._fullSearch){const s=e.model.associations[a].target.rawAttributes;s.name?t.push(`$${a}.name$`):s.numberStr&&t.push(`$${a}.numberStr$`)}return t}(s);if(e.length>0)if(e.length>1){f[o.Op.or]=[];for(let t of e)f[o.Op.or].push({[t]:{[o.Op.iLike]:`%${f.searchStr}%`}})}else f[e[0]]={[o.Op.iLike]:`%${f.searchStr}%`};delete f.searchStr}f.exclude&&(f.id={[o.Op.and]:f.exclude.map(e=>({[o.Op.ne]:e}))},delete f.exclude),f.advanced&&(b(f.advanced,f,_),delete f.advanced),f.quick&&(b(f.quick,f,_),delete f.quick);for(const e in f)if(e.includes(".")){const t=e.split(".");_[t[0]]?_[t[0]][t[1]]=f[e]:_[t[0]]={[t[1]]:f[e]},delete f[e]}if("document"===s.type&&f.period){const e=f.period[0],t=(0,i.default)(f.period[1]).endOf("day").toISOString();f.date={[o.Op.between]:[e,t]},delete f.period}if("register"===s.type&&f.period){const e=f.period[0],t=f.period[1];f.period={[o.Op.between]:[e,t]}}const S=[];!function(e,t,a){if(Array.isArray(t))for(const s of t)s.sortBy&&a.push(w(e,s));else t?.sortBy&&a.push(w(e,t));e.withoutTimestamps||a.push(["createdAt","DESC"]),a.push(["id","DESC"])}(s,d,S),e.query,p&&(n.withTableParts=p);let v=c.default.prepareIncludes(s.model,n,y,_,null,g);try{let e;if(l.page){let t=l.limit,a=0+(l.page-1)*t;e=await s.model.findAndCountAll({where:f,offset:a,limit:t,attributes:h,order:S,include:v,group:n?.group||null})}else e=await s.model.findAll({where:f,attributes:h,order:S,limit:m,include:v,group:n?.group||null});if(n.resultProcessing&&(e=n.resultProcessing(e)),e)return e=JSON.parse(JSON.stringify(e)),{status:r.StatusCodes.OK,responseData:e};{const e="Items not find";return u.default.error(`Error in ${s.name} findAll controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${s.name} findAll controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findItem(e,t,a,s,n={}){const o=e.params.id;if(!o||"string"!=typeof o||36!==o.length){const e="Object id is not correct!";return u.default.error(`Error in ${s.name} findItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}n.withTableParts=!1;let i={},d=[];if(e.query?.attributes&&(i=e.query.attributes,"string"==typeof i&&(i=JSON.parse(i)),Array.isArray(i)&&(d=i.filter(e=>e.includes(".")),i=i.filter(e=>!e.includes(".")))),n?.attributes&&Array.isArray(n.attributes)){const e=n.attributes.filter(e=>e.includes(".")),t=n.attributes.filter(e=>!e.includes("."));i=Object.assign(i,t),d=Object.assign(d,e)}const f=e.query?.extraAttributes;let m=[];f&&(m="string"==typeof f?JSON.parse(f):f);let p=[],g=d,b=m;for(const e in s.tables)g=g.filter(t=>!t.startsWith(`${e}.`)),b=b.filter(t=>!t.startsWith(`${e}.`));let w=c.default.prepareIncludes(s.model,n,g,null,p,b);try{let t=await s.model.findByPk(o,{include:w,order:p});if(t){t=JSON.parse(JSON.stringify(t));for(const e in s.tables){p=[];let a=d,r=m;a=a.filter(t=>t.startsWith(`${e}.`)),r=r.filter(t=>t.startsWith(`${e}.`));const o=new RegExp(`^${e}\\.`);a=a.map(e=>e.replace(o,"")),r=r.map(e=>e.replace(o,""));const i=c.default.prepareIncludes(s.tables[e].model,n,a,null,p,r);p&&s.tables[e].model.getAttributes().rowNumber&&p.push(["rowNumber","asc"]);const l=await s.tables[e].model.findAll({where:{parentId:t.id},include:i,order:p});t[e]=JSON.parse(JSON.stringify(l))}if(!0===s.configurationData){const a=e.headers["x-client-version"]||"2";await async function(e,t,a,s){if("appObjects"===e.name){delete t.serverModule;const e=`src/modules/${t.type}s/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null,"3"===s?t.moduleV3&&(t.moduleV3=y.default.AES.encrypt(t.moduleV3,a).toString()):t.module&&(t.module=y.default.AES.encrypt(t.module,a).toString()),delete t.info;const n=`src/modules/${t.type}s/${t.name}/object.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("viewSettings"===e.name){const e=await h.default.models.AppObject.findByPk(t.appObjectId);if(t.serverModule=null,t.info=null,"3"===s?t.moduleV3&&(t.moduleV3=y.default.AES.encrypt(t.moduleV3,a).toString()):t.module&&(t.module=y.default.AES.encrypt(t.module,a).toString()),e){const s=`src/modules/${e.type}s/${e.name}/views/${t.name}/server.module.js`;l.default.existsSync(s)&&(t.serverModule=y.default.AES.encrypt(l.default.readFileSync(s,{encoding:"utf8",flag:"r"}),a).toString());const n=`src/modules/${e.type}s/${e.name}/views/${t.name}/view.info.md`;l.default.existsSync(n)&&(t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}))}}else if("reportSettings"===e.name){const e=`src/modules/reports/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const s=`src/modules/reports/${t.name}/report.info.md`;l.default.existsSync(s)?t.info=l.default.readFileSync(s,{encoding:"utf8",flag:"r"}):t.info=null}else if("dataProcessors"===e.name){const e=`src/modules/dataProcessors/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null}else if("scheduledJobs"===e.name){const e=`src/modules/scheduledJobs/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const s=`src/modules/scheduledJobs/${t.name}/job.info.md`;l.default.existsSync(s)?t.info=l.default.readFileSync(s,{encoding:"utf8",flag:"r"}):t.info=null}else if("restApi"===e.name){const e=`src/modules/restApi/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const s=`src/modules/restApi/${t.name}/api.info.md`;l.default.existsSync(s)?t.info=l.default.readFileSync(s,{encoding:"utf8",flag:"r"}):t.info=null}else if("commonModules"===e.name){const e=`src/modules/commonModules/${t.name}.js`;l.default.existsSync(e)?t.module=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.module=null}}(s,t,e.user?.id,a)}return{status:r.StatusCodes.OK,responseData:t}}{const e=`${s.name} with id ${o} not found`;return u.default.error(`Error in ${s.name} findByPk controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${s.name} findByPk controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findOne(e,t,a,s,n={}){const o=e.params.whereCondition;if(!o){const e="Erron in findOne query parameters!";return u.default.error(`Error in ${s.name} findOne controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}n.withTableParts=!0;const i=c.default.prepareIncludes(s.model,n);return await s.model.findOne({where:o,include:i}).then(e=>{if(e)return{status:r.StatusCodes.OK,responseData:e};{const e=`${s.name} not found`;return u.default.error(`Error in ${s.name} findOne controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${s.name} findOne controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async findPredefinedItem(e,t,a,s,n={}){const o=e.params.name;if(!o||"string"!=typeof o){const e="Object predefined name is not correct!";return u.default.error(`Error in ${s.name} findPredefinedItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}n.withTableParts=!0;let i=c.default.prepareIncludes(s.model,n);return await s.model.findOne({where:{predefinedName:o},include:i}).then(e=>{if(e)return{status:r.StatusCodes.OK,responseData:e};{const e=`${s.name} with predefinedName ${o} is not found`;return u.default.error(`Error in ${s.name} findPredefinedItem controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${s.name} findPredefinedItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async createItem(e,t,a,s,o={},i=void 0){const l=o?.objectData?o.objectData:{...e.body};l.id||(l.id=(0,n.v4)()),delete l.presentation;const c=g(s.model,l),f=o.transaction?o.transaction:await s.model.sequelize.transaction();try{"document"===s.type&&await d.default.setNumber(s,l,f);const a=await s.model.create(l,{include:c,transaction:f});return a?(f.afterCommit(()=>{if(!0===s.configurationData){const e={objectId:a.id,event:"create",newValue:a};_(s,l,e),m.default.updateInitialData(s.model,s.path,e)}else Object.prototype.hasOwnProperty.call(s.model.rawAttributes,"predefinedName")&&"catalog"===s.type&&m.default.updatePredefinedInitialData(s);p.default.onChangeHandler(s.model,a.id,"create",e.user?.id)}),i&&"function"==typeof i&&await i(e,t,a,f),o.transaction||await f.commit(),{status:r.StatusCodes.OK,responseData:a}):{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Object is not created"}}}catch(e){return o.transaction||await f.rollback(),u.default.error(`Error in ${s.name} createItem controller`,{meta:`${s.name} is not created. ${e}`}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async updateItem(e,t,a,s,n={},o=void 0){let i="";const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length)return i="Object id is not correct!",u.default.error(`Error in ${s.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:i}};const c=n.objectData?n.objectData:{...e.body};delete c.presentation;const d=n.transaction?n.transaction:await s.model.sequelize.transaction();let f=await s.model.findByPk(l,{transaction:d});if(!f)return n.transaction||await d.rollback(),i=`${s.name} with uuid ${l} not found`,u.default.error(`Error in ${s.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:i}};const h=JSON.parse(JSON.stringify(f));for(const e in s.tables){const t=await s.tables[e].model.findAll({where:{parentId:f.id}});h[e]=JSON.parse(JSON.stringify(t))}try{if(!n.noVersionCheck){if(!c.updatedAt)return i="The data version not defined",u.default.error(`Error in ${s.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:i}};const e=new Date(c.updatedAt);if(f.updatedAt>e)return i="The data version is less than the existing one in the database",u.default.error(`Error in ${s.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:i}}}const a=await f.update(c,{transaction:d});if(!a)return{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Item is not updated"}};const y=g(s.model,c);if(y.length>0){const e=f.id;for(const t of y)if(Object.prototype.hasOwnProperty.call(c,t.as)){let a="parentId";t.fkField&&(a=t.fkField),await t.model.destroy({where:{[a]:e},transaction:d});const s=[];for(const a of c[t.as]){const n={...a};t.fkField||(n.parentId=e),s.push(n)}await t.model.bulkCreate(s,{transaction:d})}}return o&&"function"==typeof o&&await o(e,t,a,h,d),d.afterCommit(()=>{if(!0===s.configurationData){const e={objectId:a.id,event:"update",oldValue:h,newValue:a};_(s,c,e),m.default.updateInitialData(s.model,s.path,e)}else Object.prototype.hasOwnProperty.call(s.model.rawAttributes,"predefinedName")&&"catalog"===s.type&&m.default.updatePredefinedInitialData(s);p.default.onChangeHandler(s.model,l,"update",e.user?.id)}),n.transaction||await d.commit(),{status:r.StatusCodes.OK,responseData:a}}catch(e){return n.transaction||await d.rollback(),u.default.error(`Error in ${s.name} updateItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async confirmItem(e,t,a,s,n={}){const o=e.body.id,i=e.body.isConfirmed,l=s.name,c=n.recordsSet||{},d=n.transaction?n.transaction:await s.model.sequelize.transaction();try{for(const t of Object.keys(c)){const a=e.objects[t];if(a&&s.model.associations[t]){let s=await a.model.findAll({where:{recorderId:o,recorderType:l}});s=JSON.parse(JSON.stringify(s)),await a.model.destroy({where:{recorderId:o,recorderType:l},transaction:d});for(const e of c[t])await a.model.create(e,{transaction:d});await f.default.updateTotals(a,{objects:e.objects,recordsBefore:s,recordsAfter:c[t],recorderId:o,recorderType:l,transaction:d})}}return!1===i&&(await s.model.update({isConfirmed:!0,markedToDelete:!1},{where:{id:e.body.id},transaction:d}),d.afterCommit(()=>{p.default.onChangeHandler(s.model,e.body.id,"confirm",e.user?.id)})),n.transaction||await d.commit(),{status:r.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return n.transaction||await d.rollback(),u.default.error(`Error in ${s.name} confirmItem controller`,{meta:`${s.name} is not confirmed. ${e}`}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async undoConfirmItem(e,t,a,s,n={}){const o=e.body.id,i=s.name,l=n.transaction?n.transaction:await s.model.sequelize.transaction();try{for(const t of Object.keys(s.model.associations))if(s.model.associations[t].options._registerRecords){const a=e.objects?.[t];if(a){let t=await a.model.findAll({where:{recorderId:o,recorderType:i}});t=JSON.parse(JSON.stringify(t));const s=a.model;await s.destroy({where:{recorderId:o,recorderType:i},transaction:l}),await f.default.updateTotals(a,{objects:e.objects,recordsBefore:t,recordsAfter:[],recorderId:o,recorderType:i,transaction:l})}}return await s.model.update({isConfirmed:!1},{where:{id:e.body.id},transaction:l}),l.afterCommit(()=>{p.default.onChangeHandler(s.model,e.body.id,"undoConfirm",e.user?.id)}),n.transaction||await l.commit(),{status:r.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return u.default.error(`Error in ${s.name} undoConfirmItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async deleteItem(e,t,a,s,n={},o){const i=e.params.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${s.name} deleteItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=n.transaction?n.transaction:await s.model.sequelize.transaction(),c=await s.model.findByPk(i);if(!c){n.transaction||await l.rollback();const e=`${s.name} with uuid ${i} not found`;return u.default.error(`Error in ${s.name} deleteItem controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}try{return await c.destroy({where:{id:i},cascade:!0,transaction:l}),l.afterCommit(()=>{!0===s.configurationData?m.default.updateInitialData(s.model,s.path,{objectId:c.id,event:"delete",oldValue:c}):Object.prototype.hasOwnProperty.call(s.model.rawAttributes,"predefinedName")&&"catalog"===s.type&&m.default.updatePredefinedInitialData(s)}),o&&"function"==typeof o&&o(e,t,c,l),n.transaction||await l.commit(),{status:r.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return n.transaction||await l.rollback(),u.default.error(`Error in ${s.name} deleteItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async changeItemDeletionMark(e,t,a,s,n={},o=void 0){const i=e.body.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${s.name} changeDeletionMark controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=n.transaction?n.transaction:await s.model.sequelize.transaction(),c=await s.model.findByPk(i);if(!c){n.transaction||await l.rollback();const e=`${s.name} with uuid ${i} not found`;return u.default.error(`Error in ${s.name} changeDeletionMark controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}const d={markedToDelete:!c.markedToDelete};try{const a=JSON.parse(JSON.stringify(c)),u=await c.update(d,{transaction:l});if(o&&"function"==typeof o&&await o(e,t,u,a,l),l.afterCommit(()=>{!0===s.configurationData?m.default.updateInitialData(s.model,s.path,{objectId:u.id,event:"update",oldValue:a,newValue:u,changeDeletionMark:!0}):Object.prototype.hasOwnProperty.call(s.model.rawAttributes,"predefinedName")&&"catalog"===s.type&&m.default.updatePredefinedInitialData(s),p.default.onChangeHandler(s.model,i,"update",e.user?.id)}),"document"===s.type&&c.isConfirmed){for(const e of Object.keys(s.model.associations))if(s.model.associations[e].options._registerRecords){const t=s.model.associations[e].target;await t.destroy({where:{recorderId:i},transaction:l})}await s.model.update({isConfirmed:!1},{where:{id:i},transaction:l})}return n.transaction||await l.commit(),{status:r.StatusCodes.OK,responseData:u}}catch(e){return n.transaction||await l.rollback(),u.default.error(`Error in ${s.name} changeDeletionMark controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},calculateRegisterTotals:async(e,t,a,s)=>(await f.default.calculateTotals(s,e.objects),{status:r.StatusCodes.OK,responseData:{message:"OK"}})}},4139:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=s(a(6797)),o=n.default.Router();o.get("/",function(e,t,a){t.render("index",{title:"SYNERGY Server"})}),o.use(r.default.isAuthenticated),t.default=o},4469:e=>{e.exports=require("dotenv/config")},4621:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(7138),r=s(a(5788)),o=s(a(2282));function i(e,t,a){switch(t){case"number":e.valueNumber=a;break;case"string":case"text":e.valueString=a;break;case"date":e.valueDate=a;break;case"boolean":e.valueBoolean=a;break;case"object":e.valueRef=a}}t.default={async getSetting(e){const t={value:null,message:"",status:null};if(!e)return t.status=n.StatusCodes.BAD_REQUEST,t.message="Bad incoming parameters.",t;try{const a=await r.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!a)return t.status=n.StatusCodes.BAD_REQUEST,t.message="App setting is not found.",t;const s=await r.default.models.AppSetting.findOne({where:{appSettingItemId:a.id}});if(s)t.value=function(e,t){switch(e){case"number":return t.valueNumber;case"string":case"text":return t.valueString;case"date":return t.valueDate;case"boolean":return t.valueBoolean;case"object":case"enum":return t.valueRef;default:return null}}(a.valueType,s),t.status=n.StatusCodes.OK;else{const e=function(e){switch(e.valueType){case"number":return 0;case"string":case"text":return"";case"date":case"object":case"enum":default:return null;case"boolean":return!1}}(a);t.status=n.StatusCodes.OK,t.value=e}}catch(e){o.default.error("Error in App getSetting controller",{meta:e}),t.status=n.StatusCodes.INTERNAL_SERVER_ERROR,t.message="Internal server error."}return t},async setSetting(e,t){const a={value:null,message:"",status:null};if(!e)return a.status=n.StatusCodes.BAD_REQUEST,a.message="Bad incoming parameters.",a;try{const s=await r.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!s)return a.status=n.StatusCodes.BAD_REQUEST,a.message="App setting is not found.",a;const o=await r.default.models.AppSetting.findOne({where:{appSettingItemId:s.id}});if(o){const e={};i(e,s.valueType,t);const r=await o.update(e);a.status=n.StatusCodes.OK,a.value=r}else{const e={appSettingItemId:s.id};i(e,s.valueType,t);const o=await r.default.models.AppSetting.create(e);a.status=n.StatusCodes.OK,a.value=o}}catch(e){o.default.error("Error in App setSetting controller",{meta:e}),a.status=n.StatusCodes.INTERNAL_SERVER_ERROR,a.message="Internal server error."}return a}}},4716:e=>{e.exports=require("moment")},5124:e=>{e.exports=require("winston")},5379:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(9031),r=s(a(5788)),o=s(a(9896));t.default={async initSubscriptions(e){const t=`\n SELECT\n event_subscriptions.id AS "id",\n event_subscriptions.name AS "name",\n event_subscriptions."execSide" AS "execSide",\n event_subscriptions."objectType" AS "objectType",\n event_subscriptions.event AS "event",\n event_subscriptions."serviceFunction" AS "serviceFunctionPath",\n subscription_objects."objectId" AS "objectId"\n FROM \n event_subscriptions\n LEFT JOIN \n event_subscriptions_event_objects as "subscription_objects"\n ON \n subscription_objects."parentId" = event_subscriptions.id \n WHERE\n event_subscriptions."markedToDelete" = false\n AND event_subscriptions."execSide" = '${e}'`;try{const a=(await r.default.query(t,{type:n.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({name:t.name,execSide:t.execSide,objectType:t.objectType,event:t.event,serviceFunctionPath:t.serviceFunctionPath,objects:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[]);if("server"===e)for(const e of a)if(e.serviceFunctionPath){const t=e.serviceFunctionPath.split(".");if(2!==t.length){e.serviceFunction=void 0;continue}const a=t[0],s=t[1],n=`${process.cwd()}/src/modules/commonModules/${a}.js`;let r;o.default.existsSync(n)&&(r=require(n),r?.[s]&&(e.serviceFunction=r[s]))}return a}catch(e){return console.error(e),[]}},getSubscription:(e,t,a,s)=>e.find(e=>e.event===t&&e.objectType===a&&(0===e.objects.length||e.objects.includes(s)))}},5483:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=s(a(1688)),o=s(a(3786)),i=s(a(6224)),l=n.default.Router();function u(e={httpMethod:"GET"},t){let a;const s={};return e.userRole?s.id=e.userRole:t.accessRoleId?s.id=t.accessRoleId:s.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?r.default.canRead(s):"CAN_MODIFY"===e.accessLevel?r.default.canModify(s):"IS_AUTH"===e.accessLevel?r.default.isAuth:r.default.isFullRights:!0===t.system?"GET"===e.httpMethod?r.default.isAuth:r.default.isFullRights:"GET"===e.httpMethod?r.default.canRead(s):r.default.canModify(s),a}t.default=async()=>{const e=await(0,i.default)();for(const t of Object.values(e)){if(t.api)for(const e of t.api)e.controller?t.controllers[e.controller]?l[e.httpMethod.toLowerCase()](`/${t.path}/${e.path}`,u(e,t),(e,t,a)=>{const s=e.headers["content-type"];if(s&&s.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.controllers[e.controller]):console.error("API controller is not exist: ",t.name,e.controller):console.error("API controller is not set for object: ",t.name,e);"register"===t.type&&(t.accumulationRegister&&l.post(`/${t.path}/calculate_totals`,u(t.staticAPI.calculateTotals||{httpMethod:"POST"},t),t.calculateTotals),"dataProcessors"===t.name&&(l.post(`/${t.path}/execute_processing`,u(t.staticAPI.executeProcessing||{httpMethod:"POST"},t),t.executeProcessing),l.get(`/${t.path}/export/:id`,u(t.staticAPI.exportProcessor||{httpMethod:"POST"},t),t.exportProcessor),l.post(`/${t.path}/import`,u(t.staticAPI.importProcessor||{httpMethod:"POST"},t),(e,t,a)=>{const s=e.headers["content-type"];if(s&&s.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.importProcessor))),"catalog"===t.type&&("appObjects"===t.name?(l.post(`/${t.path}/execute_migration`,u(t.staticAPI.executeMigration||{httpMethod:"POST"},t),t.executeMigration),l.post(`/${t.path}/exist_migrations`,u(t.staticAPI.existMigrations||{httpMethod:"POST"},t),t.existMigrations)):"scheduledJobs"===t.name&&l.post(`/${t.path}/execute_manually`,u(t.staticAPI.executeManually||{httpMethod:"POST"},t),t.executeManually)),!0!==t.staticAPI.findAll?.disabled&&l.get(`/${t.path}`,u(t.staticAPI.findAll||{httpMethod:"GET"},t),t.findAll),!0!==t.staticAPI.findById?.disabled&&l.get(`/${t.path}/:id`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findById),!0!==t.staticAPI.create?.disabled&&l.post(`/${t.path}`,u(t.staticAPI.create||{httpMethod:"POST"},t),(e,t,a)=>{const s=e.headers["content-type"];if(s&&s.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.create),!0!==t.staticAPI.update?.disabled&&l.put(`/${t.path}/:id`,u(t.staticAPI.update||{httpMethod:"PUT"},t),t.update),!0!==t.staticAPI.delete?.disabled&&l.delete(`/${t.path}/:id`,u(t.staticAPI.delete||{httpMethod:"DELETE"},t),t.delete),"catalog"===t.type&&l.get(`/${t.path}/predefined/:name`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findPredefined),"catalog"!==t.type&&"document"!==t.type||!0===t.staticAPI.changeDeletionMark?.disabled||l.post(`/${t.path}/change_deletion_mark`,u(t.staticAPI.changeDeletionMark||{httpMethod:"POST"},t),t.changeDeletionMark),"document"===t.type&&(!0!==t.staticAPI.confirm?.disabled&&l.put(`/${t.path}/confirm/:id`,u(t.staticAPI.confirm||{httpMethod:"PUT"},t),t.confirm),!0!==t.staticAPI.undoConfirm?.disabled&&l.put(`/${t.path}/undo_confirm/:id`,u(t.staticAPI.undoConfirm||{httpMethod:"PUT"},t),t.undoConfirm))}return{router:l,objects:e}}},5486:e=>{e.exports=require("bcrypt")},5560:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(5483)),r=s(a(360));t.default=async e=>{const{router:t,objects:a}=await(0,n.default)();e.use((e,t,s)=>{e.objects=a,s()}),e.locals.objects=a,e.use(t);const s=await r.default.initRoutes();return e.use(s),{router:t,objects:a}}},5788:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(9031),r=a(3903),o=s(a(6788)),i=new n.Sequelize(o.default.dbName,o.default.dbUser,o.default.dbPassword,{dialect:o.default.dbDialect,host:o.default.dbHost,port:o.default.dbPort,logging:!1,pool:{max:150},define:{hooks:{beforeValidate:(e,t)=>{null===e.dataValues.id&&(e.dataValues.id=(0,r.v4)())}}}});t.default=i},5977:e=>{e.exports=require("express-session")},6224:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7173)),r=s(a(3958)),o=s(a(2562)),i=s(a(3464)),l=s(a(6910)),u=s(a(5379)),c=s(a(6836)),d=s(a(9896)),f=a(7138),m=s(a(2282));function p(e,t,a){if(t.fields.find(e=>!0===e.password)){const s=a.objectData?a.objectData:{...e.body};for(const e of t.fields.filter(e=>!0===e.password))if(""===s[e.name])s[e.name]=null;else if(s[e.name])if(e.decryptable){const t=c.default.encrypt(s[e.name]);s[e.name]=JSON.stringify(t)}else s[e.name]=c.default.createPasswordHash(s[e.name]);a.objectData=s}}t.default=async()=>{const e=await(0,n.default)(),t=await u.default.initSubscriptions("server");for(const a in e){let s;const n=`${e[a].type}s/${a}/server.module.js`,c=`${process.cwd()}/src/modules/${n}`;if(d.default.existsSync(c)&&(s=require(c)),e[a].findAll=async(n,o,i)=>{let l=null;if(s?.findAll)l=await s.findAll(n,o,i,e[a]);else{const c={};s?.beforeFindAll&&await s.beforeFindAll(n,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindAll",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[a],c)),l=await r.default.findAllItems(n,o,i,e[a],c),s?.afterFindAll&&await s.afterFindAll(n,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindAll",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(n,o,i,e[a],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${a} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[a].findById=async(n,o,i)=>{let l=null;if(s?.findById)l=await s.findById(n,o,i,e[a]);else{const c={};s?.beforeFindById&&await s.beforeFindById(n,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindById",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[a],c)),l=await r.default.findItem(n,o,i,e[a],c),s?.afterFindById&&await s.afterFindById(n,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindById",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(n,o,i,e[a],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${a} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[a].create=async(n,o,i)=>{if(s?.create)return await s.create(n,o,i,e[a]);{const l=n.transaction?n.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{s?.beforeCreate&&"function"==typeof s?.beforeCreate&&await s.beforeCreate(n,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeCreate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[a],c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(n,r,o,l)=>{s?.afterCreate&&"function"==typeof s?.afterCreate&&await s.afterCreate(n,r,i,e[a],{newItem:o,transaction:l});const c=u.default.getSubscription(t,"afterCreate",e[a].type,e[a].id);c?.serviceFunction&&await(c?.serviceFunction(n,r,i,e[a],{newItem:o,transaction:l}))};p(n,e[a],c);const h=await r.default.createItem(n,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return n.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==n.body?.isConfirmed)return n.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};s?.beforeConfirm&&"function"==typeof s?.beforeConfirm&&await s.beforeConfirm(n,o,i,e[a],y,c);const g=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(g?.serviceFunction&&await(g?.serviceFunction(n,o,i,e[a],y,c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await r.default.confirmItem(n,o,i,e[a],{recordsSet:y,...c});s?.afterConfirm&&"function"==typeof s?.afterConfirm&&await s.afterConfirm(n,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(n,o,i,e[a],c)),b.status===f.StatusCodes.OK?(n.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(n.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[a].update=async(n,o,i)=>{if(s?.update)return await s.update(n,o,i,e[a]);{const l=n.transaction?n.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{s?.beforeUpdate&&"function"==typeof s?.beforeUpdate&&await s.beforeUpdate(n,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[a],c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(n,r,o,l,c)=>{s?.afterUpdate&&"function"==typeof s?.afterUpdate&&await s.afterUpdate(n,r,i,e[a],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1});const d=u.default.getSubscription(t,"afterUpdate",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(n,r,i,e[a],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1}))};p(n,e[a],c);const h=await r.default.updateItem(n,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return n.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==n.body?.isConfirmed)return n.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};s?.beforeConfirm&&"function"==typeof s?.beforeConfirm&&await s.beforeConfirm(n,o,i,e[a],y,c);const g=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(g?.serviceFunction&&await(g?.serviceFunction(n,o,i,e[a],y,c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await r.default.confirmItem(n,o,i,e[a],{recordsSet:y,...c});s?.afterConfirm&&"function"==typeof s?.afterConfirm&&await s.afterConfirm(n,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(n,o,i,e[a],c)),b.status===f.StatusCodes.OK?(n.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(n.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[a].delete=async(n,o,i)=>{if(s?.delete)return await s.delete(n,o,i,e[a]);{const l=n.transaction?n.transaction:await e[a].model.sequelize.transaction(),c={transaction:l};try{s?.beforeDelete&&"function"==typeof s?.beforeDelete&&await s.beforeDelete(n,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[a],c));const m=async(n,r,o,l)=>{s?.afterDelete&&"function"==typeof s?.afterDelete&&s.afterDelete(n,r,i,e[a],{deletedObject:o,...c});const d=u.default.getSubscription(t,"afterDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(n,r,i,e[a],{deletedObject:o,...c}))},p=await r.default.deleteItem(n,o,i,e[a],c,m);return n.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},"catalog"===e[a].type&&(e[a].findPredefined=async(t,s,n)=>{const o=await r.default.findPredefinedItem(t,s,n,e[a]);return s?s.status(o.status).send(o.responseData):o}),"catalog"!==e[a].type&&"document"!==e[a].type||(e[a].changeDeletionMark=async(n,o,i)=>{const l=n.transaction?n.transaction:await e[a].model.sequelize.transaction(),c={transaction:l,changeDeletionMark:!0};try{s?.beforeUpdate&&"function"==typeof s?.beforeUpdate&&await s.beforeUpdate(n,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[a],c));const m=async(n,r,o,l,d)=>{s?.afterUpdate&&"function"==typeof s?.afterUpdate&&await s.afterUpdate(n,r,i,e[a],{updatedObject:o,existObject:l,...c});const f=u.default.getSubscription(t,"afterUpdate",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(n,r,i,e[a],{updatedObject:o,existObject:l,...c}))},p=await r.default.changeItemDeletionMark(n,o,i,e[a],c,m);return n.transaction||(p?.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),"register"===e[a].type&&(e[a].accumulationRegister&&(e[a].calculateTotals=async(t,s,n)=>{const o=await r.default.calculateRegisterTotals(t,s,n,e[a]);return s?s.status(o.status).send(o.responseData):o}),"dataProcessors"===a&&(e[a].executeProcessing=async(t,s,n)=>{const r=await o.default.executeProcessing(t,s,n,e[a]);return s?s.status(r.status).send(r.responseData):r},e[a].exportProcessor=async(t,s,n)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.exportProcessor(t,s,n,e[a])},e[a].importProcessor=async(t,s,n)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.importProcessor(t,s,n,e[a])})),"catalog"===e[a].type&&("appObjects"===a?(e[a].executeMigration=async(t,s,n)=>{try{const r=await l.default.executeMigrations(t,s,n,e[a]);return s?s.status(r.status).send(r.responseData):r}catch(e){return m.default.error("Error in executeMigration controller",{meta:e}),s.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}},e[a].existMigrations=async(t,s,n)=>{try{const r=await l.default.existMigrations(t,s,n,e[a]);return s?s.status(r.status).send(r.responseData):r}catch(e){return m.default.error("Error in existMigrations controller",{meta:e}),s.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}}):"scheduledJobs"===a&&(e[a].executeManually=async(t,s,n)=>{const r=await i.default.executeManually(t,s,n,e[a]);return s?s.status(r.status).send(r.responseData):r})),"document"===e[a].type&&(e[a].confirm=async(n,o,i)=>{const l=n.transaction?n.transaction:await e[a].model.sequelize.transaction(),c={},d={cancel:!1,transaction:l};try{const m=await e[a].findById({params:{id:n.body.id}});m.status===f.StatusCodes.OK&&(n.body=JSON.parse(JSON.stringify(m.responseData))),s?.beforeConfirm&&"function"==typeof s?.beforeConfirm&&await s.beforeConfirm(n,o,i,e[a],c,d);const p=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(p?.serviceFunction&&await(p?.serviceFunction(n,o,i,e[a],c,d)),d.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:d.message?d.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const h=await r.default.confirmItem(n,o,i,e[a],{recordsSet:c,...d});s?.afterConfirm&&"function"==typeof s?.afterConfirm&&await s.afterConfirm(n,o,i,e[a],d);const y=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return y?.serviceFunction&&await(y?.serviceFunction(n,o,i,e[a],d)),n.transaction||(h.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(h.status).send(h.responseData):h}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}},e[a].undoConfirm=async(n,o,i)=>{const l=n.transaction?n.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{const d=await e[a].findById({params:{id:n.body.id}});d.status===f.StatusCodes.OK&&(n.body=JSON.parse(JSON.stringify(d.responseData))),s?.undoConfirm&&"function"==typeof s?.undoConfirm&&await s.undoConfirm(n,o,i,e[a],c);const m=u.default.getSubscription(t,"undoConfirm",e[a].type,e[a].id);if(m?.serviceFunction&&await(m?.serviceFunction(n,o,i,e[a],c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const p=await r.default.undoConfirmItem(n,o,i,e[a],c);return n.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),e[a].api&&s)for(const t of e[a].api)s[t.controller]&&(e[a].controllers[t.controller]=async(n,r,o)=>{s[t.controller](n,r,o,e[a])})}return e}},6261:e=>{e.exports=require("events")},6299:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(9031),r=s(a(2282)),o=s(a(4716)),i=a(3903);function l(e,t,a){for(const t of e){for(const e of a)t[e]="expense"===t.recordType?-1*parseFloat(t[e]):parseFloat(t[e]);t.period=u(t.period)}return function(e,t,a){const s={};return e.forEach(e=>{const n=t.map(t=>e[t]).join("|");s[n]||(s[n]={},t.forEach(t=>{s[n][t]=void 0===e[t]?null:e[t]}),a.forEach(e=>{s[n][e]=0})),a.forEach(t=>{s[n][t]+=e[t]})}),Object.values(s)}(e,t,a)}function u(e){return(0,o.default)(e).add(1,"months").startOf("month").toDate()}t.default={async updateTotals(e,t){if(!e.accumulationRegister)return;const a=e.accTable;if(a){const s=await this.getCalculatedPeriod(t.objects.registersCalculation,e.id);if(!s)return;const u=a.dimensions.map(e=>e.dbName);u.push("period");const c=a.resources.map(e=>e.dbName);let d=[];t.recordsBefore.length>0&&(d=l(JSON.parse(JSON.stringify(t.recordsBefore)),u,c));let f=[];t.recordsAfter.length>0&&(f=l(JSON.parse(JSON.stringify(t.recordsAfter)),u,c));const m=function(e,t,a,s){const n={};return e.forEach(e=>{const t=a.map(t=>e[t]).join("|");n[t]||(n[t]={},a.forEach(a=>{n[t][a]=e[a]}),s.forEach(e=>{n[t][e]=0})),s.forEach(a=>{n[t][a]-=parseFloat(e[a])})}),t.forEach(e=>{const t=a.map(t=>e[t]).join("|");n[t]||(n[t]={},a.forEach(a=>{n[t][a]=e[a]}),s.forEach(e=>{n[t][e]=0})),s.forEach(a=>{n[t][a]+=parseFloat(e[a])})}),Object.values(n).filter(e=>s.some(t=>0!==e[t]))}(d,f,u,c);await async function(e,t,a,s,r,l){for(const u of t){const t=[];for(let e=(0,o.default)(r.beginPeriod);e.isSameOrBefore(r.endPeriod,"month");e.add(1,"month"))e.isSameOrAfter(u.period)&&t.push(e.toDate());for(let r of t){let t={};if(a.forEach(e=>{t[e]="period"===e?r:u[e]}),await e.findOne({where:t,transaction:l})){let a={};s.forEach(e=>{a[e]=n.Sequelize.literal(`${e} + ${u[e]}`)}),await e.update(a,{where:t,transaction:l})}else{let t={id:(0,i.v4)()};a.forEach(e=>{t[e]="period"===e?r:u[e]}),s.forEach(e=>{t[e]=u[e]}),await e.create(t,{transaction:l})}}}}(a.model,m,u,c,s,t.transaction).catch(e=>{r.default.error(`Error updating records for register: ${a.name}`,{meta:e})})}},async calculateTotals(e,t){if(!e.accumulationRegister)return;const a=e.accTable;if(a){const s="period",n=a.dimensions.map(e=>e.dbName),r=a.resources.map(e=>e.dbName),l=await e.model.findAll();if(0===l.length)return void await a.model.truncate();const u=l.map(e=>{const t={};return n.forEach(a=>{t[a]=e[a]}),t[s]=(0,o.default)(e[s]).add(1,"month").startOf("month").toDate(),r.forEach(a=>{t[a]="receipt"===e.recordType?parseFloat(e[a]):-parseFloat(e[a])}),t}),c=[...new Set(u.map(e=>e[s]))].sort((e,t)=>e-t)[0],d=(0,o.default)().add(1,"month").startOf("month").toDate();let f={};await a.model.truncate();const m=await a.model.sequelize.transaction();for(let e=(0,o.default)(c);e.isSameOrBefore(d,"month");e.add(1,"month")){const t=e.toDate(),l={};u.forEach(a=>{if((0,o.default)(a[s]).isSame(e,"month")){const e=n.map(e=>a[e]).join("_");l[e]?r.forEach(t=>{l[e][t]+=a[t]}):l[e]={...a,period:t,id:(0,i.v4)()}}}),Object.keys(f).length>0&&Object.keys(f).forEach(e=>{l[e]?r.forEach(t=>{l[e][t]+=parseFloat(f[e][t])}):l[e]={...f[e],period:t,id:(0,i.v4)()}});const c=Object.values(l).map(e=>(r.forEach(t=>{e[t]=e[t].toString()}),e));f=JSON.parse(JSON.stringify(l)),await a.model.bulkCreate(c,{ignoreDuplicates:!0,transaction:m})}await this.updateCalculatedPeriod(t.registersCalculation,{registerId:e.id,beginPeriod:c,endPeriod:d},m),await m.commit()}},getCalculatedPeriod:async(e,t)=>await e.model.findOne({where:{registerId:t}}),async updateCalculatedPeriod(e,t,a){const s=await e.model.findOne({where:{registerId:t.registerId},transaction:a});s?await s.update({beginPeriod:t.beginPeriod,endPeriod:t.endPeriod},{where:{registerId:t.registerId},transaction:a}):await e.model.create({id:(0,i.v4)(),...t},{transaction:a})}}},6304:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const dbConnection_1=__importDefault(__webpack_require__(5788)),sequelize_1=__webpack_require__(9031),http_status_codes_1=__webpack_require__(7138),node_sql_parser_1=__webpack_require__(7135),logger_service_1=__importDefault(__webpack_require__(2282)),sequelize_2=__webpack_require__(9031),fs_1=__importDefault(__webpack_require__(9896)),fs_2=__webpack_require__(9896),path_1=__importDefault(__webpack_require__(6928)),crypto_js_1=__importDefault(__webpack_require__(2103)),terser_1=__webpack_require__(9239),eventSubscription_service_1=__importDefault(__webpack_require__(5379)),commonCommands_service_1=__importDefault(__webpack_require__(7501)),packagePath=path_1.default.resolve(process.cwd(),"package.json");if(!fs_1.default.existsSync(packagePath))throw new Error(`native package.json not found at ${packagePath}`);const serverPackage=require(packagePath),app_service_1=__importDefault(__webpack_require__(4621)),common_service_1=__importDefault(__webpack_require__(2555)),userAccess_service_1=__importDefault(__webpack_require__(1691));async function getSubordinationTree(e,t){const a=[];let s=await getParentObjectsArray(e,t);const n=await getRelated(e,t);if(s.length>1&&1===s[s.length-1].length&&s.pop(),n.parents.length>0){1===s.length&&1===s[0].length&&(s=n.parents);for(const e of n.parents)s.push(e)}async function r(e,t){const a=e.subordination.filter(e=>!e.isParent),s={objectId:t.id,objectType:e.name,text:t.presentation,markedToDelete:t.markedToDelete,icon:!0===t.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]};for(const e of a)if(e.isTablePart){const a=await dbConnection_1.default.models[e.model].findAll({where:{parentId:t.id}}),n=e.childs.filter(e=>!e.isParent&&e.isActive);for(const e of n)for(const t of a){const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),n=t[e.path];if(n&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:n}});e&&s.children.push(await r(a,e))}}}else{const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),n=t[e.path];if(n&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:n}});e&&s.children.push(await r(a,e))}}return s}const o=await r(e,t);if(o.disabled=!0,n.children.length>0)for(const e of n.children)o.children.push(await r(e.appObject,e.object));for(const e of s){let t=null,s={};if(e.length>1)for(let a=e.length-2;a>=0;a--)s={objectId:e[a].object.id,objectType:e[a].objectType,text:e[a].object.presentation,markedToDelete:e[a].object.markedToDelete,icon:!0===e[a].object.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]},t?(s.children.push(t),t=s):(s.children.push(o),t=s);else t=o;t&&a.push(t)}return a}async function getParentObjectsArray(e,t){let a=[];await async function e(t,s,n=[]){const r=[{object:s,objectType:t.name},...n],o=t.subordination.filter(e=>e.isParent);if(o.length>0){for(const t of o)if(t.isParent)if(t.isTablePart){const e=await dbConnection_1.default.models[t.model].findAll({where:{parentId:s.id}}),a=t.childs.filter(e=>!e.isParent&&e.isActive);for(const t of a)for(const a of e){const e=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),s=a[t.path];if(s&&e){const t=await dbConnection_1.default.models[e.model].findOne({where:{id:s}});t&&t.children.push(await this.createChildObjectTree(e,t))}}}else{const s=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),n=r[0].object[t.path];if(n&&s){const t=await dbConnection_1.default.models[s.model].findOne({where:{id:n}});t&&await e(s,t,r)}else a.push(r)}}else a.push(r)}(e,t);for(let e=0;e<a.length;e++){const t=a[e],s=a.filter(e=>e[0]===t[0]);s.length>1&&a.splice(e+1,s.length-1)}return a}async function getRelated(e,t){const a=await dbConnection_1.default.models.AppObject.findAll({where:{subordination:{[sequelize_2.Op.not]:null,[sequelize_2.Op.ne]:"[]"},model:{[sequelize_2.Op.ne]:e.model}}});let s,n,r={parents:[],children:[]};if(a.length>0)for(const o of a){s=o,n=[];let a=!1;for(const s of o.subordination)if(s.isTablePart){for(const r of s.childs)if(r.model===e.model&&(n=await dbConnection_1.default.models[o.model].findAll({where:{[r.path]:t.id}}),n.length>0)){a=r.isParent;break}if(n.length>0)break}else if(s.model===e.model&&(n=await dbConnection_1.default.models[o.model].findAll({where:{[s.path]:t.id}}),n.length>0)){a=s.isParent;break}if(n.length>0)for(const o of n)if(a)r.children.push({appObject:s,object:o});else{const a=await getParentObjectsArray(s,o);for(const s of a)s.push({object:t,objectType:e.name}),r.parents.push(s)}}return r}function getModelsByTableNames(e){const t=[];for(const a of e){let e=dbConnection_1.default.modelManager.models.find(e=>e.tableName===a);if(!e)throw new Error(`Table "${a}" not found!`);t.push({tableName:a,model:e.name})}return t}function assembleAttrib(e,t){let a={name:t,type:e.type.key,allowNull:e.allowNull,defaultValue:e.defaultValue};return"STRING"===a.type&&(a.maxLength=e.type.options?.length||null),"DECIMAL"===a.type&&(a.typeOptions=e.type.options||null),"ENUM"===a.type&&(a.values=e.values,a.ref=e._ref),"VIRTUAL"===a.type&&(e._sortBy?a.sortBy=e._sortBy:a.sortBy="createdAt"),a}async function hasModelAccess(e,t){t.user;const a=await dbConnection_1.default.models.AppObject.findAll({where:{model:e.map(e=>e.model)},attributes:["model","name","accessRoleId"]});for(const t of e){const e=a.find(e=>e.model===t.model);if(!e)throw new Error(`App object for table "${t.tableName}" is not exist.`);if(!e.accessRoleId)throw new Error(`Access role for app object "${e.name}" is not set.`);t.objectName=e.name,t.accessRoleId=e.accessRoleId}return e.map(e=>e.accessRoleId),!0}async function initObjectClientModule(e,t){if(!e)return e;const a=`function main() { return ${e.replace(/^\s*export\s+default\s+/,"")}}`,s=await(0,terser_1.minify)(a);return crypto_js_1.default.AES.encrypt(s.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),t).toString()}exports.default={async getAppInfo(e,t,a){const s={appName:"SynergyCore",company:"INTELEKTSOFT",serverVersion:serverPackage?.version||"0.0.0"};t.status(200).send(s)},async getObjectMetadata(e,t,a){const{objectType:s,tableName:n}=e.query,r=JSON.parse(e.query.withTableParts||"false");let o;if(s?o=dbConnection_1.default.models[s]:Object.keys(dbConnection_1.default.models).forEach(e=>{dbConnection_1.default.models[e].getTableName()===n&&(o=dbConnection_1.default.models[e])}),!o)return console.error("Model not found: ",s),void t.status(400).send({message:"Model not found"});let i=[],l=[],u=[];Object.keys(o.associations).forEach(e=>{const t=o.associations[e];if(!0===t.isMultiAssociation)return;const a={name:e,foreignKey:t.foreignKey,ref:"",modelName:t.target.name};if(Object.prototype.hasOwnProperty.call(t.target,"options"))if(t.target.options.namespace)a.ref=t.target.options.namespace;else{const e=t.target.options.name.plural;a.ref=e.charAt(0).toLowerCase()+e.slice(1)}const s=t.target.rawAttributes;s.presentation?._sortBy?a.sortBy=s.presentation._sortBy:a.sortBy="createdAt",!1===t.options.constraints?u.push(a):l.push(a)});const c=[];for(let e in o.getAttributes()){if(c.includes(e))continue;let t,a=assembleAttrib(o.getAttributes()[e],e);if(t=l.find(t=>t.foreignKey===e),t||(t=u.filter(t=>t.foreignKey===e),0===t.length&&(t=void 0)),t){if(Array.isArray(t)){const s=e.endsWith("Id")?e.slice(0,-2):e,n=s+"Type";let r=i.find(e=>e.name===n);if(r){const e=i.findIndex(e=>e===r);i.splice(e,1)}else c.push(n);for(const r of t){const t=i.findIndex(e=>e.name===s);-1!==t?(i[t].ref.push(r.ref),i[t].model.push(r.modelName)):(a.name=s,a.ref=[r.ref],a.model=[r.modelName],a.fieldPath=e,a.fieldTypePath=n,a.multiType=!0,a.sortBy=r.sortBy,i.push(a))}continue}a.name=t.name,a.ref=t.ref,a.model=t.modelName,a.fieldPath=e,a.sortBy=t.sortBy}i.push(a)}if(r)for(const e in o.associations){const t=o.associations[e];if(!0===t.isMultiAssociation){if(t.options._noTablePart)continue;let a={name:e,type:"tablePart",model:o.associations[e].target?.name};i.push(a)}}t.status(200).send(i)},async getObjectFields(e,t,a){const{objectName:s}=e.query,n=JSON.parse(e.query.withTableParts||"false"),r=await dbConnection_1.default.models.AppObject.findOne({where:{name:s}});if(!r)return void t.status(404).send({message:"Object not found"});let o=r.dbFields;o&&!n&&(o=o.filter(e=>!e.isTablePart)),t.status(200).send(o)},async getSubordination(e,t,a){const{objectType:s,objectId:n}=e.query,r=await dbConnection_1.default.models.AppObject.findOne({where:{model:s}});if(!r)return void t.status(400).send({message:"Model not found"});const o=await dbConnection_1.default.models[r.model].findOne({where:{id:n}});if(!o)return void t.status(400).send({message:"Object not found"});const i=await getSubordinationTree(r,o);t.status(200).send(i)},async getObjects(e,t,a){let s=[];Object.keys(dbConnection_1.default.models).forEach(e=>{const t=dbConnection_1.default.models[e];t.options.mainModel&&s.push({model:e,name:t.options.name,tableName:t.getTableName()})}),s.sort((e,t)=>e.model.toLowerCase()>t.model.toLowerCase()?1:-1),t.status(200).send(s)},async getModels(e,t,a){let s=[];Object.keys(dbConnection_1.default.models).forEach(e=>{let t=dbConnection_1.default.models[e].getTableName();s.push({model:e,tableName:t,name:dbConnection_1.default.models[e].options.name})}),t.status(200).send(s)},async getRegistersMetadata(e,t,a){const{modelName:s}=e.query;let n;if(s&&(n=dbConnection_1.default.models[s]),!n)return console.error("Model not found: ",s),void t.status(400).send({message:"Model not found"});const r=[];Object.keys(n.associations).forEach(e=>{const t=n.associations[e];if(t.options._registerRecords){const e=t.target,a=e.options.namespace?e.options.namespace:e.options.name.plural.charAt(0).toLowerCase()+e.options.name.plural.slice(1),s=Object.keys(e.rawAttributes).map(t=>e.rawAttributes[t]),n={name:a,fields:s};r.push(n)}}),t.status(200).send(r)},async getSetting(e,t,a){const s=e.query.settingName,n=await app_service_1.default.getSetting(s);n?n.status===http_status_codes_1.StatusCodes.OK?t.status(n.status).send(n.value):t.status(n.status).send({message:n.message}):t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Bad incoming parameters"})},async setSetting(e,t,a){const{settingName:s,settingValue:n}=e.body,r=await app_service_1.default.setSetting(s,n);r.status===http_status_codes_1.StatusCodes.OK?t.status(r.status).send(r.value):t.status(r.status).send({message:r.message})},async getEnums(e,t,a){const s=e.query.lang;try{const e=[];let a=await dbConnection_1.default.models.Enum.findAll({include:[{model:dbConnection_1.default.models.EnumValue,as:"values"}],order:["name"]});for(const t of a)e.push({id:t.id,name:t.name,title:common_service_1.default.translateField(t,"title",s),values:t.values.map(e=>({value:e.value,title:common_service_1.default.translateField(e,"title",s)}))});t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEnums controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getAppObjects(e,t,a){const s=e.query.lang;try{const e=[];let a=await dbConnection_1.default.models.AppObject.findAll({attributes:["id","name","lang","title","path","type","reflection"],order:["name"]});for(const t of a){let a="createdAt";t.reflection?.sortBy?a=t.reflection?.sortBy:"catalog"===t.type?a="name":"document"===t.type&&(a="numberStr"),e.push({id:t.id,name:t.name,path:t.path,type:t.type,title:common_service_1.default.translateField(t,"title",s),sortBy:a})}t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getCommonModules(e,t,a){if(e.user)try{const a={};let s=await dbConnection_1.default.models.CommonModule.findAll({where:{[sequelize_2.Op.not]:{[sequelize_2.Op.and]:[{execSide:"server"},{clientCall:!1}]}},attributes:["name","execSide","clientCall"],order:["name"]});for(const e of s){const t=`commonModules/${e.name}.js`;let s=null;const n=`${process.cwd()}/src/modules/${t}`;let r="";if("client"===e.execSide){if(!fs_1.default.existsSync(n)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}if(s=await fs_2.promises.readFile(n,"utf-8"),s){const e=/^\s*export\s+(?:async\s+)?function\s+([a-zA-Z0-9_]+)\s*\([^)]*\)\s*{[^}]*}/gm;let t;const a=[];let n=s;for(;null!==(t=e.exec(s));)a.push(t[1]),n=n.replace(t[0],t[0].replace("export ",""));r=`function main() {${n.trim()} return{${a.join(",\n ")}}}`}else r="function main() {return {}}"}else{if(!fs_1.default.existsSync(n)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}s=require(n);let t="";if(s){const e=Object.keys(s).filter(e=>"function"==typeof s[e]);for(const a of e)t+=`\nasync function ${a}(params){ \n const response = await axios.post('/app/exec-common-module',{funcPath:'commonUseServer.${a}', params})\n return response?.data || undefined\n }`;t+=`\n return {${e.join(",\n ")}}`}r=`function main() {${""===t?"return {}":t}}`}const o=await(0,terser_1.minify)(r);a[e.name]=o.code.replace(/^function main\(\)/,"")}const n=crypto_js_1.default.AES.encrypt(JSON.stringify(a),e.user.id).toString();t.status(http_status_codes_1.StatusCodes.OK).send(n)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getEventSubscriptions(e,t,a){if(e.user)try{const e=await eventSubscription_service_1.default.initSubscriptions("client");t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEventSubscriptions controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getCommonCommands(e,t,a){if(e.user)try{const a=await commonCommands_service_1.default.initCommonCommands(e.user.id);t.status(http_status_codes_1.StatusCodes.OK).send(a)}catch(e){logger_service_1.default.error("Error in app getCommonCommands controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getViewSettings(e,t,a){if(!e.user)return void t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"});const s=e.params.id;let n="";if(!s||"string"!=typeof s||36!==s.length)return n="View settings id is not correct!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:n}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:n});try{let a=await dbConnection_1.default.models.ViewSetting.findByPk(s,{include:[{model:dbConnection_1.default.models.AppObject,attributes:["name","title","presentation","type"],as:"appObject"}]});if(!a)return n="View settings not found!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:n}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:n});const r=JSON.parse(JSON.stringify(a)),o=`${process.cwd()}/src/modules/${r.appObject.type}s/${r.appObject.name}/views/${r.name}/server.module.js`;if(fs_1.default.existsSync(o)){const t=require(o);if(t){const a=Object.keys(t).filter(e=>"function"==typeof t[e]);let s="";for(const e of a)s+=`\nasync function ${e}(params){ \n const response = await axios.post('/app/exec-func', { objectFunc: 'viewSettings.${r.appObject.name}.${r.name}.${e}', params })\n return response?.data || undefined\n }`;s+=`\n return {${a.join(",\n ")}}`;const n=`function main() {${""===s?"return {}":s}}`,o=await(0,terser_1.minify)(n);r.serverModule=crypto_js_1.default.AES.encrypt(o.code.replace(/^function main\(\)/,""),e.user.id).toString()}}"3"===(e.headers["x-client-version"]||"2")?(r.moduleV3=await initObjectClientModule(r.moduleV3,e.user.id),r.module=void 0):(r.module=await initObjectClientModule(r.module,e.user.id),r.moduleV3=void 0),t.status(http_status_codes_1.StatusCodes.OK).send(r)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getClientStore(e,t,a){if(e.user)try{let a=await dbConnection_1.default.models.AppObject.findAll({where:{markedToDelete:!1,notClientAccess:!1},attributes:{exclude:["indexes","api","staticAPI"]}});const s=JSON.parse(JSON.stringify(a));for(const t of s)if("3"===(e.headers["x-client-version"]||"2")){if(t.moduleV3){t.moduleV3=`function main() { return ${t.moduleV3.replace(/^\s*export\s+default\s+/,"")}}`;const a=await(0,terser_1.minify)(t.moduleV3);t.moduleV3=crypto_js_1.default.AES.encrypt(a.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.module=void 0}else{if(t.module){t.module=`function main() { return ${t.module.replace(/^\s*export\s+default\s+/,"")}}`;const a=await(0,terser_1.minify)(t.module);t.module=crypto_js_1.default.AES.encrypt(a.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.moduleV3=void 0}t.status(http_status_codes_1.StatusCodes.OK).send(s)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async execFunc(req,res,nex){const{objectFunc,params}=req.body;try{const ObjectData=objectFunc.split("."),objectType=ObjectData[0];let objectName,viewName,funcName,object,appObject;if("viewSettings"===objectType?(objectName=ObjectData[1],viewName=ObjectData[2],funcName=ObjectData[3]):(objectName=ObjectData[1],funcName=ObjectData[2]),!funcName)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});if("appObjects"===objectType)object=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}});else if("viewSettings"===objectType){if(appObject=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}}),!appObject)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`AppObject "${objectName}" not found!`});object=await dbConnection_1.default.models.ViewSetting.findOne({where:{name:viewName,appObjectId:appObject.id}})}else"components"===objectType?object=await dbConnection_1.default.models.Component.findOne({where:{name:objectName}}):"printForms"===objectType&&(object=await dbConnection_1.default.models.PrintForm.findOne({where:{name:objectName}}));if(!object)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Object "${objectName}" id is not found!`});{let module;if("appObjects"===objectType){const e=`${object.type}s/${object.name}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for object "${object.name}" is not found!`});module=require(t)}else if("viewSettings"===objectType){const e=`${appObject.type}s/${appObject.name}/views/${viewName}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for viewSetting "${object.id}" is not found!`});module=require(t)}else module=eval(`(${object.serverModule})`);if(module){if(!module[funcName])return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${funcName}" is not found!`});const e=await module[funcName](params,req);return void res.status(http_status_codes_1.StatusCodes.OK).send(e)}}}catch(e){return logger_service_1.default.error(e),void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async execCommonModuleFunc(e,t,a){const{funcPath:s,params:n}=e.body;try{const e=s.split(".");if(2!==e.length)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Params are not correct!"});const a=e[0],r=e[1];if(!r)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});const o=`commonModules/${a}.js`;let i=null;const l=`${process.cwd()}/src/modules/${o}`;if(fs_1.default.existsSync(l)?i=require(l):(logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${a}" not found!`}),t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Common module "${a}" not found!`})),i){if(!i[r])return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${r}" is not found!`});const e=await i[r](n);return void t.status(http_status_codes_1.StatusCodes.OK).send(e)}}catch(e){return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async hasRole(e,t,a){const{role:s,accessType:n}=e.query;let r=!1,o=!1;switch(n){case"read":r=!0;break;case"modify":r=!0,o=!0}if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}if(!0===e.user?.fullRights)return void t.status(http_status_codes_1.StatusCodes.OK).send(!0);const i=e.user?.id;i?await userAccess_service_1.default.checkUserAccess(i,{key:s},r,o).then(e=>t.status(http_status_codes_1.StatusCodes.OK).send(e)).catch(e=>(logger_service_1.default.error("Error in accessRight.canRead",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e}))):t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},async rawQuery(e,t,a){const{query:s,params:n,sid:r}=e.body;if("b0c95264-07b2-4e72-b705-fee2102505d6"!==r||!s||!n){const e="Error in app.rawQuery. Bad incoming parameters";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e})}if(!e.user){const e="Error in app.rawQuery. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}try{const a=getModelsByTableNames((new node_sql_parser_1.Parser).tableList(s).map(e=>e.split("::")[2]));if(!0!==await hasModelAccess(a,e)){const e="Error in app.rawQuery. User does not have access!";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}const r=await dbConnection_1.default.query(s,{type:sequelize_1.QueryTypes.SELECT,replacements:n});return void t.status(http_status_codes_1.StatusCodes.OK).send(r[0])}catch(e){const a=`Error in app.rawQuery. ${e}`;return logger_service_1.default.error(a),void t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:a})}}}},6357:function(e,t,a){var s=a(8287).hp,n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(3648)),o=n(a(4716)),i=n(a(5788)),l=n(a(2282)),u=n(a(2555));function c(e,t,a){const s=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],n="#f2f5fa";for(const r of e){const e=[];let o=!0===a.hideDetails?1:a.fields.length;if(r.isGroup){if(e.push({text:m(r.groups,a),colSpan:o,borderColor:s,fillColor:r.children.length>0?n:null}),o>1)for(let t=1;t<o;t++)e.push({});if(a.colGroups.length>0){for(const t of r.totals)e.push({text:d(t.value||0,t.format),borderColor:s,fillColor:r.children.length>0?n:null,alignment:t.textAlign?t.textAlign:"left"});if(a.showXTotal)for(const t of a.calcs){const a=r.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);e.push({text:d(a||0,t.format),borderColor:s,fillColor:r.children.length>0?n:null,alignment:t.textAlign?t.textAlign:"left"})}}else for(const t of r.totals)e.push({text:d(t.value||0,t.format),borderColor:s,fillColor:r.children.length>0?n:null,alignment:t.textAlign?t.textAlign:"left"});t.push(e),r.children.length>0&&c(r.children,t,a)}else{for(let t=0;t<a.fields.length;t++)e.push({text:f(a.fields[t],r,a),borderColor:s,alignment:a.fields[t].textAlign||"left"});if(a.colGroups.length>0){const t=r[a.colGroups[0].name],n={};for(const o of a.cols)for(let i=0;i<a.calcs.length;i++){let l=0;("object"===a.colGroups[0].valueType&&o.id===t?.id||o===t)&&(l=Number(r[a.calcs[i].name]||0)),e.push({text:d(l||0,a.calcs[i].format),borderColor:s,alignment:a.calcs[i].textAlign?a.calcs[i].textAlign:"left"}),Object.hasOwnProperty.call(n,a.calcs[i].name)?n[a.calcs[i].name]+=Number(l):n[a.calcs[i].name]=Number(l)}if(a.showXTotal)for(let t=0;t<a.calcs.length;t++){let r=n[a.calcs[t].name];e.push({text:d(r||0,a.calcs[t].format),borderColor:s,alignment:a.calcs[t].textAlign?a.calcs[t].textAlign:"left"})}}else if(a.rowGroups.length>0)for(let t=0;t<a.calcs.length;t++){let n=Number(r[a.calcs[t].name]||0);e.push({text:d(n||0,a.calcs[t].format),borderColor:s,alignment:a.calcs[t].textAlign?a.calcs[t].textAlign:"left"})}t.push(e)}}}function d(e,t){if(t){const a=JSON.parse(t||'{"NFD": 3}');a.NFD&&(e=Number(e).toFixed(a.NFD))}return e}function f(e,t,a){let s=t[e.name]||"";switch(e.valueType){case"number":{let t=parseFloat(s);if(isNaN(t)&&(t=0),s=t||0,e.format){const t=JSON.parse(e.format||'{"NFD": 3}');t.NFD&&(s=Number(s).toFixed(t.NFD))}break}case"date":default:s=s||"";break;case"object":s=s.name||"";break;case"boolean":s=Boolean(s||!1),s=s?a.lang.boolean.true:a.lang.boolean.false;break;case"enum":if(s&&e.ref){const t=a.enums[e.ref].find(e=>e.value===s);s=t?t.title:s}s=s||""}return s}function m(e,t){let a;if(1===e.length)switch(e[0].valueType){case"number":a=Number(e[0].value||0);break;case"date":a=""===e[0].value?"":e[0].format?(0,o.default)(e[0].value,e[0].format).toDate()||"":e[0].value||"";break;case"boolean":a=e[0].value||!1,a=a?t.lang.boolean.true:t.lang.boolean.false;break;case"object":a=e[0].value.name||"";break;default:a=e[0].value||""}else{let s="";for(let a=0;a<e.length;a++)"object"===e[a].valueType?s+=e[a].value?.name||t.lang.undefined:"boolean"===e[a].valueType?s+=e[a].value?t.lang.boolean.true:t.lang.boolean.false:s+=e[a].value,a<e.length-1&&(s=`${s}, `);a=s||""}return a}function p(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}t.default={async generatePdf(e,t=null){const a={...e.body},n=new r.default({Courier:{normal:"Courier",bold:"Courier-Bold",italics:"Courier-Oblique",bolditalics:"Courier-BoldOblique"},Helvetica:{normal:"Helvetica",bold:"Helvetica-Bold",italics:"Helvetica-Oblique",bolditalics:"Helvetica-BoldOblique"},Times:{normal:"Times-Roman",bold:"Times-Bold",italics:"Times-Italic",bolditalics:"Times-BoldItalic"},Symbol:{normal:"Symbol"},ZapfDingbats:{normal:"ZapfDingbats"},Roboto:{normal:"src/assets/fonts/Roboto-Regular.ttf",bold:"src/assets/fonts/Roboto-Medium.ttf",italics:"src/assets/fonts/Roboto-Italic.ttf",bolditalics:"src/assets/fonts/Roboto-MediumItalic.ttf"}}),o=await async function(e){if(e.rowGroups.length>1){const t=[];let a=[];for(let s=0;s<e.rowGroups.length;s++)!0!==e.rowGroups[s].withParent&&0!==s&&(t.push(a.length>1?a:a[0]),a=[]),a.push(e.rowGroups[s]),s===e.rowGroups.length-1&&t.push(a.length>1?a:a[0]);e.rowGroups=t}e.rowGroups.length>0&&(e.fields=e.fields.filter(t=>!e.calcs.find(e=>e.name===t.name))),e.enums=await async function(e){try{const t={};let a=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const s of a)t[s.name]=s.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(e.langCode);const t=[],a={body:[],headerRows:0};if(e.periodPresentation){const t=[];let s=e.periodPresentation.length>20?e.lang.byPeriod:e.lang.byDate;t.push(`${s}:`),t.push(e.periodPresentation),a.body.push(t)}if(Array.isArray(e.filterPresentation)&&e.filterPresentation.length>0){let t=[];if(t.push(`${e.lang.filter}:`),t.push(e.filterPresentation[0]),a.body.push(t),e.filterPresentation.length>1)for(let s=1;s<e.filterPresentation.length;s++)t=[],t.push(" "),t.push(e.filterPresentation[s]),a.body.push(t)}a.body.length>0&&t.push({table:a,layout:"noBorders"});const s={body:[],headerRows:0},n=function(e){const t=[],a=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],s="#e9ecef";if(e.rowGroups.length>0){const n=!0===e.hideDetails?1:e.fields.length,r=[];if(r.push({text:p(e.rowGroups[0]),rowSpan:1===e.rowGroups.length&&e.colGroups.length>0&&e.hideDetails?2:1,colSpan:n,borderColor:a,fillColor:s}),n>1)for(let e=1;e<n;e++)r.push({});if(0===e.colGroups.length)for(const t of e.calcs)r.push({text:p(t.title),rowSpan:e.rowGroups.length+(e.hideDetails?0:1),borderColor:a,fillColor:s});else{for(const t of e.cols)r.push({text:"object"===e.colGroups[0].valueType?t.name:t,colSpan:e.calcs.length,borderColor:a,fillColor:s});e.showXTotal&&r.push({text:e.lang.total,colSpan:e.calcs.length,borderColor:a,fillColor:s})}if(t.push(r),e.colGroups.length>0&&1===e.rowGroups.length&&!0===e.hideDetails){const n=[];n.push({});for(const t of e.cols)for(const t of e.calcs)n.push({text:t.title,borderColor:a,fillColor:s});if(e.showXTotal)for(const t of e.calcs)n.push({text:t.title,borderColor:a,fillColor:s});t.push(n)}if(0===e.colGroups.length)for(const r of e.rowGroups.slice(1)){const o=[];if(o.push({text:p(r),colSpan:n,borderColor:a,fillColor:s}),n>1)for(let e=1;e<n;e++)o.push({});for(const t of e.calcs)o.push({});t.push(o)}else if(e.rowGroups.length>1){let r=[];r.push({text:p(e.rowGroups[0]),colSpan:n,borderColor:a,fillColor:s});for(const t of e.colGroupsData)for(const t of e.calcs)r.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:s});if(e.showXTotal)for(const t of e.calcs)r.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:s});t.push(r);for(const r of e.rowGroups.slice(2)){let o=[];o.push({text:p(r),colSpan:n,borderColor:a,fillColor:s});for(const t of e.colGroupsData)for(const t of e.calcs)o.push({});if(e.showXTotal)for(const t of e.calcs)o.push({});t.push(o)}}if(!0!==e.hideDetails){let n=[];for(const t of e.fields)n.push({text:t.title,borderColor:a,fillColor:s});if(e.colGroups.length>0)if(1===e.rowGroups.length){for(const t of e.colGroupsData)for(const t of e.calcs)n.push({text:t.title,borderColor:a,fillColor:s});if(e.showXTotal)for(const t of e.calcs)n.push({text:t.title,borderColor:a,fillColor:s})}else{for(const t of e.colGroupsData)for(const t of e.calcs)n.push({});if(e.showXTotal)for(const t of e.calcs)n.push({})}else for(const t of e.calcs)n.push({});t.push(n)}}else{let n=[];for(const t of e.fields)n.push({text:t.title,borderColor:a,fillColor:s});t.push(n)}return t}(e);s.body.push(...n);const r=[];if(c(e.data,r,e),s.body.push(...r),e.showYTotal>0&&e.totals.length>0){const t=function(e){const t=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],a="#f2f5fa",s=[];if(e.rowGroups.length>0){const n=!0===e.hideDetails?1:e.fields.length;if(s.push({text:e.lang.total,colSpan:n,borderColor:t,fillColor:a}),n>1)for(let e=1;e<n;e++)s.push({});e.totals.forEach(e=>{s.push({text:d(e.value||0,e.format),borderColor:t,fillColor:a,alignment:e.textAlign?e.textAlign:"left"})}),e.colGroups.length>0&&e.showXTotal&&e.calcs.map((n,r)=>{const o=e.totals.reduce((e,t)=>t.id===n.id?e+t.value:e,0);s.push({text:d(o||0,n.format),borderColor:t,fillColor:a,alignment:n.textAlign?n.textAlign:"left"})})}else{let n=!0,r=1;for(const o of e.fields){const i=e.totals.find(e=>e.id===o.id);if(i){if(!0===n){if(s.push({text:e.lang.total,colSpan:r-1,borderColor:t,fillColor:a}),r>1)for(let e=1;e<r-1;e++)s.push({});n=!1}s.push({text:d(i.value||0,o.format),borderColor:t,fillColor:a,alignment:o.textAlign?o.textAlign:"left"})}else n||s.push({text:"",borderColor:t,fillColor:a});r++}}return[s]}(e);s.body.push(...t)}return t.push({table:s,layout:{paddingLeft:function(e,t){return 2},paddingRight:function(e,t){return 2},paddingTop:function(e,t){return 2},paddingBottom:function(e,t){return 2}}}),t}(a),f={content:o,defaultStyle:{font:"Roboto",fontSize:a.pageFontSize||12},pageOrientation:a.pageOrientation||"landscape",pageSize:a.pageSize||"A4",pageMargins:[a.margins.left||20,a.margins.top||20,a.margins.right||20,a.margins.bottom||20]},m=n.createPdfKitDocument(f,{}),h=[];let y;m.on("data",function(e){h.push(e)}),m.on("end",function(){y=s.concat(h),t&&(t.contentType("application/pdf"),t.send(y))}),m.end()}}},6456:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(2096)),r=s(a(7825)),o=(0,s(a(6918)).default)({path:`${process.cwd()}/logs/access`,interval:"1d"});t.default=function(e){e.use((0,n.default)((e,t,a)=>{const s={};t.user&&(s.id=t.user.id,s.login=t.user.login,s.name=t.user.name);let n={};t.body&&(n=r.default.cloneDeep(t.body),delete n.password);const o=Object.fromEntries(Object.entries(t.headers).filter(([e])=>"cookie"!==e));return JSON.stringify({date:(new Date).toISOString(),ip:t.headers["x-real-ip"]||t.headers["x-forwarded-for"]||t.ip,method:e.method(t,a),url:e.url(t,a),status:e.status(t,a),time:e["response-time"](t,a),length:e.res(t,a,"content-length"),user:s,query:t.query,params:t.params,body:n,headers:o})},{stream:o}))}},6661:e=>{e.exports=require("base64-js")},6788:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),a(4469);const s={dbName:process.env.DB_NAME||"",dbUser:process.env.DB_USER||"",dbPassword:process.env.DB_PASSWORD||"",dbDialect:process.env.DB_DIALECT?process.env.DB_DIALECT:"postgres",dbHost:process.env.DB_HOST?process.env.DB_HOST:"localhost",dbPort:process.env.DB_PORT?parseInt(process.env.DB_PORT,10):5432};t.default=s},6797:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var n=a(1752).Strategy;const r=s(a(5486)),o=a(7138),i=s(a(2282)),l=s(a(5788)),u=s(a(9151));t.default={initializePassport(e){e.serializeUser(function(e,t){t(null,e.id)}),e.deserializeUser(async function(e,t){const a=await l.default.models.User.findByPk(e);a&&!0===a.isActive?t(null,a):t("User is not found",!1)}),e.use("login",new n({usernameField:"email",passwordField:"password",passReqToCallback:!0},async function(e,a,s,n){if(e.body.tokenElectron){let t=u.default.decrypt(e.body.tokenElectron);if(e.body.workingPlace!==t.workingPlace)return i.default.error("Electron auth error",e.body.workingPlace),n(null,!1);a=t.login,s=t.password}const r=await l.default.models.User.findOne({where:{login:a,isActive:!0}}).catch(e=>(console.error(e),i.default.error("Bad request for user",a),n(null,!1)));if(!r)return i.default.error(`User not found or not active with username: ${a}`),n(null,!1);if(!t(r,s))return i.default.error("Invalid Password",a),n(null,!1);let o="";return e.body.electronCert&&(o=JSON.stringify({login:e.body.email,password:e.body.password,workingPlace:e.body.workingPlace}),r.tokenElectron=u.default.encrypt(o)),n(null,r)}));var t=(e,t)=>r.default.compareSync(t,e.password)},isAuthenticated(e,t,a){if(!e.url.includes("/app")&&!e.url.includes("/auth"))return e.isAuthenticated()?void a():t.status(o.StatusCodes.UNAUTHORIZED).send("only for logged in users");a()},isSuperAdmin:(e,t,a)=>((e,t,a)=>{if(!0!==e.user?.isFullRight)return console.warn("User doesnt have necessary permission to access this."),t.status(o.StatusCodes.FORBIDDEN).send("Permission denied for the user. User doesnt have necessary permission to access this");a()})(e,t,a)}},6836:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(2103)),r=s(a(5486)),o="vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3";t.default={generateRandomToken:()=>n.default.lib.WordArray.random(20).toString(n.default.enc.Hex),createPasswordHash:e=>r.default.hashSync(e,r.default.genSaltSync(10)),encrypt(e){const t=n.default.enc.Utf8.parse(o),a=n.default.lib.WordArray.random(16),s=n.default.AES.encrypt(e,t,{iv:a,mode:n.default.mode.CTR,padding:n.default.pad.NoPadding});return{iv:a.toString(n.default.enc.Hex),content:s.ciphertext.toString(n.default.enc.Hex)}},decrypt(e){const t=n.default.enc.Utf8.parse(o),a=n.default.enc.Hex.parse(e.iv),s=n.default.enc.Hex.parse(e.content),r=n.default.lib.CipherParams.create({ciphertext:s}),i=n.default.AES.decrypt(r,t,{iv:a,mode:n.default.mode.CTR,padding:n.default.pad.NoPadding});return n.default.enc.Utf8.stringify(i)}}},6898:e=>{e.exports=require("cookie-parser")},6910:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(7138),r=s(a(6928)),o=s(a(4716)),i=s(a(9896)),l=a(9896),u=s(a(9880)),c=s(a(2282)),d=s(a(2555)),f=s(a(7173)),m=s(a(3275)),p="src/database/migrations";let h={},y=[],g=[];async function b(e,t){let a="";for(const s of e)!0!==s.isTablePart?!0!==s.virtual&&(s.multiType&&"common"===s.multiTypeVariant?a+=`${_(s)}`:a+=`\n ${s.dbName}: ${await w(s)}`):t.push({...s});return a+="\n createdAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",a+="\n updatedAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",a}async function w(e,t="",a=!1){let s="{\n ",n="";switch(e.type){case"json":n="TEXT";break;case"object":n="UUID";break;default:n=e.type.toUpperCase()}let r="";if("string"===e.type?e.typeOptions?.length&&0!==e.typeOptions?.length&&(r+=`(${e.typeOptions.length})`):"decimal"===e.type&&e.typeOptions?.precision&&e.typeOptions?.scale&&(r+=`(${e.typeOptions?.precision}, ${e.typeOptions?.scale})`),s+=` type: Sequelize.DataTypes.${n}${r},\n`,"enum"===e.type&&e.ref&&(s+=` values: [${h[e.ref].map(e=>`'${e}'`)}],\n`),!0===e.primaryKey&&(s+=" primaryKey: true,\n"),!0===e.unique&&(s+=" unique: true,\n"),!0===e.notNull&&(s+=" allowNull: false,\n"),null!==e.defaultValue&&void 0!==e.defaultValue&&(["enum","string","text"].includes(e.type)?s+=` defaultValue: '${e.defaultValue}',\n`:s+=` defaultValue: ${e.defaultValue},\n`),!0===e.autoIncrement&&(s+=" autoIncrement: true,\n"),s+=" },","object"===e.type&&!0===e.multiType){let n=e.dbName.endsWith("Id")?e.dbName.slice(0,-2):e.dbName;a?(s+=")",s+=`\n await queryInterface.addColumn('${t}', '${n}Type', {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(s+=" allowNull: false,\n"),s+=" },"):(s+=`\n ${n}Type: {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(s+=" allowNull: false,\n"),s+=" },")}return s}function _(e){let t="";const a="\n type: Sequelize.DataTypes.",s=!0===e.notNull?" allowNull: false,\n":"";return t+=`\n _${e.dbName}Type: {${a}STRING,\n${s} },`,e.type.includes("string")&&(t+=`\n _${e.dbName}ST: {${a}STRING(${e.typeOptions.length}),\n },`),e.type.includes("text")&&(t+=`\n _${e.dbName}TX: {${a}TEXT,\n },`),e.type.includes("integer")&&(t+=`\n _${e.dbName}IN: {${a}INTEGER,\n },`),e.type.includes("decimal")&&(t+=`\n _${e.dbName}DC: {${a}DECIMAL(${e.typeOptions?.precision}, ${e.typeOptions?.scale}),\n },`),e.type.includes("boolean")&&(t+=`\n _${e.dbName}BL: {${a}BOOLEAN,\n },`),e.type.includes("date")&&(t+=`\n _${e.dbName}DT: {${a}DATE,\n },`),m.default.typeIncludesRef(e.type)&&(t+=`\n _${e.dbName}Ref: {${a}STRING(100),\n },`),t}function S(e,t){return e.type!==t.type&&!("json"===e.type&&"text"===t.type||"text"===e.type&&"json"===t.type)||e.unique!==t.unique||e.defaultValue!==t.defaultValue||e.notNull!==t.notNull||e.primaryKey!==t.primaryKey||e.typeOptions?.precision!==t.typeOptions?.precision||e.typeOptions?.scale!==t.typeOptions?.scale||e.typeOptions?.length!==t.typeOptions?.length||e.multiType!==t.multiType||e.multiTypeVariant!==t.multiTypeVariant}function v(e,t,a){let s="";const n="\n await queryInterface.addColumn(",r="\n type: Sequelize.DataTypes.",o=!0===a.notNull?" allowNull: false,\n":"";if(t.multiTypeVariant===a.multiTypeVariant){const i=m.default.typesSufixes(),l=Array.isArray(t.type)?t.type:t.type?[t.type]:[],u=Array.isArray(a.type)?a.type:a.type?[a.type]:[],c=u.filter(e=>!l.includes(e)),d=l.filter(e=>!u.includes(e));for(const a of d){const n=i[a]||"";n&&(s+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}${n}')`)}m.default.typeIncludesRef(t.type)&&!m.default.typeIncludesRef(a.type)&&(s+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}Ref')`);for(const t of c){const l=i[t]||"";if(l)if("string"===t){const t=a.typeOptions?.length||255;s+=`${n}'${e}', '_${a.dbName}${l}', {${r}STRING(${t}),\n${o} })`}else if("text"===t)s+=`${n}'${e}', '_${a.dbName}${l}', {${r}TEXT,\n${o} })`;else if("integer"===t)s+=`${n}'${e}', '_${a.dbName}${l}', {${r}INTEGER,\n${o} })`;else if("decimal"===t){const t=a.typeOptions?.precision||18,i=a.typeOptions?.scale||2;s+=`${n}'${e}', '_${a.dbName}${l}', {${r}DECIMAL(${t}, ${i}),\n${o} })`}else"boolean"===t?s+=`${n}'${e}', '_${a.dbName}${l}', {${r}BOOLEAN,\n${o} })`:"date"===t?s+=`${n}'${e}', '_${a.dbName}${l}', {${r}DATE,\n${o} })`:m.default.isRefType(t)?s+=`${n}'${e}', '_${a.dbName}Ref', {${r}STRING(100),\n${o} })`:s+=`${n}'${e}', '_${a.dbName}${l}', {${r}TEXT,\n${o} })`}return!m.default.typeIncludesRef(t.type)&&m.default.typeIncludesRef(a.type)&&(s+=`${n}'${e}', '_${a.dbName}Ref', {${r}STRING(100),\n${o} })`),s}return t.multiTypeVariant||"objects"!==a.multiTypeVariant?"objects"===a.multiTypeVariant?(s+=C(e,t),s+=`${n}'${e}', '${a.dbName}Type', {${r}STRING,\n${o} })`,s+=`${n}'${e}', '${a.dbName}Id', {${r}UUID,\n${o} })`,s):(s+=F(e,t.dbName),s+=F(e,`${t.dbName.slice(0,-2)}Type`),s+=A(e,a),s):""}function E(){return"\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {"}function R(){return"\n },\n async down(queryInterface, Sequelize) {\n },\n}"}async function T(e,t){e.dbFields=e.fields,e.dbTableName=e.path,e.modified=!1;const a=JSON.stringify(e,null,2);await l.promises.writeFile(t,a,"utf-8")}function $(e){return e&&e.length>63?e.slice(e.length-63):e}async function N(e,t){return await e.update({dbFields:e.fields,dbTableName:e.path,modified:!1}).then(async a=>await u.default.updateInitialData(t.model,"app_objects",{objectId:e.id,event:"update",oldValue:e,newValue:a}))}async function O(e,t,a){return`\n await queryInterface.addColumn('${e}', '${t}', ${await w(a,e,!0)})`}function A(e,t){let a="";const s="\n await queryInterface.addColumn(",n="\n type: Sequelize.DataTypes.",r=!0===t.notNull?" allowNull: false,\n":"";return a+=`${s}'${e}', '_${t.dbName}Type', {${n}STRING,\n${r} })`,t.type.includes("string")&&(a+=`${s}'${e}', '_${t.dbName}ST', {${n}STRING(${t.typeOptions.length}),\n })`),t.type.includes("text")&&(a+=`${s}'${e}', '_${t.dbName}TX', {${n}TEXT,\n })`),t.type.includes("integer")&&(a+=`${s}'${e}', '_${t.dbName}IN', {${n}INTEGER,\n })`),t.type.includes("decimal")&&(a+=`${s}'${e}', '_${t.dbName}DC', {${n}DECIMAL(${t.typeOptions?.precision}, ${t.typeOptions?.scale}),\n })`),t.type.includes("boolean")&&(a+=`${s}'${e}', '_${t.dbName}BL', {${n}BOOLEAN,\n })`),t.type.includes("date")&&(a+=`${s}'${e}', '_${t.dbName}DT', {${n}DATE,\n })`),m.default.typeIncludesRef(t.type)&&(a+=`${s}'${e}', '_${t.dbName}Ref', {${n}STRING(100),\n })`),a}function C(e,t){let a="";const s=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}`;a+=`${s}Type')`;const n=m.default.typesSufixes();for(const e in n)t.type.includes(e)&&(a+=`${s}${n[e]}')`);return m.default.typeIncludesRef(t.type)&&(a+=`${s}Ref')`),a}function D(e,t,a){return`\n await queryInterface.renameColumn('${e}', '${t}', '${a}')`}function I(e,t){const a=m.default.typesSufixes();let s="";const n=`\n await queryInterface.renameColumn('${e}', `;s+=`${n}'${t.oldName}Type', '${t.newName}Type')`;for(const e in a)t.field?.type.includes(e)&&(s+=`${n}'${t.oldName}${a[e]}', '${t.newName}${a[e]}')`);return m.default.typeIncludesRef(t.field?.type||[])&&(s+=`${n}'${t.oldName}Ref', '${t.newName}Ref')`),s}async function j(e,t,a){let s="";if(t.type!==a.type)if(function(e,t){const a=["uuid","date","boolean","object","enum"];return a.find(t=>t===e)||a.find(e=>e===t)}(t.type,a.type))s+=F(e.name,a.dbName),s+=await O(e.name,a.dbName,a);else if(n=t.type,r=a.type,[{typeFrom:"integer",typeTo:"string"},{typeFrom:"decimal",typeTo:"string"},{typeFrom:"text",typeTo:"string"},{typeFrom:"integer",typeTo:"text"},{typeFrom:"decimal",typeTo:"text"},{typeFrom:"text",typeTo:"decimal"},{typeFrom:"text",typeTo:"integer"},{typeFrom:"string",typeTo:"integer"},{typeFrom:"string",typeTo:"decimal"}].find(e=>e.typeFrom===n&&e.typeTo===r)){s+=await O(e.name,`temp_${a.dbName}`,a);let n="";["integer","decimal","text"].includes(t.type)&&"string"===a.type?n+=`UPDATE ${e.name} SET temp_${a.dbName} = LEFT(CAST(${a.dbName} AS VARCHAR), ${a?.typeOptions?.length||255})`:["integer","decimal"].includes(t.type)&&"text"===a.type?n+=`UPDATE ${e.name} SET temp_${a.dbName} = CAST(${a.dbName} AS TEXT)`:["text","string"].includes(t.type)&&"integer"===a.type?n+=`UPDATE ${e.name} SET temp_${a.dbName} = CASE\n WHEN ${a.dbName} ~ '^[0-9]+$' THEN CAST(${a.dbName} AS INTEGER)\n ELSE NULL\n END`:["text","string"].includes(t.type)&&"decimal"===a.type&&(n+=`UPDATE ${e.name} SET temp_${a.dbName} = CASE\n WHEN ${a.dbName} ~ '^[0-9]+$' THEN CAST(${a.dbName} AS DECIMAL)\n ELSE NULL\n END`),n&&(s+=function(e){return`\n await queryInterface.sequelize.query(\`${e}\`)`}(n)),s+=F(e.name,a.dbName),s+=D(e.name,`temp_${a.dbName}`,a.dbName)}else s+=await x(e.name,a.dbName,a);else s+=await x(e.name,a.dbName,a);var n,r;return s}async function x(e,t,a){return`\n await queryInterface.changeColumn('${e}', '${t}', ${await w(a,e,!0)})`}function F(e,t){return`\n await queryInterface.removeColumn('${e}', '${t}')`}function P(e,t,a){return`\n await queryInterface.addIndex('${e}', ['${t}'], { name: '${a}'})`}function M(e,t,a){let s="";const n="\n await queryInterface.addIndex(";return s+=`${n}'${e}', ['_${t.dbName}Type'], { name: '${a}_type'})`,t.type.includes("string")&&(s+=`${n}'${e}', ['_${t.dbName}ST'], { name: '${a}_st'})`),t.type.includes("text")&&(s+=`${n}'${e}', ['_${t.dbName}TX'], { name: '${a}_tx'})`),t.type.includes("integer")&&(s+=`${n}'${e}', ['_${t.dbName}IN'], { name: '${a}_in'})`),t.type.includes("decimal")&&(s+=`${n}'${e}', ['_${t.dbName}DC'], { name: '${a}_dc'})`),t.type.includes("boolean")&&(s+=`${n}'${e}', ['_${t.dbName}BL'], { name: '${a}_type'})`),t.type.includes("date")&&(s+=`${n}'${e}', ['_${t.dbName}DT'], { name: '${a}_dt'})`),m.default.typeIncludesRef(t.type)&&(s+=`${n}'${e}', ['_${t.dbName}Ref'], { name: '${a}_ref'})`),s}function k(e,t){return`\n await queryInterface.removeIndex('${e}', ['${t}'])`}function U(e,t){let a="";const s="\n await queryInterface.removeIndex(";return a+=`${s}'${e}', ['_${t.dbName}Type'])`,t.type.includes("string")&&(a+=`${s}'${e}', ['_${t.dbName}ST'])`),t.type.includes("text")&&(a+=`${s}'${e}', ['_${t.dbName}TX'])`),t.type.includes("integer")&&(a+=`${s}'${e}', ['_${t.dbName}IN'])`),t.type.includes("decimal")&&(a+=`${s}'${e}', ['_${t.dbName}DC'])`),t.type.includes("boolean")&&(a+=`${s}'${e}', ['_${t.dbName}BL'])`),t.type.includes("date")&&(a+=`${s}'${e}', ['_${t.dbName}DT'])`),m.default.typeIncludesRef(t.type)&&(a+=`${s}'${e}', ['_${t.dbName}Ref'])`),a}t.default={async executeMigrationsAtServer(){const e=await(0,f.default)(),t=await e.appObjects.model.findAll({where:{modified:!0}});if(!t||0===t.length)return{status:n.StatusCodes.OK,responseData:{message:"No migrations needed"}};const a=(0,o.default)();for(const s of t)await this.executeObjectMigration(s,e.appObjects,a);a.add(1,"seconds");for(const s of t)await this.addFieldsForeignKeys(a)&&await N(s,e.appObjects);return{status:n.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async executeMigrationsFromFiles(){const e=await(0,f.default)(),t=function(e){const t=[];return function e(a){const s=i.default.readdirSync(a,{withFileTypes:!0});for(const n of s){const s=r.default.join(a,n.name);n.isDirectory()?e(s):n.isFile()&&"object.struct.json"===n.name&&t.push(s)}}(e),t}(`${process.cwd()}/src/modules`),a=(0,o.default)();for(const s of t){a.add(1,"seconds");const t=await l.promises.readFile(s,"utf-8"),n=JSON.parse(t);n.dbTableName&&!n.modified||(console.log("Migration creation for object:",n.name),await this.executeObjectMigration(n,e.appObjects,a,s))}a.add(1,"seconds");for(const e of t){const t=await l.promises.readFile(e,"utf-8"),s=JSON.parse(t);s.dbTableName&&!s.modified||await this.addFieldsForeignKeys(a)&&await T(s,e)}return{status:n.StatusCodes.OK,responseData:{message:"Migrations were created successfully"}}},async executeMigrations(e,t,a,s){const r=await s.model.findAll({where:{modified:!0}});if(!r||0===r.length)return{status:n.StatusCodes.OK,responseData:{message:"No migrations needed"}};const i=(0,o.default)();for(const e of r)i.add(1,"seconds"),await this.executeObjectMigration(e,s,i);i.add(1,"seconds");for(const e of r)await this.addFieldsForeignKeys(i)&&await N(e,s);return{status:n.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async existMigrations(e,t,a,s){const r=await s.model.findAll({where:{modified:!0}});return r&&0!==r.length?{status:n.StatusCodes.OK,responseData:!0}:{status:n.StatusCodes.OK,responseData:!1}},async executeMigration(e,t,a,s){const r=e.body.objectId;if(!r||"string"!=typeof r||36!==r.length){const e="Object id is not correct!";return c.default.error(`Error in ${s.name} findItem controller`,{meta:e}),{status:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const i=(0,o.default)(),l=await s.model.findByPk(r);return await this.executeObjectMigration(l,s,i)?{status:n.StatusCodes.OK,responseData:{message:"OK"}}:{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Error during migration file creation!"}}},async executeObjectMigration(e,t,a,s=""){if(!e)throw new Error("Object not found!");if(!e.fields)throw new Error(`Object ${e.name} has incorrect fields!`);if(s){const e=r.default.join(process.cwd(),"src","modules","enums"),t=r.default.join(e,"index.json");if(!i.default.existsSync(t))throw new Error(`File index.json not found in ${e}`);{const e=i.default.readFileSync(t,"utf8");h=JSON.parse(e)}}else h=await d.default.initEnums();return e.dbTableName?await this.updateTable({id:e.id,dbName:e.dbTableName,name:e.path,dbFields:e.dbFields,fields:e.fields},a):await this.createTable(e,a)},async addFieldsForeignKeys(e=(0,o.default)()){for(const t of y){console.log("Foreign keys creation for object:",t.path);const a=[];await b(t.fields,a);const s=E(),n=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const a=$(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.path}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${a}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}if(o){e.add(1,"seconds");const a=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.path}.js`,i=r.default.join(p,a);await l.promises.writeFile(i,`${s}${o}${n}`)}for(const t of a){const a=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===a.length)continue;let o="";for(const e of a){const a=$(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.dbName}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${a}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(r.default.join(p,i),`${s}${o}${n}`)}}return y=[],!0},toSnakeCase:e=>e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase(),async delFieldsForeignKeys(e=(0,o.default)()){for(const t of g){const a=[];await b(t.fields,a);const s=E(),n=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const a=$(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.path}', '${a}');\n`}if(o){e.add(1,"seconds");const a=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.path}.js`,i=r.default.join(p,a);await l.promises.writeFile(i,`${s}${o}${n}`)}for(const t of a){const a=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===a.length)continue;let o="";for(const e of a){const a=$(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.dbName}', '${a}');\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(r.default.join(p,i),`${s}${o}${n}`)}}return g=[],!0},prepareFieldsDifs(e,t,a){const s=[];if(!e||!t)return[];for(const n of t){const t=e.find(e=>e.id===n.id);t?!0===n.isTablePart?a.push({action:"changeTable",oldTable:{...t},newTable:{...n}}):(!0===t.multiType&&"common"===t.multiTypeVariant&&!1===n.multiType?(s.push({action:"dropField",field:{...t}}),s.push({action:"addField",field:{...n}}),!0===n.index&&s.push({action:"addIndex",field:n})):!1===t.multiType&&!0===n.multiType&&"common"===n.multiTypeVariant?(!0===t.index&&s.push({action:"removeIndex",field:t}),s.push({action:"dropField",field:{...t}}),s.push({action:"addField",field:{...n}})):(n.dbName!==t.dbName&&s.push({action:"renameField",newName:n.dbName,oldName:t.dbName,field:t}),S(t,n)&&s.push({action:"changeField",oldField:{...t},newField:{...n}})),t.index!==n.index&&(!0===n.index?s.push({action:"addIndex",field:n}):s.push({action:"removeIndex",field:n}))):!0===n.isTablePart?a.push({action:"createTable",newTable:{...n}}):(s.push({action:"addField",field:{...n}}),!0===n.index&&s.push({action:"addIndex",field:n}))}for(const n of e)t.find(e=>e.id===n.id)||(!0===n.isTablePart?a.push({action:"dropTable",oldTable:{...n}}):(!0===n.index&&s.push({action:"removeIndex",field:n}),s.push({action:"dropField",field:{...n}})));return s},async createTable(e,t=(0,o.default)()){y.push(e);let a=`${t.format("YYYYMMDDHHmmss")}-create-table-${e.path}.js`,s=r.default.join(p,a);const n=[];let i=await b(e.fields,n);const u="\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {",c="\n },\n async down(queryInterface, Sequelize) {\n },\n}";let d=`${u}\n await queryInterface.createTable('${e.path}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const a=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=M(e.path,t,a):d+=P(e.path,t.dbName,a)}d+=`${c}`,await l.promises.writeFile(s,d);for(const e of n){t.add(1,"seconds"),a=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${e.dbName}.js`,s=r.default.join(p,a),i=await b(e.fields,[]),d=`${u}\n await queryInterface.createTable('${e.dbName}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const a=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=M(e.dbName,t,a):d+=P(e.dbName,t.dbName,a)}d+=`${c}`,await l.promises.writeFile(s,d)}return!0},async updateTable(e,t=(0,o.default)()){let a="";e.name!==e.dbName&&(a+=`\n await queryInterface.renameTable('${e.dbName}', '${e.name}')`);const s=[],n=this.prepareFieldsDifs(e.dbFields,e.fields,s);if(n.length>0){const s=[],r=[];for(const t of n){if("addField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=A(e.name,t.field):(a+=await O(e.name,t.field.dbName,t.field),"object"!==t.field.type||t.field.multiType||s.push(t.field))),"dropField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=C(e.name,t.field):(a+=F(e.name,t.field.dbName),"object"!==t.field.type||t.field.multiType||r.push(t.field),"object"===t.field.type&&t.field.multiType&&(a+=F(e.name,`${t.field.dbName.slice(0,-2)}Type`)))),"renameField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=I(e.name,t):a+=D(e.name,t.oldName,t.newName)),"changeField"===t.action&&(t.newField.multiType&&t.oldField.multiType?a+=v(e.name,t.oldField,t.newField):a+=await j(e,t.oldField,t.newField),"object"!==t.oldField.type||"object"===t.newField.type||t.oldField.multiType||r.push(t.oldField),"object"!==t.oldField.type||"object"!==t.newField.type||t.oldField.ref===t.newField.ref||t.oldField.multiType||t.newField.multiType||(r.push(t.oldField),s.push(t.newField)),"object"===t.oldField.type||"object"!==t.newField.type||t.newField.multiType||s.push(t.newField),"object"===t.oldField.type&&!t.oldField.multiType&&"object"===t.newField.type&&t.newField.multiType&&r.push(t.oldField),"object"===t.oldField.type&&t.oldField.multiType&&"object"===t.newField.type&&!t.newField.multiType&&(a+=F(e.name,`${t.oldField.dbName.slice(0,-2)}Type`),s.push(t.newField))),"addIndex"===t.action){const s=`${e.id.substring(24)}_${t.field.id.substring(24)}`;t.field.multiType&&"common"===t.field.multiTypeVariant?a+=M(e.name,t.field,s):a+=P(e.name,t.field.dbName,s)}"removeIndex"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=U(e.name,t.field):a+=k(e.name,t.field.dbName))}s.length>0&&y.push({path:e.name,fields:s}),r.length>0&&(g.push({path:e.name,fields:r}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")))}if(""!==a){let s=`${t.format("YYYYMMDDHHmmss")}-change-table-${e.isTablePart?"part-":""}${e.dbName}.js`,n=r.default.join(p,s),o=`\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {${a}\n },\n async down(queryInterface, Sequelize) {\n },\n}`;await l.promises.writeFile(n,o)}for(const a of s){if("createTable"===a.action){t.add(1,"seconds");let s=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${a.newTable.dbName}.js`,n=r.default.join(p,s);const o=await b(a.newTable.fields,[]),i=E(),u=R();let c=`${i}\n await queryInterface.createTable('${a.newTable.dbName}', {${o}\n })${u}`;const d=a.newTable.fields.filter(e=>!0===e.index);for(const e of d){const t=`${a.newTable.id.substring(24)}_${e.id.substring(24)}`;e.multiType&&"common"===e.multiTypeVariant?c+=M(a.newTable.dbName,e,t):c+=P(a.newTable.dbName,e.dbName,t)}c+=`${u}`,await l.promises.writeFile(n,c),y.push({path:e.name,fields:[a.newTable]})}if("changeTable"===a.action&&await this.updateTable({id:a.oldTable.id,dbName:a.oldTable.dbName,name:a.newTable.dbName,dbFields:a.oldTable.fields,fields:a.newTable.fields,isTablePart:!0},t.add(1,"seconds")),"dropTable"===a.action){g.push({path:e.name,fields:[a.oldTable]}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")),t.add(1,"seconds");let s=`${t.format("YYYYMMDDHHmmss")}-drop-table-part-${a.oldTable.dbName}.js`,n=r.default.join(p,s);const o=E(),i=R();let u=`${o}\n await queryInterface.dropTable('${a.oldTable.dbName}')${i}`;await l.promises.writeFile(n,u)}}return!0}}},6918:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(9896)),r=s(a(6928)),o=s(a(4716)),i={m:"YYYYMMDD-HHmm",h:"YYYYMMDD-HH",d:"YYYYMMDD"};t.default=function({path:e,interval:t="1d"}){const a=r.default.resolve(e);n.default.mkdirSync(a,{recursive:!0});const s=t.slice(-1),l=Number(t.slice(0,-1));if(!i[s]||!l)throw new Error(`Invalid log interval: ${t}`);let u=d((0,o.default)()),c=f(u);function d(e){const t="m"===s?e.clone().startOf("minute"):"h"===s?e.clone().startOf("hour"):e.clone().startOf("day"),a="m"===s?t.minute()%l:"h"===s?t.hour()%l:0;return t.subtract(a,s),t.format(i[s])}function f(e){return n.default.createWriteStream(r.default.join(a,`${e}.log`),{flags:"a"})}return{write(e){!function(){const e=d((0,o.default)());e!==u&&(c.end(),u=e,c=f(u))}(),c.write(e+"\n")}}}},6928:e=>{e.exports=require("path")},6961:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=s(a(8356)),o=n.default.Router(),i="report";o.get(`/${i}/settings/:id`,r.default.getSettings),o.post(`/${i}/result`,r.default.getResult),t.default=o},6980:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(1572)),r=a(7138),o=a(3903),i=a(9031),l=s(a(5788)),u=s(a(6836)),c=s(a(2282)),d=async(e,t)=>{const a=await l.default.models.User.findOne({where:{email:e}}),s=a?.language,n={en:{registration:{subject:"Confirm your email",hello:"Hello ",begining:",<br>Thank you for your registration. Your account requires activation. Click the link below to confirm your email address:<br><br>",middle:"<br><br>Here are your login details:<br>Login: ",end:"<br><br>Important Safety Tips:<br>1. Always keep your account details in a safe place.<br>2. Never reveal your login and password to anyone.<br>3. Change your password regularly.<br>4. If you suspect someone is using your account illegally, please let us know immediately."},passwordReset:{subject:"Password Reset",metter:"Password recovery for ",begining:"<br><br>Dear User,<br><br>We have received a request to change your account password ",middle:"<br>Click here to reset your password: ",end:"<br><br>If you do not want to reset your password, please ignore this message. The password will remain unchanged.<br><br>Sincerely,<br>Customer Service Team"},passwordResetConfirmation:{subject:"Password Reset Successful",main:"Dear User,<br><br>Your password has been successfully reset.<br><br>Sincerely,<br>Customer Service Team"},statusChange:{subject:"User status",start:"Dear User, <br><br>Your user status has been changed to:<br><br>",end:"<br><br>Sincerely,<br>Customer Service Team"}},pl:{registration:{subject:"Potwierdź swój email",hello:"Witaj ",begining:",<br>Dziękujemy za rejestracje. Twoje konto wymaga aktywacji. Kliknij poniższy link, aby potwierdzić swój adres e-mail:<br><br>",middle:"<br><br>Oto twoje dane logowania:<br>Login: ",end:"<br><br>Ważne wskazówki dotyczące bezpieczeństwa:<br>1. Zawsze trzymaj dane do Twojego konta w bezpiecznym miejscu.<br>2. Nigdy nie ujawniaj nikomu swojego loginu i hasła.<br>3. Regularnie zmieniaj swoje hasło.<br>4. Jeśli podejrzewasz, że ktoś używa Twojego konta nielegalnie, prosimy o natychmiastowe poinformowanie nas o tym."},passwordReset:{subject:"Reset hasła",metter:"Odzyskiwanie hasła do konta ",begining:"<br><br>Drogi Użytkowniku,<br><br>Otrzymaliśmy prośbę o zmianę hasła do konta ",middle:"<br>Kliknij, aby zresetować hasło: ",end:"<br><br>Jeśli nie chcesz resetować swojego hasła, zignoruj tę wiadomość. Hasło pozostanie niezmienione.<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"},passwordResetConfirmation:{subject:"Hasło Zresetowane Pomyślnie",main:"Drogi Użytkowniku,<br><br>Twoje hasło zostało pomyślnie zresetowane.<br><br>Z poważaniem,<br>Dzial Obslugi Klienta"},statusChange:{subject:"Status użytkownika",start:"Drogi Użytkowniku, <br><br>Twój status użytkownika został zmieniony na:<br><br>",end:"<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"}},fr:{registration:{subject:"Confirme ton email",hello:"Bonjour ",begining:",<br>Merci pour votre inscription. Votre compte nécessite une activation. Cliquez sur le lien ci-dessous pour confirmer votre adresse e-mail:<br><br>",middle:"<br><br>Voici vos identifiants de connexion:<br>Login: ",end:"<br><br>Conseils de sécurité importants:<br>1. Conservez toujours les détails de votre compte en lieu sûr.<br>2. Ne révélez jamais votre identifiant et votre mot de passe à qui que ce soit.<br>3. Changez votre mot de passe régulièrement.<br>4. Si vous pensez que quelqu'un utilise votre compte illégalement, veuillez nous en informer immédiatement."},passwordReset:{subject:"Réinitialisation du mot de passe",metter:"Récupération de mot de passe pour ",begining:"<br><br>Cher utilisateur,<br><br>Nous avons reçu une demande de changement de mot de passe de votre compte ",middle:"<br>Cliquez ici pour réinitialiser votre mot de passe: ",end:"<br><br>Si vous ne souhaitez pas réinitialiser votre mot de passe, veuillez ignorer ce message. Le mot de passe restera inchangé.<br><br>Cordialement,<br>L'équipe du service client"},passwordResetConfirmation:{subject:"Réinitialisation du mot de passe réussie",main:"Cher utilisateur,<br><br>Votre mot de passe a été réinitialisé avec succès.<br><br>Cordialement,<br>L'équipe du service client"},statusChange:{subject:"Statut de l'utilisateur",start:"Cher utilisateur, <br><br>Votre statut d'utilisateur a été changé en:<br><br>",end:"<br><br>Cordialement,<br>L'équipe du service client"}}};return s&&s in n?n[s][t]:n.en[t]};async function f(){return await l.default.models.EmailAccount.findOne({where:{isService:!0}})}function m(e){return{credentials:{host:e.smtpHost,port:e.smtpPort,secure:e.smtpTls,auth:{user:e.user,pass:e.password},tls:{rejectUnauthorized:e.smtpTls}}}}function p(e,t,a,s){return{from:e.name,to:t,bcc:e.name,subject:a,html:s}}t.default={async emailConfirmationInstructions(e,t,a,s){const r=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!r)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});r.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),r.password=u.default.decrypt(JSON.parse(r.password));const o=m(r),i=n.default.createTransport(o.credentials);i.verify(async function(n,o){if(n)c.default.error("Error in emailConfirmationInstructions ",{meta:n});else{const n=await d(e,"registration"),o=`${process.env.ALLOW_ORIGIN}/email-confirmation`,l=n.hello+t+n.begining+'<a href="'+o+"/"+s+'">Confirm Your Email Address</a>'+n.middle+a+n.end,u=p(r,e,n.subject,l);i.sendMail(u,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})},async register(e){try{if(await l.default.models.User.findOne({where:{[i.Op.or]:{email:e.email,login:e.login}}})){const e="A user with this login or email already exist";return c.default.error("Error in register Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}let t={email:e.email,login:e.login,uuid:(0,o.v4)(),password:u.default.createPasswordHash(e.password),name:e.name,isActive:!1,fullRights:!1,externalUser:!1,emailConfirmationToken:u.default.generateRandomToken(),referralToken:u.default.generateRandomToken(),isFirm:e.isFirm,firmName:e.firmName,phone:e.phone,country:e.country,companyDepartment:e.companyDepartment,commercialInChargeOfYou:e.commercialInChargeOfYou,notVatNumber:e.notVatNumber,vatNumber:e.vatNumber,address:e.address,postalCode:e.postalCode,city:e.city,deliveryDepartment:e.deliveryDepartment};const a=await async function(){return await l.default.models.User.findAll().then(e=>0===e.length).catch(()=>!1)}();return!0===a&&(t.isActive=!0,t.userState="Aktywny",t.fullRights=!0),await l.default.models.User.create(t).then(async e=>{c.default.info("New user was registered",{meta:JSON.stringify({id:e.id,name:e.name})}),!1===a&&this.emailConfirmationInstructions(e.email,e.name,e.login,e.emailConfirmationToken);const t={email:e.email,login:e.login,name:e.name};return{httpStatus:r.StatusCodes.OK,result:t}}).catch(e=>(c.default.error("Error in register Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:"User create error."}}))}catch(e){return c.default.error("Error in register Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},confirmEmailAddress:async e=>await l.default.models.User.findOne({where:{emailConfirmationToken:e}}).then(async e=>e?(e=await e.update({emailConfirmationToken:null}))?{httpStatus:r.StatusCodes.OK,result:!0}:(c.default.error("Error in confirmEmailAddress Service",{meta:"User not save."}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}}):(c.default.error("Error in confirmEmailAddress Service",{meta:"Token not find."}),{httpStatus:r.StatusCodes.NOT_FOUND,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.NOT_FOUND)}})).catch(e=>(c.default.error("Error in confirmEmailAddress Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{errorDetails:e}})),async resendEmailAddressConfirmationLink(e){try{let t=await l.default.models.User.findOne({where:{email:e}}),a=u.default.generateRandomToken();return t&&a?(t=await t.update({emailConfirmationToken:a}),t?(this.emailConfirmationInstructions(t.email,t.name,t.login,t.emailConfirmationToken),{httpStatus:r.StatusCodes.OK,result:!0}):{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:"Email is already confirmed or does not exist in our records."}}}catch(e){return c.default.error("Error in resendEmailAddressConfirmationLink Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async forgotPassword(e,t){try{if(!t)return c.default.error("Error in forgotPassword Service",{meta:"Client origin is not defined"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Client origin is not defined"}};const a=await l.default.models.User.findOne({where:{email:e}});if(!a)return c.default.error("Error in forgotPassword Service",{meta:"Email not found"}),{httpStatus:r.StatusCodes.NOT_FOUND,result:{message:"Email not found"}};let s=u.default.generateRandomToken();const o=Number("3600000")||36e5,i={passwordResetToken:s,passwordResetExpires:Date.now()+o},h=await a.update({...i});return h?async function(e,t,a,s,o){const i=await f();if(!i)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account not exist"}};if(!i.password)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account password not set"}};i.password=u.default.decrypt(JSON.parse(i.password));let l=m(i),h=n.default.createTransport(l.credentials);try{await h.verify()}catch(e){return c.default.error("Error in emailConfirmationInstructions ",{meta:e}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:`Email verification error. ${e}`}}}const y=await d(e,"passwordReset"),g=`${o}/password-reset`,b=y.metter+a+y.begining+a+y.middle+'<a href="'+g+"/"+s+'">Reset Password</a>'+y.end,w=p(i,e,y.subject,b);return await h.sendMail(w).then(e=>(c.default.verbose("Service Email sent",{meta:e}),{httpStatus:r.StatusCodes.OK,result:{message:"OK"}})).catch(e=>(c.default.error("Error while sending service email",{meta:e}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:e}}))}(h.email,h.name,h.login,h.passwordResetToken,t):(c.default.error("Error in forgotPassword Service",{meta:"User not updated"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}})}catch(e){return c.default.error("Error in forgotPassword Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async isPasswordResetTokenValid(e){try{return await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}})?{httpStatus:r.StatusCodes.OK,result:!0}:{httpStatus:r.StatusCodes.BAD_REQUEST,result:!1}}catch(e){return c.default.error("Error in isPasswordResetTokenValid Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async resetPassword(e,t){try{let a=await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}});return a?(a=await a.update({passwordResetToken:null,passwordResetExpires:null,password:u.default.createPasswordHash(t)}),a?(async function(e){const t=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!t)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});t.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),t.password=u.default.decrypt(JSON.parse(t.password));const a=m(t),s=n.default.createTransport(a.credentials);s.verify(async function(a,n){if(a)c.default.error("Error in emailConfirmationInstructions ",{meta:a});else{const a=await d(e,"passwordResetConfirmation"),n=p(t,e,a.subject,a.main);s.sendMail(n,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}(a.email,a.name),{httpStatus:r.StatusCodes.OK,result:!0}):{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:r.StatusCodes.NOT_FOUND,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.NOT_FOUND)}}}catch(e){return c.default.error("Error in resetPassword Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async emailOnUserStateChange(e,t){const a=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!a)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});a.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),a.password=u.default.decrypt(JSON.parse(a.password));const s=m(a),r=n.default.createTransport(s.credentials);r.verify(async function(s,n){if(s)c.default.error("Error in emailConfirmationInstructions ",{meta:s});else{const s=await d(e,"statusChange"),n=p(a,e,s.subject,s.start+t+s.end);r.sendMail(n,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}}},6982:e=>{e.exports=require("crypto")},7099:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(2282));let r=null;t.default={registerSender(e){r=e},async sendSms(e,t,a=!1){if(r)return r(e,t,a);throw n.default.warn("SMS service not configured — no sender registered. Call smsService.registerSender() at startup."),new Error("SMS service not configured")}}},7135:e=>{e.exports=require("node-sql-parser")},7138:e=>{e.exports=require("http-status-codes")},7173:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(9031),r=s(a(5788)),o=s(a(4716)),i=s(a(9896)),l=s(a(7825)),u=s(a(2555)),c=s(a(3275)),d=s(a(2282));let f={};function m(e,t,a){if("common"===t.multiTypeVariant){const s=[];if(e[`_${t.dbName}Type`]={type:n.DataTypes.STRING,allowNull:!0!==t.notNull},t.type.includes("string")){const a=`_${t.dbName}ST`;e[a]={type:n.DataTypes.STRING(t.typeOptions.length)},s.push(a)}if(t.type.includes("text")){const a=`_${t.dbName}TX`;e[a]={type:n.DataTypes.TEXT},s.push(a)}if(t.type.includes("integer")){const a=`_${t.dbName}IN`;e[a]={type:n.DataTypes.INTEGER},s.push(a)}if(t.type.includes("decimal")){const a=`_${t.dbName}DC`;e[a]={type:n.DataTypes.DECIMAL(t.typeOptions?.precision,t.typeOptions?.scale)},s.push(a)}if(t.type.includes("boolean")){const a=`_${t.dbName}BL`;e[a]={type:n.DataTypes.BOOLEAN},s.push(a)}if(t.type.includes("date")){const a=`_${t.dbName}DT`;e[a]={type:n.DataTypes.DATE},s.push(a)}if(c.default.typeIncludesRef(t.type)){const a=`_${t.dbName}Ref`;e[a]={type:n.DataTypes.STRING(100)},s.push(a)}a.push(...s),e[`${t.dbName}`]={type:n.DataTypes.VIRTUAL(n.DataTypes.ABSTRACT,[`_${t.dbName}Type`,...s]),get(){const e=this.getDataValue(`_${t.dbName}Type`);if(!e)return null;const a=c.default.getFieldNameByType(t.dbName,e);return a?this.getDataValue(a):null},set(e){this.setDataValue(`__pending_${t.dbName}`,e)}}}else e[t.dbName]={type:n.DataTypes.UUID,allowNull:!0!==t.notNull,_index:!0===t.index},e[`${t.name}Type`]={type:n.DataTypes.STRING,allowNull:!0!==t.notNull,_index:!0===t.index}}function p(e){const t={foreignKey:e.field.dbName,as:e.field.name};return e.field.notNull&&(t.allowNull=!1),e.field.index&&(t.index=!0),e.field.fullSearch&&(t._fullSearch=e.field.fullSearch),t}function h(e){const t={type:n.DataTypes.STRING},a=e.type.toUpperCase();return"STRING"===a?e.typeOptions?.length&&0!==e.typeOptions?.length?t.type=n.DataTypes[a](e.typeOptions?.length):t.type=n.DataTypes[a]():"JSON"===a?(t.type=n.DataTypes.TEXT(),t.get=function(){const t=this.getDataValue(e.name);return t?JSON.parse(t):null},t.set=function(t){this.setDataValue(e.name,t?JSON.stringify(t):t)}):"ENUM"===a?(t.type=n.DataTypes.ENUM,t.values=e.ref?f[e.ref]:["empty"],t._ref=e.ref):t.type=n.DataTypes[a](),"UUID"===a&&"id"===e.name&&(t.defaultValue=n.DataTypes.UUIDV4()),e.primaryKey&&(t.primaryKey=!0),e.notNull&&(t.allowNull=!1),e.index&&(t._index=!0),null!==e.defaultValue&&void 0!==e.defaultValue&&(t.defaultValue=e.defaultValue),e.fullSearch&&(t._fullSearch=e.fullSearch),t}function y(e,t,a,s,o){let i={};const l=[];let u=!1;for(const y of e.fields)y.multiType?("common"===y.multiTypeVariant&&(u=!0),m(i,y,l)):"object"!==y.type&&(i[y.dbName]=h(y)),"object"===y.type&&a.push({objectName:t.name,tableName:e.name,field:y});class f extends n.Model{}const p={title:e.title,name:e.name,fields:e.fields,model:f.init(i,{sequelize:r.default,modelName:e.model,tableName:e.dbName})};if(t.model.hasMany(p.model,{foreignKey:"parentId",as:e.name,onDelete:"CASCADE",hooks:!0}),l.length>0){const g=p.model.prototype.toJSON;p.model.prototype.toJSON=function(){const t=g?g.call(this):Object.assign({},this.get?this.get():this);for(const e of l)e in t&&delete t[e];if(e.fields){const a=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of a){const a=this.dataValues&&this.dataValues[e.dbName];a&&"object"==typeof a&&(t[e.dbName]=a)}}return t}}if(u){function b(t){if(!e.fields)return;const a=c.default.typesSufixes();for(const s of e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const e=`__pending_${s.dbName}`;if(!Object.prototype.hasOwnProperty.call(t.dataValues,e))continue;const n=t.getDataValue(e),r=t.getDataValue(`_${s.dbName}Type`);for(const e in a){const n=`_${s.dbName}${a[e]}`;t.setDataValue(n,null)}if(c.default.typeIncludesRef(s.type)&&t.setDataValue(`_${s.dbName}Ref`,null),r){const e=c.default.getFieldNameByType(s.dbName,r);e&&(c.default.isRefType(r)&&"object"==typeof n?t.setDataValue(e,n.id||null):t.setDataValue(e,n))}delete t.dataValues[e]}}p.model.addHook("beforeSave",e=>{b(e)}),p.model.addHook("beforeBulkCreate",e=>{for(const t of e)b(t)}),p.model.addHook("afterFind","refObjectsPreload",async t=>{if(!e.fields)return;if(!t)return;const a=Array.isArray(t)?t:[t],s=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),n=[];for(const e of a)for(const t of s){const a=e.getDataValue(`_${t.dbName}Type`),s=e.getDataValue(`_${t.dbName}Ref`);if(!a||!s)continue;const r=a.match(/^(catalog|document)\.(.+)$/);if(!r)continue;const i=r[1],l=r[2],u=o[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(s,{attributes:f}).then(a=>{if(!a)return;const s=a.get?a.get():a;if("catalog"===i){const a={id:s.id,name:s.name??null,presentation:s.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}else{const a={id:s.id,numberStr:s.numberStr??null,date:s.date??null,presentation:s.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});n.push(m)}n.length>0&&await Promise.all(n)})}for(const w of e.fields)w.leading&&s.push({field:w,belongTable:p.model});t.tables[e.name]=p}function g(e,t,a){let s={},o=[],i=[];s.id={type:n.DataTypes.UUID,primaryKey:!0,allowNull:!1},s.period={type:n.DataTypes.DATE,allowNull:!1,_index:!0};for(const e of t.fields)"dimension"!==e.role&&"resource"!==e.role||("object"!==e.type?s[e.dbName]=h(e):a.push({objectName:t.name,accModel:!0,field:e}),"dimension"===e.role&&o.push(l.default.cloneDeep(e)),"resource"===e.role&&i.push(l.default.cloneDeep(e)));class u extends n.Model{}const c={name:`${t.name}Acc`,dimensions:o,resources:i,model:u.init(s,{sequelize:r.default,modelName:`${e.model}Acc`,tableName:`${e.path}_acc`})};t.accTable=c}t.default=async()=>{f=await u.default.initEnums();const e=await r.default.query('SELECT * FROM app_objects WHERE app_objects."markedToDelete" = false AND app_objects."dbTableName" IS NOT NULL',{type:n.QueryTypes.SELECT}),t={},a=[],s=[];for(const i of e){let e={},l=[];const u=JSON.parse(i.dbFields),f=[];let p=!1;for(const t of u.filter(e=>!e.isTablePart))t.multiType?("common"===t.multiTypeVariant&&(p=!0),m(e,t,f)):"object"!==t.type&&(e[t.dbName]=h(t)),"object"===t.type&&a.push({objectName:i.name,field:t});if(i.indexes){const e=JSON.parse(i.indexes);for(const t of e)l.push({name:t.name,fields:t.fields,unique:t.unique,using:t.using})}const b=i.reflection?JSON.parse(i.reflection):{};"catalog"===i.type&&(e.presentation={type:new n.DataTypes.VIRTUAL(n.DataTypes.STRING,b.fields?b.fields:["name"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let a;for(;null!==(a=e.exec(b.template));)a.index===e.lastIndex&&e.lastIndex++,a.forEach(e=>{t.push(e)});let s=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const n=u.find(e=>e.dbName===t);if(n)if("date"===n.type){const e=n.format&&""!==n.format?n.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];s=s.replace(e,a)}return s}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("name")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"name"}),"document"===i.type&&(e.presentation={type:new n.DataTypes.VIRTUAL(n.DataTypes.STRING,b.fields?b.fields:["numberStr"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let a;for(;null!==(a=e.exec(b.template));)a.index===e.lastIndex&&e.lastIndex++,a.forEach(e=>{t.push(e)});let s=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const n=u.find(e=>e.dbName===t);if(n)if("date"===n.type){const e=n.format&&""!==n.format?n.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];s=s.replace(e,a)}return s}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("numberStr")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"numberStr"});class w extends n.Model{}const _={id:i.id,name:i.name,singularName:i.singularName,title:i.title,path:i.path,tableName:i.dbTableName,type:i.type,confirmation:i.confirmation,system:i.system,configurationData:i.configurationData,hierarchic:i.hierarchic,api:i.api?JSON.parse(i.api):null,staticAPI:i.staticAPI?JSON.parse(i.staticAPI):{},fields:u,reflection:b,withoutTimestamps:i.withoutTimestamps,processedPresentation:i.processedPresentation,accessRoleId:i.accessRoleId,accumulationRegister:i.accumulationRegister,model:w.init(e,{sequelize:r.default,modelName:i.model,tableName:i.dbTableName,indexes:l,timestamps:!0!==i.withoutTimestamps,mainModel:!0}),accTable:null,tables:{},controllers:{}};u.find(e=>!0===e.password)&&(_.model.prototype.toJSON=function(){const e=Object.assign({},this.get());for(const t of u.filter(e=>!0===e.password))delete e[t.name];return e});for(const e of u)e.leading&&s.push({field:e,belongTable:_.model});for(const e of u.filter(e=>e.isTablePart))y(e,_,a,s,t);if("register"===_.type&&_.accumulationRegister&&g(i,_,a),p){if(f.length>0){const e=_.model.prototype.toJSON;_.model.prototype.toJSON=function(){const t=e?e.call(this):Object.assign({},this.get?this.get():this);for(const e of f)e in t&&delete t[e];const a=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of a){const a=this.dataValues&&this.dataValues[e.dbName];a&&"object"==typeof a&&(t[e.dbName]=a)}return t}}_.model.addHook("beforeSave",e=>{for(const t of u.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const a=`__pending_${t.dbName}`;if(!Object.prototype.hasOwnProperty.call(e.dataValues,a))continue;const s=e.getDataValue(a),n=e.getDataValue(`_${t.dbName}Type`),r=c.default.typesSufixes();for(const a in r){const s=`_${t.dbName}${r[a]}`;e.setDataValue(s,null)}if(c.default.typeIncludesRef(t.type)&&e.setDataValue(`_${t.dbName}Ref`,null),n){const a=c.default.getFieldNameByType(t.dbName,n);a&&(c.default.isRefType(n)&&"object"==typeof s?e.setDataValue(a,s.id||null):e.setDataValue(a,s))}delete e.dataValues[a]}}),_.model.addHook("afterFind","refObjectsPreload",async e=>{if(!e)return;const a=Array.isArray(e)?e:[e],s=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),n=[];for(const e of a)for(const a of s){const s=e.getDataValue(`_${a.dbName}Type`),r=e.getDataValue(`_${a.dbName}Ref`);if(!s||!r)continue;const o=s.match(/^(catalog|document)\.(.+)$/);if(!o)continue;const i=o[1],l=o[2],u=t[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(r,{attributes:f}).then(t=>{if(!t)return;const s=t.get?t.get():t;if("catalog"===i){const t={id:s.id,name:s.name??null,presentation:s.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}else{const t={id:s.id,numberStr:s.numberStr??null,date:s.date??null,presentation:s.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});n.push(m)}n.length>0&&await Promise.all(n)})}t[_.name]=_}const l=[];for(const s of a){const a=t[s.objectName];if(a)if(s.field.multiType){if(!Array.isArray(s.field.ref))continue;const t=[];let n=!1;for(const r of s.field.ref){const s=e.find(e=>e.name===r);if(!s){n=!0,console.info("No belongs to object: ",`${a.name} -> ${r}`);break}t.push(s)}if(!n){const e=[];let n=!1;for(const o of t){const i=r.default.models[o.model];if(!i){n=!0,l.push({refField:s,object:a,belongToObject:t});break}e.push({object:o,model:i})}if(!n){const t=s.tableName?a.tables[s.tableName].model:s.accModel?a.accTable?.model:a.model;for(const n of e){const e=p(s);e.constraints=!1,e.as=`${s.field.name}${n.model.name}`,t.belongsTo(n.model,e);let r=s.accModel?`${a.name}Acc`:a.name;n.model.associations[r]&&(r=`${s.field.name}${r.charAt(0).toUpperCase()+r.slice(1)} `);const o={foreignKey:s.field.dbName,_noTablePart:!0,_registerRecords:"recorder"===s.field.name||void 0,constraints:!1,as:r,scope:{[`${s.field.name}Type`]:n.object.name}};n.model.hasMany(t,o)}t.addHook("afterFind",t=>{Array.isArray(t)||(t=t?[t]:[]);for(const a of t){const t=e.find(e=>a[`${s.field.name}Type`]===e.object.name);t&&void 0!==a[`${s.field.name}${t.model.name}`]?(a[s.field.name]=a[`${s.field.name}${t.model.name}`],a.dataValues[s.field.name]=a[`${s.field.name}${t.model.name}`]):(a[s.field.name]=null,a.dataValues[s.field.name]=null);for(const t of e)delete a[`${s.field.name}${t.model.name}`],delete a.dataValues[`${s.field.name}${t.model.name}`]}})}}}else{const t=e.find(e=>e.name===s.field.ref);if(t){const e=r.default.models[t.model];if(e){const t=p(s);if(s.tableName)a.tables[s.tableName].model.belongsTo(e,t);else if(s.accModel)a.accTable?.model.belongsTo(e,t);else try{a.model.belongsTo(e,t)}catch(a){console.error("Error in belongsTo: ",{belongToModel:e,fieldData:t},a)}}else l.push({refField:s,object:a,belongToObject:t})}else console.info("No belongs to object: ",`${a.name} -> ${s.field.name} (${s.field.ref})`)}else console.info("No object: ",s.objectName)}for(const a of s){const s=t[a.field.ref];if(s)s.model.hasMany(a.belongTable,{foreignKey:a.field.dbName,as:a.field.leadingAlias,_noTablePart:!0});else{const t=e.find(e=>e.name===a.field.ref);t?l.push({leading:!0,leadingField:a,model:t.model}):console.info("No app object for leading field: ",a.field.ref)}}for(const e in t){if(!t[e].processedPresentation)continue;const a=t[e];let s;const n=`${a.type}s/${a.name}/server.module.js`,r=`${process.cwd()}/src/modules/${n}`;i.default.existsSync(r)&&(s=require(r)),s?.initPresentation&&a.model.addHook("afterFind","addPresentationGetter",async e=>{Array.isArray(e)||(e=e?[e]:[]);for(const t of e){const e=await s.initPresentation(t);t.setDataValue("presentation",e)}})}for(const e of l)console.warn("Missing ref: ",e);return t}},7174:e=>{e.exports=require("compression")},7252:e=>{e.exports=require("express")},7281:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=a(9876),o=s(a(1688)),i=n.default.Router();i.get("/access_log",o.default.canRead({key:"access_logs"}),r.accessLogsController.getFilesInfo),t.default=i},7501:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(9031),r=s(a(5788)),o=s(a(2282)),i=s(a(2103)),l=a(9239);t.default={async initCommonCommands(e){const t=await async function(){try{return(await r.default.query('\n SELECT\n command_groups.id AS "id",\n command_groups.name AS "name",\n command_groups."title" AS "title",\n command_groups."objectType" AS "objectType",\n command_groups."viewType" AS "viewType",\n command_groups."lang" AS "lang",\n command_groups."presentationType" AS "presentationType",\n command_groups."variant" AS "variant",\n command_groups."icon" AS "icon",\n command_groups."hidden" AS "hidden",\n command_groups."tooltip" AS "tooltip",\n command_groups."classes" AS "classes",\n command_groups."styles" AS "styles",\n groups_objects."objectId" AS "objectId"\n FROM \n command_groups\n LEFT JOIN \n command_groups_objects as "groups_objects"\n ON \n groups_objects."parentId" = command_groups.id \n WHERE\n command_groups."markedToDelete" = false',{type:n.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,icon:t.icon,variant:t.variant,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,isGroup:!0,objects:[],items:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[])}catch(e){return console.error(e),[]}}(),a=await async function(e){try{const t=(await r.default.query('\n SELECT\n common_commands.id AS "id",\n common_commands.name AS "name",\n common_commands."title" AS "title",\n common_commands."objectType" AS "objectType",\n common_commands."viewType" AS "viewType",\n common_commands."module" AS "module",\n common_commands."moduleV3" AS "moduleV3",\n common_commands."lang" AS "lang",\n common_commands."presentationType" AS "presentationType",\n common_commands."variant" AS "variant",\n common_commands."icon" AS "icon",\n common_commands."hidden" AS "hidden",\n common_commands."tooltip" AS "tooltip",\n common_commands."classes" AS "classes",\n common_commands."styles" AS "styles",\n common_commands."groupId" AS "groupId",\n commands_objects."objectId" AS "objectId"\n FROM \n common_commands\n LEFT JOIN \n common_commands_objects as "commands_objects"\n ON \n commands_objects."parentId" = common_commands.id \n WHERE\n common_commands."markedToDelete" = false',{type:n.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,module:t.module,moduleV3:t.moduleV3,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,variant:t.variant,icon:t.icon,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,groupId:t.groupId,isGroup:!1,objects:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[]),a=/^\s*export\s+/gm,s=/^\s*(?:async\s+)?function\s+commandProcessing\s*\([^)]*\)\s*{[\s\S]*?}/gm;for(const n of t){if(n.module){n.module=n.module.replace(a,""),s.lastIndex=0;const t=s.test(n.module);let r="";r=t?`function main() {${n.module.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(r);n.module=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),n.module=null}}if(n.moduleV3){n.moduleV3=n.moduleV3.replace(a,"function "),s.lastIndex=0;const t=s.test(n.moduleV3);let r="";r=t?`function main() {${n.moduleV3.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(r);n.moduleV3=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),n.moduleV3=null}}}return t}catch(e){return console.error(e),[]}}(e);for(const e of a)if(e.groupId){const a=t.find(t=>t.id===e.groupId&&t.isGroup);a&&a.items.push({...e})}else t.push({...e});return t}}},7565:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=s(a(6304)),o=n.default.Router(),i="app";o.get(`/${i}/info`,r.default.getAppInfo),o.get(`/${i}/objects`,r.default.getObjects),o.get(`/${i}/object_meta`,r.default.getObjectMetadata),o.get(`/${i}/object_fields`,r.default.getObjectFields),o.get(`/${i}/subordination`,r.default.getSubordination),o.get(`/${i}/registers_meta`,r.default.getRegistersMetadata),o.get(`/${i}/setting`,r.default.getSetting),o.get(`/${i}/enums`,r.default.getEnums),o.get(`/${i}/app-objects`,r.default.getAppObjects),o.get(`/${i}/common-modules`,r.default.getCommonModules),o.get(`/${i}/event-subscriptions`,r.default.getEventSubscriptions),o.get(`/${i}/view-settings/:id`,r.default.getViewSettings),o.get(`/${i}/store`,r.default.getClientStore),o.get(`/${i}/common-commands`,r.default.getCommonCommands),o.get(`/${i}/has-role`,r.default.hasRole),o.post(`/${i}/setting`,r.default.setSetting),o.post(`/${i}/raw-query`,r.default.rawQuery),o.post(`/${i}/exec-func`,r.default.execFunc),o.post(`/${i}/exec-common-module`,r.default.execCommonModuleFunc),t.default=o},7636:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(8608)),r=a(696),o=s(a(4716)),i=s(a(5788)),l=s(a(2282)),u=s(a(2555));function c(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={vertical:"middle",horizontal:"left",shrinkToFit:!0,wrapText:!0},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"e9ecef"}}}function d(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={horizontal:"left"},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"f2f5fa"}}}function f(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0}}function m(e,t,a,s,n,r){for(const o of t){let t=!0===s?1:e.fields.length;if(n.getRow(a).outlineLevel=r,o.isGroup){const i=n.getCell(a,1);if(y(e,i,o.groups),o.children.length>0?d(i):f(i),n.mergeCells(a,1,a,t),t+=1,e.colGroups.length>0){for(const e of o.totals){const s=n.getCell(a,t);s.value=e.value||0,o.children.length>0?d(s):f(s),s.alignment={horizontal:e.textAlign?e.textAlign:"left"},s.numFmt=p(e.format),t+=1}if(e.showXTotal)for(const s of e.calcs){const e=o.totals.reduce((e,t)=>t.id===s.id?e+t.value:e,0),r=n.getCell(a,t);r.value=e||0,o.children.length>0?d(r):f(r),r.alignment={horizontal:s.textAlign?s.textAlign:"left"},r.numFmt=p(s.format),t+=1}}else for(const e of o.totals){const s=n.getCell(a,t);s.value=e.value||0,o.children.length>0?d(s):f(s),s.alignment={horizontal:e.textAlign?e.textAlign:"left"},s.numFmt=p(e.format),t+=1}a+=1,o.children.length>0&&(a=m(e,o.children,a,s,n,r+1))}else{for(let t=0;t<e.fields.length;t++){const s=n.getCell(a,t+1);h(s,e.fields[t],o,e),f(s),s.alignment={horizontal:e.fields[t].textAlign}}let t=e.fields.length+1;if(e.colGroups.length>0){const s=o[e.colGroups[0].name],r={};for(const i of e.cols)for(let l=0;l<e.calcs.length;l++){let u=0;("object"===e.colGroups[0].valueType&&i.id===s?.id||i===s)&&(u=Number(o[e.calcs[l].name]||0));const c=n.getCell(a,t);c.value=u||0,f(c),c.alignment={horizontal:e.calcs[l].textAlign?e.calcs[l].textAlign:"left"},c.numFmt=p(e.calcs[l].format),Object.hasOwnProperty.call(r,e.calcs[l].name)?r[e.calcs[l].name]+=Number(u):r[e.calcs[l].name]=Number(u),t+=1}if(e.showXTotal)for(let s=0;s<e.calcs.length;s++){let o=r[e.calcs[s].name];const i=n.getCell(a,t+s);i.value=o||0,f(i),i.alignment={horizontal:e.calcs[s].textAlign?e.calcs[s].textAlign:"left"},i.numFmt=p(e.calcs[s].format)}}else if(e.rowGroups.length>0)for(let s=0;s<e.calcs.length;s++){let r=Number(o[e.calcs[s].name]||0);const i=n.getCell(a,t+s);i.value=r||0,f(i),i.alignment={horizontal:e.calcs[s].textAlign?e.calcs[s].textAlign:"left"},i.numFmt=p(e.calcs[s].format)}a+=1}}return a}function p(e){let t=null;if(e){const a=JSON.parse(e||'{"NFD": 3}'),s=0;a.NFD&&(t=s.toFixed(a.NFD))}return t}function h(e,t,a,s){let n=a[t.name]||null;switch(t.valueType){case"number":{let a=parseFloat(n);isNaN(a)&&(a=0),e.value=a||0,t.format&&(e.numFmt=p(t.format));break}case"date":default:e.value=n||"";break;case"object":e.value=n.name||"";break;case"boolean":e.value=Boolean(n||!1),e.numFmt="BOOLEAN";break;case"enum":if(n&&t.ref){const e=s.enums[t.ref].find(e=>e.value===n);n=e?e.title:n}e.value=n||""}}function y(e,t,a){if(1===a.length)switch(a[0].valueType){case"number":t.value=Number(a[0].value||0);break;case"date":""===a[0].value?t.value=null:a[0].format?t.value=(0,o.default)(a[0].value,a[0].format).toDate()||null:t.value=a[0].value||null;break;case"object":t.value=a[0].value.name||"";break;case"boolean":t.value=Boolean(a[0].value||!1),t.numFmt="BOOLEAN";break;default:t.value=a[0].value||""}else{let s="";for(let t=0;t<a.length;t++)"object"===a[t].valueType?s+=a[t].value?.name||e.lang.undefined:"boolean"===a[t].valueType?s+=a[t].value?e.lang.boolean.true:e.lang.boolean.false:s+=a[t].value,t<a.length-1&&(s=`${s}, `);t.value=s||""}}t.default={async generateExcel(e,t=null){const a={...e.body};if(a.rowGroups.length>1){const e=[];let t=[];for(let s=0;s<a.rowGroups.length;s++)!0!==a.rowGroups[s].withParent&&0!==s&&(e.push(t.length>1?t:t[0]),t=[]),t.push(a.rowGroups[s]),s===a.rowGroups.length-1&&e.push(t.length>1?t:t[0]);a.rowGroups=e}a.rowGroups.length>0&&(a.fields=a.fields.filter(e=>!a.calcs.find(t=>t.name===e.name))),a.enums=await async function(e){try{const t={};let a=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const s of a)t[s.name]=s.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(a.langCode);const s=new n.default.Workbook,o=s.addWorksheet("Sheet 1",{pageSetup:{paperSize:9,orientation:"landscape"}});let f=1;if(a.periodPresentation){let e=a.periodPresentation.length>20?a.lang.byPeriod:a.lang.byDate;o.getCell(f,1).value=`${e}:`,o.getCell(f,2).value=a.periodPresentation,f++}if(Array.isArray(a.filterPresentation)&&a.filterPresentation.length>0){o.getCell(f,1).value=`${a.lang.filter}:`;for(const e of a.filterPresentation)o.getCell(f,2).value=e,f++}const h=a.rowGroups.length>0&&!0===a.hideDetails;let y=f,g=a.rowGroups.length+(!0===h?0:1);g=a.colGroups.length>0&&g<2?2:g;let b=!0===h?1:a.fields.length;if(a.rowGroups.length>0){const e=1===a.rowGroups.length&&a.colGroups.length>0&&h?1:0;a.rowGroups.map(t=>{const a=o.getCell(f,1);a.value=function(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}(t),c(a),o.mergeCells(f,1,f+e,b),f+=1})}!0!==h&&(a.fields.map((e,t)=>{const a=o.getCell(f,t+1);c(a),a.value=e.title}),f+=1);const w=a.calcs.length;if(a.colGroups.length>0){for(const e of a.cols){const t=o.getCell(y,b+1);t.value=e.name,c(t),o.mergeCells(y,b+1,y,b+w),a.calcs.map((e,t)=>{const a=o.getCell(y+1,b+t+1);a.value=e.title,c(a),o.mergeCells(y+1,b+t+1,y+g-1,b+t+1)}),b+=w}if(a.showXTotal){const e=o.getCell(y,b+1);e.value=a.lang.total,c(e),o.mergeCells(y,b+1,y,b+w),a.calcs.map((e,t)=>{const a=o.getCell(y+1,b+t+1);a.value=e.title,c(a),o.mergeCells(y+1,b+t+1,y+g-1,b+t+1)})}}else a.rowGroups.length>0&&a.calcs.map((e,t)=>{const a=o.getCell(y,b+t+1);a.value=e.title,c(a),o.mergeCells(y,b+t+1,y+g-1,b+t+1)});f=m(a,a.data,y+g,h,o,0);let _=1;if(a.showYTotal>0&&a.totals.length>0){let e=!0===h?1:a.fields.length;if(a.rowGroups.length>0){const t=o.getCell(f,1);t.value=a.lang.total,d(t),o.mergeCells(f,1,f,e),a.totals.forEach((t,a)=>{_=e+a+1;const s=o.getCell(f,_);s.value=t.value||0,d(s),s.numFmt=p(t.format),s.alignment={horizontal:t.textAlign?t.textAlign:"left"}}),a.colGroups.length>0&&a.showXTotal&&a.calcs.map((t,s)=>{const n=a.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);_=e+a.totals.length+s+1;const r=o.getCell(f,_);r.value=n||0,d(r),r.numFmt=p(t.format),r.alignment={horizontal:t.textAlign?t.textAlign:"left"}})}else{let e=!0,t=1;for(const s of a.fields){const n=a.totals.find(e=>e.id===s.id);if(n){if(!0===e){const s=o.getCell(f,1);s.value=a.lang.total,d(s),o.mergeCells(f,1,f,t-1),e=!1}const r=o.getCell(f,t);r.value=Number(n.value||0),d(r),r.numFmt=p(n.format),r.alignment={horizontal:s.textAlign?s.textAlign:"left"}}else if(!0!==e){const e=o.getCell(f,t);e.value="",d(e)}_=t,t++}}}return function(e,t){e.columns.forEach(e=>{let a=6;e.eachCell(e=>{if(e.row>=t&&!e.isMerged){let t;if(e.numFmt&&null!=e.value)switch(e.type){case n.default.ValueType.Date:{const a=function(e){const t=e.getTimezoneOffset()/1440;return e.getTime()/864e5+(25569-t)}(e.value);t=(0,r.format)(e.numFmt,a).length;break}case n.default.ValueType.Number:default:t=(0,r.format)(e.numFmt,e.value).length}else t=e.value.toString().length;a=Math.max(a,t)}}),a>50&&(a=50),e.width=a+2})}(o,y),function(e){const t=e.getCell(e.rowCount,e.columnCount);e.pageSetup.printArea=`A1:${t.address}`}(o),t&&(t.status(200),t.setHeader("Content-Type","text/xlsx"),t.setHeader("Content-Disposition","attachment; filename=Excel.xlsx"),s.xlsx.write(t).then(function(){t.end()})),s}}},7825:e=>{e.exports=require("lodash")},7927:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.smsService=t.migrationsService=t.eventService=t.registerService=t.seederService=t.cryptoGen=t.defineObjects=t.logger=t.appService=t.documentService=t.controllerService=t.commonService=t.accessRights=t.sequelize=t.app=void 0;const n=s(a(6928)),r=s(a(7252)),o=s(a(7174)),i=s(a(6898)),l=s(a(2525)),u=s(a(8577)),c=a(3903),d=s(a(8278)),f=s(a(5977)),m=s(a(3857)),p=s(a(1763)),h=s(a(6456)),y=s(a(5560)),g=s(a(3407)),b=s(a(3464)),w=s(a(6797)),_=s(a(2362));t.eventService=_.default;const S=s(a(5788));t.sequelize=S.default;const v=(0,m.default)(f.default.Store);process.on("unhandledRejection",e=>console.error(e)),process.on("uncaughtException",e=>console.error(e)),process.on("warning",e=>console.warn(e.stack));const E=(0,r.default)();t.app=E,E.use(r.default.json({limit:"100mb"})),E.use(r.default.urlencoded({extended:!1})),E.use((0,i.default)()),(0,h.default)(E),E.use((0,l.default)()),E.use((0,o.default)()),E.use(r.default.static(n.default.join("src","../public")));const R={origin:[...(process.env.ALLOW_ORIGIN||"").split(","),"app://."],methods:["OPTIONS","GET","POST","PUT","PATCH","DELETE"],allowedHeaders:["Content-Type","Authorization","x-access-token","x-api-key","device_uuid","Access-Control-Allow-Origin","Access-Control-Allow-Credentials","x-client-version"],credentials:!0};E.use((0,u.default)(R)),a(9);const T={genid:()=>(0,c.v4)(),store:new v({db:S.default,table:"Session",extendDefaultFields:function(e,t){const a=t?.passport?.user;return{id:(0,c.v4)(),data:e.data,expires:e.expires,userId:a,licNumber:t?.license?.number||null,clientType:t?.clientType||null}}}),secret:"Mk9pZ2Adth",resave:!1,rolling:!0,saveUninitialized:!1,cookie:{httpOnly:!0,maxAge:Number(process.env.SESSION_MAX_AGE||"900000"),secure:!1}};E.use((0,f.default)(T));const $=(0,p.default)({windowMs:6e4,max:1e5,statusCode:429});E.use($),async function(e){try{await(0,y.default)(e),(0,g.default)(e)}catch(e){console.error(e)}finally{b.default.init(e.locals.objects)}}(E),w.default.initializePassport(d.default),E.use(d.default.initialize()),E.use(d.default.session()),_.default.init(E),E.set("views",n.default.join("src","views")),E.set("view engine","pug"),E.use((e,t,a,s)=>{console.error(e),a.locals.message=e.message,a.locals.error="development"===t.app.get("env")?e:{},a.status(e.status||500),a.render("error")});const N=s(a(1688));t.accessRights=N.default;const O=s(a(2282));t.logger=O.default;const A=s(a(2555));t.commonService=A.default;const C=s(a(3958));t.controllerService=C.default;const D=s(a(4621));t.appService=D.default;const I=s(a(6224));t.defineObjects=I.default;const j=s(a(6836));t.cryptoGen=j.default;const x=s(a(2671));t.documentService=x.default;const F=s(a(9880));t.seederService=F.default;const P=s(a(6299));t.registerService=P.default;const M=s(a(6910));t.migrationsService=M.default;const k=s(a(7099));t.smsService=k.default},8278:e=>{e.exports=require("passport")},8287:(e,t,a)=>{var s=a(6661),n=a(8876),r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=l,t.IS=50;var o=2147483647;function i(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,a){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return d(e)}return u(e,t,a)}function u(e,t,a){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var a=0|h(e,t),s=i(a),n=s.write(e,t);return n!==a&&(s=s.slice(0,n)),s}(e,t);if(ArrayBuffer.isView(e))return function(e){if(V(e,Uint8Array)){var t=new Uint8Array(e);return m(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return m(e,t,a);if("undefined"!=typeof SharedArrayBuffer&&(V(e,SharedArrayBuffer)||e&&V(e.buffer,SharedArrayBuffer)))return m(e,t,a);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var s=e.valueOf&&e.valueOf();if(null!=s&&s!==e)return l.from(s,t,a);var n=function(e){if(l.isBuffer(e)){var t=0|p(e.length),a=i(t);return 0===a.length||e.copy(a,0,0,t),a}return void 0!==e.length?"number"!=typeof e.length||B(e.length)?i(0):f(e):"Buffer"===e.type&&Array.isArray(e.data)?f(e.data):void 0}(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,a);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function d(e){return c(e),i(e<0?0:0|p(e))}function f(e){for(var t=e.length<0?0:0|p(e.length),a=i(t),s=0;s<t;s+=1)a[s]=255&e[s];return a}function m(e,t,a){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(a||0))throw new RangeError('"length" is outside of buffer bounds');var s;return s=void 0===t&&void 0===a?new Uint8Array(e):void 0===a?new Uint8Array(e,t):new Uint8Array(e,t,a),Object.setPrototypeOf(s,l.prototype),s}function p(e){if(e>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||V(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var a=e.length,s=arguments.length>2&&!0===arguments[2];if(!s&&0===a)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return a;case"utf8":case"utf-8":return k(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*a;case"hex":return a>>>1;case"base64":return U(e).length;default:if(n)return s?-1:k(e).length;t=(""+t).toLowerCase(),n=!0}}function y(e,t,a){var s=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===a||a>this.length)&&(a=this.length),a<=0)return"";if((a>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,a);case"utf8":case"utf-8":return $(this,t,a);case"ascii":return O(this,t,a);case"latin1":case"binary":return A(this,t,a);case"base64":return T(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,a);default:if(s)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),s=!0}}function g(e,t,a){var s=e[t];e[t]=e[a],e[a]=s}function b(e,t,a,s,n){if(0===e.length)return-1;if("string"==typeof a?(s=a,a=0):a>2147483647?a=2147483647:a<-2147483648&&(a=-2147483648),B(a=+a)&&(a=n?0:e.length-1),a<0&&(a=e.length+a),a>=e.length){if(n)return-1;a=e.length-1}else if(a<0){if(!n)return-1;a=0}if("string"==typeof t&&(t=l.from(t,s)),l.isBuffer(t))return 0===t.length?-1:w(e,t,a,s,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):w(e,[t],a,s,n);throw new TypeError("val must be string, number or Buffer")}function w(e,t,a,s,n){var r,o=1,i=e.length,l=t.length;if(void 0!==s&&("ucs2"===(s=String(s).toLowerCase())||"ucs-2"===s||"utf16le"===s||"utf-16le"===s)){if(e.length<2||t.length<2)return-1;o=2,i/=2,l/=2,a/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(n){var c=-1;for(r=a;r<i;r++)if(u(e,r)===u(t,-1===c?0:r-c)){if(-1===c&&(c=r),r-c+1===l)return c*o}else-1!==c&&(r-=r-c),c=-1}else for(a+l>i&&(a=i-l),r=a;r>=0;r--){for(var d=!0,f=0;f<l;f++)if(u(e,r+f)!==u(t,f)){d=!1;break}if(d)return r}return-1}function _(e,t,a,s){a=Number(a)||0;var n=e.length-a;s?(s=Number(s))>n&&(s=n):s=n;var r=t.length;s>r/2&&(s=r/2);for(var o=0;o<s;++o){var i=parseInt(t.substr(2*o,2),16);if(B(i))return o;e[a+o]=i}return o}function S(e,t,a,s){return q(k(t,e.length-a),e,a,s)}function v(e,t,a,s){return q(function(e){for(var t=[],a=0;a<e.length;++a)t.push(255&e.charCodeAt(a));return t}(t),e,a,s)}function E(e,t,a,s){return q(U(t),e,a,s)}function R(e,t,a,s){return q(function(e,t){for(var a,s,n,r=[],o=0;o<e.length&&!((t-=2)<0);++o)s=(a=e.charCodeAt(o))>>8,n=a%256,r.push(n),r.push(s);return r}(t,e.length-a),e,a,s)}function T(e,t,a){return 0===t&&a===e.length?s.fromByteArray(e):s.fromByteArray(e.slice(t,a))}function $(e,t,a){a=Math.min(e.length,a);for(var s=[],n=t;n<a;){var r,o,i,l,u=e[n],c=null,d=u>239?4:u>223?3:u>191?2:1;if(n+d<=a)switch(d){case 1:u<128&&(c=u);break;case 2:128==(192&(r=e[n+1]))&&(l=(31&u)<<6|63&r)>127&&(c=l);break;case 3:r=e[n+1],o=e[n+2],128==(192&r)&&128==(192&o)&&(l=(15&u)<<12|(63&r)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:r=e[n+1],o=e[n+2],i=e[n+3],128==(192&r)&&128==(192&o)&&128==(192&i)&&(l=(15&u)<<18|(63&r)<<12|(63&o)<<6|63&i)>65535&&l<1114112&&(c=l)}null===c?(c=65533,d=1):c>65535&&(c-=65536,s.push(c>>>10&1023|55296),c=56320|1023&c),s.push(c),n+=d}return function(e){var t=e.length;if(t<=N)return String.fromCharCode.apply(String,e);for(var a="",s=0;s<t;)a+=String.fromCharCode.apply(String,e.slice(s,s+=N));return a}(s)}l.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),l.poolSize=8192,l.from=function(e,t,a){return u(e,t,a)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,a){return function(e,t,a){return c(e),e<=0?i(e):void 0!==t?"string"==typeof a?i(e).fill(t,a):i(e).fill(t):i(e)}(e,t,a)},l.allocUnsafe=function(e){return d(e)},l.allocUnsafeSlow=function(e){return d(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var a=e.length,s=t.length,n=0,r=Math.min(a,s);n<r;++n)if(e[n]!==t[n]){a=e[n],s=t[n];break}return a<s?-1:s<a?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var a;if(void 0===t)for(t=0,a=0;a<e.length;++a)t+=e[a].length;var s=l.allocUnsafe(t),n=0;for(a=0;a<e.length;++a){var r=e[a];if(V(r,Uint8Array))n+r.length>s.length?l.from(r).copy(s,n):Uint8Array.prototype.set.call(s,r,n);else{if(!l.isBuffer(r))throw new TypeError('"list" argument must be an Array of Buffers');r.copy(s,n)}n+=r.length}return s},l.byteLength=h,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)g(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},l.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?$(this,0,e):y.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",a=t.IS;return e=this.toString("hex",0,a).replace(/(.{2})/g,"$1 ").trim(),this.length>a&&(e+=" ... "),"<Buffer "+e+">"},r&&(l.prototype[r]=l.prototype.inspect),l.prototype.compare=function(e,t,a,s,n){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===a&&(a=e?e.length:0),void 0===s&&(s=0),void 0===n&&(n=this.length),t<0||a>e.length||s<0||n>this.length)throw new RangeError("out of range index");if(s>=n&&t>=a)return 0;if(s>=n)return-1;if(t>=a)return 1;if(this===e)return 0;for(var r=(n>>>=0)-(s>>>=0),o=(a>>>=0)-(t>>>=0),i=Math.min(r,o),u=this.slice(s,n),c=e.slice(t,a),d=0;d<i;++d)if(u[d]!==c[d]){r=u[d],o=c[d];break}return r<o?-1:o<r?1:0},l.prototype.includes=function(e,t,a){return-1!==this.indexOf(e,t,a)},l.prototype.indexOf=function(e,t,a){return b(this,e,t,a,!0)},l.prototype.lastIndexOf=function(e,t,a){return b(this,e,t,a,!1)},l.prototype.write=function(e,t,a,s){if(void 0===t)s="utf8",a=this.length,t=0;else if(void 0===a&&"string"==typeof t)s=t,a=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(a)?(a>>>=0,void 0===s&&(s="utf8")):(s=a,a=void 0)}var n=this.length-t;if((void 0===a||a>n)&&(a=n),e.length>0&&(a<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");s||(s="utf8");for(var r=!1;;)switch(s){case"hex":return _(this,e,t,a);case"utf8":case"utf-8":return S(this,e,t,a);case"ascii":case"latin1":case"binary":return v(this,e,t,a);case"base64":return E(this,e,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,t,a);default:if(r)throw new TypeError("Unknown encoding: "+s);s=(""+s).toLowerCase(),r=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var N=4096;function O(e,t,a){var s="";a=Math.min(e.length,a);for(var n=t;n<a;++n)s+=String.fromCharCode(127&e[n]);return s}function A(e,t,a){var s="";a=Math.min(e.length,a);for(var n=t;n<a;++n)s+=String.fromCharCode(e[n]);return s}function C(e,t,a){var s=e.length;(!t||t<0)&&(t=0),(!a||a<0||a>s)&&(a=s);for(var n="",r=t;r<a;++r)n+=L[e[r]];return n}function D(e,t,a){for(var s=e.slice(t,a),n="",r=0;r<s.length-1;r+=2)n+=String.fromCharCode(s[r]+256*s[r+1]);return n}function I(e,t,a){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>a)throw new RangeError("Trying to access beyond buffer length")}function j(e,t,a,s,n,r){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||t<r)throw new RangeError('"value" argument is out of bounds');if(a+s>e.length)throw new RangeError("Index out of range")}function x(e,t,a,s,n,r){if(a+s>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function F(e,t,a,s,r){return t=+t,a>>>=0,r||x(e,0,a,4),n.write(e,t,a,s,23,4),a+4}function P(e,t,a,s,r){return t=+t,a>>>=0,r||x(e,0,a,8),n.write(e,t,a,s,52,8),a+8}l.prototype.slice=function(e,t){var a=this.length;(e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t<e&&(t=e);var s=this.subarray(e,t);return Object.setPrototypeOf(s,l.prototype),s},l.prototype.readUintLE=l.prototype.readUIntLE=function(e,t,a){e>>>=0,t>>>=0,a||I(e,t,this.length);for(var s=this[e],n=1,r=0;++r<t&&(n*=256);)s+=this[e+r]*n;return s},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,a){e>>>=0,t>>>=0,a||I(e,t,this.length);for(var s=this[e+--t],n=1;t>0&&(n*=256);)s+=this[e+--t]*n;return s},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,a){e>>>=0,t>>>=0,a||I(e,t,this.length);for(var s=this[e],n=1,r=0;++r<t&&(n*=256);)s+=this[e+r]*n;return s>=(n*=128)&&(s-=Math.pow(2,8*t)),s},l.prototype.readIntBE=function(e,t,a){e>>>=0,t>>>=0,a||I(e,t,this.length);for(var s=t,n=1,r=this[e+--s];s>0&&(n*=256);)r+=this[e+--s]*n;return r>=(n*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||I(e,2,this.length);var a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt16BE=function(e,t){e>>>=0,t||I(e,2,this.length);var a=this[e+1]|this[e]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||I(e,4,this.length),n.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||I(e,4,this.length),n.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||I(e,8,this.length),n.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||I(e,8,this.length),n.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,a,s){e=+e,t>>>=0,a>>>=0,s||j(this,e,t,a,Math.pow(2,8*a)-1,0);var n=1,r=0;for(this[t]=255&e;++r<a&&(n*=256);)this[t+r]=e/n&255;return t+a},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,a,s){e=+e,t>>>=0,a>>>=0,s||j(this,e,t,a,Math.pow(2,8*a)-1,0);var n=a-1,r=1;for(this[t+n]=255&e;--n>=0&&(r*=256);)this[t+n]=e/r&255;return t+a},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,a,s){if(e=+e,t>>>=0,!s){var n=Math.pow(2,8*a-1);j(this,e,t,a,n-1,-n)}var r=0,o=1,i=0;for(this[t]=255&e;++r<a&&(o*=256);)e<0&&0===i&&0!==this[t+r-1]&&(i=1),this[t+r]=(e/o|0)-i&255;return t+a},l.prototype.writeIntBE=function(e,t,a,s){if(e=+e,t>>>=0,!s){var n=Math.pow(2,8*a-1);j(this,e,t,a,n-1,-n)}var r=a-1,o=1,i=0;for(this[t+r]=255&e;--r>=0&&(o*=256);)e<0&&0===i&&0!==this[t+r+1]&&(i=1),this[t+r]=(e/o|0)-i&255;return t+a},l.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,a){return e=+e,t>>>=0,a||j(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,a){return F(this,e,t,!0,a)},l.prototype.writeFloatBE=function(e,t,a){return F(this,e,t,!1,a)},l.prototype.writeDoubleLE=function(e,t,a){return P(this,e,t,!0,a)},l.prototype.writeDoubleBE=function(e,t,a){return P(this,e,t,!1,a)},l.prototype.copy=function(e,t,a,s){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),s||0===s||(s=this.length),t>=e.length&&(t=e.length),t||(t=0),s>0&&s<a&&(s=a),s===a)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(a<0||a>=this.length)throw new RangeError("Index out of range");if(s<0)throw new RangeError("sourceEnd out of bounds");s>this.length&&(s=this.length),e.length-t<s-a&&(s=e.length-t+a);var n=s-a;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,a,s):Uint8Array.prototype.set.call(e,this.subarray(a,s),t),n},l.prototype.fill=function(e,t,a,s){if("string"==typeof e){if("string"==typeof t?(s=t,t=0,a=this.length):"string"==typeof a&&(s=a,a=this.length),void 0!==s&&"string"!=typeof s)throw new TypeError("encoding must be a string");if("string"==typeof s&&!l.isEncoding(s))throw new TypeError("Unknown encoding: "+s);if(1===e.length){var n=e.charCodeAt(0);("utf8"===s&&n<128||"latin1"===s)&&(e=n)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<a)throw new RangeError("Out of range index");if(a<=t)return this;var r;if(t>>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(r=t;r<a;++r)this[r]=e;else{var o=l.isBuffer(e)?e:l.from(e,s),i=o.length;if(0===i)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(r=0;r<a-t;++r)this[r+t]=o[r%i]}return this};var M=/[^+/0-9A-Za-z-_]/g;function k(e,t){var a;t=t||1/0;for(var s=e.length,n=null,r=[],o=0;o<s;++o){if((a=e.charCodeAt(o))>55295&&a<57344){if(!n){if(a>56319){(t-=3)>-1&&r.push(239,191,189);continue}if(o+1===s){(t-=3)>-1&&r.push(239,191,189);continue}n=a;continue}if(a<56320){(t-=3)>-1&&r.push(239,191,189),n=a;continue}a=65536+(n-55296<<10|a-56320)}else n&&(t-=3)>-1&&r.push(239,191,189);if(n=null,a<128){if((t-=1)<0)break;r.push(a)}else if(a<2048){if((t-=2)<0)break;r.push(a>>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;r.push(a>>12|224,a>>6&63|128,63&a|128)}else{if(!(a<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;r.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return r}function U(e){return s.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,a,s){for(var n=0;n<s&&!(n+a>=t.length||n>=e.length);++n)t[n+a]=e[n];return n}function V(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function B(e){return e!=e}var L=function(){for(var e="0123456789abcdef",t=new Array(256),a=0;a<16;++a)for(var s=16*a,n=0;n<16;++n)t[s+n]=e[a]+e[n];return t}()},8356:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(4716)),r=a(9031),o=a(7138),i=s(a(2282)),l=s(a(5788)),u=s(a(9896)),c=s(a(7636)),d=s(a(6357)),f=s(a(2555)),m=s(a(3830)),p=a(9031);function h(e,t,a){let s=0;for(const n of e)n.lvl=t,n.hasSub?n.childrenCount=h(n.children,t+1,a):n.childrenCount=!0===a.hideDetails?0:n.children.length,s+=n.childrenCount+1;return s}function y(e,t){for(const a of e)a._index=t++,a._vIndex=a._index,a.children?.length>0&&(t=y(a.children,t));return t}function g(e,t,a){for(const s of e)if(!0===s.hasSub)a=g(s.children,t,a);else for(const e of s.children)e[t.name]=a,a++;return a}function b(e,t,a,s){const n=e.rowGroups[t],r=R(a,n);let o=0;for(let i of r){const r=T(a,n,i),l={isGroup:!0,expanded:!0,hasSub:e.rowGroups.length-1>t,lvl:t,groups:[{value:i,...n}],totals:[],children:[],childrenCount:0};e.rowGroups.length-1===t?(l.children=r,l.childrenCount=!0===e.hideDetails?0:r.length):l.childrenCount=b(e,t+1,r,l.children),s.push(l),o+=l.childrenCount+1}return o}function w(e,t){if(0===e.length)return;if(!e[0].isGroup)return;const a=e[0].lvl;if(a<t)for(const a of e){const e=w(a.children,t);e&&(a.children=e)}else if(a===t){const t=[];for(const s of e){const e=[...s.groups];for(const n of s.children){const s=e.concat(n.groups);t.push({...n,groups:s,lvl:a})}}return t}}function _(e){if(Array.isArray(e))for(let t=e.length-1;t>=0;t--){const a=e[t];_(a.children);const s=a.totals?.filter(e=>0!==e.value);0===s?.length&&(0===a.children?.length&&a.childrenCount>0||0===a.childrenCount)&&e.splice(t,1)}}function S(e,t,a=null){let s=0;if(!0===e.hasSub){const n=[];e.children.map(e=>{n.push(S(e,t,a))}),s=E(n,t.expression)}else s=v(e.children,t,a);return a?e.totals.push({...t,value:s,group:a.value}):e.totals.push({...t,value:s}),s}function v(e,t,a=null){let s,n=0,r=0,o=[];switch(o=a?e.filter(e=>"object"===a.valueType?e[a.name].id===a.value.id:e[a.name]===a.value):e,t.expression){case"sum":o.map(e=>{r+=1*e[t.name]}),r=f.default.normalizeFloat(r,6);break;case"average":o.map(e=>{n+=1*e[t.name]}),r+=n/o.length,r=f.default.normalizeFloat(r,6);break;case"max":if(o.length>0){s=1*o[0][t.name];for(let e=1;e<o?.length;e++)s<=1*o[e][t.name]&&(s=1*o[e][t.name]);r<=s&&(r=s)}break;case"min":if(o.length>0){s=o[0][t.name];for(let e=1;e<o?.length;e++)s>=o[e][t.name]&&(s=o[e][t.name]);r=s}}return r}function E(e,t){let a=0;switch(t){case"sum":a=e.reduce((e,t)=>e+t,0),a=f.default.normalizeFloat(a,6);break;case"average":a=e.reduce((e,t)=>e+t,0)/e.length,a=f.default.normalizeFloat(a,6);break;case"max":a=Math.max(...e);break;case"min":a=Math.min(...e)}return a}function R(e,t){let a=[];if("object"===t.valueType){const s=new Set;for(const n of e)s.has(n[t.name].id)||(s.add(n[t.name].id),a.push(n[t.name]))}else a=[...new Set(e.map(e=>e[t.name]))];return a}function T(e,t,a){return e.filter(e=>"object"===t.valueType?e[t.name].id===a.id:e[t.name]===a)}function $(e){for(const t of e)t.hasSub?$(t.children):t.children=[]}function N(e,t){return e.lastIndexOf("WHERE")>e.lastIndexOf("FROM")?O(t,!0):"\nWHERE "+O(t)}function O(e,t=!1){const a=e.join("");return t?a:a.substring(5)}t.default={async getSettings(e,t,a){const s=e.params.id;if(!s||"string"!=typeof s||36!==s.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(s,{attributes:{exclude:["dataQuery"]}}).then(e=>{e?t.status(o.StatusCodes.OK).send(e):(i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`}))}).catch(e=>{i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async getResult(e,t,a){let s={...e.body};if(!s.id||"string"!=typeof s.id||36!==s.id.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(s.id).then(async a=>{if(a){let o;s.query=a.dataQuery,s.externalData=a.externalData,s.externalUsername=a.externalUsername,s.externalPassword=a.externalPassword,s.externalServer=a.externalServer,s.externalPort=a.externalPort,s.externalDatabase=a.externalDatabase,s.externalDialect=a.externalDialect,s.externalDateKind=a.externalDateKind,s.externalDateFormat=a.externalDateFormat,s.fields=function(e){let t=[];for(const a of e)a.isGroup?t=t.concat(a.fields):t.push(a);return t}(s.fields),function(e){if(e.sqlFilters=[],e.sqlReplacements={},"without"!==e.period.type){let t,a,s;"date"===e.period.type?(t=new Date(e.period.date).setHours(0,0,0,0),a=new Date(e.period.date).setHours(23,59,59,999),s=new Date(e.period.date),e.externalData&&"default"===e.externalDateKind?e.sqlReplacements.date=new Date(s).toLocaleDateString():e.sqlReplacements.date=new Date(s).toISOString()):"dateTime"===e.period.dateType?(t=new Date(e.period.dateFrom),a=new Date(e.period.dateTo)):(t=new Date(e.period.dateFrom).setHours(0,0,0,0),a=new Date(e.period.dateTo).setHours(23,59,59,999)),e.externalData&&"default"===e.externalDateKind?(e.sqlReplacements.dateFrom=new Date(t).toLocaleDateString(),e.sqlReplacements.dateTo=new Date(a).toLocaleDateString()):(e.sqlReplacements.dateFrom=new Date(t).toISOString(),e.sqlReplacements.dateTo=new Date(a).toISOString())}let t="";const a=e.filters;for(let s of a){let a=s.path;if("filled"===s.operator)t=`${a} IS NOT NULL`;else if("notFilled"===s.operator)t=`${a} IS NULL`;else if("object"===s.valueType)if("inList"===s.operator||"notInList"===s.operator){let e=[];for(let t of s.value)e.push(`'${t.id}'`);t=`${a} ${"inList"===s.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=s.value?`${a} ${s.operator} '${s.value.id}'`:`${a} IS NULL`;else if("enum"===s.valueType)if("inList"===s.operator||"notInList"===s.operator){let e=[];for(let t of s.value)e.push(`'${t}'`);t=`${a} ${"inList"===s.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=`${a} ${s.operator} '${s.value}'`;else if("text"===s.valueType)t="iLike"===s.operator?`${a} LIKE '%${s.value}%'`:"notILike"===s.operator?`${a} NOT LIKE '%${s.value}%'`:a+s.operator+"'"+s.value+"'";else if("date"===s.valueType)if("between"===s.operator){if(s.value?.[0]&&s.value?.[1]){let e="",r="";if("dateTime"===s.dateType)e=(0,n.default)(s.value[0],"DD.MM.YYYY HH:mm:ss").toISOString(),r=(0,n.default)(s.value[1],"DD.MM.YYYY HH:mm:ss").toISOString();else{const t=(0,n.default)(s.value[0],"DD.MM.YYYY").toDate(),a=(0,n.default)(s.value[1],"DD.MM.YYYY").toDate();e=(0,n.default)(t.setHours(0,0,0,0)).toISOString(),r=(0,n.default)(a.setHours(23,59,59,999)).toISOString()}t=`${a} ${s.operator} '${e}' and '${r}'`}}else t="dateTime"===s.dateType?`${a} ${s.operator} '${(0,n.default)(s.value,"DD.MM.YYYY HH:mm:ss").toISOString()}'`:`${a} ${s.operator} '${(0,n.default)(s.value,"DD.MM.YYYY").toISOString()}'`;else if("number"===s.valueType&&"between"===s.operator){if(s.value?.[0]&&s.value?.[1]){let e=s.value[0],n=s.value[1];t=`${a} ${s.operator} '${e}' and '${n}'`}}else t=a+s.operator+s.value;e.sqlFilters.push(" AND "+t)}}(s);const c=`reports/${a.name}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;u.default.existsSync(d)&&(o=require(d));let f=[];f=o?.onComposeResult&&"function"==typeof o?.onComposeResult?await o.onComposeResult(e,a,s):await async function(e,t,a){await async function(e,t){const a=await(0,m.default)(e);let s=t.query.match(/\{([^}]+)\}/g);if(s){let e,n=s.map(e=>e.slice(1,-1));for(const s of n){const n=a.find(e=>e.name===s);n&&(t.query=t.query.replace(`{${s}}`,s),e=e?`${e}, ${s} as (${n.query})`:`with ${s} as (${n.query})`,n.params&&(t.sqlReplacements=Object.assign(t.sqlReplacements,n.params)))}e&&(t.query=`${e} ${t.query}`)}}(e,t);const s=t.query.lastIndexOf("ORDER BY"),n=t.query.lastIndexOf("GROUP BY"),o=t.query.lastIndexOf("HAVING"),i=t.query.lastIndexOf("FROM");let u=t.query.length,c=!1,d=[{name:"ORDER BY",index:s},{name:"HAVING",index:o},{name:"GROUP BY",index:n}];if(d=d.filter(e=>e.index>i),d.length>0&&(c=!0,u=Math.min(...d.map(e=>e.index))),t.sqlFilters.length>0&&(t.query=c?function(e,t,a){const s=e.substring(0,a),n=e.substring(a);return`${s} ${N(e,t)} \n${n}`}(t.query,t.sqlFilters,u):t.query+N(t.query,t.sqlFilters)),a?.beforeQuery&&"function"==typeof a?.beforeQuery&&await a.beforeQuery(e,t),!0===t.externalData){const e={userName:t.externalUsername,password:t.externalPassword,host:t.externalServer,port:Number(t.externalPort),database:t.externalDatabase,dialect:t.externalDialect,pool:{max:5,min:0,acquire:3e4,idle:1e4}},a=new p.Sequelize(e.database,e.userName,e.password,{host:e.host,port:e.port,dialect:e.dialect,pool:{max:e.pool.max,min:e.pool.min,acquire:e.pool.acquire,idle:e.pool.idle}});return await a.query(t.query,{type:r.QueryTypes.SELECT,replacements:t.sqlReplacements})}return await l.default.query(t.query,{type:r.QueryTypes.SELECT,replacements:t.sqlReplacements})}(e,s,o);let T=await async function(e,t){let a=[],s=0;for(const r of e){s+=1;const e={};for(const a of t)if(!0===a.rowNumber)e[a.name]=s;else if("date"===a.valueType){let t="DD.MM.YYYY HH:mm:ss";"date"===a.dateType&&(t="DD.MM.YYYY"),a.format&&""!==a.format&&(t=a.format),e[a.name]=r[a.name]?(0,n.default)(r[a.name]).format(t):""}else if("number"===a.valueType){let t=r[a.name];if(t&&a.format&&""!==a.format)try{const s=JSON.parse(a.format);s.NFD&&(t=Number(t),t=t.toFixed(s.NFD)),e[a.name]=t}catch(t){e[a.name]="0",i.default.error("Error in Reports getResult controller",{meta:t})}else e[a.name]=t}else if("object"===a.valueType)if(a.attribs){e[a.name]={};for(const t of a.attribs)e[a.name][t.name]=r[t.path]}else e[a.name]={id:void 0,name:void 0};else e[a.name]=r[a.name];a.push(e)}return a}(f,s.fields),O=T.length;s.sorts?.length>0&&function(e,t,a){e.sort((e,s)=>{for(const r of t){let t,o;"object"===r.valueType?(t=e[r.name]?.name||"",o=s[r.name]?.name||""):(t=e[r.name]||"",o=s[r.name]||"");let i=0;if("date"===r.valueType)if(a.externalData&&"default"===a.externalDateKind&&a.externalDateFormat&&a.externalDateFormat.length>0){const e=(0,n.default)(t,a.externalDateFormat).toDate(),s=(0,n.default)(o,a.externalDateFormat).toDate();i=e.getTime()-s.getTime()}else{const e=new Date(t),a=new Date(o);i=e.getTime()-a.getTime()}else"number"==typeof t&&"number"==typeof o?i=t-o:"string"==typeof t&&"string"==typeof o&&(i=t.localeCompare(o));if(0!==i)return"asc"===r.direction?i:-1*i}return 0})}(T,s.sorts,s),s.cols=[],s.colGroups?.length>0&&(s.cols=R(T,s.colGroups[0]));let A=!1;s.rowGroups?.length>0?(T.length>s.maxLimit&&(T=[],A=!0),T=function(e,t){let a=[];b(t,0,e,a);let s=!1;for(let e=t.rowGroups.length-1;e>0;e--)if(t.rowGroups[e].withParent){const t=w(a,e-1);t&&(a=t),s=!0}return s&&h(a,0,t),function(e,t){if(0!==e.calcs.length){if(e.colGroups.length>0){const a=e.colGroups[0];for(const s of e.cols)for(const n of e.calcs)for(const e of t)S(e,n,{name:a.name,valueType:a.valueType,value:s})}else for(const a of e.calcs)for(const e of t)S(e,a);_(t)}}(t,a),a}(T,s),function(e,t){const a=e.filter(e=>!0===e.rowNumber);for(const e of a){let a=1;for(const s of t)if(!0===s.hasSub)a=g(s.children,e,a);else for(const t of s.children)t[e.name]=a,a++}}(s.fields,T),O=y(T,1)):function(e,t,a=1){const s=e.filter(e=>!0===e.rowNumber);for(const e of s)for(const s of t)s[e.name]=a,a++}(s.fields,T);const C=[];!0===s.showYTotal&&function(e,t,a){if(0!==e.calcs?.length)if(e.colGroups?.length>0){const s=e.colGroups[0].valueType;for(const n of e.cols)for(const r of e.calcs){const e=[];for(const a of t){let t=a.totals.find(e=>e.name===r.name&&("object"===s?e.group.id===n.id:e.group===n));t&&e.push(t.value)}const o=E(e,r.expression);a.push({...r,value:o,group:n})}}else for(const s of e.calcs)if(e.rowGroups?.length>0){const e=[];for(const a of t){const t=a.totals.find(e=>e.name===s.name);t&&e.push(t.value)}const n=E(e,s.expression);a.push({...s,value:n})}else{const e=v(t,s);a.push({...s,value:e})}}(s,T,C),s.rowGroups?.length>0&&s.hideDetails&&($(T),O=y(T,1)),0===s.rowGroups?.length&&s.limit&&s.page&&(T=function(e,t,a){const s=(a-1)*t,n=s+t;return e.slice(s,n)}(T,s.limit,s.page));let D={resultData:T,cols:s.cols,totals:C,total:O-1,limitError:A};D?t.status(200).send(D):(console.error("Bad request"),t.status(400).send({message:"Bad request"}))}else i.default.error("Error in reports getResult controller",{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`})}).catch(e=>{i.default.error("Error in reports getResult controller",{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async generateExcel(e,t){c.default.generateExcel(e,t)},async generatePdf(e,t){d.default.generatePdf(e,t)}}},8403:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(6980)),r=a(7138),o=s(a(2282)),i=s(a(829)),l=s(a(5486)),u=a(3903),c=s(a(1572)),d=s(a(5788)),f=s(a(8473)),m=s(a(6836)),p=s(a(7099)),h=process.env.TWO_FA_SECRET||"TWO_FA_TEMP_SECRET_KEY";async function y(e){const t=Math.floor(9e5*Math.random())+1e5,a=await d.default.models.AuthenticationCode.findAll({where:{userId:e}});if(a.length>0){const s=a[0],n=new Date(s.getDataValue("period")),r=new Date(n.getTime()+9e5);new Date>=n&&new Date<=r?await s.update({authCode:String(t),period:new Date}):(await s.destroy(),await d.default.models.AuthenticationCode.create({id:(0,u.v4)(),userId:e,authCode:String(t),period:new Date}))}else await d.default.models.AuthenticationCode.create({id:(0,u.v4)(),userId:e,authCode:String(t),period:new Date});return t}async function g(e){const t=await y(e),a=await d.default.models.User.findByPk(e);if(!a||!a.phone)throw new Error("User phone number not found");const s=`Your verification code is: ${t}. This code will expire in 15 minutes.`;await p.default.sendSms(a.phone,s,!0)}async function b(e){const t=await y(e),a=await d.default.models.User.findByPk(e);if(!a||!a.email)throw new Error("User email not found");const s=await d.default.models.EmailAccount.findAll({where:{isActive:!0,forSend:!0,isService:!0}});if(!s||0===s.length)throw new Error("No service email account configured");const n=s[0];if(!n.password)throw new Error("Email account password not configured");const r=m.default.decrypt(JSON.parse(n.password)),o={host:n.smtpHost,port:n.smtpPort,secure:n.smtpTls,auth:{user:n.user,pass:r},tls:{rejectUnauthorized:n.smtpTls}},i=c.default.createTransport(o),l={from:n.name,to:a.email,subject:"Verification code",html:`<p>Your verification code is: <strong>${t}</strong></p><p>This code will expire in 15 minutes.</p>`};await i.sendMail(l)}t.default={async login(e,t,a){let s=e.session.passport;const n=await f.default.getLicense(e.sessionID);e.session.regenerate(a=>{e.session.passport=s,e.session.license=n,e.session.clientType=e.body?.clientType||null,e.session.save(a=>{const s=i.default.sign({id:e.user.id},"RGPRIVATEKEY",{expiresIn:"360h"}),o={isAuthenticated:!0,result:s,token:s,id:e.user.id,email:e.user.email,login:e.user.login,fullRights:e.user.fullRights,use2FA:e.user.use2FA,useCustomerAccess:e.user.useCustomerAccess,name:e.user.name,externalUser:e.user.externalUser,language:e.user.language,forwarderId:e.user.forwarderId,tokenElectron:e.user.tokenElectron,license:n};t.status(r.StatusCodes.OK).send(o)})})},async session(e,t,a){const s={isAuthenticated:!1};if(e.session.passport?.user)try{const a=await d.default.models.User.findOne({where:{id:e.session.passport.user}});a?(s.isAuthenticated=!0,s.id=a.id,s.name=a.name,s.login=a.login,s.fullRights=a.fullRights,s.use2FA=a.use2FA,s.useCustomerAccess=a.useCustomerAccess,s.externalUser=a.externalUser,s.email=a.email,s.language=a.language,s.license=e.session.license,s.forwarderId=a.forwarderId,t.status(r.StatusCodes.OK).send({result:s,message:"OK"})):t.status(r.StatusCodes.UNAUTHORIZED).send({result:s,message:"Authentication failed"})}catch(e){t.status(r.StatusCodes.UNAUTHORIZED).send({result:s,message:"Authentication failed"})}else t.status(r.StatusCodes.UNAUTHORIZED).send({result:s,message:"Authentication failed"})},async logout(e,t,a){if(e.logout(function(e){if(e)return a(e)}),!e.session)return e.isUnauthenticated()?void t.status(r.StatusCodes.OK).send("Logged out successfully"):void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not log out");e.logout(e=>{e?t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not clear out session info completely"):t.status(r.StatusCodes.OK).send("Logged out successfully")})},async register(e,t,a){try{const a=await n.default.register(e.body);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in register Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async confirmEmailAddress(e,t,a){try{const a=await n.default.confirmEmailAddress(e.params.token);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in confirmEmailAddress Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resendEmailAddressConfirmationLink(e,t,a){try{const a=await n.default.resendEmailAddressConfirmationLink(e.query.email);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in resendEmailAddressConfirmationLink Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async forgotPassword(e,t,a){try{const a=e.headers.origin||e.headers.referer||process.env.DEFAULT_CLIENT_URL,s=await n.default.forgotPassword(e.body.email,a);return void t.status(s.httpStatus).send(s.result)}catch(e){return o.default.error("Error in forgotPassword Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async validatePasswordResetToken(e,t,a){try{const a=await n.default.isPasswordResetTokenValid(e.params.token);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in validatePasswordResetToken Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resetPassword(e,t,a){const{token:s,newPassword:i}=e.body;if(s&&i)try{const a=await n.default.resetPassword(e.body.token,e.body.newPassword);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in resetPassword Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(r.StatusCodes.BAD_REQUEST).send({message:"Token and new password are required"})},async preLogin(e,t,a){try{const{email:a,password:s,clientType:n,clientVersion:u}=e.body;if(!a||!s)return void t.status(r.StatusCodes.BAD_REQUEST).send({message:"Email and password are required"});const c=await d.default.models.User.findOne({where:{login:a,isActive:!0}});if(!c)return o.default.error("Pre-login: User not found or not active",a),void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid credentials"});if(!l.default.compareSync(s,c.password))return o.default.error("Pre-login: Invalid password",a),void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid credentials"});const f=c.use2FA,m=c.use2FAEmail;if(f||m){const e=m?"email":"sms",a=i.default.sign({id:c.id,purpose:"2fa_pending",twoFAMethod:e},h,{expiresIn:"15m"});try{"sms"===e?await g(c.id):await b(c.id)}catch(e){return o.default.error("Pre-login: Failed to send 2FA code",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Failed to send verification code"})}return void t.status(r.StatusCodes.OK).send({use2FA:!0,twoFAMethod:e,tempToken:a,userId:c.id,language:c.language})}t.status(r.StatusCodes.OK).send({use2FA:!1,userId:c.id,language:c.language})}catch(e){o.default.error("Error in preLogin controller",{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Internal server error"})}},async verify2FA(e,t,a){try{const{tempToken:a,authCode:s,remember:n,clientType:l,clientVersion:u}=e.body;if(!a||!s)return void t.status(r.StatusCodes.BAD_REQUEST).send({message:"Token and auth code are required"});let c;try{if(c=i.default.verify(a,h),"2fa_pending"!==c.purpose)return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid token"})}catch(e){return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Token expired or invalid"})}const m=c.id,p=await d.default.models.AuthenticationCode.findOne({where:{userId:m,authCode:String(s)}});if(!p)return void t.status(r.StatusCodes.BAD_REQUEST).send({result:"noSuchCode",message:"Invalid verification code"});const y=new Date(p.getDataValue("period")),g=new Date(y.getTime()+9e5);if(new Date<y||new Date>g)return void t.status(r.StatusCodes.BAD_REQUEST).send({result:"outOfDate",message:"Verification code expired"});await p.destroy();const b=await d.default.models.User.findByPk(m);if(!b||!b.isActive)return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"User not found or inactive"});e.login(b,a=>{if(a)return o.default.error("Error in verify2FA: req.login failed",{meta:a}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Login error"});const s=e.session.passport;e.session.regenerate(async a=>{if(a)return o.default.error("Error in verify2FA: session regenerate failed",{meta:a}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Session error"});e.session.passport=s,e.session.clientType=l||null;const n=await f.default.getLicense(e.sessionID);e.session.license=n,e.session.save(e=>{if(e)return o.default.error("Error in verify2FA: session save failed",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Session save error"});const a=i.default.sign({id:b.id},"RGPRIVATEKEY",{expiresIn:"360h"}),s={isAuthenticated:!0,result:a,token:a,id:b.id,email:b.email,login:b.login,fullRights:b.fullRights,use2FA:b.use2FA,useCustomerAccess:b.useCustomerAccess,name:b.name,externalUser:b.externalUser,language:b.language,forwarderId:b.forwarderId,tokenElectron:b.tokenElectron,license:n};t.status(r.StatusCodes.OK).send(s)})})})}catch(e){o.default.error("Error in verify2FA controller",{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Internal server error"})}},async resend2FA(e,t,a){try{const{tempToken:a}=e.body;if(!a)return void t.status(r.StatusCodes.BAD_REQUEST).send({message:"Token is required"});let s;try{if(s=i.default.verify(a,h),"2fa_pending"!==s.purpose)return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid token"})}catch(e){return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Token expired or invalid"})}"sms"===(s.twoFAMethod||"sms")?await g(s.id):await b(s.id),t.status(r.StatusCodes.OK).send({message:"Code sent successfully"})}catch(e){o.default.error("Error in resend2FA controller",{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Failed to send verification code"})}}}},8461:e=>{e.exports=require("multer")},8473:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(5788)),r=a(9031);t.default={async getLicense(e){const t=process.env.LIC_NUMBER,a=process.env.LIC_COUNT,s={active:!1,number:"none"};if(!t||!a)return s;const o=await n.default.query('SELECT COUNT(id) as auth_users FROM session WHERE sid != :sessionID AND "licNumber" IS NOT NULL',{type:r.QueryTypes.SELECT,replacements:{sessionID:e}});let i=0;return o.length>0&&(i=o[0].auth_users),i>=Number(a)?s.number=null:(s.active=!0,s.number=t),s}}},8577:e=>{e.exports=require("cors")},8608:e=>{e.exports=require("exceljs")},8876:e=>{e.exports=require("ieee754")},8894:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(9031),r=s(a(5788));t.default={async getUserExecutorRoles(e){let t=await r.default.models.TaskExecutor.findAll({where:{executorId:e},attributes:["parentId"]}).catch(e=>(console.error(e),[]));return t?(t=JSON.parse(JSON.stringify(t)),t):[]},async getVendorsAndCustomersFilter(e){let t=[];if(e){const a=await r.default.models.VendorsAndCustomer.findAll({where:{counterpartyId:{[n.Op.in]:e}}});if(a)for(let e of a)t.push(e.id)}return t},async getCustomerFilter(e){let t=[],a=!1;if(e.user){a=!0!==e.user.useCustomerAccess;const s=e.user.id,n=await r.default.models.UserCustomer.findAll({where:{parentId:s}});if(n)for(let e of n)t.push(e.customerId)}return{fullAccess:a,counterparties:t}},async getForwarderFilter(e){let t,a=!1;if(e.user){a=!0!==e.user.externalUser;try{const a=e.user.forwarderId;if(a){const e=await r.default.models.VendorsAndCustomer.findAll({where:{id:a}});t=e[0]?.dataValues?.id}}catch(e){console.error("Forwarder lookup failed:",e)}}return{fullAccess:a,forwarder:t}},async getRoleGroups(e){let t=[];if(e.user&&!0!==e.user.fullRights){const a=e.user.id;t=(await r.default.models.RoleGroupUser.findAll({where:{userId:a},attributes:["parentId"]})).map(e=>e.parentId)}return t}}},9031:e=>{e.exports=require("sequelize")},9151:function(e,t,a){var s=a(8287).hp,n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(6982)),o="aes-256-cbc",i=r.default.scryptSync(process.env.CRYPTO_SECRET_KEY_AUTO_LOGIN||"default-salt","salt",32);t.default={encrypt(e){const t=r.default.randomBytes(16),a=r.default.createCipheriv(o,i,t);let n=a.update(e,"utf8","hex");n+=a.final("hex");const l=JSON.stringify({iv:t.toString("hex"),encryptedData:n});return s.from(l).toString("base64")},decrypt(e){const t=s.from(e,"base64").toString("utf8"),a=JSON.parse(t),n=s.from(a.iv,"hex"),l=r.default.createDecipheriv(o,i,n);let u=l.update(a.encryptedData,"hex","utf8");return u+=l.final("utf8"),JSON.parse(u)}}},9239:e=>{e.exports=require("terser")},9816:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=s(a(8278)),o=s(a(8403)),i=n.default.Router(),l="auth";i.route(`/${l}/login`).post(r.default.authenticate("login"),o.default.login),i.route(`/${l}/session`).get(o.default.session),i.route(`/${l}/logout`).get(o.default.logout),i.route(`/${l}/register`).post(o.default.register),i.route(`/${l}/confirm_email_address/:token`).get(o.default.confirmEmailAddress),i.route(`/${l}/resend_email_address_confirmation_link`).get(o.default.resendEmailAddressConfirmationLink),i.route(`/${l}/forgot_password`).post(o.default.forgotPassword),i.route(`/${l}/validate_password_reset_token/:token`).get(o.default.validatePasswordResetToken),i.route(`/${l}/reset_password`).post(o.default.resetPassword),i.route(`/${l}/pre_login`).post(o.default.preLogin),i.route(`/${l}/verify_2fa`).post(o.default.verify2FA),i.route(`/${l}/resend_2fa`).post(o.default.resend2FA),t.default=i},9876:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.accessLogsController=void 0;const n=s(a(6928)),r=s(a(9896)),o=s(a(4716)),i=s(a(2282)),l=`${process.cwd()}/logs/access`;async function u(e,t){try{const a=r.default.readFileSync(e,"utf8").split(/\r?\n/),s=[];for(const e of a)if(""!==e.trim()){const a=JSON.parse(e);if(t){let e=!0;for(const s in t)if("user"===s){if(a[s]?.id!==t[s]?.id){e=!1;break}}else if(a[s]!==t[s]){e=!1;break}e&&s.push(a)}else s.push(a)}return s}catch(t){throw new Error(`Failed to process file: ${e}. Error: ${t.message}`)}}function c(e,t,a){const s=e.slice();return s.sort((e,s)=>{const n=e[t],r=s[t];if(a){if(n>r)return-1;if(n<r)return 1}else{if(n<r)return-1;if(n>r)return 1}return 0}),s}function d(e,t){if(e&&"object"==typeof e){if(JSON.stringify(e).match(t))return!0}else if(e&&e.toString().replace(/\s/g,"").match(t))return!0;return!1}t.accessLogsController={async getFilesInfo(e,t){try{const a=JSON.parse(e.query.filter||"{}"),s=JSON.parse(e.query.pagination||"{}"),i=JSON.parse(e.query.sort||"{}");if(!a.period)return void t.status(400).send({message:"Period filter is required"});const f=(0,o.default)(a.period[0]).format("YYYYMMDD"),m=(0,o.default)(a.period[1]).format("YYYYMMDD"),p=await async function(e){return new Promise((t,a)=>{r.default.readdir(e,(s,n)=>{if(s)return a(new Error(`Failed to read directory: ${e}`));t(n)})})}(l);if(!p||0===p.length)return void t.status(404).send({message:"No log files found"});const h=function(e,t,a){return e.filter(e=>{const s=e.slice(0,8);return s===t||s===a||s>t&&s<a})}(p,f,m);if(0===h.length)return void t.status(404).send({message:"No log files found for the specified period"});let y=[];for(const e of h){const t=n.default.join(l,e),s=await u(t,a.searchFilter);y.push(...s)}if(a.searchStr&&(y=function(e,t,a){const s=t.replace(/\s/g,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(s,"i");return e.filter(e=>{let t=!1;for(const s of a){const a=s.split(".");if(a.length>1){if(e[a[0]]&&e[a[0]][a[1]]&&d(e[a[0]][a[1]],n)){t=!0;break}}else if(e[s]&&d(e[s],n)){t=!0;break}}return t})}(y,a.searchStr.searchText,a.searchStr.searchColumns)),Array.isArray(i))for(const e of i)e.sortBy&&(y=c(y,e.sortBy,e.sortDesc));else i.sortBy&&(y=c(y,i.sortBy,i.sortDesc));y=function(e,t,a){const s=(a-1)*t,n=s+t,r=e.slice(s,n);return{totalItems:e.length,currentPage:a,data:r}}(y,s.limit,s.page),t.status(200).send(y)}catch(e){i.default.error("Error in accessLogsController.getFilesInfo",{meta:e}),t.status(500).send({message:"Internal server error"})}}}},9880:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(9896)),r=a(9031);async function o(e,t){const a=await e.findAll({attributes:{exclude:["module"]},order:["id"]});i(JSON.parse(JSON.stringify(a)),t)}function i(e,t){const a=JSON.stringify(e,null,4),s=`src/database/initialdata/${t}.json`;n.default.writeFileSync(s,a)}t.default={async updateInitialData(e,t,a={}){const s="src/modules",r=(l=e.tableName,["app_objects","view_settings","report_settings","data_processors","scheduled_jobs","rest_api","components","print_forms","common_modules"].includes(l));var l;if("delete"===a.event&&r)return function(e,t,a){let s;switch(e){case"app_objects":s=`${t.type}s/${t.name}`;break;case"view_settings":s=`${t.appObject.type}s/${t.appObject.name}/views/${t.name}`;break;case"report_settings":s=`reports/${t.name}`;break;case"data_processors":s=`dataProcessors/${t.name}`;break;case"scheduled_jobs":s=`scheduledJobs/${t.name}`;break;case"components":s=`components/${t.name}`;break;case"common_commands":s=`commonCommands/${t.name}`;break;case"rest_api":s=`restApi/${t.name}`;break;case"print_forms":s=`${t.appObject.type}s/${t.appObject.name}/printForms/${t.name}`;break;case"common_modules":s=`commonModules/${t.name}.js`}if(s){const e=`${a}/${s}`;n.default.existsSync(e)&&n.default.rmSync(e,{force:!0,recursive:!0})}}(e.tableName,a.oldValue,s),void("common_modules"===e.tableName&&o(e,t));const u=[],c=[];if(e.associations){for(const t in e.associations)if(e.associations[t].isMultiAssociation){if(e.associations[t].options._noTablePart)continue;let a=e.associations[t].target;u.push({model:a,as:t}),c.push([{model:a,as:t},"rowNumber","ASC"])}"view_settings"!==e.tableName&&"print_forms"!==e.tableName||e.associations.appObject&&u.push({model:e.associations.appObject.target,as:"appObject"})}const d={};r&&(d.id=a?.objectId);try{const r=await e.findAll({where:d,order:["id",...c],include:u}),l=JSON.parse(JSON.stringify(r));"app_objects"===e.tableName?function(e,t,a){for(const s of e){const{module:e,moduleV3:r,...o}=s,i=`${t}/${o.type}s/${o.name}`;if("update"===a.event&&(a.oldValue?.name!==a.newValue?.name||a.oldValue?.type!==a.newValue?.type)){const e=`${t}/${a.oldValue?.type}s/${a.oldValue?.name}`;try{n.default.renameSync(e,i)}catch(e){console.error(e)}}n.default.existsSync(i)||n.default.mkdirSync(i,{recursive:!0});const l=`${i}/object.struct.json`,u=JSON.stringify(o,null,4);if(n.default.writeFile(l,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(void 0!==e){const t=`${i}/client.module.js`;e?n.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)}):n.default.existsSync(t)&&n.default.rmSync(t,{force:!0})}if(void 0!==r){const e=`${i}/client.v3.module.js`;r?n.default.writeFile(e,`export default ${r}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"serverModule")){const e=`${i}/server.module.js`;a.serverModule?n.default.writeFile(e,`${a.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"info")){const e=`${i}/object.info.md`;a.info?n.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}}(l,s,a):"view_settings"===e.tableName?function(e,t,a){for(const s of e){const{module:e,moduleV3:r,serverModule:o,appObject:i,...l}=s,u=`${t}/${i.type}s/${i.name}/views/${l.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/${i.type}s/${i.name}/views/${a.oldValue?.name}`;try{n.default.renameSync(e,u)}catch(e){console.error(e)}}n.default.existsSync(u)||n.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/view.struct.json`;if(n.default.writeFile(d,c,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const f=`${u}/client.module.js`;e?n.default.writeFile(f,`export default ${e}`,function(e){e&&console.error(e)}):n.default.existsSync(f)&&n.default.rmSync(f);const m=`${u}/client.v3.module.js`;r?n.default.writeFile(m,r,function(e){e&&console.error(e)}):n.default.existsSync(m)&&n.default.rmSync(m);const p=`${u}/server.module.js`;if(o?n.default.writeFile(p,`${o}`,function(e){e&&console.error(e)}):n.default.existsSync(p)&&n.default.rmSync(p),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${u}/view.info.md`;a.info?n.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}(l,s,a):"report_settings"===e.tableName?function(e,t,a){for(const s of e){const{dataQuery:e,...r}=s,o=`${t}/reports/${s.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/reports/${a.oldValue?.name}`;try{n.default.renameSync(e,o)}catch(e){console.error(e)}}n.default.existsSync(o)||n.default.mkdirSync(o,{recursive:!0});const i=JSON.stringify(r,null,4),l=`${o}/report.struct.json`;if(n.default.writeFile(l,i,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;if(e){const t=`${o}/data.query.sql`;n.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}const u=`${o}/server.module.js`;if(a.serverModule?n.default.writeFile(u,`${a.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(u)&&n.default.rmSync(u,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${o}/report.info.md`;a.info?n.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}(l,s,a):"data_processors"===e.tableName?function(e,t,a){for(const s of e){const e=`${t}/dataProcessors/${s.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const s=`${t}/dataProcessors/${a.oldValue?.name}`;try{n.default.renameSync(s,e)}catch(e){console.error(e)}}n.default.existsSync(e)||n.default.mkdirSync(e,{recursive:!0});const r=JSON.stringify(s,null,4),o=`${e}/processor.struct.json`;n.default.writeFile(o,r,function(e){e&&console.error(e)});const i=`${e}/server.module.js`;a.serverModule?n.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(i)&&n.default.rmSync(i,{force:!0})}}(l,s,a):"scheduled_jobs"===e.tableName?function(e,t,a){for(const s of e){const e=`${t}/scheduledJobs/${s.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const s=`${t}/scheduledJobs/${a.oldValue?.name}`;try{n.default.renameSync(s,e)}catch(e){console.error(e)}}n.default.existsSync(e)||n.default.mkdirSync(e,{recursive:!0});const r=JSON.stringify(s,null,4),o=`${e}/job.struct.json`;if(n.default.writeFile(o,r,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?n.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(i)&&n.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/job.info.md`;a.info?n.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):n.default.existsSync(t)&&n.default.rmSync(t,{force:!0})}}}(l,s,a):"rest_api"===e.tableName?function(e,t,a){for(const s of e){const e=`${t}/restApi/${s.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const s=`${t}/restApi/${a.oldValue?.name}`;try{n.default.renameSync(s,e)}catch(e){console.error(e)}}n.default.existsSync(e)||n.default.mkdirSync(e,{recursive:!0});const r=JSON.stringify(s,null,4),o=`${e}/api.struct.json`;if(n.default.writeFile(o,r,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?n.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(i)&&n.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/api.info.md`;a.info?n.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):n.default.existsSync(t)&&n.default.rmSync(t,{force:!0})}}}(l,s,a):"components"===e.tableName?function(e,t,a){for(const s of e){const{module:e,moduleV3:r,serverModule:o,...i}=s,l=`${t}/components/${s.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/components/${a.oldValue?.name}`;try{n.default.renameSync(e,l)}catch(e){console.error(e)}}n.default.existsSync(l)||n.default.mkdirSync(l,{recursive:!0});const u=JSON.stringify(i,null,4),c=`${l}/component.struct.json`;if(n.default.writeFile(c,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${l}/client.module.js`;n.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(r){const e=`${l}/client.v3.module.js`;n.default.writeFile(e,r,function(e){e&&console.error(e)})}if(o){const e=`${l}/server.module.js`;n.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,s,a):"common_commands"===e.tableName?function(e,t,a){for(const s of e){const{module:e,moduleV3:r,...o}=s,i=`${t}/commonCommands/${s.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/commonCommands/${a.oldValue?.name}`;try{n.default.renameSync(e,i)}catch(e){console.error(e)}}n.default.existsSync(i)||n.default.mkdirSync(i,{recursive:!0});const l=JSON.stringify(o,null,4),u=`${i}/command.struct.json`;if(n.default.writeFile(u,l,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${i}/client.module.js`;n.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}if(r){const e=`${i}/client.v3.module.js`;n.default.writeFile(e,r,function(e){e&&console.error(e)})}}}}(l,s,a):"print_forms"===e.tableName?function(e,t,a){for(const s of e){const{module:e,moduleV3:r,serverModule:o,appObject:i,...l}=s,u=`${t}/${i.type}s/${i.name}/printForms/${l.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/${i.type}s/${i.name}/printForms/${a.oldValue?.name}`;try{n.default.renameSync(e,u)}catch(e){console.error(e)}}n.default.existsSync(u)||n.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/form.struct.json`;if(n.default.writeFile(d,c,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${u}/client.module.js`;n.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(r){const e=`${u}/client.v3.module.js`;n.default.writeFile(e,`export default ${r}`,function(e){e&&console.error(e)})}if(o){const e=`${u}/server.module.js`;n.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,s,a):"common_modules"===e.tableName?(function(e,t,a){const s=`${t}/commonModules`;n.default.existsSync(s)||n.default.mkdirSync(s,{recursive:!0});for(const s of e){const e=`${t}/commonModules/${s.name}.js`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const s=`${t}/commonModules/${a.oldValue?.name}.js`;try{n.default.renameSync(s,e)}catch(e){console.error(e)}}a.module&&n.default.writeFile(e,`${a.module}`,function(e){e&&console.error(e)})}}(l,s,a),o(e,t)):i(l,t)}catch(e){console.error(e)}},async updatePredefinedInitialData(e){const t=Object.keys(e.model.rawAttributes),a=Object.values(e.model.associations).map(e=>e.foreignKey),s=t.filter(e=>a.includes(e));try{const t=await e.model.findAll({order:["id"],where:{predefinedName:{[r.Op.ne]:null}},attributes:{exclude:s}}),a=JSON.stringify(t,null,4),o=`src/modules/catalogs/${e.name}/predefined.json`;n.default.writeFile(o,a,function(e){e&&console.error(e)})}catch(e){console.error(e)}},async updateEnums(){const e=`${process.cwd()}/src/database/initialdata/enums.json`,t=`${process.cwd()}/src/modules/enums/index.json`,a=JSON.parse(n.default.readFileSync(e,"utf-8")),s={};for(const e of a){const t=e.name;t&&(s[t]=e.values?.map(e=>e.value)||[])}let r={};n.default.existsSync(t)&&JSON.parse(n.default.readFileSync(t,"utf-8"));const o={};for(const[e,t]of Object.entries(s))o[e]=t;n.default.writeFileSync(t,JSON.stringify(o,null,2),"utf-8")}}},9896:e=>{e.exports=require("fs")},9911:function(e,t,a){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(a(7252)),r=s(a(1688)),o=s(a(1814)),i=n.default.Router();i.post("/send_sms",r.default.canRead({key:"sendsms"}),o.default.sendSMS),t.default=i}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(a.exports,a,a.exports,__webpack_require__),a.exports}var __webpack_exports__=__webpack_require__(7927);module.exports=__webpack_exports__})();
2
+ (()=>{"use strict";var __webpack_modules__={9:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(5788)),r=s(9031);class o extends r.Model{}o.init({id:{type:r.DataTypes.UUID,primaryKey:!0},sid:{type:r.DataTypes.UUID,allowNull:!1,unique:!0},userId:r.DataTypes.UUID,expires:r.DataTypes.DATE,data:r.DataTypes.TEXT,licNumber:r.DataTypes.STRING(100),clientType:{type:r.DataTypes.ENUM,values:["browser","mobile","electron","api"],defaultValue:"browser"}},{sequelize:n.default,tableName:"session",modelName:"Session"})},121:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=s(9031),o=a(s(9896)),i=s(7138),l=a(s(1688)),u=a(s(3786)),c=a(s(5788)),d=a(s(2282)),f=n.default.Router();function m(e={},t){let s;const a={};return e.userRole?a.id=e.userRole:t.accessRoleId?a.id=t.accessRoleId:a.key=t.path,s=e.accessLevel?"CAN_REED"===e.accessLevel?l.default.canRead(a):"CAN_MODIFY"===e.accessLevel?l.default.canModify(a):"IS_AUTH"===e.accessLevel?l.default.isAuth:l.default.isFullRights:"GET"===e.httpMethod?l.default.canRead(a):l.default.canModify(a),s}t.default={async initRoutes(){const e=await c.default.query('SELECT * FROM workers WHERE workers."markedToDelete" = false',{type:r.QueryTypes.SELECT});for(const t of e){if(!t.api)continue;let e;const s=`workers/${t.name}/server.module.js`,a=`${process.cwd()}/src/modules/${s}`;if(o.default.existsSync(a)&&(e=require(a)),!e)continue;const n=JSON.parse(t.api);for(const s of n)e[s.controller]&&"function"==typeof e[s.controller]?f[s.httpMethod.toLowerCase()](`/api/${t.path}/${s.path}`,m(s.httpMethod,t),(e,t,s)=>{const a=e.headers["content-type"];if(a&&a.includes("multipart/form-data"))return u.default.array("files")(e,t,e=>{if(e)return t.status(i.StatusCodes.INTERNAL_SERVER_ERROR).json({message:`File upload error: ${e}`});s()});s()},e[s.controller]):d.default.error("Worker controller is not exist: ",{meta:{name:t.name,controller:s.controller}})}return f}}},360:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=s(9031),o=a(s(9896)),i=s(7138),l=a(s(1688)),u=a(s(3786)),c=a(s(5788)),d=a(s(2282)),f=n.default.Router();function m(e={},t){let s;const a={};return e.userRole?a.id=e.userRole:t.accessRoleId?a.id=t.accessRoleId:a.key=t.path,s=e.accessLevel?"CAN_REED"===e.accessLevel?l.default.canRead(a):"CAN_MODIFY"===e.accessLevel?l.default.canModify(a):"IS_AUTH"===e.accessLevel?l.default.isAuth:l.default.isFullRights:"GET"===e.httpMethod?l.default.canRead(a):l.default.canModify(a),s}t.default={async initRoutes(){const e=await c.default.query('SELECT * FROM rest_api WHERE rest_api."markedToDelete" = false AND rest_api."active" = true',{type:r.QueryTypes.SELECT});for(const t of e){if(!t.methods)continue;let e;const s=`restApi/${t.name}/server.module.js`,a=`${process.cwd()}/src/modules/${s}`;if(o.default.existsSync(a)&&(e=require(a)),!e)continue;const n=JSON.parse(t.methods);for(const s of n)e[s.controller]&&"function"==typeof e[s.controller]?f[s.httpMethod.toLowerCase()](`/api/${t.path}/${s.path}`,m(s.httpMethod,t),(e,t,s)=>{const a=e.headers["content-type"];if(a&&a.includes("multipart/form-data"))return u.default.array("files")(e,t,e=>{if(e)return t.status(i.StatusCodes.INTERNAL_SERVER_ERROR).json({message:`File upload error: ${e}`});s()});s()},e[s.controller]):d.default.error("Rest API controller is not exist: ",{meta:{name:t.name,controller:s.controller}})}return f}}},664:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(2282)),r=a(s(5788));t.default={async onChangeHandler(e,t,s,a,o){try{const n=await r.default.models.ObjectVersioningSetting.findOne({where:{objectType:e.name}});if(n&&("all"===n.versioningMethod||n.versioningMethod===s)){let n=function(e){let t=[];if(e.associations)for(let s in e.associations){if("chargedServicesAcc"===s)continue;let a=e.associations[s].target;if(e.associations[s].isSingleAssociation){let n=["id","presentation"];e.associations[s].source.rawAttributes.name&&n.push("name"),t.push({model:a,as:s,attributes:n})}else{const e=t.push({model:a,as:s,include:[]});if(a.associations){t[e-1].include=[];for(let s in a.associations){let n=a.associations[s].target;if(a.associations[s].isSingleAssociation){let r=["id","presentation"];a.associations[s].target.rawAttributes.name&&r.push("name"),t[e-1].include.push({model:n,as:s,attributes:r})}}}}}return t}(e);await e.findByPk(t,{include:n,transaction:o}).then(async n=>{if(n){const i={objectId:t,objectData:JSON.stringify(n),objectType:e.name,userId:a,description:s},l={transaction:o||null};await r.default.models.ObjectVersion.create(i,l).catch(e=>{console.error(e)})}})}}catch(t){n.default.error(`Error in ${e.options.name?.plural} objectVersionsService onChangeHandler`,{meta:t})}},async addChanges(e,t){let s={...e};t.user&&(s.userId=t.user.id),await r.default.models.ObjectVersion.create(s).catch(e=>{console.error(e)})}}},696:e=>{e.exports=require("ssf")},829:e=>{e.exports=require("jsonwebtoken")},1572:e=>{e.exports=require("nodemailer")},1688:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(1691)),r=s(7138),o=a(s(2282));t.default={isAuth(e,t,s){if(!e.user){const e="Error in accessRight.isAuth. User not authenticated";return o.default.error(e),t.status(r.StatusCodes.FORBIDDEN).send({message:e})}s()},isFullRights(e,t,s){if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),t.status(r.StatusCodes.FORBIDDEN).send({message:e})}if(!0!==e.user.fullRights){const e="Error in accessRight.isFullRights. User not has full rights";return o.default.error(e),t.status(r.StatusCodes.FORBIDDEN).send({message:e})}s()},canRead:e=>async(t,s,a)=>{if(!t.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),s.status(r.StatusCodes.FORBIDDEN).send({message:e})}if(!0===t.user.fullRights)return void a();const i=t.user?.id;i?await n.default.checkUserAccess(i,e,!0).then(n=>{if(!0===n)a();else{const a=`User ${t.user?.name} not have access to read. Role ${e}`;o.default.error("Error in accessRight.canRead",{meta:a}),s.status(r.StatusCodes.FORBIDDEN).send({message:a})}}).catch(e=>{o.default.error("Error in accessRight.canRead",{meta:e}),s.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):s.status(r.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},canModify:e=>async(t,s,a)=>{if(!0===t.user?.fullRights)return void a();const i=t.user?.id;i?await n.default.checkUserAccess(i,e,!0,!0).then(n=>{if(!0===n)a();else{const a=`User ${t.user?.name} not have access to modify. Role ${e}`;o.default.error("Error in accessRight.canModify",{meta:a}),s.status(r.StatusCodes.FORBIDDEN).send({message:a})}}).catch(e=>{o.default.error("Error in accessRight.canModify",{meta:e}),s.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):s.status(r.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})}}},1691:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(9031),r=a(s(5788)),o=a(s(2555));async function i(e){const t=[];return await r.default.models.Department.findAll({where:{[n.Op.or]:[{leaderId:e},{deputyId:e}]}}).then(e=>{for(const s of e)t.push(s.id)}).catch(e=>{throw e}),await r.default.models.DepartmentEmployee.findAll({where:{employeeId:e}}).then(e=>{for(const s of e)t.push(s.parentId)}).catch(e=>{throw e}),t}t.default={getUserAccessRoles:async(e,t=!1,s=!1)=>await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const s=await i(e);return await r.default.models.RoleGroupDepartment.findAll({where:{departmentId:s}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const a={parentId:e};return!0===s?a.canModify=!0:!0===t&&(a.canRead=!0),await r.default.models.RoleGroupSetting.findAll({where:a}).then(e=>{const t=[];for(const s of e){const e=t.findIndex(e=>e.userRoleId===s.id);e>-1?(s.canRead!==t[e].canRead&&!0===s.canRead&&(t[e].canRead=s.canRead),s.canModify!==t[e].canModify&&!0===s.canModify&&(t[e].canModify=s.canModify)):t.push({userRoleId:s.userRoleId,canRead:s.canRead,canModify:s.canModify})}return t}).catch(e=>{throw e})}).catch(e=>{throw e}),getUserAccessRoleId:async(e,t=!1,s=!1)=>await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>{const a={parentId:e.map(e=>e.parentId)};return!0===s?a.canModify=!0:!0===t&&(a.canRead=!0),await r.default.models.RoleGroupSetting.findAll({where:a}).then(t=>e=t.map(e=>e.userRoleId)).catch(e=>{throw e})}).catch(e=>{throw e}),getUserRoleByKey:async e=>await r.default.models.UserRole.findOne({where:{key:e}}).then(async e=>e).catch(e=>{throw e}),getUserRoleById:async e=>await r.default.models.UserRole.findByPk(e).then(async e=>e).catch(e=>{throw e}),async checkUserAccess(e,t,s=!1,a=!1){const n=t?.id?await this.getUserRoleById(t.id):await this.getUserRoleByKey(t.key);return n?await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const s=await i(e);return await r.default.models.RoleGroupDepartment.findAll({where:{departmentId:s}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const t={parentId:e,userRoleId:n.id};return!0===a?t.canModify=!0:!0===s&&(t.canRead=!0),await r.default.models.RoleGroupSetting.findAll({where:t}).then(e=>!!(e&&e.length>0)).catch(e=>{throw e})}).catch(e=>{throw e}):new Error(`Role with key ${t} does not exist`)},async getAllSubDepartments(e,t){const s=[],a=await r.default.models.Department.findAll({where:{groupId:e.id},include:t});for(const e of a){s.push(e);const a=await this.getAllSubDepartments(e,t);for(const e of a)s.push(e)}return s},async accessRestrictions(e,t){const s={use:!1,users:[]},a=await r.default.models.AccessRestriction.findOne({where:{objectType:t.name}});if(a&&(!0===a.useRestriction||!0===a.useDepartmentRestriction)&&(s.use=!0,s.users.push(e.user?.id),!0===a.useDepartmentRestriction)){const t=o.default.prepareIncludes(r.default.models.Department,{withTableParts:!0}),a=await r.default.models.Department.findAll({where:{[n.Op.or]:[{leaderId:e.user?.id},{deputyId:e.user?.id}]},include:t}),i=[];for(const e of a){const s=await this.getAllSubDepartments(e,t);for(const e of s)i.push(e)}for(const e of i)a.push(e);if(a)for(const e of a)for(const t of e.employees)s.users.push(t.employeeId)}return s},getUserAccessNavigation:async e=>await r.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const s=await i(e);return await r.default.models.RoleGroupDepartment.findAll({where:{departmentId:s}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>await r.default.models.RoleGroupNavigation.findAll({where:{parentId:e}}).then(e=>{const t=e.map(e=>e.navigationId);return[...new Set(t)]}).catch(e=>{throw e})).catch(e=>{throw e})}},1752:e=>{e.exports=require("passport-local")},1763:e=>{e.exports=require("express-rate-limit")},1814:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(7138),r=a(s(2282)),o=a(s(7099));t.default={async sendSMS(e,t,s){try{const{dest:s,smsText:a,delivNotifRequest:r}=e.body,i=await o.default.sendSms(s,a,r);t.status(n.StatusCodes.OK).send(i)}catch(e){r.default.error("Error while trying to send sms",{meta:e}),t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}}}},2096:e=>{e.exports=require("morgan")},2103:e=>{e.exports=require("crypto-js")},2282:function(e,t,s){var a,n=this&&this.__createBinding||(Object.create?function(e,t,s,a){void 0===a&&(a=s);var n=Object.getOwnPropertyDescriptor(t,s);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,a,n)}:function(e,t,s,a){void 0===a&&(a=s),e[a]=t[s]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(a=function(e){return a=Object.getOwnPropertyNames||function(e){var t=[];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[t.length]=s);return t},a(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s=a(e),o=0;o<s.length;o++)"default"!==s[o]&&n(t,e,s[o]);return r(t,e),t});Object.defineProperty(t,"__esModule",{value:!0});const i=o(s(5124));i.default.addColors({error:"bold red",warn:"yellow",info:"green",verbose:"dim white",debug:"gray",silly:"magenta"});const l=i.default.createLogger({level:"info",format:i.format.combine(i.format.colorize(),i.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),i.format.prettyPrint(),i.format.printf(e=>`${e.timestamp}${e.context?` [${e.context}]`:""}${e.level?` ${e.level}`:""}: ${e.message?e.message:""} ${e.meta?e.meta?.stack?`${e.meta.original?.message?e.meta.original?.message:""} ${e.meta.stack}`:e.meta:""} ${e.stack?`\n${e.stack}`:""}`)),transports:[new i.transports.File({level:"error",filename:"logs/common/error.log",format:i.default.format.uncolorize()}),new i.transports.File({filename:"logs/common/combined.log",format:i.default.format.uncolorize()}),new i.transports.Console],exceptionHandlers:[new i.transports.File({filename:"logs/common/exceptions.log"})]});t.default=l},2362:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(6261));t.default={sendMessage(e,t){e.app.get("eventEmitter").emit("processing",{message:t})},sendData(e,t){e.app.get("eventEmitter").emit("processing",t)},init(e){const t=new n.default;e.set("eventEmitter",t),e.get("/client_events",(e,s)=>{s.setHeader("Content-Type","text/event-stream"),s.setHeader("Cache-Control","no-cache"),s.setHeader("Connection","keep-alive"),s.setHeader("Access-Control-Allow-Credentials","true"),s.flushHeaders(),t.on("processing",e=>{(e=>{s.write(`data: ${JSON.stringify(e)}\n\n`),s.flush()})(e)}),e.on("close",()=>{s.end()})})}}},2525:e=>{e.exports=require("helmet")},2555:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(5788)),r=s(9031);function o(e){const t={};if(0===e.length)return t;for(const s of e){const e=s.split(".");e.length>0&&(t[e[0]]?2==e.length?t[e[0]].push(e[1]):e.length>2&&(t[e[0]][e[1]]?t[e[0]][e[1]].push(e[2]):t[e[0]].push({[e[1]]:[e[2]]})):2==e.length?t[e[0]]=[e[1]]:e.length>2&&(t[e[0]]={},t[e[0]][e[1]]=[e[2]]))}return t}t.default={prepareIncludes(e,t,s=[],a=null,n=null,r=[]){let i=[],l=!0;Object.prototype.hasOwnProperty.call(t,"compactInclude")&&(l=t.compactInclude);const u=o(s),c=o(r);if(t.include)i=t.include;else if(e.associations){if(!0!==l)return{all:!0};for(let s in e.associations){if(e.associations[s].options._noTablePart)continue;let r=e.associations[s].target;if(e.associations[s].isSingleAssociation){let t=["id","presentation"];e.associations[s].target.getAttributes().name&&t.push("name");const n=[];if(u[s])for(const e of u[s])if("object"==typeof e)for(const t in e){const s=r.associations[t]?.target;if(s){const a=e[t];if(Array.isArray(a)){let e=[...new Set(["id","presentation",...a])];s.getAttributes().name&&e.push("name"),n.push({model:s,as:t,attributes:e})}}}else t.includes(e)||t.push(e);c[s]&&(t=[...new Set([...t,...c[s]])]);const o=a?.[s];i.push({model:r,as:s,attributes:t,where:o,include:n})}else if(t.withTableParts){const e=a?.[s],t=i.push({model:r,as:s,where:e,include:[]});if(n&&r.getAttributes().rowNumber&&n.push([{model:r,as:s},"rowNumber","asc"]),r.associations){i[t-1].include=[];for(let e in r.associations){let a=r.associations[e].target;if(r.associations[e].isSingleAssociation){let n=["id","presentation"];r.associations[e].target.getAttributes().name&&n.push("name"),u[s]?.[e]&&(n=[...new Set([...n,...u[s][e]])]),i[t-1].include?.push({model:a,as:e,attributes:n})}}}}}}return i},async setAuthor(e,t){t.user?(e.authorId=t.user.id,e.author=t.user):console.error("Not found user on request!")},executeConditionCode:(e,t)=>new Function("args",e)(t),translateField:(e,t,s)=>!0!==(s&&"pl"!==s)||null===e.lang?e[t]:e.lang?.[t]?.[s]||e[t],async initEnums(){try{return(await n.default.query('\n SELECT \n enums.id AS "id",\n enums.name AS "enumName",\n enum_values.id AS "valueId",\n enum_values.value AS "value",\n enum_values."rowNumber" AS "rowNumber"\n FROM \n enums\n LEFT JOIN \n enum_values \n ON \n enum_values."parentId" = enums.id\n ORDER BY \n enums.id ASC, \n enum_values."rowNumber" ASC',{type:r.QueryTypes.SELECT})).reduce((e,t)=>(e[t.enumName]||(e[t.enumName]=[]),e[t.enumName].push(t.value),e),{})}catch(e){return console.error(e),{}}},normalizeFloat(e,t=6){if(!Number.isFinite(e))return e;const s=Math.pow(10,t),a=Math.round(e*s)/s,n=Math.pow(10,3);return 0===Math.round(e*n)/n?0:a}}},2562:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(2282)),r=s(7138),o=a(s(9896)),i=a(s(2103)),l=a(s(9880));t.default={async executeProcessing(e,t,s,a){const i=e.body.name;if(!i){const e="Object name is not correct!";return n.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let l;const u=`dataProcessors/${i}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;if(o.default.existsSync(c)){const e=require.resolve(c);require.cache[e]&&delete require.cache[e],l=require(c)}if(!l){const e="Data processor module is empty!";return n.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if(!l?.executeProcessing||"function"!=typeof l?.executeProcessing){const e="Data processor run function is not exist!";return n.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}try{const n=await l.executeProcessing(e,t,s,a);return{status:r.StatusCodes.OK,responseData:{executionComplited:!0,result:n}}}catch(e){return n.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async exportProcessor(e,t,s,a){const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length){const e="Object id is not correct!";return n.default.error(`Error in ${a.name} findItem controller`,{meta:e}),t.status(r.StatusCodes.BAD_REQUEST).send({message:e})}return await a.model.findByPk(l).then(e=>{if(!e){const e=`${a.name} with id ${l} not found`;return n.default.error(`Error in ${a.name} exportProcessor controller`,{meta:e}),t.status(r.StatusCodes.NOT_FOUND).send({message:e})}{const s=JSON.parse(JSON.stringify(e));let l;const u=`dataProcessors/${s.name}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;o.default.existsSync(c)&&(delete require.cache[require.resolve(c)],l=require(c)),s.serverModule=l?o.default.readFileSync(`src/modules/${u}`,{encoding:"utf8",flag:"r"}):"";const d=i.default.AES.encrypt(JSON.stringify(s),"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3").toString(),f=`/tmp/${s.id}.sdp`;o.default.writeFileSync(f,d),t.status(r.StatusCodes.OK).download(f,`${s.name}.sdp`,e=>{if(e)return n.default.error(`Error in ${a.name} exportProcessor controller`,{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).json({message:e.message});o.default.unlinkSync(f)})}}).catch(e=>(n.default.error(`Error in ${a.name} exportProcessor controller`,{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})))},async importProcessor(e,t,s,a){let{data:u}=e.body;if(u=JSON.parse(u||"{}"),!e.files||!u){const e="No file uploaded!";return n.default.error(`Error in ${a.name} importProcessor controller`,{meta:e}),t.status(r.StatusCodes.BAD_REQUEST).send({message:e})}try{for(let s of e.files){const e=s.path,n=o.default.readFileSync(e,{encoding:"utf8",flag:"r"}),c=i.default.AES.decrypt(n,"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3"),d=JSON.parse(c.toString(i.default.enc.Utf8));o.default.unlinkSync(e);let f=await a.model.findByPk(u.id);const m={objectId:u.id,serverModule:d.serverModule};let p;return f?(p=await f.update({name:d.name,title:d.title,lang:d.lang},{where:{id:u.id}}),m.event="update",m.oldValue=f,m.newValue=p):(p=await a.model.create({id:u.id,name:d.name,title:d.title,lang:d.lang}),m.event="create",m.newValue=p),await l.default.updateInitialData(a.model,a.path,m),t.status(r.StatusCodes.OK).send({message:"OK"})}}catch(e){return n.default.error(`Error in ${a.name} importProcessor controller`,{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})}}}},2671:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(5788)),r=a(s(4716)),o=a(s(2282)),i=s(9031);t.default={async setNumber(e,t,s){if(t.noSetPrefix&&!0===t.noSetPrefix)return;t.prefix?t.prefix.id&&(t.prefix=await n.default.models.DocumentPrefix.findByPk(t.prefix.id)):t.prefix="AA",function(e){"numberPeriod"in e&&e.prefix.id&&("year"===e.prefix.periodicity?e.numberPeriod=(0,r.default)(e.date).startOf("year").toDate():"quarter"===e.prefix.periodicity?e.numberPeriod=(0,r.default)(e.date).startOf("quarter").toDate():"month"===e.prefix.periodicity?e.numberPeriod=(0,r.default)(e.date).startOf("month").toDate():"day"===e.prefix.periodicity?e.numberPeriod=e.date.startOf("day").toDate():e.numberPeriod=null)}(t);const a=t.prefix?.id?t.prefix.name:t.prefix,l=t.numberPeriod?t.numberPeriod:null;let u=1;try{let r=await n.default.models.Numerator.findOne({where:{tableName:e.path,prefix:a,period:l},lock:i.Transaction.LOCK.UPDATE,transaction:s});if(r)r.number++,await r.save({transaction:s});else{let o={prefixId:null};t.prefix.id?o.prefixId=t.prefix.id:o.prefixId=null,"numberPeriod"in t&&(o.numberPeriod=l);const i=await e.model.findOne({where:o,order:[["number","DESC"]],transaction:s});i&&(u=parseFloat(i.number)+1),r=await n.default.models.Numerator.create({tableName:e.path,prefix:a,period:l,number:u},{transaction:s})}u=r.number}catch(t){o.default.error(`Error in ${e.name} createItem controller`,{meta:t})}t.number=u,function(e){if(e.prefix?.template&&""!=e.prefix?.template){const t=e.prefix.template.trim().replace(/\[([^\]]+)\]/g,(t,s)=>"Number"===s?e.number.toString().padStart(6,"0"):"MonthDay"===s?(0,r.default)(e.date).format("DD"):"MonthNumber"===s?(0,r.default)(e.date).format("MM"):"QuarterNumber"===s?(0,r.default)(e.date).quarter().toString().padStart(2,"0"):"YearTwoDigits"===s?(0,r.default)(e.date).format("YY"):"YearFourDigits"===s?(0,r.default)(e.date).format("YYYY"):"Prefix"===s?e.prefix.name:"Organization"===s?e.organization?.code?e.organization.code:t:"CounterpartyCode"===s?e.counterparty?.code?e.counterparty.code:t:"StoreCode"===s&&e.warehouse?.code?e.warehouse.code:t);e.numberStr=t}else e.numberStr=(e.prefix?.name?e.prefix?.name:e.prefix)+"-"+e.number.toString().padStart(6,"0")}(t)},async nextNumber(e,t,s=void 0,a){let r,l=1,u=!1;a?(r=a,u=!0):r=await(e.sequelize?.transaction());try{const s=e.getTableName();let a=await n.default.models.Numerator.findOne({where:{tableName:s,prefix:t},lock:i.Transaction.LOCK.UPDATE,transaction:r});if(a)a.number++,await a.save({transaction:r});else{const o=await e.findOne({where:{prefix:t},order:[["number","DESC"]],transaction:r});o&&(l=o.number+1),a=await n.default.models.Numerator.create({tableName:s,prefix:t,number:l},{transaction:r})}!0!==u&&r&&await r.commit(),l=a.number}catch(t){!0!==u&&r&&await r.rollback(),o.default.error(`Error in ${e.options.name?.plural} createItem controller`,{meta:t})}return l}}},2703:e=>{e.exports=require("node-cron")},3275:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default={typesSufixes:()=>({string:"ST",text:"TX",integer:"IN",decimal:"DC",boolean:"BL",date:"DT"}),typeIncludesRef:e=>e.includes("enum")||e.includes("catalog")||e.includes("document")||e.includes("anyRef")||e.findIndex(e=>e.includes("."))>-1,isRefType:e=>"enum"===e||"catalog"===e||"document"===e||"anyRef"===e||e.includes("."),getFieldNameByType(e,t){const s=this.typesSufixes();return s[t]?`_${e}${s[t]}`:this.isRefType(t)?`_${e}Ref`:null}}},3407:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(4139)),r=a(s(7281)),o=a(s(9816)),i=a(s(7565)),l=a(s(6961)),u=a(s(9911));t.default=e=>{e.use(o.default),e.use(n.default),e.use(r.default),e.use(l.default),e.use(i.default),e.use(u.default)}},3464:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(2703)),r=a(s(5788)),o=a(s(9896)),i=s(7138),l=a(s(2282)),u=[];t.default={async init(e){if(process.env.NODE_APP_INSTANCE&&"0"!==process.env.NODE_APP_INSTANCE)return;if(!r.default.models.ScheduledJob)return void l.default.error("Error in Scheduled Jobs init.",{meta:"Scheduled jobs is not initialized!!!"});const t=await r.default.models.ScheduledJob.findAll({where:{active:!0,markedToDelete:!1}});if(Array.isArray(t)&&t.length>0)for(const s of t){const t=s.schedule,a=`scheduledJobs/${s.name}/server.module.js`;let n;const r=`${process.cwd()}/src/modules/${a}`;if(!o.default.existsSync(r))return console.log(`Serwer module for scheduled job "${s.name}" is not found!`);if(n=require(r),t.dateFrom||t.dateTo){const e=new Date;if(t.dateFrom&&e<new Date(t.dateFrom))continue;if(t.dateTo&&e>new Date(t.dateTo))continue}c(s,t,n,e)}},async executeManually(e,t,s,a){const n=e.body.name;if(!n){const e="Object name is not correct!";return l.default.error(`Error in ${a.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let u;const c=`scheduledJobs/${n}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;if(o.default.existsSync(d)&&(delete require.cache[require.resolve(d)],u=require(d)),!u){const e="Scheduled job module is empty!";return l.default.error(`Error in ${a.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if("function"!=typeof u){const e="Scheduled job run function is not exist!";return l.default.error(`Error in ${a.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const f=await r.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.body.id,status:"started"});try{const t=[],s=await u(e.objects,t),a=t.find(e=>"error"===e.status),n=t.find(e=>"info"===e.status);let r="";if(a){for(let e of t)r+=e.meta+"\n";await f.update({endDate:new Date,status:"error",errorDescription:r,userId:e.user?.id,manual:!0})}else if(n){for(let e of t)r+=e.meta+"\n";await f.update({endDate:new Date,status:"success",errorDescription:r,userId:e.user?.id,manual:!0})}else await f.update({endDate:new Date,status:"success",userId:e.user?.id,manual:!0});return{status:i.StatusCodes.OK,responseData:{executionComplited:!0,result:s}}}catch(e){return l.default.error(`Error in ${a.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}}};const c=(e,t,s,a)=>{const o=`${d(t.minutes,t.startTime,"minutes")} \n ${d(t.hours,t.startTime,"hours")} \n ${f(t.daysOfMonth)} \n ${f(t.months)} \n ${f(t.daysOfWeek)}\n `,i=n.default.schedule(o,async()=>{const t=await r.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.id,status:"started"});try{const e=[];await s(a,e);const n=e.find(e=>"error"===e.status),r=e.find(e=>"info"===e.status);let o="";if(n){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"error",errorDescription:o})}else if(r){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"success",errorDescription:o})}else await t.update({endDate:new Date,status:"success"})}catch(e){console.error("Error executing module code:",e),await t.update({endDate:new Date,status:"error",errorDescription:e.message})}},{scheduled:!1});i.start(),u.push({jobId:e.id,jobExemplar:i})},d=(e,t,s)=>e&&"00"!==e?`*/${Number(e)}`:t?"minutes"===s?`${t.substring(3,5)}`:`${t.substring(0,2)}`:"*",f=e=>{if(e.length>0){let t="";for(const s of e)t+=s,e.length-1!==e.indexOf(s)&&(t+=",");return t}return"*"}},3648:e=>{e.exports=require("pdfmake")},3786:function(e,t,s){var a=s(8287).hp,n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(s(8461)),o=n(s(4716)),i=n(s(9896)),l=r.default.diskStorage({destination:function(e,t,s){s(null,function(){const e=(0,o.default)().format("DD_MM_YYYY"),t=`${process.env.DESTINATION}/common/${e}`;return i.default.existsSync(t)||i.default.mkdirSync(t,{recursive:!0}),t}())},filename:function(e,t,s){t.originalname=a.from(t.originalname,"latin1").toString("utf8");const n=function(e){let t=e.originalname,s="";const a=/(?:\.([^.]+))?$/.exec(e.originalname);if(!a)return`file_${Date.now()}${s}`;s=a[0],t=String(e.originalname).replace(s,"");return t=String(t).replace(/[^a-zA-Z0-9-_]/g,"_"),t=t.toLowerCase(),`${t}_${Date.now()}${s}`}(t);s(null,n)}});t.default=(0,r.default)({storage:l,limits:{fileSize:104857600}})},3830:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(8894));t.default=async e=>{const t=await r(e);return[{name:"customerRequests",query:'select * from customer_requests where "authorId" = :authorId',params:{authorId:e.user?.id}},{name:"customerRequestStatuses",query:"select * from customer_request_statuses"},{name:"deliveryNotes",query:`SELECT * FROM delivery_notes as virtual_table ${t}`},{name:"deliveryOrders",query:`SELECT * FROM delivery_orders as virtual_table ${t}`},{name:"Dispositions",query:`SELECT * FROM dispositions as virtual_table ${t}`}]};const r=async e=>{let t="";const s=await n.default.getForwarderFilter(e);return!1===s.fullAccess&&(t=`WHERE virtual_table."forwarderId" = '${s.forwarder}'`),t}},3857:e=>{e.exports=require("connect-session-sequelize")},3903:e=>{e.exports=require("uuid")},3958:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(3903),r=s(7138),o=s(9031),i=a(s(4716)),l=a(s(9896)),u=a(s(2282)),c=a(s(2555)),d=a(s(2671)),f=a(s(6299)),m=a(s(9880)),p=a(s(664)),y=a(s(5788)),h=a(s(2103));function g(e,t){const s=[];if(e.associations)for(const a in e.associations)if(e.associations[a].isMultiAssociation){if(e.associations[a].options._noTablePart)continue;if(Object.prototype.hasOwnProperty.call(t,a)){let t=e.associations[a].target;s.push({model:t,as:a})}}if(t.addInclude)for(const e of t.addInclude){const t=s.findIndex(t=>t.model===e.model);-1===t?s.push({...e}):s[t].fkField=e.fkField}return s}function b(e,t,s){for(const a in e){const n=e[a];if("object"==typeof n){const e={};for(const t in n)"inList"===t?e[o.Op.in]=n[t]:"notInList"===t?e[o.Op.notIn]=n[t]:e[o.Op[t]]=n[t];if(a.includes(".")){const t=a.split(".");s[t[0]]?s[t[0]][t[1]]=e:s[t[0]]={[t[1]]:e}}else t[a]=e}else if(a.includes(".")){const e=a.split(".");s[e[0]]?s[e[0]][e[1]]=n:s[e[0]]={[e[1]]:n}}else t[a]=n}}function w(e,t){let s=t.sortBy.split(".");if(s.length>1){const t=e.model.associations[s[0]]?.target;s[1]=t?.rawAttributes?.numberStr?"numberStr":"name"}return!0===t.sortDesc&&s.push("DESC"),s}function _(e,t,s){"appObjects"!==e.name&&"viewSettings"!==e.name&&"reportSettings"!==e.name&&"dataProcessors"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name&&"components"!==e.name&&"workers"!==e.name||(s.serverModule=t.serverModule),"commonModules"===e.name&&(s.module=t.module),"appObjects"!==e.name&&"viewSettings"!==e.name&&"reportSettings"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name&&"workers"!==e.name||(s.info=t.info)}t.default={async findAllItems(e,t,s,a,n={}){const l=JSON.parse(e.query?.pagination||"{}"),d=JSON.parse(e.query?.sort||"{}");let f={};e.query?.filter&&(f="string"==typeof e.query?.filter?JSON.parse(e.query?.filter):e.query?.filter);const m=e.query?.limit||null,p=e.query?.withTableParts||null;let y={},h=[];e.query?.attributes&&(y=e.query?.attributes,"string"==typeof y&&(y=JSON.parse(y))),n.attributes&&"object"==typeof n.attributes&&("object"!=typeof y||Array.isArray(y)||0!==Object.keys(y).length?"object"==typeof y&&Array.isArray(y)&&0===y.length?y=n.attributes:"object"!=typeof y||Array.isArray(y)||Array.isArray(n.attributes)?"object"==typeof y&&Array.isArray(y)&&Array.isArray(n.attributes)&&(y=[...new Set([...y,...n.attributes])]):y=Object.assign(y,n.attributes):y=n.attributes),Array.isArray(y)&&(h=y.filter(e=>e.includes(".")),y=y.filter(e=>!e.includes(".")));let g=[];e.query?.extraAttributes&&(g="string"==typeof e.query?.extraAttributes?JSON.parse(e.query?.extraAttributes):e.query?.extraAttributes);let _={};if(n.filter&&(f=Object.assign(f,n.filter)),f.searchStr){const e=function(e){const t=[];for(const s in e.model.rawAttributes)e.model.rawAttributes[s]._fullSearch&&t.push(s);for(const s in e.model.associations)if(e.model.associations[s].options._fullSearch){const a=e.model.associations[s].target.rawAttributes;a.name?t.push(`$${s}.name$`):a.numberStr&&t.push(`$${s}.numberStr$`)}return t}(a);if(e.length>0)if(e.length>1){f[o.Op.or]=[];for(let t of e)f[o.Op.or].push({[t]:{[o.Op.iLike]:`%${f.searchStr}%`}})}else f[e[0]]={[o.Op.iLike]:`%${f.searchStr}%`};delete f.searchStr}f.exclude&&(f.id={[o.Op.and]:f.exclude.map(e=>({[o.Op.ne]:e}))},delete f.exclude),f.advanced&&(b(f.advanced,f,_),delete f.advanced),f.quick&&(b(f.quick,f,_),delete f.quick);for(const e in f)if(e.includes(".")){const t=e.split(".");_[t[0]]?_[t[0]][t[1]]=f[e]:_[t[0]]={[t[1]]:f[e]},delete f[e]}if("document"===a.type&&f.period){const e=f.period[0],t=(0,i.default)(f.period[1]).endOf("day").toISOString();f.date={[o.Op.between]:[e,t]},delete f.period}if("register"===a.type&&f.period){const e=f.period[0],t=f.period[1];f.period={[o.Op.between]:[e,t]}}const S=[];!function(e,t,s){if(Array.isArray(t))for(const a of t)a.sortBy&&s.push(w(e,a));else t?.sortBy&&s.push(w(e,t));e.withoutTimestamps||s.push(["createdAt","DESC"]),s.push(["id","DESC"])}(a,d,S),e.query,p&&(n.withTableParts=p);let v=c.default.prepareIncludes(a.model,n,h,_,null,g);try{let e;if(l.page){let t=l.limit,s=0+(l.page-1)*t;e=await a.model.findAndCountAll({where:f,offset:s,limit:t,attributes:y,order:S,include:v,group:n?.group||null})}else e=await a.model.findAll({where:f,attributes:y,order:S,limit:m,include:v,group:n?.group||null});if(n.resultProcessing&&(e=n.resultProcessing(e)),e)return e=JSON.parse(JSON.stringify(e)),{status:r.StatusCodes.OK,responseData:e};{const e="Items not find";return u.default.error(`Error in ${a.name} findAll controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${a.name} findAll controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findItem(e,t,s,a,n={}){const o=e.params.id;if(!o||"string"!=typeof o||36!==o.length){const e="Object id is not correct!";return u.default.error(`Error in ${a.name} findItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}n.withTableParts=!1;let i={},d=[];if(e.query?.attributes&&(i=e.query.attributes,"string"==typeof i&&(i=JSON.parse(i)),Array.isArray(i)&&(d=i.filter(e=>e.includes(".")),i=i.filter(e=>!e.includes(".")))),n?.attributes&&Array.isArray(n.attributes)){const e=n.attributes.filter(e=>e.includes(".")),t=n.attributes.filter(e=>!e.includes("."));i=Object.assign(i,t),d=Object.assign(d,e)}const f=e.query?.extraAttributes;let m=[];f&&(m="string"==typeof f?JSON.parse(f):f);let p=[],g=d,b=m;for(const e in a.tables)g=g.filter(t=>!t.startsWith(`${e}.`)),b=b.filter(t=>!t.startsWith(`${e}.`));let w=c.default.prepareIncludes(a.model,n,g,null,p,b);try{let t=await a.model.findByPk(o,{include:w,order:p});if(t){t=JSON.parse(JSON.stringify(t));for(const e in a.tables){p=[];let s=d,r=m;s=s.filter(t=>t.startsWith(`${e}.`)),r=r.filter(t=>t.startsWith(`${e}.`));const o=new RegExp(`^${e}\\.`);s=s.map(e=>e.replace(o,"")),r=r.map(e=>e.replace(o,""));const i=c.default.prepareIncludes(a.tables[e].model,n,s,null,p,r);p&&a.tables[e].model.getAttributes().rowNumber&&p.push(["rowNumber","asc"]);const l=await a.tables[e].model.findAll({where:{parentId:t.id},include:i,order:p});t[e]=JSON.parse(JSON.stringify(l))}if(!0===a.configurationData){const s=e.headers["x-client-version"]||"2";await async function(e,t,s,a){if("appObjects"===e.name){delete t.serverModule;const e=`src/modules/${t.type}s/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.serverModule=null,"3"===a?t.moduleV3&&(t.moduleV3=h.default.AES.encrypt(t.moduleV3,s).toString()):t.module&&(t.module=h.default.AES.encrypt(t.module,s).toString()),delete t.info;const n=`src/modules/${t.type}s/${t.name}/object.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("viewSettings"===e.name){const e=await y.default.models.AppObject.findByPk(t.appObjectId);if(t.serverModule=null,t.info=null,"3"===a?t.moduleV3&&(t.moduleV3=h.default.AES.encrypt(t.moduleV3,s).toString()):t.module&&(t.module=h.default.AES.encrypt(t.module,s).toString()),e){const a=`src/modules/${e.type}s/${e.name}/views/${t.name}/server.module.js`;l.default.existsSync(a)&&(t.serverModule=h.default.AES.encrypt(l.default.readFileSync(a,{encoding:"utf8",flag:"r"}),s).toString());const n=`src/modules/${e.type}s/${e.name}/views/${t.name}/view.info.md`;l.default.existsSync(n)&&(t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}))}}else if("reportSettings"===e.name){const e=`src/modules/reports/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.serverModule=null;const a=`src/modules/reports/${t.name}/report.info.md`;l.default.existsSync(a)?t.info=l.default.readFileSync(a,{encoding:"utf8",flag:"r"}):t.info=null}else if("dataProcessors"===e.name){const e=`src/modules/dataProcessors/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.serverModule=null}else if("scheduledJobs"===e.name){const e=`src/modules/scheduledJobs/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.serverModule=null;const a=`src/modules/scheduledJobs/${t.name}/job.info.md`;l.default.existsSync(a)?t.info=l.default.readFileSync(a,{encoding:"utf8",flag:"r"}):t.info=null}else if("restApi"===e.name){const e=`src/modules/restApi/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.serverModule=null;const a=`src/modules/restApi/${t.name}/api.info.md`;l.default.existsSync(a)?t.info=l.default.readFileSync(a,{encoding:"utf8",flag:"r"}):t.info=null}else if("components"===e.name){const e=`src/modules/components/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.serverModule=null,"3"===a?t.moduleV3&&(t.moduleV3=h.default.AES.encrypt(t.moduleV3,s).toString()):t.module=t.module}else if("workers"===e.name){const e=`src/modules/workers/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.serverModule=null,"3"===a?t.moduleV3&&(t.moduleV3=h.default.AES.encrypt(t.moduleV3,s).toString()):t.module=null;const n=`src/modules/workers/${t.name}/worker.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("commonModules"===e.name){const e=`src/modules/commonModules/${t.name}.js`;l.default.existsSync(e)?t.module=h.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),s).toString():t.module=null}}(a,t,e.user?.id,s)}return{status:r.StatusCodes.OK,responseData:t}}{const e=`${a.name} with id ${o} not found`;return u.default.error(`Error in ${a.name} findByPk controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${a.name} findByPk controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findOne(e,t,s,a,n={}){const o=e.params.whereCondition;if(!o){const e="Erron in findOne query parameters!";return u.default.error(`Error in ${a.name} findOne controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}n.withTableParts=!0;const i=c.default.prepareIncludes(a.model,n);return await a.model.findOne({where:o,include:i}).then(e=>{if(e)return{status:r.StatusCodes.OK,responseData:e};{const e=`${a.name} not found`;return u.default.error(`Error in ${a.name} findOne controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${a.name} findOne controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async findPredefinedItem(e,t,s,a,n={}){const o=e.params.name;if(!o||"string"!=typeof o){const e="Object predefined name is not correct!";return u.default.error(`Error in ${a.name} findPredefinedItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}n.withTableParts=!0;let i=c.default.prepareIncludes(a.model,n);return await a.model.findOne({where:{predefinedName:o},include:i}).then(e=>{if(e)return{status:r.StatusCodes.OK,responseData:e};{const e=`${a.name} with predefinedName ${o} is not found`;return u.default.error(`Error in ${a.name} findPredefinedItem controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${a.name} findPredefinedItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async createItem(e,t,s,a,o={},i=void 0){const l=o?.objectData?o.objectData:{...e.body};l.id||(l.id=(0,n.v4)()),delete l.presentation;const c=g(a.model,l),f=o.transaction?o.transaction:await a.model.sequelize.transaction();try{"document"===a.type&&await d.default.setNumber(a,l,f);const s=await a.model.create(l,{include:c,transaction:f});return s?(f.afterCommit(()=>{if(!0===a.configurationData){const e={objectId:s.id,event:"create",newValue:s};_(a,l,e),m.default.updateInitialData(a.model,a.path,e)}else Object.prototype.hasOwnProperty.call(a.model.rawAttributes,"predefinedName")&&"catalog"===a.type&&m.default.updatePredefinedInitialData(a);p.default.onChangeHandler(a.model,s.id,"create",e.user?.id)}),i&&"function"==typeof i&&await i(e,t,s,f),o.transaction||await f.commit(),{status:r.StatusCodes.OK,responseData:s}):{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Object is not created"}}}catch(e){return o.transaction||await f.rollback(),u.default.error(`Error in ${a.name} createItem controller`,{meta:`${a.name} is not created. ${e}`}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async updateItem(e,t,s,a,n={},o=void 0){let i="";const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length)return i="Object id is not correct!",u.default.error(`Error in ${a.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:i}};const c=n.objectData?n.objectData:{...e.body};delete c.presentation;const d=n.transaction?n.transaction:await a.model.sequelize.transaction();let f=await a.model.findByPk(l,{transaction:d});if(!f)return n.transaction||await d.rollback(),i=`${a.name} with uuid ${l} not found`,u.default.error(`Error in ${a.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:i}};const y=JSON.parse(JSON.stringify(f));for(const e in a.tables){const t=await a.tables[e].model.findAll({where:{parentId:f.id}});y[e]=JSON.parse(JSON.stringify(t))}try{if(!n.noVersionCheck){if(!c.updatedAt)return i="The data version not defined",u.default.error(`Error in ${a.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:i}};const e=new Date(c.updatedAt);if(f.updatedAt>e)return i="The data version is less than the existing one in the database",u.default.error(`Error in ${a.name} updateItem controller`,{meta:i}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:i}}}const s=await f.update(c,{transaction:d});if(!s)return{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Item is not updated"}};const h=g(a.model,c);if(h.length>0){const e=f.id;for(const t of h)if(Object.prototype.hasOwnProperty.call(c,t.as)){let s="parentId";t.fkField&&(s=t.fkField),await t.model.destroy({where:{[s]:e},transaction:d});const a=[];for(const s of c[t.as]){const n={...s};t.fkField||(n.parentId=e),a.push(n)}await t.model.bulkCreate(a,{transaction:d})}}return o&&"function"==typeof o&&await o(e,t,s,y,d),d.afterCommit(()=>{if(!0===a.configurationData){const e={objectId:s.id,event:"update",oldValue:y,newValue:s};_(a,c,e),m.default.updateInitialData(a.model,a.path,e)}else Object.prototype.hasOwnProperty.call(a.model.rawAttributes,"predefinedName")&&"catalog"===a.type&&m.default.updatePredefinedInitialData(a);p.default.onChangeHandler(a.model,l,"update",e.user?.id)}),n.transaction||await d.commit(),{status:r.StatusCodes.OK,responseData:s}}catch(e){return n.transaction||await d.rollback(),u.default.error(`Error in ${a.name} updateItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async confirmItem(e,t,s,a,n={}){const o=e.body.id,i=e.body.isConfirmed,l=a.name,c=n.recordsSet||{},d=n.transaction?n.transaction:await a.model.sequelize.transaction();try{for(const t of Object.keys(c)){const s=e.objects[t];if(s&&a.model.associations[t]){let a=await s.model.findAll({where:{recorderId:o,recorderType:l}});a=JSON.parse(JSON.stringify(a)),await s.model.destroy({where:{recorderId:o,recorderType:l},transaction:d});for(const e of c[t])await s.model.create(e,{transaction:d});await f.default.updateTotals(s,{objects:e.objects,recordsBefore:a,recordsAfter:c[t],recorderId:o,recorderType:l,transaction:d})}}return!1===i&&(await a.model.update({isConfirmed:!0,markedToDelete:!1},{where:{id:e.body.id},transaction:d}),d.afterCommit(()=>{p.default.onChangeHandler(a.model,e.body.id,"confirm",e.user?.id)})),n.transaction||await d.commit(),{status:r.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return n.transaction||await d.rollback(),u.default.error(`Error in ${a.name} confirmItem controller`,{meta:`${a.name} is not confirmed. ${e}`}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async undoConfirmItem(e,t,s,a,n={}){const o=e.body.id,i=a.name,l=n.transaction?n.transaction:await a.model.sequelize.transaction();try{for(const t of Object.keys(a.model.associations))if(a.model.associations[t].options._registerRecords){const s=e.objects?.[t];if(s){let t=await s.model.findAll({where:{recorderId:o,recorderType:i}});t=JSON.parse(JSON.stringify(t));const a=s.model;await a.destroy({where:{recorderId:o,recorderType:i},transaction:l}),await f.default.updateTotals(s,{objects:e.objects,recordsBefore:t,recordsAfter:[],recorderId:o,recorderType:i,transaction:l})}}return await a.model.update({isConfirmed:!1},{where:{id:e.body.id},transaction:l}),l.afterCommit(()=>{p.default.onChangeHandler(a.model,e.body.id,"undoConfirm",e.user?.id)}),n.transaction||await l.commit(),{status:r.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return u.default.error(`Error in ${a.name} undoConfirmItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async deleteItem(e,t,s,a,n={},o){const i=e.params.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${a.name} deleteItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=n.transaction?n.transaction:await a.model.sequelize.transaction(),c=await a.model.findByPk(i);if(!c){n.transaction||await l.rollback();const e=`${a.name} with uuid ${i} not found`;return u.default.error(`Error in ${a.name} deleteItem controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}try{return await c.destroy({where:{id:i},cascade:!0,transaction:l}),l.afterCommit(()=>{!0===a.configurationData?m.default.updateInitialData(a.model,a.path,{objectId:c.id,event:"delete",oldValue:c}):Object.prototype.hasOwnProperty.call(a.model.rawAttributes,"predefinedName")&&"catalog"===a.type&&m.default.updatePredefinedInitialData(a)}),o&&"function"==typeof o&&o(e,t,c,l),n.transaction||await l.commit(),{status:r.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return n.transaction||await l.rollback(),u.default.error(`Error in ${a.name} deleteItem controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async changeItemDeletionMark(e,t,s,a,n={},o=void 0){const i=e.body.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${a.name} changeDeletionMark controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=n.transaction?n.transaction:await a.model.sequelize.transaction(),c=await a.model.findByPk(i);if(!c){n.transaction||await l.rollback();const e=`${a.name} with uuid ${i} not found`;return u.default.error(`Error in ${a.name} changeDeletionMark controller`,{meta:e}),{status:r.StatusCodes.NOT_FOUND,responseData:{message:e}}}const d={markedToDelete:!c.markedToDelete};try{const s=JSON.parse(JSON.stringify(c)),u=await c.update(d,{transaction:l});if(o&&"function"==typeof o&&await o(e,t,u,s,l),l.afterCommit(()=>{!0===a.configurationData?m.default.updateInitialData(a.model,a.path,{objectId:u.id,event:"update",oldValue:s,newValue:u,changeDeletionMark:!0}):Object.prototype.hasOwnProperty.call(a.model.rawAttributes,"predefinedName")&&"catalog"===a.type&&m.default.updatePredefinedInitialData(a),p.default.onChangeHandler(a.model,i,"update",e.user?.id)}),"document"===a.type&&c.isConfirmed){for(const e of Object.keys(a.model.associations))if(a.model.associations[e].options._registerRecords){const t=a.model.associations[e].target;await t.destroy({where:{recorderId:i},transaction:l})}await a.model.update({isConfirmed:!1},{where:{id:i},transaction:l})}return n.transaction||await l.commit(),{status:r.StatusCodes.OK,responseData:u}}catch(e){return n.transaction||await l.rollback(),u.default.error(`Error in ${a.name} changeDeletionMark controller`,{meta:e}),{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},calculateRegisterTotals:async(e,t,s,a)=>(await f.default.calculateTotals(a,e.objects),{status:r.StatusCodes.OK,responseData:{message:"OK"}})}},4139:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=a(s(6797)),o=n.default.Router();o.get("/",function(e,t,s){t.render("index",{title:"SYNERGY Server"})}),o.use(r.default.isAuthenticated),t.default=o},4469:e=>{e.exports=require("dotenv/config")},4621:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(7138),r=a(s(5788)),o=a(s(2282));function i(e,t,s){switch(t){case"number":e.valueNumber=s;break;case"string":case"text":e.valueString=s;break;case"date":e.valueDate=s;break;case"boolean":e.valueBoolean=s;break;case"object":e.valueRef=s}}t.default={async getSetting(e){const t={value:null,message:"",status:null};if(!e)return t.status=n.StatusCodes.BAD_REQUEST,t.message="Bad incoming parameters.",t;try{const s=await r.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!s)return t.status=n.StatusCodes.BAD_REQUEST,t.message="App setting is not found.",t;const a=await r.default.models.AppSetting.findOne({where:{appSettingItemId:s.id}});if(a)t.value=function(e,t){switch(e){case"number":return t.valueNumber;case"string":case"text":return t.valueString;case"date":return t.valueDate;case"boolean":return t.valueBoolean;case"object":case"enum":return t.valueRef;default:return null}}(s.valueType,a),t.status=n.StatusCodes.OK;else{const e=function(e){switch(e.valueType){case"number":return 0;case"string":case"text":return"";case"date":case"object":case"enum":default:return null;case"boolean":return!1}}(s);t.status=n.StatusCodes.OK,t.value=e}}catch(e){o.default.error("Error in App getSetting controller",{meta:e}),t.status=n.StatusCodes.INTERNAL_SERVER_ERROR,t.message="Internal server error."}return t},async setSetting(e,t){const s={value:null,message:"",status:null};if(!e)return s.status=n.StatusCodes.BAD_REQUEST,s.message="Bad incoming parameters.",s;try{const a=await r.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!a)return s.status=n.StatusCodes.BAD_REQUEST,s.message="App setting is not found.",s;const o=await r.default.models.AppSetting.findOne({where:{appSettingItemId:a.id}});if(o){const e={};i(e,a.valueType,t);const r=await o.update(e);s.status=n.StatusCodes.OK,s.value=r}else{const e={appSettingItemId:a.id};i(e,a.valueType,t);const o=await r.default.models.AppSetting.create(e);s.status=n.StatusCodes.OK,s.value=o}}catch(e){o.default.error("Error in App setSetting controller",{meta:e}),s.status=n.StatusCodes.INTERNAL_SERVER_ERROR,s.message="Internal server error."}return s}}},4716:e=>{e.exports=require("moment")},5124:e=>{e.exports=require("winston")},5379:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(9031),r=a(s(5788)),o=a(s(9896));t.default={async initSubscriptions(e){const t=`\n SELECT\n event_subscriptions.id AS "id",\n event_subscriptions.name AS "name",\n event_subscriptions."execSide" AS "execSide",\n event_subscriptions."objectType" AS "objectType",\n event_subscriptions.event AS "event",\n event_subscriptions."serviceFunction" AS "serviceFunctionPath",\n subscription_objects."objectId" AS "objectId"\n FROM \n event_subscriptions\n LEFT JOIN \n event_subscriptions_event_objects as "subscription_objects"\n ON \n subscription_objects."parentId" = event_subscriptions.id \n WHERE\n event_subscriptions."markedToDelete" = false\n AND event_subscriptions."execSide" = '${e}'`;try{const s=(await r.default.query(t,{type:n.QueryTypes.SELECT})).reduce((e,t)=>{let s=e.findIndex(e=>e.name===t.name);return-1===s&&(s=e.push({name:t.name,execSide:t.execSide,objectType:t.objectType,event:t.event,serviceFunctionPath:t.serviceFunctionPath,objects:[]})-1),s>-1&&t.objectId&&e[s].objects.push(t.objectId),e},[]);if("server"===e)for(const e of s)if(e.serviceFunctionPath){const t=e.serviceFunctionPath.split(".");if(2!==t.length){e.serviceFunction=void 0;continue}const s=t[0],a=t[1],n=`${process.cwd()}/src/modules/commonModules/${s}.js`;let r;o.default.existsSync(n)&&(r=require(n),r?.[a]&&(e.serviceFunction=r[a]))}return s}catch(e){return console.error(e),[]}},getSubscription:(e,t,s,a)=>e.find(e=>e.event===t&&e.objectType===s&&(0===e.objects.length||e.objects.includes(a)))}},5483:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=a(s(1688)),o=a(s(3786)),i=a(s(6224)),l=n.default.Router();function u(e={httpMethod:"GET"},t){let s;const a={};return e.userRole?a.id=e.userRole:t.accessRoleId?a.id=t.accessRoleId:a.key=t.path,s=e.accessLevel?"CAN_REED"===e.accessLevel?r.default.canRead(a):"CAN_MODIFY"===e.accessLevel?r.default.canModify(a):"IS_AUTH"===e.accessLevel?r.default.isAuth:r.default.isFullRights:!0===t.system?"GET"===e.httpMethod?r.default.isAuth:r.default.isFullRights:"GET"===e.httpMethod?r.default.canRead(a):r.default.canModify(a),s}t.default=async()=>{const e=await(0,i.default)();for(const t of Object.values(e)){if(t.api)for(const e of t.api)e.controller?t.controllers[e.controller]?l[e.httpMethod.toLowerCase()](`/${t.path}/${e.path}`,u(e,t),(e,t,s)=>{const a=e.headers["content-type"];if(a&&a.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});s()});s()},t.controllers[e.controller]):console.error("API controller is not exist: ",t.name,e.controller):console.error("API controller is not set for object: ",t.name,e);"register"===t.type&&(t.accumulationRegister&&l.post(`/${t.path}/calculate_totals`,u(t.staticAPI.calculateTotals||{httpMethod:"POST"},t),t.calculateTotals),"dataProcessors"===t.name&&(l.post(`/${t.path}/execute_processing`,u(t.staticAPI.executeProcessing||{httpMethod:"POST"},t),t.executeProcessing),l.get(`/${t.path}/export/:id`,u(t.staticAPI.exportProcessor||{httpMethod:"POST"},t),t.exportProcessor),l.post(`/${t.path}/import`,u(t.staticAPI.importProcessor||{httpMethod:"POST"},t),(e,t,s)=>{const a=e.headers["content-type"];if(a&&a.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});s()});s()},t.importProcessor))),"catalog"===t.type&&("appObjects"===t.name?(l.post(`/${t.path}/execute_migration`,u(t.staticAPI.executeMigration||{httpMethod:"POST"},t),t.executeMigration),l.post(`/${t.path}/exist_migrations`,u(t.staticAPI.existMigrations||{httpMethod:"POST"},t),t.existMigrations)):"scheduledJobs"===t.name&&l.post(`/${t.path}/execute_manually`,u(t.staticAPI.executeManually||{httpMethod:"POST"},t),t.executeManually)),!0!==t.staticAPI.findAll?.disabled&&l.get(`/${t.path}`,u(t.staticAPI.findAll||{httpMethod:"GET"},t),t.findAll),!0!==t.staticAPI.findById?.disabled&&l.get(`/${t.path}/:id`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findById),!0!==t.staticAPI.create?.disabled&&l.post(`/${t.path}`,u(t.staticAPI.create||{httpMethod:"POST"},t),(e,t,s)=>{const a=e.headers["content-type"];if(a&&a.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});s()});s()},t.create),!0!==t.staticAPI.update?.disabled&&l.put(`/${t.path}/:id`,u(t.staticAPI.update||{httpMethod:"PUT"},t),t.update),!0!==t.staticAPI.delete?.disabled&&l.delete(`/${t.path}/:id`,u(t.staticAPI.delete||{httpMethod:"DELETE"},t),t.delete),"catalog"===t.type&&l.get(`/${t.path}/predefined/:name`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findPredefined),"catalog"!==t.type&&"document"!==t.type||!0===t.staticAPI.changeDeletionMark?.disabled||l.post(`/${t.path}/change_deletion_mark`,u(t.staticAPI.changeDeletionMark||{httpMethod:"POST"},t),t.changeDeletionMark),"document"===t.type&&(!0!==t.staticAPI.confirm?.disabled&&l.put(`/${t.path}/confirm/:id`,u(t.staticAPI.confirm||{httpMethod:"PUT"},t),t.confirm),!0!==t.staticAPI.undoConfirm?.disabled&&l.put(`/${t.path}/undo_confirm/:id`,u(t.staticAPI.undoConfirm||{httpMethod:"PUT"},t),t.undoConfirm))}return{router:l,objects:e}}},5486:e=>{e.exports=require("bcrypt")},5560:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(5483)),r=a(s(360)),o=a(s(121));t.default=async e=>{const{router:t,objects:s}=await(0,n.default)();e.use((e,t,a)=>{e.objects=s,a()}),e.locals.objects=s,e.use(t);const a=await r.default.initRoutes();e.use(a);const i=await o.default.initRoutes();return e.use(i),{router:t,objects:s}}},5788:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(9031),r=s(3903),o=a(s(6788)),i=new n.Sequelize(o.default.dbName,o.default.dbUser,o.default.dbPassword,{dialect:o.default.dbDialect,host:o.default.dbHost,port:o.default.dbPort,logging:!1,pool:{max:150},define:{hooks:{beforeValidate:(e,t)=>{null===e.dataValues.id&&(e.dataValues.id=(0,r.v4)())}}}});t.default=i},5977:e=>{e.exports=require("express-session")},6224:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7173)),r=a(s(3958)),o=a(s(2562)),i=a(s(3464)),l=a(s(6910)),u=a(s(5379)),c=a(s(6836)),d=a(s(9896)),f=s(7138),m=a(s(2282));function p(e,t,s){if(t.fields.find(e=>!0===e.password)){const a=s.objectData?s.objectData:{...e.body};for(const e of t.fields.filter(e=>!0===e.password))if(""===a[e.name])a[e.name]=null;else if(a[e.name])if(e.decryptable){const t=c.default.encrypt(a[e.name]);a[e.name]=JSON.stringify(t)}else a[e.name]=c.default.createPasswordHash(a[e.name]);s.objectData=a}}t.default=async()=>{const e=await(0,n.default)(),t=await u.default.initSubscriptions("server");for(const s in e){let a;const n=`${e[s].type}s/${s}/server.module.js`,c=`${process.cwd()}/src/modules/${n}`;if(d.default.existsSync(c)&&(a=require(c)),e[s].findAll=async(n,o,i)=>{let l=null;if(a?.findAll)l=await a.findAll(n,o,i,e[s]);else{const c={};a?.beforeFindAll&&await a.beforeFindAll(n,o,i,e[s],c);const d=u.default.getSubscription(t,"beforeFindAll",e[s].type,e[s].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[s],c)),l=await r.default.findAllItems(n,o,i,e[s],c),a?.afterFindAll&&await a.afterFindAll(n,o,i,e[s],l,c);const f=u.default.getSubscription(t,"afterFindAll",e[s].type,e[s].id);f?.serviceFunction&&await(f?.serviceFunction(n,o,i,e[s],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${s} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[s].findById=async(n,o,i)=>{let l=null;if(a?.findById)l=await a.findById(n,o,i,e[s]);else{const c={};a?.beforeFindById&&await a.beforeFindById(n,o,i,e[s],c);const d=u.default.getSubscription(t,"beforeFindById",e[s].type,e[s].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[s],c)),l=await r.default.findItem(n,o,i,e[s],c),a?.afterFindById&&await a.afterFindById(n,o,i,e[s],l,c);const f=u.default.getSubscription(t,"afterFindById",e[s].type,e[s].id);f?.serviceFunction&&await(f?.serviceFunction(n,o,i,e[s],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${s} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[s].create=async(n,o,i)=>{if(a?.create)return await a.create(n,o,i,e[s]);{const l=n.transaction?n.transaction:await e[s].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{a?.beforeCreate&&"function"==typeof a?.beforeCreate&&await a.beforeCreate(n,o,i,e[s],c);const d=u.default.getSubscription(t,"beforeCreate",e[s].type,e[s].id);if(d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[s],c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(n,r,o,l)=>{a?.afterCreate&&"function"==typeof a?.afterCreate&&await a.afterCreate(n,r,i,e[s],{newItem:o,transaction:l});const c=u.default.getSubscription(t,"afterCreate",e[s].type,e[s].id);c?.serviceFunction&&await(c?.serviceFunction(n,r,i,e[s],{newItem:o,transaction:l}))};p(n,e[s],c);const y=await r.default.createItem(n,o,i,e[s],c,m);if(y?.status!==f.StatusCodes.OK)return n.transaction||await l.rollback(),o?o.status(y.status).send(y.responseData):y;if("document"!==e[s].type||!0!==e[s].confirmation||!0!==n.body?.isConfirmed)return n.transaction||await l.commit(),o?o.status(y.status).send(y.responseData):y;const h={};a?.beforeConfirm&&"function"==typeof a?.beforeConfirm&&await a.beforeConfirm(n,o,i,e[s],h,c);const g=u.default.getSubscription(t,"beforeConfirm",e[s].type,e[s].id);if(g?.serviceFunction&&await(g?.serviceFunction(n,o,i,e[s],h,c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await r.default.confirmItem(n,o,i,e[s],{recordsSet:h,...c});a?.afterConfirm&&"function"==typeof a?.afterConfirm&&await a.afterConfirm(n,o,i,e[s],c);const w=u.default.getSubscription(t,"afterConfirm",e[s].type,e[s].id);return w?.serviceFunction&&await(w?.serviceFunction(n,o,i,e[s],c)),b.status===f.StatusCodes.OK?(n.transaction||await l.commit(),o?o.status(y.status).send(y.responseData):y):(n.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[s].update=async(n,o,i)=>{if(a?.update)return await a.update(n,o,i,e[s]);{const l=n.transaction?n.transaction:await e[s].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{a?.beforeUpdate&&"function"==typeof a?.beforeUpdate&&await a.beforeUpdate(n,o,i,e[s],c);const d=u.default.getSubscription(t,"beforeUpdate",e[s].type,e[s].id);if(d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[s],c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(n,r,o,l,c)=>{a?.afterUpdate&&"function"==typeof a?.afterUpdate&&await a.afterUpdate(n,r,i,e[s],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1});const d=u.default.getSubscription(t,"afterUpdate",e[s].type,e[s].id);d?.serviceFunction&&await(d?.serviceFunction(n,r,i,e[s],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1}))};p(n,e[s],c);const y=await r.default.updateItem(n,o,i,e[s],c,m);if(y?.status!==f.StatusCodes.OK)return n.transaction||await l.rollback(),o?o.status(y.status).send(y.responseData):y;if("document"!==e[s].type||!0!==e[s].confirmation||!0!==n.body?.isConfirmed)return n.transaction||await l.commit(),o?o.status(y.status).send(y.responseData):y;const h={};a?.beforeConfirm&&"function"==typeof a?.beforeConfirm&&await a.beforeConfirm(n,o,i,e[s],h,c);const g=u.default.getSubscription(t,"beforeConfirm",e[s].type,e[s].id);if(g?.serviceFunction&&await(g?.serviceFunction(n,o,i,e[s],h,c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await r.default.confirmItem(n,o,i,e[s],{recordsSet:h,...c});a?.afterConfirm&&"function"==typeof a?.afterConfirm&&await a.afterConfirm(n,o,i,e[s],c);const w=u.default.getSubscription(t,"afterConfirm",e[s].type,e[s].id);return w?.serviceFunction&&await(w?.serviceFunction(n,o,i,e[s],c)),b.status===f.StatusCodes.OK?(n.transaction||await l.commit(),o?o.status(y.status).send(y.responseData):y):(n.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[s].delete=async(n,o,i)=>{if(a?.delete)return await a.delete(n,o,i,e[s]);{const l=n.transaction?n.transaction:await e[s].model.sequelize.transaction(),c={transaction:l};try{a?.beforeDelete&&"function"==typeof a?.beforeDelete&&await a.beforeDelete(n,o,i,e[s],c);const d=u.default.getSubscription(t,"beforeDelete",e[s].type,e[s].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[s],c));const m=async(n,r,o,l)=>{a?.afterDelete&&"function"==typeof a?.afterDelete&&a.afterDelete(n,r,i,e[s],{deletedObject:o,...c});const d=u.default.getSubscription(t,"afterDelete",e[s].type,e[s].id);d?.serviceFunction&&await(d?.serviceFunction(n,r,i,e[s],{deletedObject:o,...c}))},p=await r.default.deleteItem(n,o,i,e[s],c,m);return n.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},"catalog"===e[s].type&&(e[s].findPredefined=async(t,a,n)=>{const o=await r.default.findPredefinedItem(t,a,n,e[s]);return a?a.status(o.status).send(o.responseData):o}),"catalog"!==e[s].type&&"document"!==e[s].type||(e[s].changeDeletionMark=async(n,o,i)=>{const l=n.transaction?n.transaction:await e[s].model.sequelize.transaction(),c={transaction:l,changeDeletionMark:!0};try{a?.beforeUpdate&&"function"==typeof a?.beforeUpdate&&await a.beforeUpdate(n,o,i,e[s],c);const d=u.default.getSubscription(t,"beforeUpdate",e[s].type,e[s].id);d?.serviceFunction&&await(d?.serviceFunction(n,o,i,e[s],c));const m=async(n,r,o,l,d)=>{a?.afterUpdate&&"function"==typeof a?.afterUpdate&&await a.afterUpdate(n,r,i,e[s],{updatedObject:o,existObject:l,...c});const f=u.default.getSubscription(t,"afterUpdate",e[s].type,e[s].id);f?.serviceFunction&&await(f?.serviceFunction(n,r,i,e[s],{updatedObject:o,existObject:l,...c}))},p=await r.default.changeItemDeletionMark(n,o,i,e[s],c,m);return n.transaction||(p?.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),"register"===e[s].type&&(e[s].accumulationRegister&&(e[s].calculateTotals=async(t,a,n)=>{const o=await r.default.calculateRegisterTotals(t,a,n,e[s]);return a?a.status(o.status).send(o.responseData):o}),"dataProcessors"===s&&(e[s].executeProcessing=async(t,a,n)=>{const r=await o.default.executeProcessing(t,a,n,e[s]);return a?a.status(r.status).send(r.responseData):r},e[s].exportProcessor=async(t,a,n)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.exportProcessor(t,a,n,e[s])},e[s].importProcessor=async(t,a,n)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.importProcessor(t,a,n,e[s])})),"catalog"===e[s].type&&("appObjects"===s?(e[s].executeMigration=async(t,a,n)=>{try{const r=await l.default.executeMigrations(t,a,n,e[s]);return a?a.status(r.status).send(r.responseData):r}catch(e){return m.default.error("Error in executeMigration controller",{meta:e}),a.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}},e[s].existMigrations=async(t,a,n)=>{try{const r=await l.default.existMigrations(t,a,n,e[s]);return a?a.status(r.status).send(r.responseData):r}catch(e){return m.default.error("Error in existMigrations controller",{meta:e}),a.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}}):"scheduledJobs"===s&&(e[s].executeManually=async(t,a,n)=>{const r=await i.default.executeManually(t,a,n,e[s]);return a?a.status(r.status).send(r.responseData):r})),"document"===e[s].type&&(e[s].confirm=async(n,o,i)=>{const l=n.transaction?n.transaction:await e[s].model.sequelize.transaction(),c={},d={cancel:!1,transaction:l};try{const m=await e[s].findById({params:{id:n.body.id}});m.status===f.StatusCodes.OK&&(n.body=JSON.parse(JSON.stringify(m.responseData))),a?.beforeConfirm&&"function"==typeof a?.beforeConfirm&&await a.beforeConfirm(n,o,i,e[s],c,d);const p=u.default.getSubscription(t,"beforeConfirm",e[s].type,e[s].id);if(p?.serviceFunction&&await(p?.serviceFunction(n,o,i,e[s],c,d)),d.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:d.message?d.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const y=await r.default.confirmItem(n,o,i,e[s],{recordsSet:c,...d});a?.afterConfirm&&"function"==typeof a?.afterConfirm&&await a.afterConfirm(n,o,i,e[s],d);const h=u.default.getSubscription(t,"afterConfirm",e[s].type,e[s].id);return h?.serviceFunction&&await(h?.serviceFunction(n,o,i,e[s],d)),n.transaction||(y.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(y.status).send(y.responseData):y}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}},e[s].undoConfirm=async(n,o,i)=>{const l=n.transaction?n.transaction:await e[s].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{const d=await e[s].findById({params:{id:n.body.id}});d.status===f.StatusCodes.OK&&(n.body=JSON.parse(JSON.stringify(d.responseData))),a?.undoConfirm&&"function"==typeof a?.undoConfirm&&await a.undoConfirm(n,o,i,e[s],c);const m=u.default.getSubscription(t,"undoConfirm",e[s].type,e[s].id);if(m?.serviceFunction&&await(m?.serviceFunction(n,o,i,e[s],c)),c.cancel){n.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const p=await r.default.undoConfirmItem(n,o,i,e[s],c);return n.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){n.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),e[s].api&&a)for(const t of e[s].api)a[t.controller]&&(e[s].controllers[t.controller]=async(n,r,o)=>{a[t.controller](n,r,o,e[s])})}return e}},6261:e=>{e.exports=require("events")},6299:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(9031),r=a(s(2282)),o=a(s(4716)),i=s(3903);function l(e,t,s){for(const t of e){for(const e of s)t[e]="expense"===t.recordType?-1*parseFloat(t[e]):parseFloat(t[e]);t.period=u(t.period)}return function(e,t,s){const a={};return e.forEach(e=>{const n=t.map(t=>e[t]).join("|");a[n]||(a[n]={},t.forEach(t=>{a[n][t]=void 0===e[t]?null:e[t]}),s.forEach(e=>{a[n][e]=0})),s.forEach(t=>{a[n][t]+=e[t]})}),Object.values(a)}(e,t,s)}function u(e){return(0,o.default)(e).add(1,"months").startOf("month").toDate()}t.default={async updateTotals(e,t){if(!e.accumulationRegister)return;const s=e.accTable;if(s){const a=await this.getCalculatedPeriod(t.objects.registersCalculation,e.id);if(!a)return;const u=s.dimensions.map(e=>e.dbName);u.push("period");const c=s.resources.map(e=>e.dbName);let d=[];t.recordsBefore.length>0&&(d=l(JSON.parse(JSON.stringify(t.recordsBefore)),u,c));let f=[];t.recordsAfter.length>0&&(f=l(JSON.parse(JSON.stringify(t.recordsAfter)),u,c));const m=function(e,t,s,a){const n={};return e.forEach(e=>{const t=s.map(t=>e[t]).join("|");n[t]||(n[t]={},s.forEach(s=>{n[t][s]=e[s]}),a.forEach(e=>{n[t][e]=0})),a.forEach(s=>{n[t][s]-=parseFloat(e[s])})}),t.forEach(e=>{const t=s.map(t=>e[t]).join("|");n[t]||(n[t]={},s.forEach(s=>{n[t][s]=e[s]}),a.forEach(e=>{n[t][e]=0})),a.forEach(s=>{n[t][s]+=parseFloat(e[s])})}),Object.values(n).filter(e=>a.some(t=>0!==e[t]))}(d,f,u,c);await async function(e,t,s,a,r,l){for(const u of t){const t=[];for(let e=(0,o.default)(r.beginPeriod);e.isSameOrBefore(r.endPeriod,"month");e.add(1,"month"))e.isSameOrAfter(u.period)&&t.push(e.toDate());for(let r of t){let t={};if(s.forEach(e=>{t[e]="period"===e?r:u[e]}),await e.findOne({where:t,transaction:l})){let s={};a.forEach(e=>{s[e]=n.Sequelize.literal(`${e} + ${u[e]}`)}),await e.update(s,{where:t,transaction:l})}else{let t={id:(0,i.v4)()};s.forEach(e=>{t[e]="period"===e?r:u[e]}),a.forEach(e=>{t[e]=u[e]}),await e.create(t,{transaction:l})}}}}(s.model,m,u,c,a,t.transaction).catch(e=>{r.default.error(`Error updating records for register: ${s.name}`,{meta:e})})}},async calculateTotals(e,t){if(!e.accumulationRegister)return;const s=e.accTable;if(s){const a="period",n=s.dimensions.map(e=>e.dbName),r=s.resources.map(e=>e.dbName),l=await e.model.findAll();if(0===l.length)return void await s.model.truncate();const u=l.map(e=>{const t={};return n.forEach(s=>{t[s]=e[s]}),t[a]=(0,o.default)(e[a]).add(1,"month").startOf("month").toDate(),r.forEach(s=>{t[s]="receipt"===e.recordType?parseFloat(e[s]):-parseFloat(e[s])}),t}),c=[...new Set(u.map(e=>e[a]))].sort((e,t)=>e-t)[0],d=(0,o.default)().add(1,"month").startOf("month").toDate();let f={};await s.model.truncate();const m=await s.model.sequelize.transaction();for(let e=(0,o.default)(c);e.isSameOrBefore(d,"month");e.add(1,"month")){const t=e.toDate(),l={};u.forEach(s=>{if((0,o.default)(s[a]).isSame(e,"month")){const e=n.map(e=>s[e]).join("_");l[e]?r.forEach(t=>{l[e][t]+=s[t]}):l[e]={...s,period:t,id:(0,i.v4)()}}}),Object.keys(f).length>0&&Object.keys(f).forEach(e=>{l[e]?r.forEach(t=>{l[e][t]+=parseFloat(f[e][t])}):l[e]={...f[e],period:t,id:(0,i.v4)()}});const c=Object.values(l).map(e=>(r.forEach(t=>{e[t]=e[t].toString()}),e));f=JSON.parse(JSON.stringify(l)),await s.model.bulkCreate(c,{ignoreDuplicates:!0,transaction:m})}await this.updateCalculatedPeriod(t.registersCalculation,{registerId:e.id,beginPeriod:c,endPeriod:d},m),await m.commit()}},getCalculatedPeriod:async(e,t)=>await e.model.findOne({where:{registerId:t}}),async updateCalculatedPeriod(e,t,s){const a=await e.model.findOne({where:{registerId:t.registerId},transaction:s});a?await a.update({beginPeriod:t.beginPeriod,endPeriod:t.endPeriod},{where:{registerId:t.registerId},transaction:s}):await e.model.create({id:(0,i.v4)(),...t},{transaction:s})}}},6304:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const dbConnection_1=__importDefault(__webpack_require__(5788)),sequelize_1=__webpack_require__(9031),http_status_codes_1=__webpack_require__(7138),node_sql_parser_1=__webpack_require__(7135),logger_service_1=__importDefault(__webpack_require__(2282)),sequelize_2=__webpack_require__(9031),fs_1=__importDefault(__webpack_require__(9896)),fs_2=__webpack_require__(9896),path_1=__importDefault(__webpack_require__(6928)),crypto_js_1=__importDefault(__webpack_require__(2103)),terser_1=__webpack_require__(9239),eventSubscription_service_1=__importDefault(__webpack_require__(5379)),commonCommands_service_1=__importDefault(__webpack_require__(7501)),packagePath=path_1.default.resolve(process.cwd(),"package.json");if(!fs_1.default.existsSync(packagePath))throw new Error(`native package.json not found at ${packagePath}`);const serverPackage=require(packagePath),app_service_1=__importDefault(__webpack_require__(4621)),common_service_1=__importDefault(__webpack_require__(2555)),userAccess_service_1=__importDefault(__webpack_require__(1691));async function getSubordinationTree(e,t){const s=[];let a=await getParentObjectsArray(e,t);const n=await getRelated(e,t);if(a.length>1&&1===a[a.length-1].length&&a.pop(),n.parents.length>0){1===a.length&&1===a[0].length&&(a=n.parents);for(const e of n.parents)a.push(e)}async function r(e,t){const s=e.subordination.filter(e=>!e.isParent),a={objectId:t.id,objectType:e.name,text:t.presentation,markedToDelete:t.markedToDelete,icon:!0===t.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]};for(const e of s)if(e.isTablePart){const s=await dbConnection_1.default.models[e.model].findAll({where:{parentId:t.id}}),n=e.childs.filter(e=>!e.isParent&&e.isActive);for(const e of n)for(const t of s){const s=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),n=t[e.path];if(n&&s){const e=await dbConnection_1.default.models[s.model].findOne({where:{id:n}});e&&a.children.push(await r(s,e))}}}else{const s=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),n=t[e.path];if(n&&s){const e=await dbConnection_1.default.models[s.model].findOne({where:{id:n}});e&&a.children.push(await r(s,e))}}return a}const o=await r(e,t);if(o.disabled=!0,n.children.length>0)for(const e of n.children)o.children.push(await r(e.appObject,e.object));for(const e of a){let t=null,a={};if(e.length>1)for(let s=e.length-2;s>=0;s--)a={objectId:e[s].object.id,objectType:e[s].objectType,text:e[s].object.presentation,markedToDelete:e[s].object.markedToDelete,icon:!0===e[s].object.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]},t?(a.children.push(t),t=a):(a.children.push(o),t=a);else t=o;t&&s.push(t)}return s}async function getParentObjectsArray(e,t){let s=[];await async function e(t,a,n=[]){const r=[{object:a,objectType:t.name},...n],o=t.subordination.filter(e=>e.isParent);if(o.length>0){for(const t of o)if(t.isParent)if(t.isTablePart){const e=await dbConnection_1.default.models[t.model].findAll({where:{parentId:a.id}}),s=t.childs.filter(e=>!e.isParent&&e.isActive);for(const t of s)for(const s of e){const e=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),a=s[t.path];if(a&&e){const t=await dbConnection_1.default.models[e.model].findOne({where:{id:a}});t&&t.children.push(await this.createChildObjectTree(e,t))}}}else{const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),n=r[0].object[t.path];if(n&&a){const t=await dbConnection_1.default.models[a.model].findOne({where:{id:n}});t&&await e(a,t,r)}else s.push(r)}}else s.push(r)}(e,t);for(let e=0;e<s.length;e++){const t=s[e],a=s.filter(e=>e[0]===t[0]);a.length>1&&s.splice(e+1,a.length-1)}return s}async function getRelated(e,t){const s=await dbConnection_1.default.models.AppObject.findAll({where:{subordination:{[sequelize_2.Op.not]:null,[sequelize_2.Op.ne]:"[]"},model:{[sequelize_2.Op.ne]:e.model}}});let a,n,r={parents:[],children:[]};if(s.length>0)for(const o of s){a=o,n=[];let s=!1;for(const a of o.subordination)if(a.isTablePart){for(const r of a.childs)if(r.model===e.model&&(n=await dbConnection_1.default.models[o.model].findAll({where:{[r.path]:t.id}}),n.length>0)){s=r.isParent;break}if(n.length>0)break}else if(a.model===e.model&&(n=await dbConnection_1.default.models[o.model].findAll({where:{[a.path]:t.id}}),n.length>0)){s=a.isParent;break}if(n.length>0)for(const o of n)if(s)r.children.push({appObject:a,object:o});else{const s=await getParentObjectsArray(a,o);for(const a of s)a.push({object:t,objectType:e.name}),r.parents.push(a)}}return r}function getModelsByTableNames(e){const t=[];for(const s of e){let e=dbConnection_1.default.modelManager.models.find(e=>e.tableName===s);if(!e)throw new Error(`Table "${s}" not found!`);t.push({tableName:s,model:e.name})}return t}function assembleAttrib(e,t){let s={name:t,type:e.type.key,allowNull:e.allowNull,defaultValue:e.defaultValue};return"STRING"===s.type&&(s.maxLength=e.type.options?.length||null),"DECIMAL"===s.type&&(s.typeOptions=e.type.options||null),"ENUM"===s.type&&(s.values=e.values,s.ref=e._ref),"VIRTUAL"===s.type&&(e._sortBy?s.sortBy=e._sortBy:s.sortBy="createdAt"),s}async function hasModelAccess(e,t){t.user;const s=await dbConnection_1.default.models.AppObject.findAll({where:{model:e.map(e=>e.model)},attributes:["model","name","accessRoleId"]});for(const t of e){const e=s.find(e=>e.model===t.model);if(!e)throw new Error(`App object for table "${t.tableName}" is not exist.`);if(!e.accessRoleId)throw new Error(`Access role for app object "${e.name}" is not set.`);t.objectName=e.name,t.accessRoleId=e.accessRoleId}return e.map(e=>e.accessRoleId),!0}async function initObjectClientModule(e,t){if(!e)return e;const s=`function main() { return ${e.replace(/^\s*export\s+default\s+/,"")}}`,a=await(0,terser_1.minify)(s);return crypto_js_1.default.AES.encrypt(a.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),t).toString()}exports.default={async getAppInfo(e,t,s){const a={appName:"SynergyCore",company:"INTELEKTSOFT",serverVersion:serverPackage?.version||"0.0.0"};t.status(200).send(a)},async getObjectMetadata(e,t,s){const{objectType:a,tableName:n}=e.query,r=JSON.parse(e.query.withTableParts||"false");let o;if(a?o=dbConnection_1.default.models[a]:Object.keys(dbConnection_1.default.models).forEach(e=>{dbConnection_1.default.models[e].getTableName()===n&&(o=dbConnection_1.default.models[e])}),!o)return console.error("Model not found: ",a),void t.status(400).send({message:"Model not found"});let i=[],l=[],u=[];Object.keys(o.associations).forEach(e=>{const t=o.associations[e];if(!0===t.isMultiAssociation)return;const s={name:e,foreignKey:t.foreignKey,ref:"",modelName:t.target.name};if(Object.prototype.hasOwnProperty.call(t.target,"options"))if(t.target.options.namespace)s.ref=t.target.options.namespace;else{const e=t.target.options.name.plural;s.ref=e.charAt(0).toLowerCase()+e.slice(1)}const a=t.target.rawAttributes;a.presentation?._sortBy?s.sortBy=a.presentation._sortBy:s.sortBy="createdAt",!1===t.options.constraints?u.push(s):l.push(s)});const c=[];for(let e in o.getAttributes()){if(c.includes(e))continue;let t,s=assembleAttrib(o.getAttributes()[e],e);if(t=l.find(t=>t.foreignKey===e),t||(t=u.filter(t=>t.foreignKey===e),0===t.length&&(t=void 0)),t){if(Array.isArray(t)){const a=e.endsWith("Id")?e.slice(0,-2):e,n=a+"Type";let r=i.find(e=>e.name===n);if(r){const e=i.findIndex(e=>e===r);i.splice(e,1)}else c.push(n);for(const r of t){const t=i.findIndex(e=>e.name===a);-1!==t?(i[t].ref.push(r.ref),i[t].model.push(r.modelName)):(s.name=a,s.ref=[r.ref],s.model=[r.modelName],s.fieldPath=e,s.fieldTypePath=n,s.multiType=!0,s.sortBy=r.sortBy,i.push(s))}continue}s.name=t.name,s.ref=t.ref,s.model=t.modelName,s.fieldPath=e,s.sortBy=t.sortBy}i.push(s)}if(r)for(const e in o.associations){const t=o.associations[e];if(!0===t.isMultiAssociation){if(t.options._noTablePart)continue;let s={name:e,type:"tablePart",model:o.associations[e].target?.name};i.push(s)}}t.status(200).send(i)},async getObjectFields(e,t,s){const{objectName:a}=e.query,n=JSON.parse(e.query.withTableParts||"false"),r=await dbConnection_1.default.models.AppObject.findOne({where:{name:a}});if(!r)return void t.status(404).send({message:"Object not found"});let o=r.dbFields;o&&!n&&(o=o.filter(e=>!e.isTablePart)),t.status(200).send(o)},async getSubordination(e,t,s){const{objectType:a,objectId:n}=e.query,r=await dbConnection_1.default.models.AppObject.findOne({where:{model:a}});if(!r)return void t.status(400).send({message:"Model not found"});const o=await dbConnection_1.default.models[r.model].findOne({where:{id:n}});if(!o)return void t.status(400).send({message:"Object not found"});const i=await getSubordinationTree(r,o);t.status(200).send(i)},async getObjects(e,t,s){let a=[];Object.keys(dbConnection_1.default.models).forEach(e=>{const t=dbConnection_1.default.models[e];t.options.mainModel&&a.push({model:e,name:t.options.name,tableName:t.getTableName()})}),a.sort((e,t)=>e.model.toLowerCase()>t.model.toLowerCase()?1:-1),t.status(200).send(a)},async getModels(e,t,s){let a=[];Object.keys(dbConnection_1.default.models).forEach(e=>{let t=dbConnection_1.default.models[e].getTableName();a.push({model:e,tableName:t,name:dbConnection_1.default.models[e].options.name})}),t.status(200).send(a)},async getRegistersMetadata(e,t,s){const{modelName:a}=e.query;let n;if(a&&(n=dbConnection_1.default.models[a]),!n)return console.error("Model not found: ",a),void t.status(400).send({message:"Model not found"});const r=[];Object.keys(n.associations).forEach(e=>{const t=n.associations[e];if(t.options._registerRecords){const e=t.target,s=e.options.namespace?e.options.namespace:e.options.name.plural.charAt(0).toLowerCase()+e.options.name.plural.slice(1),a=Object.keys(e.rawAttributes).map(t=>e.rawAttributes[t]),n={name:s,fields:a};r.push(n)}}),t.status(200).send(r)},async getSetting(e,t,s){const a=e.query.settingName,n=await app_service_1.default.getSetting(a);n?n.status===http_status_codes_1.StatusCodes.OK?t.status(n.status).send(n.value):t.status(n.status).send({message:n.message}):t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Bad incoming parameters"})},async setSetting(e,t,s){const{settingName:a,settingValue:n}=e.body,r=await app_service_1.default.setSetting(a,n);r.status===http_status_codes_1.StatusCodes.OK?t.status(r.status).send(r.value):t.status(r.status).send({message:r.message})},async getEnums(e,t,s){const a=e.query.lang;try{const e=[];let s=await dbConnection_1.default.models.Enum.findAll({include:[{model:dbConnection_1.default.models.EnumValue,as:"values"}],order:["name"]});for(const t of s)e.push({id:t.id,name:t.name,title:common_service_1.default.translateField(t,"title",a),values:t.values.map(e=>({value:e.value,title:common_service_1.default.translateField(e,"title",a)}))});t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEnums controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getAppObjects(e,t,s){const a=e.query.lang;try{const e=[];let s=await dbConnection_1.default.models.AppObject.findAll({attributes:["id","name","lang","title","path","type","reflection"],order:["name"]});for(const t of s){let s="createdAt";t.reflection?.sortBy?s=t.reflection?.sortBy:"catalog"===t.type?s="name":"document"===t.type&&(s="numberStr"),e.push({id:t.id,name:t.name,path:t.path,type:t.type,title:common_service_1.default.translateField(t,"title",a),sortBy:s})}t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getCommonModules(e,t,s){if(e.user)try{const s={};let a=await dbConnection_1.default.models.CommonModule.findAll({where:{[sequelize_2.Op.not]:{[sequelize_2.Op.and]:[{execSide:"server"},{clientCall:!1}]}},attributes:["name","execSide","clientCall"],order:["name"]});for(const e of a){const t=`commonModules/${e.name}.js`;let a=null;const n=`${process.cwd()}/src/modules/${t}`;let r="";if("client"===e.execSide){if(!fs_1.default.existsSync(n)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}if(a=await fs_2.promises.readFile(n,"utf-8"),a){const e=/^\s*export\s+(?:async\s+)?function\s+([a-zA-Z0-9_]+)\s*\([^)]*\)\s*{[^}]*}/gm;let t;const s=[];let n=a;for(;null!==(t=e.exec(a));)s.push(t[1]),n=n.replace(t[0],t[0].replace("export ",""));r=`function main() {${n.trim()} return{${s.join(",\n ")}}}`}else r="function main() {return {}}"}else{if(!fs_1.default.existsSync(n)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}a=require(n);let t="";if(a){const e=Object.keys(a).filter(e=>"function"==typeof a[e]);for(const s of e)t+=`\nasync function ${s}(params){ \n const response = await axios.post('/app/exec-common-module',{funcPath:'commonUseServer.${s}', params})\n return response?.data || undefined\n }`;t+=`\n return {${e.join(",\n ")}}`}r=`function main() {${""===t?"return {}":t}}`}const o=await(0,terser_1.minify)(r);s[e.name]=o.code.replace(/^function main\(\)/,"")}const n=crypto_js_1.default.AES.encrypt(JSON.stringify(s),e.user.id).toString();t.status(http_status_codes_1.StatusCodes.OK).send(n)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getEventSubscriptions(e,t,s){if(e.user)try{const e=await eventSubscription_service_1.default.initSubscriptions("client");t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEventSubscriptions controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getCommonCommands(e,t,s){if(e.user)try{const s=await commonCommands_service_1.default.initCommonCommands(e.user.id);t.status(http_status_codes_1.StatusCodes.OK).send(s)}catch(e){logger_service_1.default.error("Error in app getCommonCommands controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getViewSettings(e,t,s){if(!e.user)return void t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"});const a=e.params.id;let n="";if(!a||"string"!=typeof a||36!==a.length)return n="View settings id is not correct!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:n}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:n});try{let s=await dbConnection_1.default.models.ViewSetting.findByPk(a,{include:[{model:dbConnection_1.default.models.AppObject,attributes:["name","title","presentation","type"],as:"appObject"},{model:dbConnection_1.default.models.Worker,attributes:["name","title","presentation"],as:"worker"}]});if(!s)return n="View settings not found!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:n}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:n});const r=JSON.parse(JSON.stringify(s));let o;if(o="worker"===r.viewType?`${process.cwd()}/src/modules/workers/${r.worker.name}/views/${r.name}/server.module.js`:`${process.cwd()}/src/modules/${r.appObject.type}s/${r.appObject.name}/views/${r.name}/server.module.js`,fs_1.default.existsSync(o)){const t=require(o);if(t){const s=Object.keys(t).filter(e=>"function"==typeof t[e]);let a="";for(const e of s)a+=`\nasync function ${e}(params){ \n const response = await axios.post('/app/exec-func', { objectFunc: 'viewSettings.${r.appObject.name}.${r.name}.${e}', params })\n return response?.data || undefined\n }`;a+=`\n return {${s.join(",\n ")}}`;const n=`function main() {${""===a?"return {}":a}}`,o=await(0,terser_1.minify)(n);r.serverModule=crypto_js_1.default.AES.encrypt(o.code.replace(/^function main\(\)/,""),e.user.id).toString()}}"3"===(e.headers["x-client-version"]||"2")?(r.moduleV3=await initObjectClientModule(r.moduleV3,e.user.id),r.module=void 0):(r.module=await initObjectClientModule(r.module,e.user.id),r.moduleV3=void 0),t.status(http_status_codes_1.StatusCodes.OK).send(r)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getComponentSettings(e,t,s){if(!e.user)return void t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"});const a=e.params.id;let n="";if(!a||"string"!=typeof a||36!==a.length)return n="Component id is not correct!",logger_service_1.default.error("Error in app getComponentSettings controller",{meta:n}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:n});try{let s=await dbConnection_1.default.models.Component.findByPk(a);if(!s)return n="Component not found!",logger_service_1.default.error("Error in app getComponentSettings controller",{meta:n}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:n});const r=JSON.parse(JSON.stringify(s)),o=`${process.cwd()}/src/modules/components/${r.name}/server.module.js`;if(fs_1.default.existsSync(o)){const t=require(o);if(t){const s=Object.keys(t).filter(e=>"function"==typeof t[e]);let a="";for(const e of s)a+=`\nasync function ${e}(params){ \n const response = await axios.post('/app/exec-func', { objectFunc: 'components.${r.name}.${e}', params })\n return response?.data || undefined\n }`;a+=`\n return {${s.join(",\n ")}}`;const n=`function main() {${""===a?"return {}":a}}`,o=await(0,terser_1.minify)(n);r.serverModule=crypto_js_1.default.AES.encrypt(o.code.replace(/^function main\(\)/,""),e.user.id).toString()}}"3"===(e.headers["x-client-version"]||"2")?(r.moduleV3=await initObjectClientModule(r.moduleV3,e.user.id),r.module=void 0):(r.module=await initObjectClientModule(r.module,e.user.id),r.moduleV3=void 0),t.status(http_status_codes_1.StatusCodes.OK).send(r)}catch(e){logger_service_1.default.error("Error in app getComponentSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getClientStore(e,t,s){if(e.user)try{let s=await dbConnection_1.default.models.AppObject.findAll({where:{markedToDelete:!1,notClientAccess:!1},attributes:{exclude:["indexes","api","staticAPI"]}});const a=JSON.parse(JSON.stringify(s));for(const t of a)if("3"===(e.headers["x-client-version"]||"2")){if(t.moduleV3){t.moduleV3=`function main() { return ${t.moduleV3.replace(/^\s*export\s+default\s+/,"")}}`;const s=await(0,terser_1.minify)(t.moduleV3);t.moduleV3=crypto_js_1.default.AES.encrypt(s.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.module=void 0}else{if(t.module){t.module=`function main() { return ${t.module.replace(/^\s*export\s+default\s+/,"")}}`;const s=await(0,terser_1.minify)(t.module);t.module=crypto_js_1.default.AES.encrypt(s.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.moduleV3=void 0}t.status(http_status_codes_1.StatusCodes.OK).send(a)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async execServerModuleFunc(req,res,nex){const{objectFunc,params}=req.body;try{const ObjectData=objectFunc.split("."),objectType=ObjectData[0];let objectName,viewName,funcName,object,appObject;if("viewSettings"===objectType?(objectName=ObjectData[1],viewName=ObjectData[2],funcName=ObjectData[3]):(objectName=ObjectData[1],funcName=ObjectData[2]),!funcName)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});if("appObjects"===objectType)object=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}});else if("viewSettings"===objectType){if(appObject=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}}),!appObject)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`AppObject "${objectName}" not found!`});object=await dbConnection_1.default.models.ViewSetting.findOne({where:{name:viewName,appObjectId:appObject.id}})}else"components"===objectType?object=await dbConnection_1.default.models.Component.findOne({where:{name:objectName}}):"workers"===objectType?object=await dbConnection_1.default.models.Worker.findOne({where:{name:objectName}}):"printForms"===objectType&&(object=await dbConnection_1.default.models.PrintForm.findOne({where:{name:objectName}}));if(!object)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Object "${objectName}" id is not found!`});{let module;if("appObjects"===objectType){const e=`${object.type}s/${object.name}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for object "${object.name}" is not found!`});module=require(t)}else if("workers"===objectType){const e=`workers/${object.name}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for worker "${object.name}" is not found!`});module=require(t)}else if("components"===objectType){const e=`components/${object.name}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for component "${object.name}" is not found!`});module=require(t)}else if("viewSettings"===objectType){const e=`${appObject.type}s/${appObject.name}/views/${viewName}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for viewSetting "${object.id}" is not found!`});module=require(t)}else module=eval(`(${object.serverModule})`);if(module){if(!module[funcName])return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${funcName}" is not found!`});const e=await module[funcName](params,req);return void res.status(http_status_codes_1.StatusCodes.OK).send(e)}}}catch(e){return logger_service_1.default.error(e),void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async execCommonModuleFunc(e,t,s){const{funcPath:a,params:n}=e.body;try{const e=a.split(".");if(2!==e.length)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Params are not correct!"});const s=e[0],r=e[1];if(!r)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});const o=`commonModules/${s}.js`;let i=null;const l=`${process.cwd()}/src/modules/${o}`;if(fs_1.default.existsSync(l)?i=require(l):(logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${s}" not found!`}),t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Common module "${s}" not found!`})),i){if(!i[r])return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${r}" is not found!`});const e=await i[r](n);return void t.status(http_status_codes_1.StatusCodes.OK).send(e)}}catch(e){return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async hasRole(e,t,s){const{role:a,accessType:n}=e.query;let r=!1,o=!1;switch(n){case"read":r=!0;break;case"modify":r=!0,o=!0}if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}if(!0===e.user?.fullRights)return void t.status(http_status_codes_1.StatusCodes.OK).send(!0);const i=e.user?.id;i?await userAccess_service_1.default.checkUserAccess(i,{key:a},r,o).then(e=>t.status(http_status_codes_1.StatusCodes.OK).send(e)).catch(e=>(logger_service_1.default.error("Error in accessRight.canRead",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e}))):t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},async rawQuery(e,t,s){const{query:a,params:n,sid:r}=e.body;if("b0c95264-07b2-4e72-b705-fee2102505d6"!==r||!a||!n){const e="Error in app.rawQuery. Bad incoming parameters";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e})}if(!e.user){const e="Error in app.rawQuery. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}try{const s=getModelsByTableNames((new node_sql_parser_1.Parser).tableList(a).map(e=>e.split("::")[2]));if(!0!==await hasModelAccess(s,e)){const e="Error in app.rawQuery. User does not have access!";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}const r=await dbConnection_1.default.query(a,{type:sequelize_1.QueryTypes.SELECT,replacements:n});return void t.status(http_status_codes_1.StatusCodes.OK).send(r[0])}catch(e){const s=`Error in app.rawQuery. ${e}`;return logger_service_1.default.error(s),void t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:s})}}}},6357:function(e,t,s){var a=s(8287).hp,n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(s(3648)),o=n(s(4716)),i=n(s(5788)),l=n(s(2282)),u=n(s(2555));function c(e,t,s){const a=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],n="#f2f5fa";for(const r of e){const e=[];let o=!0===s.hideDetails?1:s.fields.length;if(r.isGroup){if(e.push({text:m(r.groups,s),colSpan:o,borderColor:a,fillColor:r.children.length>0?n:null}),o>1)for(let t=1;t<o;t++)e.push({});if(s.colGroups.length>0){for(const t of r.totals)e.push({text:d(t.value||0,t.format),borderColor:a,fillColor:r.children.length>0?n:null,alignment:t.textAlign?t.textAlign:"left"});if(s.showXTotal)for(const t of s.calcs){const s=r.totals.reduce((e,s)=>s.id===t.id?e+s.value:e,0);e.push({text:d(s||0,t.format),borderColor:a,fillColor:r.children.length>0?n:null,alignment:t.textAlign?t.textAlign:"left"})}}else for(const t of r.totals)e.push({text:d(t.value||0,t.format),borderColor:a,fillColor:r.children.length>0?n:null,alignment:t.textAlign?t.textAlign:"left"});t.push(e),r.children.length>0&&c(r.children,t,s)}else{for(let t=0;t<s.fields.length;t++)e.push({text:f(s.fields[t],r,s),borderColor:a,alignment:s.fields[t].textAlign||"left"});if(s.colGroups.length>0){const t=r[s.colGroups[0].name],n={};for(const o of s.cols)for(let i=0;i<s.calcs.length;i++){let l=0;("object"===s.colGroups[0].valueType&&o.id===t?.id||o===t)&&(l=Number(r[s.calcs[i].name]||0)),e.push({text:d(l||0,s.calcs[i].format),borderColor:a,alignment:s.calcs[i].textAlign?s.calcs[i].textAlign:"left"}),Object.hasOwnProperty.call(n,s.calcs[i].name)?n[s.calcs[i].name]+=Number(l):n[s.calcs[i].name]=Number(l)}if(s.showXTotal)for(let t=0;t<s.calcs.length;t++){let r=n[s.calcs[t].name];e.push({text:d(r||0,s.calcs[t].format),borderColor:a,alignment:s.calcs[t].textAlign?s.calcs[t].textAlign:"left"})}}else if(s.rowGroups.length>0)for(let t=0;t<s.calcs.length;t++){let n=Number(r[s.calcs[t].name]||0);e.push({text:d(n||0,s.calcs[t].format),borderColor:a,alignment:s.calcs[t].textAlign?s.calcs[t].textAlign:"left"})}t.push(e)}}}function d(e,t){if(t){const s=JSON.parse(t||'{"NFD": 3}');s.NFD&&(e=Number(e).toFixed(s.NFD))}return e}function f(e,t,s){let a=t[e.name]||"";switch(e.valueType){case"number":{let t=parseFloat(a);if(isNaN(t)&&(t=0),a=t||0,e.format){const t=JSON.parse(e.format||'{"NFD": 3}');t.NFD&&(a=Number(a).toFixed(t.NFD))}break}case"date":default:a=a||"";break;case"object":a=a.name||"";break;case"boolean":a=Boolean(a||!1),a=a?s.lang.boolean.true:s.lang.boolean.false;break;case"enum":if(a&&e.ref){const t=s.enums[e.ref].find(e=>e.value===a);a=t?t.title:a}a=a||""}return a}function m(e,t){let s;if(1===e.length)switch(e[0].valueType){case"number":s=Number(e[0].value||0);break;case"date":s=""===e[0].value?"":e[0].format?(0,o.default)(e[0].value,e[0].format).toDate()||"":e[0].value||"";break;case"boolean":s=e[0].value||!1,s=s?t.lang.boolean.true:t.lang.boolean.false;break;case"object":s=e[0].value.name||"";break;default:s=e[0].value||""}else{let a="";for(let s=0;s<e.length;s++)"object"===e[s].valueType?a+=e[s].value?.name||t.lang.undefined:"boolean"===e[s].valueType?a+=e[s].value?t.lang.boolean.true:t.lang.boolean.false:a+=e[s].value,s<e.length-1&&(a=`${a}, `);s=a||""}return s}function p(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}t.default={async generatePdf(e,t=null){const s={...e.body},n=new r.default({Courier:{normal:"Courier",bold:"Courier-Bold",italics:"Courier-Oblique",bolditalics:"Courier-BoldOblique"},Helvetica:{normal:"Helvetica",bold:"Helvetica-Bold",italics:"Helvetica-Oblique",bolditalics:"Helvetica-BoldOblique"},Times:{normal:"Times-Roman",bold:"Times-Bold",italics:"Times-Italic",bolditalics:"Times-BoldItalic"},Symbol:{normal:"Symbol"},ZapfDingbats:{normal:"ZapfDingbats"},Roboto:{normal:"src/assets/fonts/Roboto-Regular.ttf",bold:"src/assets/fonts/Roboto-Medium.ttf",italics:"src/assets/fonts/Roboto-Italic.ttf",bolditalics:"src/assets/fonts/Roboto-MediumItalic.ttf"}}),o=await async function(e){if(e.rowGroups.length>1){const t=[];let s=[];for(let a=0;a<e.rowGroups.length;a++)!0!==e.rowGroups[a].withParent&&0!==a&&(t.push(s.length>1?s:s[0]),s=[]),s.push(e.rowGroups[a]),a===e.rowGroups.length-1&&t.push(s.length>1?s:s[0]);e.rowGroups=t}e.rowGroups.length>0&&(e.fields=e.fields.filter(t=>!e.calcs.find(e=>e.name===t.name))),e.enums=await async function(e){try{const t={};let s=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const a of s)t[a.name]=a.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(e.langCode);const t=[],s={body:[],headerRows:0};if(e.periodPresentation){const t=[];let a=e.periodPresentation.length>20?e.lang.byPeriod:e.lang.byDate;t.push(`${a}:`),t.push(e.periodPresentation),s.body.push(t)}if(Array.isArray(e.filterPresentation)&&e.filterPresentation.length>0){let t=[];if(t.push(`${e.lang.filter}:`),t.push(e.filterPresentation[0]),s.body.push(t),e.filterPresentation.length>1)for(let a=1;a<e.filterPresentation.length;a++)t=[],t.push(" "),t.push(e.filterPresentation[a]),s.body.push(t)}s.body.length>0&&t.push({table:s,layout:"noBorders"});const a={body:[],headerRows:0},n=function(e){const t=[],s=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],a="#e9ecef";if(e.rowGroups.length>0){const n=!0===e.hideDetails?1:e.fields.length,r=[];if(r.push({text:p(e.rowGroups[0]),rowSpan:1===e.rowGroups.length&&e.colGroups.length>0&&e.hideDetails?2:1,colSpan:n,borderColor:s,fillColor:a}),n>1)for(let e=1;e<n;e++)r.push({});if(0===e.colGroups.length)for(const t of e.calcs)r.push({text:p(t.title),rowSpan:e.rowGroups.length+(e.hideDetails?0:1),borderColor:s,fillColor:a});else{for(const t of e.cols)r.push({text:"object"===e.colGroups[0].valueType?t.name:t,colSpan:e.calcs.length,borderColor:s,fillColor:a});e.showXTotal&&r.push({text:e.lang.total,colSpan:e.calcs.length,borderColor:s,fillColor:a})}if(t.push(r),e.colGroups.length>0&&1===e.rowGroups.length&&!0===e.hideDetails){const n=[];n.push({});for(const t of e.cols)for(const t of e.calcs)n.push({text:t.title,borderColor:s,fillColor:a});if(e.showXTotal)for(const t of e.calcs)n.push({text:t.title,borderColor:s,fillColor:a});t.push(n)}if(0===e.colGroups.length)for(const r of e.rowGroups.slice(1)){const o=[];if(o.push({text:p(r),colSpan:n,borderColor:s,fillColor:a}),n>1)for(let e=1;e<n;e++)o.push({});for(const t of e.calcs)o.push({});t.push(o)}else if(e.rowGroups.length>1){let r=[];r.push({text:p(e.rowGroups[0]),colSpan:n,borderColor:s,fillColor:a});for(const t of e.colGroupsData)for(const t of e.calcs)r.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:s,fillColor:a});if(e.showXTotal)for(const t of e.calcs)r.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:s,fillColor:a});t.push(r);for(const r of e.rowGroups.slice(2)){let o=[];o.push({text:p(r),colSpan:n,borderColor:s,fillColor:a});for(const t of e.colGroupsData)for(const t of e.calcs)o.push({});if(e.showXTotal)for(const t of e.calcs)o.push({});t.push(o)}}if(!0!==e.hideDetails){let n=[];for(const t of e.fields)n.push({text:t.title,borderColor:s,fillColor:a});if(e.colGroups.length>0)if(1===e.rowGroups.length){for(const t of e.colGroupsData)for(const t of e.calcs)n.push({text:t.title,borderColor:s,fillColor:a});if(e.showXTotal)for(const t of e.calcs)n.push({text:t.title,borderColor:s,fillColor:a})}else{for(const t of e.colGroupsData)for(const t of e.calcs)n.push({});if(e.showXTotal)for(const t of e.calcs)n.push({})}else for(const t of e.calcs)n.push({});t.push(n)}}else{let n=[];for(const t of e.fields)n.push({text:t.title,borderColor:s,fillColor:a});t.push(n)}return t}(e);a.body.push(...n);const r=[];if(c(e.data,r,e),a.body.push(...r),e.showYTotal>0&&e.totals.length>0){const t=function(e){const t=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],s="#f2f5fa",a=[];if(e.rowGroups.length>0){const n=!0===e.hideDetails?1:e.fields.length;if(a.push({text:e.lang.total,colSpan:n,borderColor:t,fillColor:s}),n>1)for(let e=1;e<n;e++)a.push({});e.totals.forEach(e=>{a.push({text:d(e.value||0,e.format),borderColor:t,fillColor:s,alignment:e.textAlign?e.textAlign:"left"})}),e.colGroups.length>0&&e.showXTotal&&e.calcs.map((n,r)=>{const o=e.totals.reduce((e,t)=>t.id===n.id?e+t.value:e,0);a.push({text:d(o||0,n.format),borderColor:t,fillColor:s,alignment:n.textAlign?n.textAlign:"left"})})}else{let n=!0,r=1;for(const o of e.fields){const i=e.totals.find(e=>e.id===o.id);if(i){if(!0===n){if(a.push({text:e.lang.total,colSpan:r-1,borderColor:t,fillColor:s}),r>1)for(let e=1;e<r-1;e++)a.push({});n=!1}a.push({text:d(i.value||0,o.format),borderColor:t,fillColor:s,alignment:o.textAlign?o.textAlign:"left"})}else n||a.push({text:"",borderColor:t,fillColor:s});r++}}return[a]}(e);a.body.push(...t)}return t.push({table:a,layout:{paddingLeft:function(e,t){return 2},paddingRight:function(e,t){return 2},paddingTop:function(e,t){return 2},paddingBottom:function(e,t){return 2}}}),t}(s),f={content:o,defaultStyle:{font:"Roboto",fontSize:s.pageFontSize||12},pageOrientation:s.pageOrientation||"landscape",pageSize:s.pageSize||"A4",pageMargins:[s.margins.left||20,s.margins.top||20,s.margins.right||20,s.margins.bottom||20]},m=n.createPdfKitDocument(f,{}),y=[];let h;m.on("data",function(e){y.push(e)}),m.on("end",function(){h=a.concat(y),t&&(t.contentType("application/pdf"),t.send(h))}),m.end()}}},6456:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(2096)),r=a(s(7825)),o=(0,a(s(6918)).default)({path:`${process.cwd()}/logs/access`,interval:"1d"});t.default=function(e){e.use((0,n.default)((e,t,s)=>{const a={};t.user&&(a.id=t.user.id,a.login=t.user.login,a.name=t.user.name);let n={};t.body&&(n=r.default.cloneDeep(t.body),delete n.password);const o=Object.fromEntries(Object.entries(t.headers).filter(([e])=>"cookie"!==e));return JSON.stringify({date:(new Date).toISOString(),ip:t.headers["x-real-ip"]||t.headers["x-forwarded-for"]||t.ip,method:e.method(t,s),url:e.url(t,s),status:e.status(t,s),time:e["response-time"](t,s),length:e.res(t,s,"content-length"),user:a,query:t.query,params:t.params,body:n,headers:o})},{stream:o}))}},6661:e=>{e.exports=require("base64-js")},6788:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),s(4469);const a={dbName:process.env.DB_NAME||"",dbUser:process.env.DB_USER||"",dbPassword:process.env.DB_PASSWORD||"",dbDialect:process.env.DB_DIALECT?process.env.DB_DIALECT:"postgres",dbHost:process.env.DB_HOST?process.env.DB_HOST:"localhost",dbPort:process.env.DB_PORT?parseInt(process.env.DB_PORT,10):5432};t.default=a},6797:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var n=s(1752).Strategy;const r=a(s(5486)),o=s(7138),i=a(s(2282)),l=a(s(5788)),u=a(s(9151));t.default={initializePassport(e){e.serializeUser(function(e,t){t(null,e.id)}),e.deserializeUser(async function(e,t){const s=await l.default.models.User.findByPk(e);s&&!0===s.isActive?t(null,s):t("User is not found",!1)}),e.use("login",new n({usernameField:"email",passwordField:"password",passReqToCallback:!0},async function(e,s,a,n){if(e.body.tokenElectron){let t=u.default.decrypt(e.body.tokenElectron);if(e.body.workingPlace!==t.workingPlace)return i.default.error("Electron auth error",e.body.workingPlace),n(null,!1);s=t.login,a=t.password}const r=await l.default.models.User.findOne({where:{login:s,isActive:!0}}).catch(e=>(console.error(e),i.default.error("Bad request for user",s),n(null,!1)));if(!r)return i.default.error(`User not found or not active with username: ${s}`),n(null,!1);if(!t(r,a))return i.default.error("Invalid Password",s),n(null,!1);let o="";return e.body.electronCert&&(o=JSON.stringify({login:e.body.email,password:e.body.password,workingPlace:e.body.workingPlace}),r.tokenElectron=u.default.encrypt(o)),n(null,r)}));var t=(e,t)=>r.default.compareSync(t,e.password)},isAuthenticated(e,t,s){if(!e.url.includes("/app")&&!e.url.includes("/auth"))return e.isAuthenticated()?void s():t.status(o.StatusCodes.UNAUTHORIZED).send("only for logged in users");s()},isSuperAdmin:(e,t,s)=>((e,t,s)=>{if(!0!==e.user?.isFullRight)return console.warn("User doesnt have necessary permission to access this."),t.status(o.StatusCodes.FORBIDDEN).send("Permission denied for the user. User doesnt have necessary permission to access this");s()})(e,t,s)}},6836:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(2103)),r=a(s(5486)),o="vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3";t.default={generateRandomToken:()=>n.default.lib.WordArray.random(20).toString(n.default.enc.Hex),createPasswordHash:e=>r.default.hashSync(e,r.default.genSaltSync(10)),encrypt(e){const t=n.default.enc.Utf8.parse(o),s=n.default.lib.WordArray.random(16),a=n.default.AES.encrypt(e,t,{iv:s,mode:n.default.mode.CTR,padding:n.default.pad.NoPadding});return{iv:s.toString(n.default.enc.Hex),content:a.ciphertext.toString(n.default.enc.Hex)}},decrypt(e){const t=n.default.enc.Utf8.parse(o),s=n.default.enc.Hex.parse(e.iv),a=n.default.enc.Hex.parse(e.content),r=n.default.lib.CipherParams.create({ciphertext:a}),i=n.default.AES.decrypt(r,t,{iv:s,mode:n.default.mode.CTR,padding:n.default.pad.NoPadding});return n.default.enc.Utf8.stringify(i)}}},6898:e=>{e.exports=require("cookie-parser")},6910:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(7138),r=a(s(6928)),o=a(s(4716)),i=a(s(9896)),l=s(9896),u=a(s(9880)),c=a(s(2282)),d=a(s(2555)),f=a(s(7173)),m=a(s(3275)),p="src/database/migrations";let y={},h=[],g=[];async function b(e,t){let s="";for(const a of e)!0!==a.isTablePart?!0!==a.virtual&&(a.multiType&&"common"===a.multiTypeVariant?s+=`${_(a)}`:s+=`\n ${a.dbName}: ${await w(a)}`):t.push({...a});return s+="\n createdAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",s+="\n updatedAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",s}async function w(e,t="",s=!1){let a="{\n ",n="";switch(e.type){case"json":n="TEXT";break;case"object":n="UUID";break;default:n=e.type.toUpperCase()}let r="";if("string"===e.type?e.typeOptions?.length&&0!==e.typeOptions?.length&&(r+=`(${e.typeOptions.length})`):"decimal"===e.type&&e.typeOptions?.precision&&e.typeOptions?.scale&&(r+=`(${e.typeOptions?.precision}, ${e.typeOptions?.scale})`),a+=` type: Sequelize.DataTypes.${n}${r},\n`,"enum"===e.type&&e.ref&&(a+=` values: [${y[e.ref].map(e=>`'${e}'`)}],\n`),!0===e.primaryKey&&(a+=" primaryKey: true,\n"),!0===e.unique&&(a+=" unique: true,\n"),!0===e.notNull&&(a+=" allowNull: false,\n"),null!==e.defaultValue&&void 0!==e.defaultValue&&(["enum","string","text"].includes(e.type)?a+=` defaultValue: '${e.defaultValue}',\n`:a+=` defaultValue: ${e.defaultValue},\n`),!0===e.autoIncrement&&(a+=" autoIncrement: true,\n"),a+=" },","object"===e.type&&!0===e.multiType){let n=e.dbName.endsWith("Id")?e.dbName.slice(0,-2):e.dbName;s?(a+=")",a+=`\n await queryInterface.addColumn('${t}', '${n}Type', {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(a+=" allowNull: false,\n"),a+=" },"):(a+=`\n ${n}Type: {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(a+=" allowNull: false,\n"),a+=" },")}return a}function _(e){let t="";const s="\n type: Sequelize.DataTypes.",a=!0===e.notNull?" allowNull: false,\n":"";return t+=`\n _${e.dbName}Type: {${s}STRING,\n${a} },`,e.type.includes("string")&&(t+=`\n _${e.dbName}ST: {${s}STRING(${e.typeOptions.length}),\n },`),e.type.includes("text")&&(t+=`\n _${e.dbName}TX: {${s}TEXT,\n },`),e.type.includes("integer")&&(t+=`\n _${e.dbName}IN: {${s}INTEGER,\n },`),e.type.includes("decimal")&&(t+=`\n _${e.dbName}DC: {${s}DECIMAL(${e.typeOptions?.precision}, ${e.typeOptions?.scale}),\n },`),e.type.includes("boolean")&&(t+=`\n _${e.dbName}BL: {${s}BOOLEAN,\n },`),e.type.includes("date")&&(t+=`\n _${e.dbName}DT: {${s}DATE,\n },`),m.default.typeIncludesRef(e.type)&&(t+=`\n _${e.dbName}Ref: {${s}STRING(100),\n },`),t}function S(e,t){return e.type!==t.type&&!("json"===e.type&&"text"===t.type||"text"===e.type&&"json"===t.type)||e.unique!==t.unique||e.defaultValue!==t.defaultValue||e.notNull!==t.notNull||e.primaryKey!==t.primaryKey||e.typeOptions?.precision!==t.typeOptions?.precision||e.typeOptions?.scale!==t.typeOptions?.scale||e.typeOptions?.length!==t.typeOptions?.length||e.multiType!==t.multiType||e.multiTypeVariant!==t.multiTypeVariant}function v(e,t,s){let a="";const n="\n await queryInterface.addColumn(",r="\n type: Sequelize.DataTypes.",o=!0===s.notNull?" allowNull: false,\n":"";if(t.multiTypeVariant===s.multiTypeVariant){const i=m.default.typesSufixes(),l=Array.isArray(t.type)?t.type:t.type?[t.type]:[],u=Array.isArray(s.type)?s.type:s.type?[s.type]:[],c=u.filter(e=>!l.includes(e)),d=l.filter(e=>!u.includes(e));for(const s of d){const n=i[s]||"";n&&(a+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}${n}')`)}m.default.typeIncludesRef(t.type)&&!m.default.typeIncludesRef(s.type)&&(a+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}Ref')`);for(const t of c){const l=i[t]||"";if(l)if("string"===t){const t=s.typeOptions?.length||255;a+=`${n}'${e}', '_${s.dbName}${l}', {${r}STRING(${t}),\n${o} })`}else if("text"===t)a+=`${n}'${e}', '_${s.dbName}${l}', {${r}TEXT,\n${o} })`;else if("integer"===t)a+=`${n}'${e}', '_${s.dbName}${l}', {${r}INTEGER,\n${o} })`;else if("decimal"===t){const t=s.typeOptions?.precision||18,i=s.typeOptions?.scale||2;a+=`${n}'${e}', '_${s.dbName}${l}', {${r}DECIMAL(${t}, ${i}),\n${o} })`}else"boolean"===t?a+=`${n}'${e}', '_${s.dbName}${l}', {${r}BOOLEAN,\n${o} })`:"date"===t?a+=`${n}'${e}', '_${s.dbName}${l}', {${r}DATE,\n${o} })`:m.default.isRefType(t)?a+=`${n}'${e}', '_${s.dbName}Ref', {${r}STRING(100),\n${o} })`:a+=`${n}'${e}', '_${s.dbName}${l}', {${r}TEXT,\n${o} })`}return!m.default.typeIncludesRef(t.type)&&m.default.typeIncludesRef(s.type)&&(a+=`${n}'${e}', '_${s.dbName}Ref', {${r}STRING(100),\n${o} })`),a}return t.multiTypeVariant||"objects"!==s.multiTypeVariant?"objects"===s.multiTypeVariant?(a+=C(e,t),a+=`${n}'${e}', '${s.dbName}Type', {${r}STRING,\n${o} })`,a+=`${n}'${e}', '${s.dbName}Id', {${r}UUID,\n${o} })`,a):(a+=F(e,t.dbName),a+=F(e,`${t.dbName.slice(0,-2)}Type`),a+=A(e,s),a):""}function E(){return"\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {"}function R(){return"\n },\n async down(queryInterface, Sequelize) {\n },\n}"}async function $(e,t){e.dbFields=e.fields,e.dbTableName=e.path,e.modified=!1;const s=JSON.stringify(e,null,2);await l.promises.writeFile(t,s,"utf-8")}function T(e){return e&&e.length>63?e.slice(e.length-63):e}async function N(e,t){return await e.update({dbFields:e.fields,dbTableName:e.path,modified:!1}).then(async s=>await u.default.updateInitialData(t.model,"app_objects",{objectId:e.id,event:"update",oldValue:e,newValue:s}))}async function O(e,t,s){return`\n await queryInterface.addColumn('${e}', '${t}', ${await w(s,e,!0)})`}function A(e,t){let s="";const a="\n await queryInterface.addColumn(",n="\n type: Sequelize.DataTypes.",r=!0===t.notNull?" allowNull: false,\n":"";return s+=`${a}'${e}', '_${t.dbName}Type', {${n}STRING,\n${r} })`,t.type.includes("string")&&(s+=`${a}'${e}', '_${t.dbName}ST', {${n}STRING(${t.typeOptions.length}),\n })`),t.type.includes("text")&&(s+=`${a}'${e}', '_${t.dbName}TX', {${n}TEXT,\n })`),t.type.includes("integer")&&(s+=`${a}'${e}', '_${t.dbName}IN', {${n}INTEGER,\n })`),t.type.includes("decimal")&&(s+=`${a}'${e}', '_${t.dbName}DC', {${n}DECIMAL(${t.typeOptions?.precision}, ${t.typeOptions?.scale}),\n })`),t.type.includes("boolean")&&(s+=`${a}'${e}', '_${t.dbName}BL', {${n}BOOLEAN,\n })`),t.type.includes("date")&&(s+=`${a}'${e}', '_${t.dbName}DT', {${n}DATE,\n })`),m.default.typeIncludesRef(t.type)&&(s+=`${a}'${e}', '_${t.dbName}Ref', {${n}STRING(100),\n })`),s}function C(e,t){let s="";const a=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}`;s+=`${a}Type')`;const n=m.default.typesSufixes();for(const e in n)t.type.includes(e)&&(s+=`${a}${n[e]}')`);return m.default.typeIncludesRef(t.type)&&(s+=`${a}Ref')`),s}function D(e,t,s){return`\n await queryInterface.renameColumn('${e}', '${t}', '${s}')`}function j(e,t){const s=m.default.typesSufixes();let a="";const n=`\n await queryInterface.renameColumn('${e}', `;a+=`${n}'${t.oldName}Type', '${t.newName}Type')`;for(const e in s)t.field?.type.includes(e)&&(a+=`${n}'${t.oldName}${s[e]}', '${t.newName}${s[e]}')`);return m.default.typeIncludesRef(t.field?.type||[])&&(a+=`${n}'${t.oldName}Ref', '${t.newName}Ref')`),a}async function I(e,t,s){let a="";if(t.type!==s.type)if(function(e,t){const s=["uuid","date","boolean","object","enum"];return s.find(t=>t===e)||s.find(e=>e===t)}(t.type,s.type))a+=F(e.name,s.dbName),a+=await O(e.name,s.dbName,s);else if(n=t.type,r=s.type,[{typeFrom:"integer",typeTo:"string"},{typeFrom:"decimal",typeTo:"string"},{typeFrom:"text",typeTo:"string"},{typeFrom:"integer",typeTo:"text"},{typeFrom:"decimal",typeTo:"text"},{typeFrom:"text",typeTo:"decimal"},{typeFrom:"text",typeTo:"integer"},{typeFrom:"string",typeTo:"integer"},{typeFrom:"string",typeTo:"decimal"}].find(e=>e.typeFrom===n&&e.typeTo===r)){a+=await O(e.name,`temp_${s.dbName}`,s);let n="";["integer","decimal","text"].includes(t.type)&&"string"===s.type?n+=`UPDATE ${e.name} SET temp_${s.dbName} = LEFT(CAST(${s.dbName} AS VARCHAR), ${s?.typeOptions?.length||255})`:["integer","decimal"].includes(t.type)&&"text"===s.type?n+=`UPDATE ${e.name} SET temp_${s.dbName} = CAST(${s.dbName} AS TEXT)`:["text","string"].includes(t.type)&&"integer"===s.type?n+=`UPDATE ${e.name} SET temp_${s.dbName} = CASE\n WHEN ${s.dbName} ~ '^[0-9]+$' THEN CAST(${s.dbName} AS INTEGER)\n ELSE NULL\n END`:["text","string"].includes(t.type)&&"decimal"===s.type&&(n+=`UPDATE ${e.name} SET temp_${s.dbName} = CASE\n WHEN ${s.dbName} ~ '^[0-9]+$' THEN CAST(${s.dbName} AS DECIMAL)\n ELSE NULL\n END`),n&&(a+=function(e){return`\n await queryInterface.sequelize.query(\`${e}\`)`}(n)),a+=F(e.name,s.dbName),a+=D(e.name,`temp_${s.dbName}`,s.dbName)}else a+=await x(e.name,s.dbName,s);else a+=await x(e.name,s.dbName,s);var n,r;return a}async function x(e,t,s){return`\n await queryInterface.changeColumn('${e}', '${t}', ${await w(s,e,!0)})`}function F(e,t){return`\n await queryInterface.removeColumn('${e}', '${t}')`}function M(e,t,s){return`\n await queryInterface.addIndex('${e}', ['${t}'], { name: '${s}'})`}function k(e,t,s){let a="";const n="\n await queryInterface.addIndex(";return a+=`${n}'${e}', ['_${t.dbName}Type'], { name: '${s}_type'})`,t.type.includes("string")&&(a+=`${n}'${e}', ['_${t.dbName}ST'], { name: '${s}_st'})`),t.type.includes("text")&&(a+=`${n}'${e}', ['_${t.dbName}TX'], { name: '${s}_tx'})`),t.type.includes("integer")&&(a+=`${n}'${e}', ['_${t.dbName}IN'], { name: '${s}_in'})`),t.type.includes("decimal")&&(a+=`${n}'${e}', ['_${t.dbName}DC'], { name: '${s}_dc'})`),t.type.includes("boolean")&&(a+=`${n}'${e}', ['_${t.dbName}BL'], { name: '${s}_type'})`),t.type.includes("date")&&(a+=`${n}'${e}', ['_${t.dbName}DT'], { name: '${s}_dt'})`),m.default.typeIncludesRef(t.type)&&(a+=`${n}'${e}', ['_${t.dbName}Ref'], { name: '${s}_ref'})`),a}function P(e,t){return`\n await queryInterface.removeIndex('${e}', ['${t}'])`}function U(e,t){let s="";const a="\n await queryInterface.removeIndex(";return s+=`${a}'${e}', ['_${t.dbName}Type'])`,t.type.includes("string")&&(s+=`${a}'${e}', ['_${t.dbName}ST'])`),t.type.includes("text")&&(s+=`${a}'${e}', ['_${t.dbName}TX'])`),t.type.includes("integer")&&(s+=`${a}'${e}', ['_${t.dbName}IN'])`),t.type.includes("decimal")&&(s+=`${a}'${e}', ['_${t.dbName}DC'])`),t.type.includes("boolean")&&(s+=`${a}'${e}', ['_${t.dbName}BL'])`),t.type.includes("date")&&(s+=`${a}'${e}', ['_${t.dbName}DT'])`),m.default.typeIncludesRef(t.type)&&(s+=`${a}'${e}', ['_${t.dbName}Ref'])`),s}t.default={async executeMigrationsAtServer(){const e=await(0,f.default)(),t=await e.appObjects.model.findAll({where:{modified:!0}});if(!t||0===t.length)return{status:n.StatusCodes.OK,responseData:{message:"No migrations needed"}};const s=(0,o.default)();for(const a of t)await this.executeObjectMigration(a,e.appObjects,s);s.add(1,"seconds");for(const a of t)await this.addFieldsForeignKeys(s)&&await N(a,e.appObjects);return{status:n.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async executeMigrationsFromFiles(){const e=await(0,f.default)(),t=function(e){const t=[];return function e(s){const a=i.default.readdirSync(s,{withFileTypes:!0});for(const n of a){const a=r.default.join(s,n.name);n.isDirectory()?e(a):n.isFile()&&"object.struct.json"===n.name&&t.push(a)}}(e),t}(`${process.cwd()}/src/modules`),s=(0,o.default)();for(const a of t){s.add(1,"seconds");const t=await l.promises.readFile(a,"utf-8"),n=JSON.parse(t);n.dbTableName&&!n.modified||(console.log("Migration creation for object:",n.name),await this.executeObjectMigration(n,e.appObjects,s,a))}s.add(1,"seconds");for(const e of t){const t=await l.promises.readFile(e,"utf-8"),a=JSON.parse(t);a.dbTableName&&!a.modified||await this.addFieldsForeignKeys(s)&&await $(a,e)}return{status:n.StatusCodes.OK,responseData:{message:"Migrations were created successfully"}}},async executeMigrations(e,t,s,a){const r=await a.model.findAll({where:{modified:!0}});if(!r||0===r.length)return{status:n.StatusCodes.OK,responseData:{message:"No migrations needed"}};const i=(0,o.default)();for(const e of r)i.add(1,"seconds"),await this.executeObjectMigration(e,a,i);i.add(1,"seconds");for(const e of r)await this.addFieldsForeignKeys(i)&&await N(e,a);return{status:n.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async existMigrations(e,t,s,a){const r=await a.model.findAll({where:{modified:!0}});return r&&0!==r.length?{status:n.StatusCodes.OK,responseData:!0}:{status:n.StatusCodes.OK,responseData:!1}},async executeMigration(e,t,s,a){const r=e.body.objectId;if(!r||"string"!=typeof r||36!==r.length){const e="Object id is not correct!";return c.default.error(`Error in ${a.name} findItem controller`,{meta:e}),{status:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const i=(0,o.default)(),l=await a.model.findByPk(r);return await this.executeObjectMigration(l,a,i)?{status:n.StatusCodes.OK,responseData:{message:"OK"}}:{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Error during migration file creation!"}}},async executeObjectMigration(e,t,s,a=""){if(!e)throw new Error("Object not found!");if(!e.fields)throw new Error(`Object ${e.name} has incorrect fields!`);if(a){const e=r.default.join(process.cwd(),"src","modules","enums"),t=r.default.join(e,"index.json");if(!i.default.existsSync(t))throw new Error(`File index.json not found in ${e}`);{const e=i.default.readFileSync(t,"utf8");y=JSON.parse(e)}}else y=await d.default.initEnums();return e.dbTableName?await this.updateTable({id:e.id,dbName:e.dbTableName,name:e.path,dbFields:e.dbFields,fields:e.fields},s):await this.createTable(e,s)},async addFieldsForeignKeys(e=(0,o.default)()){for(const t of h){console.log("Foreign keys creation for object:",t.path);const s=[];await b(t.fields,s);const a=E(),n=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const s=T(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.path}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${s}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}if(o){e.add(1,"seconds");const s=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.path}.js`,i=r.default.join(p,s);await l.promises.writeFile(i,`${a}${o}${n}`)}for(const t of s){const s=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===s.length)continue;let o="";for(const e of s){const s=T(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.dbName}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${s}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(r.default.join(p,i),`${a}${o}${n}`)}}return h=[],!0},toSnakeCase:e=>e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase(),async delFieldsForeignKeys(e=(0,o.default)()){for(const t of g){const s=[];await b(t.fields,s);const a=E(),n=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const s=T(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.path}', '${s}');\n`}if(o){e.add(1,"seconds");const s=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.path}.js`,i=r.default.join(p,s);await l.promises.writeFile(i,`${a}${o}${n}`)}for(const t of s){const s=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===s.length)continue;let o="";for(const e of s){const s=T(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.dbName}', '${s}');\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(r.default.join(p,i),`${a}${o}${n}`)}}return g=[],!0},prepareFieldsDifs(e,t,s){const a=[];if(!e||!t)return[];for(const n of t){const t=e.find(e=>e.id===n.id);t?!0===n.isTablePart?s.push({action:"changeTable",oldTable:{...t},newTable:{...n}}):(!0===t.multiType&&"common"===t.multiTypeVariant&&!1===n.multiType?(a.push({action:"dropField",field:{...t}}),a.push({action:"addField",field:{...n}}),!0===n.index&&a.push({action:"addIndex",field:n})):!1===t.multiType&&!0===n.multiType&&"common"===n.multiTypeVariant?(!0===t.index&&a.push({action:"removeIndex",field:t}),a.push({action:"dropField",field:{...t}}),a.push({action:"addField",field:{...n}})):(n.dbName!==t.dbName&&a.push({action:"renameField",newName:n.dbName,oldName:t.dbName,field:t}),S(t,n)&&a.push({action:"changeField",oldField:{...t},newField:{...n}})),t.index!==n.index&&(!0===n.index?a.push({action:"addIndex",field:n}):a.push({action:"removeIndex",field:n}))):!0===n.isTablePart?s.push({action:"createTable",newTable:{...n}}):(a.push({action:"addField",field:{...n}}),!0===n.index&&a.push({action:"addIndex",field:n}))}for(const n of e)t.find(e=>e.id===n.id)||(!0===n.isTablePart?s.push({action:"dropTable",oldTable:{...n}}):(!0===n.index&&a.push({action:"removeIndex",field:n}),a.push({action:"dropField",field:{...n}})));return a},async createTable(e,t=(0,o.default)()){h.push(e);let s=`${t.format("YYYYMMDDHHmmss")}-create-table-${e.path}.js`,a=r.default.join(p,s);const n=[];let i=await b(e.fields,n);const u="\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {",c="\n },\n async down(queryInterface, Sequelize) {\n },\n}";let d=`${u}\n await queryInterface.createTable('${e.path}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const s=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=k(e.path,t,s):d+=M(e.path,t.dbName,s)}d+=`${c}`,await l.promises.writeFile(a,d);for(const e of n){t.add(1,"seconds"),s=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${e.dbName}.js`,a=r.default.join(p,s),i=await b(e.fields,[]),d=`${u}\n await queryInterface.createTable('${e.dbName}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const s=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=k(e.dbName,t,s):d+=M(e.dbName,t.dbName,s)}d+=`${c}`,await l.promises.writeFile(a,d)}return!0},async updateTable(e,t=(0,o.default)()){let s="";e.name!==e.dbName&&(s+=`\n await queryInterface.renameTable('${e.dbName}', '${e.name}')`);const a=[],n=this.prepareFieldsDifs(e.dbFields,e.fields,a);if(n.length>0){const a=[],r=[];for(const t of n){if("addField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?s+=A(e.name,t.field):(s+=await O(e.name,t.field.dbName,t.field),"object"!==t.field.type||t.field.multiType||a.push(t.field))),"dropField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?s+=C(e.name,t.field):(s+=F(e.name,t.field.dbName),"object"!==t.field.type||t.field.multiType||r.push(t.field),"object"===t.field.type&&t.field.multiType&&(s+=F(e.name,`${t.field.dbName.slice(0,-2)}Type`)))),"renameField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?s+=j(e.name,t):s+=D(e.name,t.oldName,t.newName)),"changeField"===t.action&&(t.newField.multiType&&t.oldField.multiType?s+=v(e.name,t.oldField,t.newField):s+=await I(e,t.oldField,t.newField),"object"!==t.oldField.type||"object"===t.newField.type||t.oldField.multiType||r.push(t.oldField),"object"!==t.oldField.type||"object"!==t.newField.type||t.oldField.ref===t.newField.ref||t.oldField.multiType||t.newField.multiType||(r.push(t.oldField),a.push(t.newField)),"object"===t.oldField.type||"object"!==t.newField.type||t.newField.multiType||a.push(t.newField),"object"===t.oldField.type&&!t.oldField.multiType&&"object"===t.newField.type&&t.newField.multiType&&r.push(t.oldField),"object"===t.oldField.type&&t.oldField.multiType&&"object"===t.newField.type&&!t.newField.multiType&&(s+=F(e.name,`${t.oldField.dbName.slice(0,-2)}Type`),a.push(t.newField))),"addIndex"===t.action){const a=`${e.id.substring(24)}_${t.field.id.substring(24)}`;t.field.multiType&&"common"===t.field.multiTypeVariant?s+=k(e.name,t.field,a):s+=M(e.name,t.field.dbName,a)}"removeIndex"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?s+=U(e.name,t.field):s+=P(e.name,t.field.dbName))}a.length>0&&h.push({path:e.name,fields:a}),r.length>0&&(g.push({path:e.name,fields:r}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")))}if(""!==s){let a=`${t.format("YYYYMMDDHHmmss")}-change-table-${e.isTablePart?"part-":""}${e.dbName}.js`,n=r.default.join(p,a),o=`\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {${s}\n },\n async down(queryInterface, Sequelize) {\n },\n}`;await l.promises.writeFile(n,o)}for(const s of a){if("createTable"===s.action){t.add(1,"seconds");let a=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${s.newTable.dbName}.js`,n=r.default.join(p,a);const o=await b(s.newTable.fields,[]),i=E(),u=R();let c=`${i}\n await queryInterface.createTable('${s.newTable.dbName}', {${o}\n })${u}`;const d=s.newTable.fields.filter(e=>!0===e.index);for(const e of d){const t=`${s.newTable.id.substring(24)}_${e.id.substring(24)}`;e.multiType&&"common"===e.multiTypeVariant?c+=k(s.newTable.dbName,e,t):c+=M(s.newTable.dbName,e.dbName,t)}c+=`${u}`,await l.promises.writeFile(n,c),h.push({path:e.name,fields:[s.newTable]})}if("changeTable"===s.action&&await this.updateTable({id:s.oldTable.id,dbName:s.oldTable.dbName,name:s.newTable.dbName,dbFields:s.oldTable.fields,fields:s.newTable.fields,isTablePart:!0},t.add(1,"seconds")),"dropTable"===s.action){g.push({path:e.name,fields:[s.oldTable]}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")),t.add(1,"seconds");let a=`${t.format("YYYYMMDDHHmmss")}-drop-table-part-${s.oldTable.dbName}.js`,n=r.default.join(p,a);const o=E(),i=R();let u=`${o}\n await queryInterface.dropTable('${s.oldTable.dbName}')${i}`;await l.promises.writeFile(n,u)}}return!0}}},6918:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(9896)),r=a(s(6928)),o=a(s(4716)),i={m:"YYYYMMDD-HHmm",h:"YYYYMMDD-HH",d:"YYYYMMDD"};t.default=function({path:e,interval:t="1d"}){const s=r.default.resolve(e);n.default.mkdirSync(s,{recursive:!0});const a=t.slice(-1),l=Number(t.slice(0,-1));if(!i[a]||!l)throw new Error(`Invalid log interval: ${t}`);let u=d((0,o.default)()),c=f(u);function d(e){const t="m"===a?e.clone().startOf("minute"):"h"===a?e.clone().startOf("hour"):e.clone().startOf("day"),s="m"===a?t.minute()%l:"h"===a?t.hour()%l:0;return t.subtract(s,a),t.format(i[a])}function f(e){return n.default.createWriteStream(r.default.join(s,`${e}.log`),{flags:"a"})}return{write(e){!function(){const e=d((0,o.default)());e!==u&&(c.end(),u=e,c=f(u))}(),c.write(e+"\n")}}}},6928:e=>{e.exports=require("path")},6961:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=a(s(8356)),o=n.default.Router(),i="report";o.get(`/${i}/settings/:id`,r.default.getSettings),o.post(`/${i}/result`,r.default.getResult),t.default=o},6980:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(1572)),r=s(7138),o=s(3903),i=s(9031),l=a(s(5788)),u=a(s(6836)),c=a(s(2282)),d=async(e,t)=>{const s=await l.default.models.User.findOne({where:{email:e}}),a=s?.language,n={en:{registration:{subject:"Confirm your email",hello:"Hello ",begining:",<br>Thank you for your registration. Your account requires activation. Click the link below to confirm your email address:<br><br>",middle:"<br><br>Here are your login details:<br>Login: ",end:"<br><br>Important Safety Tips:<br>1. Always keep your account details in a safe place.<br>2. Never reveal your login and password to anyone.<br>3. Change your password regularly.<br>4. If you suspect someone is using your account illegally, please let us know immediately."},passwordReset:{subject:"Password Reset",metter:"Password recovery for ",begining:"<br><br>Dear User,<br><br>We have received a request to change your account password ",middle:"<br>Click here to reset your password: ",end:"<br><br>If you do not want to reset your password, please ignore this message. The password will remain unchanged.<br><br>Sincerely,<br>Customer Service Team"},passwordResetConfirmation:{subject:"Password Reset Successful",main:"Dear User,<br><br>Your password has been successfully reset.<br><br>Sincerely,<br>Customer Service Team"},statusChange:{subject:"User status",start:"Dear User, <br><br>Your user status has been changed to:<br><br>",end:"<br><br>Sincerely,<br>Customer Service Team"}},pl:{registration:{subject:"Potwierdź swój email",hello:"Witaj ",begining:",<br>Dziękujemy za rejestracje. Twoje konto wymaga aktywacji. Kliknij poniższy link, aby potwierdzić swój adres e-mail:<br><br>",middle:"<br><br>Oto twoje dane logowania:<br>Login: ",end:"<br><br>Ważne wskazówki dotyczące bezpieczeństwa:<br>1. Zawsze trzymaj dane do Twojego konta w bezpiecznym miejscu.<br>2. Nigdy nie ujawniaj nikomu swojego loginu i hasła.<br>3. Regularnie zmieniaj swoje hasło.<br>4. Jeśli podejrzewasz, że ktoś używa Twojego konta nielegalnie, prosimy o natychmiastowe poinformowanie nas o tym."},passwordReset:{subject:"Reset hasła",metter:"Odzyskiwanie hasła do konta ",begining:"<br><br>Drogi Użytkowniku,<br><br>Otrzymaliśmy prośbę o zmianę hasła do konta ",middle:"<br>Kliknij, aby zresetować hasło: ",end:"<br><br>Jeśli nie chcesz resetować swojego hasła, zignoruj tę wiadomość. Hasło pozostanie niezmienione.<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"},passwordResetConfirmation:{subject:"Hasło Zresetowane Pomyślnie",main:"Drogi Użytkowniku,<br><br>Twoje hasło zostało pomyślnie zresetowane.<br><br>Z poważaniem,<br>Dzial Obslugi Klienta"},statusChange:{subject:"Status użytkownika",start:"Drogi Użytkowniku, <br><br>Twój status użytkownika został zmieniony na:<br><br>",end:"<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"}},fr:{registration:{subject:"Confirme ton email",hello:"Bonjour ",begining:",<br>Merci pour votre inscription. Votre compte nécessite une activation. Cliquez sur le lien ci-dessous pour confirmer votre adresse e-mail:<br><br>",middle:"<br><br>Voici vos identifiants de connexion:<br>Login: ",end:"<br><br>Conseils de sécurité importants:<br>1. Conservez toujours les détails de votre compte en lieu sûr.<br>2. Ne révélez jamais votre identifiant et votre mot de passe à qui que ce soit.<br>3. Changez votre mot de passe régulièrement.<br>4. Si vous pensez que quelqu'un utilise votre compte illégalement, veuillez nous en informer immédiatement."},passwordReset:{subject:"Réinitialisation du mot de passe",metter:"Récupération de mot de passe pour ",begining:"<br><br>Cher utilisateur,<br><br>Nous avons reçu une demande de changement de mot de passe de votre compte ",middle:"<br>Cliquez ici pour réinitialiser votre mot de passe: ",end:"<br><br>Si vous ne souhaitez pas réinitialiser votre mot de passe, veuillez ignorer ce message. Le mot de passe restera inchangé.<br><br>Cordialement,<br>L'équipe du service client"},passwordResetConfirmation:{subject:"Réinitialisation du mot de passe réussie",main:"Cher utilisateur,<br><br>Votre mot de passe a été réinitialisé avec succès.<br><br>Cordialement,<br>L'équipe du service client"},statusChange:{subject:"Statut de l'utilisateur",start:"Cher utilisateur, <br><br>Votre statut d'utilisateur a été changé en:<br><br>",end:"<br><br>Cordialement,<br>L'équipe du service client"}}};return a&&a in n?n[a][t]:n.en[t]};async function f(){return await l.default.models.EmailAccount.findOne({where:{isService:!0}})}function m(e){return{credentials:{host:e.smtpHost,port:e.smtpPort,secure:e.smtpTls,auth:{user:e.user,pass:e.password},tls:{rejectUnauthorized:e.smtpTls}}}}function p(e,t,s,a){return{from:e.name,to:t,bcc:e.name,subject:s,html:a}}t.default={async emailConfirmationInstructions(e,t,s,a){const r=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!r)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});r.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),r.password=u.default.decrypt(JSON.parse(r.password));const o=m(r),i=n.default.createTransport(o.credentials);i.verify(async function(n,o){if(n)c.default.error("Error in emailConfirmationInstructions ",{meta:n});else{const n=await d(e,"registration"),o=`${process.env.ALLOW_ORIGIN}/email-confirmation`,l=n.hello+t+n.begining+'<a href="'+o+"/"+a+'">Confirm Your Email Address</a>'+n.middle+s+n.end,u=p(r,e,n.subject,l);i.sendMail(u,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})},async register(e){try{if(await l.default.models.User.findOne({where:{[i.Op.or]:{email:e.email,login:e.login}}})){const e="A user with this login or email already exist";return c.default.error("Error in register Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}let t={email:e.email,login:e.login,uuid:(0,o.v4)(),password:u.default.createPasswordHash(e.password),name:e.name,isActive:!1,fullRights:!1,externalUser:!1,emailConfirmationToken:u.default.generateRandomToken(),referralToken:u.default.generateRandomToken(),isFirm:e.isFirm,firmName:e.firmName,phone:e.phone,country:e.country,companyDepartment:e.companyDepartment,commercialInChargeOfYou:e.commercialInChargeOfYou,notVatNumber:e.notVatNumber,vatNumber:e.vatNumber,address:e.address,postalCode:e.postalCode,city:e.city,deliveryDepartment:e.deliveryDepartment};const s=await async function(){return await l.default.models.User.findAll().then(e=>0===e.length).catch(()=>!1)}();return!0===s&&(t.isActive=!0,t.userState="Aktywny",t.fullRights=!0),await l.default.models.User.create(t).then(async e=>{c.default.info("New user was registered",{meta:JSON.stringify({id:e.id,name:e.name})}),!1===s&&this.emailConfirmationInstructions(e.email,e.name,e.login,e.emailConfirmationToken);const t={email:e.email,login:e.login,name:e.name};return{httpStatus:r.StatusCodes.OK,result:t}}).catch(e=>(c.default.error("Error in register Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:"User create error."}}))}catch(e){return c.default.error("Error in register Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},confirmEmailAddress:async e=>await l.default.models.User.findOne({where:{emailConfirmationToken:e}}).then(async e=>e?(e=await e.update({emailConfirmationToken:null}))?{httpStatus:r.StatusCodes.OK,result:!0}:(c.default.error("Error in confirmEmailAddress Service",{meta:"User not save."}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}}):(c.default.error("Error in confirmEmailAddress Service",{meta:"Token not find."}),{httpStatus:r.StatusCodes.NOT_FOUND,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.NOT_FOUND)}})).catch(e=>(c.default.error("Error in confirmEmailAddress Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{errorDetails:e}})),async resendEmailAddressConfirmationLink(e){try{let t=await l.default.models.User.findOne({where:{email:e}}),s=u.default.generateRandomToken();return t&&s?(t=await t.update({emailConfirmationToken:s}),t?(this.emailConfirmationInstructions(t.email,t.name,t.login,t.emailConfirmationToken),{httpStatus:r.StatusCodes.OK,result:!0}):{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:"Email is already confirmed or does not exist in our records."}}}catch(e){return c.default.error("Error in resendEmailAddressConfirmationLink Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async forgotPassword(e,t){try{if(!t)return c.default.error("Error in forgotPassword Service",{meta:"Client origin is not defined"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Client origin is not defined"}};const s=await l.default.models.User.findOne({where:{email:e}});if(!s)return c.default.error("Error in forgotPassword Service",{meta:"Email not found"}),{httpStatus:r.StatusCodes.NOT_FOUND,result:{message:"Email not found"}};let a=u.default.generateRandomToken();const o=Number("3600000")||36e5,i={passwordResetToken:a,passwordResetExpires:Date.now()+o},y=await s.update({...i});return y?async function(e,t,s,a,o){const i=await f();if(!i)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account not exist"}};if(!i.password)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account password not set"}};i.password=u.default.decrypt(JSON.parse(i.password));let l=m(i),y=n.default.createTransport(l.credentials);try{await y.verify()}catch(e){return c.default.error("Error in emailConfirmationInstructions ",{meta:e}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:`Email verification error. ${e}`}}}const h=await d(e,"passwordReset"),g=`${o}/password-reset`,b=h.metter+s+h.begining+s+h.middle+'<a href="'+g+"/"+a+'">Reset Password</a>'+h.end,w=p(i,e,h.subject,b);return await y.sendMail(w).then(e=>(c.default.verbose("Service Email sent",{meta:e}),{httpStatus:r.StatusCodes.OK,result:{message:"OK"}})).catch(e=>(c.default.error("Error while sending service email",{meta:e}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:e}}))}(y.email,y.name,y.login,y.passwordResetToken,t):(c.default.error("Error in forgotPassword Service",{meta:"User not updated"}),{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}})}catch(e){return c.default.error("Error in forgotPassword Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async isPasswordResetTokenValid(e){try{return await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}})?{httpStatus:r.StatusCodes.OK,result:!0}:{httpStatus:r.StatusCodes.BAD_REQUEST,result:!1}}catch(e){return c.default.error("Error in isPasswordResetTokenValid Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async resetPassword(e,t){try{let s=await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}});return s?(s=await s.update({passwordResetToken:null,passwordResetExpires:null,password:u.default.createPasswordHash(t)}),s?(async function(e){const t=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!t)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});t.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),t.password=u.default.decrypt(JSON.parse(t.password));const s=m(t),a=n.default.createTransport(s.credentials);a.verify(async function(s,n){if(s)c.default.error("Error in emailConfirmationInstructions ",{meta:s});else{const s=await d(e,"passwordResetConfirmation"),n=p(t,e,s.subject,s.main);a.sendMail(n,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}(s.email,s.name),{httpStatus:r.StatusCodes.OK,result:!0}):{httpStatus:r.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:r.StatusCodes.NOT_FOUND,result:{message:(0,r.getReasonPhrase)(r.StatusCodes.NOT_FOUND)}}}catch(e){return c.default.error("Error in resetPassword Service",{meta:e}),{httpStatus:r.StatusCodes.BAD_REQUEST,result:{message:e}}}},async emailOnUserStateChange(e,t){const s=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!s)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});s.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),s.password=u.default.decrypt(JSON.parse(s.password));const a=m(s),r=n.default.createTransport(a.credentials);r.verify(async function(a,n){if(a)c.default.error("Error in emailConfirmationInstructions ",{meta:a});else{const a=await d(e,"statusChange"),n=p(s,e,a.subject,a.start+t+a.end);r.sendMail(n,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}}},6982:e=>{e.exports=require("crypto")},7099:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(2282));let r=null;t.default={registerSender(e){r=e},async sendSms(e,t,s=!1){if(r)return r(e,t,s);throw n.default.warn("SMS service not configured — no sender registered. Call smsService.registerSender() at startup."),new Error("SMS service not configured")}}},7135:e=>{e.exports=require("node-sql-parser")},7138:e=>{e.exports=require("http-status-codes")},7173:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(9031),r=a(s(5788)),o=a(s(4716)),i=a(s(9896)),l=a(s(7825)),u=a(s(2555)),c=a(s(3275)),d=a(s(2282));let f={};function m(e,t,s){if("common"===t.multiTypeVariant){const a=[];if(e[`_${t.dbName}Type`]={type:n.DataTypes.STRING,allowNull:!0!==t.notNull},t.type.includes("string")){const s=`_${t.dbName}ST`;e[s]={type:n.DataTypes.STRING(t.typeOptions.length)},a.push(s)}if(t.type.includes("text")){const s=`_${t.dbName}TX`;e[s]={type:n.DataTypes.TEXT},a.push(s)}if(t.type.includes("integer")){const s=`_${t.dbName}IN`;e[s]={type:n.DataTypes.INTEGER},a.push(s)}if(t.type.includes("decimal")){const s=`_${t.dbName}DC`;e[s]={type:n.DataTypes.DECIMAL(t.typeOptions?.precision,t.typeOptions?.scale)},a.push(s)}if(t.type.includes("boolean")){const s=`_${t.dbName}BL`;e[s]={type:n.DataTypes.BOOLEAN},a.push(s)}if(t.type.includes("date")){const s=`_${t.dbName}DT`;e[s]={type:n.DataTypes.DATE},a.push(s)}if(c.default.typeIncludesRef(t.type)){const s=`_${t.dbName}Ref`;e[s]={type:n.DataTypes.STRING(100)},a.push(s)}s.push(...a),e[`${t.dbName}`]={type:n.DataTypes.VIRTUAL(n.DataTypes.ABSTRACT,[`_${t.dbName}Type`,...a]),get(){const e=this.getDataValue(`_${t.dbName}Type`);if(!e)return null;const s=c.default.getFieldNameByType(t.dbName,e);return s?this.getDataValue(s):null},set(e){this.setDataValue(`__pending_${t.dbName}`,e)}}}else e[t.dbName]={type:n.DataTypes.UUID,allowNull:!0!==t.notNull,_index:!0===t.index},e[`${t.name}Type`]={type:n.DataTypes.STRING,allowNull:!0!==t.notNull,_index:!0===t.index}}function p(e){const t={foreignKey:e.field.dbName,as:e.field.name};return e.field.notNull&&(t.allowNull=!1),e.field.index&&(t.index=!0),e.field.fullSearch&&(t._fullSearch=e.field.fullSearch),t}function y(e){const t={type:n.DataTypes.STRING},s=e.type.toUpperCase();return"STRING"===s?e.typeOptions?.length&&0!==e.typeOptions?.length?t.type=n.DataTypes[s](e.typeOptions?.length):t.type=n.DataTypes[s]():"JSON"===s?(t.type=n.DataTypes.TEXT(),t.get=function(){const t=this.getDataValue(e.name);return t?JSON.parse(t):null},t.set=function(t){this.setDataValue(e.name,t?JSON.stringify(t):t)}):"ENUM"===s?(t.type=n.DataTypes.ENUM,t.values=e.ref?f[e.ref]:["empty"],t._ref=e.ref):t.type=n.DataTypes[s](),"UUID"===s&&"id"===e.name&&(t.defaultValue=n.DataTypes.UUIDV4()),e.primaryKey&&(t.primaryKey=!0),e.notNull&&(t.allowNull=!1),e.index&&(t._index=!0),null!==e.defaultValue&&void 0!==e.defaultValue&&(t.defaultValue=e.defaultValue),e.fullSearch&&(t._fullSearch=e.fullSearch),t}function h(e,t,s,a,o){let i={};const l=[];let u=!1;for(const h of e.fields)h.multiType?("common"===h.multiTypeVariant&&(u=!0),m(i,h,l)):"object"!==h.type&&(i[h.dbName]=y(h)),"object"===h.type&&s.push({objectName:t.name,tableName:e.name,field:h});class f extends n.Model{}const p={title:e.title,name:e.name,fields:e.fields,model:f.init(i,{sequelize:r.default,modelName:e.model,tableName:e.dbName})};if(t.model.hasMany(p.model,{foreignKey:"parentId",as:e.name,onDelete:"CASCADE",hooks:!0}),l.length>0){const g=p.model.prototype.toJSON;p.model.prototype.toJSON=function(){const t=g?g.call(this):Object.assign({},this.get?this.get():this);for(const e of l)e in t&&delete t[e];if(e.fields){const s=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of s){const s=this.dataValues&&this.dataValues[e.dbName];s&&"object"==typeof s&&(t[e.dbName]=s)}}return t}}if(u){function b(t){if(!e.fields)return;const s=c.default.typesSufixes();for(const a of e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const e=`__pending_${a.dbName}`;if(!Object.prototype.hasOwnProperty.call(t.dataValues,e))continue;const n=t.getDataValue(e),r=t.getDataValue(`_${a.dbName}Type`);for(const e in s){const n=`_${a.dbName}${s[e]}`;t.setDataValue(n,null)}if(c.default.typeIncludesRef(a.type)&&t.setDataValue(`_${a.dbName}Ref`,null),r){const e=c.default.getFieldNameByType(a.dbName,r);e&&(c.default.isRefType(r)&&"object"==typeof n?t.setDataValue(e,n.id||null):t.setDataValue(e,n))}delete t.dataValues[e]}}p.model.addHook("beforeSave",e=>{b(e)}),p.model.addHook("beforeBulkCreate",e=>{for(const t of e)b(t)}),p.model.addHook("afterFind","refObjectsPreload",async t=>{if(!e.fields)return;if(!t)return;const s=Array.isArray(t)?t:[t],a=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),n=[];for(const e of s)for(const t of a){const s=e.getDataValue(`_${t.dbName}Type`),a=e.getDataValue(`_${t.dbName}Ref`);if(!s||!a)continue;const r=s.match(/^(catalog|document)\.(.+)$/);if(!r)continue;const i=r[1],l=r[2],u=o[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(a,{attributes:f}).then(s=>{if(!s)return;const a=s.get?s.get():s;if("catalog"===i){const s={id:a.id,name:a.name??null,presentation:a.presentation??null};e.setDataValue(t.dbName,s),e.dataValues[t.dbName]=s}else{const s={id:a.id,numberStr:a.numberStr??null,date:a.date??null,presentation:a.presentation??null};e.setDataValue(t.dbName,s),e.dataValues[t.dbName]=s}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});n.push(m)}n.length>0&&await Promise.all(n)})}for(const w of e.fields)w.leading&&a.push({field:w,belongTable:p.model});t.tables[e.name]=p}function g(e,t,s){let a={},o=[],i=[];a.id={type:n.DataTypes.UUID,primaryKey:!0,allowNull:!1},a.period={type:n.DataTypes.DATE,allowNull:!1,_index:!0};for(const e of t.fields)"dimension"!==e.role&&"resource"!==e.role||("object"!==e.type?a[e.dbName]=y(e):s.push({objectName:t.name,accModel:!0,field:e}),"dimension"===e.role&&o.push(l.default.cloneDeep(e)),"resource"===e.role&&i.push(l.default.cloneDeep(e)));class u extends n.Model{}const c={name:`${t.name}Acc`,dimensions:o,resources:i,model:u.init(a,{sequelize:r.default,modelName:`${e.model}Acc`,tableName:`${e.path}_acc`})};t.accTable=c}t.default=async()=>{f=await u.default.initEnums();const e=await r.default.query('SELECT * FROM app_objects WHERE app_objects."markedToDelete" = false AND app_objects."dbTableName" IS NOT NULL',{type:n.QueryTypes.SELECT}),t={},s=[],a=[];for(const i of e){let e={},l=[];const u=JSON.parse(i.dbFields),f=[];let p=!1;for(const t of u.filter(e=>!e.isTablePart))t.multiType?("common"===t.multiTypeVariant&&(p=!0),m(e,t,f)):"object"!==t.type&&(e[t.dbName]=y(t)),"object"===t.type&&s.push({objectName:i.name,field:t});if(i.indexes){const e=JSON.parse(i.indexes);for(const t of e)l.push({name:t.name,fields:t.fields,unique:t.unique,using:t.using})}const b=i.reflection?JSON.parse(i.reflection):{};"catalog"===i.type&&(e.presentation={type:new n.DataTypes.VIRTUAL(n.DataTypes.STRING,b.fields?b.fields:["name"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let s;for(;null!==(s=e.exec(b.template));)s.index===e.lastIndex&&e.lastIndex++,s.forEach(e=>{t.push(e)});let a=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let s=this[t];const n=u.find(e=>e.dbName===t);if(n)if("date"===n.type){const e=n.format&&""!==n.format?n.format:"DD.MM.YYYY HH:mm:ss";s=(0,o.default)(this[t]).format(e)}else s=this[t];a=a.replace(e,s)}return a}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("name")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"name"}),"document"===i.type&&(e.presentation={type:new n.DataTypes.VIRTUAL(n.DataTypes.STRING,b.fields?b.fields:["numberStr"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let s;for(;null!==(s=e.exec(b.template));)s.index===e.lastIndex&&e.lastIndex++,s.forEach(e=>{t.push(e)});let a=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let s=this[t];const n=u.find(e=>e.dbName===t);if(n)if("date"===n.type){const e=n.format&&""!==n.format?n.format:"DD.MM.YYYY HH:mm:ss";s=(0,o.default)(this[t]).format(e)}else s=this[t];a=a.replace(e,s)}return a}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("numberStr")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"numberStr"});class w extends n.Model{}const _={id:i.id,name:i.name,singularName:i.singularName,title:i.title,path:i.path,tableName:i.dbTableName,type:i.type,confirmation:i.confirmation,system:i.system,configurationData:i.configurationData,hierarchic:i.hierarchic,api:i.api?JSON.parse(i.api):null,staticAPI:i.staticAPI?JSON.parse(i.staticAPI):{},fields:u,reflection:b,withoutTimestamps:i.withoutTimestamps,processedPresentation:i.processedPresentation,accessRoleId:i.accessRoleId,accumulationRegister:i.accumulationRegister,model:w.init(e,{sequelize:r.default,modelName:i.model,tableName:i.dbTableName,indexes:l,timestamps:!0!==i.withoutTimestamps,mainModel:!0}),accTable:null,tables:{},controllers:{}};u.find(e=>!0===e.password)&&(_.model.prototype.toJSON=function(){const e=Object.assign({},this.get());for(const t of u.filter(e=>!0===e.password))delete e[t.name];return e});for(const e of u)e.leading&&a.push({field:e,belongTable:_.model});for(const e of u.filter(e=>e.isTablePart))h(e,_,s,a,t);if("register"===_.type&&_.accumulationRegister&&g(i,_,s),p){if(f.length>0){const e=_.model.prototype.toJSON;_.model.prototype.toJSON=function(){const t=e?e.call(this):Object.assign({},this.get?this.get():this);for(const e of f)e in t&&delete t[e];const s=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of s){const s=this.dataValues&&this.dataValues[e.dbName];s&&"object"==typeof s&&(t[e.dbName]=s)}return t}}_.model.addHook("beforeSave",e=>{for(const t of u.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const s=`__pending_${t.dbName}`;if(!Object.prototype.hasOwnProperty.call(e.dataValues,s))continue;const a=e.getDataValue(s),n=e.getDataValue(`_${t.dbName}Type`),r=c.default.typesSufixes();for(const s in r){const a=`_${t.dbName}${r[s]}`;e.setDataValue(a,null)}if(c.default.typeIncludesRef(t.type)&&e.setDataValue(`_${t.dbName}Ref`,null),n){const s=c.default.getFieldNameByType(t.dbName,n);s&&(c.default.isRefType(n)&&"object"==typeof a?e.setDataValue(s,a.id||null):e.setDataValue(s,a))}delete e.dataValues[s]}}),_.model.addHook("afterFind","refObjectsPreload",async e=>{if(!e)return;const s=Array.isArray(e)?e:[e],a=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),n=[];for(const e of s)for(const s of a){const a=e.getDataValue(`_${s.dbName}Type`),r=e.getDataValue(`_${s.dbName}Ref`);if(!a||!r)continue;const o=a.match(/^(catalog|document)\.(.+)$/);if(!o)continue;const i=o[1],l=o[2],u=t[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(r,{attributes:f}).then(t=>{if(!t)return;const a=t.get?t.get():t;if("catalog"===i){const t={id:a.id,name:a.name??null,presentation:a.presentation??null};e.setDataValue(s.dbName,t),e.dataValues[s.dbName]=t}else{const t={id:a.id,numberStr:a.numberStr??null,date:a.date??null,presentation:a.presentation??null};e.setDataValue(s.dbName,t),e.dataValues[s.dbName]=t}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});n.push(m)}n.length>0&&await Promise.all(n)})}t[_.name]=_}const l=[];for(const a of s){const s=t[a.objectName];if(s)if(a.field.multiType){if(!Array.isArray(a.field.ref))continue;const t=[];let n=!1;for(const r of a.field.ref){const a=e.find(e=>e.name===r);if(!a){n=!0,console.info("No belongs to object: ",`${s.name} -> ${r}`);break}t.push(a)}if(!n){const e=[];let n=!1;for(const o of t){const i=r.default.models[o.model];if(!i){n=!0,l.push({refField:a,object:s,belongToObject:t});break}e.push({object:o,model:i})}if(!n){const t=a.tableName?s.tables[a.tableName].model:a.accModel?s.accTable?.model:s.model;for(const n of e){const e=p(a);e.constraints=!1,e.as=`${a.field.name}${n.model.name}`,t.belongsTo(n.model,e);let r=a.accModel?`${s.name}Acc`:s.name;n.model.associations[r]&&(r=`${a.field.name}${r.charAt(0).toUpperCase()+r.slice(1)} `);const o={foreignKey:a.field.dbName,_noTablePart:!0,_registerRecords:"recorder"===a.field.name||void 0,constraints:!1,as:r,scope:{[`${a.field.name}Type`]:n.object.name}};n.model.hasMany(t,o)}t.addHook("afterFind",t=>{Array.isArray(t)||(t=t?[t]:[]);for(const s of t){const t=e.find(e=>s[`${a.field.name}Type`]===e.object.name);t&&void 0!==s[`${a.field.name}${t.model.name}`]?(s[a.field.name]=s[`${a.field.name}${t.model.name}`],s.dataValues[a.field.name]=s[`${a.field.name}${t.model.name}`]):(s[a.field.name]=null,s.dataValues[a.field.name]=null);for(const t of e)delete s[`${a.field.name}${t.model.name}`],delete s.dataValues[`${a.field.name}${t.model.name}`]}})}}}else{const t=e.find(e=>e.name===a.field.ref);if(t){const e=r.default.models[t.model];if(e){const t=p(a);if(a.tableName)s.tables[a.tableName].model.belongsTo(e,t);else if(a.accModel)s.accTable?.model.belongsTo(e,t);else try{s.model.belongsTo(e,t)}catch(s){console.error("Error in belongsTo: ",{belongToModel:e,fieldData:t},s)}}else l.push({refField:a,object:s,belongToObject:t})}else console.info("No belongs to object: ",`${s.name} -> ${a.field.name} (${a.field.ref})`)}else console.info("No object: ",a.objectName)}for(const s of a){const a=t[s.field.ref];if(a)a.model.hasMany(s.belongTable,{foreignKey:s.field.dbName,as:s.field.leadingAlias,_noTablePart:!0});else{const t=e.find(e=>e.name===s.field.ref);t?l.push({leading:!0,leadingField:s,model:t.model}):console.info("No app object for leading field: ",s.field.ref)}}for(const e in t){if(!t[e].processedPresentation)continue;const s=t[e];let a;const n=`${s.type}s/${s.name}/server.module.js`,r=`${process.cwd()}/src/modules/${n}`;i.default.existsSync(r)&&(a=require(r)),a?.initPresentation&&s.model.addHook("afterFind","addPresentationGetter",async e=>{Array.isArray(e)||(e=e?[e]:[]);for(const t of e){const e=await a.initPresentation(t);t.setDataValue("presentation",e)}})}for(const e of l)console.warn("Missing ref: ",e);return t}},7174:e=>{e.exports=require("compression")},7252:e=>{e.exports=require("express")},7281:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=s(9876),o=a(s(1688)),i=n.default.Router();i.get("/access_log",o.default.canRead({key:"access_logs"}),r.accessLogsController.getFilesInfo),t.default=i},7501:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(9031),r=a(s(5788)),o=a(s(2282)),i=a(s(2103)),l=s(9239);t.default={async initCommonCommands(e){const t=await async function(){try{return(await r.default.query('\n SELECT\n command_groups.id AS "id",\n command_groups.name AS "name",\n command_groups."title" AS "title",\n command_groups."objectType" AS "objectType",\n command_groups."viewType" AS "viewType",\n command_groups."lang" AS "lang",\n command_groups."presentationType" AS "presentationType",\n command_groups."variant" AS "variant",\n command_groups."icon" AS "icon",\n command_groups."hidden" AS "hidden",\n command_groups."tooltip" AS "tooltip",\n command_groups."classes" AS "classes",\n command_groups."styles" AS "styles",\n groups_objects."objectId" AS "objectId"\n FROM \n command_groups\n LEFT JOIN \n command_groups_objects as "groups_objects"\n ON \n groups_objects."parentId" = command_groups.id \n WHERE\n command_groups."markedToDelete" = false',{type:n.QueryTypes.SELECT})).reduce((e,t)=>{let s=e.findIndex(e=>e.name===t.name);return-1===s&&(s=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,icon:t.icon,variant:t.variant,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,isGroup:!0,objects:[],items:[]})-1),s>-1&&t.objectId&&e[s].objects.push(t.objectId),e},[])}catch(e){return console.error(e),[]}}(),s=await async function(e){try{const t=(await r.default.query('\n SELECT\n common_commands.id AS "id",\n common_commands.name AS "name",\n common_commands."title" AS "title",\n common_commands."objectType" AS "objectType",\n common_commands."viewType" AS "viewType",\n common_commands."module" AS "module",\n common_commands."moduleV3" AS "moduleV3",\n common_commands."lang" AS "lang",\n common_commands."presentationType" AS "presentationType",\n common_commands."variant" AS "variant",\n common_commands."icon" AS "icon",\n common_commands."hidden" AS "hidden",\n common_commands."tooltip" AS "tooltip",\n common_commands."classes" AS "classes",\n common_commands."styles" AS "styles",\n common_commands."groupId" AS "groupId",\n commands_objects."objectId" AS "objectId"\n FROM \n common_commands\n LEFT JOIN \n common_commands_objects as "commands_objects"\n ON \n commands_objects."parentId" = common_commands.id \n WHERE\n common_commands."markedToDelete" = false',{type:n.QueryTypes.SELECT})).reduce((e,t)=>{let s=e.findIndex(e=>e.name===t.name);return-1===s&&(s=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,module:t.module,moduleV3:t.moduleV3,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,variant:t.variant,icon:t.icon,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,groupId:t.groupId,isGroup:!1,objects:[]})-1),s>-1&&t.objectId&&e[s].objects.push(t.objectId),e},[]),s=/^\s*export\s+/gm,a=/^\s*(?:async\s+)?function\s+commandProcessing\s*\([^)]*\)\s*{[\s\S]*?}/gm;for(const n of t){if(n.module){n.module=n.module.replace(s,""),a.lastIndex=0;const t=a.test(n.module);let r="";r=t?`function main() {${n.module.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(r);n.module=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),n.module=null}}if(n.moduleV3){n.moduleV3=n.moduleV3.replace(s,"function "),a.lastIndex=0;const t=a.test(n.moduleV3);let r="";r=t?`function main() {${n.moduleV3.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(r);n.moduleV3=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),n.moduleV3=null}}}return t}catch(e){return console.error(e),[]}}(e);for(const e of s)if(e.groupId){const s=t.find(t=>t.id===e.groupId&&t.isGroup);s&&s.items.push({...e})}else t.push({...e});return t}}},7565:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=a(s(6304)),o=n.default.Router(),i="app";o.get(`/${i}/info`,r.default.getAppInfo),o.get(`/${i}/objects`,r.default.getObjects),o.get(`/${i}/object_meta`,r.default.getObjectMetadata),o.get(`/${i}/object_fields`,r.default.getObjectFields),o.get(`/${i}/subordination`,r.default.getSubordination),o.get(`/${i}/registers_meta`,r.default.getRegistersMetadata),o.get(`/${i}/setting`,r.default.getSetting),o.get(`/${i}/enums`,r.default.getEnums),o.get(`/${i}/app-objects`,r.default.getAppObjects),o.get(`/${i}/common-modules`,r.default.getCommonModules),o.get(`/${i}/event-subscriptions`,r.default.getEventSubscriptions),o.get(`/${i}/view-settings/:id`,r.default.getViewSettings),o.get(`/${i}/component-settings/:id`,r.default.getComponentSettings),o.get(`/${i}/store`,r.default.getClientStore),o.get(`/${i}/common-commands`,r.default.getCommonCommands),o.get(`/${i}/has-role`,r.default.hasRole),o.post(`/${i}/setting`,r.default.setSetting),o.post(`/${i}/raw-query`,r.default.rawQuery),o.post(`/${i}/exec-func`,r.default.execServerModuleFunc),o.post(`/${i}/exec-common-module`,r.default.execCommonModuleFunc),t.default=o},7636:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(8608)),r=s(696),o=a(s(4716)),i=a(s(5788)),l=a(s(2282)),u=a(s(2555));function c(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={vertical:"middle",horizontal:"left",shrinkToFit:!0,wrapText:!0},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"e9ecef"}}}function d(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={horizontal:"left"},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"f2f5fa"}}}function f(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0}}function m(e,t,s,a,n,r){for(const o of t){let t=!0===a?1:e.fields.length;if(n.getRow(s).outlineLevel=r,o.isGroup){const i=n.getCell(s,1);if(h(e,i,o.groups),o.children.length>0?d(i):f(i),n.mergeCells(s,1,s,t),t+=1,e.colGroups.length>0){for(const e of o.totals){const a=n.getCell(s,t);a.value=e.value||0,o.children.length>0?d(a):f(a),a.alignment={horizontal:e.textAlign?e.textAlign:"left"},a.numFmt=p(e.format),t+=1}if(e.showXTotal)for(const a of e.calcs){const e=o.totals.reduce((e,t)=>t.id===a.id?e+t.value:e,0),r=n.getCell(s,t);r.value=e||0,o.children.length>0?d(r):f(r),r.alignment={horizontal:a.textAlign?a.textAlign:"left"},r.numFmt=p(a.format),t+=1}}else for(const e of o.totals){const a=n.getCell(s,t);a.value=e.value||0,o.children.length>0?d(a):f(a),a.alignment={horizontal:e.textAlign?e.textAlign:"left"},a.numFmt=p(e.format),t+=1}s+=1,o.children.length>0&&(s=m(e,o.children,s,a,n,r+1))}else{for(let t=0;t<e.fields.length;t++){const a=n.getCell(s,t+1);y(a,e.fields[t],o,e),f(a),a.alignment={horizontal:e.fields[t].textAlign}}let t=e.fields.length+1;if(e.colGroups.length>0){const a=o[e.colGroups[0].name],r={};for(const i of e.cols)for(let l=0;l<e.calcs.length;l++){let u=0;("object"===e.colGroups[0].valueType&&i.id===a?.id||i===a)&&(u=Number(o[e.calcs[l].name]||0));const c=n.getCell(s,t);c.value=u||0,f(c),c.alignment={horizontal:e.calcs[l].textAlign?e.calcs[l].textAlign:"left"},c.numFmt=p(e.calcs[l].format),Object.hasOwnProperty.call(r,e.calcs[l].name)?r[e.calcs[l].name]+=Number(u):r[e.calcs[l].name]=Number(u),t+=1}if(e.showXTotal)for(let a=0;a<e.calcs.length;a++){let o=r[e.calcs[a].name];const i=n.getCell(s,t+a);i.value=o||0,f(i),i.alignment={horizontal:e.calcs[a].textAlign?e.calcs[a].textAlign:"left"},i.numFmt=p(e.calcs[a].format)}}else if(e.rowGroups.length>0)for(let a=0;a<e.calcs.length;a++){let r=Number(o[e.calcs[a].name]||0);const i=n.getCell(s,t+a);i.value=r||0,f(i),i.alignment={horizontal:e.calcs[a].textAlign?e.calcs[a].textAlign:"left"},i.numFmt=p(e.calcs[a].format)}s+=1}}return s}function p(e){let t=null;if(e){const s=JSON.parse(e||'{"NFD": 3}'),a=0;s.NFD&&(t=a.toFixed(s.NFD))}return t}function y(e,t,s,a){let n=s[t.name]||null;switch(t.valueType){case"number":{let s=parseFloat(n);isNaN(s)&&(s=0),e.value=s||0,t.format&&(e.numFmt=p(t.format));break}case"date":default:e.value=n||"";break;case"object":e.value=n.name||"";break;case"boolean":e.value=Boolean(n||!1),e.numFmt="BOOLEAN";break;case"enum":if(n&&t.ref){const e=a.enums[t.ref].find(e=>e.value===n);n=e?e.title:n}e.value=n||""}}function h(e,t,s){if(1===s.length)switch(s[0].valueType){case"number":t.value=Number(s[0].value||0);break;case"date":""===s[0].value?t.value=null:s[0].format?t.value=(0,o.default)(s[0].value,s[0].format).toDate()||null:t.value=s[0].value||null;break;case"object":t.value=s[0].value.name||"";break;case"boolean":t.value=Boolean(s[0].value||!1),t.numFmt="BOOLEAN";break;default:t.value=s[0].value||""}else{let a="";for(let t=0;t<s.length;t++)"object"===s[t].valueType?a+=s[t].value?.name||e.lang.undefined:"boolean"===s[t].valueType?a+=s[t].value?e.lang.boolean.true:e.lang.boolean.false:a+=s[t].value,t<s.length-1&&(a=`${a}, `);t.value=a||""}}t.default={async generateExcel(e,t=null){const s={...e.body};if(s.rowGroups.length>1){const e=[];let t=[];for(let a=0;a<s.rowGroups.length;a++)!0!==s.rowGroups[a].withParent&&0!==a&&(e.push(t.length>1?t:t[0]),t=[]),t.push(s.rowGroups[a]),a===s.rowGroups.length-1&&e.push(t.length>1?t:t[0]);s.rowGroups=e}s.rowGroups.length>0&&(s.fields=s.fields.filter(e=>!s.calcs.find(t=>t.name===e.name))),s.enums=await async function(e){try{const t={};let s=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const a of s)t[a.name]=a.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(s.langCode);const a=new n.default.Workbook,o=a.addWorksheet("Sheet 1",{pageSetup:{paperSize:9,orientation:"landscape"}});let f=1;if(s.periodPresentation){let e=s.periodPresentation.length>20?s.lang.byPeriod:s.lang.byDate;o.getCell(f,1).value=`${e}:`,o.getCell(f,2).value=s.periodPresentation,f++}if(Array.isArray(s.filterPresentation)&&s.filterPresentation.length>0){o.getCell(f,1).value=`${s.lang.filter}:`;for(const e of s.filterPresentation)o.getCell(f,2).value=e,f++}const y=s.rowGroups.length>0&&!0===s.hideDetails;let h=f,g=s.rowGroups.length+(!0===y?0:1);g=s.colGroups.length>0&&g<2?2:g;let b=!0===y?1:s.fields.length;if(s.rowGroups.length>0){const e=1===s.rowGroups.length&&s.colGroups.length>0&&y?1:0;s.rowGroups.map(t=>{const s=o.getCell(f,1);s.value=function(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}(t),c(s),o.mergeCells(f,1,f+e,b),f+=1})}!0!==y&&(s.fields.map((e,t)=>{const s=o.getCell(f,t+1);c(s),s.value=e.title}),f+=1);const w=s.calcs.length;if(s.colGroups.length>0){for(const e of s.cols){const t=o.getCell(h,b+1);t.value=e.name,c(t),o.mergeCells(h,b+1,h,b+w),s.calcs.map((e,t)=>{const s=o.getCell(h+1,b+t+1);s.value=e.title,c(s),o.mergeCells(h+1,b+t+1,h+g-1,b+t+1)}),b+=w}if(s.showXTotal){const e=o.getCell(h,b+1);e.value=s.lang.total,c(e),o.mergeCells(h,b+1,h,b+w),s.calcs.map((e,t)=>{const s=o.getCell(h+1,b+t+1);s.value=e.title,c(s),o.mergeCells(h+1,b+t+1,h+g-1,b+t+1)})}}else s.rowGroups.length>0&&s.calcs.map((e,t)=>{const s=o.getCell(h,b+t+1);s.value=e.title,c(s),o.mergeCells(h,b+t+1,h+g-1,b+t+1)});f=m(s,s.data,h+g,y,o,0);let _=1;if(s.showYTotal>0&&s.totals.length>0){let e=!0===y?1:s.fields.length;if(s.rowGroups.length>0){const t=o.getCell(f,1);t.value=s.lang.total,d(t),o.mergeCells(f,1,f,e),s.totals.forEach((t,s)=>{_=e+s+1;const a=o.getCell(f,_);a.value=t.value||0,d(a),a.numFmt=p(t.format),a.alignment={horizontal:t.textAlign?t.textAlign:"left"}}),s.colGroups.length>0&&s.showXTotal&&s.calcs.map((t,a)=>{const n=s.totals.reduce((e,s)=>s.id===t.id?e+s.value:e,0);_=e+s.totals.length+a+1;const r=o.getCell(f,_);r.value=n||0,d(r),r.numFmt=p(t.format),r.alignment={horizontal:t.textAlign?t.textAlign:"left"}})}else{let e=!0,t=1;for(const a of s.fields){const n=s.totals.find(e=>e.id===a.id);if(n){if(!0===e){const a=o.getCell(f,1);a.value=s.lang.total,d(a),o.mergeCells(f,1,f,t-1),e=!1}const r=o.getCell(f,t);r.value=Number(n.value||0),d(r),r.numFmt=p(n.format),r.alignment={horizontal:a.textAlign?a.textAlign:"left"}}else if(!0!==e){const e=o.getCell(f,t);e.value="",d(e)}_=t,t++}}}return function(e,t){e.columns.forEach(e=>{let s=6;e.eachCell(e=>{if(e.row>=t&&!e.isMerged){let t;if(e.numFmt&&null!=e.value)switch(e.type){case n.default.ValueType.Date:{const s=function(e){const t=e.getTimezoneOffset()/1440;return e.getTime()/864e5+(25569-t)}(e.value);t=(0,r.format)(e.numFmt,s).length;break}case n.default.ValueType.Number:default:t=(0,r.format)(e.numFmt,e.value).length}else t=e.value.toString().length;s=Math.max(s,t)}}),s>50&&(s=50),e.width=s+2})}(o,h),function(e){const t=e.getCell(e.rowCount,e.columnCount);e.pageSetup.printArea=`A1:${t.address}`}(o),t&&(t.status(200),t.setHeader("Content-Type","text/xlsx"),t.setHeader("Content-Disposition","attachment; filename=Excel.xlsx"),a.xlsx.write(t).then(function(){t.end()})),a}}},7825:e=>{e.exports=require("lodash")},7927:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.smsService=t.migrationsService=t.eventService=t.registerService=t.seederService=t.cryptoGen=t.defineObjects=t.logger=t.appService=t.documentService=t.controllerService=t.commonService=t.accessRights=t.sequelize=t.app=void 0;const n=a(s(6928)),r=a(s(7252)),o=a(s(7174)),i=a(s(6898)),l=a(s(2525)),u=a(s(8577)),c=s(3903),d=a(s(8278)),f=a(s(5977)),m=a(s(3857)),p=a(s(1763)),y=a(s(6456)),h=a(s(5560)),g=a(s(3407)),b=a(s(3464)),w=a(s(6797)),_=a(s(2362));t.eventService=_.default;const S=a(s(5788));t.sequelize=S.default;const v=(0,m.default)(f.default.Store);process.on("unhandledRejection",e=>console.error(e)),process.on("uncaughtException",e=>console.error(e)),process.on("warning",e=>console.warn(e.stack));const E=(0,r.default)();t.app=E,E.use(r.default.json({limit:"100mb"})),E.use(r.default.urlencoded({extended:!1})),E.use((0,i.default)()),(0,y.default)(E),E.use((0,l.default)()),E.use((0,o.default)()),E.use(r.default.static(n.default.join("src","../public")));const R={origin:[...(process.env.ALLOW_ORIGIN||"").split(","),"app://."],methods:["OPTIONS","GET","POST","PUT","PATCH","DELETE"],allowedHeaders:["Content-Type","Authorization","x-access-token","x-api-key","device_uuid","Access-Control-Allow-Origin","Access-Control-Allow-Credentials","x-client-version"],credentials:!0};E.use((0,u.default)(R)),s(9);const $={genid:()=>(0,c.v4)(),store:new v({db:S.default,table:"Session",extendDefaultFields:function(e,t){const s=t?.passport?.user;return{id:(0,c.v4)(),data:e.data,expires:e.expires,userId:s,licNumber:t?.license?.number||null,clientType:t?.clientType||null}}}),secret:"Mk9pZ2Adth",resave:!1,rolling:!0,saveUninitialized:!1,cookie:{httpOnly:!0,maxAge:Number(process.env.SESSION_MAX_AGE||"900000"),secure:!1}};E.use((0,f.default)($));const T=(0,p.default)({windowMs:6e4,max:1e5,statusCode:429});E.use(T),async function(e){try{await(0,h.default)(e),(0,g.default)(e)}catch(e){console.error(e)}finally{b.default.init(e.locals.objects)}}(E),w.default.initializePassport(d.default),E.use(d.default.initialize()),E.use(d.default.session()),_.default.init(E),E.set("views",n.default.join("src","views")),E.set("view engine","pug"),E.use((e,t,s,a)=>{console.error(e),s.locals.message=e.message,s.locals.error="development"===t.app.get("env")?e:{},s.status(e.status||500),s.render("error")});const N=a(s(1688));t.accessRights=N.default;const O=a(s(2282));t.logger=O.default;const A=a(s(2555));t.commonService=A.default;const C=a(s(3958));t.controllerService=C.default;const D=a(s(4621));t.appService=D.default;const j=a(s(6224));t.defineObjects=j.default;const I=a(s(6836));t.cryptoGen=I.default;const x=a(s(2671));t.documentService=x.default;const F=a(s(9880));t.seederService=F.default;const M=a(s(6299));t.registerService=M.default;const k=a(s(6910));t.migrationsService=k.default;const P=a(s(7099));t.smsService=P.default},8278:e=>{e.exports=require("passport")},8287:(e,t,s)=>{var a=s(6661),n=s(8876),r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=l,t.IS=50;var o=2147483647;function i(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,s){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return d(e)}return u(e,t,s)}function u(e,t,s){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var s=0|y(e,t),a=i(s),n=a.write(e,t);return n!==s&&(a=a.slice(0,n)),a}(e,t);if(ArrayBuffer.isView(e))return function(e){if(q(e,Uint8Array)){var t=new Uint8Array(e);return m(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(q(e,ArrayBuffer)||e&&q(e.buffer,ArrayBuffer))return m(e,t,s);if("undefined"!=typeof SharedArrayBuffer&&(q(e,SharedArrayBuffer)||e&&q(e.buffer,SharedArrayBuffer)))return m(e,t,s);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var a=e.valueOf&&e.valueOf();if(null!=a&&a!==e)return l.from(a,t,s);var n=function(e){if(l.isBuffer(e)){var t=0|p(e.length),s=i(t);return 0===s.length||e.copy(s,0,0,t),s}return void 0!==e.length?"number"!=typeof e.length||B(e.length)?i(0):f(e):"Buffer"===e.type&&Array.isArray(e.data)?f(e.data):void 0}(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,s);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function d(e){return c(e),i(e<0?0:0|p(e))}function f(e){for(var t=e.length<0?0:0|p(e.length),s=i(t),a=0;a<t;a+=1)s[a]=255&e[a];return s}function m(e,t,s){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(s||0))throw new RangeError('"length" is outside of buffer bounds');var a;return a=void 0===t&&void 0===s?new Uint8Array(e):void 0===s?new Uint8Array(e,t):new Uint8Array(e,t,s),Object.setPrototypeOf(a,l.prototype),a}function p(e){if(e>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function y(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||q(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var s=e.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===s)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return s;case"utf8":case"utf-8":return P(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*s;case"hex":return s>>>1;case"base64":return U(e).length;default:if(n)return a?-1:P(e).length;t=(""+t).toLowerCase(),n=!0}}function h(e,t,s){var a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===s||s>this.length)&&(s=this.length),s<=0)return"";if((s>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,s);case"utf8":case"utf-8":return T(this,t,s);case"ascii":return O(this,t,s);case"latin1":case"binary":return A(this,t,s);case"base64":return $(this,t,s);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,s);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function g(e,t,s){var a=e[t];e[t]=e[s],e[s]=a}function b(e,t,s,a,n){if(0===e.length)return-1;if("string"==typeof s?(a=s,s=0):s>2147483647?s=2147483647:s<-2147483648&&(s=-2147483648),B(s=+s)&&(s=n?0:e.length-1),s<0&&(s=e.length+s),s>=e.length){if(n)return-1;s=e.length-1}else if(s<0){if(!n)return-1;s=0}if("string"==typeof t&&(t=l.from(t,a)),l.isBuffer(t))return 0===t.length?-1:w(e,t,s,a,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,s):Uint8Array.prototype.lastIndexOf.call(e,t,s):w(e,[t],s,a,n);throw new TypeError("val must be string, number or Buffer")}function w(e,t,s,a,n){var r,o=1,i=e.length,l=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;o=2,i/=2,l/=2,s/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(n){var c=-1;for(r=s;r<i;r++)if(u(e,r)===u(t,-1===c?0:r-c)){if(-1===c&&(c=r),r-c+1===l)return c*o}else-1!==c&&(r-=r-c),c=-1}else for(s+l>i&&(s=i-l),r=s;r>=0;r--){for(var d=!0,f=0;f<l;f++)if(u(e,r+f)!==u(t,f)){d=!1;break}if(d)return r}return-1}function _(e,t,s,a){s=Number(s)||0;var n=e.length-s;a?(a=Number(a))>n&&(a=n):a=n;var r=t.length;a>r/2&&(a=r/2);for(var o=0;o<a;++o){var i=parseInt(t.substr(2*o,2),16);if(B(i))return o;e[s+o]=i}return o}function S(e,t,s,a){return V(P(t,e.length-s),e,s,a)}function v(e,t,s,a){return V(function(e){for(var t=[],s=0;s<e.length;++s)t.push(255&e.charCodeAt(s));return t}(t),e,s,a)}function E(e,t,s,a){return V(U(t),e,s,a)}function R(e,t,s,a){return V(function(e,t){for(var s,a,n,r=[],o=0;o<e.length&&!((t-=2)<0);++o)a=(s=e.charCodeAt(o))>>8,n=s%256,r.push(n),r.push(a);return r}(t,e.length-s),e,s,a)}function $(e,t,s){return 0===t&&s===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,s))}function T(e,t,s){s=Math.min(e.length,s);for(var a=[],n=t;n<s;){var r,o,i,l,u=e[n],c=null,d=u>239?4:u>223?3:u>191?2:1;if(n+d<=s)switch(d){case 1:u<128&&(c=u);break;case 2:128==(192&(r=e[n+1]))&&(l=(31&u)<<6|63&r)>127&&(c=l);break;case 3:r=e[n+1],o=e[n+2],128==(192&r)&&128==(192&o)&&(l=(15&u)<<12|(63&r)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:r=e[n+1],o=e[n+2],i=e[n+3],128==(192&r)&&128==(192&o)&&128==(192&i)&&(l=(15&u)<<18|(63&r)<<12|(63&o)<<6|63&i)>65535&&l<1114112&&(c=l)}null===c?(c=65533,d=1):c>65535&&(c-=65536,a.push(c>>>10&1023|55296),c=56320|1023&c),a.push(c),n+=d}return function(e){var t=e.length;if(t<=N)return String.fromCharCode.apply(String,e);for(var s="",a=0;a<t;)s+=String.fromCharCode.apply(String,e.slice(a,a+=N));return s}(a)}l.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),l.poolSize=8192,l.from=function(e,t,s){return u(e,t,s)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,s){return function(e,t,s){return c(e),e<=0?i(e):void 0!==t?"string"==typeof s?i(e).fill(t,s):i(e).fill(t):i(e)}(e,t,s)},l.allocUnsafe=function(e){return d(e)},l.allocUnsafeSlow=function(e){return d(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(q(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),q(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var s=e.length,a=t.length,n=0,r=Math.min(s,a);n<r;++n)if(e[n]!==t[n]){s=e[n],a=t[n];break}return s<a?-1:a<s?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var s;if(void 0===t)for(t=0,s=0;s<e.length;++s)t+=e[s].length;var a=l.allocUnsafe(t),n=0;for(s=0;s<e.length;++s){var r=e[s];if(q(r,Uint8Array))n+r.length>a.length?l.from(r).copy(a,n):Uint8Array.prototype.set.call(a,r,n);else{if(!l.isBuffer(r))throw new TypeError('"list" argument must be an Array of Buffers');r.copy(a,n)}n+=r.length}return a},l.byteLength=y,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)g(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},l.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?T(this,0,e):h.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",s=t.IS;return e=this.toString("hex",0,s).replace(/(.{2})/g,"$1 ").trim(),this.length>s&&(e+=" ... "),"<Buffer "+e+">"},r&&(l.prototype[r]=l.prototype.inspect),l.prototype.compare=function(e,t,s,a,n){if(q(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===s&&(s=e?e.length:0),void 0===a&&(a=0),void 0===n&&(n=this.length),t<0||s>e.length||a<0||n>this.length)throw new RangeError("out of range index");if(a>=n&&t>=s)return 0;if(a>=n)return-1;if(t>=s)return 1;if(this===e)return 0;for(var r=(n>>>=0)-(a>>>=0),o=(s>>>=0)-(t>>>=0),i=Math.min(r,o),u=this.slice(a,n),c=e.slice(t,s),d=0;d<i;++d)if(u[d]!==c[d]){r=u[d],o=c[d];break}return r<o?-1:o<r?1:0},l.prototype.includes=function(e,t,s){return-1!==this.indexOf(e,t,s)},l.prototype.indexOf=function(e,t,s){return b(this,e,t,s,!0)},l.prototype.lastIndexOf=function(e,t,s){return b(this,e,t,s,!1)},l.prototype.write=function(e,t,s,a){if(void 0===t)a="utf8",s=this.length,t=0;else if(void 0===s&&"string"==typeof t)a=t,s=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(s)?(s>>>=0,void 0===a&&(a="utf8")):(a=s,s=void 0)}var n=this.length-t;if((void 0===s||s>n)&&(s=n),e.length>0&&(s<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var r=!1;;)switch(a){case"hex":return _(this,e,t,s);case"utf8":case"utf-8":return S(this,e,t,s);case"ascii":case"latin1":case"binary":return v(this,e,t,s);case"base64":return E(this,e,t,s);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,t,s);default:if(r)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),r=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var N=4096;function O(e,t,s){var a="";s=Math.min(e.length,s);for(var n=t;n<s;++n)a+=String.fromCharCode(127&e[n]);return a}function A(e,t,s){var a="";s=Math.min(e.length,s);for(var n=t;n<s;++n)a+=String.fromCharCode(e[n]);return a}function C(e,t,s){var a=e.length;(!t||t<0)&&(t=0),(!s||s<0||s>a)&&(s=a);for(var n="",r=t;r<s;++r)n+=L[e[r]];return n}function D(e,t,s){for(var a=e.slice(t,s),n="",r=0;r<a.length-1;r+=2)n+=String.fromCharCode(a[r]+256*a[r+1]);return n}function j(e,t,s){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>s)throw new RangeError("Trying to access beyond buffer length")}function I(e,t,s,a,n,r){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||t<r)throw new RangeError('"value" argument is out of bounds');if(s+a>e.length)throw new RangeError("Index out of range")}function x(e,t,s,a,n,r){if(s+a>e.length)throw new RangeError("Index out of range");if(s<0)throw new RangeError("Index out of range")}function F(e,t,s,a,r){return t=+t,s>>>=0,r||x(e,0,s,4),n.write(e,t,s,a,23,4),s+4}function M(e,t,s,a,r){return t=+t,s>>>=0,r||x(e,0,s,8),n.write(e,t,s,a,52,8),s+8}l.prototype.slice=function(e,t){var s=this.length;(e=~~e)<0?(e+=s)<0&&(e=0):e>s&&(e=s),(t=void 0===t?s:~~t)<0?(t+=s)<0&&(t=0):t>s&&(t=s),t<e&&(t=e);var a=this.subarray(e,t);return Object.setPrototypeOf(a,l.prototype),a},l.prototype.readUintLE=l.prototype.readUIntLE=function(e,t,s){e>>>=0,t>>>=0,s||j(e,t,this.length);for(var a=this[e],n=1,r=0;++r<t&&(n*=256);)a+=this[e+r]*n;return a},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,s){e>>>=0,t>>>=0,s||j(e,t,this.length);for(var a=this[e+--t],n=1;t>0&&(n*=256);)a+=this[e+--t]*n;return a},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,s){e>>>=0,t>>>=0,s||j(e,t,this.length);for(var a=this[e],n=1,r=0;++r<t&&(n*=256);)a+=this[e+r]*n;return a>=(n*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readIntBE=function(e,t,s){e>>>=0,t>>>=0,s||j(e,t,this.length);for(var a=t,n=1,r=this[e+--a];a>0&&(n*=256);)r+=this[e+--a]*n;return r>=(n*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var s=this[e]|this[e+1]<<8;return 32768&s?4294901760|s:s},l.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var s=this[e+1]|this[e]<<8;return 32768&s?4294901760|s:s},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),n.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),n.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),n.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),n.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,s,a){e=+e,t>>>=0,s>>>=0,a||I(this,e,t,s,Math.pow(2,8*s)-1,0);var n=1,r=0;for(this[t]=255&e;++r<s&&(n*=256);)this[t+r]=e/n&255;return t+s},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,s,a){e=+e,t>>>=0,s>>>=0,a||I(this,e,t,s,Math.pow(2,8*s)-1,0);var n=s-1,r=1;for(this[t+n]=255&e;--n>=0&&(r*=256);)this[t+n]=e/r&255;return t+s},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,s,a){if(e=+e,t>>>=0,!a){var n=Math.pow(2,8*s-1);I(this,e,t,s,n-1,-n)}var r=0,o=1,i=0;for(this[t]=255&e;++r<s&&(o*=256);)e<0&&0===i&&0!==this[t+r-1]&&(i=1),this[t+r]=(e/o|0)-i&255;return t+s},l.prototype.writeIntBE=function(e,t,s,a){if(e=+e,t>>>=0,!a){var n=Math.pow(2,8*s-1);I(this,e,t,s,n-1,-n)}var r=s-1,o=1,i=0;for(this[t+r]=255&e;--r>=0&&(o*=256);)e<0&&0===i&&0!==this[t+r+1]&&(i=1),this[t+r]=(e/o|0)-i&255;return t+s},l.prototype.writeInt8=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,s){return e=+e,t>>>=0,s||I(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,s){return F(this,e,t,!0,s)},l.prototype.writeFloatBE=function(e,t,s){return F(this,e,t,!1,s)},l.prototype.writeDoubleLE=function(e,t,s){return M(this,e,t,!0,s)},l.prototype.writeDoubleBE=function(e,t,s){return M(this,e,t,!1,s)},l.prototype.copy=function(e,t,s,a){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(s||(s=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a<s&&(a=s),a===s)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(s<0||s>=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t<a-s&&(a=e.length-t+s);var n=a-s;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,s,a):Uint8Array.prototype.set.call(e,this.subarray(s,a),t),n},l.prototype.fill=function(e,t,s,a){if("string"==typeof e){if("string"==typeof t?(a=t,t=0,s=this.length):"string"==typeof s&&(a=s,s=this.length),void 0!==a&&"string"!=typeof a)throw new TypeError("encoding must be a string");if("string"==typeof a&&!l.isEncoding(a))throw new TypeError("Unknown encoding: "+a);if(1===e.length){var n=e.charCodeAt(0);("utf8"===a&&n<128||"latin1"===a)&&(e=n)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<s)throw new RangeError("Out of range index");if(s<=t)return this;var r;if(t>>>=0,s=void 0===s?this.length:s>>>0,e||(e=0),"number"==typeof e)for(r=t;r<s;++r)this[r]=e;else{var o=l.isBuffer(e)?e:l.from(e,a),i=o.length;if(0===i)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(r=0;r<s-t;++r)this[r+t]=o[r%i]}return this};var k=/[^+/0-9A-Za-z-_]/g;function P(e,t){var s;t=t||1/0;for(var a=e.length,n=null,r=[],o=0;o<a;++o){if((s=e.charCodeAt(o))>55295&&s<57344){if(!n){if(s>56319){(t-=3)>-1&&r.push(239,191,189);continue}if(o+1===a){(t-=3)>-1&&r.push(239,191,189);continue}n=s;continue}if(s<56320){(t-=3)>-1&&r.push(239,191,189),n=s;continue}s=65536+(n-55296<<10|s-56320)}else n&&(t-=3)>-1&&r.push(239,191,189);if(n=null,s<128){if((t-=1)<0)break;r.push(s)}else if(s<2048){if((t-=2)<0)break;r.push(s>>6|192,63&s|128)}else if(s<65536){if((t-=3)<0)break;r.push(s>>12|224,s>>6&63|128,63&s|128)}else{if(!(s<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;r.push(s>>18|240,s>>12&63|128,s>>6&63|128,63&s|128)}}return r}function U(e){return a.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(k,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,s,a){for(var n=0;n<a&&!(n+s>=t.length||n>=e.length);++n)t[n+s]=e[n];return n}function q(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function B(e){return e!=e}var L=function(){for(var e="0123456789abcdef",t=new Array(256),s=0;s<16;++s)for(var a=16*s,n=0;n<16;++n)t[a+n]=e[s]+e[n];return t}()},8356:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(4716)),r=s(9031),o=s(7138),i=a(s(2282)),l=a(s(5788)),u=a(s(9896)),c=a(s(7636)),d=a(s(6357)),f=a(s(2555)),m=a(s(3830)),p=s(9031);function y(e,t,s){let a=0;for(const n of e)n.lvl=t,n.hasSub?n.childrenCount=y(n.children,t+1,s):n.childrenCount=!0===s.hideDetails?0:n.children.length,a+=n.childrenCount+1;return a}function h(e,t){for(const s of e)s._index=t++,s._vIndex=s._index,s.children?.length>0&&(t=h(s.children,t));return t}function g(e,t,s){for(const a of e)if(!0===a.hasSub)s=g(a.children,t,s);else for(const e of a.children)e[t.name]=s,s++;return s}function b(e,t,s,a){const n=e.rowGroups[t],r=R(s,n);let o=0;for(let i of r){const r=$(s,n,i),l={isGroup:!0,expanded:!0,hasSub:e.rowGroups.length-1>t,lvl:t,groups:[{value:i,...n}],totals:[],children:[],childrenCount:0};e.rowGroups.length-1===t?(l.children=r,l.childrenCount=!0===e.hideDetails?0:r.length):l.childrenCount=b(e,t+1,r,l.children),a.push(l),o+=l.childrenCount+1}return o}function w(e,t){if(0===e.length)return;if(!e[0].isGroup)return;const s=e[0].lvl;if(s<t)for(const s of e){const e=w(s.children,t);e&&(s.children=e)}else if(s===t){const t=[];for(const a of e){const e=[...a.groups];for(const n of a.children){const a=e.concat(n.groups);t.push({...n,groups:a,lvl:s})}}return t}}function _(e){if(Array.isArray(e))for(let t=e.length-1;t>=0;t--){const s=e[t];_(s.children);const a=s.totals?.filter(e=>0!==e.value);0===a?.length&&(0===s.children?.length&&s.childrenCount>0||0===s.childrenCount)&&e.splice(t,1)}}function S(e,t,s=null){let a=0;if(!0===e.hasSub){const n=[];e.children.map(e=>{n.push(S(e,t,s))}),a=E(n,t.expression)}else a=v(e.children,t,s);return s?e.totals.push({...t,value:a,group:s.value}):e.totals.push({...t,value:a}),a}function v(e,t,s=null){let a,n=0,r=0,o=[];switch(o=s?e.filter(e=>"object"===s.valueType?e[s.name].id===s.value.id:e[s.name]===s.value):e,t.expression){case"sum":o.map(e=>{r+=1*e[t.name]}),r=f.default.normalizeFloat(r,6);break;case"average":o.map(e=>{n+=1*e[t.name]}),r+=n/o.length,r=f.default.normalizeFloat(r,6);break;case"max":if(o.length>0){a=1*o[0][t.name];for(let e=1;e<o?.length;e++)a<=1*o[e][t.name]&&(a=1*o[e][t.name]);r<=a&&(r=a)}break;case"min":if(o.length>0){a=o[0][t.name];for(let e=1;e<o?.length;e++)a>=o[e][t.name]&&(a=o[e][t.name]);r=a}}return r}function E(e,t){let s=0;switch(t){case"sum":s=e.reduce((e,t)=>e+t,0),s=f.default.normalizeFloat(s,6);break;case"average":s=e.reduce((e,t)=>e+t,0)/e.length,s=f.default.normalizeFloat(s,6);break;case"max":s=Math.max(...e);break;case"min":s=Math.min(...e)}return s}function R(e,t){let s=[];if("object"===t.valueType){const a=new Set;for(const n of e)a.has(n[t.name].id)||(a.add(n[t.name].id),s.push(n[t.name]))}else s=[...new Set(e.map(e=>e[t.name]))];return s}function $(e,t,s){return e.filter(e=>"object"===t.valueType?e[t.name].id===s.id:e[t.name]===s)}function T(e){for(const t of e)t.hasSub?T(t.children):t.children=[]}function N(e,t){return e.lastIndexOf("WHERE")>e.lastIndexOf("FROM")?O(t,!0):"\nWHERE "+O(t)}function O(e,t=!1){const s=e.join("");return t?s:s.substring(5)}t.default={async getSettings(e,t,s){const a=e.params.id;if(!a||"string"!=typeof a||36!==a.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(a,{attributes:{exclude:["dataQuery"]}}).then(e=>{e?t.status(o.StatusCodes.OK).send(e):(i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`}))}).catch(e=>{i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async getResult(e,t,s){let a={...e.body};if(!a.id||"string"!=typeof a.id||36!==a.id.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(a.id).then(async s=>{if(s){let o;a.query=s.dataQuery,a.externalData=s.externalData,a.externalUsername=s.externalUsername,a.externalPassword=s.externalPassword,a.externalServer=s.externalServer,a.externalPort=s.externalPort,a.externalDatabase=s.externalDatabase,a.externalDialect=s.externalDialect,a.externalDateKind=s.externalDateKind,a.externalDateFormat=s.externalDateFormat,a.fields=function(e){let t=[];for(const s of e)s.isGroup?t=t.concat(s.fields):t.push(s);return t}(a.fields),function(e){if(e.sqlFilters=[],e.sqlReplacements={},"without"!==e.period.type){let t,s,a;"date"===e.period.type?(t=new Date(e.period.date).setHours(0,0,0,0),s=new Date(e.period.date).setHours(23,59,59,999),a=new Date(e.period.date),e.externalData&&"default"===e.externalDateKind?e.sqlReplacements.date=new Date(a).toLocaleDateString():e.sqlReplacements.date=new Date(a).toISOString()):"dateTime"===e.period.dateType?(t=new Date(e.period.dateFrom),s=new Date(e.period.dateTo)):(t=new Date(e.period.dateFrom).setHours(0,0,0,0),s=new Date(e.period.dateTo).setHours(23,59,59,999)),e.externalData&&"default"===e.externalDateKind?(e.sqlReplacements.dateFrom=new Date(t).toLocaleDateString(),e.sqlReplacements.dateTo=new Date(s).toLocaleDateString()):(e.sqlReplacements.dateFrom=new Date(t).toISOString(),e.sqlReplacements.dateTo=new Date(s).toISOString())}let t="";const s=e.filters;for(let a of s){let s=a.path;if("filled"===a.operator)t=`${s} IS NOT NULL`;else if("notFilled"===a.operator)t=`${s} IS NULL`;else if("object"===a.valueType)if("inList"===a.operator||"notInList"===a.operator){let e=[];for(let t of a.value)e.push(`'${t.id}'`);t=`${s} ${"inList"===a.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=a.value?`${s} ${a.operator} '${a.value.id}'`:`${s} IS NULL`;else if("enum"===a.valueType)if("inList"===a.operator||"notInList"===a.operator){let e=[];for(let t of a.value)e.push(`'${t}'`);t=`${s} ${"inList"===a.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=`${s} ${a.operator} '${a.value}'`;else if("text"===a.valueType)t="iLike"===a.operator?`${s} LIKE '%${a.value}%'`:"notILike"===a.operator?`${s} NOT LIKE '%${a.value}%'`:s+a.operator+"'"+a.value+"'";else if("date"===a.valueType)if("between"===a.operator){if(a.value?.[0]&&a.value?.[1]){let e="",r="";if("dateTime"===a.dateType)e=(0,n.default)(a.value[0],"DD.MM.YYYY HH:mm:ss").toISOString(),r=(0,n.default)(a.value[1],"DD.MM.YYYY HH:mm:ss").toISOString();else{const t=(0,n.default)(a.value[0],"DD.MM.YYYY").toDate(),s=(0,n.default)(a.value[1],"DD.MM.YYYY").toDate();e=(0,n.default)(t.setHours(0,0,0,0)).toISOString(),r=(0,n.default)(s.setHours(23,59,59,999)).toISOString()}t=`${s} ${a.operator} '${e}' and '${r}'`}}else t="dateTime"===a.dateType?`${s} ${a.operator} '${(0,n.default)(a.value,"DD.MM.YYYY HH:mm:ss").toISOString()}'`:`${s} ${a.operator} '${(0,n.default)(a.value,"DD.MM.YYYY").toISOString()}'`;else if("number"===a.valueType&&"between"===a.operator){if(a.value?.[0]&&a.value?.[1]){let e=a.value[0],n=a.value[1];t=`${s} ${a.operator} '${e}' and '${n}'`}}else t=s+a.operator+a.value;e.sqlFilters.push(" AND "+t)}}(a);const c=`reports/${s.name}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;u.default.existsSync(d)&&(o=require(d));let f=[];f=o?.onComposeResult&&"function"==typeof o?.onComposeResult?await o.onComposeResult(e,s,a):await async function(e,t,s){await async function(e,t){const s=await(0,m.default)(e);let a=t.query.match(/\{([^}]+)\}/g);if(a){let e,n=a.map(e=>e.slice(1,-1));for(const a of n){const n=s.find(e=>e.name===a);n&&(t.query=t.query.replace(`{${a}}`,a),e=e?`${e}, ${a} as (${n.query})`:`with ${a} as (${n.query})`,n.params&&(t.sqlReplacements=Object.assign(t.sqlReplacements,n.params)))}e&&(t.query=`${e} ${t.query}`)}}(e,t);const a=t.query.lastIndexOf("ORDER BY"),n=t.query.lastIndexOf("GROUP BY"),o=t.query.lastIndexOf("HAVING"),i=t.query.lastIndexOf("FROM");let u=t.query.length,c=!1,d=[{name:"ORDER BY",index:a},{name:"HAVING",index:o},{name:"GROUP BY",index:n}];if(d=d.filter(e=>e.index>i),d.length>0&&(c=!0,u=Math.min(...d.map(e=>e.index))),t.sqlFilters.length>0&&(t.query=c?function(e,t,s){const a=e.substring(0,s),n=e.substring(s);return`${a} ${N(e,t)} \n${n}`}(t.query,t.sqlFilters,u):t.query+N(t.query,t.sqlFilters)),s?.beforeQuery&&"function"==typeof s?.beforeQuery&&await s.beforeQuery(e,t),!0===t.externalData){const e={userName:t.externalUsername,password:t.externalPassword,host:t.externalServer,port:Number(t.externalPort),database:t.externalDatabase,dialect:t.externalDialect,pool:{max:5,min:0,acquire:3e4,idle:1e4}},s=new p.Sequelize(e.database,e.userName,e.password,{host:e.host,port:e.port,dialect:e.dialect,pool:{max:e.pool.max,min:e.pool.min,acquire:e.pool.acquire,idle:e.pool.idle}});return await s.query(t.query,{type:r.QueryTypes.SELECT,replacements:t.sqlReplacements})}return await l.default.query(t.query,{type:r.QueryTypes.SELECT,replacements:t.sqlReplacements})}(e,a,o);let $=await async function(e,t){let s=[],a=0;for(const r of e){a+=1;const e={};for(const s of t)if(!0===s.rowNumber)e[s.name]=a;else if("date"===s.valueType){let t="DD.MM.YYYY HH:mm:ss";"date"===s.dateType&&(t="DD.MM.YYYY"),s.format&&""!==s.format&&(t=s.format),e[s.name]=r[s.name]?(0,n.default)(r[s.name]).format(t):""}else if("number"===s.valueType){let t=r[s.name];if(t&&s.format&&""!==s.format)try{const a=JSON.parse(s.format);a.NFD&&(t=Number(t),t=t.toFixed(a.NFD)),e[s.name]=t}catch(t){e[s.name]="0",i.default.error("Error in Reports getResult controller",{meta:t})}else e[s.name]=t}else if("object"===s.valueType)if(s.attribs){e[s.name]={};for(const t of s.attribs)e[s.name][t.name]=r[t.path]}else e[s.name]={id:void 0,name:void 0};else e[s.name]=r[s.name];s.push(e)}return s}(f,a.fields),O=$.length;a.sorts?.length>0&&function(e,t,s){e.sort((e,a)=>{for(const r of t){let t,o;"object"===r.valueType?(t=e[r.name]?.name||"",o=a[r.name]?.name||""):(t=e[r.name]||"",o=a[r.name]||"");let i=0;if("date"===r.valueType)if(s.externalData&&"default"===s.externalDateKind&&s.externalDateFormat&&s.externalDateFormat.length>0){const e=(0,n.default)(t,s.externalDateFormat).toDate(),a=(0,n.default)(o,s.externalDateFormat).toDate();i=e.getTime()-a.getTime()}else{const e=new Date(t),s=new Date(o);i=e.getTime()-s.getTime()}else"number"==typeof t&&"number"==typeof o?i=t-o:"string"==typeof t&&"string"==typeof o&&(i=t.localeCompare(o));if(0!==i)return"asc"===r.direction?i:-1*i}return 0})}($,a.sorts,a),a.cols=[],a.colGroups?.length>0&&(a.cols=R($,a.colGroups[0]));let A=!1;a.rowGroups?.length>0?($.length>a.maxLimit&&($=[],A=!0),$=function(e,t){let s=[];b(t,0,e,s);let a=!1;for(let e=t.rowGroups.length-1;e>0;e--)if(t.rowGroups[e].withParent){const t=w(s,e-1);t&&(s=t),a=!0}return a&&y(s,0,t),function(e,t){if(0!==e.calcs.length){if(e.colGroups.length>0){const s=e.colGroups[0];for(const a of e.cols)for(const n of e.calcs)for(const e of t)S(e,n,{name:s.name,valueType:s.valueType,value:a})}else for(const s of e.calcs)for(const e of t)S(e,s);_(t)}}(t,s),s}($,a),function(e,t){const s=e.filter(e=>!0===e.rowNumber);for(const e of s){let s=1;for(const a of t)if(!0===a.hasSub)s=g(a.children,e,s);else for(const t of a.children)t[e.name]=s,s++}}(a.fields,$),O=h($,1)):function(e,t,s=1){const a=e.filter(e=>!0===e.rowNumber);for(const e of a)for(const a of t)a[e.name]=s,s++}(a.fields,$);const C=[];!0===a.showYTotal&&function(e,t,s){if(0!==e.calcs?.length)if(e.colGroups?.length>0){const a=e.colGroups[0].valueType;for(const n of e.cols)for(const r of e.calcs){const e=[];for(const s of t){let t=s.totals.find(e=>e.name===r.name&&("object"===a?e.group.id===n.id:e.group===n));t&&e.push(t.value)}const o=E(e,r.expression);s.push({...r,value:o,group:n})}}else for(const a of e.calcs)if(e.rowGroups?.length>0){const e=[];for(const s of t){const t=s.totals.find(e=>e.name===a.name);t&&e.push(t.value)}const n=E(e,a.expression);s.push({...a,value:n})}else{const e=v(t,a);s.push({...a,value:e})}}(a,$,C),a.rowGroups?.length>0&&a.hideDetails&&(T($),O=h($,1)),0===a.rowGroups?.length&&a.limit&&a.page&&($=function(e,t,s){const a=(s-1)*t,n=a+t;return e.slice(a,n)}($,a.limit,a.page));let D={resultData:$,cols:a.cols,totals:C,total:O-1,limitError:A};D?t.status(200).send(D):(console.error("Bad request"),t.status(400).send({message:"Bad request"}))}else i.default.error("Error in reports getResult controller",{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`})}).catch(e=>{i.default.error("Error in reports getResult controller",{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async generateExcel(e,t){c.default.generateExcel(e,t)},async generatePdf(e,t){d.default.generatePdf(e,t)}}},8403:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(6980)),r=s(7138),o=a(s(2282)),i=a(s(829)),l=a(s(5486)),u=s(3903),c=a(s(1572)),d=a(s(5788)),f=a(s(8473)),m=a(s(6836)),p=a(s(7099)),y=process.env.TWO_FA_SECRET||"TWO_FA_TEMP_SECRET_KEY";async function h(e){const t=Math.floor(9e5*Math.random())+1e5,s=await d.default.models.AuthenticationCode.findAll({where:{userId:e}});if(s.length>0){const a=s[0],n=new Date(a.getDataValue("period")),r=new Date(n.getTime()+9e5);new Date>=n&&new Date<=r?await a.update({authCode:String(t),period:new Date}):(await a.destroy(),await d.default.models.AuthenticationCode.create({id:(0,u.v4)(),userId:e,authCode:String(t),period:new Date}))}else await d.default.models.AuthenticationCode.create({id:(0,u.v4)(),userId:e,authCode:String(t),period:new Date});return t}async function g(e){const t=await h(e),s=await d.default.models.User.findByPk(e);if(!s||!s.phone)throw new Error("User phone number not found");const a=`Your verification code is: ${t}. This code will expire in 15 minutes.`;await p.default.sendSms(s.phone,a,!0)}async function b(e){const t=await h(e),s=await d.default.models.User.findByPk(e);if(!s||!s.email)throw new Error("User email not found");const a=await d.default.models.EmailAccount.findAll({where:{isActive:!0,forSend:!0,isService:!0}});if(!a||0===a.length)throw new Error("No service email account configured");const n=a[0];if(!n.password)throw new Error("Email account password not configured");const r=m.default.decrypt(JSON.parse(n.password)),o={host:n.smtpHost,port:n.smtpPort,secure:n.smtpTls,auth:{user:n.user,pass:r},tls:{rejectUnauthorized:n.smtpTls}},i=c.default.createTransport(o),l={from:n.name,to:s.email,subject:"Verification code",html:`<p>Your verification code is: <strong>${t}</strong></p><p>This code will expire in 15 minutes.</p>`};await i.sendMail(l)}t.default={async login(e,t,s){let a=e.session.passport;const n=await f.default.getLicense(e.sessionID);e.session.regenerate(s=>{e.session.passport=a,e.session.license=n,e.session.clientType=e.body?.clientType||null,e.session.save(s=>{const a=i.default.sign({id:e.user.id},"RGPRIVATEKEY",{expiresIn:"360h"}),o={isAuthenticated:!0,result:a,token:a,id:e.user.id,email:e.user.email,login:e.user.login,fullRights:e.user.fullRights,use2FA:e.user.use2FA,useCustomerAccess:e.user.useCustomerAccess,name:e.user.name,externalUser:e.user.externalUser,language:e.user.language,forwarderId:e.user.forwarderId,tokenElectron:e.user.tokenElectron,license:n};t.status(r.StatusCodes.OK).send(o)})})},async session(e,t,s){const a={isAuthenticated:!1};if(e.session.passport?.user)try{const s=await d.default.models.User.findOne({where:{id:e.session.passport.user}});s?(a.isAuthenticated=!0,a.id=s.id,a.name=s.name,a.login=s.login,a.fullRights=s.fullRights,a.use2FA=s.use2FA,a.useCustomerAccess=s.useCustomerAccess,a.externalUser=s.externalUser,a.email=s.email,a.language=s.language,a.license=e.session.license,a.forwarderId=s.forwarderId,t.status(r.StatusCodes.OK).send({result:a,message:"OK"})):t.status(r.StatusCodes.UNAUTHORIZED).send({result:a,message:"Authentication failed"})}catch(e){t.status(r.StatusCodes.UNAUTHORIZED).send({result:a,message:"Authentication failed"})}else t.status(r.StatusCodes.UNAUTHORIZED).send({result:a,message:"Authentication failed"})},async logout(e,t,s){if(e.logout(function(e){if(e)return s(e)}),!e.session)return e.isUnauthenticated()?void t.status(r.StatusCodes.OK).send("Logged out successfully"):void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not log out");e.logout(e=>{e?t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not clear out session info completely"):t.status(r.StatusCodes.OK).send("Logged out successfully")})},async register(e,t,s){try{const s=await n.default.register(e.body);return void t.status(s.httpStatus).send(s.result)}catch(e){return o.default.error("Error in register Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async confirmEmailAddress(e,t,s){try{const s=await n.default.confirmEmailAddress(e.params.token);return void t.status(s.httpStatus).send(s.result)}catch(e){return o.default.error("Error in confirmEmailAddress Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resendEmailAddressConfirmationLink(e,t,s){try{const s=await n.default.resendEmailAddressConfirmationLink(e.query.email);return void t.status(s.httpStatus).send(s.result)}catch(e){return o.default.error("Error in resendEmailAddressConfirmationLink Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async forgotPassword(e,t,s){try{const s=e.headers.origin||e.headers.referer||process.env.DEFAULT_CLIENT_URL,a=await n.default.forgotPassword(e.body.email,s);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in forgotPassword Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async validatePasswordResetToken(e,t,s){try{const s=await n.default.isPasswordResetTokenValid(e.params.token);return void t.status(s.httpStatus).send(s.result)}catch(e){return o.default.error("Error in validatePasswordResetToken Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resetPassword(e,t,s){const{token:a,newPassword:i}=e.body;if(a&&i)try{const s=await n.default.resetPassword(e.body.token,e.body.newPassword);return void t.status(s.httpStatus).send(s.result)}catch(e){return o.default.error("Error in resetPassword Controller",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(r.StatusCodes.BAD_REQUEST).send({message:"Token and new password are required"})},async preLogin(e,t,s){try{const{email:s,password:a,clientType:n,clientVersion:u}=e.body;if(!s||!a)return void t.status(r.StatusCodes.BAD_REQUEST).send({message:"Email and password are required"});const c=await d.default.models.User.findOne({where:{login:s,isActive:!0}});if(!c)return o.default.error("Pre-login: User not found or not active",s),void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid credentials"});if(!l.default.compareSync(a,c.password))return o.default.error("Pre-login: Invalid password",s),void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid credentials"});const f=c.use2FA,m=c.use2FAEmail;if(f||m){const e=m?"email":"sms",s=i.default.sign({id:c.id,purpose:"2fa_pending",twoFAMethod:e},y,{expiresIn:"15m"});try{"sms"===e?await g(c.id):await b(c.id)}catch(e){return o.default.error("Pre-login: Failed to send 2FA code",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Failed to send verification code"})}return void t.status(r.StatusCodes.OK).send({use2FA:!0,twoFAMethod:e,tempToken:s,userId:c.id,language:c.language})}t.status(r.StatusCodes.OK).send({use2FA:!1,userId:c.id,language:c.language})}catch(e){o.default.error("Error in preLogin controller",{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Internal server error"})}},async verify2FA(e,t,s){try{const{tempToken:s,authCode:a,remember:n,clientType:l,clientVersion:u}=e.body;if(!s||!a)return void t.status(r.StatusCodes.BAD_REQUEST).send({message:"Token and auth code are required"});let c;try{if(c=i.default.verify(s,y),"2fa_pending"!==c.purpose)return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid token"})}catch(e){return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Token expired or invalid"})}const m=c.id,p=await d.default.models.AuthenticationCode.findOne({where:{userId:m,authCode:String(a)}});if(!p)return void t.status(r.StatusCodes.BAD_REQUEST).send({result:"noSuchCode",message:"Invalid verification code"});const h=new Date(p.getDataValue("period")),g=new Date(h.getTime()+9e5);if(new Date<h||new Date>g)return void t.status(r.StatusCodes.BAD_REQUEST).send({result:"outOfDate",message:"Verification code expired"});await p.destroy();const b=await d.default.models.User.findByPk(m);if(!b||!b.isActive)return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"User not found or inactive"});e.login(b,s=>{if(s)return o.default.error("Error in verify2FA: req.login failed",{meta:s}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Login error"});const a=e.session.passport;e.session.regenerate(async s=>{if(s)return o.default.error("Error in verify2FA: session regenerate failed",{meta:s}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Session error"});e.session.passport=a,e.session.clientType=l||null;const n=await f.default.getLicense(e.sessionID);e.session.license=n,e.session.save(e=>{if(e)return o.default.error("Error in verify2FA: session save failed",{meta:e}),void t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Session save error"});const s=i.default.sign({id:b.id},"RGPRIVATEKEY",{expiresIn:"360h"}),a={isAuthenticated:!0,result:s,token:s,id:b.id,email:b.email,login:b.login,fullRights:b.fullRights,use2FA:b.use2FA,useCustomerAccess:b.useCustomerAccess,name:b.name,externalUser:b.externalUser,language:b.language,forwarderId:b.forwarderId,tokenElectron:b.tokenElectron,license:n};t.status(r.StatusCodes.OK).send(a)})})})}catch(e){o.default.error("Error in verify2FA controller",{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Internal server error"})}},async resend2FA(e,t,s){try{const{tempToken:s}=e.body;if(!s)return void t.status(r.StatusCodes.BAD_REQUEST).send({message:"Token is required"});let a;try{if(a=i.default.verify(s,y),"2fa_pending"!==a.purpose)return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Invalid token"})}catch(e){return void t.status(r.StatusCodes.UNAUTHORIZED).send({message:"Token expired or invalid"})}"sms"===(a.twoFAMethod||"sms")?await g(a.id):await b(a.id),t.status(r.StatusCodes.OK).send({message:"Code sent successfully"})}catch(e){o.default.error("Error in resend2FA controller",{meta:e}),t.status(r.StatusCodes.INTERNAL_SERVER_ERROR).send({message:"Failed to send verification code"})}}}},8461:e=>{e.exports=require("multer")},8473:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(5788)),r=s(9031);t.default={async getLicense(e){const t=process.env.LIC_NUMBER,s=process.env.LIC_COUNT,a={active:!1,number:"none"};if(!t||!s)return a;const o=await n.default.query('SELECT COUNT(id) as auth_users FROM session WHERE sid != :sessionID AND "licNumber" IS NOT NULL',{type:r.QueryTypes.SELECT,replacements:{sessionID:e}});let i=0;return o.length>0&&(i=o[0].auth_users),i>=Number(s)?a.number=null:(a.active=!0,a.number=t),a}}},8577:e=>{e.exports=require("cors")},8608:e=>{e.exports=require("exceljs")},8876:e=>{e.exports=require("ieee754")},8894:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(9031),r=a(s(5788));t.default={async getUserExecutorRoles(e){let t=await r.default.models.TaskExecutor.findAll({where:{executorId:e},attributes:["parentId"]}).catch(e=>(console.error(e),[]));return t?(t=JSON.parse(JSON.stringify(t)),t):[]},async getVendorsAndCustomersFilter(e){let t=[];if(e){const s=await r.default.models.VendorsAndCustomer.findAll({where:{counterpartyId:{[n.Op.in]:e}}});if(s)for(let e of s)t.push(e.id)}return t},async getCustomerFilter(e){let t=[],s=!1;if(e.user){s=!0!==e.user.useCustomerAccess;const a=e.user.id,n=await r.default.models.UserCustomer.findAll({where:{parentId:a}});if(n)for(let e of n)t.push(e.customerId)}return{fullAccess:s,counterparties:t}},async getForwarderFilter(e){let t,s=!1;if(e.user){s=!0!==e.user.externalUser;try{const s=e.user.forwarderId;if(s){const e=await r.default.models.VendorsAndCustomer.findAll({where:{id:s}});t=e[0]?.dataValues?.id}}catch(e){console.error("Forwarder lookup failed:",e)}}return{fullAccess:s,forwarder:t}},async getRoleGroups(e){let t=[];if(e.user&&!0!==e.user.fullRights){const s=e.user.id;t=(await r.default.models.RoleGroupUser.findAll({where:{userId:s},attributes:["parentId"]})).map(e=>e.parentId)}return t}}},9031:e=>{e.exports=require("sequelize")},9151:function(e,t,s){var a=s(8287).hp,n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(s(6982)),o="aes-256-cbc",i=r.default.scryptSync(process.env.CRYPTO_SECRET_KEY_AUTO_LOGIN||"default-salt","salt",32);t.default={encrypt(e){const t=r.default.randomBytes(16),s=r.default.createCipheriv(o,i,t);let n=s.update(e,"utf8","hex");n+=s.final("hex");const l=JSON.stringify({iv:t.toString("hex"),encryptedData:n});return a.from(l).toString("base64")},decrypt(e){const t=a.from(e,"base64").toString("utf8"),s=JSON.parse(t),n=a.from(s.iv,"hex"),l=r.default.createDecipheriv(o,i,n);let u=l.update(s.encryptedData,"hex","utf8");return u+=l.final("utf8"),JSON.parse(u)}}},9239:e=>{e.exports=require("terser")},9816:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=a(s(8278)),o=a(s(8403)),i=n.default.Router(),l="auth";i.route(`/${l}/login`).post(r.default.authenticate("login"),o.default.login),i.route(`/${l}/session`).get(o.default.session),i.route(`/${l}/logout`).get(o.default.logout),i.route(`/${l}/register`).post(o.default.register),i.route(`/${l}/confirm_email_address/:token`).get(o.default.confirmEmailAddress),i.route(`/${l}/resend_email_address_confirmation_link`).get(o.default.resendEmailAddressConfirmationLink),i.route(`/${l}/forgot_password`).post(o.default.forgotPassword),i.route(`/${l}/validate_password_reset_token/:token`).get(o.default.validatePasswordResetToken),i.route(`/${l}/reset_password`).post(o.default.resetPassword),i.route(`/${l}/pre_login`).post(o.default.preLogin),i.route(`/${l}/verify_2fa`).post(o.default.verify2FA),i.route(`/${l}/resend_2fa`).post(o.default.resend2FA),t.default=i},9876:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.accessLogsController=void 0;const n=a(s(6928)),r=a(s(9896)),o=a(s(4716)),i=a(s(2282)),l=`${process.cwd()}/logs/access`;async function u(e,t){try{const s=r.default.readFileSync(e,"utf8").split(/\r?\n/),a=[];for(const e of s)if(""!==e.trim()){const s=JSON.parse(e);if(t){let e=!0;for(const a in t)if("user"===a){if(s[a]?.id!==t[a]?.id){e=!1;break}}else if(s[a]!==t[a]){e=!1;break}e&&a.push(s)}else a.push(s)}return a}catch(t){throw new Error(`Failed to process file: ${e}. Error: ${t.message}`)}}function c(e,t,s){const a=e.slice();return a.sort((e,a)=>{const n=e[t],r=a[t];if(s){if(n>r)return-1;if(n<r)return 1}else{if(n<r)return-1;if(n>r)return 1}return 0}),a}function d(e,t){if(e&&"object"==typeof e){if(JSON.stringify(e).match(t))return!0}else if(e&&e.toString().replace(/\s/g,"").match(t))return!0;return!1}t.accessLogsController={async getFilesInfo(e,t){try{const s=JSON.parse(e.query.filter||"{}"),a=JSON.parse(e.query.pagination||"{}"),i=JSON.parse(e.query.sort||"{}");if(!s.period)return void t.status(400).send({message:"Period filter is required"});const f=(0,o.default)(s.period[0]).format("YYYYMMDD"),m=(0,o.default)(s.period[1]).format("YYYYMMDD"),p=await async function(e){return new Promise((t,s)=>{r.default.readdir(e,(a,n)=>{if(a)return s(new Error(`Failed to read directory: ${e}`));t(n)})})}(l);if(!p||0===p.length)return void t.status(404).send({message:"No log files found"});const y=function(e,t,s){return e.filter(e=>{const a=e.slice(0,8);return a===t||a===s||a>t&&a<s})}(p,f,m);if(0===y.length)return void t.status(404).send({message:"No log files found for the specified period"});let h=[];for(const e of y){const t=n.default.join(l,e),a=await u(t,s.searchFilter);h.push(...a)}if(s.searchStr&&(h=function(e,t,s){const a=t.replace(/\s/g,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(a,"i");return e.filter(e=>{let t=!1;for(const a of s){const s=a.split(".");if(s.length>1){if(e[s[0]]&&e[s[0]][s[1]]&&d(e[s[0]][s[1]],n)){t=!0;break}}else if(e[a]&&d(e[a],n)){t=!0;break}}return t})}(h,s.searchStr.searchText,s.searchStr.searchColumns)),Array.isArray(i))for(const e of i)e.sortBy&&(h=c(h,e.sortBy,e.sortDesc));else i.sortBy&&(h=c(h,i.sortBy,i.sortDesc));h=function(e,t,s){const a=(s-1)*t,n=a+t,r=e.slice(a,n);return{totalItems:e.length,currentPage:s,data:r}}(h,a.limit,a.page),t.status(200).send(h)}catch(e){i.default.error("Error in accessLogsController.getFilesInfo",{meta:e}),t.status(500).send({message:"Internal server error"})}}}},9880:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(9896)),r=s(9031);async function o(e,t){const s=await e.findAll({attributes:{exclude:["module"]},order:["id"]});i(JSON.parse(JSON.stringify(s)),t)}function i(e,t){const s=JSON.stringify(e,null,4),a=`src/database/initialdata/${t}.json`;n.default.writeFileSync(a,s)}t.default={async updateInitialData(e,t,s={}){const a="src/modules",r=(l=e.tableName,["app_objects","view_settings","report_settings","data_processors","scheduled_jobs","rest_api","workers","components","print_forms","common_modules"].includes(l));var l;if("delete"===s.event&&r)return function(e,t,s){let a;switch(e){case"app_objects":a=`${t.type}s/${t.name}`;break;case"view_settings":a=`${t.appObject.type}s/${t.appObject.name}/views/${t.name}`;break;case"workers":a=`workers/${t.name}`;break;case"report_settings":a=`reports/${t.name}`;break;case"data_processors":a=`dataProcessors/${t.name}`;break;case"scheduled_jobs":a=`scheduledJobs/${t.name}`;break;case"components":a=`components/${t.name}`;break;case"common_commands":a=`commonCommands/${t.name}`;break;case"rest_api":a=`restApi/${t.name}`;break;case"print_forms":a=`${t.appObject.type}s/${t.appObject.name}/printForms/${t.name}`;break;case"common_modules":a=`commonModules/${t.name}.js`}if(a){const e=`${s}/${a}`;n.default.existsSync(e)&&n.default.rmSync(e,{force:!0,recursive:!0})}}(e.tableName,s.oldValue,a),void("common_modules"===e.tableName&&o(e,t));const u=[],c=[];if(e.associations){for(const t in e.associations)if(e.associations[t].isMultiAssociation){if(e.associations[t].options._noTablePart)continue;let s=e.associations[t].target;u.push({model:s,as:t}),c.push([{model:s,as:t},"rowNumber","ASC"])}"view_settings"===e.tableName?(e.associations.appObject&&u.push({model:e.associations.appObject.target,as:"appObject"}),e.associations.worker&&u.push({model:e.associations.worker.target,as:"worker"})):"print_forms"===e.tableName&&e.associations.appObject&&u.push({model:e.associations.appObject.target,as:"appObject"})}const d={};r&&(d.id=s?.objectId);try{const r=await e.findAll({where:d,order:["id",...c],include:u}),l=JSON.parse(JSON.stringify(r));"app_objects"===e.tableName?function(e,t,s){for(const a of e){const{module:e,moduleV3:r,...o}=a,i=`${t}/${o.type}s/${o.name}`;if("update"===s.event&&(s.oldValue?.name!==s.newValue?.name||s.oldValue?.type!==s.newValue?.type)){const e=`${t}/${s.oldValue?.type}s/${s.oldValue?.name}`;try{n.default.renameSync(e,i)}catch(e){console.error(e)}}n.default.existsSync(i)||n.default.mkdirSync(i,{recursive:!0});const l=`${i}/object.struct.json`,u=JSON.stringify(o,null,4);if(n.default.writeFile(l,u,function(e){e&&console.error(e)}),!s.changeDeletionMark){if(void 0!==e){const t=`${i}/client.module.js`;e?n.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)}):n.default.existsSync(t)&&n.default.rmSync(t,{force:!0})}if(void 0!==r){const e=`${i}/client.v3.module.js`;r?n.default.writeFile(e,`export default ${r}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(s,"serverModule")){const e=`${i}/server.module.js`;s.serverModule?n.default.writeFile(e,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(s,"info")){const e=`${i}/object.info.md`;s.info?n.default.writeFile(e,`${s.info}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}}(l,a,s):"view_settings"===e.tableName?function(e,t,s){for(const a of e){const{module:e,moduleV3:r,appObject:o,worker:i,...l}=a;let u="";u="worker"===l.viewType?`workers/${i.name}/views/${l.name}`:`${o.type}s/${o.name}/views/${l.name}`;const c=`${t}/${u}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){let e="";e="worker"===l.viewType?`workers/${i.name}/views/${s.oldValue?.name}`:`${o.type}s/${o.name}/views/${s.oldValue?.name}`;const a=`${t}/${e}`;try{n.default.renameSync(a,c)}catch(e){console.error(e)}}n.default.existsSync(c)||n.default.mkdirSync(c,{recursive:!0});const d=JSON.stringify(l,null,4),f=`${c}/view.struct.json`;if(n.default.writeFile(f,d,function(e){e&&console.error(e)}),s.changeDeletionMark)continue;const m=`${c}/client.module.js`;e?n.default.writeFile(m,`export default ${e}`,function(e){e&&console.error(e)}):n.default.existsSync(m)&&n.default.rmSync(m);const p=`${c}/client.v3.module.js`;if(r?n.default.writeFile(p,r,function(e){e&&console.error(e)}):n.default.existsSync(p)&&n.default.rmSync(p),Object.prototype.hasOwnProperty.call(s,"serverModule")){const e=`${c}/server.module.js`;s.serverModule?n.default.writeFile(e,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(s,"info")){const e=`${c}/view.info.md`;s.info?n.default.writeFile(e,`${s.info}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}(l,a,s):"report_settings"===e.tableName?function(e,t,s){for(const a of e){const{dataQuery:e,...r}=a,o=`${t}/reports/${a.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const e=`${t}/reports/${s.oldValue?.name}`;try{n.default.renameSync(e,o)}catch(e){console.error(e)}}n.default.existsSync(o)||n.default.mkdirSync(o,{recursive:!0});const i=JSON.stringify(r,null,4),l=`${o}/report.struct.json`;if(n.default.writeFile(l,i,function(e){e&&console.error(e)}),s.changeDeletionMark)continue;if(e){const t=`${o}/data.query.sql`;n.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}const u=`${o}/server.module.js`;if(s.serverModule?n.default.writeFile(u,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(u)&&n.default.rmSync(u,{force:!0}),Object.prototype.hasOwnProperty.call(s,"info")){const e=`${o}/report.info.md`;s.info?n.default.writeFile(e,`${s.info}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}(l,a,s):"data_processors"===e.tableName?function(e,t,s){for(const a of e){const e=`${t}/dataProcessors/${a.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const a=`${t}/dataProcessors/${s.oldValue?.name}`;try{n.default.renameSync(a,e)}catch(e){console.error(e)}}n.default.existsSync(e)||n.default.mkdirSync(e,{recursive:!0});const r=JSON.stringify(a,null,4),o=`${e}/processor.struct.json`;n.default.writeFile(o,r,function(e){e&&console.error(e)});const i=`${e}/server.module.js`;s.serverModule?n.default.writeFile(i,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(i)&&n.default.rmSync(i,{force:!0})}}(l,a,s):"scheduled_jobs"===e.tableName?function(e,t,s){for(const a of e){const e=`${t}/scheduledJobs/${a.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const a=`${t}/scheduledJobs/${s.oldValue?.name}`;try{n.default.renameSync(a,e)}catch(e){console.error(e)}}n.default.existsSync(e)||n.default.mkdirSync(e,{recursive:!0});const r=JSON.stringify(a,null,4),o=`${e}/job.struct.json`;if(n.default.writeFile(o,r,function(e){e&&console.error(e)}),s.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(s.serverModule?n.default.writeFile(i,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(i)&&n.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(s,"info")){const t=`${e}/job.info.md`;s.info?n.default.writeFile(t,`${s.info}`,function(e){e&&console.error(e)}):n.default.existsSync(t)&&n.default.rmSync(t,{force:!0})}}}(l,a,s):"rest_api"===e.tableName?function(e,t,s){for(const a of e){const e=`${t}/restApi/${a.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const a=`${t}/restApi/${s.oldValue?.name}`;try{n.default.renameSync(a,e)}catch(e){console.error(e)}}n.default.existsSync(e)||n.default.mkdirSync(e,{recursive:!0});const r=JSON.stringify(a,null,4),o=`${e}/api.struct.json`;if(n.default.writeFile(o,r,function(e){e&&console.error(e)}),s.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(s.serverModule?n.default.writeFile(i,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(i)&&n.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(s,"info")){const t=`${e}/api.info.md`;s.info?n.default.writeFile(t,`${s.info}`,function(e){e&&console.error(e)}):n.default.existsSync(t)&&n.default.rmSync(t,{force:!0})}}}(l,a,s):"components"===e.tableName?function(e,t,s){for(const a of e){const{module:e,moduleV3:r,...o}=a,i=`${t}/components/${a.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const e=`${t}/components/${s.oldValue?.name}`;try{n.default.renameSync(e,i)}catch(e){console.error(e)}}n.default.existsSync(i)||n.default.mkdirSync(i,{recursive:!0});const l=JSON.stringify(o,null,4),u=`${i}/component.struct.json`;if(n.default.writeFile(u,l,function(e){e&&console.error(e)}),!s.changeDeletionMark){if(e){const t=`${i}/client.module.js`;n.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(r){const e=`${i}/client.v3.module.js`;n.default.writeFile(e,r,function(e){e&&console.error(e)})}if(Object.prototype.hasOwnProperty.call(s,"serverModule")){const e=`${i}/server.module.js`;s.serverModule?n.default.writeFile(e,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}}(l,a,s):"workers"===e.tableName?function(e,t,s){for(const a of e){const{moduleV3:e,...r}=a,o=`${t}/workers/${a.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const e=`${t}/workers/${s.oldValue?.name}`;try{n.default.renameSync(e,o)}catch(e){console.error(e)}}n.default.existsSync(o)||n.default.mkdirSync(o,{recursive:!0});const i=JSON.stringify(r,null,4),l=`${o}/worker.struct.json`;if(n.default.writeFile(l,i,function(e){e&&console.error(e)}),!s.changeDeletionMark){if(e){const t=`${o}/client.v3.module.js`;n.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(Object.prototype.hasOwnProperty.call(s,"serverModule")){const e=`${o}/server.module.js`;s.serverModule?n.default.writeFile(e,`${s.serverModule}`,function(e){e&&console.error(e)}):n.default.existsSync(e)&&n.default.rmSync(e,{force:!0})}}}}(l,a,s):"common_commands"===e.tableName?function(e,t,s){for(const a of e){const{module:e,moduleV3:r,...o}=a,i=`${t}/commonCommands/${a.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const e=`${t}/commonCommands/${s.oldValue?.name}`;try{n.default.renameSync(e,i)}catch(e){console.error(e)}}n.default.existsSync(i)||n.default.mkdirSync(i,{recursive:!0});const l=JSON.stringify(o,null,4),u=`${i}/command.struct.json`;if(n.default.writeFile(u,l,function(e){e&&console.error(e)}),!s.changeDeletionMark){if(e){const t=`${i}/client.module.js`;n.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}if(r){const e=`${i}/client.v3.module.js`;n.default.writeFile(e,r,function(e){e&&console.error(e)})}}}}(l,a,s):"print_forms"===e.tableName?function(e,t,s){for(const a of e){const{module:e,moduleV3:r,serverModule:o,appObject:i,...l}=a,u=`${t}/${i.type}s/${i.name}/printForms/${l.name}`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const e=`${t}/${i.type}s/${i.name}/printForms/${s.oldValue?.name}`;try{n.default.renameSync(e,u)}catch(e){console.error(e)}}n.default.existsSync(u)||n.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/form.struct.json`;if(n.default.writeFile(d,c,function(e){e&&console.error(e)}),!s.changeDeletionMark){if(e){const t=`${u}/client.module.js`;n.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(r){const e=`${u}/client.v3.module.js`;n.default.writeFile(e,`export default ${r}`,function(e){e&&console.error(e)})}if(o){const e=`${u}/server.module.js`;n.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,a,s):"common_modules"===e.tableName?(function(e,t,s){const a=`${t}/commonModules`;n.default.existsSync(a)||n.default.mkdirSync(a,{recursive:!0});for(const a of e){const e=`${t}/commonModules/${a.name}.js`;if("update"===s.event&&s.oldValue?.name!==s.newValue?.name){const a=`${t}/commonModules/${s.oldValue?.name}.js`;try{n.default.renameSync(a,e)}catch(e){console.error(e)}}s.module&&n.default.writeFile(e,`${s.module}`,function(e){e&&console.error(e)})}}(l,a,s),o(e,t)):i(l,t)}catch(e){console.error(e)}},async updatePredefinedInitialData(e){const t=Object.keys(e.model.rawAttributes),s=Object.values(e.model.associations).map(e=>e.foreignKey),a=t.filter(e=>s.includes(e));try{const t=await e.model.findAll({order:["id"],where:{predefinedName:{[r.Op.ne]:null}},attributes:{exclude:a}}),s=JSON.stringify(t,null,4),o=`src/modules/catalogs/${e.name}/predefined.json`;n.default.writeFile(o,s,function(e){e&&console.error(e)})}catch(e){console.error(e)}},async updateEnums(){const e=`${process.cwd()}/src/database/initialdata/enums.json`,t=`${process.cwd()}/src/modules/enums/index.json`,s=JSON.parse(n.default.readFileSync(e,"utf-8")),a={};for(const e of s){const t=e.name;t&&(a[t]=e.values?.map(e=>e.value)||[])}let r={};n.default.existsSync(t)&&JSON.parse(n.default.readFileSync(t,"utf-8"));const o={};for(const[e,t]of Object.entries(a))o[e]=t;n.default.writeFileSync(t,JSON.stringify(o,null,2),"utf-8")}}},9896:e=>{e.exports=require("fs")},9911:function(e,t,s){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=a(s(7252)),r=a(s(1688)),o=a(s(1814)),i=n.default.Router();i.post("/send_sms",r.default.canRead({key:"sendsms"}),o.default.sendSMS),t.default=i}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var s=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(s.exports,s,s.exports,__webpack_require__),s.exports}var __webpack_exports__=__webpack_require__(7927);module.exports=__webpack_exports__})();