@synergy-server/core 1.0.0 → 1.1.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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(5788)),n=r(9031);class o extends n.Model{}o.init({id:{type:n.DataTypes.UUID,primaryKey:!0},sid:{type:n.DataTypes.UUID,allowNull:!1,unique:!0},userId:n.DataTypes.UUID,expires:n.DataTypes.DATE,data:n.DataTypes.TEXT,licNumber:n.DataTypes.STRING(100),clientType:{type:n.DataTypes.ENUM,values:["browser","mobile","electron","api"],defaultValue:"browser"}},{sequelize:s.default,tableName:"session",modelName:"Session"})},360:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7252)),n=r(9031),o=a(r(9896)),i=r(7138),l=a(r(1688)),u=a(r(3786)),c=a(r(5788)),d=a(r(2282)),f=s.default.Router();function m(e={},t){let r;const a={};return e.userRole?a.id=e.userRole:t.accessRoleId?a.id=t.accessRoleId:a.key=t.path,r=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),r}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:n.QueryTypes.SELECT});for(const t of e){if(!t.methods)continue;let e;const r=`restApi/${t.name}/server.module.js`,a=`${process.cwd()}/src/modules/${r}`;if(o.default.existsSync(a)&&(e=require(a)),!e)continue;const s=JSON.parse(t.methods);for(const r of s)e[r.controller]&&"function"==typeof e[r.controller]?f[r.httpMethod.toLowerCase()](`/api/${t.path}/${r.path}`,m(r.httpMethod,t),(e,t,r)=>{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}`});r()});r()},e[r.controller]):d.default.error("Rest API controller is not exist: ",{meta:{name:t.name,controller:r.controller}})}return f}}},664:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(2282)),n=a(r(5788));t.default={async onChangeHandler(e,t,r,a,o){try{const s=await n.default.models.ObjectVersioningSetting.findOne({where:{objectType:e.name}});if(s&&("all"===s.versioningMethod||s.versioningMethod===r)){let s=function(e){let t=[];if(e.associations)for(let r in e.associations){if("chargedServicesAcc"===r)continue;let a=e.associations[r].target;if(e.associations[r].isSingleAssociation){let s=["id","presentation"];e.associations[r].source.rawAttributes.name&&s.push("name"),t.push({model:a,as:r,attributes:s})}else{const e=t.push({model:a,as:r,include:[]});if(a.associations){t[e-1].include=[];for(let r in a.associations){let s=a.associations[r].target;if(a.associations[r].isSingleAssociation){let n=["id","presentation"];a.associations[r].target.rawAttributes.name&&n.push("name"),t[e-1].include.push({model:s,as:r,attributes:n})}}}}}return t}(e);await e.findByPk(t,{include:s,transaction:o}).then(async s=>{if(s){const i={objectId:t,objectData:JSON.stringify(s),objectType:e.name,userId:a,description:r},l={transaction:o||null};await n.default.models.ObjectVersion.create(i,l).catch(e=>{console.error(e)})}})}}catch(t){s.default.error(`Error in ${e.options.name?.plural} objectVersionsService onChangeHandler`,{meta:t})}},async addChanges(e,t){let r={...e};t.user&&(r.userId=t.user.id),await n.default.models.ObjectVersion.create(r).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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(1691)),n=r(7138),o=a(r(2282));t.default={isAuth(e,t,r){if(!e.user){const e="Error in accessRight.isAuth. User not authenticated";return o.default.error(e),t.status(n.StatusCodes.FORBIDDEN).send({message:e})}r()},isFullRights(e,t,r){if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),t.status(n.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(n.StatusCodes.FORBIDDEN).send({message:e})}r()},canRead:e=>async(t,r,a)=>{if(!t.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),r.status(n.StatusCodes.FORBIDDEN).send({message:e})}if(!0===t.user.fullRights)return void a();const i=t.user?.id;i?await s.default.checkUserAccess(i,e,!0).then(s=>{if(!0===s)a();else{const a=`User ${t.user?.name} not have access to read. Role ${e}`;o.default.error("Error in accessRight.canRead",{meta:a}),r.status(n.StatusCodes.FORBIDDEN).send({message:a})}}).catch(e=>{o.default.error("Error in accessRight.canRead",{meta:e}),r.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):r.status(n.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},canModify:e=>async(t,r,a)=>{if(!0===t.user?.fullRights)return void a();const i=t.user?.id;i?await s.default.checkUserAccess(i,e,!0,!0).then(s=>{if(!0===s)a();else{const a=`User ${t.user?.name} not have access to modify. Role ${e}`;o.default.error("Error in accessRight.canModify",{meta:a}),r.status(n.StatusCodes.FORBIDDEN).send({message:a})}}).catch(e=>{o.default.error("Error in accessRight.canModify",{meta:e}),r.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):r.status(n.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})}}},1691:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(9031),n=a(r(5788)),o=a(r(2555));async function i(e){const t=[];return await n.default.models.Department.findAll({where:{[s.Op.or]:[{leaderId:e},{deputyId:e}]}}).then(e=>{for(const r of e)t.push(r.id)}).catch(e=>{throw e}),await n.default.models.DepartmentEmployee.findAll({where:{employeeId:e}}).then(e=>{for(const r of e)t.push(r.parentId)}).catch(e=>{throw e}),t}t.default={getUserAccessRoles:async(e,t=!1,r=!1)=>await n.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const r=await i(e);return await n.default.models.RoleGroupDepartment.findAll({where:{departmentId:r}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const a={parentId:e};return!0===r?a.canModify=!0:!0===t&&(a.canRead=!0),await n.default.models.RoleGroupSetting.findAll({where:a}).then(e=>{const t=[];for(const r of e){const e=t.findIndex(e=>e.userRoleId===r.id);e>-1?(r.canRead!==t[e].canRead&&!0===r.canRead&&(t[e].canRead=r.canRead),r.canModify!==t[e].canModify&&!0===r.canModify&&(t[e].canModify=r.canModify)):t.push({userRoleId:r.userRoleId,canRead:r.canRead,canModify:r.canModify})}return t}).catch(e=>{throw e})}).catch(e=>{throw e}),getUserAccessRoleId:async(e,t=!1,r=!1)=>await n.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>{const a={parentId:e.map(e=>e.parentId)};return!0===r?a.canModify=!0:!0===t&&(a.canRead=!0),await n.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 n.default.models.UserRole.findOne({where:{key:e}}).then(async e=>e).catch(e=>{throw e}),getUserRoleById:async e=>await n.default.models.UserRole.findByPk(e).then(async e=>e).catch(e=>{throw e}),async checkUserAccess(e,t,r=!1,a=!1){const s=t?.id?await this.getUserRoleById(t.id):await this.getUserRoleByKey(t.key);return s?await n.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const r=await i(e);return await n.default.models.RoleGroupDepartment.findAll({where:{departmentId:r}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const t={parentId:e,userRoleId:s.id};return!0===a?t.canModify=!0:!0===r&&(t.canRead=!0),await n.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 r=[],a=await n.default.models.Department.findAll({where:{groupId:e.id},include:t});for(const e of a){r.push(e);const a=await this.getAllSubDepartments(e,t);for(const e of a)r.push(e)}return r},async accessRestrictions(e,t){const r={use:!1,users:[]},a=await n.default.models.AccessRestriction.findOne({where:{objectType:t.name}});if(a&&(!0===a.useRestriction||!0===a.useDepartmentRestriction)&&(r.use=!0,r.users.push(e.user?.id),!0===a.useDepartmentRestriction)){const t=o.default.prepareIncludes(n.default.models.Department,{withTableParts:!0}),a=await n.default.models.Department.findAll({where:{[s.Op.or]:[{leaderId:e.user?.id},{deputyId:e.user?.id}]},include:t}),i=[];for(const e of a){const r=await this.getAllSubDepartments(e,t);for(const e of r)i.push(e)}for(const e of i)a.push(e);if(a)for(const e of a)for(const t of e.employees)r.users.push(t.employeeId)}return r},getUserAccessNavigation:async e=>await n.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const r=await i(e);return await n.default.models.RoleGroupDepartment.findAll({where:{departmentId:r}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>await n.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")},2096:e=>{e.exports=require("morgan")},2103:e=>{e.exports=require("crypto-js")},2282:function(e,t,r){var a,s=this&&this.__createBinding||(Object.create?function(e,t,r,a){void 0===a&&(a=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,a,s)}:function(e,t,r,a){void 0===a&&(a=r),e[a]=t[r]}),n=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 r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},a(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=a(e),o=0;o<r.length;o++)"default"!==r[o]&&s(t,e,r[o]);return n(t,e),t});Object.defineProperty(t,"__esModule",{value:!0});const i=o(r(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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(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 s.default;e.set("eventEmitter",t),e.get("/client_events",(e,r)=>{r.setHeader("Content-Type","text/event-stream"),r.setHeader("Cache-Control","no-cache"),r.setHeader("Connection","keep-alive"),r.setHeader("Access-Control-Allow-Credentials","true"),r.flushHeaders(),t.on("processing",e=>{(e=>{r.write(`data: ${JSON.stringify(e)}\n\n`),r.flush()})(e)}),e.on("close",()=>{r.end()})})}}},2525:e=>{e.exports=require("helmet")},2555:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(5788)),n=r(9031);function o(e){const t={};if(0===e.length)return t;for(const r of e){const e=r.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,r=[],a=null,s=null,n=[]){let i=[],l=!0;Object.prototype.hasOwnProperty.call(t,"compactInclude")&&(l=t.compactInclude);const u=o(r),c=o(n);if(t.include)i=t.include;else if(e.associations){if(!0!==l)return{all:!0};for(let r in e.associations){if(e.associations[r].options._noTablePart)continue;let n=e.associations[r].target;if(e.associations[r].isSingleAssociation){let t=["id","presentation"];e.associations[r].target.getAttributes().name&&t.push("name");const s=[];if(u[r])for(const e of u[r])if("object"==typeof e)for(const t in e){const r=n.associations[t]?.target;if(r){const a=e[t];if(Array.isArray(a)){let e=[...new Set(["id","presentation",...a])];r.getAttributes().name&&e.push("name"),s.push({model:r,as:t,attributes:e})}}}else t.includes(e)||t.push(e);c[r]&&(t=[...new Set([...t,...c[r]])]);const o=a?.[r];i.push({model:n,as:r,attributes:t,where:o,include:s})}else if(t.withTableParts){const e=a?.[r],t=i.push({model:n,as:r,where:e,include:[]});if(s&&n.getAttributes().rowNumber&&s.push([{model:n,as:r},"rowNumber","asc"]),n.associations){i[t-1].include=[];for(let e in n.associations){let a=n.associations[e].target;if(n.associations[e].isSingleAssociation){let s=["id","presentation"];n.associations[e].target.getAttributes().name&&s.push("name"),u[r]?.[e]&&(s=[...new Set([...s,...u[r][e]])]),i[t-1].include?.push({model:a,as:e,attributes:s})}}}}}}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,r)=>!0!==(r&&"pl"!==r)||null===e.lang?e[t]:e.lang?.[t]?.[r]||e[t],async initEnums(){try{return(await s.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:n.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 r=Math.pow(10,t),a=Math.round(e*r)/r,s=Math.pow(10,3);return 0===Math.round(e*s)/s?0:a}}},2562:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(2282)),n=r(7138),o=a(r(9896)),i=a(r(2103)),l=a(r(9880));t.default={async executeProcessing(e,t,r,a){const i=e.body.name;if(!i){const e="Object name is not correct!";return s.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:n.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 s.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if(!l?.executeProcessing||"function"!=typeof l?.executeProcessing){const e="Data processor run function is not exist!";return s.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}try{const s=await l.executeProcessing(e,t,r,a);return{status:n.StatusCodes.OK,responseData:{executionComplited:!0,result:s}}}catch(e){return s.default.error(`Error in ${a.name} executeProcessing controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async exportProcessor(e,t,r,a){const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length){const e="Object id is not correct!";return s.default.error(`Error in ${a.name} findItem controller`,{meta:e}),t.status(n.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 s.default.error(`Error in ${a.name} exportProcessor controller`,{meta:e}),t.status(n.StatusCodes.NOT_FOUND).send({message:e})}{const r=JSON.parse(JSON.stringify(e));let l;const u=`dataProcessors/${r.name}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;o.default.existsSync(c)&&(delete require.cache[require.resolve(c)],l=require(c)),r.serverModule=l?o.default.readFileSync(`src/modules/${u}`,{encoding:"utf8",flag:"r"}):"";const d=i.default.AES.encrypt(JSON.stringify(r),"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3").toString(),f=`/tmp/${r.id}.sdp`;o.default.writeFileSync(f,d),t.status(n.StatusCodes.OK).download(f,`${r.name}.sdp`,e=>{if(e)return s.default.error(`Error in ${a.name} exportProcessor controller`,{meta:e}),t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).json({message:e.message});o.default.unlinkSync(f)})}}).catch(e=>(s.default.error(`Error in ${a.name} exportProcessor controller`,{meta:e}),t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})))},async importProcessor(e,t,r,a){let{data:u}=e.body;if(u=JSON.parse(u||"{}"),!e.files||!u){const e="No file uploaded!";return s.default.error(`Error in ${a.name} importProcessor controller`,{meta:e}),t.status(n.StatusCodes.BAD_REQUEST).send({message:e})}try{for(let r of e.files){const e=r.path,s=o.default.readFileSync(e,{encoding:"utf8",flag:"r"}),c=i.default.AES.decrypt(s,"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(n.StatusCodes.OK).send({message:"OK"})}}catch(e){return s.default.error(`Error in ${a.name} importProcessor controller`,{meta:e}),t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})}}}},2671:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(5788)),n=a(r(4716)),o=a(r(2282)),i=r(9031);t.default={async setNumber(e,t,r){if(t.noSetPrefix&&!0===t.noSetPrefix)return;t.prefix||(t.prefix="AA"),function(e){"numberPeriod"in e&&e.prefix.id&&("year"===e.prefix.periodicity?e.numberPeriod=(0,n.default)(e.date).startOf("year").toDate():"quarter"===e.prefix.periodicity?e.numberPeriod=(0,n.default)(e.date).startOf("quarter").toDate():"month"===e.prefix.periodicity?e.numberPeriod=(0,n.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 n=await s.default.models.Numerator.findOne({where:{tableName:e.path,prefix:a,period:l},lock:i.Transaction.LOCK.UPDATE,transaction:r});if(n)n.number++,await n.save({transaction:r});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:r});i&&(u=parseFloat(i.number)+1),n=await s.default.models.Numerator.create({tableName:e.path,prefix:a,period:l,number:u},{transaction:r})}u=n.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,r)=>"Number"===r?e.number.toString().padStart(6,"0"):"MonthDay"===r?(0,n.default)(e.date).format("DD"):"MonthNumber"===r?(0,n.default)(e.date).format("MM"):"QuarterNumber"===r?(0,n.default)(e.date).quarter().toString().padStart(2,"0"):"YearTwoDigits"===r?(0,n.default)(e.date).format("YY"):"YearFourDigits"===r?(0,n.default)(e.date).format("YYYY"):"Prefix"===r?e.prefix.name:"Organization"===r?e.organization?.code?e.organization.code:t:"CounterpartyCode"===r?e.counterparty?.code?e.counterparty.code:t:"StoreCode"===r&&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,r=void 0,a){let n,l=1,u=!1;a?(n=a,u=!0):n=await(e.sequelize?.transaction());try{const r=e.getTableName();let a=await s.default.models.Numerator.findOne({where:{tableName:r,prefix:t},lock:i.Transaction.LOCK.UPDATE,transaction:n});if(a)a.number++,await a.save({transaction:n});else{const o=await e.findOne({where:{prefix:t},order:[["number","DESC"]],transaction:n});o&&(l=o.number+1),a=await s.default.models.Numerator.create({tableName:r,prefix:t,number:l},{transaction:n})}!0!==u&&n&&await n.commit(),l=a.number}catch(t){!0!==u&&n&&await n.rollback(),o.default.error(`Error in ${e.options.name?.plural} createItem controller`,{meta:t})}return l}}},2703:e=>{e.exports=require("node-cron")},3407:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(4139)),n=a(r(7281)),o=a(r(9816)),i=a(r(7565)),l=a(r(6961));t.default=e=>{e.use(s.default),e.use(n.default),e.use(o.default),e.use(l.default),e.use(i.default)}},3464:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(2703)),n=a(r(5788)),o=a(r(9896)),i=r(7138),l=a(r(2282)),u=[];t.default={async init(e){if(process.env.NODE_APP_INSTANCE&&"0"!==process.env.NODE_APP_INSTANCE)return;const t=await n.default.models.ScheduledJob.findAll({where:{active:!0,markedToDelete:!1}});if(Array.isArray(t)&&t.length>0)for(const r of t){const t=r.schedule,a=`scheduledJobs/${r.name}/server.module.js`;let s;const n=`${process.cwd()}/src/modules/${a}`;if(!o.default.existsSync(n))return console.log(`Serwer module for scheduled job "${r.name}" is not found!`);if(s=require(n),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(r,t,s,e)}},async executeManually(e,t,r,a){const s=e.body.name;if(!s){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/${s}/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 n.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.body.id,status:"started"});try{const t=[],r=await u(e.objects,t),a=t.find(e=>"error"===e.status),s=t.find(e=>"info"===e.status);let n="";if(a){for(let e of t)n+=e.meta+"\n";await f.update({endDate:new Date,status:"error",errorDescription:n,userId:e.user?.id,manual:!0})}else if(s){for(let e of t)n+=e.meta+"\n";await f.update({endDate:new Date,status:"success",errorDescription:n,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:r}}}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,r,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=s.default.schedule(o,async()=>{const t=await n.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.id,status:"started"});try{const e=[];await r(a,e);const s=e.find(e=>"error"===e.status),n=e.find(e=>"info"===e.status);let o="";if(s){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"error",errorDescription:o})}else if(n){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,r)=>e&&"00"!==e?`*/${Number(e)}`:t?"minutes"===r?`${t.substring(3,5)}`:`${t.substring(0,2)}`:"*",f=e=>{if(e.length>0){let t="";for(const r of e)t+=r,e.length-1!==e.indexOf(r)&&(t+=",");return t}return"*"}},3648:e=>{e.exports=require("pdfmake")},3786:function(e,t,r){var a=r(8287).hp,s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(r(8461)),o=s(r(4716)),i=s(r(9896)),l=n.default.diskStorage({destination:function(e,t,r){r(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,r){t.originalname=a.from(t.originalname,"latin1").toString("utf8");const s=function(e){let t=e.originalname,r="";const a=/(?:\.([^.]+))?$/.exec(e.originalname);if(!a)return`file_${Date.now()}${r}`;r=a[0],t=String(e.originalname).replace(r,"");return t=String(t).replace(/[^a-zA-Z0-9-_]/g,"_"),t=t.toLowerCase(),`${t}_${Date.now()}${r}`}(t);r(null,s)}});t.default=(0,n.default)({storage:l,limits:{fileSize:104857600}})},3830:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(8894));t.default=async e=>{const t=await n(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 n=async e=>{let t="";const r=await s.default.getForwarderFilter(e);return!1===r.fullAccess&&(t=`WHERE virtual_table."forwarderId" = '${r.forwarder}'`),t}},3857:e=>{e.exports=require("connect-session-sequelize")},3903:e=>{e.exports=require("uuid")},3958:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(3903),n=r(7138),o=r(9031),i=a(r(4716)),l=a(r(9896)),u=a(r(2282)),c=a(r(2555)),d=a(r(2671)),f=a(r(6299)),m=a(r(9880)),p=a(r(664)),h=a(r(5788)),g=a(r(2103));function y(e,t){const r=[];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;r.push({model:t,as:a})}}if(t.addInclude)for(const e of t.addInclude){const t=r.findIndex(t=>t.model===e.model);-1===t?r.push({...e}):r[t].fkField=e.fkField}return r}function b(e,t,r){for(const a in e){const s=e[a];if("object"==typeof s){const e={};for(const t in s)"inList"===t?e[o.Op.in]=s[t]:"notInList"===t?e[o.Op.notIn]=s[t]:e[o.Op[t]]=s[t];if(a.includes(".")){const t=a.split(".");r[t[0]]?r[t[0]][t[1]]=e:r[t[0]]={[t[1]]:e}}else t[a]=e}else if(a.includes(".")){const e=a.split(".");r[e[0]]?r[e[0]][e[1]]=s:r[e[0]]={[e[1]]:s}}else t[a]=s}}function w(e,t){let r=t.sortBy.split(".");if(r.length>1){const t=e.model.associations[r[0]]?.target;r[1]=t?.rawAttributes?.numberStr?"numberStr":"name"}return!0===t.sortDesc&&r.push("DESC"),r}function _(e,t,r){"appObjects"!==e.name&&"reportSettings"!==e.name&&"dataProcessors"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(r.serverModule=t.serverModule),"commonModules"===e.name&&(r.module=t.module),"appObjects"!==e.name&&"viewSettings"!==e.name&&"reportSettings"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(r.info=t.info)}t.default={async findAllItems(e,t,r,a,s={}){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={},g=[];e.query?.attributes&&(h=e.query?.attributes,"string"==typeof h&&(h=JSON.parse(h))),s.attributes&&"object"==typeof s.attributes&&("object"!=typeof h||Array.isArray(h)||0!==Object.keys(h).length?"object"==typeof h&&Array.isArray(h)&&0===h.length?h=s.attributes:"object"!=typeof h||Array.isArray(h)||Array.isArray(s.attributes)?"object"==typeof h&&Array.isArray(h)&&Array.isArray(s.attributes)&&(h=[...new Set([...h,...s.attributes])]):h=Object.assign(h,s.attributes):h=s.attributes),Array.isArray(h)&&(g=h.filter(e=>e.includes(".")),h=h.filter(e=>!e.includes(".")));let y=[];e.query?.extraAttributes&&(y="string"==typeof e.query?.extraAttributes?JSON.parse(e.query?.extraAttributes):e.query?.extraAttributes);let _={};if(s.filter&&(f=Object.assign(f,s.filter)),f.searchStr){const e=function(e){const t=[];for(const r in e.model.rawAttributes)e.model.rawAttributes[r]._fullSearch&&t.push(r);for(const r in e.model.associations)if(e.model.associations[r].options._fullSearch){const a=e.model.associations[r].target.rawAttributes;a.name?t.push(`$${r}.name$`):a.numberStr&&t.push(`$${r}.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,r){if(Array.isArray(t))for(const a of t)a.sortBy&&r.push(w(e,a));else t?.sortBy&&r.push(w(e,t));e.withoutTimestamps||r.push(["createdAt","DESC"]),r.push(["id","DESC"])}(a,d,S),e.query,p&&(s.withTableParts=p);let v=c.default.prepareIncludes(a.model,s,g,_,null,y);try{let e;if(l.page){let t=l.limit,r=0+(l.page-1)*t;e=await a.model.findAndCountAll({where:f,offset:r,limit:t,attributes:h,order:S,include:v,group:s?.group||null})}else e=await a.model.findAll({where:f,attributes:h,order:S,limit:m,include:v,group:s?.group||null});if(s.resultProcessing&&(e=s.resultProcessing(e)),e)return e=JSON.parse(JSON.stringify(e)),{status:n.StatusCodes.OK,responseData:e};{const e="Items not find";return u.default.error(`Error in ${a.name} findAll controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${a.name} findAll controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findItem(e,t,r,a,s={}){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:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}s.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(".")))),s?.attributes&&Array.isArray(s.attributes)){const e=s.attributes.filter(e=>e.includes(".")),t=s.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=[],y=d,b=m;for(const e in a.tables)y=y.filter(t=>!t.startsWith(`${e}.`)),b=b.filter(t=>!t.startsWith(`${e}.`));let w=c.default.prepareIncludes(a.model,s,y,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 r=d,n=m;r=r.filter(t=>t.startsWith(`${e}.`)),n=n.filter(t=>t.startsWith(`${e}.`));const o=new RegExp(`^${e}\\.`);r=r.map(e=>e.replace(o,"")),n=n.map(e=>e.replace(o,""));const i=c.default.prepareIncludes(a.tables[e].model,s,r,null,p,n);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))}return!0===a.configurationData&&await async function(e,t,r){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=g.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),r).toString():t.serverModule=null,t.module&&(t.module=g.default.AES.encrypt(t.module,r).toString()),delete t.info;const a=`src/modules/${t.type}s/${t.name}/object.info.md`;l.default.existsSync(a)?t.info=l.default.readFileSync(a,{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,t.module&&(t.module=g.default.AES.encrypt(t.module,r).toString()),e){const a=`src/modules/${e.type}s/${e.name}/views/${t.name}/server.module.js`;l.default.existsSync(a)&&(t.serverModule=g.default.AES.encrypt(l.default.readFileSync(a,{encoding:"utf8",flag:"r"}),r).toString());const s=`src/modules/${e.type}s/${e.name}/views/${t.name}/view.info.md`;l.default.existsSync(s)&&(t.info=l.default.readFileSync(s,{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=g.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),r).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=g.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),r).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=g.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),r).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=g.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),r).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("commonModules"===e.name){const e=`src/modules/commonModules/${t.name}.js`;l.default.existsSync(e)?t.module=g.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),r).toString():t.module=null}}(a,t,e.user?.id),{status:n.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:n.StatusCodes.NOT_FOUND,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${a.name} findByPk controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findOne(e,t,r,a,s={}){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:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}s.withTableParts=!0;const i=c.default.prepareIncludes(a.model,s);return await a.model.findOne({where:o,include:i}).then(e=>{if(e)return{status:n.StatusCodes.OK,responseData:e};{const e=`${a.name} not found`;return u.default.error(`Error in ${a.name} findOne controller`,{meta:e}),{status:n.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${a.name} findOne controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async findPredefinedItem(e,t,r,a,s={}){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:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}s.withTableParts=!0;let i=c.default.prepareIncludes(a.model,s);return await a.model.findOne({where:{predefinedName:o},include:i}).then(e=>{if(e)return{status:n.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:n.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${a.name} findPredefinedItem controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async createItem(e,t,r,a,o={},i=void 0){const l=o?.objectData?o.objectData:{...e.body};l.id||(l.id=(0,s.v4)()),delete l.presentation;const c=y(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 r=await a.model.create(l,{include:c,transaction:f});return r?(f.afterCommit(()=>{if(!0===a.configurationData){const e={objectId:r.id,event:"create",newValue:r};_(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,r.id,"create",e.user?.id)}),i&&"function"==typeof i&&await i(e,t,r,f),o.transaction||await f.commit(),{status:n.StatusCodes.OK,responseData:r}):{status:n.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:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async updateItem(e,t,r,a,s={},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:n.StatusCodes.BAD_REQUEST,responseData:{message:i}};const c=s.objectData?s.objectData:{...e.body};delete c.presentation;const d=s.transaction?s.transaction:await a.model.sequelize.transaction();let f=await a.model.findByPk(l,{transaction:d});if(!f)return s.transaction||await d.rollback(),i=`${a.name} with uuid ${l} not found`,u.default.error(`Error in ${a.name} updateItem controller`,{meta:i}),{status:n.StatusCodes.NOT_FOUND,responseData:{message:i}};const h=JSON.parse(JSON.stringify(f));for(const e in a.tables){const t=await a.tables[e].model.findAll({where:{parentId:f.id}});h[e]=JSON.parse(JSON.stringify(t))}try{if(!s.noVersionCheck){if(!c.updatedAt)return i="The data version not defined",u.default.error(`Error in ${a.name} updateItem controller`,{meta:i}),{status:n.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:n.StatusCodes.BAD_REQUEST,responseData:{message:i}}}const r=await f.update(c,{transaction:d});if(!r)return{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Item is not updated"}};const g=y(a.model,c);if(g.length>0){const e=f.id;for(const t of g)if(Object.prototype.hasOwnProperty.call(c,t.as)){let r="parentId";t.fkField&&(r=t.fkField),await t.model.destroy({where:{[r]:e},transaction:d});const a=[];for(const r of c[t.as]){const s={...r};t.fkField||(s.parentId=e),a.push(s)}await t.model.bulkCreate(a,{transaction:d})}}return o&&"function"==typeof o&&await o(e,t,r,h,d),d.afterCommit(()=>{if(!0===a.configurationData){const e={objectId:r.id,event:"update",oldValue:h,newValue:r};_(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)}),s.transaction||await d.commit(),{status:n.StatusCodes.OK,responseData:r}}catch(e){return s.transaction||await d.rollback(),u.default.error(`Error in ${a.name} updateItem controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async confirmItem(e,t,r,a,s={}){const o=e.body.id,i=e.body.isConfirmed,l=a.name,c=s.recordsSet||{},d=s.transaction?s.transaction:await a.model.sequelize.transaction();try{for(const t of Object.keys(c)){const r=e.objects[t];if(r&&a.model.associations[t]){let a=await r.model.findAll({where:{recorderId:o,recorderType:l}});a=JSON.parse(JSON.stringify(a)),await r.model.destroy({where:{recorderId:o,recorderType:l},transaction:d});for(const e of c[t])await r.model.create(e,{transaction:d});await f.default.updateTotals(r,{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)})),s.transaction||await d.commit(),{status:n.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return s.transaction||await d.rollback(),u.default.error(`Error in ${a.name} confirmItem controller`,{meta:`${a.name} is not confirmed. ${e}`}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async undoConfirmItem(e,t,r,a,s={}){const o=e.body.id,i=a.name,l=s.transaction?s.transaction:await a.model.sequelize.transaction();try{for(const t of Object.keys(a.model.associations))if(a.model.associations[t].options._registerRecords){const r=e.objects?.[t];if(r){let t=await r.model.findAll({where:{recorderId:o,recorderType:i}});t=JSON.parse(JSON.stringify(t));const a=r.model;await a.destroy({where:{recorderId:o,recorderType:i},transaction:l}),await f.default.updateTotals(r,{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)}),s.transaction||await l.commit(),{status:n.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return u.default.error(`Error in ${a.name} undoConfirmItem controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async deleteItem(e,t,r,a,s={},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:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=s.transaction?s.transaction:await a.model.sequelize.transaction(),c=await a.model.findByPk(i);if(!c){s.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:n.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),s.transaction||await l.commit(),{status:n.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return s.transaction||await l.rollback(),u.default.error(`Error in ${a.name} deleteItem controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async changeItemDeletionMark(e,t,r,a,s={},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:n.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=s.transaction?s.transaction:await a.model.sequelize.transaction(),c=await a.model.findByPk(i);if(!c){s.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:n.StatusCodes.NOT_FOUND,responseData:{message:e}}}const d={markedToDelete:!c.markedToDelete};try{const r=JSON.parse(JSON.stringify(c)),u=await c.update(d,{transaction:l});if(o&&"function"==typeof o&&await o(e,t,u,r,l),l.afterCommit(()=>{!0===a.configurationData?m.default.updateInitialData(a.model,a.path,{objectId:u.id,event:"update",oldValue:r,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 s.transaction||await l.commit(),{status:n.StatusCodes.OK,responseData:u}}catch(e){return s.transaction||await l.rollback(),u.default.error(`Error in ${a.name} changeDeletionMark controller`,{meta:e}),{status:n.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},calculateRegisterTotals:async(e,t,r,a)=>(await f.default.calculateTotals(a,e.objects),{status:n.StatusCodes.OK,responseData:{message:"OK"}})}},4139:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7252)),n=a(r(6797)),o=s.default.Router();o.get("/",function(e,t,r){t.render("index",{title:"SYNERGY Server"})}),o.use(n.default.isAuthenticated),t.default=o},4469:e=>{e.exports=require("dotenv/config")},4621:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(7138),n=a(r(5788)),o=a(r(2282));function i(e,t,r){switch(t){case"number":e.valueNumber=r;break;case"string":case"text":e.valueString=r;break;case"date":e.valueDate=r;break;case"boolean":e.valueBoolean=r;break;case"object":e.valueRef=r}}t.default={async getSetting(e){const t={value:null,message:"",status:null};if(!e)return t.status=s.StatusCodes.BAD_REQUEST,t.message="Bad incoming parameters.",t;try{const r=await n.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!r)return t.status=s.StatusCodes.BAD_REQUEST,t.message="App setting is not found.",t;const a=await n.default.models.AppSetting.findOne({where:{appSettingItemId:r.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}}(r.valueType,a),t.status=s.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}}(r);t.status=s.StatusCodes.OK,t.value=e}}catch(e){o.default.error("Error in App getSetting controller",{meta:e}),t.status=s.StatusCodes.INTERNAL_SERVER_ERROR,t.message="Internal server error."}return t},async setSetting(e,t){const r={value:null,message:"",status:null};if(!e)return r.status=s.StatusCodes.BAD_REQUEST,r.message="Bad incoming parameters.",r;try{const a=await n.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!a)return r.status=s.StatusCodes.BAD_REQUEST,r.message="App setting is not found.",r;const o=await n.default.models.AppSetting.findOne({where:{appSettingItemId:a.id}});if(o){const e={};i(e,a.valueType,t);const n=await o.update(e);r.status=s.StatusCodes.OK,r.value=n}else{const e={appSettingItemId:a.id};i(e,a.valueType,t);const o=await n.default.models.AppSetting.create(e);r.status=s.StatusCodes.OK,r.value=o}}catch(e){o.default.error("Error in App setSetting controller",{meta:e}),r.status=s.StatusCodes.INTERNAL_SERVER_ERROR,r.message="Internal server error."}return r}}},4716:e=>{e.exports=require("moment")},5124:e=>{e.exports=require("winston")},5379:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(9031),n=a(r(5788)),o=a(r(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 r=(await n.default.query(t,{type:s.QueryTypes.SELECT})).reduce((e,t)=>{let r=e.findIndex(e=>e.name===t.name);return-1===r&&(r=e.push({name:t.name,execSide:t.execSide,objectType:t.objectType,event:t.event,serviceFunctionPath:t.serviceFunctionPath,objects:[]})-1),r>-1&&t.objectId&&e[r].objects.push(t.objectId),e},[]);if("server"===e)for(const e of r)if(e.serviceFunctionPath){const t=e.serviceFunctionPath.split(".");if(2!==t.length){e.serviceFunction=void 0;continue}const r=t[0],a=t[1],s=`${process.cwd()}/src/modules/commonModules/${r}.js`;let n;o.default.existsSync(s)&&(n=require(s),n?.[a]&&(e.serviceFunction=n[a]))}return r}catch(e){return console.error(e),[]}},getSubscription:(e,t,r,a)=>e.find(e=>e.event===t&&e.objectType===r&&(0===e.objects.length||e.objects.includes(a)))}},5483:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7252)),n=a(r(1688)),o=a(r(3786)),i=a(r(6224)),l=s.default.Router();function u(e={httpMethod:"GET"},t){let r;const a={};return e.userRole?a.id=e.userRole:t.accessRoleId?a.id=t.accessRoleId:a.key=t.path,r=e.accessLevel?"CAN_REED"===e.accessLevel?n.default.canRead(a):"CAN_MODIFY"===e.accessLevel?n.default.canModify(a):"IS_AUTH"===e.accessLevel?n.default.isAuth:n.default.isFullRights:!0===t.system?"GET"===e.httpMethod?n.default.isAuth:n.default.isFullRights:"GET"===e.httpMethod?n.default.canRead(a):n.default.canModify(a),r}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,r)=>{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}`});r()});r()},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);"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,r)=>{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}`});r()});r()},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,r)=>{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}`});r()});r()},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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(5483)),n=a(r(360));t.default=async e=>{const{router:t,objects:r}=await(0,s.default)();e.use((e,t,a)=>{e.objects=r,a()}),e.locals.objects=r,e.use(t);const a=await n.default.initRoutes();return e.use(a),{router:t,objects:r}}},5788:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(9031),n=r(3903),o=a(r(6788)),i=new s.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,n.v4)())}}}});t.default=i},5977:e=>{e.exports=require("express-session")},6224:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7173)),n=a(r(3958)),o=a(r(2562)),i=a(r(3464)),l=a(r(6910)),u=a(r(5379)),c=a(r(6836)),d=a(r(9896)),f=r(7138),m=a(r(2282));function p(e,t,r){if(t.fields.find(e=>!0===e.password)){const a=r.objectData?r.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]);r.objectData=a}}t.default=async()=>{const e=await(0,s.default)(),t=await u.default.initSubscriptions("server");for(const r in e){let a;const s=`${e[r].type}s/${r}/server.module.js`,c=`${process.cwd()}/src/modules/${s}`;if(d.default.existsSync(c)&&(a=require(c)),e[r].findAll=async(s,o,i)=>{let l=null;if(a?.findAll)l=await a.findAll(s,o,i,e[r]);else{const c={};a?.beforeFindAll&&await a.beforeFindAll(s,o,i,e[r],c);const d=u.default.getSubscription(t,"beforeFindAll",e[r].type,e[r].id);d?.serviceFunction&&await(d?.serviceFunction(s,o,i,e[r],c)),l=await n.default.findAllItems(s,o,i,e[r],c),a?.afterFindAll&&await a.afterFindAll(s,o,i,e[r],l,c);const f=u.default.getSubscription(t,"afterFindAll",e[r].type,e[r].id);f?.serviceFunction&&await(f?.serviceFunction(s,o,i,e[r],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${r} 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[r].findById=async(s,o,i)=>{let l=null;if(a?.findById)l=await a.findById(s,o,i,e[r]);else{const c={};a?.beforeFindById&&await a.beforeFindById(s,o,i,e[r],c);const d=u.default.getSubscription(t,"beforeFindById",e[r].type,e[r].id);d?.serviceFunction&&await(d?.serviceFunction(s,o,i,e[r],c)),l=await n.default.findItem(s,o,i,e[r],c),a?.afterFindById&&await a.afterFindById(s,o,i,e[r],l,c);const f=u.default.getSubscription(t,"afterFindById",e[r].type,e[r].id);f?.serviceFunction&&await(f?.serviceFunction(s,o,i,e[r],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${r} 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[r].create=async(s,o,i)=>{if(a?.create)return await a.create(s,o,i,e[r]);{const l=s.transaction?s.transaction:await e[r].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{a?.beforeCreate&&"function"==typeof a?.beforeCreate&&await a.beforeCreate(s,o,i,e[r],c);const d=u.default.getSubscription(t,"beforeCreate",e[r].type,e[r].id);if(d?.serviceFunction&&await(d?.serviceFunction(s,o,i,e[r],c)),c.cancel){s.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(s,n,o,l)=>{a?.afterCreate&&"function"==typeof a?.afterCreate&&await a.afterCreate(s,n,i,e[r],{newItem:o,transaction:l});const c=u.default.getSubscription(t,"afterCreate",e[r].type,e[r].id);c?.serviceFunction&&await(c?.serviceFunction(s,n,i,e[r],{newItem:o,transaction:l}))};p(s,e[r],c);const h=await n.default.createItem(s,o,i,e[r],c,m);if(h?.status!==f.StatusCodes.OK)return s.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[r].type||!0!==e[r].confirmation||!0!==s.body?.isConfirmed)return s.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const g={};a?.beforeConfirm&&"function"==typeof a?.beforeConfirm&&await a.beforeConfirm(s,o,i,e[r],g,c);const y=u.default.getSubscription(t,"beforeConfirm",e[r].type,e[r].id);if(y?.serviceFunction&&await(y?.serviceFunction(s,o,i,e[r],g,c)),c.cancel){s.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 n.default.confirmItem(s,o,i,e[r],{recordsSet:g,...c});a?.afterConfirm&&"function"==typeof a?.afterConfirm&&await a.afterConfirm(s,o,i,e[r],c);const w=u.default.getSubscription(t,"afterConfirm",e[r].type,e[r].id);return w?.serviceFunction&&await(w?.serviceFunction(s,o,i,e[r],c)),b.status===f.StatusCodes.OK?(s.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(s.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){s.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[r].update=async(s,o,i)=>{if(a?.update)return await a.update(s,o,i,e[r]);{const l=s.transaction?s.transaction:await e[r].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{a?.beforeUpdate&&"function"==typeof a?.beforeUpdate&&await a.beforeUpdate(s,o,i,e[r],c);const d=u.default.getSubscription(t,"beforeUpdate",e[r].type,e[r].id);if(d?.serviceFunction&&await(d?.serviceFunction(s,o,i,e[r],c)),c.cancel){s.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(s,n,o,l,c)=>{a?.afterUpdate&&"function"==typeof a?.afterUpdate&&await a.afterUpdate(s,n,i,e[r],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1});const d=u.default.getSubscription(t,"afterUpdate",e[r].type,e[r].id);d?.serviceFunction&&await(d?.serviceFunction(s,n,i,e[r],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1}))};p(s,e[r],c);const h=await n.default.updateItem(s,o,i,e[r],c,m);if(h?.status!==f.StatusCodes.OK)return s.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[r].type||!0!==e[r].confirmation||!0!==s.body?.isConfirmed)return s.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const g={};a?.beforeConfirm&&"function"==typeof a?.beforeConfirm&&await a.beforeConfirm(s,o,i,e[r],g,c);const y=u.default.getSubscription(t,"beforeConfirm",e[r].type,e[r].id);if(y?.serviceFunction&&await(y?.serviceFunction(s,o,i,e[r],g,c)),c.cancel){s.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 n.default.confirmItem(s,o,i,e[r],{recordsSet:g,...c});a?.afterConfirm&&"function"==typeof a?.afterConfirm&&await a.afterConfirm(s,o,i,e[r],c);const w=u.default.getSubscription(t,"afterConfirm",e[r].type,e[r].id);return w?.serviceFunction&&await(w?.serviceFunction(s,o,i,e[r],c)),b.status===f.StatusCodes.OK?(s.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(s.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){s.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[r].delete=async(s,o,i)=>{if(a?.delete)return await a.delete(s,o,i,e[r]);{const l=s.transaction?s.transaction:await e[r].model.sequelize.transaction(),c={transaction:l};try{a?.beforeDelete&&"function"==typeof a?.beforeDelete&&await a.beforeDelete(s,o,i,e[r],c);const d=u.default.getSubscription(t,"beforeDelete",e[r].type,e[r].id);d?.serviceFunction&&await(d?.serviceFunction(s,o,i,e[r],c));const m=async(s,n,o,l)=>{a?.afterDelete&&"function"==typeof a?.afterDelete&&a.afterDelete(s,n,i,e[r],{deletedObject:o,...c});const d=u.default.getSubscription(t,"afterDelete",e[r].type,e[r].id);d?.serviceFunction&&await(d?.serviceFunction(s,n,i,e[r],{deletedObject:o,...c}))},p=await n.default.deleteItem(s,o,i,e[r],c,m);return s.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){s.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[r].type&&(e[r].findPredefined=async(t,a,s)=>{const o=await n.default.findPredefinedItem(t,a,s,e[r]);return a?a.status(o.status).send(o.responseData):o}),"catalog"!==e[r].type&&"document"!==e[r].type||(e[r].changeDeletionMark=async(s,o,i)=>{const l=s.transaction?s.transaction:await e[r].model.sequelize.transaction(),c={transaction:l,changeDeletionMark:!0};try{a?.beforeUpdate&&"function"==typeof a?.beforeUpdate&&await a.beforeUpdate(s,o,i,e[r],c);const d=u.default.getSubscription(t,"beforeUpdate",e[r].type,e[r].id);d?.serviceFunction&&await(d?.serviceFunction(s,o,i,e[r],c));const m=async(s,n,o,l,d)=>{a?.afterUpdate&&"function"==typeof a?.afterUpdate&&await a.afterUpdate(s,n,i,e[r],{updatedObject:o,existObject:l,...c});const f=u.default.getSubscription(t,"afterUpdate",e[r].type,e[r].id);f?.serviceFunction&&await(f?.serviceFunction(s,n,i,e[r],{updatedObject:o,existObject:l,...c}))},p=await n.default.changeItemDeletionMark(s,o,i,e[r],c,m);return s.transaction||(p?.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){s.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[r].type&&(e[r].accumulationRegister&&(e[r].calculateTotals=async(t,a,s)=>{const o=await n.default.calculateRegisterTotals(t,a,s,e[r]);return a?a.status(o.status).send(o.responseData):o}),"dataProcessors"===r&&(e[r].executeProcessing=async(t,a,s)=>{const n=await o.default.executeProcessing(t,a,s,e[r]);return a?a.status(n.status).send(n.responseData):n},e[r].exportProcessor=async(t,a,s)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.exportProcessor(t,a,s,e[r])},e[r].importProcessor=async(t,a,s)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.importProcessor(t,a,s,e[r])})),"catalog"===e[r].type&&("appObjects"===r?(e[r].executeMigration=async(t,a,s)=>{try{const n=await l.default.executeMigrations(t,a,s,e[r]);return a?a.status(n.status).send(n.responseData):n}catch(e){return m.default.error("Error in executeMigration controller",{meta:e}),a.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}},e[r].existMigrations=async(t,a,s)=>{try{const n=await l.default.existMigrations(t,a,s,e[r]);return a?a.status(n.status).send(n.responseData):n}catch(e){return m.default.error("Error in existMigrations controller",{meta:e}),a.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}}):"scheduledJobs"===r&&(e[r].executeManually=async(t,a,s)=>{const n=await i.default.executeManually(t,a,s,e[r]);return a?a.status(n.status).send(n.responseData):n})),"document"===e[r].type&&(e[r].confirm=async(s,o,i)=>{const l=s.transaction?s.transaction:await e[r].model.sequelize.transaction(),c={},d={cancel:!1,transaction:l};try{const m=await e[r].findById({params:{id:s.body.id}});m.status===f.StatusCodes.OK&&(s.body=JSON.parse(JSON.stringify(m.responseData))),a?.beforeConfirm&&"function"==typeof a?.beforeConfirm&&await a.beforeConfirm(s,o,i,e[r],c,d);const p=u.default.getSubscription(t,"beforeConfirm",e[r].type,e[r].id);if(p?.serviceFunction&&await(p?.serviceFunction(s,o,i,e[r],c,d)),d.cancel){s.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 n.default.confirmItem(s,o,i,e[r],{recordsSet:c,...d});a?.afterConfirm&&"function"==typeof a?.afterConfirm&&await a.afterConfirm(s,o,i,e[r],d);const g=u.default.getSubscription(t,"afterConfirm",e[r].type,e[r].id);return g?.serviceFunction&&await(g?.serviceFunction(s,o,i,e[r],d)),s.transaction||(h.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(h.status).send(h.responseData):h}catch(e){s.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[r].undoConfirm=async(s,o,i)=>{const l=s.transaction?s.transaction:await e[r].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{const d=await e[r].findById({params:{id:s.body.id}});d.status===f.StatusCodes.OK&&(s.body=JSON.parse(JSON.stringify(d.responseData))),a?.undoConfirm&&"function"==typeof a?.undoConfirm&&await a.undoConfirm(s,o,i,e[r],c);const m=u.default.getSubscription(t,"undoConfirm",e[r].type,e[r].id);if(m?.serviceFunction&&await(m?.serviceFunction(s,o,i,e[r],c)),c.cancel){s.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 n.default.undoConfirmItem(s,o,i,e[r],c);return s.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){s.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[r].api&&a)for(const t of e[r].api)a[t.controller]&&(e[r].controllers[t.controller]=async(s,n,o)=>{a[t.controller](s,n,o,e[r])})}return e}},6261:e=>{e.exports=require("events")},6299:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(9031),n=a(r(2282)),o=a(r(4716)),i=r(3903);function l(e,t,r){for(const t of e){for(const e of r)t[e]="expense"===t.recordType?-1*parseFloat(t[e]):parseFloat(t[e]);t.period=u(t.period)}return function(e,t,r){const a={};return e.forEach(e=>{const s=t.map(t=>e[t]).join("|");a[s]||(a[s]={},t.forEach(t=>{a[s][t]=void 0===e[t]?null:e[t]}),r.forEach(e=>{a[s][e]=0})),r.forEach(t=>{a[s][t]+=e[t]})}),Object.values(a)}(e,t,r)}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 r=e.accTable;if(r){const a=await this.getCalculatedPeriod(t.objects.registersCalculation,e.id);if(!a)return;const u=r.dimensions.map(e=>e.dbName);u.push("period");const c=r.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,r,a){const s={};return e.forEach(e=>{const t=r.map(t=>e[t]).join("|");s[t]||(s[t]={},r.forEach(r=>{s[t][r]=e[r]}),a.forEach(e=>{s[t][e]=0})),a.forEach(r=>{s[t][r]-=parseFloat(e[r])})}),t.forEach(e=>{const t=r.map(t=>e[t]).join("|");s[t]||(s[t]={},r.forEach(r=>{s[t][r]=e[r]}),a.forEach(e=>{s[t][e]=0})),a.forEach(r=>{s[t][r]+=parseFloat(e[r])})}),Object.values(s).filter(e=>a.some(t=>0!==e[t]))}(d,f,u,c);await async function(e,t,r,a,n,l){for(const u of t){const t=[];for(let e=(0,o.default)(n.beginPeriod);e.isSameOrBefore(n.endPeriod,"month");e.add(1,"month"))e.isSameOrAfter(u.period)&&t.push(e.toDate());for(let n of t){let t={};if(r.forEach(e=>{t[e]="period"===e?n:u[e]}),await e.findOne({where:t,transaction:l})){let r={};a.forEach(e=>{r[e]=s.Sequelize.literal(`${e} + ${u[e]}`)}),await e.update(r,{where:t,transaction:l})}else{let t={id:(0,i.v4)()};r.forEach(e=>{t[e]="period"===e?n:u[e]}),a.forEach(e=>{t[e]=u[e]}),await e.create(t,{transaction:l})}}}}(r.model,m,u,c,a,t.transaction).catch(e=>{n.default.error(`Error updating records for register: ${r.name}`,{meta:e})})}},async calculateTotals(e,t){if(!e.accumulationRegister)return;const r=e.accTable;if(r){const a="period",s=r.dimensions.map(e=>e.dbName),n=r.resources.map(e=>e.dbName),l=await e.model.findAll();if(0===l.length)return void await r.model.truncate();const u=l.map(e=>{const t={};return s.forEach(r=>{t[r]=e[r]}),t[a]=(0,o.default)(e[a]).add(1,"month").startOf("month").toDate(),n.forEach(r=>{t[r]="receipt"===e.recordType?parseFloat(e[r]):-parseFloat(e[r])}),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 r.model.truncate();const m=await r.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(r=>{if((0,o.default)(r[a]).isSame(e,"month")){const e=s.map(e=>r[e]).join("_");l[e]?n.forEach(t=>{l[e][t]+=r[t]}):l[e]={...r,period:t,id:(0,i.v4)()}}}),Object.keys(f).length>0&&Object.keys(f).forEach(e=>{l[e]?n.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=>(n.forEach(t=>{e[t]=e[t].toString()}),e));f=JSON.parse(JSON.stringify(l)),await r.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,r){const a=await e.model.findOne({where:{registerId:t.registerId},transaction:r});a?await a.update({beginPeriod:t.beginPeriod,endPeriod:t.endPeriod},{where:{registerId:t.registerId},transaction:r}):await e.model.create({id:(0,i.v4)(),...t},{transaction:r})}}},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 r=[];let a=await getParentObjectsArray(e,t);const s=await getRelated(e,t);if(a.length>1&&1===a[a.length-1].length&&a.pop(),s.parents.length>0){1===a.length&&1===a[0].length&&(a=s.parents);for(const e of s.parents)a.push(e)}async function n(e,t){const r=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 r)if(e.isTablePart){const r=await dbConnection_1.default.models[e.model].findAll({where:{parentId:t.id}}),s=e.childs.filter(e=>!e.isParent&&e.isActive);for(const e of s)for(const t of r){const r=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),s=t[e.path];if(s&&r){const e=await dbConnection_1.default.models[r.model].findOne({where:{id:s}});e&&a.children.push(await n(r,e))}}}else{const r=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),s=t[e.path];if(s&&r){const e=await dbConnection_1.default.models[r.model].findOne({where:{id:s}});e&&a.children.push(await n(r,e))}}return a}const o=await n(e,t);if(o.disabled=!0,s.children.length>0)for(const e of s.children)o.children.push(await n(e.appObject,e.object));for(const e of a){let t=null,a={};if(e.length>1)for(let r=e.length-2;r>=0;r--)a={objectId:e[r].object.id,objectType:e[r].objectType,text:e[r].object.presentation,markedToDelete:e[r].object.markedToDelete,icon:!0===e[r].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&&r.push(t)}return r}async function getParentObjectsArray(e,t){let r=[];await async function e(t,a,s=[]){const n=[{object:a,objectType:t.name},...s],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}}),r=t.childs.filter(e=>!e.isParent&&e.isActive);for(const t of r)for(const r of e){const e=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),a=r[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}}),s=n[0].object[t.path];if(s&&a){const t=await dbConnection_1.default.models[a.model].findOne({where:{id:s}});t&&await e(a,t,n)}else r.push(n)}}else r.push(n)}(e,t);for(let e=0;e<r.length;e++){const t=r[e],a=r.filter(e=>e[0]===t[0]);a.length>1&&r.splice(e+1,a.length-1)}return r}async function getRelated(e,t){const r=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,s,n={parents:[],children:[]};if(r.length>0)for(const o of r){a=o,s=[];let r=!1;for(const a of o.subordination)if(a.isTablePart){for(const n of a.childs)if(n.model===e.model&&(s=await dbConnection_1.default.models[o.model].findAll({where:{[n.path]:t.id}}),s.length>0)){r=n.isParent;break}if(s.length>0)break}else if(a.model===e.model&&(s=await dbConnection_1.default.models[o.model].findAll({where:{[a.path]:t.id}}),s.length>0)){r=a.isParent;break}if(s.length>0)for(const o of s)if(r)n.children.push({appObject:a,object:o});else{const r=await getParentObjectsArray(a,o);for(const a of r)a.push({object:t,objectType:e.name}),n.parents.push(a)}}return n}function getModelsByTableNames(e){const t=[];for(const r of e){let e=dbConnection_1.default.modelManager.models.find(e=>e.tableName===r);if(!e)throw new Error(`Table "${r}" not found!`);t.push({tableName:r,model:e.name})}return t}function assembleAttrib(e,t){let r={name:t,type:e.type.key,allowNull:e.allowNull,defaultValue:e.defaultValue};return"STRING"===r.type&&(r.maxLength=e.type.options?.length||null),"DECIMAL"===r.type&&(r.typeOptions=e.type.options||null),"ENUM"===r.type&&(r.values=e.values,r.ref=e._ref),"VIRTUAL"===r.type&&(e._sortBy?r.sortBy=e._sortBy:r.sortBy="createdAt"),r}async function hasModelAccess(e,t){t.user;const r=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=r.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}exports.default={async getAppInfo(e,t,r){const a={appName:"SynergyCore",company:"INTELEKTSOFT",serverVersion:serverPackage?.version||"0.0.0"};t.status(200).send(a)},async getObjectMetadata(e,t,r){const{objectType:a,tableName:s}=e.query,n=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()===s&&(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 r={name:e,foreignKey:t.foreignKey,ref:"",modelName:t.target.name};if(Object.prototype.hasOwnProperty.call(t.target,"options"))if(t.target.options.namespace)r.ref=t.target.options.namespace;else{const e=t.target.options.name.plural;r.ref=e.charAt(0).toLowerCase()+e.slice(1)}const a=t.target.rawAttributes;a.presentation?._sortBy?r.sortBy=a.presentation._sortBy:r.sortBy="createdAt",!1===t.options.constraints?u.push(r):l.push(r)});const c=[];for(let e in o.getAttributes()){if(c.includes(e))continue;let t,r=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,s=a+"Type";let n=i.find(e=>e.name===s);if(n){const e=i.findIndex(e=>e===n);i.splice(e,1)}else c.push(s);for(const n of t){const t=i.findIndex(e=>e.name===a);-1!==t?(i[t].ref.push(n.ref),i[t].model.push(n.modelName)):(r.name=a,r.ref=[n.ref],r.model=[n.modelName],r.fieldPath=e,r.fieldTypePath=s,r.multiType=!0,r.sortBy=n.sortBy,i.push(r))}continue}r.name=t.name,r.ref=t.ref,r.model=t.modelName,r.fieldPath=e,r.sortBy=t.sortBy}i.push(r)}if(n)for(const e in o.associations){const t=o.associations[e];if(!0===t.isMultiAssociation){if(t.options._noTablePart)continue;let r={name:e,type:"tablePart",model:o.associations[e].target?.name};i.push(r)}}t.status(200).send(i)},async getObjectFields(e,t,r){const{objectName:a}=e.query,s=JSON.parse(e.query.withTableParts||"false"),n=await dbConnection_1.default.models.AppObject.findOne({where:{name:a}});if(!n)return void t.status(404).send({message:"Object not found"});let o=n.dbFields;s||(o=o.filter(e=>!e.isTablePart)),t.status(200).send(o)},async getSubordination(e,t,r){const{objectType:a,objectId:s}=e.query,n=await dbConnection_1.default.models.AppObject.findOne({where:{model:a}});if(!n)return void t.status(400).send({message:"Model not found"});const o=await dbConnection_1.default.models[n.model].findOne({where:{id:s}});if(!o)return void t.status(400).send({message:"Object not found"});const i=await getSubordinationTree(n,o);t.status(200).send(i)},async getObjects(e,t,r){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,r){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,r){const{modelName:a}=e.query;let s;if(a&&(s=dbConnection_1.default.models[a]),!s)return console.error("Model not found: ",a),void t.status(400).send({message:"Model not found"});const n=[];Object.keys(s.associations).forEach(e=>{const t=s.associations[e];if(t.options._registerRecords){const e=t.target,r=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]),s={name:r,fields:a};n.push(s)}}),t.status(200).send(n)},async getSetting(e,t,r){const a=e.query.settingName,s=await app_service_1.default.getSetting(a);s?s.status===http_status_codes_1.StatusCodes.OK?t.status(s.status).send(s.value):t.status(s.status).send({message:s.message}):t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Bad incoming parameters"})},async setSetting(e,t,r){const{settingName:a,settingValue:s}=e.body,n=await app_service_1.default.setSetting(a,s);n.status===http_status_codes_1.StatusCodes.OK?t.status(n.status).send(n.value):t.status(n.status).send({message:n.message})},async getEnums(e,t,r){const a=e.query.lang;try{const e=[];let r=await dbConnection_1.default.models.Enum.findAll({include:[{model:dbConnection_1.default.models.EnumValue,as:"values"}],order:["name"]});for(const t of r)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,r){const a=e.query.lang;try{const e=[];let r=await dbConnection_1.default.models.AppObject.findAll({attributes:["id","name","lang","title","path","type","reflection"],order:["name"]});for(const t of r){let r="createdAt";t.reflection?.sortBy?r=t.reflection?.sortBy:"catalog"===t.type?r="name":"document"===t.type&&(r="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:r})}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,r){if(e.user)try{const r={};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 s=`${process.cwd()}/src/modules/${t}`;let n="";if("client"===e.execSide){if(!fs_1.default.existsSync(s)){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(s,"utf-8"),a){const e=/^\s*export\s+(?:async\s+)?function\s+([a-zA-Z0-9_]+)\s*\([^)]*\)\s*{[^}]*}/gm;let t;const r=[];let s=a;for(;null!==(t=e.exec(a));)r.push(t[1]),s=s.replace(t[0],t[0].replace("export ",""));n=`function main() {${s.trim()} return{${r.join(",\n ")}}}`}else n="function main() {return {}}"}else{if(!fs_1.default.existsSync(s)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}a=require(s);let t="";if(a){const e=Object.keys(a).filter(e=>"function"==typeof a[e]);for(const r of e)t+=`\nasync function ${r}(params){ \n const response = await axios.post('/app/exec-common-module',{funcPath:'commonUseServer.${r}', params})\n return response?.data || undefined\n }`;t+=`\n return {${e.join(",\n ")}}`}n=`function main() {${""===t?"return {}":t}}`}const o=await(0,terser_1.minify)(n);r[e.name]=o.code.replace(/^function main\(\)/,"")}const s=crypto_js_1.default.AES.encrypt(JSON.stringify(r),e.user.id).toString();t.status(http_status_codes_1.StatusCodes.OK).send(s)}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,r){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,r){if(e.user)try{const r=await commonCommands_service_1.default.initCommonCommands(e.user.id);t.status(http_status_codes_1.StatusCodes.OK).send(r)}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,r){if(!e.user)return void t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"});const a=e.params.id;let s="";if(!a||"string"!=typeof a||36!==a.length)return s="View settings id is not correct!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:s}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:s});try{let r=await dbConnection_1.default.models.ViewSetting.findByPk(a,{include:[{model:dbConnection_1.default.models.AppObject,attributes:["name","title","presentation","type"],as:"appObject"}]});if(!r)return s="View settings not found!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:s}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:s});const n=JSON.parse(JSON.stringify(r)),o=`${process.cwd()}/src/modules/${n.appObject.type}s/${n.appObject.name}/views/${n.name}/server.module.js`;if(fs_1.default.existsSync(o)){const t=require(o);if(t){const r=Object.keys(t).filter(e=>"function"==typeof t[e]);let a="";for(const e of r)a+=`\nasync function ${e}(params){ \n const response = await store.dispatch('app/execServerFunc', { objectFunc: 'viewSettings.${n.appObject.name}.${n.name}.${e}', params })\n return response?.data || undefined\n }`;a+=`\n return {${r.join(",\n ")}}`;const s=`function main() {${""===a?"return {}":a}}`,o=await(0,terser_1.minify)(s);n.serverModule=crypto_js_1.default.AES.encrypt(o.code.replace(/^function main\(\)/,""),e.user.id).toString()}}if(n.module){n.module=`function main() { return ${n.module.replace(/^\s*export\s+default\s+/,"")}}`;const t=await(0,terser_1.minify)(n.module);n.module=crypto_js_1.default.AES.encrypt(t.code.replace(/^function main\(\)\{return/,"").replace(/\}\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 getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getClientStore(e,t,r){if(e.user)try{let r=await dbConnection_1.default.models.AppObject.findAll({where:{markedToDelete:!1,notClientAccess:!1},attributes:{exclude:["indexes","api","staticAPI"]}});const a=JSON.parse(JSON.stringify(r));for(const t of a)if(t.module){t.module=`function main() { return ${t.module.replace(/^\s*export\s+default\s+/,"")}}`;const r=await(0,terser_1.minify)(t.module);t.module=crypto_js_1.default.AES.encrypt(r.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}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 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,r){const{funcPath:a,params:s}=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 r=e[0],n=e[1];if(!n)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});const o=`commonModules/${r}.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 "${r}" not found!`}),t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Common module "${r}" not found!`})),i){if(!i[n])return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${n}" is not found!`});const e=await i[n](s);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,r){const{role:a,accessType:s}=e.query;let n=!1,o=!1;switch(s){case"read":n=!0;break;case"modify":n=!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},n,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,r){const{query:a,params:s,sid:n}=e.body;if("b0c95264-07b2-4e72-b705-fee2102505d6"!==n||!a||!s){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 r=getModelsByTableNames((new node_sql_parser_1.Parser).tableList(a).map(e=>e.split("::")[2]));if(!0!==await hasModelAccess(r,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 n=await dbConnection_1.default.query(a,{type:sequelize_1.QueryTypes.SELECT,replacements:s});return void t.status(http_status_codes_1.StatusCodes.OK).send(n[0])}catch(e){const r=`Error in app.rawQuery. ${e}`;return logger_service_1.default.error(r),void t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:r})}}}},6357:function(e,t,r){var a=r(8287).hp,s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(r(3648)),o=s(r(4716)),i=s(r(5788)),l=s(r(2282)),u=s(r(2555));function c(e,t,r){const a=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],s="#f2f5fa";for(const n of e){const e=[];let o=!0===r.hideDetails?1:r.fields.length;if(n.isGroup){if(e.push({text:m(n.groups,r),colSpan:o,borderColor:a,fillColor:n.children.length>0?s:null}),o>1)for(let t=1;t<o;t++)e.push({});if(r.colGroups.length>0){for(const t of n.totals)e.push({text:d(t.value||0,t.format),borderColor:a,fillColor:n.children.length>0?s:null,alignment:t.textAlign?t.textAlign:"left"});if(r.showXTotal)for(const t of r.calcs){const r=n.totals.reduce((e,r)=>r.id===t.id?e+r.value:e,0);e.push({text:d(r||0,t.format),borderColor:a,fillColor:n.children.length>0?s:null,alignment:t.textAlign?t.textAlign:"left"})}}else for(const t of n.totals)e.push({text:d(t.value||0,t.format),borderColor:a,fillColor:n.children.length>0?s:null,alignment:t.textAlign?t.textAlign:"left"});t.push(e),n.children.length>0&&c(n.children,t,r)}else{for(let t=0;t<r.fields.length;t++)e.push({text:f(r.fields[t],n,r),borderColor:a,alignment:r.fields[t].textAlign||"left"});if(r.colGroups.length>0){const t=n[r.colGroups[0].name],s={};for(const o of r.cols)for(let i=0;i<r.calcs.length;i++){let l=0;("object"===r.colGroups[0].valueType&&o.id===t?.id||o===t)&&(l=Number(n[r.calcs[i].name]||0)),e.push({text:d(l||0,r.calcs[i].format),borderColor:a,alignment:r.calcs[i].textAlign?r.calcs[i].textAlign:"left"}),Object.hasOwnProperty.call(s,r.calcs[i].name)?s[r.calcs[i].name]+=Number(l):s[r.calcs[i].name]=Number(l)}if(r.showXTotal)for(let t=0;t<r.calcs.length;t++){let n=s[r.calcs[t].name];e.push({text:d(n||0,r.calcs[t].format),borderColor:a,alignment:r.calcs[t].textAlign?r.calcs[t].textAlign:"left"})}}else if(r.rowGroups.length>0)for(let t=0;t<r.calcs.length;t++){let s=Number(n[r.calcs[t].name]||0);e.push({text:d(s||0,r.calcs[t].format),borderColor:a,alignment:r.calcs[t].textAlign?r.calcs[t].textAlign:"left"})}t.push(e)}}}function d(e,t){if(t){const r=JSON.parse(t||'{"NFD": 3}');r.NFD&&(e=Number(e).toFixed(r.NFD))}return e}function f(e,t,r){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?r.lang.boolean.true:r.lang.boolean.false;break;case"enum":if(a&&e.ref){const t=r.enums[e.ref].find(e=>e.value===a);a=t?t.title:a}a=a||""}return a}function m(e,t){let r;if(1===e.length)switch(e[0].valueType){case"number":r=Number(e[0].value||0);break;case"date":r=""===e[0].value?"":e[0].format?(0,o.default)(e[0].value,e[0].format).toDate()||"":e[0].value||"";break;case"boolean":r=e[0].value||!1,r=r?t.lang.boolean.true:t.lang.boolean.false;break;case"object":r=e[0].value.name||"";break;default:r=e[0].value||""}else{let a="";for(let r=0;r<e.length;r++)"object"===e[r].valueType?a+=e[r].value?.name||t.lang.undefined:"boolean"===e[r].valueType?a+=e[r].value?t.lang.boolean.true:t.lang.boolean.false:a+=e[r].value,r<e.length-1&&(a=`${a}, `);r=a||""}return r}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 r={...e.body},s=new n.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 r=[];for(let a=0;a<e.rowGroups.length;a++)!0!==e.rowGroups[a].withParent&&0!==a&&(t.push(r.length>1?r:r[0]),r=[]),r.push(e.rowGroups[a]),a===e.rowGroups.length-1&&t.push(r.length>1?r:r[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 r=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const a of r)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=[],r={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),r.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]),r.body.push(t),e.filterPresentation.length>1)for(let a=1;a<e.filterPresentation.length;a++)t=[],t.push(" "),t.push(e.filterPresentation[a]),r.body.push(t)}r.body.length>0&&t.push({table:r,layout:"noBorders"});const a={body:[],headerRows:0},s=function(e){const t=[],r=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],a="#e9ecef";if(e.rowGroups.length>0){const s=!0===e.hideDetails?1:e.fields.length,n=[];if(n.push({text:p(e.rowGroups[0]),rowSpan:1===e.rowGroups.length&&e.colGroups.length>0&&e.hideDetails?2:1,colSpan:s,borderColor:r,fillColor:a}),s>1)for(let e=1;e<s;e++)n.push({});if(0===e.colGroups.length)for(const t of e.calcs)n.push({text:p(t.title),rowSpan:e.rowGroups.length+(e.hideDetails?0:1),borderColor:r,fillColor:a});else{for(const t of e.cols)n.push({text:"object"===e.colGroups[0].valueType?t.name:t,colSpan:e.calcs.length,borderColor:r,fillColor:a});e.showXTotal&&n.push({text:e.lang.total,colSpan:e.calcs.length,borderColor:r,fillColor:a})}if(t.push(n),e.colGroups.length>0&&1===e.rowGroups.length&&!0===e.hideDetails){const s=[];s.push({});for(const t of e.cols)for(const t of e.calcs)s.push({text:t.title,borderColor:r,fillColor:a});if(e.showXTotal)for(const t of e.calcs)s.push({text:t.title,borderColor:r,fillColor:a});t.push(s)}if(0===e.colGroups.length)for(const n of e.rowGroups.slice(1)){const o=[];if(o.push({text:p(n),colSpan:s,borderColor:r,fillColor:a}),s>1)for(let e=1;e<s;e++)o.push({});for(const t of e.calcs)o.push({});t.push(o)}else if(e.rowGroups.length>1){let n=[];n.push({text:p(e.rowGroups[0]),colSpan:s,borderColor:r,fillColor:a});for(const t of e.colGroupsData)for(const t of e.calcs)n.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:r,fillColor:a});if(e.showXTotal)for(const t of e.calcs)n.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:r,fillColor:a});t.push(n);for(const n of e.rowGroups.slice(2)){let o=[];o.push({text:p(n),colSpan:s,borderColor:r,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 s=[];for(const t of e.fields)s.push({text:t.title,borderColor:r,fillColor:a});if(e.colGroups.length>0)if(1===e.rowGroups.length){for(const t of e.colGroupsData)for(const t of e.calcs)s.push({text:t.title,borderColor:r,fillColor:a});if(e.showXTotal)for(const t of e.calcs)s.push({text:t.title,borderColor:r,fillColor:a})}else{for(const t of e.colGroupsData)for(const t of e.calcs)s.push({});if(e.showXTotal)for(const t of e.calcs)s.push({})}else for(const t of e.calcs)s.push({});t.push(s)}}else{let s=[];for(const t of e.fields)s.push({text:t.title,borderColor:r,fillColor:a});t.push(s)}return t}(e);a.body.push(...s);const n=[];if(c(e.data,n,e),a.body.push(...n),e.showYTotal>0&&e.totals.length>0){const t=function(e){const t=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],r="#f2f5fa",a=[];if(e.rowGroups.length>0){const s=!0===e.hideDetails?1:e.fields.length;if(a.push({text:e.lang.total,colSpan:s,borderColor:t,fillColor:r}),s>1)for(let e=1;e<s;e++)a.push({});e.totals.forEach(e=>{a.push({text:d(e.value||0,e.format),borderColor:t,fillColor:r,alignment:e.textAlign?e.textAlign:"left"})}),e.colGroups.length>0&&e.showXTotal&&e.calcs.map((s,n)=>{const o=e.totals.reduce((e,t)=>t.id===s.id?e+t.value:e,0);a.push({text:d(o||0,s.format),borderColor:t,fillColor:r,alignment:s.textAlign?s.textAlign:"left"})})}else{let s=!0,n=1;for(const o of e.fields){const i=e.totals.find(e=>e.id===o.id);if(i){if(!0===s){if(a.push({text:e.lang.total,colSpan:n-1,borderColor:t,fillColor:r}),n>1)for(let e=1;e<n-1;e++)a.push({});s=!1}a.push({text:d(i.value||0,o.format),borderColor:t,fillColor:r,alignment:o.textAlign?o.textAlign:"left"})}else s||a.push({text:"",borderColor:t,fillColor:r});n++}}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}(r),f={content:o,defaultStyle:{font:"Roboto",fontSize:r.pageFontSize||12},pageOrientation:r.pageOrientation||"landscape",pageSize:r.pageSize||"A4",pageMargins:[r.margins.left||20,r.margins.top||20,r.margins.right||20,r.margins.bottom||20]},m=s.createPdfKitDocument(f,{}),h=[];let g;m.on("data",function(e){h.push(e)}),m.on("end",function(){g=a.concat(h),t&&(t.contentType("application/pdf"),t.send(g))}),m.end()}}},6456:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(2096)),n=a(r(7825)),o=(0,a(r(6918)).default)({interval:"1d",path:`${process.cwd()}/logs/access`});t.default=function(e){e.use((0,s.default)(function(e,t,r){const a={};t.user&&(a.id=t.user.id,a.login=t.user.login,a.name=t.user.name);let s={};t.body&&(s=n.default.cloneDeep(t.body),t.body.password&&delete s.password);const o=new Date,i=Object.fromEntries(Object.entries(t.headers).filter(([e])=>"cookie"!==e)),l={date:o,ip:t.headers["x-real-ip"]||t.headers["x-forwarded-for"]||t.ip,user:a,method:e.method(t,r),url:e.url(t,r),query:t.query,params:t.params,body:s,headers:i,status:e.status(t,r),statusMessage:r.statusMessage,length:e.res(t,r,"content-length"),time:e["response-time"](t,r)};return JSON.stringify(l)},{stream:o}))}},6661:e=>{e.exports=require("base64-js")},6788:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),r(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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var s=r(1752).Strategy;const n=a(r(5486)),o=r(7138),i=a(r(2282)),l=a(r(5788)),u=a(r(9151));t.default={initializePassport(e){e.serializeUser(function(e,t){t(null,e.id)}),e.deserializeUser(async function(e,t){const r=await l.default.models.User.findByPk(e);r&&!0===r.isActive?t(null,r):t("User is not found",!1)}),e.use("login",new s({usernameField:"email",passwordField:"password",passReqToCallback:!0},async function(e,r,a,s){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),s(null,!1);r=t.login,a=t.password}const n=await l.default.models.User.findOne({where:{login:r,isActive:!0}}).catch(e=>(console.error(e),i.default.error("Bad request for user",r),s(null,!1)));if(!n)return i.default.error(`User not found or not active with username: ${r}`),s(null,!1);if(!t(n,a))return i.default.error("Invalid Password",r),s(null,!1);let o="";return e.body.electronCert&&(o=JSON.stringify({login:e.body.email,password:e.body.password,workingPlace:e.body.workingPlace}),n.tokenElectron=u.default.encrypt(o)),s(null,n)}));var t=(e,t)=>n.default.compareSync(t,e.password)},isAuthenticated(e,t,r){if(!e.url.includes("/app")&&!e.url.includes("/auth"))return e.isAuthenticated()?void r():t.status(o.StatusCodes.UNAUTHORIZED).send("only for logged in users");r()},isSuperAdmin:(e,t,r)=>((e,t,r)=>{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");r()})(e,t,r)}},6836:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(2103)),n=a(r(5486)),o="vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3";t.default={generateRandomToken:()=>s.default.lib.WordArray.random(20).toString(s.default.enc.Hex),createPasswordHash:e=>n.default.hashSync(e,n.default.genSaltSync(10)),encrypt(e){const t=s.default.enc.Utf8.parse(o),r=s.default.lib.WordArray.random(16),a=s.default.AES.encrypt(e,t,{iv:r,mode:s.default.mode.CTR,padding:s.default.pad.NoPadding});return{iv:r.toString(s.default.enc.Hex),content:a.ciphertext.toString(s.default.enc.Hex)}},decrypt(e){const t=s.default.enc.Utf8.parse(o),r=s.default.enc.Hex.parse(e.iv),a=s.default.enc.Hex.parse(e.content),n=s.default.lib.CipherParams.create({ciphertext:a}),i=s.default.AES.decrypt(n,t,{iv:r,mode:s.default.mode.CTR,padding:s.default.pad.NoPadding});return s.default.enc.Utf8.stringify(i)}}},6898:e=>{e.exports=require("cookie-parser")},6910:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(7138),n=a(r(6928)),o=a(r(4716)),i=a(r(9896)),l=r(9896),u=a(r(9880)),c=a(r(2282)),d=a(r(2555)),f=a(r(7173)),m="src/database/migrations";let p={},h=[],g=[];async function y(e,t){let r="";for(const a of e)!0!==a.isTablePart?!0!==a.virtual&&(r+=`\n ${a.dbName}: ${await b(a)}`):t.push({...a});return r+="\n createdAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",r+="\n updatedAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",r}async function b(e,t="",r=!1){let a="{\n ",s="";switch(e.type){case"json":s="TEXT";break;case"object":s="UUID";break;default:s=e.type.toUpperCase()}let n="";if("string"===e.type?e.typeOptions?.length&&0!==e.typeOptions?.length&&(n+=`(${e.typeOptions.length})`):"decimal"===e.type&&e.typeOptions?.precision&&e.typeOptions?.scale&&(n+=`(${e.typeOptions?.precision}, ${e.typeOptions?.scale})`),a+=` type: Sequelize.DataTypes.${s}${n},\n`,"enum"===e.type&&e.ref&&(a+=` values: [${p[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 s=e.dbName.endsWith("Id")?e.dbName.slice(0,-2):e.dbName;r?(a+=")",a+=`\n await queryInterface.addColumn('${t}', '${s}Type', {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(a+=" allowNull: false,\n"),a+=" },"):(a+=`\n ${s}Type: {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(a+=" allowNull: false,\n"),a+=" },")}return a}function w(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}function _(){return"\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {"}function S(){return"\n },\n async down(queryInterface, Sequelize) {\n },\n}"}async function v(e,t){e.dbFields=e.fields,e.dbTableName=e.path,e.modified=!1;const r=JSON.stringify(e,null,2);await l.promises.writeFile(t,r,"utf-8")}async function E(e,t){return await e.update({dbFields:e.fields,dbTableName:e.path,modified:!1}).then(async r=>await u.default.updateInitialData(t.model,"app_objects",{objectId:e.id,event:"update",oldValue:e,newValue:r}))}async function R(e,t,r){return`\n await queryInterface.addColumn('${e}', '${t}', ${await b(r,e,!0)})`}function O(e,t,r){return`\n await queryInterface.renameColumn('${e}', '${t}', '${r}')`}async function T(e,t,r){let a="";if(t.type!==r.type)if(function(e,t){const r=["uuid","date","boolean","object","enum"];return r.find(t=>t===e)||r.find(e=>e===t)}(t.type,r.type))a+=N(e.name,r.dbName),a+=await R(e.name,r.dbName,r);else if(s=t.type,n=r.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===s&&e.typeTo===n)){a+=await R(e.name,`temp_${r.dbName}`,r);let s="";["integer","decimal","text"].includes(t.type)&&"string"===r.type?s+=`UPDATE ${e.name} SET temp_${r.dbName} = LEFT(CAST(${r.dbName} AS VARCHAR), ${r?.typeOptions?.length||255})`:["integer","decimal"].includes(t.type)&&"text"===r.type?s+=`UPDATE ${e.name} SET temp_${r.dbName} = CAST(${r.dbName} AS TEXT)`:["text","string"].includes(t.type)&&"integer"===r.type?s+=`UPDATE ${e.name} SET temp_${r.dbName} = CASE\n WHEN ${r.dbName} ~ '^[0-9]+$' THEN CAST(${r.dbName} AS INTEGER)\n ELSE NULL\n END`:["text","string"].includes(t.type)&&"decimal"===r.type&&(s+=`UPDATE ${e.name} SET temp_${r.dbName} = CASE\n WHEN ${r.dbName} ~ '^[0-9]+$' THEN CAST(${r.dbName} AS DECIMAL)\n ELSE NULL\n END`),s&&(a+=function(e){return`\n await queryInterface.sequelize.query(\`${e}\`)`}(s)),a+=N(e.name,r.dbName),a+=O(e.name,`temp_${r.dbName}`,r.dbName)}else a+=await C(e.name,r.dbName,r);else a+=await C(e.name,r.dbName,r);var s,n;return a}async function C(e,t,r){return`\n await queryInterface.changeColumn('${e}', '${t}', ${await b(r,e,!0)})`}function N(e,t){return`\n await queryInterface.removeColumn('${e}', '${t}')`}function A(e,t){return`\n await queryInterface.addIndex('${e}', ['${t}'])`}function D(e,t){return`\n await queryInterface.removeIndex('${e}', ['${t}'])`}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:s.StatusCodes.OK,responseData:{message:"No migrations needed"}};const r=(0,o.default)();for(const a of t)await this.executeObjectMigration(a,e.appObjects,r);r.add(1,"seconds");for(const a of t)await this.addFieldsForeignKeys(r)&&await E(a,e.appObjects);return{status:s.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async executeMigrationsFromFiles(){const e=await(0,f.default)(),t=function(e){const t=[];return function e(r){const a=i.default.readdirSync(r,{withFileTypes:!0});for(const s of a){const a=n.default.join(r,s.name);s.isDirectory()?e(a):s.isFile()&&"object.struct.json"===s.name&&t.push(a)}}(e),t}(`${process.cwd()}/src/modules`),r=(0,o.default)();for(const a of t){r.add(1,"seconds");const t=await l.promises.readFile(a,"utf-8"),s=JSON.parse(t);s.dbTableName&&!s.modified||(console.log("Migration creation for object:",s.name),await this.executeObjectMigration(s,e.appObjects,r,a))}r.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(r)&&await v(a,e)}return{status:s.StatusCodes.OK,responseData:{message:"Migrations were created successfully"}}},async executeMigrations(e,t,r,a){const n=await a.model.findAll({where:{modified:!0}});if(!n||0===n.length)return{status:s.StatusCodes.OK,responseData:{message:"No migrations needed"}};const i=(0,o.default)();for(const e of n)i.add(1,"seconds"),await this.executeObjectMigration(e,a,i);i.add(1,"seconds");for(const e of n)await this.addFieldsForeignKeys(i)&&await E(e,a);return{status:s.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async existMigrations(e,t,r,a){const n=await a.model.findAll({where:{modified:!0}});return n&&0!==n.length?{status:s.StatusCodes.OK,responseData:!0}:{status:s.StatusCodes.OK,responseData:!1}},async executeMigration(e,t,r,a){const n=e.body.objectId;if(!n||"string"!=typeof n||36!==n.length){const e="Object id is not correct!";return c.default.error(`Error in ${a.name} findItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const i=(0,o.default)(),l=await a.model.findByPk(n);return await this.executeObjectMigration(l,a,i)?{status:s.StatusCodes.OK,responseData:{message:"OK"}}:{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Error during migration file creation!"}}},async executeObjectMigration(e,t,r,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=n.default.join(process.cwd(),"src","modules","enums"),t=n.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");p=JSON.parse(e)}}else p=await d.default.initEnums();return e.dbTableName?await this.updateTable({dbName:e.dbTableName,name:e.path,dbFields:e.dbFields,fields:e.fields},r):await this.createTable(e,r)},async addFieldsForeignKeys(e=(0,o.default)()){for(const t of h){console.log("Foreign keys creation for object:",t.path);const r=[];await y(t.fields,r);const a=_(),s=S();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const r=`${t.path}_${e.dbName}_fkey`;o+=`\n await queryInterface.addConstraint('${t.path}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${r}',\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 r=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.path}.js`,i=n.default.join(m,r);await l.promises.writeFile(i,`${a}${o}${s}`)}for(const t of r){const r=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===r.length)continue;let o="";for(const e of r){const r=`${t.dbName}_${e.dbName}_fkey`;o+=`\n await queryInterface.addConstraint('${t.dbName}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${r}',\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(n.default.join(m,i),`${a}${o}${s}`)}}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 r=[];await y(t.fields,r);const a=_(),s=S();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const r=`${t.path}_${e.dbName}_fkey`;o+=`\n await queryInterface.removeConstraint('${t.path}', '${r}');\n`}if(o){e.add(1,"seconds");const r=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.path}.js`,i=n.default.join(m,r);await l.promises.writeFile(i,`${a}${o}${s}`)}for(const t of r){const r=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===r.length)continue;let o="";for(const e of r){const r=`${t.dbName}_${e.dbName}_fkey`;o+=`\n await queryInterface.removeConstraint('${t.dbName}', '${r}');\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(n.default.join(m,i),`${a}${o}${s}`)}}return g=[],!0},prepareFieldsDifs(e,t,r){const a=[];if(!e||!t)return[];for(const s of t){const t=e.find(e=>e.id===s.id);t?!0===s.isTablePart?r.push({action:"changeTable",oldTable:{...t},newTable:{...s}}):(s.dbName!==t.dbName&&a.push({action:"renameField",newName:s.dbName,oldName:t.dbName}),w(t,s)&&a.push({action:"changeField",oldField:{...t},newField:{...s}}),t.index!==s.index&&(!0===s.index?a.push({action:"addIndex",fieldName:s.dbName}):a.push({action:"removeIndex",fieldName:s.dbName}))):!0===s.isTablePart?r.push({action:"createTable",newTable:{...s}}):(a.push({action:"addField",field:{...s}}),!0===s.index&&a.push({action:"addIndex",fieldName:s.dbName}))}for(const s of e)t.find(e=>e.id===s.id)||(!0===s.isTablePart?r.push({action:"dropTable",oldTable:{...s}}):(!0===s.index&&a.push({action:"removeIndex",fieldName:s.dbName}),a.push({action:"dropField",field:{...s}})));return a},async createTable(e,t=(0,o.default)()){h.push(e);let r=`${t.format("YYYYMMDDHHmmss")}-create-table-${e.path}.js`,a=n.default.join(m,r);const s=[];let i=await y(e.fields,s);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)d+=`\n await queryInterface.addIndex('${e.path}', ['${t.dbName}'])`;d+=`${c}`,await l.promises.writeFile(a,d);for(const e of s){t.add(1,"seconds"),r=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${e.dbName}.js`,a=n.default.join(m,r),i=await y(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)d+=`\n await queryInterface.addIndex('${e.dbName}', ['${t.dbName}'])`;d+=`${c}`,await l.promises.writeFile(a,d)}return!0},async updateTable(e,t=(0,o.default)()){let r="";e.name!==e.dbName&&(r+=`\n await queryInterface.renameTable('${e.dbName}', '${e.name}')`);const a=[],s=this.prepareFieldsDifs(e.dbFields,e.fields,a);if(s.length>0){const a=[],n=[];for(const t of s)"addField"===t.action&&(r+=await R(e.name,t.field.dbName,t.field),"object"!==t.field.type||t.field.multiType||a.push(t.field)),"dropField"===t.action&&(r+=N(e.name,t.field.dbName),"object"!==t.field.type||t.field.multiType||n.push(t.field),"object"===t.field.type&&t.field.multiType&&(r+=N(e.name,`${t.field.dbName.slice(0,-2)}Type`))),"renameField"===t.action&&(r+=O(e.name,t.oldName,t.newName)),"changeField"===t.action&&(r+=await T(e,t.oldField,t.newField),"object"!==t.oldField.type||"object"===t.newField.type||t.oldField.multiType||n.push(t.oldField),"object"!==t.oldField.type||"object"!==t.newField.type||t.oldField.ref===t.newField.ref||t.oldField.multiType||t.newField.multiType||(n.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&&n.push(t.oldField),"object"===t.oldField.type&&t.oldField.multiType&&"object"===t.newField.type&&!t.newField.multiType&&(r+=N(e.name,`${t.oldField.dbName.slice(0,-2)}Type`),a.push(t.newField))),"addIndex"===t.action&&(r+=A(e.name,t.fieldName)),"removeIndex"===t.action&&(r+=D(e.name,t.fieldName));a.length>0&&h.push({path:e.name,fields:a}),n.length>0&&(g.push({path:e.name,fields:n}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")))}if(""!==r){let a=`${t.format("YYYYMMDDHHmmss")}-change-table-${e.isTablePart?"part-":""}${e.dbName}.js`,s=n.default.join(m,a),o=`\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {${r}\n },\n async down(queryInterface, Sequelize) {\n },\n}`;await l.promises.writeFile(s,o)}for(const r of a){if("createTable"===r.action){t.add(1,"seconds");let a=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${r.newTable.dbName}.js`,s=n.default.join(m,a);const o=await y(r.newTable.fields,[]),i=_(),u=S();let c=`${i}\n await queryInterface.createTable('${r.newTable.dbName}', {${o}\n })${u}`;await l.promises.writeFile(s,c),h.push({path:e.name,fields:[r.newTable]})}if("changeTable"===r.action&&await this.updateTable({dbName:r.oldTable.dbName,name:r.newTable.dbName,dbFields:r.oldTable.fields,fields:r.newTable.fields,isTablePart:!0},t.add(1,"seconds")),"dropTable"===r.action){g.push({path:e.name,fields:[r.oldTable]}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")),t.add(1,"seconds");let a=`${t.format("YYYYMMDDHHmmss")}-drop-table-part-${r.oldTable.dbName}.js`,s=n.default.join(m,a);const o=_(),i=S();let u=`${o}\n await queryInterface.dropTable('${r.oldTable.dbName}')${i}`;await l.promises.writeFile(s,u)}}return!0}}},6918:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(9896)),n=a(r(6928)),o=a(r(4716));function i(e,t){const r=n.default.join(t,`${e}.log`);return s.default.createWriteStream(r,{flags:"a"})}t.default=function(e){const t=e.interval||"1d",r=n.default.resolve(e.path||"src/core/services");s.default.existsSync(r)||s.default.mkdirSync(r,{recursive:!0});let a=(0,o.default)(new Date).format("YYYYMMDD"),l=i(a,r);function u(){const e=(0,o.default)(new Date).format("YYYYMMDD");e!==a&&(l.end(),l=i(e,r),a=e)}const c=(0,o.default)().endOf("day").diff((0,o.default)());return setTimeout(()=>{u(),setInterval(u,function(e){const t={s:1e3,m:6e4,h:36e5,d:864e5},r=e.match(/^(\d+)([a-z]+)$/);if(!r||!t[r[2]])throw new Error("Invalid interval format");return parseInt(r[1],10)*t[r[2]]}(t))},c),{write:e=>{l.write(e)}}}},6928:e=>{e.exports=require("path")},6961:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7252)),n=a(r(8356)),o=s.default.Router(),i="report";o.get(`/${i}/settings/:id`,n.default.getSettings),o.post(`/${i}/result`,n.default.getResult),t.default=o},6980:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(1572)),n=r(7138),o=r(3903),i=r(9031),l=a(r(5788)),u=a(r(6836)),c=a(r(2282)),d=async(e,t)=>{const r=await l.default.models.User.findOne({where:{email:e}}),a=r?.language,s={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 s?s[a][t]:s.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,r,a){return{from:e.name,to:t,bcc:e.name,subject:r,html:a}}t.default={async emailConfirmationInstructions(e,t,r,a){const n=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!n)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});n.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),n.password=u.default.decrypt(JSON.parse(n.password));const o=m(n),i=s.default.createTransport(o.credentials);i.verify(async function(s,o){if(s)c.default.error("Error in emailConfirmationInstructions ",{meta:s});else{const s=await d(e,"registration"),o=`${process.env.ALLOW_ORIGIN}/email-confirmation`,l=s.hello+t+s.begining+'<a href="'+o+"/"+a+'">Confirm Your Email Address</a>'+s.middle+r+s.end,u=p(n,e,s.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:n.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 r=await async function(){return await l.default.models.User.findAll().then(e=>0===e.length).catch(()=>!1)}();return!0===r&&(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===r&&this.emailConfirmationInstructions(e.email,e.name,e.login,e.emailConfirmationToken);const t={email:e.email,login:e.login,name:e.name};return{httpStatus:n.StatusCodes.OK,result:t}}).catch(e=>(c.default.error("Error in register Service",{meta:e}),{httpStatus:n.StatusCodes.BAD_REQUEST,result:{message:"User create error."}}))}catch(e){return c.default.error("Error in register Service",{meta:e}),{httpStatus:n.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:n.StatusCodes.OK,result:!0}:(c.default.error("Error in confirmEmailAddress Service",{meta:"User not save."}),{httpStatus:n.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,n.getReasonPhrase)(n.StatusCodes.INTERNAL_SERVER_ERROR)}}):(c.default.error("Error in confirmEmailAddress Service",{meta:"Token not find."}),{httpStatus:n.StatusCodes.NOT_FOUND,result:{message:(0,n.getReasonPhrase)(n.StatusCodes.NOT_FOUND)}})).catch(e=>(c.default.error("Error in confirmEmailAddress Service",{meta:e}),{httpStatus:n.StatusCodes.BAD_REQUEST,result:{errorDetails:e}})),async resendEmailAddressConfirmationLink(e){try{let t=await l.default.models.User.findOne({where:{email:e}}),r=u.default.generateRandomToken();return t&&r?(t=await t.update({emailConfirmationToken:r}),t?(this.emailConfirmationInstructions(t.email,t.name,t.login,t.emailConfirmationToken),{httpStatus:n.StatusCodes.OK,result:!0}):{httpStatus:n.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,n.getReasonPhrase)(n.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:n.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:n.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:n.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Client origin is not defined"}};const r=await l.default.models.User.findOne({where:{email:e}});if(!r)return c.default.error("Error in forgotPassword Service",{meta:"Email not found"}),{httpStatus:n.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},h=await r.update({...i});return h?async function(e,t,r,a,o){const i=await f();if(!i)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"}),{httpStatus:n.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:n.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=s.default.createTransport(l.credentials);try{await h.verify()}catch(e){return c.default.error("Error in emailConfirmationInstructions ",{meta:e}),{httpStatus:n.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:`Email verification error. ${e}`}}}const g=await d(e,"passwordReset"),y=`${o}/password-reset`,b=g.metter+r+g.begining+r+g.middle+'<a href="'+y+"/"+a+'">Reset Password</a>'+g.end,w=p(i,e,g.subject,b);return await h.sendMail(w).then(e=>(c.default.verbose("Service Email sent",{meta:e}),{httpStatus:n.StatusCodes.OK,result:{message:"OK"}})).catch(e=>(c.default.error("Error while sending service email",{meta:e}),{httpStatus:n.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:n.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,n.getReasonPhrase)(n.StatusCodes.INTERNAL_SERVER_ERROR)}})}catch(e){return c.default.error("Error in forgotPassword Service",{meta:e}),{httpStatus:n.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:n.StatusCodes.OK,result:!0}:{httpStatus:n.StatusCodes.BAD_REQUEST,result:!1}}catch(e){return c.default.error("Error in isPasswordResetTokenValid Service",{meta:e}),{httpStatus:n.StatusCodes.BAD_REQUEST,result:{message:e}}}},async resetPassword(e,t){try{let r=await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}});return r?(r=await r.update({passwordResetToken:null,passwordResetExpires:null,password:u.default.createPasswordHash(t)}),r?(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 r=m(t),a=s.default.createTransport(r.credentials);a.verify(async function(r,s){if(r)c.default.error("Error in emailConfirmationInstructions ",{meta:r});else{const r=await d(e,"passwordResetConfirmation"),s=p(t,e,r.subject,r.main);a.sendMail(s,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}(r.email,r.name),{httpStatus:n.StatusCodes.OK,result:!0}):{httpStatus:n.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,n.getReasonPhrase)(n.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:n.StatusCodes.NOT_FOUND,result:{message:(0,n.getReasonPhrase)(n.StatusCodes.NOT_FOUND)}}}catch(e){return c.default.error("Error in resetPassword Service",{meta:e}),{httpStatus:n.StatusCodes.BAD_REQUEST,result:{message:e}}}},async emailOnUserStateChange(e,t){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 a=m(r),n=s.default.createTransport(a.credentials);n.verify(async function(a,s){if(a)c.default.error("Error in emailConfirmationInstructions ",{meta:a});else{const a=await d(e,"statusChange"),s=p(r,e,a.subject,a.start+t+a.end);n.sendMail(s,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")},7135:e=>{e.exports=require("node-sql-parser")},7138:e=>{e.exports=require("http-status-codes")},7173:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(9031),n=a(r(5788)),o=a(r(4716)),i=a(r(9896)),l=a(r(7825)),u=a(r(2555));let c={};function d(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 f(e){const t={type:s.DataTypes.STRING},r=e.type.toUpperCase();return"STRING"===r?e.typeOptions?.length&&0!==e.typeOptions?.length?t.type=s.DataTypes[r](e.typeOptions?.length):t.type=s.DataTypes[r]():"JSON"===r?(t.type=s.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"===r?(t.type=s.DataTypes.ENUM,t.values=e.ref?c[e.ref]:["empty"],t._ref=e.ref):t.type=s.DataTypes[r](),"UUID"===r&&"id"===e.name&&(t.defaultValue=s.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 m(e,t,r,a){let o={};for(const a of e.fields)"object"!==a.type?o[a.dbName]=f(a):(a.multiType&&(o[a.dbName]={type:s.DataTypes.UUID,index:!0===a.index,allowNull:!0!==a.notNull},o[`${a.name}Type`]={type:s.DataTypes.STRING,index:!0===a.index,allowNull:!0!==a.notNull}),r.push({objectName:t.name,tableName:e.name,field:a}));class i extends s.Model{}const l={title:e.title,name:e.name,model:i.init(o,{sequelize:n.default,modelName:e.model,tableName:e.dbName})};t.model.hasMany(l.model,{foreignKey:"parentId",as:e.name,onDelete:"CASCADE",hooks:!0});for(const t of e.fields)t.leading&&a.push({field:t,belongTable:l.model});t.tables[e.name]=l}function p(e,t,r){let a={},o=[],i=[];a.id={type:s.DataTypes.UUID,primaryKey:!0,allowNull:!1},a.period={type:s.DataTypes.DATE,allowNull:!1,_index:!0};for(const e of t.fields)"dimension"!==e.role&&"resource"!==e.role||("object"!==e.type?a[e.dbName]=f(e):r.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 s.Model{}const c={name:`${t.name}Acc`,dimensions:o,resources:i,model:u.init(a,{sequelize:n.default,modelName:`${e.model}Acc`,tableName:`${e.path}_acc`})};t.accTable=c}t.default=async()=>{c=await u.default.initEnums();const e=await n.default.query('SELECT * FROM app_objects WHERE app_objects."markedToDelete" = false AND app_objects."dbTableName" IS NOT NULL',{type:s.QueryTypes.SELECT}),t={},r=[],a=[];for(const i of e){let e={},l=[];const u=JSON.parse(i.dbFields);for(const t of u.filter(e=>!e.isTablePart))"object"!==t.type?e[t.dbName]=f(t):(t.multiType&&(e[t.dbName]={type:s.DataTypes.UUID,allowNull:!0!==t.notNull,_index:!0===t.index},e[`${t.name}Type`]={type:s.DataTypes.STRING,allowNull:!0!==t.notNull,_index:!0===t.index}),r.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 c=i.reflection?JSON.parse(i.reflection):{};"catalog"===i.type&&(e.presentation={type:new s.DataTypes.VIRTUAL(s.DataTypes.STRING,c.fields?c.fields:["name"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(c.template&&""!==c.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let r;for(;null!==(r=e.exec(c.template));)r.index===e.lastIndex&&e.lastIndex++,r.forEach(e=>{t.push(e)});let a=c.template;for(const e of t){const t=e.replace("[","").replace("]","");let r=this[t];const s=u.find(e=>e.dbName===t);if(s)if("date"===s.type){const e=s.format&&""!==s.format?s.format:"DD.MM.YYYY HH:mm:ss";r=(0,o.default)(this[t]).format(e)}else r=this[t];a=a.replace(e,r)}return a}return c.fields?.length>0?c.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:c.sortBy?c.sortBy:"name"}),"document"===i.type&&(e.presentation={type:new s.DataTypes.VIRTUAL(s.DataTypes.STRING,c.fields?c.fields:["numberStr"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(c.template&&""!==c.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let r;for(;null!==(r=e.exec(c.template));)r.index===e.lastIndex&&e.lastIndex++,r.forEach(e=>{t.push(e)});let a=c.template;for(const e of t){const t=e.replace("[","").replace("]","");let r=this[t];const s=u.find(e=>e.dbName===t);if(s)if("date"===s.type){const e=s.format&&""!==s.format?s.format:"DD.MM.YYYY HH:mm:ss";r=(0,o.default)(this[t]).format(e)}else r=this[t];a=a.replace(e,r)}return a}return c.fields?.length>0?c.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:c.sortBy?c.sortBy:"numberStr"});class d extends s.Model{}const h={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:c,withoutTimestamps:i.withoutTimestamps,processedPresentation:i.processedPresentation,accessRoleId:i.accessRoleId,accumulationRegister:i.accumulationRegister,model:d.init(e,{sequelize:n.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)&&(h.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:h.model});for(const e of u.filter(e=>e.isTablePart))m(e,h,r,a);"register"===h.type&&h.accumulationRegister&&p(i,h,r),t[h.name]=h}const l=[];for(const a of r){const r=t[a.objectName];if(r)if(a.field.multiType){if(!Array.isArray(a.field.ref))continue;const t=[];let s=!1;for(const n of a.field.ref){const a=e.find(e=>e.name===n);if(!a){s=!0,console.info("No belongs to object: ",`${r.name} -> ${n}`);break}t.push(a)}if(!s){const e=[];let s=!1;for(const o of t){const i=n.default.models[o.model];if(!i){s=!0,l.push({refField:a,object:r,belongToObject:t});break}e.push({object:o,model:i})}if(!s){const t=a.tableName?r.tables[a.tableName].model:a.accModel?r.accTable?.model:r.model;for(const s of e){const e=d(a);e.constraints=!1,e.as=`${a.field.name}${s.model.name}`,t.belongsTo(s.model,e);let n=a.accModel?`${r.name}Acc`:r.name;s.model.associations[n]&&(n=`${a.field.name}${n.charAt(0).toUpperCase()+n.slice(1)} `);const o={foreignKey:a.field.dbName,_noTablePart:!0,_registerRecords:"recorder"===a.field.name||void 0,constraints:!1,as:n,scope:{[`${a.field.name}Type`]:s.object.name}};s.model.hasMany(t,o)}(a.tableName?t:r.model).addHook("afterFind",t=>{Array.isArray(t)||(t=t?[t]:[]);for(const r of t)if(a.tableName){const t=e.find(e=>r[`${a.field.name}Type`]===e.object.name);if(t&&r[`${a.field.name}${t.model.name}`]){t&&void 0!==r[`${a.field.name}${t.model.name}`]&&(r[a.field.name]=r[`${a.field.name}${t.model.name}`],r.dataValues[a.field.name]=r[`${a.field.name}${t.model.name}`]);for(const t of e)delete r[`${a.field.name}${t.model.name}`],delete r.dataValues[`${a.field.name}${t.model.name}`]}}else{const t=e.find(e=>r[`${a.field.name}Type`]===e.object.name);t&&void 0!==r[`${a.field.name}${t.model.name}`]&&(r[a.field.name]=r[`${a.field.name}${t.model.name}`],r.dataValues[a.field.name]=r[`${a.field.name}${t.model.name}`]);for(const t of e)delete r[`${a.field.name}${t.model.name}`],delete r.dataValues[`${a.field.name}${t.model.name}`]}})}}}else{const t=e.find(e=>e.name===a.field.ref);if(t){const e=n.default.models[t.model];if(e){const t=d(a);if(a.tableName)r.tables[a.tableName].model.belongsTo(e,t);else if(a.accModel)r.accTable?.model.belongsTo(e,t);else try{r.model.belongsTo(e,t)}catch(r){console.error("Error in belongsTo: ",{belongToModel:e,fieldData:t},r)}}else l.push({refField:a,object:r,belongToObject:t})}else console.info("No belongs to object: ",`${r.name} -> ${a.field.name} (${a.field.ref})`)}else console.info("No object: ",a.objectName)}for(const r of a){const a=t[r.field.ref];if(a)a.model.hasMany(r.belongTable,{foreignKey:r.field.dbName,as:r.field.leadingAlias,_noTablePart:!0});else{const t=e.find(e=>e.name===r.field.ref);t?l.push({leading:!0,leadingField:r,model:t.model}):console.info("No app object for leading field: ",r.field.ref)}}for(const e in t){if(!t[e].processedPresentation)continue;const r=t[e];let a;const s=`${r.type}s/${r.name}/server.module.js`,n=`${process.cwd()}/src/modules/${s}`;i.default.existsSync(n)&&(a=require(n)),a?.initPresentation&&r.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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7252)),n=r(9876),o=a(r(1688)),i=s.default.Router();i.get("/access_log",o.default.canRead({key:"access_logs"}),n.accessLogsController.getFilesInfo),t.default=i},7501:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(9031),n=a(r(5788)),o=a(r(2282)),i=a(r(2103)),l=r(9239);t.default={async initCommonCommands(e){const t=await async function(){try{return(await n.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:s.QueryTypes.SELECT})).reduce((e,t)=>{let r=e.findIndex(e=>e.name===t.name);return-1===r&&(r=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),r>-1&&t.objectId&&e[r].objects.push(t.objectId),e},[])}catch(e){return console.error(e),[]}}(),r=await async function(e){try{const t=(await n.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:s.QueryTypes.SELECT})).reduce((e,t)=>{let r=e.findIndex(e=>e.name===t.name);return-1===r&&(r=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),r>-1&&t.objectId&&e[r].objects.push(t.objectId),e},[]),r=/^\s*export\s+/gm,a=/^\s*(?:async\s+)?function\s+commandProcessing\s*\([^)]*\)\s*{[\s\S]*?}/gm;for(const s of t){if(s.module){s.module=s.module.replace(r,""),a.lastIndex=0;const t=a.test(s.module);let n="";n=t?`function main() {${s.module.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(n);s.module=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),s.module=null}}if(s.moduleV3){s.moduleV3=s.moduleV3.replace(r,"function "),a.lastIndex=0;const t=a.test(s.moduleV3);let n="";n=t?`function main() {${s.moduleV3.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(n);s.moduleV3=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),s.moduleV3=null}}}return t}catch(e){return console.error(e),[]}}(e);for(const e of r)if(e.groupId){const r=t.find(t=>t.id===e.groupId&&t.isGroup);r&&r.items.push({...e})}else t.push({...e});return t}}},7565:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7252)),n=a(r(6304)),o=s.default.Router(),i="app";o.get(`/${i}/info`,n.default.getAppInfo),o.get(`/${i}/objects`,n.default.getObjects),o.get(`/${i}/object_meta`,n.default.getObjectMetadata),o.get(`/${i}/object_fields`,n.default.getObjectFields),o.get(`/${i}/subordination`,n.default.getSubordination),o.get(`/${i}/registers_meta`,n.default.getRegistersMetadata),o.get(`/${i}/setting`,n.default.getSetting),o.get(`/${i}/enums`,n.default.getEnums),o.get(`/${i}/app-objects`,n.default.getAppObjects),o.get(`/${i}/common-modules`,n.default.getCommonModules),o.get(`/${i}/event-subscriptions`,n.default.getEventSubscriptions),o.get(`/${i}/view-settings/:id`,n.default.getViewSettings),o.get(`/${i}/store`,n.default.getClientStore),o.get(`/${i}/common-commands`,n.default.getCommonCommands),o.get(`/${i}/has-role`,n.default.hasRole),o.post(`/${i}/setting`,n.default.setSetting),o.post(`/${i}/raw-query`,n.default.rawQuery),o.post(`/${i}/exec-func`,n.default.execFunc),o.post(`/${i}/exec-common-module`,n.default.execCommonModuleFunc),t.default=o},7636:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(8608)),n=r(696),o=a(r(4716)),i=a(r(5788)),l=a(r(2282)),u=a(r(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,r,a,s,n){for(const o of t){let t=!0===a?1:e.fields.length;if(s.getRow(r).outlineLevel=n,o.isGroup){const i=s.getCell(r,1);if(g(e,i,o.groups),o.children.length>0?d(i):f(i),s.mergeCells(r,1,r,t),t+=1,e.colGroups.length>0){for(const e of o.totals){const a=s.getCell(r,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),n=s.getCell(r,t);n.value=e||0,o.children.length>0?d(n):f(n),n.alignment={horizontal:a.textAlign?a.textAlign:"left"},n.numFmt=p(a.format),t+=1}}else for(const e of o.totals){const a=s.getCell(r,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}r+=1,o.children.length>0&&(r=m(e,o.children,r,a,s,n+1))}else{for(let t=0;t<e.fields.length;t++){const a=s.getCell(r,t+1);h(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],n={};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=s.getCell(r,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(n,e.calcs[l].name)?n[e.calcs[l].name]+=Number(u):n[e.calcs[l].name]=Number(u),t+=1}if(e.showXTotal)for(let a=0;a<e.calcs.length;a++){let o=n[e.calcs[a].name];const i=s.getCell(r,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 n=Number(o[e.calcs[a].name]||0);const i=s.getCell(r,t+a);i.value=n||0,f(i),i.alignment={horizontal:e.calcs[a].textAlign?e.calcs[a].textAlign:"left"},i.numFmt=p(e.calcs[a].format)}r+=1}}return r}function p(e){let t=null;if(e){const r=JSON.parse(e||'{"NFD": 3}'),a=0;r.NFD&&(t=a.toFixed(r.NFD))}return t}function h(e,t,r,a){let s=r[t.name]||null;switch(t.valueType){case"number":{let r=parseFloat(s);isNaN(r)&&(r=0),e.value=r||0,t.format&&(e.numFmt=p(t.format));break}case"date":default:e.value=s||"";break;case"object":e.value=s.name||"";break;case"boolean":e.value=Boolean(s||!1),e.numFmt="BOOLEAN";break;case"enum":if(s&&t.ref){const e=a.enums[t.ref].find(e=>e.value===s);s=e?e.title:s}e.value=s||""}}function g(e,t,r){if(1===r.length)switch(r[0].valueType){case"number":t.value=Number(r[0].value||0);break;case"date":""===r[0].value?t.value=null:r[0].format?t.value=(0,o.default)(r[0].value,r[0].format).toDate()||null:t.value=r[0].value||null;break;case"object":t.value=r[0].value.name||"";break;case"boolean":t.value=Boolean(r[0].value||!1),t.numFmt="BOOLEAN";break;default:t.value=r[0].value||""}else{let a="";for(let t=0;t<r.length;t++)"object"===r[t].valueType?a+=r[t].value?.name||e.lang.undefined:"boolean"===r[t].valueType?a+=r[t].value?e.lang.boolean.true:e.lang.boolean.false:a+=r[t].value,t<r.length-1&&(a=`${a}, `);t.value=a||""}}t.default={async generateExcel(e,t=null){const r={...e.body};if(r.rowGroups.length>1){const e=[];let t=[];for(let a=0;a<r.rowGroups.length;a++)!0!==r.rowGroups[a].withParent&&0!==a&&(e.push(t.length>1?t:t[0]),t=[]),t.push(r.rowGroups[a]),a===r.rowGroups.length-1&&e.push(t.length>1?t:t[0]);r.rowGroups=e}r.rowGroups.length>0&&(r.fields=r.fields.filter(e=>!r.calcs.find(t=>t.name===e.name))),r.enums=await async function(e){try{const t={};let r=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const a of r)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}),[]}}(r.langCode);const a=new s.default.Workbook,o=a.addWorksheet("Sheet 1",{pageSetup:{paperSize:9,orientation:"landscape"}});let f=1;if(r.periodPresentation){let e=r.periodPresentation.length>20?r.lang.byPeriod:r.lang.byDate;o.getCell(f,1).value=`${e}:`,o.getCell(f,2).value=r.periodPresentation,f++}if(Array.isArray(r.filterPresentation)&&r.filterPresentation.length>0){o.getCell(f,1).value=`${r.lang.filter}:`;for(const e of r.filterPresentation)o.getCell(f,2).value=e,f++}const h=r.rowGroups.length>0&&!0===r.hideDetails;let g=f,y=r.rowGroups.length+(!0===h?0:1);y=r.colGroups.length>0&&y<2?2:y;let b=!0===h?1:r.fields.length;if(r.rowGroups.length>0){const e=1===r.rowGroups.length&&r.colGroups.length>0&&h?1:0;r.rowGroups.map(t=>{const r=o.getCell(f,1);r.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(r),o.mergeCells(f,1,f+e,b),f+=1})}!0!==h&&(r.fields.map((e,t)=>{const r=o.getCell(f,t+1);c(r),r.value=e.title}),f+=1);const w=r.calcs.length;if(r.colGroups.length>0){for(const e of r.cols){const t=o.getCell(g,b+1);t.value=e.name,c(t),o.mergeCells(g,b+1,g,b+w),r.calcs.map((e,t)=>{const r=o.getCell(g+1,b+t+1);r.value=e.title,c(r),o.mergeCells(g+1,b+t+1,g+y-1,b+t+1)}),b+=w}if(r.showXTotal){const e=o.getCell(g,b+1);e.value=r.lang.total,c(e),o.mergeCells(g,b+1,g,b+w),r.calcs.map((e,t)=>{const r=o.getCell(g+1,b+t+1);r.value=e.title,c(r),o.mergeCells(g+1,b+t+1,g+y-1,b+t+1)})}}else r.rowGroups.length>0&&r.calcs.map((e,t)=>{const r=o.getCell(g,b+t+1);r.value=e.title,c(r),o.mergeCells(g,b+t+1,g+y-1,b+t+1)});f=m(r,r.data,g+y,h,o,0);let _=1;if(r.showYTotal>0&&r.totals.length>0){let e=!0===h?1:r.fields.length;if(r.rowGroups.length>0){const t=o.getCell(f,1);t.value=r.lang.total,d(t),o.mergeCells(f,1,f,e),r.totals.forEach((t,r)=>{_=e+r+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"}}),r.colGroups.length>0&&r.showXTotal&&r.calcs.map((t,a)=>{const s=r.totals.reduce((e,r)=>r.id===t.id?e+r.value:e,0);_=e+r.totals.length+a+1;const n=o.getCell(f,_);n.value=s||0,d(n),n.numFmt=p(t.format),n.alignment={horizontal:t.textAlign?t.textAlign:"left"}})}else{let e=!0,t=1;for(const a of r.fields){const s=r.totals.find(e=>e.id===a.id);if(s){if(!0===e){const a=o.getCell(f,1);a.value=r.lang.total,d(a),o.mergeCells(f,1,f,t-1),e=!1}const n=o.getCell(f,t);n.value=Number(s.value||0),d(n),n.numFmt=p(s.format),n.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 r=6;e.eachCell(e=>{if(e.row>=t&&!e.isMerged){let t;if(e.numFmt&&null!=e.value)switch(e.type){case s.default.ValueType.Date:{const r=function(e){const t=e.getTimezoneOffset()/1440;return e.getTime()/864e5+(25569-t)}(e.value);t=(0,n.format)(e.numFmt,r).length;break}case s.default.ValueType.Number:default:t=(0,n.format)(e.numFmt,e.value).length}else t=e.value.toString().length;r=Math.max(r,t)}}),r>50&&(r=50),e.width=r+2})}(o,g),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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),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 s=a(r(6928)),n=a(r(7252)),o=a(r(7174)),i=a(r(6898)),l=a(r(2525)),u=a(r(8577)),c=r(3903),d=a(r(8278)),f=a(r(5977)),m=a(r(3857)),p=a(r(1763)),h=a(r(6456)),g=a(r(5560)),y=a(r(3407)),b=a(r(3464)),w=a(r(6797)),_=a(r(2362));t.eventService=_.default;const S=a(r(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,n.default)();t.app=E,(0,h.default)(E),E.use(n.default.json({limit:"100mb"})),E.use(n.default.urlencoded({extended:!1})),E.use((0,i.default)()),E.use(n.default.static(s.default.join("src","../public"))),E.use((0,l.default)()),E.use((0,o.default)()),r(9);const R={genid:()=>(0,c.v4)(),store:new v({db:S.default,table:"Session",extendDefaultFields:function(e,t){const r=t?.passport?.user;return{id:(0,c.v4)(),data:e.data,expires:e.expires,userId:r,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)(R));const O=(0,p.default)({windowMs:6e4,max:1e5,statusCode:429});E.use(O),async function(e){try{await(0,g.default)(e),(0,y.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());const T={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"],credentials:!0};E.use((0,u.default)(T)),_.default.init(E),E.set("views",s.default.join("src","views")),E.set("view engine","pug"),E.use((e,t,r,a)=>{console.error(e),r.locals.message=e.message,r.locals.error="development"===t.app.get("env")?e:{},r.status(e.status||500),r.render("error")});const C=a(r(1688));t.accessRights=C.default;const N=a(r(2282));t.logger=N.default;const A=a(r(2555));t.commonService=A.default;const D=a(r(3958));t.controllerService=D.default;const $=a(r(4621));t.appService=$.default;const j=a(r(6224));t.defineObjects=j.default;const I=a(r(6836));t.cryptoGen=I.default;const x=a(r(2671));t.documentService=x.default;const P=a(r(9880));t.seederService=P.default;const F=a(r(6299));t.registerService=F.default;const M=a(r(6910));t.migrationsService=M.default},8278:e=>{e.exports=require("passport")},8287:(e,t,r)=>{var a=r(6661),s=r(8876),n="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,r){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,r)}function u(e,t,r){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 r=0|h(e,t),a=i(r),s=a.write(e,t);return s!==r&&(a=a.slice(0,s)),a}(e,t);if(ArrayBuffer.isView(e))return function(e){if(B(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(B(e,ArrayBuffer)||e&&B(e.buffer,ArrayBuffer))return m(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(B(e,SharedArrayBuffer)||e&&B(e.buffer,SharedArrayBuffer)))return m(e,t,r);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,r);var s=function(e){if(l.isBuffer(e)){var t=0|p(e.length),r=i(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||L(e.length)?i(0):f(e):"Buffer"===e.type&&Array.isArray(e.data)?f(e.data):void 0}(e);if(s)return s;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,r);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),r=i(t),a=0;a<t;a+=1)r[a]=255&e[a];return r}function m(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var a;return a=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),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 h(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||B(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 r=e.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===r)return 0;for(var s=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return k(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return U(e).length;default:if(s)return a?-1:k(e).length;t=(""+t).toLowerCase(),s=!0}}function g(e,t,r){var a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return T(this,t,r);case"ascii":return N(this,t,r);case"latin1":case"binary":return A(this,t,r);case"base64":return O(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return $(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function y(e,t,r){var a=e[t];e[t]=e[r],e[r]=a}function b(e,t,r,a,s){if(0===e.length)return-1;if("string"==typeof r?(a=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),L(r=+r)&&(r=s?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(s)return-1;r=e.length-1}else if(r<0){if(!s)return-1;r=0}if("string"==typeof t&&(t=l.from(t,a)),l.isBuffer(t))return 0===t.length?-1:w(e,t,r,a,s);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):w(e,[t],r,a,s);throw new TypeError("val must be string, number or Buffer")}function w(e,t,r,a,s){var n,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,r/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(s){var c=-1;for(n=r;n<i;n++)if(u(e,n)===u(t,-1===c?0:n-c)){if(-1===c&&(c=n),n-c+1===l)return c*o}else-1!==c&&(n-=n-c),c=-1}else for(r+l>i&&(r=i-l),n=r;n>=0;n--){for(var d=!0,f=0;f<l;f++)if(u(e,n+f)!==u(t,f)){d=!1;break}if(d)return n}return-1}function _(e,t,r,a){r=Number(r)||0;var s=e.length-r;a?(a=Number(a))>s&&(a=s):a=s;var n=t.length;a>n/2&&(a=n/2);for(var o=0;o<a;++o){var i=parseInt(t.substr(2*o,2),16);if(L(i))return o;e[r+o]=i}return o}function S(e,t,r,a){return q(k(t,e.length-r),e,r,a)}function v(e,t,r,a){return q(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,a)}function E(e,t,r,a){return q(U(t),e,r,a)}function R(e,t,r,a){return q(function(e,t){for(var r,a,s,n=[],o=0;o<e.length&&!((t-=2)<0);++o)a=(r=e.charCodeAt(o))>>8,s=r%256,n.push(s),n.push(a);return n}(t,e.length-r),e,r,a)}function O(e,t,r){return 0===t&&r===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,r))}function T(e,t,r){r=Math.min(e.length,r);for(var a=[],s=t;s<r;){var n,o,i,l,u=e[s],c=null,d=u>239?4:u>223?3:u>191?2:1;if(s+d<=r)switch(d){case 1:u<128&&(c=u);break;case 2:128==(192&(n=e[s+1]))&&(l=(31&u)<<6|63&n)>127&&(c=l);break;case 3:n=e[s+1],o=e[s+2],128==(192&n)&&128==(192&o)&&(l=(15&u)<<12|(63&n)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:n=e[s+1],o=e[s+2],i=e[s+3],128==(192&n)&&128==(192&o)&&128==(192&i)&&(l=(15&u)<<18|(63&n)<<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),s+=d}return function(e){var t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);for(var r="",a=0;a<t;)r+=String.fromCharCode.apply(String,e.slice(a,a+=C));return r}(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,r){return u(e,t,r)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,r){return function(e,t,r){return c(e),e<=0?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}(e,t,r)},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(B(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),B(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 r=e.length,a=t.length,s=0,n=Math.min(r,a);s<n;++s)if(e[s]!==t[s]){r=e[s],a=t[s];break}return r<a?-1:a<r?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 r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var a=l.allocUnsafe(t),s=0;for(r=0;r<e.length;++r){var n=e[r];if(B(n,Uint8Array))s+n.length>a.length?l.from(n).copy(a,s):Uint8Array.prototype.set.call(a,n,s);else{if(!l.isBuffer(n))throw new TypeError('"list" argument must be an Array of Buffers');n.copy(a,s)}s+=n.length}return a},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)y(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)y(this,t,t+3),y(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)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(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):g.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="",r=t.IS;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},n&&(l.prototype[n]=l.prototype.inspect),l.prototype.compare=function(e,t,r,a,s){if(B(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===r&&(r=e?e.length:0),void 0===a&&(a=0),void 0===s&&(s=this.length),t<0||r>e.length||a<0||s>this.length)throw new RangeError("out of range index");if(a>=s&&t>=r)return 0;if(a>=s)return-1;if(t>=r)return 1;if(this===e)return 0;for(var n=(s>>>=0)-(a>>>=0),o=(r>>>=0)-(t>>>=0),i=Math.min(n,o),u=this.slice(a,s),c=e.slice(t,r),d=0;d<i;++d)if(u[d]!==c[d]){n=u[d],o=c[d];break}return n<o?-1:o<n?1:0},l.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},l.prototype.indexOf=function(e,t,r){return b(this,e,t,r,!0)},l.prototype.lastIndexOf=function(e,t,r){return b(this,e,t,r,!1)},l.prototype.write=function(e,t,r,a){if(void 0===t)a="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)a=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===a&&(a="utf8")):(a=r,r=void 0)}var s=this.length-t;if((void 0===r||r>s)&&(r=s),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var n=!1;;)switch(a){case"hex":return _(this,e,t,r);case"utf8":case"utf-8":return S(this,e,t,r);case"ascii":case"latin1":case"binary":return v(this,e,t,r);case"base64":return E(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,t,r);default:if(n)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),n=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function N(e,t,r){var a="";r=Math.min(e.length,r);for(var s=t;s<r;++s)a+=String.fromCharCode(127&e[s]);return a}function A(e,t,r){var a="";r=Math.min(e.length,r);for(var s=t;s<r;++s)a+=String.fromCharCode(e[s]);return a}function D(e,t,r){var a=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>a)&&(r=a);for(var s="",n=t;n<r;++n)s+=V[e[n]];return s}function $(e,t,r){for(var a=e.slice(t,r),s="",n=0;n<a.length-1;n+=2)s+=String.fromCharCode(a[n]+256*a[n+1]);return s}function j(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function I(e,t,r,a,s,n){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||t<n)throw new RangeError('"value" argument is out of bounds');if(r+a>e.length)throw new RangeError("Index out of range")}function x(e,t,r,a,s,n){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function P(e,t,r,a,n){return t=+t,r>>>=0,n||x(e,0,r,4),s.write(e,t,r,a,23,4),r+4}function F(e,t,r,a,n){return t=+t,r>>>=0,n||x(e,0,r,8),s.write(e,t,r,a,52,8),r+8}l.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),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,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var a=this[e],s=1,n=0;++n<t&&(s*=256);)a+=this[e+n]*s;return a},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var a=this[e+--t],s=1;t>0&&(s*=256);)a+=this[e+--t]*s;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,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var a=this[e],s=1,n=0;++n<t&&(s*=256);)a+=this[e+n]*s;return a>=(s*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||j(e,t,this.length);for(var a=t,s=1,n=this[e+--a];a>0&&(s*=256);)n+=this[e+--a]*s;return n>=(s*=128)&&(n-=Math.pow(2,8*t)),n},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 r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},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),s.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),s.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),s.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),s.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,r,a){e=+e,t>>>=0,r>>>=0,a||I(this,e,t,r,Math.pow(2,8*r)-1,0);var s=1,n=0;for(this[t]=255&e;++n<r&&(s*=256);)this[t+n]=e/s&255;return t+r},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,r,a){e=+e,t>>>=0,r>>>=0,a||I(this,e,t,r,Math.pow(2,8*r)-1,0);var s=r-1,n=1;for(this[t+s]=255&e;--s>=0&&(n*=256);)this[t+s]=e/n&255;return t+r},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||I(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||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,r){return e=+e,t>>>=0,r||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,r){return e=+e,t>>>=0,r||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,r){return e=+e,t>>>=0,r||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,r,a){if(e=+e,t>>>=0,!a){var s=Math.pow(2,8*r-1);I(this,e,t,r,s-1,-s)}var n=0,o=1,i=0;for(this[t]=255&e;++n<r&&(o*=256);)e<0&&0===i&&0!==this[t+n-1]&&(i=1),this[t+n]=(e/o|0)-i&255;return t+r},l.prototype.writeIntBE=function(e,t,r,a){if(e=+e,t>>>=0,!a){var s=Math.pow(2,8*r-1);I(this,e,t,r,s-1,-s)}var n=r-1,o=1,i=0;for(this[t+n]=255&e;--n>=0&&(o*=256);)e<0&&0===i&&0!==this[t+n+1]&&(i=1),this[t+n]=(e/o|0)-i&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||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,r){return e=+e,t>>>=0,r||I(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||I(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||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,r){return e=+e,t>>>=0,r||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,r){return P(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return P(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,a){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a<r&&(a=r),a===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=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-r&&(a=e.length-t+r);var s=a-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,a):Uint8Array.prototype.set.call(e,this.subarray(r,a),t),s},l.prototype.fill=function(e,t,r,a){if("string"==typeof e){if("string"==typeof t?(a=t,t=0,r=this.length):"string"==typeof r&&(a=r,r=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 s=e.charCodeAt(0);("utf8"===a&&s<128||"latin1"===a)&&(e=s)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var n;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(n=t;n<r;++n)this[n]=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(n=0;n<r-t;++n)this[n+t]=o[n%i]}return this};var M=/[^+/0-9A-Za-z-_]/g;function k(e,t){var r;t=t||1/0;for(var a=e.length,s=null,n=[],o=0;o<a;++o){if((r=e.charCodeAt(o))>55295&&r<57344){if(!s){if(r>56319){(t-=3)>-1&&n.push(239,191,189);continue}if(o+1===a){(t-=3)>-1&&n.push(239,191,189);continue}s=r;continue}if(r<56320){(t-=3)>-1&&n.push(239,191,189),s=r;continue}r=65536+(s-55296<<10|r-56320)}else s&&(t-=3)>-1&&n.push(239,191,189);if(s=null,r<128){if((t-=1)<0)break;n.push(r)}else if(r<2048){if((t-=2)<0)break;n.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;n.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;n.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return n}function U(e){return a.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,r,a){for(var s=0;s<a&&!(s+r>=t.length||s>=e.length);++s)t[s+r]=e[s];return s}function B(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function L(e){return e!=e}var V=function(){for(var e="0123456789abcdef",t=new Array(256),r=0;r<16;++r)for(var a=16*r,s=0;s<16;++s)t[a+s]=e[r]+e[s];return t}()},8356:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(4716)),n=r(9031),o=r(7138),i=a(r(2282)),l=a(r(5788)),u=a(r(9896)),c=a(r(7636)),d=a(r(6357)),f=a(r(2555)),m=a(r(3830)),p=r(9031);function h(e,t,r){let a=0;for(const s of e)s.lvl=t,s.hasSub?s.childrenCount=h(s.children,t+1,r):s.childrenCount=!0===r.hideDetails?0:s.children.length,a+=s.childrenCount+1;return a}function g(e,t){for(const r of e)r._index=t++,r._vIndex=r._index,r.children?.length>0&&(t=g(r.children,t));return t}function y(e,t,r){for(const a of e)if(!0===a.hasSub)r=y(a.children,t,r);else for(const e of a.children)e[t.name]=r,r++;return r}function b(e,t,r,a){const s=e.rowGroups[t],n=R(r,s);let o=0;for(let i of n){const n=O(r,s,i),l={isGroup:!0,expanded:!0,hasSub:e.rowGroups.length-1>t,lvl:t,groups:[{value:i,...s}],totals:[],children:[],childrenCount:0};e.rowGroups.length-1===t?(l.children=n,l.childrenCount=!0===e.hideDetails?0:n.length):l.childrenCount=b(e,t+1,n,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 r=e[0].lvl;if(r<t)for(const r of e){const e=w(r.children,t);e&&(r.children=e)}else if(r===t){const t=[];for(const a of e){const e=[...a.groups];for(const s of a.children){const a=e.concat(s.groups);t.push({...s,groups:a,lvl:r})}}return t}}function _(e){if(Array.isArray(e))for(let t=e.length-1;t>=0;t--){const r=e[t];_(r.children);const a=r.totals?.filter(e=>0!==e.value);0===a?.length&&(0===r.children?.length&&r.childrenCount>0||0===r.childrenCount)&&e.splice(t,1)}}function S(e,t,r=null){let a=0;if(!0===e.hasSub){const s=[];e.children.map(e=>{s.push(S(e,t,r))}),a=E(s,t.expression)}else a=v(e.children,t,r);return r?e.totals.push({...t,value:a,group:r.value}):e.totals.push({...t,value:a}),a}function v(e,t,r=null){let a,s=0,n=0,o=[];switch(o=r?e.filter(e=>"object"===r.valueType?e[r.name].id===r.value.id:e[r.name]===r.value):e,t.expression){case"sum":o.map(e=>{n+=1*e[t.name]}),n=f.default.normalizeFloat(n,6);break;case"average":o.map(e=>{s+=1*e[t.name]}),n+=s/o.length,n=f.default.normalizeFloat(n,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]);n<=a&&(n=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]);n=a}}return n}function E(e,t){let r=0;switch(t){case"sum":r=e.reduce((e,t)=>e+t,0),r=f.default.normalizeFloat(r,6);break;case"average":r=e.reduce((e,t)=>e+t,0)/e.length,r=f.default.normalizeFloat(r,6);break;case"max":r=Math.max(...e);break;case"min":r=Math.min(...e)}return r}function R(e,t){let r=[];if("object"===t.valueType){const a=new Set;for(const s of e)a.has(s[t.name].id)||(a.add(s[t.name].id),r.push(s[t.name]))}else r=[...new Set(e.map(e=>e[t.name]))];return r}function O(e,t,r){return e.filter(e=>"object"===t.valueType?e[t.name].id===r.id:e[t.name]===r)}function T(e){for(const t of e)t.hasSub?T(t.children):t.children=[]}function C(e,t){return e.lastIndexOf("WHERE")>e.lastIndexOf("FROM")?N(t,!0):"\nWHERE "+N(t)}function N(e,t=!1){const r=e.join("");return t?r:r.substring(5)}t.default={async getSettings(e,t,r){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,r){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 r=>{if(r){let o;a.query=r.dataQuery,a.externalData=r.externalData,a.externalUsername=r.externalUsername,a.externalPassword=r.externalPassword,a.externalServer=r.externalServer,a.externalPort=r.externalPort,a.externalDatabase=r.externalDatabase,a.externalDialect=r.externalDialect,a.externalDateKind=r.externalDateKind,a.externalDateFormat=r.externalDateFormat,a.fields=function(e){let t=[];for(const r of e)r.isGroup?t=t.concat(r.fields):t.push(r);return t}(a.fields),function(e){if(e.sqlFilters=[],e.sqlReplacements={},"without"!==e.period.type){let t,r,a;"date"===e.period.type?(t=new Date(e.period.date).setHours(0,0,0,0),r=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),r=new Date(e.period.dateTo)):(t=new Date(e.period.dateFrom).setHours(0,0,0,0),r=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(r).toLocaleDateString()):(e.sqlReplacements.dateFrom=new Date(t).toISOString(),e.sqlReplacements.dateTo=new Date(r).toISOString())}let t="";const r=e.filters;for(let a of r){let r=a.path;if("filled"===a.operator)t=`${r} IS NOT NULL`;else if("notFilled"===a.operator)t=`${r} 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=`${r} ${"inList"===a.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=a.value?`${r} ${a.operator} '${a.value.id}'`:`${r} 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=`${r} ${"inList"===a.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=`${r} ${a.operator} '${a.value}'`;else if("text"===a.valueType)t="iLike"===a.operator?`${r} LIKE '%${a.value}%'`:"notILike"===a.operator?`${r} NOT LIKE '%${a.value}%'`:r+a.operator+"'"+a.value+"'";else if("date"===a.valueType)if("between"===a.operator){if(a.value?.[0]&&a.value?.[1]){let e="",n="";if("dateTime"===a.dateType)e=(0,s.default)(a.value[0],"DD.MM.YYYY HH:mm:ss").toISOString(),n=(0,s.default)(a.value[1],"DD.MM.YYYY HH:mm:ss").toISOString();else{const t=(0,s.default)(a.value[0],"DD.MM.YYYY").toDate(),r=(0,s.default)(a.value[1],"DD.MM.YYYY").toDate();e=(0,s.default)(t.setHours(0,0,0,0)).toISOString(),n=(0,s.default)(r.setHours(23,59,59,999)).toISOString()}t=`${r} ${a.operator} '${e}' and '${n}'`}}else t="dateTime"===a.dateType?`${r} ${a.operator} '${(0,s.default)(a.value,"DD.MM.YYYY HH:mm:ss").toISOString()}'`:`${r} ${a.operator} '${(0,s.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],s=a.value[1];t=`${r} ${a.operator} '${e}' and '${s}'`}}else t=r+a.operator+a.value;e.sqlFilters.push(" AND "+t)}}(a);const c=`reports/${r.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,r,a):await async function(e,t,r){await async function(e,t){const r=await(0,m.default)(e);let a=t.query.match(/\{([^}]+)\}/g);if(a){let e,s=a.map(e=>e.slice(1,-1));for(const a of s){const s=r.find(e=>e.name===a);s&&(t.query=t.query.replace(`{${a}}`,a),e=e?`${e}, ${a} as (${s.query})`:`with ${a} as (${s.query})`,s.params&&(t.sqlReplacements=Object.assign(t.sqlReplacements,s.params)))}e&&(t.query=`${e} ${t.query}`)}}(e,t);const a=t.query.lastIndexOf("ORDER BY"),s=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:s}];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,r){const a=e.substring(0,r),s=e.substring(r);return`${a} ${C(e,t)} \n${s}`}(t.query,t.sqlFilters,u):t.query+C(t.query,t.sqlFilters)),r?.beforeQuery&&"function"==typeof r?.beforeQuery&&await r.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}},r=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 r.query(t.query,{type:n.QueryTypes.SELECT,replacements:t.sqlReplacements})}return await l.default.query(t.query,{type:n.QueryTypes.SELECT,replacements:t.sqlReplacements})}(e,a,o);let O=await async function(e,t){let r=[],a=0;for(const n of e){a+=1;const e={};for(const r of t)if(!0===r.rowNumber)e[r.name]=a;else if("date"===r.valueType){let t="DD.MM.YYYY HH:mm:ss";"date"===r.dateType&&(t="DD.MM.YYYY"),r.format&&""!==r.format&&(t=r.format),e[r.name]=n[r.name]?(0,s.default)(n[r.name]).format(t):""}else if("number"===r.valueType){let t=n[r.name];if(t&&r.format&&""!==r.format)try{const a=JSON.parse(r.format);a.NFD&&(t=Number(t),t=t.toFixed(a.NFD)),e[r.name]=t}catch(t){e[r.name]="0",i.default.error("Error in Reports getResult controller",{meta:t})}else e[r.name]=t}else if("object"===r.valueType)if(r.attribs){e[r.name]={};for(const t of r.attribs)e[r.name][t.name]=n[t.path]}else e[r.name]={id:void 0,name:void 0};else e[r.name]=n[r.name];r.push(e)}return r}(f,a.fields),N=O.length;a.sorts?.length>0&&function(e,t,r){e.sort((e,a)=>{for(const n of t){let t,o;"object"===n.valueType?(t=e[n.name]?.name||"",o=a[n.name]?.name||""):(t=e[n.name]||"",o=a[n.name]||"");let i=0;if("date"===n.valueType)if(r.externalData&&"default"===r.externalDateKind&&r.externalDateFormat&&r.externalDateFormat.length>0){const e=(0,s.default)(t,r.externalDateFormat).toDate(),a=(0,s.default)(o,r.externalDateFormat).toDate();i=e.getTime()-a.getTime()}else{const e=new Date(t),r=new Date(o);i=e.getTime()-r.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"===n.direction?i:-1*i}return 0})}(O,a.sorts,a),a.cols=[],a.colGroups?.length>0&&(a.cols=R(O,a.colGroups[0]));let A=!1;a.rowGroups?.length>0?(O.length>a.maxLimit&&(O=[],A=!0),O=function(e,t){let r=[];b(t,0,e,r);let a=!1;for(let e=t.rowGroups.length-1;e>0;e--)if(t.rowGroups[e].withParent){const t=w(r,e-1);t&&(r=t),a=!0}return a&&h(r,0,t),function(e,t){if(0!==e.calcs.length){if(e.colGroups.length>0){const r=e.colGroups[0];for(const a of e.cols)for(const s of e.calcs)for(const e of t)S(e,s,{name:r.name,valueType:r.valueType,value:a})}else for(const r of e.calcs)for(const e of t)S(e,r);_(t)}}(t,r),r}(O,a),function(e,t){const r=e.filter(e=>!0===e.rowNumber);for(const e of r){let r=1;for(const a of t)if(!0===a.hasSub)r=y(a.children,e,r);else for(const t of a.children)t[e.name]=r,r++}}(a.fields,O),N=g(O,1)):function(e,t,r=1){const a=e.filter(e=>!0===e.rowNumber);for(const e of a)for(const a of t)a[e.name]=r,r++}(a.fields,O);const D=[];!0===a.showYTotal&&function(e,t,r){if(0!==e.calcs?.length)if(e.colGroups?.length>0){const a=e.colGroups[0].valueType;for(const s of e.cols)for(const n of e.calcs){const e=[];for(const r of t){let t=r.totals.find(e=>e.name===n.name&&("object"===a?e.group.id===s.id:e.group===s));t&&e.push(t.value)}const o=E(e,n.expression);r.push({...n,value:o,group:s})}}else for(const a of e.calcs)if(e.rowGroups?.length>0){const e=[];for(const r of t){const t=r.totals.find(e=>e.name===a.name);t&&e.push(t.value)}const s=E(e,a.expression);r.push({...a,value:s})}else{const e=v(t,a);r.push({...a,value:e})}}(a,O,D),a.rowGroups?.length>0&&a.hideDetails&&(T(O),N=g(O,1)),0===a.rowGroups?.length&&a.limit&&a.page&&(O=function(e,t,r){const a=(r-1)*t,s=a+t;return e.slice(a,s)}(O,a.limit,a.page));let $={resultData:O,cols:a.cols,totals:D,total:N-1,limitError:A};$?t.status(200).send($):(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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(6980)),n=r(7138),o=a(r(2282)),i=a(r(829)),l=a(r(5788)),u=a(r(8473));t.default={async login(e,t,r){let a=e.session.passport;const s=await u.default.getLicense(e.sessionID);e.session.regenerate(r=>{e.session.passport=a,e.session.license=s,e.session.clientType=e.body?.clientType||null,e.session.save(r=>{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:s};t.status(n.StatusCodes.OK).send(o)})})},async session(e,t,r){const a={isAuthenticated:!1};if(e.session.passport?.user)try{const r=await l.default.models.User.findOne({where:{id:e.session.passport.user}});r?(a.isAuthenticated=!0,a.id=r.id,a.name=r.name,a.login=r.login,a.fullRights=r.fullRights,a.use2FA=r.use2FA,a.useCustomerAccess=r.useCustomerAccess,a.externalUser=r.externalUser,a.email=r.email,a.language=r.language,a.license=e.session.license,a.forwarderId=r.forwarderId,t.status(n.StatusCodes.OK).send({result:a,message:"OK"})):t.status(n.StatusCodes.UNAUTHORIZED).send({result:a,message:"Authentication failed"})}catch(e){t.status(n.StatusCodes.UNAUTHORIZED).send({result:a,message:"Authentication failed"})}else t.status(n.StatusCodes.UNAUTHORIZED).send({result:a,message:"Authentication failed"})},async logout(e,t,r){if(e.logout(function(e){if(e)return r(e)}),!e.session)return e.isUnauthenticated()?void t.status(n.StatusCodes.OK).send("Logged out successfully"):void t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not log out");e.logout(e=>{e?t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not clear out session info completely"):t.status(n.StatusCodes.OK).send("Logged out successfully")})},async register(e,t,r){try{const r=await s.default.register(e.body);return void t.status(r.httpStatus).send(r.result)}catch(e){return o.default.error("Error in register Controller",{meta:e}),void t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async confirmEmailAddress(e,t,r){try{const r=await s.default.confirmEmailAddress(e.params.token);return void t.status(r.httpStatus).send(r.result)}catch(e){return o.default.error("Error in confirmEmailAddress Controller",{meta:e}),void t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resendEmailAddressConfirmationLink(e,t,r){try{const r=await s.default.resendEmailAddressConfirmationLink(e.query.email);return void t.status(r.httpStatus).send(r.result)}catch(e){return o.default.error("Error in resendEmailAddressConfirmationLink Controller",{meta:e}),void t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async forgotPassword(e,t,r){try{const r=e.headers.origin||e.headers.referer||process.env.DEFAULT_CLIENT_URL,a=await s.default.forgotPassword(e.body.email,r);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in forgotPassword Controller",{meta:e}),void t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async validatePasswordResetToken(e,t,r){try{const r=await s.default.isPasswordResetTokenValid(e.params.token);return void t.status(r.httpStatus).send(r.result)}catch(e){return o.default.error("Error in validatePasswordResetToken Controller",{meta:e}),void t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resetPassword(e,t,r){const{token:a,newPassword:i}=e.body;if(a&&i)try{const r=await s.default.resetPassword(e.body.token,e.body.newPassword);return void t.status(r.httpStatus).send(r.result)}catch(e){return o.default.error("Error in resetPassword Controller",{meta:e}),void t.status(n.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(n.StatusCodes.BAD_REQUEST).send({message:"Token and new password are required"})}}},8461:e=>{e.exports=require("multer")},8473:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(5788)),n=r(9031);t.default={async getLicense(e){const t=process.env.LIC_NUMBER,r=process.env.LIC_COUNT,a={active:!1,number:"none"};if(!t||!r)return a;const o=await s.default.query('SELECT COUNT(id) as auth_users FROM session WHERE sid != :sessionID AND "licNumber" IS NOT NULL',{type:n.QueryTypes.SELECT,replacements:{sessionID:e}});let i=0;return o.length>0&&(i=o[0].auth_users),i>=Number(r)?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,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(9031),n=a(r(5788));t.default={async getUserExecutorRoles(e){let t=await n.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 r=await n.default.models.VendorsAndCustomer.findAll({where:{counterpartyId:{[s.Op.in]:e}}});if(r)for(let e of r)t.push(e.id)}return t},async getCustomerFilter(e){let t=[],r=!1;if(e.user){r=!0!==e.user.useCustomerAccess;const a=e.user.id,s=await n.default.models.UserCustomer.findAll({where:{parentId:a}});if(s)for(let e of s)t.push(e.customerId)}return{fullAccess:r,counterparties:t}},async getForwarderFilter(e){let t,r=!1;if(e.user){r=!0!==e.user.externalUser;const a=e.user.forwarderId,s=await n.default.models.VendorsAndCustomer.findAll({where:{id:a}});t=s[0]?.dataValues.id}return{fullAccess:r,forwarder:t}},async getRoleGroups(e){let t=[];if(e.user&&!0!==e.user.fullRights){const r=e.user.id;t=(await n.default.models.RoleGroupUser.findAll({where:{userId:r},attributes:["parentId"]})).map(e=>e.parentId)}return t}}},9031:e=>{e.exports=require("sequelize")},9151:function(e,t,r){var a=r(8287).hp,s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(r(6982)),o="aes-256-cbc",i=n.default.scryptSync(process.env.CRYPTO_SECRET_KEY_AUTO_LOGIN||"default-salt","salt",32);t.default={encrypt(e){const t=n.default.randomBytes(16),r=n.default.createCipheriv(o,i,t);let s=r.update(e,"utf8","hex");s+=r.final("hex");const l=JSON.stringify({iv:t.toString("hex"),encryptedData:s});return a.from(l).toString("base64")},decrypt(e){const t=a.from(e,"base64").toString("utf8"),r=JSON.parse(t),s=a.from(r.iv,"hex"),l=n.default.createDecipheriv(o,i,s);let u=l.update(r.encryptedData,"hex","utf8");return u+=l.final("utf8"),JSON.parse(u)}}},9239:e=>{e.exports=require("terser")},9816:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(7252)),n=a(r(8278)),o=a(r(8403)),i=s.default.Router(),l="auth";i.route(`/${l}/login`).post(n.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),t.default=i},9876:function(e,t,r){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 s=a(r(6928)),n=a(r(9896)),o=a(r(4716)),i=a(r(2282)),l=`${process.cwd()}/logs/access`;async function u(e,t){try{const r=n.default.readFileSync(e,"utf8").split(/\r?\n/),a=[];for(const e of r)if(""!==e.trim()){const r=JSON.parse(e);if(t){let e=!0;for(const a in t)if("user"===a){if(r[a]?.id!==t[a]?.id){e=!1;break}}else if(r[a]!==t[a]){e=!1;break}e&&a.push(r)}else a.push(r)}return a}catch(t){throw new Error(`Failed to process file: ${e}. Error: ${t.message}`)}}function c(e,t,r){const a=e.slice();return a.sort((e,a)=>{const s=e[t],n=a[t];if(r){if(s>n)return-1;if(s<n)return 1}else{if(s<n)return-1;if(s>n)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 r=JSON.parse(e.query.filter||"{}"),a=JSON.parse(e.query.pagination||"{}"),i=JSON.parse(e.query.sort||"{}");if(!r.period)return void t.status(400).send({message:"Period filter is required"});const f=(0,o.default)(r.period[0]).format("YYYYMMDD"),m=(0,o.default)(r.period[1]).format("YYYYMMDD"),p=await async function(e){return new Promise((t,r)=>{n.default.readdir(e,(a,s)=>{if(a)return r(new Error(`Failed to read directory: ${e}`));t(s)})})}(l);if(!p||0===p.length)return void t.status(404).send({message:"No log files found"});const h=function(e,t,r){return e.filter(e=>{const a=e.slice(0,8);return a===t||a===r||a>t&&a<r})}(p,f,m);if(0===h.length)return void t.status(404).send({message:"No log files found for the specified period"});let g=[];for(const e of h){const t=s.default.join(l,e),a=await u(t,r.searchFilter);g.push(...a)}if(r.searchStr&&(g=function(e,t,r){const a=t.replace(/\s/g,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new RegExp(a,"i");return e.filter(e=>{let t=!1;for(const a of r){const r=a.split(".");if(r.length>1){if(e[r[0]]&&e[r[0]][r[1]]&&d(e[r[0]][r[1]],s)){t=!0;break}}else if(e[a]&&d(e[a],s)){t=!0;break}}return t})}(g,r.searchStr.searchText,r.searchStr.searchColumns)),Array.isArray(i))for(const e of i)e.sortBy&&(g=c(g,e.sortBy,e.sortDesc));else i.sortBy&&(g=c(g,i.sortBy,i.sortDesc));g=function(e,t,r){const a=(r-1)*t,s=a+t,n=e.slice(a,s);return{totalItems:e.length,currentPage:r,data:n}}(g,a.limit,a.page),t.status(200).send(g)}catch(e){i.default.error("Error in accessLogsController.getFilesInfo",{meta:e}),t.status(500).send({message:"Internal server error"})}}}},9880:function(e,t,r){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=a(r(9896)),n=r(9031);async function o(e,t){const r=await e.findAll({attributes:{exclude:["module"]},order:["id"]});i(JSON.parse(JSON.stringify(r)),t)}function i(e,t){const r=JSON.stringify(e,null,4),a=`src/database/initialdata/${t}.json`;s.default.writeFileSync(a,r)}t.default={async updateInitialData(e,t,r={}){const a="src/modules",n=(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"===r.event&&n)return function(e,t,r){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"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=`${r}/${a}`;s.default.existsSync(e)&&s.default.rmSync(e,{force:!0,recursive:!0})}}(e.tableName,r.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 r=e.associations[t].target;u.push({model:r,as:t}),c.push([{model:r,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={};n&&(d.id=r?.objectId);try{const n=await e.findAll({where:d,order:["id",...c],include:u}),l=JSON.parse(JSON.stringify(n));"app_objects"===e.tableName?function(e,t,r){for(const a of e){const{module:e,moduleV3:n,...o}=a,i=`${t}/${o.type}s/${o.name}`;if("update"===r.event&&(r.oldValue?.name!==r.newValue?.name||r.oldValue?.type!==r.newValue?.type)){const e=`${t}/${r.oldValue?.type}s/${r.oldValue?.name}`;try{s.default.renameSync(e,i)}catch(e){console.error(e)}}s.default.existsSync(i)||s.default.mkdirSync(i,{recursive:!0});const l=`${i}/object.struct.json`,u=JSON.stringify(o,null,4);if(s.default.writeFile(l,u,function(e){e&&console.error(e)}),!r.changeDeletionMark){if(void 0!==e){const t=`${i}/client.module.js`;e?s.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)}):s.default.existsSync(t)&&s.default.rmSync(t,{force:!0})}if(void 0!==n){const e=`${i}/client.v3.module.js`;n?s.default.writeFile(e,`export default ${n}`,function(e){e&&console.error(e)}):s.default.existsSync(e)&&s.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(r,"serverModule")){const e=`${i}/server.module.js`;r.serverModule?s.default.writeFile(e,`${r.serverModule}`,function(e){e&&console.error(e)}):s.default.existsSync(e)&&s.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(r,"info")){const e=`${i}/object.info.md`;r.info?s.default.writeFile(e,`${r.info}`,function(e){e&&console.error(e)}):s.default.existsSync(e)&&s.default.rmSync(e,{force:!0})}}}}(l,a,r):"view_settings"===e.tableName?function(e,t,r){for(const a of e){const{module:e,moduleV3:n,serverModule:o,appObject:i,...l}=a,u=`${t}/${i.type}s/${i.name}/views/${l.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const e=`${t}/${i.type}s/${i.name}/views/${r.oldValue?.name}`;try{s.default.renameSync(e,u)}catch(e){console.error(e)}}s.default.existsSync(u)||s.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/view.struct.json`;if(s.default.writeFile(d,c,function(e){e&&console.error(e)}),r.changeDeletionMark)continue;const f=`${u}/client.module.js`;e?s.default.writeFile(f,`export default ${e}`,function(e){e&&console.error(e)}):s.default.existsSync(f)&&s.default.rmSync(f);const m=`${u}/client.v3.module.js`;n?s.default.writeFile(m,n,function(e){e&&console.error(e)}):s.default.existsSync(m)&&s.default.rmSync(m);const p=`${u}/server.module.js`;if(o?s.default.writeFile(p,`${o}`,function(e){e&&console.error(e)}):s.default.existsSync(p)&&s.default.rmSync(p),Object.prototype.hasOwnProperty.call(r,"info")){const e=`${u}/view.info.md`;r.info?s.default.writeFile(e,`${r.info}`,function(e){e&&console.error(e)}):s.default.existsSync(e)&&s.default.rmSync(e,{force:!0})}}}(l,a,r):"report_settings"===e.tableName?function(e,t,r){for(const a of e){const{dataQuery:e,...n}=a,o=`${t}/reports/${a.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const e=`${t}/reports/${r.oldValue?.name}`;try{s.default.renameSync(e,o)}catch(e){console.error(e)}}s.default.existsSync(o)||s.default.mkdirSync(o,{recursive:!0});const i=JSON.stringify(n,null,4),l=`${o}/report.struct.json`;if(s.default.writeFile(l,i,function(e){e&&console.error(e)}),r.changeDeletionMark)continue;if(e){const t=`${o}/data.query.sql`;s.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}const u=`${o}/server.module.js`;if(r.serverModule?s.default.writeFile(u,`${r.serverModule}`,function(e){e&&console.error(e)}):s.default.existsSync(u)&&s.default.rmSync(u,{force:!0}),Object.prototype.hasOwnProperty.call(r,"info")){const e=`${o}/report.info.md`;r.info?s.default.writeFile(e,`${r.info}`,function(e){e&&console.error(e)}):s.default.existsSync(e)&&s.default.rmSync(e,{force:!0})}}}(l,a,r):"data_processors"===e.tableName?function(e,t,r){for(const a of e){const e=`${t}/dataProcessors/${a.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const a=`${t}/dataProcessors/${r.oldValue?.name}`;try{s.default.renameSync(a,e)}catch(e){console.error(e)}}s.default.existsSync(e)||s.default.mkdirSync(e,{recursive:!0});const n=JSON.stringify(a,null,4),o=`${e}/processor.struct.json`;s.default.writeFile(o,n,function(e){e&&console.error(e)});const i=`${e}/server.module.js`;r.serverModule?s.default.writeFile(i,`${r.serverModule}`,function(e){e&&console.error(e)}):s.default.existsSync(i)&&s.default.rmSync(i,{force:!0})}}(l,a,r):"scheduled_jobs"===e.tableName?function(e,t,r){for(const a of e){const e=`${t}/scheduledJobs/${a.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const a=`${t}/scheduledJobs/${r.oldValue?.name}`;try{s.default.renameSync(a,e)}catch(e){console.error(e)}}s.default.existsSync(e)||s.default.mkdirSync(e,{recursive:!0});const n=JSON.stringify(a,null,4),o=`${e}/job.struct.json`;if(s.default.writeFile(o,n,function(e){e&&console.error(e)}),r.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(r.serverModule?s.default.writeFile(i,`${r.serverModule}`,function(e){e&&console.error(e)}):s.default.existsSync(i)&&s.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(r,"info")){const t=`${e}/job.info.md`;r.info?s.default.writeFile(t,`${r.info}`,function(e){e&&console.error(e)}):s.default.existsSync(t)&&s.default.rmSync(t,{force:!0})}}}(l,a,r):"rest_api"===e.tableName?function(e,t,r){for(const a of e){const e=`${t}/restApi/${a.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const a=`${t}/restApi/${r.oldValue?.name}`;try{s.default.renameSync(a,e)}catch(e){console.error(e)}}s.default.existsSync(e)||s.default.mkdirSync(e,{recursive:!0});const n=JSON.stringify(a,null,4),o=`${e}/api.struct.json`;if(s.default.writeFile(o,n,function(e){e&&console.error(e)}),r.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(r.serverModule?s.default.writeFile(i,`${r.serverModule}`,function(e){e&&console.error(e)}):s.default.existsSync(i)&&s.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(r,"info")){const t=`${e}/api.info.md`;r.info?s.default.writeFile(t,`${r.info}`,function(e){e&&console.error(e)}):s.default.existsSync(t)&&s.default.rmSync(t,{force:!0})}}}(l,a,r):"components"===e.tableName?function(e,t,r){for(const a of e){const{module:e,moduleV3:n,serverModule:o,...i}=a,l=`${t}/components/${a.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const e=`${t}/components/${r.oldValue?.name}`;try{s.default.renameSync(e,l)}catch(e){console.error(e)}}s.default.existsSync(l)||s.default.mkdirSync(l,{recursive:!0});const u=JSON.stringify(i,null,4),c=`${l}/component.struct.json`;if(s.default.writeFile(c,u,function(e){e&&console.error(e)}),!r.changeDeletionMark){if(e){const t=`${l}/client.module.js`;s.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(n){const e=`${l}/client.v3.module.js`;s.default.writeFile(e,n,function(e){e&&console.error(e)})}if(o){const e=`${l}/server.module.js`;s.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,a,r):"common_commands"===e.tableName?function(e,t,r){for(const a of e){const{module:e,moduleV3:n,...o}=a,i=`${t}/commonCommands/${a.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const e=`${t}/commonCommands/${r.oldValue?.name}`;try{s.default.renameSync(e,i)}catch(e){console.error(e)}}s.default.existsSync(i)||s.default.mkdirSync(i,{recursive:!0});const l=JSON.stringify(o,null,4),u=`${i}/command.struct.json`;if(s.default.writeFile(u,l,function(e){e&&console.error(e)}),!r.changeDeletionMark){if(e){const t=`${i}/client.module.js`;s.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}if(n){const e=`${i}/client.v3.module.js`;s.default.writeFile(e,n,function(e){e&&console.error(e)})}}}}(l,a,r):"print_forms"===e.tableName?function(e,t,r){for(const a of e){const{module:e,moduleV3:n,serverModule:o,appObject:i,...l}=a,u=`${t}/${i.type}s/${i.name}/printForms/${l.name}`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const e=`${t}/${i.type}s/${i.name}/printForms/${r.oldValue?.name}`;try{s.default.renameSync(e,u)}catch(e){console.error(e)}}s.default.existsSync(u)||s.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/form.struct.json`;if(s.default.writeFile(d,c,function(e){e&&console.error(e)}),!r.changeDeletionMark){if(e){const t=`${u}/client.module.js`;s.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(n){const e=`${u}/client.module.js`;s.default.writeFile(e,`export default ${n}`,function(e){e&&console.error(e)})}if(o){const e=`${u}/server.module.js`;s.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,a,r):"common_modules"===e.tableName?(function(e,t,r){const a=`${t}/commonModules`;s.default.existsSync(a)||s.default.mkdirSync(a,{recursive:!0});for(const a of e){const e=`${t}/commonModules/${a.name}.js`;if("update"===r.event&&r.oldValue?.name!==r.newValue?.name){const a=`${t}/commonModules/${r.oldValue?.name}.js`;try{s.default.renameSync(a,e)}catch(e){console.error(e)}}r.module&&s.default.writeFile(e,`${r.module}`,function(e){e&&console.error(e)})}}(l,a,r),o(e,t)):i(l,t)}catch(e){console.error(e)}},async updatePredefinedInitialData(e){const t=Object.keys(e.model.rawAttributes),r=Object.values(e.model.associations).map(e=>e.foreignKey),a=t.filter(e=>r.includes(e));try{const t=await e.model.findAll({order:["id"],where:{predefinedName:{[n.Op.ne]:null}},attributes:{exclude:a}}),r=JSON.stringify(t,null,4),o=`src/modules/catalogs/${e.name}/predefined.json`;s.default.writeFile(o,r,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`,r=JSON.parse(s.default.readFileSync(e,"utf-8")),a={};for(const e of r){const t=e.name;t&&(a[t]=e.values?.map(e=>e.value)||[])}let n={};s.default.existsSync(t)&&JSON.parse(s.default.readFileSync(t,"utf-8"));const o={};for(const[e,t]of Object.entries(a))o[e]=t;s.default.writeFileSync(t,JSON.stringify(o,null,2),"utf-8")}}},9896:e=>{e.exports=require("fs")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(r.exports,r,r.exports,__webpack_require__),r.exports}var __webpack_exports__=__webpack_require__(7927);module.exports=__webpack_exports__})();
2
+ (()=>{"use strict";var __webpack_modules__={9:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);class o extends s.Model{}o.init({id:{type:s.DataTypes.UUID,primaryKey:!0},sid:{type:s.DataTypes.UUID,allowNull:!1,unique:!0},userId:s.DataTypes.UUID,expires:s.DataTypes.DATE,data:s.DataTypes.TEXT,licNumber:s.DataTypes.STRING(100),clientType:{type:s.DataTypes.ENUM,values:["browser","mobile","electron","api"],defaultValue:"browser"}},{sequelize:r.default,tableName:"session",modelName:"Session"})},360:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=a(9031),o=n(a(9896)),i=a(7138),l=n(a(1688)),u=n(a(3786)),c=n(a(5788)),d=n(a(2282)),f=r.default.Router();function m(e={},t){let a;const n={};return e.userRole?n.id=e.userRole:t.accessRoleId?n.id=t.accessRoleId:n.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?l.default.canRead(n):"CAN_MODIFY"===e.accessLevel?l.default.canModify(n):"IS_AUTH"===e.accessLevel?l.default.isAuth:l.default.isFullRights:"GET"===e.httpMethod?l.default.canRead(n):l.default.canModify(n),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:s.QueryTypes.SELECT});for(const t of e){if(!t.methods)continue;let e;const a=`restApi/${t.name}/server.module.js`,n=`${process.cwd()}/src/modules/${a}`;if(o.default.existsSync(n)&&(e=require(n)),!e)continue;const r=JSON.parse(t.methods);for(const a of r)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 n=e.headers["content-type"];if(n&&n.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2282)),s=n(a(5788));t.default={async onChangeHandler(e,t,a,n,o){try{const r=await s.default.models.ObjectVersioningSetting.findOne({where:{objectType:e.name}});if(r&&("all"===r.versioningMethod||r.versioningMethod===a)){let r=function(e){let t=[];if(e.associations)for(let a in e.associations){if("chargedServicesAcc"===a)continue;let n=e.associations[a].target;if(e.associations[a].isSingleAssociation){let r=["id","presentation"];e.associations[a].source.rawAttributes.name&&r.push("name"),t.push({model:n,as:a,attributes:r})}else{const e=t.push({model:n,as:a,include:[]});if(n.associations){t[e-1].include=[];for(let a in n.associations){let r=n.associations[a].target;if(n.associations[a].isSingleAssociation){let s=["id","presentation"];n.associations[a].target.rawAttributes.name&&s.push("name"),t[e-1].include.push({model:r,as:a,attributes:s})}}}}}return t}(e);await e.findByPk(t,{include:r,transaction:o}).then(async r=>{if(r){const i={objectId:t,objectData:JSON.stringify(r),objectType:e.name,userId:n,description:a},l={transaction:o||null};await s.default.models.ObjectVersion.create(i,l).catch(e=>{console.error(e)})}})}}catch(t){r.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 s.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(1691)),s=a(7138),o=n(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(s.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(s.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(s.StatusCodes.FORBIDDEN).send({message:e})}a()},canRead:e=>async(t,a,n)=>{if(!t.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),a.status(s.StatusCodes.FORBIDDEN).send({message:e})}if(!0===t.user.fullRights)return void n();const i=t.user?.id;i?await r.default.checkUserAccess(i,e,!0).then(r=>{if(!0===r)n();else{const n=`User ${t.user?.name} not have access to read. Role ${e}`;o.default.error("Error in accessRight.canRead",{meta:n}),a.status(s.StatusCodes.FORBIDDEN).send({message:n})}}).catch(e=>{o.default.error("Error in accessRight.canRead",{meta:e}),a.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(s.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},canModify:e=>async(t,a,n)=>{if(!0===t.user?.fullRights)return void n();const i=t.user?.id;i?await r.default.checkUserAccess(i,e,!0,!0).then(r=>{if(!0===r)n();else{const n=`User ${t.user?.name} not have access to modify. Role ${e}`;o.default.error("Error in accessRight.canModify",{meta:n}),a.status(s.StatusCodes.FORBIDDEN).send({message:n})}}).catch(e=>{o.default.error("Error in accessRight.canModify",{meta:e}),a.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(s.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})}}},1691:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(2555));async function i(e){const t=[];return await s.default.models.Department.findAll({where:{[r.Op.or]:[{leaderId:e},{deputyId:e}]}}).then(e=>{for(const a of e)t.push(a.id)}).catch(e=>{throw e}),await s.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 s.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 s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const n={parentId:e};return!0===a?n.canModify=!0:!0===t&&(n.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:n}).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 s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>{const n={parentId:e.map(e=>e.parentId)};return!0===a?n.canModify=!0:!0===t&&(n.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:n}).then(t=>e=t.map(e=>e.userRoleId)).catch(e=>{throw e})}).catch(e=>{throw e}),getUserRoleByKey:async e=>await s.default.models.UserRole.findOne({where:{key:e}}).then(async e=>e).catch(e=>{throw e}),getUserRoleById:async e=>await s.default.models.UserRole.findByPk(e).then(async e=>e).catch(e=>{throw e}),async checkUserAccess(e,t,a=!1,n=!1){const r=t?.id?await this.getUserRoleById(t.id):await this.getUserRoleByKey(t.key);return r?await s.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 s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const t={parentId:e,userRoleId:r.id};return!0===n?t.canModify=!0:!0===a&&(t.canRead=!0),await s.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=[],n=await s.default.models.Department.findAll({where:{groupId:e.id},include:t});for(const e of n){a.push(e);const n=await this.getAllSubDepartments(e,t);for(const e of n)a.push(e)}return a},async accessRestrictions(e,t){const a={use:!1,users:[]},n=await s.default.models.AccessRestriction.findOne({where:{objectType:t.name}});if(n&&(!0===n.useRestriction||!0===n.useDepartmentRestriction)&&(a.use=!0,a.users.push(e.user?.id),!0===n.useDepartmentRestriction)){const t=o.default.prepareIncludes(s.default.models.Department,{withTableParts:!0}),n=await s.default.models.Department.findAll({where:{[r.Op.or]:[{leaderId:e.user?.id},{deputyId:e.user?.id}]},include:t}),i=[];for(const e of n){const a=await this.getAllSubDepartments(e,t);for(const e of a)i.push(e)}for(const e of i)n.push(e);if(n)for(const e of n)for(const t of e.employees)a.users.push(t.employeeId)}return a},getUserAccessNavigation:async e=>await s.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 s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>await s.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")},2096:e=>{e.exports=require("morgan")},2103:e=>{e.exports=require("crypto-js")},2282:function(e,t,a){var n,r=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a);var r=Object.getOwnPropertyDescriptor(t,a);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,n,r)}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),s=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||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[t.length]=a);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a=n(e),o=0;o<a.length;o++)"default"!==a[o]&&r(t,e,a[o]);return s(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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(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 r.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=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=[],n=null,r=null,s=[]){let i=[],l=!0;Object.prototype.hasOwnProperty.call(t,"compactInclude")&&(l=t.compactInclude);const u=o(a),c=o(s);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 s=e.associations[a].target;if(e.associations[a].isSingleAssociation){let t=["id","presentation"];e.associations[a].target.getAttributes().name&&t.push("name");const r=[];if(u[a])for(const e of u[a])if("object"==typeof e)for(const t in e){const a=s.associations[t]?.target;if(a){const n=e[t];if(Array.isArray(n)){let e=[...new Set(["id","presentation",...n])];a.getAttributes().name&&e.push("name"),r.push({model:a,as:t,attributes:e})}}}else t.includes(e)||t.push(e);c[a]&&(t=[...new Set([...t,...c[a]])]);const o=n?.[a];i.push({model:s,as:a,attributes:t,where:o,include:r})}else if(t.withTableParts){const e=n?.[a],t=i.push({model:s,as:a,where:e,include:[]});if(r&&s.getAttributes().rowNumber&&r.push([{model:s,as:a},"rowNumber","asc"]),s.associations){i[t-1].include=[];for(let e in s.associations){let n=s.associations[e].target;if(s.associations[e].isSingleAssociation){let r=["id","presentation"];s.associations[e].target.getAttributes().name&&r.push("name"),u[a]?.[e]&&(r=[...new Set([...r,...u[a][e]])]),i[t-1].include?.push({model:n,as:e,attributes:r})}}}}}}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 r.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:s.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),n=Math.round(e*a)/a,r=Math.pow(10,3);return 0===Math.round(e*r)/r?0:n}}},2562:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2282)),s=a(7138),o=n(a(9896)),i=n(a(2103)),l=n(a(9880));t.default={async executeProcessing(e,t,a,n){const i=e.body.name;if(!i){const e="Object name is not correct!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.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 r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if(!l?.executeProcessing||"function"!=typeof l?.executeProcessing){const e="Data processor run function is not exist!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}try{const r=await l.executeProcessing(e,t,a,n);return{status:s.StatusCodes.OK,responseData:{executionComplited:!0,result:r}}}catch(e){return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async exportProcessor(e,t,a,n){const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length){const e="Object id is not correct!";return r.default.error(`Error in ${n.name} findItem controller`,{meta:e}),t.status(s.StatusCodes.BAD_REQUEST).send({message:e})}return await n.model.findByPk(l).then(e=>{if(!e){const e=`${n.name} with id ${l} not found`;return r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.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(s.StatusCodes.OK).download(f,`${a.name}.sdp`,e=>{if(e)return r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).json({message:e.message});o.default.unlinkSync(f)})}}).catch(e=>(r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})))},async importProcessor(e,t,a,n){let{data:u}=e.body;if(u=JSON.parse(u||"{}"),!e.files||!u){const e="No file uploaded!";return r.default.error(`Error in ${n.name} importProcessor controller`,{meta:e}),t.status(s.StatusCodes.BAD_REQUEST).send({message:e})}try{for(let a of e.files){const e=a.path,r=o.default.readFileSync(e,{encoding:"utf8",flag:"r"}),c=i.default.AES.decrypt(r,"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3"),d=JSON.parse(c.toString(i.default.enc.Utf8));o.default.unlinkSync(e);let f=await n.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 n.model.create({id:u.id,name:d.name,title:d.title,lang:d.lang}),m.event="create",m.newValue=p),await l.default.updateInitialData(n.model,n.path,m),t.status(s.StatusCodes.OK).send({message:"OK"})}}catch(e){return r.default.error(`Error in ${n.name} importProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})}}}},2671:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=n(a(4716)),o=n(a(2282)),i=a(9031);t.default={async setNumber(e,t,a){if(t.noSetPrefix&&!0===t.noSetPrefix)return;t.prefix||(t.prefix="AA"),function(e){"numberPeriod"in e&&e.prefix.id&&("year"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("year").toDate():"quarter"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("quarter").toDate():"month"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("month").toDate():"day"===e.prefix.periodicity?e.numberPeriod=e.date.startOf("day").toDate():e.numberPeriod=null)}(t);const n=t.prefix?.id?t.prefix.name:t.prefix,l=t.numberPeriod?t.numberPeriod:null;let u=1;try{let s=await r.default.models.Numerator.findOne({where:{tableName:e.path,prefix:n,period:l},lock:i.Transaction.LOCK.UPDATE,transaction:a});if(s)s.number++,await s.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),s=await r.default.models.Numerator.create({tableName:e.path,prefix:n,period:l,number:u},{transaction:a})}u=s.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,s.default)(e.date).format("DD"):"MonthNumber"===a?(0,s.default)(e.date).format("MM"):"QuarterNumber"===a?(0,s.default)(e.date).quarter().toString().padStart(2,"0"):"YearTwoDigits"===a?(0,s.default)(e.date).format("YY"):"YearFourDigits"===a?(0,s.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,n){let s,l=1,u=!1;n?(s=n,u=!0):s=await(e.sequelize?.transaction());try{const a=e.getTableName();let n=await r.default.models.Numerator.findOne({where:{tableName:a,prefix:t},lock:i.Transaction.LOCK.UPDATE,transaction:s});if(n)n.number++,await n.save({transaction:s});else{const o=await e.findOne({where:{prefix:t},order:[["number","DESC"]],transaction:s});o&&(l=o.number+1),n=await r.default.models.Numerator.create({tableName:a,prefix:t,number:l},{transaction:s})}!0!==u&&s&&await s.commit(),l=n.number}catch(t){!0!==u&&s&&await s.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(4139)),s=n(a(7281)),o=n(a(9816)),i=n(a(7565)),l=n(a(6961));t.default=e=>{e.use(r.default),e.use(s.default),e.use(o.default),e.use(l.default),e.use(i.default)}},3464:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2703)),s=n(a(5788)),o=n(a(9896)),i=a(7138),l=n(a(2282)),u=[];t.default={async init(e){if(process.env.NODE_APP_INSTANCE&&"0"!==process.env.NODE_APP_INSTANCE)return;const t=await s.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,n=`scheduledJobs/${a.name}/server.module.js`;let r;const s=`${process.cwd()}/src/modules/${n}`;if(!o.default.existsSync(s))return console.log(`Serwer module for scheduled job "${a.name}" is not found!`);if(r=require(s),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,r,e)}},async executeManually(e,t,a,n){const r=e.body.name;if(!r){const e="Object name is not correct!";return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let u;const c=`scheduledJobs/${r}/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 ${n.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 ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const f=await s.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.body.id,status:"started"});try{const t=[],a=await u(e.objects,t),n=t.find(e=>"error"===e.status),r=t.find(e=>"info"===e.status);let s="";if(n){for(let e of t)s+=e.meta+"\n";await f.update({endDate:new Date,status:"error",errorDescription:s,userId:e.user?.id,manual:!0})}else if(r){for(let e of t)s+=e.meta+"\n";await f.update({endDate:new Date,status:"success",errorDescription:s,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 ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}}};const c=(e,t,a,n)=>{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=r.default.schedule(o,async()=>{const t=await s.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.id,status:"started"});try{const e=[];await a(n,e);const r=e.find(e=>"error"===e.status),s=e.find(e=>"info"===e.status);let o="";if(r){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"error",errorDescription:o})}else if(s){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 n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(8461)),o=r(a(4716)),i=r(a(9896)),l=s.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=n.from(t.originalname,"latin1").toString("utf8");const r=function(e){let t=e.originalname,a="";const n=/(?:\.([^.]+))?$/.exec(e.originalname);if(!n)return`file_${Date.now()}${a}`;a=n[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,r)}});t.default=(0,s.default)({storage:l,limits:{fileSize:104857600}})},3830:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(8894));t.default=async e=>{const t=await s(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 s=async e=>{let t="";const a=await r.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(3903),s=a(7138),o=a(9031),i=n(a(4716)),l=n(a(9896)),u=n(a(2282)),c=n(a(2555)),d=n(a(2671)),f=n(a(6299)),m=n(a(9880)),p=n(a(664)),h=n(a(5788)),y=n(a(2103));function g(e,t){const a=[];if(e.associations)for(const n in e.associations)if(e.associations[n].isMultiAssociation){if(e.associations[n].options._noTablePart)continue;if(Object.prototype.hasOwnProperty.call(t,n)){let t=e.associations[n].target;a.push({model:t,as:n})}}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 n in e){const r=e[n];if("object"==typeof r){const e={};for(const t in r)"inList"===t?e[o.Op.in]=r[t]:"notInList"===t?e[o.Op.notIn]=r[t]:e[o.Op[t]]=r[t];if(n.includes(".")){const t=n.split(".");a[t[0]]?a[t[0]][t[1]]=e:a[t[0]]={[t[1]]:e}}else t[n]=e}else if(n.includes(".")){const e=n.split(".");a[e[0]]?a[e[0]][e[1]]=r:a[e[0]]={[e[1]]:r}}else t[n]=r}}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,n,r={}){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))),r.attributes&&"object"==typeof r.attributes&&("object"!=typeof h||Array.isArray(h)||0!==Object.keys(h).length?"object"==typeof h&&Array.isArray(h)&&0===h.length?h=r.attributes:"object"!=typeof h||Array.isArray(h)||Array.isArray(r.attributes)?"object"==typeof h&&Array.isArray(h)&&Array.isArray(r.attributes)&&(h=[...new Set([...h,...r.attributes])]):h=Object.assign(h,r.attributes):h=r.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(r.filter&&(f=Object.assign(f,r.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 n=e.model.associations[a].target.rawAttributes;n.name?t.push(`$${a}.name$`):n.numberStr&&t.push(`$${a}.numberStr$`)}return t}(n);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"===n.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"===n.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 n of t)n.sortBy&&a.push(w(e,n));else t?.sortBy&&a.push(w(e,t));e.withoutTimestamps||a.push(["createdAt","DESC"]),a.push(["id","DESC"])}(n,d,S),e.query,p&&(r.withTableParts=p);let v=c.default.prepareIncludes(n.model,r,y,_,null,g);try{let e;if(l.page){let t=l.limit,a=0+(l.page-1)*t;e=await n.model.findAndCountAll({where:f,offset:a,limit:t,attributes:h,order:S,include:v,group:r?.group||null})}else e=await n.model.findAll({where:f,attributes:h,order:S,limit:m,include:v,group:r?.group||null});if(r.resultProcessing&&(e=r.resultProcessing(e)),e)return e=JSON.parse(JSON.stringify(e)),{status:s.StatusCodes.OK,responseData:e};{const e="Items not find";return u.default.error(`Error in ${n.name} findAll controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${n.name} findAll controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findItem(e,t,a,n,r={}){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 ${n.name} findItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.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(".")))),r?.attributes&&Array.isArray(r.attributes)){const e=r.attributes.filter(e=>e.includes(".")),t=r.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 n.tables)g=g.filter(t=>!t.startsWith(`${e}.`)),b=b.filter(t=>!t.startsWith(`${e}.`));let w=c.default.prepareIncludes(n.model,r,g,null,p,b);try{let t=await n.model.findByPk(o,{include:w,order:p});if(t){t=JSON.parse(JSON.stringify(t));for(const e in n.tables){p=[];let a=d,s=m;a=a.filter(t=>t.startsWith(`${e}.`)),s=s.filter(t=>t.startsWith(`${e}.`));const o=new RegExp(`^${e}\\.`);a=a.map(e=>e.replace(o,"")),s=s.map(e=>e.replace(o,""));const i=c.default.prepareIncludes(n.tables[e].model,r,a,null,p,s);p&&n.tables[e].model.getAttributes().rowNumber&&p.push(["rowNumber","asc"]);const l=await n.tables[e].model.findAll({where:{parentId:t.id},include:i,order:p});t[e]=JSON.parse(JSON.stringify(l))}return!0===n.configurationData&&await async function(e,t,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=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null,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,t.module&&(t.module=y.default.AES.encrypt(t.module,a).toString()),e){const n=`src/modules/${e.type}s/${e.name}/views/${t.name}/server.module.js`;l.default.existsSync(n)&&(t.serverModule=y.default.AES.encrypt(l.default.readFileSync(n,{encoding:"utf8",flag:"r"}),a).toString());const r=`src/modules/${e.type}s/${e.name}/views/${t.name}/view.info.md`;l.default.existsSync(r)&&(t.info=l.default.readFileSync(r,{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 n=`src/modules/reports/${t.name}/report.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{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 n=`src/modules/scheduledJobs/${t.name}/job.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{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 n=`src/modules/restApi/${t.name}/api.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=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.module=null}}(n,t,e.user?.id),{status:s.StatusCodes.OK,responseData:t}}{const e=`${n.name} with id ${o} not found`;return u.default.error(`Error in ${n.name} findByPk controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${n.name} findByPk controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findOne(e,t,a,n,r={}){const o=e.params.whereCondition;if(!o){const e="Erron in findOne query parameters!";return u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!0;const i=c.default.prepareIncludes(n.model,r);return await n.model.findOne({where:o,include:i}).then(e=>{if(e)return{status:s.StatusCodes.OK,responseData:e};{const e=`${n.name} not found`;return u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async findPredefinedItem(e,t,a,n,r={}){const o=e.params.name;if(!o||"string"!=typeof o){const e="Object predefined name is not correct!";return u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!0;let i=c.default.prepareIncludes(n.model,r);return await n.model.findOne({where:{predefinedName:o},include:i}).then(e=>{if(e)return{status:s.StatusCodes.OK,responseData:e};{const e=`${n.name} with predefinedName ${o} is not found`;return u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async createItem(e,t,a,n,o={},i=void 0){const l=o?.objectData?o.objectData:{...e.body};l.id||(l.id=(0,r.v4)()),delete l.presentation;const c=g(n.model,l),f=o.transaction?o.transaction:await n.model.sequelize.transaction();try{"document"===n.type&&await d.default.setNumber(n,l,f);const a=await n.model.create(l,{include:c,transaction:f});return a?(f.afterCommit(()=>{if(!0===n.configurationData){const e={objectId:a.id,event:"create",newValue:a};_(n,l,e),m.default.updateInitialData(n.model,n.path,e)}else Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n);p.default.onChangeHandler(n.model,a.id,"create",e.user?.id)}),i&&"function"==typeof i&&await i(e,t,a,f),o.transaction||await f.commit(),{status:s.StatusCodes.OK,responseData:a}):{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Object is not created"}}}catch(e){return o.transaction||await f.rollback(),u.default.error(`Error in ${n.name} createItem controller`,{meta:`${n.name} is not created. ${e}`}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async updateItem(e,t,a,n,r={},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 ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:i}};const c=r.objectData?r.objectData:{...e.body};delete c.presentation;const d=r.transaction?r.transaction:await n.model.sequelize.transaction();let f=await n.model.findByPk(l,{transaction:d});if(!f)return r.transaction||await d.rollback(),i=`${n.name} with uuid ${l} not found`,u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:i}};const h=JSON.parse(JSON.stringify(f));for(const e in n.tables){const t=await n.tables[e].model.findAll({where:{parentId:f.id}});h[e]=JSON.parse(JSON.stringify(t))}try{if(!r.noVersionCheck){if(!c.updatedAt)return i="The data version not defined",u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.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 ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:i}}}const a=await f.update(c,{transaction:d});if(!a)return{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Item is not updated"}};const y=g(n.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 n=[];for(const a of c[t.as]){const r={...a};t.fkField||(r.parentId=e),n.push(r)}await t.model.bulkCreate(n,{transaction:d})}}return o&&"function"==typeof o&&await o(e,t,a,h,d),d.afterCommit(()=>{if(!0===n.configurationData){const e={objectId:a.id,event:"update",oldValue:h,newValue:a};_(n,c,e),m.default.updateInitialData(n.model,n.path,e)}else Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n);p.default.onChangeHandler(n.model,l,"update",e.user?.id)}),r.transaction||await d.commit(),{status:s.StatusCodes.OK,responseData:a}}catch(e){return r.transaction||await d.rollback(),u.default.error(`Error in ${n.name} updateItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async confirmItem(e,t,a,n,r={}){const o=e.body.id,i=e.body.isConfirmed,l=n.name,c=r.recordsSet||{},d=r.transaction?r.transaction:await n.model.sequelize.transaction();try{for(const t of Object.keys(c)){const a=e.objects[t];if(a&&n.model.associations[t]){let n=await a.model.findAll({where:{recorderId:o,recorderType:l}});n=JSON.parse(JSON.stringify(n)),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:n,recordsAfter:c[t],recorderId:o,recorderType:l,transaction:d})}}return!1===i&&(await n.model.update({isConfirmed:!0,markedToDelete:!1},{where:{id:e.body.id},transaction:d}),d.afterCommit(()=>{p.default.onChangeHandler(n.model,e.body.id,"confirm",e.user?.id)})),r.transaction||await d.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return r.transaction||await d.rollback(),u.default.error(`Error in ${n.name} confirmItem controller`,{meta:`${n.name} is not confirmed. ${e}`}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async undoConfirmItem(e,t,a,n,r={}){const o=e.body.id,i=n.name,l=r.transaction?r.transaction:await n.model.sequelize.transaction();try{for(const t of Object.keys(n.model.associations))if(n.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 n=a.model;await n.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 n.model.update({isConfirmed:!1},{where:{id:e.body.id},transaction:l}),l.afterCommit(()=>{p.default.onChangeHandler(n.model,e.body.id,"undoConfirm",e.user?.id)}),r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return u.default.error(`Error in ${n.name} undoConfirmItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async deleteItem(e,t,a,n,r={},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 ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=r.transaction?r.transaction:await n.model.sequelize.transaction(),c=await n.model.findByPk(i);if(!c){r.transaction||await l.rollback();const e=`${n.name} with uuid ${i} not found`;return u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}try{return await c.destroy({where:{id:i},cascade:!0,transaction:l}),l.afterCommit(()=>{!0===n.configurationData?m.default.updateInitialData(n.model,n.path,{objectId:c.id,event:"delete",oldValue:c}):Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n)}),o&&"function"==typeof o&&o(e,t,c,l),r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return r.transaction||await l.rollback(),u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async changeItemDeletionMark(e,t,a,n,r={},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 ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=r.transaction?r.transaction:await n.model.sequelize.transaction(),c=await n.model.findByPk(i);if(!c){r.transaction||await l.rollback();const e=`${n.name} with uuid ${i} not found`;return u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.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===n.configurationData?m.default.updateInitialData(n.model,n.path,{objectId:u.id,event:"update",oldValue:a,newValue:u,changeDeletionMark:!0}):Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n),p.default.onChangeHandler(n.model,i,"update",e.user?.id)}),"document"===n.type&&c.isConfirmed){for(const e of Object.keys(n.model.associations))if(n.model.associations[e].options._registerRecords){const t=n.model.associations[e].target;await t.destroy({where:{recorderId:i},transaction:l})}await n.model.update({isConfirmed:!1},{where:{id:i},transaction:l})}return r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:u}}catch(e){return r.transaction||await l.rollback(),u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},calculateRegisterTotals:async(e,t,a,n)=>(await f.default.calculateTotals(n,e.objects),{status:s.StatusCodes.OK,responseData:{message:"OK"}})}},4139:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(6797)),o=r.default.Router();o.get("/",function(e,t,a){t.render("index",{title:"SYNERGY Server"})}),o.use(s.default.isAuthenticated),t.default=o},4469:e=>{e.exports=require("dotenv/config")},4621:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(7138),s=n(a(5788)),o=n(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=r.StatusCodes.BAD_REQUEST,t.message="Bad incoming parameters.",t;try{const a=await s.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!a)return t.status=r.StatusCodes.BAD_REQUEST,t.message="App setting is not found.",t;const n=await s.default.models.AppSetting.findOne({where:{appSettingItemId:a.id}});if(n)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,n),t.status=r.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=r.StatusCodes.OK,t.value=e}}catch(e){o.default.error("Error in App getSetting controller",{meta:e}),t.status=r.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=r.StatusCodes.BAD_REQUEST,a.message="Bad incoming parameters.",a;try{const n=await s.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!n)return a.status=r.StatusCodes.BAD_REQUEST,a.message="App setting is not found.",a;const o=await s.default.models.AppSetting.findOne({where:{appSettingItemId:n.id}});if(o){const e={};i(e,n.valueType,t);const s=await o.update(e);a.status=r.StatusCodes.OK,a.value=s}else{const e={appSettingItemId:n.id};i(e,n.valueType,t);const o=await s.default.models.AppSetting.create(e);a.status=r.StatusCodes.OK,a.value=o}}catch(e){o.default.error("Error in App setSetting controller",{meta:e}),a.status=r.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(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 s.default.query(t,{type:r.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],n=t[1],r=`${process.cwd()}/src/modules/commonModules/${a}.js`;let s;o.default.existsSync(r)&&(s=require(r),s?.[n]&&(e.serviceFunction=s[n]))}return a}catch(e){return console.error(e),[]}},getSubscription:(e,t,a,n)=>e.find(e=>e.event===t&&e.objectType===a&&(0===e.objects.length||e.objects.includes(n)))}},5483:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(1688)),o=n(a(3786)),i=n(a(6224)),l=r.default.Router();function u(e={httpMethod:"GET"},t){let a;const n={};return e.userRole?n.id=e.userRole:t.accessRoleId?n.id=t.accessRoleId:n.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?s.default.canRead(n):"CAN_MODIFY"===e.accessLevel?s.default.canModify(n):"IS_AUTH"===e.accessLevel?s.default.isAuth:s.default.isFullRights:!0===t.system?"GET"===e.httpMethod?s.default.isAuth:s.default.isFullRights:"GET"===e.httpMethod?s.default.canRead(n):s.default.canModify(n),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 n=e.headers["content-type"];if(n&&n.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);"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 n=e.headers["content-type"];if(n&&n.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 n=e.headers["content-type"];if(n&&n.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5483)),s=n(a(360));t.default=async e=>{const{router:t,objects:a}=await(0,r.default)();e.use((e,t,n)=>{e.objects=a,n()}),e.locals.objects=a,e.use(t);const n=await s.default.initRoutes();return e.use(n),{router:t,objects:a}}},5788:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=a(3903),o=n(a(6788)),i=new r.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,s.v4)())}}}});t.default=i},5977:e=>{e.exports=require("express-session")},6224:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7173)),s=n(a(3958)),o=n(a(2562)),i=n(a(3464)),l=n(a(6910)),u=n(a(5379)),c=n(a(6836)),d=n(a(9896)),f=a(7138),m=n(a(2282));function p(e,t,a){if(t.fields.find(e=>!0===e.password)){const n=a.objectData?a.objectData:{...e.body};for(const e of t.fields.filter(e=>!0===e.password))if(""===n[e.name])n[e.name]=null;else if(n[e.name])if(e.decryptable){const t=c.default.encrypt(n[e.name]);n[e.name]=JSON.stringify(t)}else n[e.name]=c.default.createPasswordHash(n[e.name]);a.objectData=n}}t.default=async()=>{const e=await(0,r.default)(),t=await u.default.initSubscriptions("server");for(const a in e){let n;const r=`${e[a].type}s/${a}/server.module.js`,c=`${process.cwd()}/src/modules/${r}`;if(d.default.existsSync(c)&&(n=require(c)),e[a].findAll=async(r,o,i)=>{let l=null;if(n?.findAll)l=await n.findAll(r,o,i,e[a]);else{const c={};n?.beforeFindAll&&await n.beforeFindAll(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindAll",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),l=await s.default.findAllItems(r,o,i,e[a],c),n?.afterFindAll&&await n.afterFindAll(r,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindAll",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,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(r,o,i)=>{let l=null;if(n?.findById)l=await n.findById(r,o,i,e[a]);else{const c={};n?.beforeFindById&&await n.beforeFindById(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindById",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),l=await s.default.findItem(r,o,i,e[a],c),n?.afterFindById&&await n.afterFindById(r,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindById",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,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(r,o,i)=>{if(n?.create)return await n.create(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{n?.beforeCreate&&"function"==typeof n?.beforeCreate&&await n.beforeCreate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeCreate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.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(r,s,o,l)=>{n?.afterCreate&&"function"==typeof n?.afterCreate&&await n.afterCreate(r,s,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(r,s,i,e[a],{newItem:o,transaction:l}))};p(r,e[a],c);const h=await s.default.createItem(r,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return r.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==r.body?.isConfirmed)return r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,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(r,o,i,e[a],y,c)),c.cancel){r.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 s.default.confirmItem(r,o,i,e[a],{recordsSet:y,...c});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(r,o,i,e[a],c)),b.status===f.StatusCodes.OK?(r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(r.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){r.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(r,o,i)=>{if(n?.update)return await n.update(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{n?.beforeUpdate&&"function"==typeof n?.beforeUpdate&&await n.beforeUpdate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.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(r,s,o,l,c)=>{n?.afterUpdate&&"function"==typeof n?.afterUpdate&&await n.afterUpdate(r,s,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(r,s,i,e[a],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1}))};p(r,e[a],c);const h=await s.default.updateItem(r,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return r.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==r.body?.isConfirmed)return r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,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(r,o,i,e[a],y,c)),c.cancel){r.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 s.default.confirmItem(r,o,i,e[a],{recordsSet:y,...c});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(r,o,i,e[a],c)),b.status===f.StatusCodes.OK?(r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(r.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){r.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(r,o,i)=>{if(n?.delete)return await n.delete(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={transaction:l};try{n?.beforeDelete&&"function"==typeof n?.beforeDelete&&await n.beforeDelete(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c));const m=async(r,s,o,l)=>{n?.afterDelete&&"function"==typeof n?.afterDelete&&n.afterDelete(r,s,i,e[a],{deletedObject:o,...c});const d=u.default.getSubscription(t,"afterDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,s,i,e[a],{deletedObject:o,...c}))},p=await s.default.deleteItem(r,o,i,e[a],c,m);return r.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.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,n,r)=>{const o=await s.default.findPredefinedItem(t,n,r,e[a]);return n?n.status(o.status).send(o.responseData):o}),"catalog"!==e[a].type&&"document"!==e[a].type||(e[a].changeDeletionMark=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={transaction:l,changeDeletionMark:!0};try{n?.beforeUpdate&&"function"==typeof n?.beforeUpdate&&await n.beforeUpdate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c));const m=async(r,s,o,l,d)=>{n?.afterUpdate&&"function"==typeof n?.afterUpdate&&await n.afterUpdate(r,s,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(r,s,i,e[a],{updatedObject:o,existObject:l,...c}))},p=await s.default.changeItemDeletionMark(r,o,i,e[a],c,m);return r.transaction||(p?.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.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,n,r)=>{const o=await s.default.calculateRegisterTotals(t,n,r,e[a]);return n?n.status(o.status).send(o.responseData):o}),"dataProcessors"===a&&(e[a].executeProcessing=async(t,n,r)=>{const s=await o.default.executeProcessing(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s},e[a].exportProcessor=async(t,n,r)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.exportProcessor(t,n,r,e[a])},e[a].importProcessor=async(t,n,r)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.importProcessor(t,n,r,e[a])})),"catalog"===e[a].type&&("appObjects"===a?(e[a].executeMigration=async(t,n,r)=>{try{const s=await l.default.executeMigrations(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s}catch(e){return m.default.error("Error in executeMigration controller",{meta:e}),n.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}},e[a].existMigrations=async(t,n,r)=>{try{const s=await l.default.existMigrations(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s}catch(e){return m.default.error("Error in existMigrations controller",{meta:e}),n.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}}):"scheduledJobs"===a&&(e[a].executeManually=async(t,n,r)=>{const s=await i.default.executeManually(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s})),"document"===e[a].type&&(e[a].confirm=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={},d={cancel:!1,transaction:l};try{const m=await e[a].findById({params:{id:r.body.id}});m.status===f.StatusCodes.OK&&(r.body=JSON.parse(JSON.stringify(m.responseData))),n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,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(r,o,i,e[a],c,d)),d.cancel){r.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 s.default.confirmItem(r,o,i,e[a],{recordsSet:c,...d});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],d);const y=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return y?.serviceFunction&&await(y?.serviceFunction(r,o,i,e[a],d)),r.transaction||(h.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(h.status).send(h.responseData):h}catch(e){r.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(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{const d=await e[a].findById({params:{id:r.body.id}});d.status===f.StatusCodes.OK&&(r.body=JSON.parse(JSON.stringify(d.responseData))),n?.undoConfirm&&"function"==typeof n?.undoConfirm&&await n.undoConfirm(r,o,i,e[a],c);const m=u.default.getSubscription(t,"undoConfirm",e[a].type,e[a].id);if(m?.serviceFunction&&await(m?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.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 s.default.undoConfirmItem(r,o,i,e[a],c);return r.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.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&&n)for(const t of e[a].api)n[t.controller]&&(e[a].controllers[t.controller]=async(r,s,o)=>{n[t.controller](r,s,o,e[a])})}return e}},6261:e=>{e.exports=require("events")},6299:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(2282)),o=n(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 n={};return e.forEach(e=>{const r=t.map(t=>e[t]).join("|");n[r]||(n[r]={},t.forEach(t=>{n[r][t]=void 0===e[t]?null:e[t]}),a.forEach(e=>{n[r][e]=0})),a.forEach(t=>{n[r][t]+=e[t]})}),Object.values(n)}(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 n=await this.getCalculatedPeriod(t.objects.registersCalculation,e.id);if(!n)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,n){const r={};return e.forEach(e=>{const t=a.map(t=>e[t]).join("|");r[t]||(r[t]={},a.forEach(a=>{r[t][a]=e[a]}),n.forEach(e=>{r[t][e]=0})),n.forEach(a=>{r[t][a]-=parseFloat(e[a])})}),t.forEach(e=>{const t=a.map(t=>e[t]).join("|");r[t]||(r[t]={},a.forEach(a=>{r[t][a]=e[a]}),n.forEach(e=>{r[t][e]=0})),n.forEach(a=>{r[t][a]+=parseFloat(e[a])})}),Object.values(r).filter(e=>n.some(t=>0!==e[t]))}(d,f,u,c);await async function(e,t,a,n,s,l){for(const u of t){const t=[];for(let e=(0,o.default)(s.beginPeriod);e.isSameOrBefore(s.endPeriod,"month");e.add(1,"month"))e.isSameOrAfter(u.period)&&t.push(e.toDate());for(let s of t){let t={};if(a.forEach(e=>{t[e]="period"===e?s:u[e]}),await e.findOne({where:t,transaction:l})){let a={};n.forEach(e=>{a[e]=r.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?s:u[e]}),n.forEach(e=>{t[e]=u[e]}),await e.create(t,{transaction:l})}}}}(a.model,m,u,c,n,t.transaction).catch(e=>{s.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 n="period",r=a.dimensions.map(e=>e.dbName),s=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 r.forEach(a=>{t[a]=e[a]}),t[n]=(0,o.default)(e[n]).add(1,"month").startOf("month").toDate(),s.forEach(a=>{t[a]="receipt"===e.recordType?parseFloat(e[a]):-parseFloat(e[a])}),t}),c=[...new Set(u.map(e=>e[n]))].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[n]).isSame(e,"month")){const e=r.map(e=>a[e]).join("_");l[e]?s.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]?s.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=>(s.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 n=await e.model.findOne({where:{registerId:t.registerId},transaction:a});n?await n.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 n=await getParentObjectsArray(e,t);const r=await getRelated(e,t);if(n.length>1&&1===n[n.length-1].length&&n.pop(),r.parents.length>0){1===n.length&&1===n[0].length&&(n=r.parents);for(const e of r.parents)n.push(e)}async function s(e,t){const a=e.subordination.filter(e=>!e.isParent),n={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}}),r=e.childs.filter(e=>!e.isParent&&e.isActive);for(const e of r)for(const t of a){const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),r=t[e.path];if(r&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:r}});e&&n.children.push(await s(a,e))}}}else{const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),r=t[e.path];if(r&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:r}});e&&n.children.push(await s(a,e))}}return n}const o=await s(e,t);if(o.disabled=!0,r.children.length>0)for(const e of r.children)o.children.push(await s(e.appObject,e.object));for(const e of n){let t=null,n={};if(e.length>1)for(let a=e.length-2;a>=0;a--)n={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?(n.children.push(t),t=n):(n.children.push(o),t=n);else t=o;t&&a.push(t)}return a}async function getParentObjectsArray(e,t){let a=[];await async function e(t,n,r=[]){const s=[{object:n,objectType:t.name},...r],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:n.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}}),n=a[t.path];if(n&&e){const t=await dbConnection_1.default.models[e.model].findOne({where:{id:n}});t&&t.children.push(await this.createChildObjectTree(e,t))}}}else{const n=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),r=s[0].object[t.path];if(r&&n){const t=await dbConnection_1.default.models[n.model].findOne({where:{id:r}});t&&await e(n,t,s)}else a.push(s)}}else a.push(s)}(e,t);for(let e=0;e<a.length;e++){const t=a[e],n=a.filter(e=>e[0]===t[0]);n.length>1&&a.splice(e+1,n.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 n,r,s={parents:[],children:[]};if(a.length>0)for(const o of a){n=o,r=[];let a=!1;for(const n of o.subordination)if(n.isTablePart){for(const s of n.childs)if(s.model===e.model&&(r=await dbConnection_1.default.models[o.model].findAll({where:{[s.path]:t.id}}),r.length>0)){a=s.isParent;break}if(r.length>0)break}else if(n.model===e.model&&(r=await dbConnection_1.default.models[o.model].findAll({where:{[n.path]:t.id}}),r.length>0)){a=n.isParent;break}if(r.length>0)for(const o of r)if(a)s.children.push({appObject:n,object:o});else{const a=await getParentObjectsArray(n,o);for(const n of a)n.push({object:t,objectType:e.name}),s.parents.push(n)}}return s}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}exports.default={async getAppInfo(e,t,a){const n={appName:"SynergyCore",company:"INTELEKTSOFT",serverVersion:serverPackage?.version||"0.0.0"};t.status(200).send(n)},async getObjectMetadata(e,t,a){const{objectType:n,tableName:r}=e.query,s=JSON.parse(e.query.withTableParts||"false");let o;if(n?o=dbConnection_1.default.models[n]:Object.keys(dbConnection_1.default.models).forEach(e=>{dbConnection_1.default.models[e].getTableName()===r&&(o=dbConnection_1.default.models[e])}),!o)return console.error("Model not found: ",n),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 n=t.target.rawAttributes;n.presentation?._sortBy?a.sortBy=n.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 n=e.endsWith("Id")?e.slice(0,-2):e,r=n+"Type";let s=i.find(e=>e.name===r);if(s){const e=i.findIndex(e=>e===s);i.splice(e,1)}else c.push(r);for(const s of t){const t=i.findIndex(e=>e.name===n);-1!==t?(i[t].ref.push(s.ref),i[t].model.push(s.modelName)):(a.name=n,a.ref=[s.ref],a.model=[s.modelName],a.fieldPath=e,a.fieldTypePath=r,a.multiType=!0,a.sortBy=s.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(s)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:n}=e.query,r=JSON.parse(e.query.withTableParts||"false"),s=await dbConnection_1.default.models.AppObject.findOne({where:{name:n}});if(!s)return void t.status(404).send({message:"Object not found"});let o=s.dbFields;r||(o=o.filter(e=>!e.isTablePart)),t.status(200).send(o)},async getSubordination(e,t,a){const{objectType:n,objectId:r}=e.query,s=await dbConnection_1.default.models.AppObject.findOne({where:{model:n}});if(!s)return void t.status(400).send({message:"Model not found"});const o=await dbConnection_1.default.models[s.model].findOne({where:{id:r}});if(!o)return void t.status(400).send({message:"Object not found"});const i=await getSubordinationTree(s,o);t.status(200).send(i)},async getObjects(e,t,a){let n=[];Object.keys(dbConnection_1.default.models).forEach(e=>{const t=dbConnection_1.default.models[e];t.options.mainModel&&n.push({model:e,name:t.options.name,tableName:t.getTableName()})}),n.sort((e,t)=>e.model.toLowerCase()>t.model.toLowerCase()?1:-1),t.status(200).send(n)},async getModels(e,t,a){let n=[];Object.keys(dbConnection_1.default.models).forEach(e=>{let t=dbConnection_1.default.models[e].getTableName();n.push({model:e,tableName:t,name:dbConnection_1.default.models[e].options.name})}),t.status(200).send(n)},async getRegistersMetadata(e,t,a){const{modelName:n}=e.query;let r;if(n&&(r=dbConnection_1.default.models[n]),!r)return console.error("Model not found: ",n),void t.status(400).send({message:"Model not found"});const s=[];Object.keys(r.associations).forEach(e=>{const t=r.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),n=Object.keys(e.rawAttributes).map(t=>e.rawAttributes[t]),r={name:a,fields:n};s.push(r)}}),t.status(200).send(s)},async getSetting(e,t,a){const n=e.query.settingName,r=await app_service_1.default.getSetting(n);r?r.status===http_status_codes_1.StatusCodes.OK?t.status(r.status).send(r.value):t.status(r.status).send({message:r.message}):t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Bad incoming parameters"})},async setSetting(e,t,a){const{settingName:n,settingValue:r}=e.body,s=await app_service_1.default.setSetting(n,r);s.status===http_status_codes_1.StatusCodes.OK?t.status(s.status).send(s.value):t.status(s.status).send({message:s.message})},async getEnums(e,t,a){const n=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",n),values:t.values.map(e=>({value:e.value,title:common_service_1.default.translateField(e,"title",n)}))});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 n=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",n),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 n=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 n){const t=`commonModules/${e.name}.js`;let n=null;const r=`${process.cwd()}/src/modules/${t}`;let s="";if("client"===e.execSide){if(!fs_1.default.existsSync(r)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}if(n=await fs_2.promises.readFile(r,"utf-8"),n){const e=/^\s*export\s+(?:async\s+)?function\s+([a-zA-Z0-9_]+)\s*\([^)]*\)\s*{[^}]*}/gm;let t;const a=[];let r=n;for(;null!==(t=e.exec(n));)a.push(t[1]),r=r.replace(t[0],t[0].replace("export ",""));s=`function main() {${r.trim()} return{${a.join(",\n ")}}}`}else s="function main() {return {}}"}else{if(!fs_1.default.existsSync(r)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}n=require(r);let t="";if(n){const e=Object.keys(n).filter(e=>"function"==typeof n[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 ")}}`}s=`function main() {${""===t?"return {}":t}}`}const o=await(0,terser_1.minify)(s);a[e.name]=o.code.replace(/^function main\(\)/,"")}const r=crypto_js_1.default.AES.encrypt(JSON.stringify(a),e.user.id).toString();t.status(http_status_codes_1.StatusCodes.OK).send(r)}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 n=e.params.id;let r="";if(!n||"string"!=typeof n||36!==n.length)return r="View settings id is not correct!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:r}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:r});try{let a=await dbConnection_1.default.models.ViewSetting.findByPk(n,{include:[{model:dbConnection_1.default.models.AppObject,attributes:["name","title","presentation","type"],as:"appObject"}]});if(!a)return r="View settings not found!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:r}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:r});const s=JSON.parse(JSON.stringify(a)),o=`${process.cwd()}/src/modules/${s.appObject.type}s/${s.appObject.name}/views/${s.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 n="";for(const e of a)n+=`\nasync function ${e}(params){ \n const response = await store.dispatch('app/execServerFunc', { objectFunc: 'viewSettings.${s.appObject.name}.${s.name}.${e}', params })\n return response?.data || undefined\n }`;n+=`\n return {${a.join(",\n ")}}`;const r=`function main() {${""===n?"return {}":n}}`,o=await(0,terser_1.minify)(r);s.serverModule=crypto_js_1.default.AES.encrypt(o.code.replace(/^function main\(\)/,""),e.user.id).toString()}}if(s.module){s.module=`function main() { return ${s.module.replace(/^\s*export\s+default\s+/,"")}}`;const t=await(0,terser_1.minify)(s.module);s.module=crypto_js_1.default.AES.encrypt(t.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}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})}},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 n=JSON.parse(JSON.stringify(a));for(const t of n)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.status(http_status_codes_1.StatusCodes.OK).send(n)}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:n,params:r}=e.body;try{const e=n.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],s=e[1];if(!s)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[s])return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${s}" is not found!`});const e=await i[s](r);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:n,accessType:r}=e.query;let s=!1,o=!1;switch(r){case"read":s=!0;break;case"modify":s=!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:n},s,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:n,params:r,sid:s}=e.body;if("b0c95264-07b2-4e72-b705-fee2102505d6"!==s||!n||!r){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(n).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 s=await dbConnection_1.default.query(n,{type:sequelize_1.QueryTypes.SELECT,replacements:r});return void t.status(http_status_codes_1.StatusCodes.OK).send(s[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 n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(3648)),o=r(a(4716)),i=r(a(5788)),l=r(a(2282)),u=r(a(2555));function c(e,t,a){const n=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],r="#f2f5fa";for(const s of e){const e=[];let o=!0===a.hideDetails?1:a.fields.length;if(s.isGroup){if(e.push({text:m(s.groups,a),colSpan:o,borderColor:n,fillColor:s.children.length>0?r:null}),o>1)for(let t=1;t<o;t++)e.push({});if(a.colGroups.length>0){for(const t of s.totals)e.push({text:d(t.value||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"});if(a.showXTotal)for(const t of a.calcs){const a=s.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);e.push({text:d(a||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"})}}else for(const t of s.totals)e.push({text:d(t.value||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"});t.push(e),s.children.length>0&&c(s.children,t,a)}else{for(let t=0;t<a.fields.length;t++)e.push({text:f(a.fields[t],s,a),borderColor:n,alignment:a.fields[t].textAlign||"left"});if(a.colGroups.length>0){const t=s[a.colGroups[0].name],r={};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(s[a.calcs[i].name]||0)),e.push({text:d(l||0,a.calcs[i].format),borderColor:n,alignment:a.calcs[i].textAlign?a.calcs[i].textAlign:"left"}),Object.hasOwnProperty.call(r,a.calcs[i].name)?r[a.calcs[i].name]+=Number(l):r[a.calcs[i].name]=Number(l)}if(a.showXTotal)for(let t=0;t<a.calcs.length;t++){let s=r[a.calcs[t].name];e.push({text:d(s||0,a.calcs[t].format),borderColor:n,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 r=Number(s[a.calcs[t].name]||0);e.push({text:d(r||0,a.calcs[t].format),borderColor:n,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 n=t[e.name]||"";switch(e.valueType){case"number":{let t=parseFloat(n);if(isNaN(t)&&(t=0),n=t||0,e.format){const t=JSON.parse(e.format||'{"NFD": 3}');t.NFD&&(n=Number(n).toFixed(t.NFD))}break}case"date":default:n=n||"";break;case"object":n=n.name||"";break;case"boolean":n=Boolean(n||!1),n=n?a.lang.boolean.true:a.lang.boolean.false;break;case"enum":if(n&&e.ref){const t=a.enums[e.ref].find(e=>e.value===n);n=t?t.title:n}n=n||""}return n}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 n="";for(let a=0;a<e.length;a++)"object"===e[a].valueType?n+=e[a].value?.name||t.lang.undefined:"boolean"===e[a].valueType?n+=e[a].value?t.lang.boolean.true:t.lang.boolean.false:n+=e[a].value,a<e.length-1&&(n=`${n}, `);a=n||""}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},r=new s.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 n=0;n<e.rowGroups.length;n++)!0!==e.rowGroups[n].withParent&&0!==n&&(t.push(a.length>1?a:a[0]),a=[]),a.push(e.rowGroups[n]),n===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 n of a)t[n.name]=n.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 n=e.periodPresentation.length>20?e.lang.byPeriod:e.lang.byDate;t.push(`${n}:`),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 n=1;n<e.filterPresentation.length;n++)t=[],t.push(" "),t.push(e.filterPresentation[n]),a.body.push(t)}a.body.length>0&&t.push({table:a,layout:"noBorders"});const n={body:[],headerRows:0},r=function(e){const t=[],a=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],n="#e9ecef";if(e.rowGroups.length>0){const r=!0===e.hideDetails?1:e.fields.length,s=[];if(s.push({text:p(e.rowGroups[0]),rowSpan:1===e.rowGroups.length&&e.colGroups.length>0&&e.hideDetails?2:1,colSpan:r,borderColor:a,fillColor:n}),r>1)for(let e=1;e<r;e++)s.push({});if(0===e.colGroups.length)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length+(e.hideDetails?0:1),borderColor:a,fillColor:n});else{for(const t of e.cols)s.push({text:"object"===e.colGroups[0].valueType?t.name:t,colSpan:e.calcs.length,borderColor:a,fillColor:n});e.showXTotal&&s.push({text:e.lang.total,colSpan:e.calcs.length,borderColor:a,fillColor:n})}if(t.push(s),e.colGroups.length>0&&1===e.rowGroups.length&&!0===e.hideDetails){const r=[];r.push({});for(const t of e.cols)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});t.push(r)}if(0===e.colGroups.length)for(const s of e.rowGroups.slice(1)){const o=[];if(o.push({text:p(s),colSpan:r,borderColor:a,fillColor:n}),r>1)for(let e=1;e<r;e++)o.push({});for(const t of e.calcs)o.push({});t.push(o)}else if(e.rowGroups.length>1){let s=[];s.push({text:p(e.rowGroups[0]),colSpan:r,borderColor:a,fillColor:n});for(const t of e.colGroupsData)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:n});t.push(s);for(const s of e.rowGroups.slice(2)){let o=[];o.push({text:p(s),colSpan:r,borderColor:a,fillColor:n});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 r=[];for(const t of e.fields)r.push({text:t.title,borderColor:a,fillColor:n});if(e.colGroups.length>0)if(1===e.rowGroups.length){for(const t of e.colGroupsData)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n})}else{for(const t of e.colGroupsData)for(const t of e.calcs)r.push({});if(e.showXTotal)for(const t of e.calcs)r.push({})}else for(const t of e.calcs)r.push({});t.push(r)}}else{let r=[];for(const t of e.fields)r.push({text:t.title,borderColor:a,fillColor:n});t.push(r)}return t}(e);n.body.push(...r);const s=[];if(c(e.data,s,e),n.body.push(...s),e.showYTotal>0&&e.totals.length>0){const t=function(e){const t=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],a="#f2f5fa",n=[];if(e.rowGroups.length>0){const r=!0===e.hideDetails?1:e.fields.length;if(n.push({text:e.lang.total,colSpan:r,borderColor:t,fillColor:a}),r>1)for(let e=1;e<r;e++)n.push({});e.totals.forEach(e=>{n.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((r,s)=>{const o=e.totals.reduce((e,t)=>t.id===r.id?e+t.value:e,0);n.push({text:d(o||0,r.format),borderColor:t,fillColor:a,alignment:r.textAlign?r.textAlign:"left"})})}else{let r=!0,s=1;for(const o of e.fields){const i=e.totals.find(e=>e.id===o.id);if(i){if(!0===r){if(n.push({text:e.lang.total,colSpan:s-1,borderColor:t,fillColor:a}),s>1)for(let e=1;e<s-1;e++)n.push({});r=!1}n.push({text:d(i.value||0,o.format),borderColor:t,fillColor:a,alignment:o.textAlign?o.textAlign:"left"})}else r||n.push({text:"",borderColor:t,fillColor:a});s++}}return[n]}(e);n.body.push(...t)}return t.push({table:n,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=r.createPdfKitDocument(f,{}),h=[];let y;m.on("data",function(e){h.push(e)}),m.on("end",function(){y=n.concat(h),t&&(t.contentType("application/pdf"),t.send(y))}),m.end()}}},6456:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2096)),s=n(a(7825)),o=(0,n(a(6918)).default)({interval:"1d",path:`${process.cwd()}/logs/access`});t.default=function(e){e.use((0,r.default)(function(e,t,a){const n={};t.user&&(n.id=t.user.id,n.login=t.user.login,n.name=t.user.name);let r={};t.body&&(r=s.default.cloneDeep(t.body),t.body.password&&delete r.password);const o=new Date,i=Object.fromEntries(Object.entries(t.headers).filter(([e])=>"cookie"!==e)),l={date:o,ip:t.headers["x-real-ip"]||t.headers["x-forwarded-for"]||t.ip,user:n,method:e.method(t,a),url:e.url(t,a),query:t.query,params:t.params,body:r,headers:i,status:e.status(t,a),statusMessage:a.statusMessage,length:e.res(t,a,"content-length"),time:e["response-time"](t,a)};return JSON.stringify(l)},{stream:o}))}},6661:e=>{e.exports=require("base64-js")},6788:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),a(4469);const n={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=n},6797:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var r=a(1752).Strategy;const s=n(a(5486)),o=a(7138),i=n(a(2282)),l=n(a(5788)),u=n(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 r({usernameField:"email",passwordField:"password",passReqToCallback:!0},async function(e,a,n,r){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),r(null,!1);a=t.login,n=t.password}const s=await l.default.models.User.findOne({where:{login:a,isActive:!0}}).catch(e=>(console.error(e),i.default.error("Bad request for user",a),r(null,!1)));if(!s)return i.default.error(`User not found or not active with username: ${a}`),r(null,!1);if(!t(s,n))return i.default.error("Invalid Password",a),r(null,!1);let o="";return e.body.electronCert&&(o=JSON.stringify({login:e.body.email,password:e.body.password,workingPlace:e.body.workingPlace}),s.tokenElectron=u.default.encrypt(o)),r(null,s)}));var t=(e,t)=>s.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2103)),s=n(a(5486)),o="vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3";t.default={generateRandomToken:()=>r.default.lib.WordArray.random(20).toString(r.default.enc.Hex),createPasswordHash:e=>s.default.hashSync(e,s.default.genSaltSync(10)),encrypt(e){const t=r.default.enc.Utf8.parse(o),a=r.default.lib.WordArray.random(16),n=r.default.AES.encrypt(e,t,{iv:a,mode:r.default.mode.CTR,padding:r.default.pad.NoPadding});return{iv:a.toString(r.default.enc.Hex),content:n.ciphertext.toString(r.default.enc.Hex)}},decrypt(e){const t=r.default.enc.Utf8.parse(o),a=r.default.enc.Hex.parse(e.iv),n=r.default.enc.Hex.parse(e.content),s=r.default.lib.CipherParams.create({ciphertext:n}),i=r.default.AES.decrypt(s,t,{iv:a,mode:r.default.mode.CTR,padding:r.default.pad.NoPadding});return r.default.enc.Utf8.stringify(i)}}},6898:e=>{e.exports=require("cookie-parser")},6910:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(7138),s=n(a(6928)),o=n(a(4716)),i=n(a(9896)),l=a(9896),u=n(a(9880)),c=n(a(2282)),d=n(a(2555)),f=n(a(7173)),m=n(a(3275)),p="src/database/migrations";let h={},y=[],g=[];async function b(e,t){let a="";for(const n of e)!0!==n.isTablePart?!0!==n.virtual&&(n.multiType&&"common"===n.multiTypeVariant?a+=`${_(n)}`:a+=`\n ${n.dbName}: ${await w(n)}`):t.push({...n});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 n="{\n ",r="";switch(e.type){case"json":r="TEXT";break;case"object":r="UUID";break;default:r=e.type.toUpperCase()}let s="";if("string"===e.type?e.typeOptions?.length&&0!==e.typeOptions?.length&&(s+=`(${e.typeOptions.length})`):"decimal"===e.type&&e.typeOptions?.precision&&e.typeOptions?.scale&&(s+=`(${e.typeOptions?.precision}, ${e.typeOptions?.scale})`),n+=` type: Sequelize.DataTypes.${r}${s},\n`,"enum"===e.type&&e.ref&&(n+=` values: [${h[e.ref].map(e=>`'${e}'`)}],\n`),!0===e.primaryKey&&(n+=" primaryKey: true,\n"),!0===e.unique&&(n+=" unique: true,\n"),!0===e.notNull&&(n+=" allowNull: false,\n"),null!==e.defaultValue&&void 0!==e.defaultValue&&(["enum","string","text"].includes(e.type)?n+=` defaultValue: '${e.defaultValue}',\n`:n+=` defaultValue: ${e.defaultValue},\n`),!0===e.autoIncrement&&(n+=" autoIncrement: true,\n"),n+=" },","object"===e.type&&!0===e.multiType){let r=e.dbName.endsWith("Id")?e.dbName.slice(0,-2):e.dbName;a?(n+=")",n+=`\n await queryInterface.addColumn('${t}', '${r}Type', {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(n+=" allowNull: false,\n"),n+=" },"):(n+=`\n ${r}Type: {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(n+=" allowNull: false,\n"),n+=" },")}return n}function _(e){let t="";const a="\n type: Sequelize.DataTypes.",n=!0===e.notNull?" allowNull: false,\n":"";return t+=`\n _${e.dbName}Type: {${a}STRING,\n${n} },`,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 n="";const r="\n await queryInterface.addColumn(",s="\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 r=i[a]||"";r&&(n+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}${r}')`)}m.default.typeIncludesRef(t.type)&&!m.default.typeIncludesRef(a.type)&&(n+=`\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;n+=`${r}'${e}', '_${a.dbName}${l}', {${s}STRING(${t}),\n${o} })`}else if("text"===t)n+=`${r}'${e}', '_${a.dbName}${l}', {${s}TEXT,\n${o} })`;else if("integer"===t)n+=`${r}'${e}', '_${a.dbName}${l}', {${s}INTEGER,\n${o} })`;else if("decimal"===t){const t=a.typeOptions?.precision||18,i=a.typeOptions?.scale||2;n+=`${r}'${e}', '_${a.dbName}${l}', {${s}DECIMAL(${t}, ${i}),\n${o} })`}else"boolean"===t?n+=`${r}'${e}', '_${a.dbName}${l}', {${s}BOOLEAN,\n${o} })`:"date"===t?n+=`${r}'${e}', '_${a.dbName}${l}', {${s}DATE,\n${o} })`:m.default.isRefType(t)?n+=`${r}'${e}', '_${a.dbName}Ref', {${s}STRING(100),\n${o} })`:n+=`${r}'${e}', '_${a.dbName}${l}', {${s}TEXT,\n${o} })`}return!m.default.typeIncludesRef(t.type)&&m.default.typeIncludesRef(a.type)&&(n+=`${r}'${e}', '_${a.dbName}Ref', {${s}STRING(100),\n${o} })`),n}return t.multiTypeVariant||"objects"!==a.multiTypeVariant?"objects"===a.multiTypeVariant?(n+=D(e,t),n+=`${r}'${e}', '${a.dbName}Type', {${s}STRING,\n${o} })`,n+=`${r}'${e}', '${a.dbName}Id', {${s}UUID,\n${o} })`,n):(n+=x(e,t.dbName),n+=x(e,`${t.dbName.slice(0,-2)}Type`),n+=O(e,a),n):""}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")}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 $(e,t,a){return`\n await queryInterface.addColumn('${e}', '${t}', ${await w(a,e,!0)})`}function O(e,t){let a="";const n="\n await queryInterface.addColumn(",r="\n type: Sequelize.DataTypes.",s=!0===t.notNull?" allowNull: false,\n":"";return a+=`${n}'${e}', '_${t.dbName}Type', {${r}STRING,\n${s} })`,t.type.includes("string")&&(a+=`${n}'${e}', '_${t.dbName}ST', {${r}STRING(${t.typeOptions.length}),\n })`),t.type.includes("text")&&(a+=`${n}'${e}', '_${t.dbName}TX', {${r}TEXT,\n })`),t.type.includes("integer")&&(a+=`${n}'${e}', '_${t.dbName}IN', {${r}INTEGER,\n })`),t.type.includes("decimal")&&(a+=`${n}'${e}', '_${t.dbName}DC', {${r}DECIMAL(${t.typeOptions?.precision}, ${t.typeOptions?.scale}),\n })`),t.type.includes("boolean")&&(a+=`${n}'${e}', '_${t.dbName}BL', {${r}BOOLEAN,\n })`),t.type.includes("date")&&(a+=`${n}'${e}', '_${t.dbName}DT', {${r}DATE,\n })`),m.default.typeIncludesRef(t.type)&&(a+=`${n}'${e}', '_${t.dbName}Ref', {${r}STRING(100),\n })`),a}function D(e,t){let a="";const n=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}`;a+=`${n}Type')`;const r=m.default.typesSufixes();for(const e in r)t.type.includes(e)&&(a+=`${n}${r[e]}')`);return m.default.typeIncludesRef(t.type)&&(a+=`${n}Ref')`),a}function C(e,t,a){return`\n await queryInterface.renameColumn('${e}', '${t}', '${a}')`}function A(e,t){const a=m.default.typesSufixes();let n="";const r=`\n await queryInterface.renameColumn('${e}', `;n+=`${r}'${t.oldName}Type', '${t.newName}Type')`;for(const e in a)t.field?.type.includes(e)&&(n+=`${r}'${t.oldName}${a[e]}', '${t.newName}${a[e]}')`);return m.default.typeIncludesRef(t.field?.type||[])&&(n+=`${r}'${t.oldName}Ref', '${t.newName}Ref')`),n}async function j(e,t,a){let n="";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))n+=x(e.name,a.dbName),n+=await $(e.name,a.dbName,a);else if(r=t.type,s=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===r&&e.typeTo===s)){n+=await $(e.name,`temp_${a.dbName}`,a);let r="";["integer","decimal","text"].includes(t.type)&&"string"===a.type?r+=`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?r+=`UPDATE ${e.name} SET temp_${a.dbName} = CAST(${a.dbName} AS TEXT)`:["text","string"].includes(t.type)&&"integer"===a.type?r+=`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&&(r+=`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`),r&&(n+=function(e){return`\n await queryInterface.sequelize.query(\`${e}\`)`}(r)),n+=x(e.name,a.dbName),n+=C(e.name,`temp_${a.dbName}`,a.dbName)}else n+=await I(e.name,a.dbName,a);else n+=await I(e.name,a.dbName,a);var r,s;return n}async function I(e,t,a){return`\n await queryInterface.changeColumn('${e}', '${t}', ${await w(a,e,!0)})`}function x(e,t){return`\n await queryInterface.removeColumn('${e}', '${t}')`}function P(e,t){return`\n await queryInterface.addIndex('${e}', ['${t}'])`}function F(e,t){return`\n await queryInterface.removeIndex('${e}', ['${t}'])`}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:r.StatusCodes.OK,responseData:{message:"No migrations needed"}};const a=(0,o.default)();for(const n of t)await this.executeObjectMigration(n,e.appObjects,a);a.add(1,"seconds");for(const n of t)await this.addFieldsForeignKeys(a)&&await N(n,e.appObjects);return{status:r.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 n=i.default.readdirSync(a,{withFileTypes:!0});for(const r of n){const n=s.default.join(a,r.name);r.isDirectory()?e(n):r.isFile()&&"object.struct.json"===r.name&&t.push(n)}}(e),t}(`${process.cwd()}/src/modules`),a=(0,o.default)();for(const n of t){a.add(1,"seconds");const t=await l.promises.readFile(n,"utf-8"),r=JSON.parse(t);r.dbTableName&&!r.modified||(console.log("Migration creation for object:",r.name),await this.executeObjectMigration(r,e.appObjects,a,n))}a.add(1,"seconds");for(const e of t){const t=await l.promises.readFile(e,"utf-8"),n=JSON.parse(t);n.dbTableName&&!n.modified||await this.addFieldsForeignKeys(a)&&await T(n,e)}return{status:r.StatusCodes.OK,responseData:{message:"Migrations were created successfully"}}},async executeMigrations(e,t,a,n){const s=await n.model.findAll({where:{modified:!0}});if(!s||0===s.length)return{status:r.StatusCodes.OK,responseData:{message:"No migrations needed"}};const i=(0,o.default)();for(const e of s)i.add(1,"seconds"),await this.executeObjectMigration(e,n,i);i.add(1,"seconds");for(const e of s)await this.addFieldsForeignKeys(i)&&await N(e,n);return{status:r.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async existMigrations(e,t,a,n){const s=await n.model.findAll({where:{modified:!0}});return s&&0!==s.length?{status:r.StatusCodes.OK,responseData:!0}:{status:r.StatusCodes.OK,responseData:!1}},async executeMigration(e,t,a,n){const s=e.body.objectId;if(!s||"string"!=typeof s||36!==s.length){const e="Object id is not correct!";return c.default.error(`Error in ${n.name} findItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const i=(0,o.default)(),l=await n.model.findByPk(s);return await this.executeObjectMigration(l,n,i)?{status:r.StatusCodes.OK,responseData:{message:"OK"}}:{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Error during migration file creation!"}}},async executeObjectMigration(e,t,a,n=""){if(!e)throw new Error("Object not found!");if(!e.fields)throw new Error(`Object ${e.name} has incorrect fields!`);if(n){const e=s.default.join(process.cwd(),"src","modules","enums"),t=s.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({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 n=E(),r=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=s.default.join(p,a);await l.promises.writeFile(i,`${n}${o}${r}`)}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(s.default.join(p,i),`${n}${o}${r}`)}}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 n=E(),r=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=s.default.join(p,a);await l.promises.writeFile(i,`${n}${o}${r}`)}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(s.default.join(p,i),`${n}${o}${r}`)}}return g=[],!0},prepareFieldsDifs(e,t,a){const n=[];if(!e||!t)return[];for(const r of t){const t=e.find(e=>e.id===r.id);t?!0===r.isTablePart?a.push({action:"changeTable",oldTable:{...t},newTable:{...r}}):(!0===t.multiType&&"common"===t.multiTypeVariant&&!1===r.multiType?(n.push({action:"dropField",field:{...t}}),n.push({action:"addField",field:{...r}}),!0===r.index&&n.push({action:"addIndex",fieldName:r.dbName})):!1===t.multiType&&!0===r.multiType&&"common"===r.multiTypeVariant?(!0===t.index&&n.push({action:"removeIndex",fieldName:t.dbName}),n.push({action:"dropField",field:{...t}}),n.push({action:"addField",field:{...r}})):(r.dbName!==t.dbName&&n.push({action:"renameField",newName:r.dbName,oldName:t.dbName,field:t}),S(t,r)&&n.push({action:"changeField",oldField:{...t},newField:{...r}})),t.index!==r.index&&(!0===r.index?n.push({action:"addIndex",fieldName:r.dbName}):n.push({action:"removeIndex",fieldName:r.dbName}))):!0===r.isTablePart?a.push({action:"createTable",newTable:{...r}}):(n.push({action:"addField",field:{...r}}),!0===r.index&&n.push({action:"addIndex",fieldName:r.dbName}))}for(const r of e)t.find(e=>e.id===r.id)||(!0===r.isTablePart?a.push({action:"dropTable",oldTable:{...r}}):(!0===r.index&&n.push({action:"removeIndex",fieldName:r.dbName}),n.push({action:"dropField",field:{...r}})));return n},async createTable(e,t=(0,o.default)()){y.push(e);let a=`${t.format("YYYYMMDDHHmmss")}-create-table-${e.path}.js`,n=s.default.join(p,a);const r=[];let i=await b(e.fields,r);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)d+=`\n await queryInterface.addIndex('${e.path}', ['${t.dbName}'])`;d+=`${c}`,await l.promises.writeFile(n,d);for(const e of r){t.add(1,"seconds"),a=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${e.dbName}.js`,n=s.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)d+=`\n await queryInterface.addIndex('${e.dbName}', ['${t.dbName}'])`;d+=`${c}`,await l.promises.writeFile(n,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 n=[],r=this.prepareFieldsDifs(e.dbFields,e.fields,n);if(r.length>0){const n=[],s=[];for(const t of r)"addField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=O(e.name,t.field):(a+=await $(e.name,t.field.dbName,t.field),"object"!==t.field.type||t.field.multiType||n.push(t.field))),"dropField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=D(e.name,t.field):(a+=x(e.name,t.field.dbName),"object"!==t.field.type||t.field.multiType||s.push(t.field),"object"===t.field.type&&t.field.multiType&&(a+=x(e.name,`${t.field.dbName.slice(0,-2)}Type`)))),"renameField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=A(e.name,t):a+=C(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||s.push(t.oldField),"object"!==t.oldField.type||"object"!==t.newField.type||t.oldField.ref===t.newField.ref||t.oldField.multiType||t.newField.multiType||(s.push(t.oldField),n.push(t.newField)),"object"===t.oldField.type||"object"!==t.newField.type||t.newField.multiType||n.push(t.newField),"object"===t.oldField.type&&!t.oldField.multiType&&"object"===t.newField.type&&t.newField.multiType&&s.push(t.oldField),"object"===t.oldField.type&&t.oldField.multiType&&"object"===t.newField.type&&!t.newField.multiType&&(a+=x(e.name,`${t.oldField.dbName.slice(0,-2)}Type`),n.push(t.newField))),"addIndex"===t.action&&(a+=P(e.name,t.fieldName)),"removeIndex"===t.action&&(a+=F(e.name,t.fieldName));n.length>0&&y.push({path:e.name,fields:n}),s.length>0&&(g.push({path:e.name,fields:s}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")))}if(""!==a){let n=`${t.format("YYYYMMDDHHmmss")}-change-table-${e.isTablePart?"part-":""}${e.dbName}.js`,r=s.default.join(p,n),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(r,o)}for(const a of n){if("createTable"===a.action){t.add(1,"seconds");let n=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${a.newTable.dbName}.js`,r=s.default.join(p,n);const o=await b(a.newTable.fields,[]),i=E(),u=R();let c=`${i}\n await queryInterface.createTable('${a.newTable.dbName}', {${o}\n })${u}`;await l.promises.writeFile(r,c),y.push({path:e.name,fields:[a.newTable]})}if("changeTable"===a.action&&await this.updateTable({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 n=`${t.format("YYYYMMDDHHmmss")}-drop-table-part-${a.oldTable.dbName}.js`,r=s.default.join(p,n);const o=E(),i=R();let u=`${o}\n await queryInterface.dropTable('${a.oldTable.dbName}')${i}`;await l.promises.writeFile(r,u)}}return!0}}},6918:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(9896)),s=n(a(6928)),o=n(a(4716));function i(e,t){const a=s.default.join(t,`${e}.log`);return r.default.createWriteStream(a,{flags:"a"})}t.default=function(e){const t=e.interval||"1d",a=s.default.resolve(e.path||"src/core/services");r.default.existsSync(a)||r.default.mkdirSync(a,{recursive:!0});let n=(0,o.default)(new Date).format("YYYYMMDD"),l=i(n,a);function u(){const e=(0,o.default)(new Date).format("YYYYMMDD");e!==n&&(l.end(),l=i(e,a),n=e)}const c=(0,o.default)().endOf("day").diff((0,o.default)());return setTimeout(()=>{u(),setInterval(u,function(e){const t={s:1e3,m:6e4,h:36e5,d:864e5},a=e.match(/^(\d+)([a-z]+)$/);if(!a||!t[a[2]])throw new Error("Invalid interval format");return parseInt(a[1],10)*t[a[2]]}(t))},c),{write:e=>{l.write(e)}}}},6928:e=>{e.exports=require("path")},6961:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(8356)),o=r.default.Router(),i="report";o.get(`/${i}/settings/:id`,s.default.getSettings),o.post(`/${i}/result`,s.default.getResult),t.default=o},6980:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(1572)),s=a(7138),o=a(3903),i=a(9031),l=n(a(5788)),u=n(a(6836)),c=n(a(2282)),d=async(e,t)=>{const a=await l.default.models.User.findOne({where:{email:e}}),n=a?.language,r={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 n&&n in r?r[n][t]:r.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,n){return{from:e.name,to:t,bcc:e.name,subject:a,html:n}}t.default={async emailConfirmationInstructions(e,t,a,n){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 o=m(s),i=r.default.createTransport(o.credentials);i.verify(async function(r,o){if(r)c.default.error("Error in emailConfirmationInstructions ",{meta:r});else{const r=await d(e,"registration"),o=`${process.env.ALLOW_ORIGIN}/email-confirmation`,l=r.hello+t+r.begining+'<a href="'+o+"/"+n+'">Confirm Your Email Address</a>'+r.middle+a+r.end,u=p(s,e,r.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:s.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:s.StatusCodes.OK,result:t}}).catch(e=>(c.default.error("Error in register Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:"User create error."}}))}catch(e){return c.default.error("Error in register Service",{meta:e}),{httpStatus:s.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:s.StatusCodes.OK,result:!0}:(c.default.error("Error in confirmEmailAddress Service",{meta:"User not save."}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):(c.default.error("Error in confirmEmailAddress Service",{meta:"Token not find."}),{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.NOT_FOUND)}})).catch(e=>(c.default.error("Error in confirmEmailAddress Service",{meta:e}),{httpStatus:s.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:s.StatusCodes.OK,result:!0}):{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:s.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:s.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:s.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:s.StatusCodes.NOT_FOUND,result:{message:"Email not found"}};let n=u.default.generateRandomToken();const o=Number("3600000")||36e5,i={passwordResetToken:n,passwordResetExpires:Date.now()+o},h=await a.update({...i});return h?async function(e,t,a,n,o){const i=await f();if(!i)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"}),{httpStatus:s.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:s.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=r.default.createTransport(l.credentials);try{await h.verify()}catch(e){return c.default.error("Error in emailConfirmationInstructions ",{meta:e}),{httpStatus:s.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+"/"+n+'">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:s.StatusCodes.OK,result:{message:"OK"}})).catch(e=>(c.default.error("Error while sending service email",{meta:e}),{httpStatus:s.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:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}})}catch(e){return c.default.error("Error in forgotPassword Service",{meta:e}),{httpStatus:s.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:s.StatusCodes.OK,result:!0}:{httpStatus:s.StatusCodes.BAD_REQUEST,result:!1}}catch(e){return c.default.error("Error in isPasswordResetTokenValid Service",{meta:e}),{httpStatus:s.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),n=r.default.createTransport(a.credentials);n.verify(async function(a,r){if(a)c.default.error("Error in emailConfirmationInstructions ",{meta:a});else{const a=await d(e,"passwordResetConfirmation"),r=p(t,e,a.subject,a.main);n.sendMail(r,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:s.StatusCodes.OK,result:!0}):{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.NOT_FOUND)}}}catch(e){return c.default.error("Error in resetPassword Service",{meta:e}),{httpStatus:s.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 n=m(a),s=r.default.createTransport(n.credentials);s.verify(async function(n,r){if(n)c.default.error("Error in emailConfirmationInstructions ",{meta:n});else{const n=await d(e,"statusChange"),r=p(a,e,n.subject,n.start+t+n.end);s.sendMail(r,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")},7135:e=>{e.exports=require("node-sql-parser")},7138:e=>{e.exports=require("http-status-codes")},7173:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(4716)),i=n(a(9896)),l=n(a(7825)),u=n(a(2555)),c=n(a(3275)),d=n(a(2282));let f={};function m(e,t,a){if("common"===t.multiTypeVariant){const n=[];if(e[`_${t.dbName}Type`]={type:r.DataTypes.STRING,allowNull:!0!==t.notNull},t.type.includes("string")){const a=`_${t.dbName}ST`;e[a]={type:r.DataTypes.STRING(t.typeOptions.length)},n.push(a)}if(t.type.includes("text")){const a=`_${t.dbName}TX`;e[a]={type:r.DataTypes.TEXT},n.push(a)}if(t.type.includes("integer")){const a=`_${t.dbName}IN`;e[a]={type:r.DataTypes.INTEGER},n.push(a)}if(t.type.includes("decimal")){const a=`_${t.dbName}DC`;e[a]={type:r.DataTypes.DECIMAL(t.typeOptions?.precision,t.typeOptions?.scale)},n.push(a)}if(t.type.includes("boolean")){const a=`_${t.dbName}BL`;e[a]={type:r.DataTypes.BOOLEAN},n.push(a)}if(t.type.includes("date")){const a=`_${t.dbName}DT`;e[a]={type:r.DataTypes.DATE},n.push(a)}if(c.default.typeIncludesRef(t.type)){const a=`_${t.dbName}Ref`;e[a]={type:r.DataTypes.STRING(100)},n.push(a)}a.push(...n),e[`${t.dbName}`]={type:r.DataTypes.VIRTUAL(r.DataTypes.ABSTRACT,[`_${t.dbName}Type`,...n]),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:r.DataTypes.UUID,allowNull:!0!==t.notNull,_index:!0===t.index},e[`${t.name}Type`]={type:r.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:r.DataTypes.STRING},a=e.type.toUpperCase();return"STRING"===a?e.typeOptions?.length&&0!==e.typeOptions?.length?t.type=r.DataTypes[a](e.typeOptions?.length):t.type=r.DataTypes[a]():"JSON"===a?(t.type=r.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=r.DataTypes.ENUM,t.values=e.ref?f[e.ref]:["empty"],t._ref=e.ref):t.type=r.DataTypes[a](),"UUID"===a&&"id"===e.name&&(t.defaultValue=r.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,n,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 r.Model{}const p={title:e.title,name:e.name,fields:e.fields,model:f.init(i,{sequelize:s.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 n of e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const e=`__pending_${n.dbName}`;if(!Object.prototype.hasOwnProperty.call(t.dataValues,e))continue;const r=t.getDataValue(e),s=t.getDataValue(`_${n.dbName}Type`);for(const e in a){const r=`_${n.dbName}${a[e]}`;t.setDataValue(r,null)}if(c.default.typeIncludesRef(n.type)&&t.setDataValue(`_${n.dbName}Ref`,null),s){const e=c.default.getFieldNameByType(n.dbName,s);e&&(c.default.isRefType(s)&&"object"==typeof r?t.setDataValue(e,r.id||null):t.setDataValue(e,r))}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],n=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),r=[];for(const e of a)for(const t of n){const a=e.getDataValue(`_${t.dbName}Type`),n=e.getDataValue(`_${t.dbName}Ref`);if(!a||!n)continue;const s=a.match(/^(catalog|document)\.(.+)$/);if(!s)continue;const i=s[1],l=s[2],u=o[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(n,{attributes:f}).then(a=>{if(!a)return;const n=a.get?a.get():a;if("catalog"===i){const a={id:n.id,name:n.name??null,presentation:n.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}else{const a={id:n.id,numberStr:n.numberStr??null,date:n.date??null,presentation:n.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});r.push(m)}r.length>0&&await Promise.all(r)})}for(const w of e.fields)w.leading&&n.push({field:w,belongTable:p.model});t.tables[e.name]=p}function g(e,t,a){let n={},o=[],i=[];n.id={type:r.DataTypes.UUID,primaryKey:!0,allowNull:!1},n.period={type:r.DataTypes.DATE,allowNull:!1,_index:!0};for(const e of t.fields)"dimension"!==e.role&&"resource"!==e.role||("object"!==e.type?n[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 r.Model{}const c={name:`${t.name}Acc`,dimensions:o,resources:i,model:u.init(n,{sequelize:s.default,modelName:`${e.model}Acc`,tableName:`${e.path}_acc`})};t.accTable=c}t.default=async()=>{f=await u.default.initEnums();const e=await s.default.query('SELECT * FROM app_objects WHERE app_objects."markedToDelete" = false AND app_objects."dbTableName" IS NOT NULL',{type:r.QueryTypes.SELECT}),t={},a=[],n=[];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 r.DataTypes.VIRTUAL(r.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 n=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const r=u.find(e=>e.dbName===t);if(r)if("date"===r.type){const e=r.format&&""!==r.format?r.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];n=n.replace(e,a)}return n}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 r.DataTypes.VIRTUAL(r.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 n=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const r=u.find(e=>e.dbName===t);if(r)if("date"===r.type){const e=r.format&&""!==r.format?r.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];n=n.replace(e,a)}return n}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 r.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:s.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&&n.push({field:e,belongTable:_.model});for(const e of u.filter(e=>e.isTablePart))y(e,_,a,n,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 n=e.getDataValue(a),r=e.getDataValue(`_${t.dbName}Type`),s=c.default.typesSufixes();for(const a in s){const n=`_${t.dbName}${s[a]}`;e.setDataValue(n,null)}if(c.default.typeIncludesRef(t.type)&&e.setDataValue(`_${t.dbName}Ref`,null),r){const a=c.default.getFieldNameByType(t.dbName,r);a&&(c.default.isRefType(r)&&"object"==typeof n?e.setDataValue(a,n.id||null):e.setDataValue(a,n))}delete e.dataValues[a]}}),_.model.addHook("afterFind","refObjectsPreload",async e=>{if(!e)return;const a=Array.isArray(e)?e:[e],n=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),r=[];for(const e of a)for(const a of n){const n=e.getDataValue(`_${a.dbName}Type`),s=e.getDataValue(`_${a.dbName}Ref`);if(!n||!s)continue;const o=n.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(s,{attributes:f}).then(t=>{if(!t)return;const n=t.get?t.get():t;if("catalog"===i){const t={id:n.id,name:n.name??null,presentation:n.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}else{const t={id:n.id,numberStr:n.numberStr??null,date:n.date??null,presentation:n.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});r.push(m)}r.length>0&&await Promise.all(r)})}t[_.name]=_}const l=[];for(const n of a){const a=t[n.objectName];if(a)if(n.field.multiType){if(!Array.isArray(n.field.ref))continue;const t=[];let r=!1;for(const s of n.field.ref){const n=e.find(e=>e.name===s);if(!n){r=!0,console.info("No belongs to object: ",`${a.name} -> ${s}`);break}t.push(n)}if(!r){const e=[];let r=!1;for(const o of t){const i=s.default.models[o.model];if(!i){r=!0,l.push({refField:n,object:a,belongToObject:t});break}e.push({object:o,model:i})}if(!r){const t=n.tableName?a.tables[n.tableName].model:n.accModel?a.accTable?.model:a.model;for(const r of e){const e=p(n);e.constraints=!1,e.as=`${n.field.name}${r.model.name}`,t.belongsTo(r.model,e);let s=n.accModel?`${a.name}Acc`:a.name;r.model.associations[s]&&(s=`${n.field.name}${s.charAt(0).toUpperCase()+s.slice(1)} `);const o={foreignKey:n.field.dbName,_noTablePart:!0,_registerRecords:"recorder"===n.field.name||void 0,constraints:!1,as:s,scope:{[`${n.field.name}Type`]:r.object.name}};r.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[`${n.field.name}Type`]===e.object.name);t&&void 0!==a[`${n.field.name}${t.model.name}`]?(a[n.field.name]=a[`${n.field.name}${t.model.name}`],a.dataValues[n.field.name]=a[`${n.field.name}${t.model.name}`]):(a[n.field.name]=null,a.dataValues[n.field.name]=null);for(const t of e)delete a[`${n.field.name}${t.model.name}`],delete a.dataValues[`${n.field.name}${t.model.name}`]}})}}}else{const t=e.find(e=>e.name===n.field.ref);if(t){const e=s.default.models[t.model];if(e){const t=p(n);if(n.tableName)a.tables[n.tableName].model.belongsTo(e,t);else if(n.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:n,object:a,belongToObject:t})}else console.info("No belongs to object: ",`${a.name} -> ${n.field.name} (${n.field.ref})`)}else console.info("No object: ",n.objectName)}for(const a of n){const n=t[a.field.ref];if(n)n.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 n;const r=`${a.type}s/${a.name}/server.module.js`,s=`${process.cwd()}/src/modules/${r}`;i.default.existsSync(s)&&(n=require(s)),n?.initPresentation&&a.model.addHook("afterFind","addPresentationGetter",async e=>{Array.isArray(e)||(e=e?[e]:[]);for(const t of e){const e=await n.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=a(9876),o=n(a(1688)),i=r.default.Router();i.get("/access_log",o.default.canRead({key:"access_logs"}),s.accessLogsController.getFilesInfo),t.default=i},7501:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(2282)),i=n(a(2103)),l=a(9239);t.default={async initCommonCommands(e){const t=await async function(){try{return(await s.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:r.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 s.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:r.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,n=/^\s*(?:async\s+)?function\s+commandProcessing\s*\([^)]*\)\s*{[\s\S]*?}/gm;for(const r of t){if(r.module){r.module=r.module.replace(a,""),n.lastIndex=0;const t=n.test(r.module);let s="";s=t?`function main() {${r.module.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(s);r.module=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),r.module=null}}if(r.moduleV3){r.moduleV3=r.moduleV3.replace(a,"function "),n.lastIndex=0;const t=n.test(r.moduleV3);let s="";s=t?`function main() {${r.moduleV3.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(s);r.moduleV3=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),r.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(6304)),o=r.default.Router(),i="app";o.get(`/${i}/info`,s.default.getAppInfo),o.get(`/${i}/objects`,s.default.getObjects),o.get(`/${i}/object_meta`,s.default.getObjectMetadata),o.get(`/${i}/object_fields`,s.default.getObjectFields),o.get(`/${i}/subordination`,s.default.getSubordination),o.get(`/${i}/registers_meta`,s.default.getRegistersMetadata),o.get(`/${i}/setting`,s.default.getSetting),o.get(`/${i}/enums`,s.default.getEnums),o.get(`/${i}/app-objects`,s.default.getAppObjects),o.get(`/${i}/common-modules`,s.default.getCommonModules),o.get(`/${i}/event-subscriptions`,s.default.getEventSubscriptions),o.get(`/${i}/view-settings/:id`,s.default.getViewSettings),o.get(`/${i}/store`,s.default.getClientStore),o.get(`/${i}/common-commands`,s.default.getCommonCommands),o.get(`/${i}/has-role`,s.default.hasRole),o.post(`/${i}/setting`,s.default.setSetting),o.post(`/${i}/raw-query`,s.default.rawQuery),o.post(`/${i}/exec-func`,s.default.execFunc),o.post(`/${i}/exec-common-module`,s.default.execCommonModuleFunc),t.default=o},7636:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(8608)),s=a(696),o=n(a(4716)),i=n(a(5788)),l=n(a(2282)),u=n(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,n,r,s){for(const o of t){let t=!0===n?1:e.fields.length;if(r.getRow(a).outlineLevel=s,o.isGroup){const i=r.getCell(a,1);if(y(e,i,o.groups),o.children.length>0?d(i):f(i),r.mergeCells(a,1,a,t),t+=1,e.colGroups.length>0){for(const e of o.totals){const n=r.getCell(a,t);n.value=e.value||0,o.children.length>0?d(n):f(n),n.alignment={horizontal:e.textAlign?e.textAlign:"left"},n.numFmt=p(e.format),t+=1}if(e.showXTotal)for(const n of e.calcs){const e=o.totals.reduce((e,t)=>t.id===n.id?e+t.value:e,0),s=r.getCell(a,t);s.value=e||0,o.children.length>0?d(s):f(s),s.alignment={horizontal:n.textAlign?n.textAlign:"left"},s.numFmt=p(n.format),t+=1}}else for(const e of o.totals){const n=r.getCell(a,t);n.value=e.value||0,o.children.length>0?d(n):f(n),n.alignment={horizontal:e.textAlign?e.textAlign:"left"},n.numFmt=p(e.format),t+=1}a+=1,o.children.length>0&&(a=m(e,o.children,a,n,r,s+1))}else{for(let t=0;t<e.fields.length;t++){const n=r.getCell(a,t+1);h(n,e.fields[t],o,e),f(n),n.alignment={horizontal:e.fields[t].textAlign}}let t=e.fields.length+1;if(e.colGroups.length>0){const n=o[e.colGroups[0].name],s={};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===n?.id||i===n)&&(u=Number(o[e.calcs[l].name]||0));const c=r.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(s,e.calcs[l].name)?s[e.calcs[l].name]+=Number(u):s[e.calcs[l].name]=Number(u),t+=1}if(e.showXTotal)for(let n=0;n<e.calcs.length;n++){let o=s[e.calcs[n].name];const i=r.getCell(a,t+n);i.value=o||0,f(i),i.alignment={horizontal:e.calcs[n].textAlign?e.calcs[n].textAlign:"left"},i.numFmt=p(e.calcs[n].format)}}else if(e.rowGroups.length>0)for(let n=0;n<e.calcs.length;n++){let s=Number(o[e.calcs[n].name]||0);const i=r.getCell(a,t+n);i.value=s||0,f(i),i.alignment={horizontal:e.calcs[n].textAlign?e.calcs[n].textAlign:"left"},i.numFmt=p(e.calcs[n].format)}a+=1}}return a}function p(e){let t=null;if(e){const a=JSON.parse(e||'{"NFD": 3}'),n=0;a.NFD&&(t=n.toFixed(a.NFD))}return t}function h(e,t,a,n){let r=a[t.name]||null;switch(t.valueType){case"number":{let a=parseFloat(r);isNaN(a)&&(a=0),e.value=a||0,t.format&&(e.numFmt=p(t.format));break}case"date":default:e.value=r||"";break;case"object":e.value=r.name||"";break;case"boolean":e.value=Boolean(r||!1),e.numFmt="BOOLEAN";break;case"enum":if(r&&t.ref){const e=n.enums[t.ref].find(e=>e.value===r);r=e?e.title:r}e.value=r||""}}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 n="";for(let t=0;t<a.length;t++)"object"===a[t].valueType?n+=a[t].value?.name||e.lang.undefined:"boolean"===a[t].valueType?n+=a[t].value?e.lang.boolean.true:e.lang.boolean.false:n+=a[t].value,t<a.length-1&&(n=`${n}, `);t.value=n||""}}t.default={async generateExcel(e,t=null){const a={...e.body};if(a.rowGroups.length>1){const e=[];let t=[];for(let n=0;n<a.rowGroups.length;n++)!0!==a.rowGroups[n].withParent&&0!==n&&(e.push(t.length>1?t:t[0]),t=[]),t.push(a.rowGroups[n]),n===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 n of a)t[n.name]=n.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 n=new r.default.Workbook,o=n.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 n=o.getCell(f,_);n.value=t.value||0,d(n),n.numFmt=p(t.format),n.alignment={horizontal:t.textAlign?t.textAlign:"left"}}),a.colGroups.length>0&&a.showXTotal&&a.calcs.map((t,n)=>{const r=a.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);_=e+a.totals.length+n+1;const s=o.getCell(f,_);s.value=r||0,d(s),s.numFmt=p(t.format),s.alignment={horizontal:t.textAlign?t.textAlign:"left"}})}else{let e=!0,t=1;for(const n of a.fields){const r=a.totals.find(e=>e.id===n.id);if(r){if(!0===e){const n=o.getCell(f,1);n.value=a.lang.total,d(n),o.mergeCells(f,1,f,t-1),e=!1}const s=o.getCell(f,t);s.value=Number(r.value||0),d(s),s.numFmt=p(r.format),s.alignment={horizontal:n.textAlign?n.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 r.default.ValueType.Date:{const a=function(e){const t=e.getTimezoneOffset()/1440;return e.getTime()/864e5+(25569-t)}(e.value);t=(0,s.format)(e.numFmt,a).length;break}case r.default.ValueType.Number:default:t=(0,s.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"),n.xlsx.write(t).then(function(){t.end()})),n}}},7825:e=>{e.exports=require("lodash")},7927:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),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 r=n(a(6928)),s=n(a(7252)),o=n(a(7174)),i=n(a(6898)),l=n(a(2525)),u=n(a(8577)),c=a(3903),d=n(a(8278)),f=n(a(5977)),m=n(a(3857)),p=n(a(1763)),h=n(a(6456)),y=n(a(5560)),g=n(a(3407)),b=n(a(3464)),w=n(a(6797)),_=n(a(2362));t.eventService=_.default;const S=n(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,s.default)();t.app=E,(0,h.default)(E),E.use(s.default.json({limit:"100mb"})),E.use(s.default.urlencoded({extended:!1})),E.use((0,i.default)()),E.use(s.default.static(r.default.join("src","../public"))),E.use((0,l.default)()),E.use((0,o.default)()),a(9);const R={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)(R));const T=(0,p.default)({windowMs:6e4,max:1e5,statusCode:429});E.use(T),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());const N={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"],credentials:!0};E.use((0,u.default)(N)),_.default.init(E),E.set("views",r.default.join("src","views")),E.set("view engine","pug"),E.use((e,t,a,n)=>{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(a(1688));t.accessRights=$.default;const O=n(a(2282));t.logger=O.default;const D=n(a(2555));t.commonService=D.default;const C=n(a(3958));t.controllerService=C.default;const A=n(a(4621));t.appService=A.default;const j=n(a(6224));t.defineObjects=j.default;const I=n(a(6836));t.cryptoGen=I.default;const x=n(a(2671));t.documentService=x.default;const P=n(a(9880));t.seederService=P.default;const F=n(a(6299));t.registerService=F.default;const M=n(a(6910));t.migrationsService=M.default},8278:e=>{e.exports=require("passport")},8287:(e,t,a)=>{var n=a(6661),r=a(8876),s="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),n=i(a),r=n.write(e,t);return r!==a&&(n=n.slice(0,r)),n}(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 n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,a);var r=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(r)return r;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),n=0;n<t;n+=1)a[n]=255&e[n];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 n;return n=void 0===t&&void 0===a?new Uint8Array(e):void 0===a?new Uint8Array(e,t):new Uint8Array(e,t,a),Object.setPrototypeOf(n,l.prototype),n}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,n=arguments.length>2&&!0===arguments[2];if(!n&&0===a)return 0;for(var r=!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(r)return n?-1:k(e).length;t=(""+t).toLowerCase(),r=!0}}function y(e,t,a){var n=!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 N(this,t,a);case"ascii":return O(this,t,a);case"latin1":case"binary":return D(this,t,a);case"base64":return T(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,a);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,a){var n=e[t];e[t]=e[a],e[a]=n}function b(e,t,a,n,r){if(0===e.length)return-1;if("string"==typeof a?(n=a,a=0):a>2147483647?a=2147483647:a<-2147483648&&(a=-2147483648),B(a=+a)&&(a=r?0:e.length-1),a<0&&(a=e.length+a),a>=e.length){if(r)return-1;a=e.length-1}else if(a<0){if(!r)return-1;a=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:w(e,t,a,n,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):w(e,[t],a,n,r);throw new TypeError("val must be string, number or Buffer")}function w(e,t,a,n,r){var s,o=1,i=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){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(r){var c=-1;for(s=a;s<i;s++)if(u(e,s)===u(t,-1===c?0:s-c)){if(-1===c&&(c=s),s-c+1===l)return c*o}else-1!==c&&(s-=s-c),c=-1}else for(a+l>i&&(a=i-l),s=a;s>=0;s--){for(var d=!0,f=0;f<l;f++)if(u(e,s+f)!==u(t,f)){d=!1;break}if(d)return s}return-1}function _(e,t,a,n){a=Number(a)||0;var r=e.length-a;n?(n=Number(n))>r&&(n=r):n=r;var s=t.length;n>s/2&&(n=s/2);for(var o=0;o<n;++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,n){return q(k(t,e.length-a),e,a,n)}function v(e,t,a,n){return q(function(e){for(var t=[],a=0;a<e.length;++a)t.push(255&e.charCodeAt(a));return t}(t),e,a,n)}function E(e,t,a,n){return q(U(t),e,a,n)}function R(e,t,a,n){return q(function(e,t){for(var a,n,r,s=[],o=0;o<e.length&&!((t-=2)<0);++o)n=(a=e.charCodeAt(o))>>8,r=a%256,s.push(r),s.push(n);return s}(t,e.length-a),e,a,n)}function T(e,t,a){return 0===t&&a===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,a))}function N(e,t,a){a=Math.min(e.length,a);for(var n=[],r=t;r<a;){var s,o,i,l,u=e[r],c=null,d=u>239?4:u>223?3:u>191?2:1;if(r+d<=a)switch(d){case 1:u<128&&(c=u);break;case 2:128==(192&(s=e[r+1]))&&(l=(31&u)<<6|63&s)>127&&(c=l);break;case 3:s=e[r+1],o=e[r+2],128==(192&s)&&128==(192&o)&&(l=(15&u)<<12|(63&s)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:s=e[r+1],o=e[r+2],i=e[r+3],128==(192&s)&&128==(192&o)&&128==(192&i)&&(l=(15&u)<<18|(63&s)<<12|(63&o)<<6|63&i)>65535&&l<1114112&&(c=l)}null===c?(c=65533,d=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),r+=d}return function(e){var t=e.length;if(t<=$)return String.fromCharCode.apply(String,e);for(var a="",n=0;n<t;)a+=String.fromCharCode.apply(String,e.slice(n,n+=$));return a}(n)}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,n=t.length,r=0,s=Math.min(a,n);r<s;++r)if(e[r]!==t[r]){a=e[r],n=t[r];break}return a<n?-1:n<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 n=l.allocUnsafe(t),r=0;for(a=0;a<e.length;++a){var s=e[a];if(V(s,Uint8Array))r+s.length>n.length?l.from(s).copy(n,r):Uint8Array.prototype.set.call(n,s,r);else{if(!l.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,r)}r+=s.length}return n},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?N(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+">"},s&&(l.prototype[s]=l.prototype.inspect),l.prototype.compare=function(e,t,a,n,r){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===n&&(n=0),void 0===r&&(r=this.length),t<0||a>e.length||n<0||r>this.length)throw new RangeError("out of range index");if(n>=r&&t>=a)return 0;if(n>=r)return-1;if(t>=a)return 1;if(this===e)return 0;for(var s=(r>>>=0)-(n>>>=0),o=(a>>>=0)-(t>>>=0),i=Math.min(s,o),u=this.slice(n,r),c=e.slice(t,a),d=0;d<i;++d)if(u[d]!==c[d]){s=u[d],o=c[d];break}return s<o?-1:o<s?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,n){if(void 0===t)n="utf8",a=this.length,t=0;else if(void 0===a&&"string"==typeof t)n=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===n&&(n="utf8")):(n=a,a=void 0)}var r=this.length-t;if((void 0===a||a>r)&&(a=r),e.length>0&&(a<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){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(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;function O(e,t,a){var n="";a=Math.min(e.length,a);for(var r=t;r<a;++r)n+=String.fromCharCode(127&e[r]);return n}function D(e,t,a){var n="";a=Math.min(e.length,a);for(var r=t;r<a;++r)n+=String.fromCharCode(e[r]);return n}function C(e,t,a){var n=e.length;(!t||t<0)&&(t=0),(!a||a<0||a>n)&&(a=n);for(var r="",s=t;s<a;++s)r+=L[e[s]];return r}function A(e,t,a){for(var n=e.slice(t,a),r="",s=0;s<n.length-1;s+=2)r+=String.fromCharCode(n[s]+256*n[s+1]);return r}function j(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 I(e,t,a,n,r,s){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||t<s)throw new RangeError('"value" argument is out of bounds');if(a+n>e.length)throw new RangeError("Index out of range")}function x(e,t,a,n,r,s){if(a+n>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function P(e,t,a,n,s){return t=+t,a>>>=0,s||x(e,0,a,4),r.write(e,t,a,n,23,4),a+4}function F(e,t,a,n,s){return t=+t,a>>>=0,s||x(e,0,a,8),r.write(e,t,a,n,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 n=this.subarray(e,t);return Object.setPrototypeOf(n,l.prototype),n},l.prototype.readUintLE=l.prototype.readUIntLE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e],r=1,s=0;++s<t&&(r*=256);)n+=this[e+s]*r;return n},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e+--t],r=1;t>0&&(r*=256);)n+=this[e+--t]*r;return n},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,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e],r=1,s=0;++s<t&&(r*=256);)n+=this[e+s]*r;return n>=(r*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=t,r=1,s=this[e+--n];n>0&&(r*=256);)s+=this[e+--n]*r;return s>=(r*=128)&&(s-=Math.pow(2,8*t)),s},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 a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt16BE=function(e,t){e>>>=0,t||j(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||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),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,a,n){e=+e,t>>>=0,a>>>=0,n||I(this,e,t,a,Math.pow(2,8*a)-1,0);var r=1,s=0;for(this[t]=255&e;++s<a&&(r*=256);)this[t+s]=e/r&255;return t+a},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,a,n){e=+e,t>>>=0,a>>>=0,n||I(this,e,t,a,Math.pow(2,8*a)-1,0);var r=a-1,s=1;for(this[t+r]=255&e;--r>=0&&(s*=256);)this[t+r]=e/s&255;return t+a},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||I(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||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,a){return e=+e,t>>>=0,a||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,a){return e=+e,t>>>=0,a||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,a){return e=+e,t>>>=0,a||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,a,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*a-1);I(this,e,t,a,r-1,-r)}var s=0,o=1,i=0;for(this[t]=255&e;++s<a&&(o*=256);)e<0&&0===i&&0!==this[t+s-1]&&(i=1),this[t+s]=(e/o|0)-i&255;return t+a},l.prototype.writeIntBE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*a-1);I(this,e,t,a,r-1,-r)}var s=a-1,o=1,i=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===i&&0!==this[t+s+1]&&(i=1),this[t+s]=(e/o|0)-i&255;return t+a},l.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||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,a){return e=+e,t>>>=0,a||I(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||I(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||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,a){return e=+e,t>>>=0,a||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,a){return P(this,e,t,!0,a)},l.prototype.writeFloatBE=function(e,t,a){return P(this,e,t,!1,a)},l.prototype.writeDoubleLE=function(e,t,a){return F(this,e,t,!0,a)},l.prototype.writeDoubleBE=function(e,t,a){return F(this,e,t,!1,a)},l.prototype.copy=function(e,t,a,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<a&&(n=a),n===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(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-a&&(n=e.length-t+a);var r=n-a;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,a,n):Uint8Array.prototype.set.call(e,this.subarray(a,n),t),r},l.prototype.fill=function(e,t,a,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,a=this.length):"string"==typeof a&&(n=a,a=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!l.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var r=e.charCodeAt(0);("utf8"===n&&r<128||"latin1"===n)&&(e=r)}}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 s;if(t>>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(s=t;s<a;++s)this[s]=e;else{var o=l.isBuffer(e)?e:l.from(e,n),i=o.length;if(0===i)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<a-t;++s)this[s+t]=o[s%i]}return this};var M=/[^+/0-9A-Za-z-_]/g;function k(e,t){var a;t=t||1/0;for(var n=e.length,r=null,s=[],o=0;o<n;++o){if((a=e.charCodeAt(o))>55295&&a<57344){if(!r){if(a>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&s.push(239,191,189);continue}r=a;continue}if(a<56320){(t-=3)>-1&&s.push(239,191,189),r=a;continue}a=65536+(r-55296<<10|a-56320)}else r&&(t-=3)>-1&&s.push(239,191,189);if(r=null,a<128){if((t-=1)<0)break;s.push(a)}else if(a<2048){if((t-=2)<0)break;s.push(a>>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;s.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;s.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return s}function U(e){return n.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,n){for(var r=0;r<n&&!(r+a>=t.length||r>=e.length);++r)t[r+a]=e[r];return r}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 n=16*a,r=0;r<16;++r)t[n+r]=e[a]+e[r];return t}()},8356:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(4716)),s=a(9031),o=a(7138),i=n(a(2282)),l=n(a(5788)),u=n(a(9896)),c=n(a(7636)),d=n(a(6357)),f=n(a(2555)),m=n(a(3830)),p=a(9031);function h(e,t,a){let n=0;for(const r of e)r.lvl=t,r.hasSub?r.childrenCount=h(r.children,t+1,a):r.childrenCount=!0===a.hideDetails?0:r.children.length,n+=r.childrenCount+1;return n}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 n of e)if(!0===n.hasSub)a=g(n.children,t,a);else for(const e of n.children)e[t.name]=a,a++;return a}function b(e,t,a,n){const r=e.rowGroups[t],s=R(a,r);let o=0;for(let i of s){const s=T(a,r,i),l={isGroup:!0,expanded:!0,hasSub:e.rowGroups.length-1>t,lvl:t,groups:[{value:i,...r}],totals:[],children:[],childrenCount:0};e.rowGroups.length-1===t?(l.children=s,l.childrenCount=!0===e.hideDetails?0:s.length):l.childrenCount=b(e,t+1,s,l.children),n.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 n of e){const e=[...n.groups];for(const r of n.children){const n=e.concat(r.groups);t.push({...r,groups:n,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 n=a.totals?.filter(e=>0!==e.value);0===n?.length&&(0===a.children?.length&&a.childrenCount>0||0===a.childrenCount)&&e.splice(t,1)}}function S(e,t,a=null){let n=0;if(!0===e.hasSub){const r=[];e.children.map(e=>{r.push(S(e,t,a))}),n=E(r,t.expression)}else n=v(e.children,t,a);return a?e.totals.push({...t,value:n,group:a.value}):e.totals.push({...t,value:n}),n}function v(e,t,a=null){let n,r=0,s=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=>{s+=1*e[t.name]}),s=f.default.normalizeFloat(s,6);break;case"average":o.map(e=>{r+=1*e[t.name]}),s+=r/o.length,s=f.default.normalizeFloat(s,6);break;case"max":if(o.length>0){n=1*o[0][t.name];for(let e=1;e<o?.length;e++)n<=1*o[e][t.name]&&(n=1*o[e][t.name]);s<=n&&(s=n)}break;case"min":if(o.length>0){n=o[0][t.name];for(let e=1;e<o?.length;e++)n>=o[e][t.name]&&(n=o[e][t.name]);s=n}}return s}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 n=new Set;for(const r of e)n.has(r[t.name].id)||(n.add(r[t.name].id),a.push(r[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 N(e){for(const t of e)t.hasSub?N(t.children):t.children=[]}function $(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 n=e.params.id;if(!n||"string"!=typeof n||36!==n.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(n,{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 n={...e.body};if(!n.id||"string"!=typeof n.id||36!==n.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(n.id).then(async a=>{if(a){let o;n.query=a.dataQuery,n.externalData=a.externalData,n.externalUsername=a.externalUsername,n.externalPassword=a.externalPassword,n.externalServer=a.externalServer,n.externalPort=a.externalPort,n.externalDatabase=a.externalDatabase,n.externalDialect=a.externalDialect,n.externalDateKind=a.externalDateKind,n.externalDateFormat=a.externalDateFormat,n.fields=function(e){let t=[];for(const a of e)a.isGroup?t=t.concat(a.fields):t.push(a);return t}(n.fields),function(e){if(e.sqlFilters=[],e.sqlReplacements={},"without"!==e.period.type){let t,a,n;"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),n=new Date(e.period.date),e.externalData&&"default"===e.externalDateKind?e.sqlReplacements.date=new Date(n).toLocaleDateString():e.sqlReplacements.date=new Date(n).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 n of a){let a=n.path;if("filled"===n.operator)t=`${a} IS NOT NULL`;else if("notFilled"===n.operator)t=`${a} IS NULL`;else if("object"===n.valueType)if("inList"===n.operator||"notInList"===n.operator){let e=[];for(let t of n.value)e.push(`'${t.id}'`);t=`${a} ${"inList"===n.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=n.value?`${a} ${n.operator} '${n.value.id}'`:`${a} IS NULL`;else if("enum"===n.valueType)if("inList"===n.operator||"notInList"===n.operator){let e=[];for(let t of n.value)e.push(`'${t}'`);t=`${a} ${"inList"===n.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=`${a} ${n.operator} '${n.value}'`;else if("text"===n.valueType)t="iLike"===n.operator?`${a} LIKE '%${n.value}%'`:"notILike"===n.operator?`${a} NOT LIKE '%${n.value}%'`:a+n.operator+"'"+n.value+"'";else if("date"===n.valueType)if("between"===n.operator){if(n.value?.[0]&&n.value?.[1]){let e="",s="";if("dateTime"===n.dateType)e=(0,r.default)(n.value[0],"DD.MM.YYYY HH:mm:ss").toISOString(),s=(0,r.default)(n.value[1],"DD.MM.YYYY HH:mm:ss").toISOString();else{const t=(0,r.default)(n.value[0],"DD.MM.YYYY").toDate(),a=(0,r.default)(n.value[1],"DD.MM.YYYY").toDate();e=(0,r.default)(t.setHours(0,0,0,0)).toISOString(),s=(0,r.default)(a.setHours(23,59,59,999)).toISOString()}t=`${a} ${n.operator} '${e}' and '${s}'`}}else t="dateTime"===n.dateType?`${a} ${n.operator} '${(0,r.default)(n.value,"DD.MM.YYYY HH:mm:ss").toISOString()}'`:`${a} ${n.operator} '${(0,r.default)(n.value,"DD.MM.YYYY").toISOString()}'`;else if("number"===n.valueType&&"between"===n.operator){if(n.value?.[0]&&n.value?.[1]){let e=n.value[0],r=n.value[1];t=`${a} ${n.operator} '${e}' and '${r}'`}}else t=a+n.operator+n.value;e.sqlFilters.push(" AND "+t)}}(n);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,n):await async function(e,t,a){await async function(e,t){const a=await(0,m.default)(e);let n=t.query.match(/\{([^}]+)\}/g);if(n){let e,r=n.map(e=>e.slice(1,-1));for(const n of r){const r=a.find(e=>e.name===n);r&&(t.query=t.query.replace(`{${n}}`,n),e=e?`${e}, ${n} as (${r.query})`:`with ${n} as (${r.query})`,r.params&&(t.sqlReplacements=Object.assign(t.sqlReplacements,r.params)))}e&&(t.query=`${e} ${t.query}`)}}(e,t);const n=t.query.lastIndexOf("ORDER BY"),r=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:n},{name:"HAVING",index:o},{name:"GROUP BY",index:r}];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 n=e.substring(0,a),r=e.substring(a);return`${n} ${$(e,t)} \n${r}`}(t.query,t.sqlFilters,u):t.query+$(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:s.QueryTypes.SELECT,replacements:t.sqlReplacements})}return await l.default.query(t.query,{type:s.QueryTypes.SELECT,replacements:t.sqlReplacements})}(e,n,o);let T=await async function(e,t){let a=[],n=0;for(const s of e){n+=1;const e={};for(const a of t)if(!0===a.rowNumber)e[a.name]=n;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]=s[a.name]?(0,r.default)(s[a.name]).format(t):""}else if("number"===a.valueType){let t=s[a.name];if(t&&a.format&&""!==a.format)try{const n=JSON.parse(a.format);n.NFD&&(t=Number(t),t=t.toFixed(n.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]=s[t.path]}else e[a.name]={id:void 0,name:void 0};else e[a.name]=s[a.name];a.push(e)}return a}(f,n.fields),O=T.length;n.sorts?.length>0&&function(e,t,a){e.sort((e,n)=>{for(const s of t){let t,o;"object"===s.valueType?(t=e[s.name]?.name||"",o=n[s.name]?.name||""):(t=e[s.name]||"",o=n[s.name]||"");let i=0;if("date"===s.valueType)if(a.externalData&&"default"===a.externalDateKind&&a.externalDateFormat&&a.externalDateFormat.length>0){const e=(0,r.default)(t,a.externalDateFormat).toDate(),n=(0,r.default)(o,a.externalDateFormat).toDate();i=e.getTime()-n.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"===s.direction?i:-1*i}return 0})}(T,n.sorts,n),n.cols=[],n.colGroups?.length>0&&(n.cols=R(T,n.colGroups[0]));let D=!1;n.rowGroups?.length>0?(T.length>n.maxLimit&&(T=[],D=!0),T=function(e,t){let a=[];b(t,0,e,a);let n=!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),n=!0}return n&&h(a,0,t),function(e,t){if(0!==e.calcs.length){if(e.colGroups.length>0){const a=e.colGroups[0];for(const n of e.cols)for(const r of e.calcs)for(const e of t)S(e,r,{name:a.name,valueType:a.valueType,value:n})}else for(const a of e.calcs)for(const e of t)S(e,a);_(t)}}(t,a),a}(T,n),function(e,t){const a=e.filter(e=>!0===e.rowNumber);for(const e of a){let a=1;for(const n of t)if(!0===n.hasSub)a=g(n.children,e,a);else for(const t of n.children)t[e.name]=a,a++}}(n.fields,T),O=y(T,1)):function(e,t,a=1){const n=e.filter(e=>!0===e.rowNumber);for(const e of n)for(const n of t)n[e.name]=a,a++}(n.fields,T);const C=[];!0===n.showYTotal&&function(e,t,a){if(0!==e.calcs?.length)if(e.colGroups?.length>0){const n=e.colGroups[0].valueType;for(const r of e.cols)for(const s of e.calcs){const e=[];for(const a of t){let t=a.totals.find(e=>e.name===s.name&&("object"===n?e.group.id===r.id:e.group===r));t&&e.push(t.value)}const o=E(e,s.expression);a.push({...s,value:o,group:r})}}else for(const n of e.calcs)if(e.rowGroups?.length>0){const e=[];for(const a of t){const t=a.totals.find(e=>e.name===n.name);t&&e.push(t.value)}const r=E(e,n.expression);a.push({...n,value:r})}else{const e=v(t,n);a.push({...n,value:e})}}(n,T,C),n.rowGroups?.length>0&&n.hideDetails&&(N(T),O=y(T,1)),0===n.rowGroups?.length&&n.limit&&n.page&&(T=function(e,t,a){const n=(a-1)*t,r=n+t;return e.slice(n,r)}(T,n.limit,n.page));let A={resultData:T,cols:n.cols,totals:C,total:O-1,limitError:D};A?t.status(200).send(A):(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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(6980)),s=a(7138),o=n(a(2282)),i=n(a(829)),l=n(a(5788)),u=n(a(8473));t.default={async login(e,t,a){let n=e.session.passport;const r=await u.default.getLicense(e.sessionID);e.session.regenerate(a=>{e.session.passport=n,e.session.license=r,e.session.clientType=e.body?.clientType||null,e.session.save(a=>{const n=i.default.sign({id:e.user.id},"RGPRIVATEKEY",{expiresIn:"360h"}),o={isAuthenticated:!0,result:n,token:n,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:r};t.status(s.StatusCodes.OK).send(o)})})},async session(e,t,a){const n={isAuthenticated:!1};if(e.session.passport?.user)try{const a=await l.default.models.User.findOne({where:{id:e.session.passport.user}});a?(n.isAuthenticated=!0,n.id=a.id,n.name=a.name,n.login=a.login,n.fullRights=a.fullRights,n.use2FA=a.use2FA,n.useCustomerAccess=a.useCustomerAccess,n.externalUser=a.externalUser,n.email=a.email,n.language=a.language,n.license=e.session.license,n.forwarderId=a.forwarderId,t.status(s.StatusCodes.OK).send({result:n,message:"OK"})):t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})}catch(e){t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})}else t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,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(s.StatusCodes.OK).send("Logged out successfully"):void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not log out");e.logout(e=>{e?t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not clear out session info completely"):t.status(s.StatusCodes.OK).send("Logged out successfully")})},async register(e,t,a){try{const a=await r.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(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async confirmEmailAddress(e,t,a){try{const a=await r.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(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resendEmailAddressConfirmationLink(e,t,a){try{const a=await r.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(s.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,n=await r.default.forgotPassword(e.body.email,a);return void t.status(n.httpStatus).send(n.result)}catch(e){return o.default.error("Error in forgotPassword Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async validatePasswordResetToken(e,t,a){try{const a=await r.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(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resetPassword(e,t,a){const{token:n,newPassword:i}=e.body;if(n&&i)try{const a=await r.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(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(s.StatusCodes.BAD_REQUEST).send({message:"Token and new password are required"})}}},8461:e=>{e.exports=require("multer")},8473:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);t.default={async getLicense(e){const t=process.env.LIC_NUMBER,a=process.env.LIC_COUNT,n={active:!1,number:"none"};if(!t||!a)return n;const o=await r.default.query('SELECT COUNT(id) as auth_users FROM session WHERE sid != :sessionID AND "licNumber" IS NOT NULL',{type:s.QueryTypes.SELECT,replacements:{sessionID:e}});let i=0;return o.length>0&&(i=o[0].auth_users),i>=Number(a)?n.number=null:(n.active=!0,n.number=t),n}}},8577:e=>{e.exports=require("cors")},8608:e=>{e.exports=require("exceljs")},8876:e=>{e.exports=require("ieee754")},8894:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788));t.default={async getUserExecutorRoles(e){let t=await s.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 s.default.models.VendorsAndCustomer.findAll({where:{counterpartyId:{[r.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 n=e.user.id,r=await s.default.models.UserCustomer.findAll({where:{parentId:n}});if(r)for(let e of r)t.push(e.customerId)}return{fullAccess:a,counterparties:t}},async getForwarderFilter(e){let t,a=!1;if(e.user){a=!0!==e.user.externalUser;const n=e.user.forwarderId,r=await s.default.models.VendorsAndCustomer.findAll({where:{id:n}});t=r[0]?.dataValues.id}return{fullAccess:a,forwarder:t}},async getRoleGroups(e){let t=[];if(e.user&&!0!==e.user.fullRights){const a=e.user.id;t=(await s.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 n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(6982)),o="aes-256-cbc",i=s.default.scryptSync(process.env.CRYPTO_SECRET_KEY_AUTO_LOGIN||"default-salt","salt",32);t.default={encrypt(e){const t=s.default.randomBytes(16),a=s.default.createCipheriv(o,i,t);let r=a.update(e,"utf8","hex");r+=a.final("hex");const l=JSON.stringify({iv:t.toString("hex"),encryptedData:r});return n.from(l).toString("base64")},decrypt(e){const t=n.from(e,"base64").toString("utf8"),a=JSON.parse(t),r=n.from(a.iv,"hex"),l=s.default.createDecipheriv(o,i,r);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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(8278)),o=n(a(8403)),i=r.default.Router(),l="auth";i.route(`/${l}/login`).post(s.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),t.default=i},9876:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.accessLogsController=void 0;const r=n(a(6928)),s=n(a(9896)),o=n(a(4716)),i=n(a(2282)),l=`${process.cwd()}/logs/access`;async function u(e,t){try{const a=s.default.readFileSync(e,"utf8").split(/\r?\n/),n=[];for(const e of a)if(""!==e.trim()){const a=JSON.parse(e);if(t){let e=!0;for(const n in t)if("user"===n){if(a[n]?.id!==t[n]?.id){e=!1;break}}else if(a[n]!==t[n]){e=!1;break}e&&n.push(a)}else n.push(a)}return n}catch(t){throw new Error(`Failed to process file: ${e}. Error: ${t.message}`)}}function c(e,t,a){const n=e.slice();return n.sort((e,n)=>{const r=e[t],s=n[t];if(a){if(r>s)return-1;if(r<s)return 1}else{if(r<s)return-1;if(r>s)return 1}return 0}),n}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||"{}"),n=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)=>{s.default.readdir(e,(n,r)=>{if(n)return a(new Error(`Failed to read directory: ${e}`));t(r)})})}(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 n=e.slice(0,8);return n===t||n===a||n>t&&n<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=r.default.join(l,e),n=await u(t,a.searchFilter);y.push(...n)}if(a.searchStr&&(y=function(e,t,a){const n=t.replace(/\s/g,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=new RegExp(n,"i");return e.filter(e=>{let t=!1;for(const n of a){const a=n.split(".");if(a.length>1){if(e[a[0]]&&e[a[0]][a[1]]&&d(e[a[0]][a[1]],r)){t=!0;break}}else if(e[n]&&d(e[n],r)){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 n=(a-1)*t,r=n+t,s=e.slice(n,r);return{totalItems:e.length,currentPage:a,data:s}}(y,n.limit,n.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 n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(9896)),s=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),n=`src/database/initialdata/${t}.json`;r.default.writeFileSync(n,a)}t.default={async updateInitialData(e,t,a={}){const n="src/modules",s=(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&&s)return function(e,t,a){let n;switch(e){case"app_objects":n=`${t.type}s/${t.name}`;break;case"view_settings":n=`${t.appObject.type}s/${t.appObject.name}/views/${t.name}`;break;case"report_settings":n=`reports/${t.name}`;break;case"data_processors":n=`dataProcessors/${t.name}`;break;case"scheduled_jobs":n=`scheduledJobs/${t.name}`;break;case"components":n=`components/${t.name}`;break;case"common_commands":n=`commonCommands/${t.name}`;break;case"rest_api":n=`restApi/${t.name}`;break;case"print_forms":n=`${t.appObject.type}s/${t.appObject.name}/printForms/${t.name}`;break;case"common_modules":n=`commonModules/${t.name}.js`}if(n){const e=`${a}/${n}`;r.default.existsSync(e)&&r.default.rmSync(e,{force:!0,recursive:!0})}}(e.tableName,a.oldValue,n),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={};s&&(d.id=a?.objectId);try{const s=await e.findAll({where:d,order:["id",...c],include:u}),l=JSON.parse(JSON.stringify(s));"app_objects"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,...o}=n,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{r.default.renameSync(e,i)}catch(e){console.error(e)}}r.default.existsSync(i)||r.default.mkdirSync(i,{recursive:!0});const l=`${i}/object.struct.json`,u=JSON.stringify(o,null,4);if(r.default.writeFile(l,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(void 0!==e){const t=`${i}/client.module.js`;e?r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}if(void 0!==s){const e=`${i}/client.v3.module.js`;s?r.default.writeFile(e,`export default ${s}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"serverModule")){const e=`${i}/server.module.js`;a.serverModule?r.default.writeFile(e,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"info")){const e=`${i}/object.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}}(l,n,a):"view_settings"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,appObject:i,...l}=n,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{r.default.renameSync(e,u)}catch(e){console.error(e)}}r.default.existsSync(u)||r.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/view.struct.json`;if(r.default.writeFile(d,c,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const f=`${u}/client.module.js`;e?r.default.writeFile(f,`export default ${e}`,function(e){e&&console.error(e)}):r.default.existsSync(f)&&r.default.rmSync(f);const m=`${u}/client.v3.module.js`;s?r.default.writeFile(m,s,function(e){e&&console.error(e)}):r.default.existsSync(m)&&r.default.rmSync(m);const p=`${u}/server.module.js`;if(o?r.default.writeFile(p,`${o}`,function(e){e&&console.error(e)}):r.default.existsSync(p)&&r.default.rmSync(p),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${u}/view.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}(l,n,a):"report_settings"===e.tableName?function(e,t,a){for(const n of e){const{dataQuery:e,...s}=n,o=`${t}/reports/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/reports/${a.oldValue?.name}`;try{r.default.renameSync(e,o)}catch(e){console.error(e)}}r.default.existsSync(o)||r.default.mkdirSync(o,{recursive:!0});const i=JSON.stringify(s,null,4),l=`${o}/report.struct.json`;if(r.default.writeFile(l,i,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;if(e){const t=`${o}/data.query.sql`;r.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}const u=`${o}/server.module.js`;if(a.serverModule?r.default.writeFile(u,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(u)&&r.default.rmSync(u,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${o}/report.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}(l,n,a):"data_processors"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/dataProcessors/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/dataProcessors/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/processor.struct.json`;r.default.writeFile(o,s,function(e){e&&console.error(e)});const i=`${e}/server.module.js`;a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0})}}(l,n,a):"scheduled_jobs"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/scheduledJobs/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/scheduledJobs/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/job.struct.json`;if(r.default.writeFile(o,s,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/job.info.md`;a.info?r.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}}}(l,n,a):"rest_api"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/restApi/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/restApi/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/api.struct.json`;if(r.default.writeFile(o,s,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/api.info.md`;a.info?r.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}}}(l,n,a):"components"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,...i}=n,l=`${t}/components/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/components/${a.oldValue?.name}`;try{r.default.renameSync(e,l)}catch(e){console.error(e)}}r.default.existsSync(l)||r.default.mkdirSync(l,{recursive:!0});const u=JSON.stringify(i,null,4),c=`${l}/component.struct.json`;if(r.default.writeFile(c,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${l}/client.module.js`;r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(s){const e=`${l}/client.v3.module.js`;r.default.writeFile(e,s,function(e){e&&console.error(e)})}if(o){const e=`${l}/server.module.js`;r.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,n,a):"common_commands"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,...o}=n,i=`${t}/commonCommands/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/commonCommands/${a.oldValue?.name}`;try{r.default.renameSync(e,i)}catch(e){console.error(e)}}r.default.existsSync(i)||r.default.mkdirSync(i,{recursive:!0});const l=JSON.stringify(o,null,4),u=`${i}/command.struct.json`;if(r.default.writeFile(u,l,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${i}/client.module.js`;r.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}if(s){const e=`${i}/client.v3.module.js`;r.default.writeFile(e,s,function(e){e&&console.error(e)})}}}}(l,n,a):"print_forms"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,appObject:i,...l}=n,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{r.default.renameSync(e,u)}catch(e){console.error(e)}}r.default.existsSync(u)||r.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/form.struct.json`;if(r.default.writeFile(d,c,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${u}/client.module.js`;r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(s){const e=`${u}/client.module.js`;r.default.writeFile(e,`export default ${s}`,function(e){e&&console.error(e)})}if(o){const e=`${u}/server.module.js`;r.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,n,a):"common_modules"===e.tableName?(function(e,t,a){const n=`${t}/commonModules`;r.default.existsSync(n)||r.default.mkdirSync(n,{recursive:!0});for(const n of e){const e=`${t}/commonModules/${n.name}.js`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/commonModules/${a.oldValue?.name}.js`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}a.module&&r.default.writeFile(e,`${a.module}`,function(e){e&&console.error(e)})}}(l,n,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),n=t.filter(e=>a.includes(e));try{const t=await e.model.findAll({order:["id"],where:{predefinedName:{[s.Op.ne]:null}},attributes:{exclude:n}}),a=JSON.stringify(t,null,4),o=`src/modules/catalogs/${e.name}/predefined.json`;r.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(r.default.readFileSync(e,"utf-8")),n={};for(const e of a){const t=e.name;t&&(n[t]=e.values?.map(e=>e.value)||[])}let s={};r.default.existsSync(t)&&JSON.parse(r.default.readFileSync(t,"utf-8"));const o={};for(const[e,t]of Object.entries(n))o[e]=t;r.default.writeFileSync(t,JSON.stringify(o,null,2),"utf-8")}}},9896:e=>{e.exports=require("fs")}},__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__})();