@synergy-server/core 0.2.0 → 1.0.0

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));function g(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 y(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 b(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 w(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 w=[];e.query?.extraAttributes&&(w="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&&(y(f.advanced,f,_),delete f.advanced),f.quick&&(y(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(b(e,a));else t?.sortBy&&r.push(b(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,w);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=[],g=d,y=m;for(const e in a.tables)g=g.filter(t=>!t.startsWith(`${e}.`)),y=y.filter(t=>!t.startsWith(`${e}.`));let b=c.default.prepareIncludes(a.model,s,g,null,p,y);try{let e=await a.model.findByPk(o,{include:b,order:p});if(e){e=JSON.parse(JSON.stringify(e));for(const t in a.tables){p=[];let r=d,n=m;r=r.filter(e=>e.startsWith(`${t}.`)),n=n.filter(e=>e.startsWith(`${t}.`));const o=new RegExp(`^${t}\\.`);r=r.map(e=>e.replace(o,"")),n=n.map(e=>e.replace(o,""));const i=c.default.prepareIncludes(a.tables[t].model,s,r,null,p,n);p&&a.tables[t].model.getAttributes().rowNumber&&p.push(["rowNumber","asc"]);const l=await a.tables[t].model.findAll({where:{parentId:e.id},include:i,order:p});e[t]=JSON.parse(JSON.stringify(l))}return!0===a.configurationData&&await async function(e,t){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=l.default.readFileSync(e,{encoding:"utf8",flag:"r"}):t.serverModule=null,delete t.info;const r=`src/modules/${t.type}s/${t.name}/object.info.md`;l.default.existsSync(r)?t.info=l.default.readFileSync(r,{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,e){const r=`src/modules/${e.type}s/${e.name}/views/${t.name}/server.module.js`;l.default.existsSync(r)&&(t.serverModule=l.default.readFileSync(r,{encoding:"utf8",flag:"r"}));const a=`src/modules/${e.type}s/${e.name}/views/${t.name}/view.info.md`;l.default.existsSync(a)&&(t.info=l.default.readFileSync(a,{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=l.default.readFileSync(e,{encoding:"utf8",flag:"r"}):t.serverModule=null;const r=`src/modules/reports/${t.name}/report.info.md`;l.default.existsSync(r)?t.info=l.default.readFileSync(r,{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=l.default.readFileSync(e,{encoding:"utf8",flag:"r"}):t.serverModule=null}else if("scheduledJobs"===e.name){const e=`src/modules/scheduledJobs/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=l.default.readFileSync(e,{encoding:"utf8",flag:"r"}):t.serverModule=null;const r=`src/modules/scheduledJobs/${t.name}/job.info.md`;l.default.existsSync(r)?t.info=l.default.readFileSync(r,{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=l.default.readFileSync(e,{encoding:"utf8",flag:"r"}):t.serverModule=null;const r=`src/modules/restApi/${t.name}/api.info.md`;l.default.existsSync(r)?t.info=l.default.readFileSync(r,{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=l.default.readFileSync(e,{encoding:"utf8",flag:"r"}):t.module=null}}(a,e),{status:n.StatusCodes.OK,responseData:e}}{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=g(a.model,l),f=o.transaction?o.transaction:await a.model.sequelize.transaction();try{"document"===a.type&&await d.default.setNumber(a,l,f);const 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};w(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 y=g(a.model,c);if(y.length>0){const e=f.id;for(const t of y)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};w(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 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}/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,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__})();