@synergy-server/core 1.1.6 → 1.1.7
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 +1 -1
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see main.js.LICENSE.txt */
|
|
2
|
-
(()=>{"use strict";var __webpack_modules__={9:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);class o extends s.Model{}o.init({id:{type:s.DataTypes.UUID,primaryKey:!0},sid:{type:s.DataTypes.UUID,allowNull:!1,unique:!0},userId:s.DataTypes.UUID,expires:s.DataTypes.DATE,data:s.DataTypes.TEXT,licNumber:s.DataTypes.STRING(100),clientType:{type:s.DataTypes.ENUM,values:["browser","mobile","electron","api"],defaultValue:"browser"}},{sequelize:r.default,tableName:"session",modelName:"Session"})},360:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=a(9031),o=n(a(9896)),i=a(7138),l=n(a(1688)),u=n(a(3786)),c=n(a(5788)),d=n(a(2282)),f=r.default.Router();function m(e={},t){let a;const n={};return e.userRole?n.id=e.userRole:t.accessRoleId?n.id=t.accessRoleId:n.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?l.default.canRead(n):"CAN_MODIFY"===e.accessLevel?l.default.canModify(n):"IS_AUTH"===e.accessLevel?l.default.isAuth:l.default.isFullRights:"GET"===e.httpMethod?l.default.canRead(n):l.default.canModify(n),a}t.default={async initRoutes(){const e=await c.default.query('SELECT * FROM rest_api WHERE rest_api."markedToDelete" = false AND rest_api."active" = true',{type:s.QueryTypes.SELECT});for(const t of e){if(!t.methods)continue;let e;const a=`restApi/${t.name}/server.module.js`,n=`${process.cwd()}/src/modules/${a}`;if(o.default.existsSync(n)&&(e=require(n)),!e)continue;const r=JSON.parse(t.methods);for(const a of r)e[a.controller]&&"function"==typeof e[a.controller]?f[a.httpMethod.toLowerCase()](`/api/${t.path}/${a.path}`,m(a.httpMethod,t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return u.default.array("files")(e,t,e=>{if(e)return t.status(i.StatusCodes.INTERNAL_SERVER_ERROR).json({message:`File upload error: ${e}`});a()});a()},e[a.controller]):d.default.error("Rest API controller is not exist: ",{meta:{name:t.name,controller:a.controller}})}return f}}},664:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2282)),s=n(a(5788));t.default={async onChangeHandler(e,t,a,n,o){try{const r=await s.default.models.ObjectVersioningSetting.findOne({where:{objectType:e.name}});if(r&&("all"===r.versioningMethod||r.versioningMethod===a)){let r=function(e){let t=[];if(e.associations)for(let a in e.associations){if("chargedServicesAcc"===a)continue;let n=e.associations[a].target;if(e.associations[a].isSingleAssociation){let r=["id","presentation"];e.associations[a].source.rawAttributes.name&&r.push("name"),t.push({model:n,as:a,attributes:r})}else{const e=t.push({model:n,as:a,include:[]});if(n.associations){t[e-1].include=[];for(let a in n.associations){let r=n.associations[a].target;if(n.associations[a].isSingleAssociation){let s=["id","presentation"];n.associations[a].target.rawAttributes.name&&s.push("name"),t[e-1].include.push({model:r,as:a,attributes:s})}}}}}return t}(e);await e.findByPk(t,{include:r,transaction:o}).then(async r=>{if(r){const i={objectId:t,objectData:JSON.stringify(r),objectType:e.name,userId:n,description:a},l={transaction:o||null};await s.default.models.ObjectVersion.create(i,l).catch(e=>{console.error(e)})}})}}catch(t){r.default.error(`Error in ${e.options.name?.plural} objectVersionsService onChangeHandler`,{meta:t})}},async addChanges(e,t){let a={...e};t.user&&(a.userId=t.user.id),await s.default.models.ObjectVersion.create(a).catch(e=>{console.error(e)})}}},696:e=>{e.exports=require("ssf")},829:e=>{e.exports=require("jsonwebtoken")},1572:e=>{e.exports=require("nodemailer")},1688:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(1691)),s=a(7138),o=n(a(2282));t.default={isAuth(e,t,a){if(!e.user){const e="Error in accessRight.isAuth. User not authenticated";return o.default.error(e),t.status(s.StatusCodes.FORBIDDEN).send({message:e})}a()},isFullRights(e,t,a){if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),t.status(s.StatusCodes.FORBIDDEN).send({message:e})}if(!0!==e.user.fullRights){const e="Error in accessRight.isFullRights. User not has full rights";return o.default.error(e),t.status(s.StatusCodes.FORBIDDEN).send({message:e})}a()},canRead:e=>async(t,a,n)=>{if(!t.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),a.status(s.StatusCodes.FORBIDDEN).send({message:e})}if(!0===t.user.fullRights)return void n();const i=t.user?.id;i?await r.default.checkUserAccess(i,e,!0).then(r=>{if(!0===r)n();else{const n=`User ${t.user?.name} not have access to read. Role ${e}`;o.default.error("Error in accessRight.canRead",{meta:n}),a.status(s.StatusCodes.FORBIDDEN).send({message:n})}}).catch(e=>{o.default.error("Error in accessRight.canRead",{meta:e}),a.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(s.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},canModify:e=>async(t,a,n)=>{if(!0===t.user?.fullRights)return void n();const i=t.user?.id;i?await r.default.checkUserAccess(i,e,!0,!0).then(r=>{if(!0===r)n();else{const n=`User ${t.user?.name} not have access to modify. Role ${e}`;o.default.error("Error in accessRight.canModify",{meta:n}),a.status(s.StatusCodes.FORBIDDEN).send({message:n})}}).catch(e=>{o.default.error("Error in accessRight.canModify",{meta:e}),a.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(s.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})}}},1691:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(2555));async function i(e){const t=[];return await s.default.models.Department.findAll({where:{[r.Op.or]:[{leaderId:e},{deputyId:e}]}}).then(e=>{for(const a of e)t.push(a.id)}).catch(e=>{throw e}),await s.default.models.DepartmentEmployee.findAll({where:{employeeId:e}}).then(e=>{for(const a of e)t.push(a.parentId)}).catch(e=>{throw e}),t}t.default={getUserAccessRoles:async(e,t=!1,a=!1)=>await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const n={parentId:e};return!0===a?n.canModify=!0:!0===t&&(n.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:n}).then(e=>{const t=[];for(const a of e){const e=t.findIndex(e=>e.userRoleId===a.id);e>-1?(a.canRead!==t[e].canRead&&!0===a.canRead&&(t[e].canRead=a.canRead),a.canModify!==t[e].canModify&&!0===a.canModify&&(t[e].canModify=a.canModify)):t.push({userRoleId:a.userRoleId,canRead:a.canRead,canModify:a.canModify})}return t}).catch(e=>{throw e})}).catch(e=>{throw e}),getUserAccessRoleId:async(e,t=!1,a=!1)=>await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>{const n={parentId:e.map(e=>e.parentId)};return!0===a?n.canModify=!0:!0===t&&(n.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:n}).then(t=>e=t.map(e=>e.userRoleId)).catch(e=>{throw e})}).catch(e=>{throw e}),getUserRoleByKey:async e=>await s.default.models.UserRole.findOne({where:{key:e}}).then(async e=>e).catch(e=>{throw e}),getUserRoleById:async e=>await s.default.models.UserRole.findByPk(e).then(async e=>e).catch(e=>{throw e}),async checkUserAccess(e,t,a=!1,n=!1){const r=t?.id?await this.getUserRoleById(t.id):await this.getUserRoleByKey(t.key);return r?await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const t={parentId:e,userRoleId:r.id};return!0===n?t.canModify=!0:!0===a&&(t.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:t}).then(e=>!!(e&&e.length>0)).catch(e=>{throw e})}).catch(e=>{throw e}):new Error(`Role with key ${t} does not exist`)},async getAllSubDepartments(e,t){const a=[],n=await s.default.models.Department.findAll({where:{groupId:e.id},include:t});for(const e of n){a.push(e);const n=await this.getAllSubDepartments(e,t);for(const e of n)a.push(e)}return a},async accessRestrictions(e,t){const a={use:!1,users:[]},n=await s.default.models.AccessRestriction.findOne({where:{objectType:t.name}});if(n&&(!0===n.useRestriction||!0===n.useDepartmentRestriction)&&(a.use=!0,a.users.push(e.user?.id),!0===n.useDepartmentRestriction)){const t=o.default.prepareIncludes(s.default.models.Department,{withTableParts:!0}),n=await s.default.models.Department.findAll({where:{[r.Op.or]:[{leaderId:e.user?.id},{deputyId:e.user?.id}]},include:t}),i=[];for(const e of n){const a=await this.getAllSubDepartments(e,t);for(const e of a)i.push(e)}for(const e of i)n.push(e);if(n)for(const e of n)for(const t of e.employees)a.users.push(t.employeeId)}return a},getUserAccessNavigation:async e=>await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>await s.default.models.RoleGroupNavigation.findAll({where:{parentId:e}}).then(e=>{const t=e.map(e=>e.navigationId);return[...new Set(t)]}).catch(e=>{throw e})).catch(e=>{throw e})}},1752:e=>{e.exports=require("passport-local")},1763:e=>{e.exports=require("express-rate-limit")},2096:e=>{e.exports=require("morgan")},2103:e=>{e.exports=require("crypto-js")},2282:function(e,t,a){var n,r=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a);var r=Object.getOwnPropertyDescriptor(t,a);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,n,r)}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[t.length]=a);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a=n(e),o=0;o<a.length;o++)"default"!==a[o]&&r(t,e,a[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0});const i=o(a(5124));i.default.addColors({error:"bold red",warn:"yellow",info:"green",verbose:"dim white",debug:"gray",silly:"magenta"});const l=i.default.createLogger({level:"info",format:i.format.combine(i.format.colorize(),i.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),i.format.prettyPrint(),i.format.printf(e=>`${e.timestamp}${e.context?` [${e.context}]`:""}${e.level?` ${e.level}`:""}: ${e.message?e.message:""} ${e.meta?e.meta?.stack?`${e.meta.original?.message?e.meta.original?.message:""} ${e.meta.stack}`:e.meta:""} ${e.stack?`\n${e.stack}`:""}`)),transports:[new i.transports.File({level:"error",filename:"logs/common/error.log",format:i.default.format.uncolorize()}),new i.transports.File({filename:"logs/common/combined.log",format:i.default.format.uncolorize()}),new i.transports.Console],exceptionHandlers:[new i.transports.File({filename:"logs/common/exceptions.log"})]});t.default=l},2362:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(6261));t.default={sendMessage(e,t){e.app.get("eventEmitter").emit("processing",{message:t})},sendData(e,t){e.app.get("eventEmitter").emit("processing",t)},init(e){const t=new r.default;e.set("eventEmitter",t),e.get("/client_events",(e,a)=>{a.setHeader("Content-Type","text/event-stream"),a.setHeader("Cache-Control","no-cache"),a.setHeader("Connection","keep-alive"),a.setHeader("Access-Control-Allow-Credentials","true"),a.flushHeaders(),t.on("processing",e=>{(e=>{a.write(`data: ${JSON.stringify(e)}\n\n`),a.flush()})(e)}),e.on("close",()=>{a.end()})})}}},2525:e=>{e.exports=require("helmet")},2555:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);function o(e){const t={};if(0===e.length)return t;for(const a of e){const e=a.split(".");e.length>0&&(t[e[0]]?2==e.length?t[e[0]].push(e[1]):e.length>2&&(t[e[0]][e[1]]?t[e[0]][e[1]].push(e[2]):t[e[0]].push({[e[1]]:[e[2]]})):2==e.length?t[e[0]]=[e[1]]:e.length>2&&(t[e[0]]={},t[e[0]][e[1]]=[e[2]]))}return t}t.default={prepareIncludes(e,t,a=[],n=null,r=null,s=[]){let i=[],l=!0;Object.prototype.hasOwnProperty.call(t,"compactInclude")&&(l=t.compactInclude);const u=o(a),c=o(s);if(t.include)i=t.include;else if(e.associations){if(!0!==l)return{all:!0};for(let a in e.associations){if(e.associations[a].options._noTablePart)continue;let s=e.associations[a].target;if(e.associations[a].isSingleAssociation){let t=["id","presentation"];e.associations[a].target.getAttributes().name&&t.push("name");const r=[];if(u[a])for(const e of u[a])if("object"==typeof e)for(const t in e){const a=s.associations[t]?.target;if(a){const n=e[t];if(Array.isArray(n)){let e=[...new Set(["id","presentation",...n])];a.getAttributes().name&&e.push("name"),r.push({model:a,as:t,attributes:e})}}}else t.includes(e)||t.push(e);c[a]&&(t=[...new Set([...t,...c[a]])]);const o=n?.[a];i.push({model:s,as:a,attributes:t,where:o,include:r})}else if(t.withTableParts){const e=n?.[a],t=i.push({model:s,as:a,where:e,include:[]});if(r&&s.getAttributes().rowNumber&&r.push([{model:s,as:a},"rowNumber","asc"]),s.associations){i[t-1].include=[];for(let e in s.associations){let n=s.associations[e].target;if(s.associations[e].isSingleAssociation){let r=["id","presentation"];s.associations[e].target.getAttributes().name&&r.push("name"),u[a]?.[e]&&(r=[...new Set([...r,...u[a][e]])]),i[t-1].include?.push({model:n,as:e,attributes:r})}}}}}}return i},async setAuthor(e,t){t.user?(e.authorId=t.user.id,e.author=t.user):console.error("Not found user on request!")},executeConditionCode:(e,t)=>new Function("args",e)(t),translateField:(e,t,a)=>!0!==(a&&"pl"!==a)||null===e.lang?e[t]:e.lang?.[t]?.[a]||e[t],async initEnums(){try{return(await r.default.query('\n SELECT \n enums.id AS "id",\n enums.name AS "enumName",\n enum_values.id AS "valueId",\n enum_values.value AS "value",\n enum_values."rowNumber" AS "rowNumber"\n FROM \n enums\n LEFT JOIN \n enum_values \n ON \n enum_values."parentId" = enums.id\n ORDER BY \n enums.id ASC, \n enum_values."rowNumber" ASC',{type:s.QueryTypes.SELECT})).reduce((e,t)=>(e[t.enumName]||(e[t.enumName]=[]),e[t.enumName].push(t.value),e),{})}catch(e){return console.error(e),{}}},normalizeFloat(e,t=6){if(!Number.isFinite(e))return e;const a=Math.pow(10,t),n=Math.round(e*a)/a,r=Math.pow(10,3);return 0===Math.round(e*r)/r?0:n}}},2562:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2282)),s=a(7138),o=n(a(9896)),i=n(a(2103)),l=n(a(9880));t.default={async executeProcessing(e,t,a,n){const i=e.body.name;if(!i){const e="Object name is not correct!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let l;const u=`dataProcessors/${i}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;if(o.default.existsSync(c)){const e=require.resolve(c);require.cache[e]&&delete require.cache[e],l=require(c)}if(!l){const e="Data processor module is empty!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if(!l?.executeProcessing||"function"!=typeof l?.executeProcessing){const e="Data processor run function is not exist!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}try{const r=await l.executeProcessing(e,t,a,n);return{status:s.StatusCodes.OK,responseData:{executionComplited:!0,result:r}}}catch(e){return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async exportProcessor(e,t,a,n){const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length){const e="Object id is not correct!";return r.default.error(`Error in ${n.name} findItem controller`,{meta:e}),t.status(s.StatusCodes.BAD_REQUEST).send({message:e})}return await n.model.findByPk(l).then(e=>{if(!e){const e=`${n.name} with id ${l} not found`;return r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.NOT_FOUND).send({message:e})}{const a=JSON.parse(JSON.stringify(e));let l;const u=`dataProcessors/${a.name}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;o.default.existsSync(c)&&(delete require.cache[require.resolve(c)],l=require(c)),a.serverModule=l?o.default.readFileSync(`src/modules/${u}`,{encoding:"utf8",flag:"r"}):"";const d=i.default.AES.encrypt(JSON.stringify(a),"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3").toString(),f=`/tmp/${a.id}.sdp`;o.default.writeFileSync(f,d),t.status(s.StatusCodes.OK).download(f,`${a.name}.sdp`,e=>{if(e)return r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).json({message:e.message});o.default.unlinkSync(f)})}}).catch(e=>(r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})))},async importProcessor(e,t,a,n){let{data:u}=e.body;if(u=JSON.parse(u||"{}"),!e.files||!u){const e="No file uploaded!";return r.default.error(`Error in ${n.name} importProcessor controller`,{meta:e}),t.status(s.StatusCodes.BAD_REQUEST).send({message:e})}try{for(let a of e.files){const e=a.path,r=o.default.readFileSync(e,{encoding:"utf8",flag:"r"}),c=i.default.AES.decrypt(r,"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3"),d=JSON.parse(c.toString(i.default.enc.Utf8));o.default.unlinkSync(e);let f=await n.model.findByPk(u.id);const m={objectId:u.id,serverModule:d.serverModule};let p;return f?(p=await f.update({name:d.name,title:d.title,lang:d.lang},{where:{id:u.id}}),m.event="update",m.oldValue=f,m.newValue=p):(p=await n.model.create({id:u.id,name:d.name,title:d.title,lang:d.lang}),m.event="create",m.newValue=p),await l.default.updateInitialData(n.model,n.path,m),t.status(s.StatusCodes.OK).send({message:"OK"})}}catch(e){return r.default.error(`Error in ${n.name} importProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})}}}},2671:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=n(a(4716)),o=n(a(2282)),i=a(9031);t.default={async setNumber(e,t,a){if(t.noSetPrefix&&!0===t.noSetPrefix)return;t.prefix||(t.prefix="AA"),function(e){"numberPeriod"in e&&e.prefix.id&&("year"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("year").toDate():"quarter"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("quarter").toDate():"month"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("month").toDate():"day"===e.prefix.periodicity?e.numberPeriod=e.date.startOf("day").toDate():e.numberPeriod=null)}(t);const n=t.prefix?.id?t.prefix.name:t.prefix,l=t.numberPeriod?t.numberPeriod:null;let u=1;try{let s=await r.default.models.Numerator.findOne({where:{tableName:e.path,prefix:n,period:l},lock:i.Transaction.LOCK.UPDATE,transaction:a});if(s)s.number++,await s.save({transaction:a});else{let o={prefixId:null};t.prefix.id?o.prefixId=t.prefix.id:o.prefixId=null,"numberPeriod"in t&&(o.numberPeriod=l);const i=await e.model.findOne({where:o,order:[["number","DESC"]],transaction:a});i&&(u=parseFloat(i.number)+1),s=await r.default.models.Numerator.create({tableName:e.path,prefix:n,period:l,number:u},{transaction:a})}u=s.number}catch(t){o.default.error(`Error in ${e.name} createItem controller`,{meta:t})}t.number=u,function(e){if(e.prefix?.template&&""!=e.prefix?.template){const t=e.prefix.template.trim().replace(/\[([^\]]+)\]/g,(t,a)=>"Number"===a?e.number.toString().padStart(6,"0"):"MonthDay"===a?(0,s.default)(e.date).format("DD"):"MonthNumber"===a?(0,s.default)(e.date).format("MM"):"QuarterNumber"===a?(0,s.default)(e.date).quarter().toString().padStart(2,"0"):"YearTwoDigits"===a?(0,s.default)(e.date).format("YY"):"YearFourDigits"===a?(0,s.default)(e.date).format("YYYY"):"Prefix"===a?e.prefix.name:"Organization"===a?e.organization?.code?e.organization.code:t:"CounterpartyCode"===a?e.counterparty?.code?e.counterparty.code:t:"StoreCode"===a&&e.warehouse?.code?e.warehouse.code:t);e.numberStr=t}else e.numberStr=(e.prefix?.name?e.prefix?.name:e.prefix)+"-"+e.number.toString().padStart(6,"0")}(t)},async nextNumber(e,t,a=void 0,n){let s,l=1,u=!1;n?(s=n,u=!0):s=await(e.sequelize?.transaction());try{const a=e.getTableName();let n=await r.default.models.Numerator.findOne({where:{tableName:a,prefix:t},lock:i.Transaction.LOCK.UPDATE,transaction:s});if(n)n.number++,await n.save({transaction:s});else{const o=await e.findOne({where:{prefix:t},order:[["number","DESC"]],transaction:s});o&&(l=o.number+1),n=await r.default.models.Numerator.create({tableName:a,prefix:t,number:l},{transaction:s})}!0!==u&&s&&await s.commit(),l=n.number}catch(t){!0!==u&&s&&await s.rollback(),o.default.error(`Error in ${e.options.name?.plural} createItem controller`,{meta:t})}return l}}},2703:e=>{e.exports=require("node-cron")},3275:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default={typesSufixes:()=>({string:"ST",text:"TX",integer:"IN",decimal:"DC",boolean:"BL",date:"DT"}),typeIncludesRef:e=>e.includes("enum")||e.includes("catalog")||e.includes("document")||e.includes("anyRef")||e.findIndex(e=>e.includes("."))>-1,isRefType:e=>"enum"===e||"catalog"===e||"document"===e||"anyRef"===e||e.includes("."),getFieldNameByType(e,t){const a=this.typesSufixes();return a[t]?`_${e}${a[t]}`:this.isRefType(t)?`_${e}Ref`:null}}},3407:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(4139)),s=n(a(7281)),o=n(a(9816)),i=n(a(7565)),l=n(a(6961));t.default=e=>{e.use(r.default),e.use(s.default),e.use(o.default),e.use(l.default),e.use(i.default)}},3464:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2703)),s=n(a(5788)),o=n(a(9896)),i=a(7138),l=n(a(2282)),u=[];t.default={async init(e){if(process.env.NODE_APP_INSTANCE&&"0"!==process.env.NODE_APP_INSTANCE)return;const t=await s.default.models.ScheduledJob.findAll({where:{active:!0,markedToDelete:!1}});if(Array.isArray(t)&&t.length>0)for(const a of t){const t=a.schedule,n=`scheduledJobs/${a.name}/server.module.js`;let r;const s=`${process.cwd()}/src/modules/${n}`;if(!o.default.existsSync(s))return console.log(`Serwer module for scheduled job "${a.name}" is not found!`);if(r=require(s),t.dateFrom||t.dateTo){const e=new Date;if(t.dateFrom&&e<new Date(t.dateFrom))continue;if(t.dateTo&&e>new Date(t.dateTo))continue}c(a,t,r,e)}},async executeManually(e,t,a,n){const r=e.body.name;if(!r){const e="Object name is not correct!";return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let u;const c=`scheduledJobs/${r}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;if(o.default.existsSync(d)&&(delete require.cache[require.resolve(d)],u=require(d)),!u){const e="Scheduled job module is empty!";return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if("function"!=typeof u){const e="Scheduled job run function is not exist!";return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const f=await s.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.body.id,status:"started"});try{const t=[],a=await u(e.objects,t),n=t.find(e=>"error"===e.status),r=t.find(e=>"info"===e.status);let s="";if(n){for(let e of t)s+=e.meta+"\n";await f.update({endDate:new Date,status:"error",errorDescription:s,userId:e.user?.id,manual:!0})}else if(r){for(let e of t)s+=e.meta+"\n";await f.update({endDate:new Date,status:"success",errorDescription:s,userId:e.user?.id,manual:!0})}else await f.update({endDate:new Date,status:"success",userId:e.user?.id,manual:!0});return{status:i.StatusCodes.OK,responseData:{executionComplited:!0,result:a}}}catch(e){return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}}};const c=(e,t,a,n)=>{const o=`${d(t.minutes,t.startTime,"minutes")} \n ${d(t.hours,t.startTime,"hours")} \n ${f(t.daysOfMonth)} \n ${f(t.months)} \n ${f(t.daysOfWeek)}\n `,i=r.default.schedule(o,async()=>{const t=await s.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.id,status:"started"});try{const e=[];await a(n,e);const r=e.find(e=>"error"===e.status),s=e.find(e=>"info"===e.status);let o="";if(r){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"error",errorDescription:o})}else if(s){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"success",errorDescription:o})}else await t.update({endDate:new Date,status:"success"})}catch(e){console.error("Error executing module code:",e),await t.update({endDate:new Date,status:"error",errorDescription:e.message})}},{scheduled:!1});i.start(),u.push({jobId:e.id,jobExemplar:i})},d=(e,t,a)=>e&&"00"!==e?`*/${Number(e)}`:t?"minutes"===a?`${t.substring(3,5)}`:`${t.substring(0,2)}`:"*",f=e=>{if(e.length>0){let t="";for(const a of e)t+=a,e.length-1!==e.indexOf(a)&&(t+=",");return t}return"*"}},3648:e=>{e.exports=require("pdfmake")},3786:function(e,t,a){var n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(8461)),o=r(a(4716)),i=r(a(9896)),l=s.default.diskStorage({destination:function(e,t,a){a(null,function(){const e=(0,o.default)().format("DD_MM_YYYY"),t=`${process.env.DESTINATION}/common/${e}`;return i.default.existsSync(t)||i.default.mkdirSync(t,{recursive:!0}),t}())},filename:function(e,t,a){t.originalname=n.from(t.originalname,"latin1").toString("utf8");const r=function(e){let t=e.originalname,a="";const n=/(?:\.([^.]+))?$/.exec(e.originalname);if(!n)return`file_${Date.now()}${a}`;a=n[0],t=String(e.originalname).replace(a,"");return t=String(t).replace(/[^a-zA-Z0-9-_]/g,"_"),t=t.toLowerCase(),`${t}_${Date.now()}${a}`}(t);a(null,r)}});t.default=(0,s.default)({storage:l,limits:{fileSize:104857600}})},3830:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(8894));t.default=async e=>{const t=await s(e);return[{name:"customerRequests",query:'select * from customer_requests where "authorId" = :authorId',params:{authorId:e.user?.id}},{name:"customerRequestStatuses",query:"select * from customer_request_statuses"},{name:"deliveryNotes",query:`SELECT * FROM delivery_notes as virtual_table ${t}`},{name:"deliveryOrders",query:`SELECT * FROM delivery_orders as virtual_table ${t}`},{name:"Dispositions",query:`SELECT * FROM dispositions as virtual_table ${t}`}]};const s=async e=>{let t="";const a=await r.default.getForwarderFilter(e);return!1===a.fullAccess&&(t=`WHERE virtual_table."forwarderId" = '${a.forwarder}'`),t}},3857:e=>{e.exports=require("connect-session-sequelize")},3903:e=>{e.exports=require("uuid")},3958:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(3903),s=a(7138),o=a(9031),i=n(a(4716)),l=n(a(9896)),u=n(a(2282)),c=n(a(2555)),d=n(a(2671)),f=n(a(6299)),m=n(a(9880)),p=n(a(664)),h=n(a(5788)),y=n(a(2103));function g(e,t){const a=[];if(e.associations)for(const n in e.associations)if(e.associations[n].isMultiAssociation){if(e.associations[n].options._noTablePart)continue;if(Object.prototype.hasOwnProperty.call(t,n)){let t=e.associations[n].target;a.push({model:t,as:n})}}if(t.addInclude)for(const e of t.addInclude){const t=a.findIndex(t=>t.model===e.model);-1===t?a.push({...e}):a[t].fkField=e.fkField}return a}function b(e,t,a){for(const n in e){const r=e[n];if("object"==typeof r){const e={};for(const t in r)"inList"===t?e[o.Op.in]=r[t]:"notInList"===t?e[o.Op.notIn]=r[t]:e[o.Op[t]]=r[t];if(n.includes(".")){const t=n.split(".");a[t[0]]?a[t[0]][t[1]]=e:a[t[0]]={[t[1]]:e}}else t[n]=e}else if(n.includes(".")){const e=n.split(".");a[e[0]]?a[e[0]][e[1]]=r:a[e[0]]={[e[1]]:r}}else t[n]=r}}function w(e,t){let a=t.sortBy.split(".");if(a.length>1){const t=e.model.associations[a[0]]?.target;a[1]=t?.rawAttributes?.numberStr?"numberStr":"name"}return!0===t.sortDesc&&a.push("DESC"),a}function _(e,t,a){"appObjects"!==e.name&&"reportSettings"!==e.name&&"dataProcessors"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(a.serverModule=t.serverModule),"commonModules"===e.name&&(a.module=t.module),"appObjects"!==e.name&&"viewSettings"!==e.name&&"reportSettings"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(a.info=t.info)}t.default={async findAllItems(e,t,a,n,r={}){const l=JSON.parse(e.query?.pagination||"{}"),d=JSON.parse(e.query?.sort||"{}");let f={};e.query?.filter&&(f="string"==typeof e.query?.filter?JSON.parse(e.query?.filter):e.query?.filter);const m=e.query?.limit||null,p=e.query?.withTableParts||null;let h={},y=[];e.query?.attributes&&(h=e.query?.attributes,"string"==typeof h&&(h=JSON.parse(h))),r.attributes&&"object"==typeof r.attributes&&("object"!=typeof h||Array.isArray(h)||0!==Object.keys(h).length?"object"==typeof h&&Array.isArray(h)&&0===h.length?h=r.attributes:"object"!=typeof h||Array.isArray(h)||Array.isArray(r.attributes)?"object"==typeof h&&Array.isArray(h)&&Array.isArray(r.attributes)&&(h=[...new Set([...h,...r.attributes])]):h=Object.assign(h,r.attributes):h=r.attributes),Array.isArray(h)&&(y=h.filter(e=>e.includes(".")),h=h.filter(e=>!e.includes(".")));let g=[];e.query?.extraAttributes&&(g="string"==typeof e.query?.extraAttributes?JSON.parse(e.query?.extraAttributes):e.query?.extraAttributes);let _={};if(r.filter&&(f=Object.assign(f,r.filter)),f.searchStr){const e=function(e){const t=[];for(const a in e.model.rawAttributes)e.model.rawAttributes[a]._fullSearch&&t.push(a);for(const a in e.model.associations)if(e.model.associations[a].options._fullSearch){const n=e.model.associations[a].target.rawAttributes;n.name?t.push(`$${a}.name$`):n.numberStr&&t.push(`$${a}.numberStr$`)}return t}(n);if(e.length>0)if(e.length>1){f[o.Op.or]=[];for(let t of e)f[o.Op.or].push({[t]:{[o.Op.iLike]:`%${f.searchStr}%`}})}else f[e[0]]={[o.Op.iLike]:`%${f.searchStr}%`};delete f.searchStr}f.exclude&&(f.id={[o.Op.and]:f.exclude.map(e=>({[o.Op.ne]:e}))},delete f.exclude),f.advanced&&(b(f.advanced,f,_),delete f.advanced),f.quick&&(b(f.quick,f,_),delete f.quick);for(const e in f)if(e.includes(".")){const t=e.split(".");_[t[0]]?_[t[0]][t[1]]=f[e]:_[t[0]]={[t[1]]:f[e]},delete f[e]}if("document"===n.type&&f.period){const e=f.period[0],t=(0,i.default)(f.period[1]).endOf("day").toISOString();f.date={[o.Op.between]:[e,t]},delete f.period}if("register"===n.type&&f.period){const e=f.period[0],t=f.period[1];f.period={[o.Op.between]:[e,t]}}const S=[];!function(e,t,a){if(Array.isArray(t))for(const n of t)n.sortBy&&a.push(w(e,n));else t?.sortBy&&a.push(w(e,t));e.withoutTimestamps||a.push(["createdAt","DESC"]),a.push(["id","DESC"])}(n,d,S),e.query,p&&(r.withTableParts=p);let v=c.default.prepareIncludes(n.model,r,y,_,null,g);try{let e;if(l.page){let t=l.limit,a=0+(l.page-1)*t;e=await n.model.findAndCountAll({where:f,offset:a,limit:t,attributes:h,order:S,include:v,group:r?.group||null})}else e=await n.model.findAll({where:f,attributes:h,order:S,limit:m,include:v,group:r?.group||null});if(r.resultProcessing&&(e=r.resultProcessing(e)),e)return e=JSON.parse(JSON.stringify(e)),{status:s.StatusCodes.OK,responseData:e};{const e="Items not find";return u.default.error(`Error in ${n.name} findAll controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${n.name} findAll controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findItem(e,t,a,n,r={}){const o=e.params.id;if(!o||"string"!=typeof o||36!==o.length){const e="Object id is not correct!";return u.default.error(`Error in ${n.name} findItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!1;let i={},d=[];if(e.query?.attributes&&(i=e.query.attributes,"string"==typeof i&&(i=JSON.parse(i)),Array.isArray(i)&&(d=i.filter(e=>e.includes(".")),i=i.filter(e=>!e.includes(".")))),r?.attributes&&Array.isArray(r.attributes)){const e=r.attributes.filter(e=>e.includes(".")),t=r.attributes.filter(e=>!e.includes("."));i=Object.assign(i,t),d=Object.assign(d,e)}const f=e.query?.extraAttributes;let m=[];f&&(m="string"==typeof f?JSON.parse(f):f);let p=[],g=d,b=m;for(const e in n.tables)g=g.filter(t=>!t.startsWith(`${e}.`)),b=b.filter(t=>!t.startsWith(`${e}.`));let w=c.default.prepareIncludes(n.model,r,g,null,p,b);try{let t=await n.model.findByPk(o,{include:w,order:p});if(t){t=JSON.parse(JSON.stringify(t));for(const e in n.tables){p=[];let a=d,s=m;a=a.filter(t=>t.startsWith(`${e}.`)),s=s.filter(t=>t.startsWith(`${e}.`));const o=new RegExp(`^${e}\\.`);a=a.map(e=>e.replace(o,"")),s=s.map(e=>e.replace(o,""));const i=c.default.prepareIncludes(n.tables[e].model,r,a,null,p,s);p&&n.tables[e].model.getAttributes().rowNumber&&p.push(["rowNumber","asc"]);const l=await n.tables[e].model.findAll({where:{parentId:t.id},include:i,order:p});t[e]=JSON.parse(JSON.stringify(l))}if(!0===n.configurationData){const a=e.headers["x-client-version"]||"2";await async function(e,t,a,n){if("appObjects"===e.name){delete t.serverModule;const e=`src/modules/${t.type}s/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null,"3"===n?t.moduleV3&&(t.moduleV3=y.default.AES.encrypt(t.moduleV3,a).toString()):t.module&&(t.module=y.default.AES.encrypt(t.module,a).toString()),delete t.info;const 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,"3"===n?t.moduleV3&&(t.moduleV3=y.default.AES.encrypt(t.moduleV3,a).toString()):t.module&&(t.module=y.default.AES.encrypt(t.module,a).toString()),e){const n=`src/modules/${e.type}s/${e.name}/views/${t.name}/server.module.js`;l.default.existsSync(n)&&(t.serverModule=y.default.AES.encrypt(l.default.readFileSync(n,{encoding:"utf8",flag:"r"}),a).toString());const r=`src/modules/${e.type}s/${e.name}/views/${t.name}/view.info.md`;l.default.existsSync(r)&&(t.info=l.default.readFileSync(r,{encoding:"utf8",flag:"r"}))}}else if("reportSettings"===e.name){const e=`src/modules/reports/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const n=`src/modules/reports/${t.name}/report.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("dataProcessors"===e.name){const e=`src/modules/dataProcessors/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null}else if("scheduledJobs"===e.name){const e=`src/modules/scheduledJobs/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const n=`src/modules/scheduledJobs/${t.name}/job.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("restApi"===e.name){const e=`src/modules/restApi/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const n=`src/modules/restApi/${t.name}/api.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("commonModules"===e.name){const e=`src/modules/commonModules/${t.name}.js`;l.default.existsSync(e)?t.module=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.module=null}}(n,t,e.user?.id,a)}return{status:s.StatusCodes.OK,responseData:t}}{const e=`${n.name} with id ${o} not found`;return u.default.error(`Error in ${n.name} findByPk controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${n.name} findByPk controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findOne(e,t,a,n,r={}){const o=e.params.whereCondition;if(!o){const e="Erron in findOne query parameters!";return u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!0;const i=c.default.prepareIncludes(n.model,r);return await n.model.findOne({where:o,include:i}).then(e=>{if(e)return{status:s.StatusCodes.OK,responseData:e};{const e=`${n.name} not found`;return u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async findPredefinedItem(e,t,a,n,r={}){const o=e.params.name;if(!o||"string"!=typeof o){const e="Object predefined name is not correct!";return u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!0;let i=c.default.prepareIncludes(n.model,r);return await n.model.findOne({where:{predefinedName:o},include:i}).then(e=>{if(e)return{status:s.StatusCodes.OK,responseData:e};{const e=`${n.name} with predefinedName ${o} is not found`;return u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async createItem(e,t,a,n,o={},i=void 0){const l=o?.objectData?o.objectData:{...e.body};l.id||(l.id=(0,r.v4)()),delete l.presentation;const c=g(n.model,l),f=o.transaction?o.transaction:await n.model.sequelize.transaction();try{"document"===n.type&&await d.default.setNumber(n,l,f);const a=await n.model.create(l,{include:c,transaction:f});return a?(f.afterCommit(()=>{if(!0===n.configurationData){const e={objectId:a.id,event:"create",newValue:a};_(n,l,e),m.default.updateInitialData(n.model,n.path,e)}else Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n);p.default.onChangeHandler(n.model,a.id,"create",e.user?.id)}),i&&"function"==typeof i&&await i(e,t,a,f),o.transaction||await f.commit(),{status:s.StatusCodes.OK,responseData:a}):{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Object is not created"}}}catch(e){return o.transaction||await f.rollback(),u.default.error(`Error in ${n.name} createItem controller`,{meta:`${n.name} is not created. ${e}`}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async updateItem(e,t,a,n,r={},o=void 0){let i="";const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length)return i="Object id is not correct!",u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:i}};const c=r.objectData?r.objectData:{...e.body};delete c.presentation;const d=r.transaction?r.transaction:await n.model.sequelize.transaction();let f=await n.model.findByPk(l,{transaction:d});if(!f)return r.transaction||await d.rollback(),i=`${n.name} with uuid ${l} not found`,u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:i}};const h=JSON.parse(JSON.stringify(f));for(const e in n.tables){const t=await n.tables[e].model.findAll({where:{parentId:f.id}});h[e]=JSON.parse(JSON.stringify(t))}try{if(!r.noVersionCheck){if(!c.updatedAt)return i="The data version not defined",u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:i}};const e=new Date(c.updatedAt);if(f.updatedAt>e)return i="The data version is less than the existing one in the database",u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:i}}}const a=await f.update(c,{transaction:d});if(!a)return{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Item is not updated"}};const y=g(n.model,c);if(y.length>0){const e=f.id;for(const t of y)if(Object.prototype.hasOwnProperty.call(c,t.as)){let a="parentId";t.fkField&&(a=t.fkField),await t.model.destroy({where:{[a]:e},transaction:d});const n=[];for(const a of c[t.as]){const r={...a};t.fkField||(r.parentId=e),n.push(r)}await t.model.bulkCreate(n,{transaction:d})}}return o&&"function"==typeof o&&await o(e,t,a,h,d),d.afterCommit(()=>{if(!0===n.configurationData){const e={objectId:a.id,event:"update",oldValue:h,newValue:a};_(n,c,e),m.default.updateInitialData(n.model,n.path,e)}else Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n);p.default.onChangeHandler(n.model,l,"update",e.user?.id)}),r.transaction||await d.commit(),{status:s.StatusCodes.OK,responseData:a}}catch(e){return r.transaction||await d.rollback(),u.default.error(`Error in ${n.name} updateItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async confirmItem(e,t,a,n,r={}){const o=e.body.id,i=e.body.isConfirmed,l=n.name,c=r.recordsSet||{},d=r.transaction?r.transaction:await n.model.sequelize.transaction();try{for(const t of Object.keys(c)){const a=e.objects[t];if(a&&n.model.associations[t]){let n=await a.model.findAll({where:{recorderId:o,recorderType:l}});n=JSON.parse(JSON.stringify(n)),await a.model.destroy({where:{recorderId:o,recorderType:l},transaction:d});for(const e of c[t])await a.model.create(e,{transaction:d});await f.default.updateTotals(a,{objects:e.objects,recordsBefore:n,recordsAfter:c[t],recorderId:o,recorderType:l,transaction:d})}}return!1===i&&(await n.model.update({isConfirmed:!0,markedToDelete:!1},{where:{id:e.body.id},transaction:d}),d.afterCommit(()=>{p.default.onChangeHandler(n.model,e.body.id,"confirm",e.user?.id)})),r.transaction||await d.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return r.transaction||await d.rollback(),u.default.error(`Error in ${n.name} confirmItem controller`,{meta:`${n.name} is not confirmed. ${e}`}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async undoConfirmItem(e,t,a,n,r={}){const o=e.body.id,i=n.name,l=r.transaction?r.transaction:await n.model.sequelize.transaction();try{for(const t of Object.keys(n.model.associations))if(n.model.associations[t].options._registerRecords){const a=e.objects?.[t];if(a){let t=await a.model.findAll({where:{recorderId:o,recorderType:i}});t=JSON.parse(JSON.stringify(t));const n=a.model;await n.destroy({where:{recorderId:o,recorderType:i},transaction:l}),await f.default.updateTotals(a,{objects:e.objects,recordsBefore:t,recordsAfter:[],recorderId:o,recorderType:i,transaction:l})}}return await n.model.update({isConfirmed:!1},{where:{id:e.body.id},transaction:l}),l.afterCommit(()=>{p.default.onChangeHandler(n.model,e.body.id,"undoConfirm",e.user?.id)}),r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return u.default.error(`Error in ${n.name} undoConfirmItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async deleteItem(e,t,a,n,r={},o){const i=e.params.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=r.transaction?r.transaction:await n.model.sequelize.transaction(),c=await n.model.findByPk(i);if(!c){r.transaction||await l.rollback();const e=`${n.name} with uuid ${i} not found`;return u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}try{return await c.destroy({where:{id:i},cascade:!0,transaction:l}),l.afterCommit(()=>{!0===n.configurationData?m.default.updateInitialData(n.model,n.path,{objectId:c.id,event:"delete",oldValue:c}):Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n)}),o&&"function"==typeof o&&o(e,t,c,l),r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return r.transaction||await l.rollback(),u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async changeItemDeletionMark(e,t,a,n,r={},o=void 0){const i=e.body.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=r.transaction?r.transaction:await n.model.sequelize.transaction(),c=await n.model.findByPk(i);if(!c){r.transaction||await l.rollback();const e=`${n.name} with uuid ${i} not found`;return u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}const d={markedToDelete:!c.markedToDelete};try{const a=JSON.parse(JSON.stringify(c)),u=await c.update(d,{transaction:l});if(o&&"function"==typeof o&&await o(e,t,u,a,l),l.afterCommit(()=>{!0===n.configurationData?m.default.updateInitialData(n.model,n.path,{objectId:u.id,event:"update",oldValue:a,newValue:u,changeDeletionMark:!0}):Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n),p.default.onChangeHandler(n.model,i,"update",e.user?.id)}),"document"===n.type&&c.isConfirmed){for(const e of Object.keys(n.model.associations))if(n.model.associations[e].options._registerRecords){const t=n.model.associations[e].target;await t.destroy({where:{recorderId:i},transaction:l})}await n.model.update({isConfirmed:!1},{where:{id:i},transaction:l})}return r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:u}}catch(e){return r.transaction||await l.rollback(),u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},calculateRegisterTotals:async(e,t,a,n)=>(await f.default.calculateTotals(n,e.objects),{status:s.StatusCodes.OK,responseData:{message:"OK"}})}},4139:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(6797)),o=r.default.Router();o.get("/",function(e,t,a){t.render("index",{title:"SYNERGY Server"})}),o.use(s.default.isAuthenticated),t.default=o},4469:e=>{e.exports=require("dotenv/config")},4621:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(7138),s=n(a(5788)),o=n(a(2282));function i(e,t,a){switch(t){case"number":e.valueNumber=a;break;case"string":case"text":e.valueString=a;break;case"date":e.valueDate=a;break;case"boolean":e.valueBoolean=a;break;case"object":e.valueRef=a}}t.default={async getSetting(e){const t={value:null,message:"",status:null};if(!e)return t.status=r.StatusCodes.BAD_REQUEST,t.message="Bad incoming parameters.",t;try{const a=await s.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!a)return t.status=r.StatusCodes.BAD_REQUEST,t.message="App setting is not found.",t;const n=await s.default.models.AppSetting.findOne({where:{appSettingItemId:a.id}});if(n)t.value=function(e,t){switch(e){case"number":return t.valueNumber;case"string":case"text":return t.valueString;case"date":return t.valueDate;case"boolean":return t.valueBoolean;case"object":case"enum":return t.valueRef;default:return null}}(a.valueType,n),t.status=r.StatusCodes.OK;else{const e=function(e){switch(e.valueType){case"number":return 0;case"string":case"text":return"";case"date":case"object":case"enum":default:return null;case"boolean":return!1}}(a);t.status=r.StatusCodes.OK,t.value=e}}catch(e){o.default.error("Error in App getSetting controller",{meta:e}),t.status=r.StatusCodes.INTERNAL_SERVER_ERROR,t.message="Internal server error."}return t},async setSetting(e,t){const a={value:null,message:"",status:null};if(!e)return a.status=r.StatusCodes.BAD_REQUEST,a.message="Bad incoming parameters.",a;try{const n=await s.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!n)return a.status=r.StatusCodes.BAD_REQUEST,a.message="App setting is not found.",a;const o=await s.default.models.AppSetting.findOne({where:{appSettingItemId:n.id}});if(o){const e={};i(e,n.valueType,t);const s=await o.update(e);a.status=r.StatusCodes.OK,a.value=s}else{const e={appSettingItemId:n.id};i(e,n.valueType,t);const o=await s.default.models.AppSetting.create(e);a.status=r.StatusCodes.OK,a.value=o}}catch(e){o.default.error("Error in App setSetting controller",{meta:e}),a.status=r.StatusCodes.INTERNAL_SERVER_ERROR,a.message="Internal server error."}return a}}},4716:e=>{e.exports=require("moment")},5124:e=>{e.exports=require("winston")},5379:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(9896));t.default={async initSubscriptions(e){const t=`\n SELECT\n event_subscriptions.id AS "id",\n event_subscriptions.name AS "name",\n event_subscriptions."execSide" AS "execSide",\n event_subscriptions."objectType" AS "objectType",\n event_subscriptions.event AS "event",\n event_subscriptions."serviceFunction" AS "serviceFunctionPath",\n subscription_objects."objectId" AS "objectId"\n FROM \n event_subscriptions\n LEFT JOIN \n event_subscriptions_event_objects as "subscription_objects"\n ON \n subscription_objects."parentId" = event_subscriptions.id \n WHERE\n event_subscriptions."markedToDelete" = false\n AND event_subscriptions."execSide" = '${e}'`;try{const a=(await s.default.query(t,{type:r.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({name:t.name,execSide:t.execSide,objectType:t.objectType,event:t.event,serviceFunctionPath:t.serviceFunctionPath,objects:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[]);if("server"===e)for(const e of a)if(e.serviceFunctionPath){const t=e.serviceFunctionPath.split(".");if(2!==t.length){e.serviceFunction=void 0;continue}const a=t[0],n=t[1],r=`${process.cwd()}/src/modules/commonModules/${a}.js`;let s;o.default.existsSync(r)&&(s=require(r),s?.[n]&&(e.serviceFunction=s[n]))}return a}catch(e){return console.error(e),[]}},getSubscription:(e,t,a,n)=>e.find(e=>e.event===t&&e.objectType===a&&(0===e.objects.length||e.objects.includes(n)))}},5483:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(1688)),o=n(a(3786)),i=n(a(6224)),l=r.default.Router();function u(e={httpMethod:"GET"},t){let a;const n={};return e.userRole?n.id=e.userRole:t.accessRoleId?n.id=t.accessRoleId:n.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?s.default.canRead(n):"CAN_MODIFY"===e.accessLevel?s.default.canModify(n):"IS_AUTH"===e.accessLevel?s.default.isAuth:s.default.isFullRights:!0===t.system?"GET"===e.httpMethod?s.default.isAuth:s.default.isFullRights:"GET"===e.httpMethod?s.default.canRead(n):s.default.canModify(n),a}t.default=async()=>{const e=await(0,i.default)();for(const t of Object.values(e)){if(t.api)for(const e of t.api)e.controller?t.controllers[e.controller]?l[e.httpMethod.toLowerCase()](`/${t.path}/${e.path}`,u(e,t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.controllers[e.controller]):console.error("API controller is not exist: ",t.name,e.controller):console.error("API controller is not set for object: ",t.name);"register"===t.type&&(t.accumulationRegister&&l.post(`/${t.path}/calculate_totals`,u(t.staticAPI.calculateTotals||{httpMethod:"POST"},t),t.calculateTotals),"dataProcessors"===t.name&&(l.post(`/${t.path}/execute_processing`,u(t.staticAPI.executeProcessing||{httpMethod:"POST"},t),t.executeProcessing),l.get(`/${t.path}/export/:id`,u(t.staticAPI.exportProcessor||{httpMethod:"POST"},t),t.exportProcessor),l.post(`/${t.path}/import`,u(t.staticAPI.importProcessor||{httpMethod:"POST"},t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.importProcessor))),"catalog"===t.type&&("appObjects"===t.name?(l.post(`/${t.path}/execute_migration`,u(t.staticAPI.executeMigration||{httpMethod:"POST"},t),t.executeMigration),l.post(`/${t.path}/exist_migrations`,u(t.staticAPI.existMigrations||{httpMethod:"POST"},t),t.existMigrations)):"scheduledJobs"===t.name&&l.post(`/${t.path}/execute_manually`,u(t.staticAPI.executeManually||{httpMethod:"POST"},t),t.executeManually)),!0!==t.staticAPI.findAll?.disabled&&l.get(`/${t.path}`,u(t.staticAPI.findAll||{httpMethod:"GET"},t),t.findAll),!0!==t.staticAPI.findById?.disabled&&l.get(`/${t.path}/:id`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findById),!0!==t.staticAPI.create?.disabled&&l.post(`/${t.path}`,u(t.staticAPI.create||{httpMethod:"POST"},t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.create),!0!==t.staticAPI.update?.disabled&&l.put(`/${t.path}/:id`,u(t.staticAPI.update||{httpMethod:"PUT"},t),t.update),!0!==t.staticAPI.delete?.disabled&&l.delete(`/${t.path}/:id`,u(t.staticAPI.delete||{httpMethod:"DELETE"},t),t.delete),"catalog"===t.type&&l.get(`/${t.path}/predefined/:name`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findPredefined),"catalog"!==t.type&&"document"!==t.type||!0===t.staticAPI.changeDeletionMark?.disabled||l.post(`/${t.path}/change_deletion_mark`,u(t.staticAPI.changeDeletionMark||{httpMethod:"POST"},t),t.changeDeletionMark),"document"===t.type&&(!0!==t.staticAPI.confirm?.disabled&&l.put(`/${t.path}/confirm/:id`,u(t.staticAPI.confirm||{httpMethod:"PUT"},t),t.confirm),!0!==t.staticAPI.undoConfirm?.disabled&&l.put(`/${t.path}/undo_confirm/:id`,u(t.staticAPI.undoConfirm||{httpMethod:"PUT"},t),t.undoConfirm))}return{router:l,objects:e}}},5486:e=>{e.exports=require("bcrypt")},5560:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5483)),s=n(a(360));t.default=async e=>{const{router:t,objects:a}=await(0,r.default)();e.use((e,t,n)=>{e.objects=a,n()}),e.locals.objects=a,e.use(t);const n=await s.default.initRoutes();return e.use(n),{router:t,objects:a}}},5788:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=a(3903),o=n(a(6788)),i=new r.Sequelize(o.default.dbName,o.default.dbUser,o.default.dbPassword,{dialect:o.default.dbDialect,host:o.default.dbHost,port:o.default.dbPort,logging:!1,pool:{max:150},define:{hooks:{beforeValidate:(e,t)=>{null===e.dataValues.id&&(e.dataValues.id=(0,s.v4)())}}}});t.default=i},5977:e=>{e.exports=require("express-session")},6224:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7173)),s=n(a(3958)),o=n(a(2562)),i=n(a(3464)),l=n(a(6910)),u=n(a(5379)),c=n(a(6836)),d=n(a(9896)),f=a(7138),m=n(a(2282));function p(e,t,a){if(t.fields.find(e=>!0===e.password)){const n=a.objectData?a.objectData:{...e.body};for(const e of t.fields.filter(e=>!0===e.password))if(""===n[e.name])n[e.name]=null;else if(n[e.name])if(e.decryptable){const t=c.default.encrypt(n[e.name]);n[e.name]=JSON.stringify(t)}else n[e.name]=c.default.createPasswordHash(n[e.name]);a.objectData=n}}t.default=async()=>{const e=await(0,r.default)(),t=await u.default.initSubscriptions("server");for(const a in e){let n;const r=`${e[a].type}s/${a}/server.module.js`,c=`${process.cwd()}/src/modules/${r}`;if(d.default.existsSync(c)&&(n=require(c)),e[a].findAll=async(r,o,i)=>{let l=null;if(n?.findAll)l=await n.findAll(r,o,i,e[a]);else{const c={};n?.beforeFindAll&&await n.beforeFindAll(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindAll",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),l=await s.default.findAllItems(r,o,i,e[a],c),n?.afterFindAll&&await n.afterFindAll(r,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindAll",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,o,i,e[a],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${a} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[a].findById=async(r,o,i)=>{let l=null;if(n?.findById)l=await n.findById(r,o,i,e[a]);else{const c={};n?.beforeFindById&&await n.beforeFindById(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindById",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),l=await s.default.findItem(r,o,i,e[a],c),n?.afterFindById&&await n.afterFindById(r,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindById",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,o,i,e[a],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${a} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[a].create=async(r,o,i)=>{if(n?.create)return await n.create(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{n?.beforeCreate&&"function"==typeof n?.beforeCreate&&await n.beforeCreate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeCreate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(r,s,o,l)=>{n?.afterCreate&&"function"==typeof n?.afterCreate&&await n.afterCreate(r,s,i,e[a],{newItem:o,transaction:l});const c=u.default.getSubscription(t,"afterCreate",e[a].type,e[a].id);c?.serviceFunction&&await(c?.serviceFunction(r,s,i,e[a],{newItem:o,transaction:l}))};p(r,e[a],c);const h=await s.default.createItem(r,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return r.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==r.body?.isConfirmed)return r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,o,i,e[a],y,c);const g=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(g?.serviceFunction&&await(g?.serviceFunction(r,o,i,e[a],y,c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await s.default.confirmItem(r,o,i,e[a],{recordsSet:y,...c});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(r,o,i,e[a],c)),b.status===f.StatusCodes.OK?(r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(r.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[a].update=async(r,o,i)=>{if(n?.update)return await n.update(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{n?.beforeUpdate&&"function"==typeof n?.beforeUpdate&&await n.beforeUpdate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(r,s,o,l,c)=>{n?.afterUpdate&&"function"==typeof n?.afterUpdate&&await n.afterUpdate(r,s,i,e[a],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1});const d=u.default.getSubscription(t,"afterUpdate",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,s,i,e[a],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1}))};p(r,e[a],c);const h=await s.default.updateItem(r,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return r.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==r.body?.isConfirmed)return r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,o,i,e[a],y,c);const g=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(g?.serviceFunction&&await(g?.serviceFunction(r,o,i,e[a],y,c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await s.default.confirmItem(r,o,i,e[a],{recordsSet:y,...c});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(r,o,i,e[a],c)),b.status===f.StatusCodes.OK?(r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(r.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[a].delete=async(r,o,i)=>{if(n?.delete)return await n.delete(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={transaction:l};try{n?.beforeDelete&&"function"==typeof n?.beforeDelete&&await n.beforeDelete(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c));const m=async(r,s,o,l)=>{n?.afterDelete&&"function"==typeof n?.afterDelete&&n.afterDelete(r,s,i,e[a],{deletedObject:o,...c});const d=u.default.getSubscription(t,"afterDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,s,i,e[a],{deletedObject:o,...c}))},p=await s.default.deleteItem(r,o,i,e[a],c,m);return r.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},"catalog"===e[a].type&&(e[a].findPredefined=async(t,n,r)=>{const o=await s.default.findPredefinedItem(t,n,r,e[a]);return n?n.status(o.status).send(o.responseData):o}),"catalog"!==e[a].type&&"document"!==e[a].type||(e[a].changeDeletionMark=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={transaction:l,changeDeletionMark:!0};try{n?.beforeUpdate&&"function"==typeof n?.beforeUpdate&&await n.beforeUpdate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c));const m=async(r,s,o,l,d)=>{n?.afterUpdate&&"function"==typeof n?.afterUpdate&&await n.afterUpdate(r,s,i,e[a],{updatedObject:o,existObject:l,...c});const f=u.default.getSubscription(t,"afterUpdate",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,s,i,e[a],{updatedObject:o,existObject:l,...c}))},p=await s.default.changeItemDeletionMark(r,o,i,e[a],c,m);return r.transaction||(p?.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),"register"===e[a].type&&(e[a].accumulationRegister&&(e[a].calculateTotals=async(t,n,r)=>{const o=await s.default.calculateRegisterTotals(t,n,r,e[a]);return n?n.status(o.status).send(o.responseData):o}),"dataProcessors"===a&&(e[a].executeProcessing=async(t,n,r)=>{const s=await o.default.executeProcessing(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s},e[a].exportProcessor=async(t,n,r)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.exportProcessor(t,n,r,e[a])},e[a].importProcessor=async(t,n,r)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.importProcessor(t,n,r,e[a])})),"catalog"===e[a].type&&("appObjects"===a?(e[a].executeMigration=async(t,n,r)=>{try{const s=await l.default.executeMigrations(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s}catch(e){return m.default.error("Error in executeMigration controller",{meta:e}),n.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}},e[a].existMigrations=async(t,n,r)=>{try{const s=await l.default.existMigrations(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s}catch(e){return m.default.error("Error in existMigrations controller",{meta:e}),n.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}}):"scheduledJobs"===a&&(e[a].executeManually=async(t,n,r)=>{const s=await i.default.executeManually(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s})),"document"===e[a].type&&(e[a].confirm=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={},d={cancel:!1,transaction:l};try{const m=await e[a].findById({params:{id:r.body.id}});m.status===f.StatusCodes.OK&&(r.body=JSON.parse(JSON.stringify(m.responseData))),n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,o,i,e[a],c,d);const p=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(p?.serviceFunction&&await(p?.serviceFunction(r,o,i,e[a],c,d)),d.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:d.message?d.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const h=await s.default.confirmItem(r,o,i,e[a],{recordsSet:c,...d});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],d);const y=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return y?.serviceFunction&&await(y?.serviceFunction(r,o,i,e[a],d)),r.transaction||(h.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(h.status).send(h.responseData):h}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}},e[a].undoConfirm=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{const d=await e[a].findById({params:{id:r.body.id}});d.status===f.StatusCodes.OK&&(r.body=JSON.parse(JSON.stringify(d.responseData))),n?.undoConfirm&&"function"==typeof n?.undoConfirm&&await n.undoConfirm(r,o,i,e[a],c);const m=u.default.getSubscription(t,"undoConfirm",e[a].type,e[a].id);if(m?.serviceFunction&&await(m?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const p=await s.default.undoConfirmItem(r,o,i,e[a],c);return r.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),e[a].api&&n)for(const t of e[a].api)n[t.controller]&&(e[a].controllers[t.controller]=async(r,s,o)=>{n[t.controller](r,s,o,e[a])})}return e}},6261:e=>{e.exports=require("events")},6299:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(2282)),o=n(a(4716)),i=a(3903);function l(e,t,a){for(const t of e){for(const e of a)t[e]="expense"===t.recordType?-1*parseFloat(t[e]):parseFloat(t[e]);t.period=u(t.period)}return function(e,t,a){const n={};return e.forEach(e=>{const r=t.map(t=>e[t]).join("|");n[r]||(n[r]={},t.forEach(t=>{n[r][t]=void 0===e[t]?null:e[t]}),a.forEach(e=>{n[r][e]=0})),a.forEach(t=>{n[r][t]+=e[t]})}),Object.values(n)}(e,t,a)}function u(e){return(0,o.default)(e).add(1,"months").startOf("month").toDate()}t.default={async updateTotals(e,t){if(!e.accumulationRegister)return;const a=e.accTable;if(a){const n=await this.getCalculatedPeriod(t.objects.registersCalculation,e.id);if(!n)return;const u=a.dimensions.map(e=>e.dbName);u.push("period");const c=a.resources.map(e=>e.dbName);let d=[];t.recordsBefore.length>0&&(d=l(JSON.parse(JSON.stringify(t.recordsBefore)),u,c));let f=[];t.recordsAfter.length>0&&(f=l(JSON.parse(JSON.stringify(t.recordsAfter)),u,c));const m=function(e,t,a,n){const r={};return e.forEach(e=>{const t=a.map(t=>e[t]).join("|");r[t]||(r[t]={},a.forEach(a=>{r[t][a]=e[a]}),n.forEach(e=>{r[t][e]=0})),n.forEach(a=>{r[t][a]-=parseFloat(e[a])})}),t.forEach(e=>{const t=a.map(t=>e[t]).join("|");r[t]||(r[t]={},a.forEach(a=>{r[t][a]=e[a]}),n.forEach(e=>{r[t][e]=0})),n.forEach(a=>{r[t][a]+=parseFloat(e[a])})}),Object.values(r).filter(e=>n.some(t=>0!==e[t]))}(d,f,u,c);await async function(e,t,a,n,s,l){for(const u of t){const t=[];for(let e=(0,o.default)(s.beginPeriod);e.isSameOrBefore(s.endPeriod,"month");e.add(1,"month"))e.isSameOrAfter(u.period)&&t.push(e.toDate());for(let s of t){let t={};if(a.forEach(e=>{t[e]="period"===e?s:u[e]}),await e.findOne({where:t,transaction:l})){let a={};n.forEach(e=>{a[e]=r.Sequelize.literal(`${e} + ${u[e]}`)}),await e.update(a,{where:t,transaction:l})}else{let t={id:(0,i.v4)()};a.forEach(e=>{t[e]="period"===e?s:u[e]}),n.forEach(e=>{t[e]=u[e]}),await e.create(t,{transaction:l})}}}}(a.model,m,u,c,n,t.transaction).catch(e=>{s.default.error(`Error updating records for register: ${a.name}`,{meta:e})})}},async calculateTotals(e,t){if(!e.accumulationRegister)return;const a=e.accTable;if(a){const n="period",r=a.dimensions.map(e=>e.dbName),s=a.resources.map(e=>e.dbName),l=await e.model.findAll();if(0===l.length)return void await a.model.truncate();const u=l.map(e=>{const t={};return r.forEach(a=>{t[a]=e[a]}),t[n]=(0,o.default)(e[n]).add(1,"month").startOf("month").toDate(),s.forEach(a=>{t[a]="receipt"===e.recordType?parseFloat(e[a]):-parseFloat(e[a])}),t}),c=[...new Set(u.map(e=>e[n]))].sort((e,t)=>e-t)[0],d=(0,o.default)().add(1,"month").startOf("month").toDate();let f={};await a.model.truncate();const m=await a.model.sequelize.transaction();for(let e=(0,o.default)(c);e.isSameOrBefore(d,"month");e.add(1,"month")){const t=e.toDate(),l={};u.forEach(a=>{if((0,o.default)(a[n]).isSame(e,"month")){const e=r.map(e=>a[e]).join("_");l[e]?s.forEach(t=>{l[e][t]+=a[t]}):l[e]={...a,period:t,id:(0,i.v4)()}}}),Object.keys(f).length>0&&Object.keys(f).forEach(e=>{l[e]?s.forEach(t=>{l[e][t]+=parseFloat(f[e][t])}):l[e]={...f[e],period:t,id:(0,i.v4)()}});const c=Object.values(l).map(e=>(s.forEach(t=>{e[t]=e[t].toString()}),e));f=JSON.parse(JSON.stringify(l)),await a.model.bulkCreate(c,{ignoreDuplicates:!0,transaction:m})}await this.updateCalculatedPeriod(t.registersCalculation,{registerId:e.id,beginPeriod:c,endPeriod:d},m),await m.commit()}},getCalculatedPeriod:async(e,t)=>await e.model.findOne({where:{registerId:t}}),async updateCalculatedPeriod(e,t,a){const n=await e.model.findOne({where:{registerId:t.registerId},transaction:a});n?await n.update({beginPeriod:t.beginPeriod,endPeriod:t.endPeriod},{where:{registerId:t.registerId},transaction:a}):await e.model.create({id:(0,i.v4)(),...t},{transaction:a})}}},6304:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const dbConnection_1=__importDefault(__webpack_require__(5788)),sequelize_1=__webpack_require__(9031),http_status_codes_1=__webpack_require__(7138),node_sql_parser_1=__webpack_require__(7135),logger_service_1=__importDefault(__webpack_require__(2282)),sequelize_2=__webpack_require__(9031),fs_1=__importDefault(__webpack_require__(9896)),fs_2=__webpack_require__(9896),path_1=__importDefault(__webpack_require__(6928)),crypto_js_1=__importDefault(__webpack_require__(2103)),terser_1=__webpack_require__(9239),eventSubscription_service_1=__importDefault(__webpack_require__(5379)),commonCommands_service_1=__importDefault(__webpack_require__(7501)),packagePath=path_1.default.resolve(process.cwd(),"package.json");if(!fs_1.default.existsSync(packagePath))throw new Error(`native package.json not found at ${packagePath}`);const serverPackage=require(packagePath),app_service_1=__importDefault(__webpack_require__(4621)),common_service_1=__importDefault(__webpack_require__(2555)),userAccess_service_1=__importDefault(__webpack_require__(1691));async function getSubordinationTree(e,t){const a=[];let n=await getParentObjectsArray(e,t);const r=await getRelated(e,t);if(n.length>1&&1===n[n.length-1].length&&n.pop(),r.parents.length>0){1===n.length&&1===n[0].length&&(n=r.parents);for(const e of r.parents)n.push(e)}async function s(e,t){const a=e.subordination.filter(e=>!e.isParent),n={objectId:t.id,objectType:e.name,text:t.presentation,markedToDelete:t.markedToDelete,icon:!0===t.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]};for(const e of a)if(e.isTablePart){const a=await dbConnection_1.default.models[e.model].findAll({where:{parentId:t.id}}),r=e.childs.filter(e=>!e.isParent&&e.isActive);for(const e of r)for(const t of a){const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),r=t[e.path];if(r&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:r}});e&&n.children.push(await s(a,e))}}}else{const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),r=t[e.path];if(r&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:r}});e&&n.children.push(await s(a,e))}}return n}const o=await s(e,t);if(o.disabled=!0,r.children.length>0)for(const e of r.children)o.children.push(await s(e.appObject,e.object));for(const e of n){let t=null,n={};if(e.length>1)for(let a=e.length-2;a>=0;a--)n={objectId:e[a].object.id,objectType:e[a].objectType,text:e[a].object.presentation,markedToDelete:e[a].object.markedToDelete,icon:!0===e[a].object.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]},t?(n.children.push(t),t=n):(n.children.push(o),t=n);else t=o;t&&a.push(t)}return a}async function getParentObjectsArray(e,t){let a=[];await async function e(t,n,r=[]){const s=[{object:n,objectType:t.name},...r],o=t.subordination.filter(e=>e.isParent);if(o.length>0){for(const t of o)if(t.isParent)if(t.isTablePart){const e=await dbConnection_1.default.models[t.model].findAll({where:{parentId:n.id}}),a=t.childs.filter(e=>!e.isParent&&e.isActive);for(const t of a)for(const a of e){const e=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),n=a[t.path];if(n&&e){const t=await dbConnection_1.default.models[e.model].findOne({where:{id:n}});t&&t.children.push(await this.createChildObjectTree(e,t))}}}else{const n=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),r=s[0].object[t.path];if(r&&n){const t=await dbConnection_1.default.models[n.model].findOne({where:{id:r}});t&&await e(n,t,s)}else a.push(s)}}else a.push(s)}(e,t);for(let e=0;e<a.length;e++){const t=a[e],n=a.filter(e=>e[0]===t[0]);n.length>1&&a.splice(e+1,n.length-1)}return a}async function getRelated(e,t){const a=await dbConnection_1.default.models.AppObject.findAll({where:{subordination:{[sequelize_2.Op.not]:null,[sequelize_2.Op.ne]:"[]"},model:{[sequelize_2.Op.ne]:e.model}}});let n,r,s={parents:[],children:[]};if(a.length>0)for(const o of a){n=o,r=[];let a=!1;for(const n of o.subordination)if(n.isTablePart){for(const s of n.childs)if(s.model===e.model&&(r=await dbConnection_1.default.models[o.model].findAll({where:{[s.path]:t.id}}),r.length>0)){a=s.isParent;break}if(r.length>0)break}else if(n.model===e.model&&(r=await dbConnection_1.default.models[o.model].findAll({where:{[n.path]:t.id}}),r.length>0)){a=n.isParent;break}if(r.length>0)for(const o of r)if(a)s.children.push({appObject:n,object:o});else{const a=await getParentObjectsArray(n,o);for(const n of a)n.push({object:t,objectType:e.name}),s.parents.push(n)}}return s}function getModelsByTableNames(e){const t=[];for(const a of e){let e=dbConnection_1.default.modelManager.models.find(e=>e.tableName===a);if(!e)throw new Error(`Table "${a}" not found!`);t.push({tableName:a,model:e.name})}return t}function assembleAttrib(e,t){let a={name:t,type:e.type.key,allowNull:e.allowNull,defaultValue:e.defaultValue};return"STRING"===a.type&&(a.maxLength=e.type.options?.length||null),"DECIMAL"===a.type&&(a.typeOptions=e.type.options||null),"ENUM"===a.type&&(a.values=e.values,a.ref=e._ref),"VIRTUAL"===a.type&&(e._sortBy?a.sortBy=e._sortBy:a.sortBy="createdAt"),a}async function hasModelAccess(e,t){t.user;const a=await dbConnection_1.default.models.AppObject.findAll({where:{model:e.map(e=>e.model)},attributes:["model","name","accessRoleId"]});for(const t of e){const e=a.find(e=>e.model===t.model);if(!e)throw new Error(`App object for table "${t.tableName}" is not exist.`);if(!e.accessRoleId)throw new Error(`Access role for app object "${e.name}" is not set.`);t.objectName=e.name,t.accessRoleId=e.accessRoleId}return e.map(e=>e.accessRoleId),!0}async function initObjectClientModule(e,t){if(!e)return e;const a=`function main() { return ${e.replace(/^\s*export\s+default\s+/,"")}}`,n=await(0,terser_1.minify)(a);return crypto_js_1.default.AES.encrypt(n.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),t).toString()}exports.default={async getAppInfo(e,t,a){const n={appName:"SynergyCore",company:"INTELEKTSOFT",serverVersion:serverPackage?.version||"0.0.0"};t.status(200).send(n)},async getObjectMetadata(e,t,a){const{objectType:n,tableName:r}=e.query,s=JSON.parse(e.query.withTableParts||"false");let o;if(n?o=dbConnection_1.default.models[n]:Object.keys(dbConnection_1.default.models).forEach(e=>{dbConnection_1.default.models[e].getTableName()===r&&(o=dbConnection_1.default.models[e])}),!o)return console.error("Model not found: ",n),void t.status(400).send({message:"Model not found"});let i=[],l=[],u=[];Object.keys(o.associations).forEach(e=>{const t=o.associations[e];if(!0===t.isMultiAssociation)return;const a={name:e,foreignKey:t.foreignKey,ref:"",modelName:t.target.name};if(Object.prototype.hasOwnProperty.call(t.target,"options"))if(t.target.options.namespace)a.ref=t.target.options.namespace;else{const e=t.target.options.name.plural;a.ref=e.charAt(0).toLowerCase()+e.slice(1)}const n=t.target.rawAttributes;n.presentation?._sortBy?a.sortBy=n.presentation._sortBy:a.sortBy="createdAt",!1===t.options.constraints?u.push(a):l.push(a)});const c=[];for(let e in o.getAttributes()){if(c.includes(e))continue;let t,a=assembleAttrib(o.getAttributes()[e],e);if(t=l.find(t=>t.foreignKey===e),t||(t=u.filter(t=>t.foreignKey===e),0===t.length&&(t=void 0)),t){if(Array.isArray(t)){const n=e.endsWith("Id")?e.slice(0,-2):e,r=n+"Type";let s=i.find(e=>e.name===r);if(s){const e=i.findIndex(e=>e===s);i.splice(e,1)}else c.push(r);for(const s of t){const t=i.findIndex(e=>e.name===n);-1!==t?(i[t].ref.push(s.ref),i[t].model.push(s.modelName)):(a.name=n,a.ref=[s.ref],a.model=[s.modelName],a.fieldPath=e,a.fieldTypePath=r,a.multiType=!0,a.sortBy=s.sortBy,i.push(a))}continue}a.name=t.name,a.ref=t.ref,a.model=t.modelName,a.fieldPath=e,a.sortBy=t.sortBy}i.push(a)}if(s)for(const e in o.associations){const t=o.associations[e];if(!0===t.isMultiAssociation){if(t.options._noTablePart)continue;let a={name:e,type:"tablePart",model:o.associations[e].target?.name};i.push(a)}}t.status(200).send(i)},async getObjectFields(e,t,a){const{objectName:n}=e.query,r=JSON.parse(e.query.withTableParts||"false"),s=await dbConnection_1.default.models.AppObject.findOne({where:{name:n}});if(!s)return void t.status(404).send({message:"Object not found"});let o=s.dbFields;r||(o=o.filter(e=>!e.isTablePart)),t.status(200).send(o)},async getSubordination(e,t,a){const{objectType:n,objectId:r}=e.query,s=await dbConnection_1.default.models.AppObject.findOne({where:{model:n}});if(!s)return void t.status(400).send({message:"Model not found"});const o=await dbConnection_1.default.models[s.model].findOne({where:{id:r}});if(!o)return void t.status(400).send({message:"Object not found"});const i=await getSubordinationTree(s,o);t.status(200).send(i)},async getObjects(e,t,a){let n=[];Object.keys(dbConnection_1.default.models).forEach(e=>{const t=dbConnection_1.default.models[e];t.options.mainModel&&n.push({model:e,name:t.options.name,tableName:t.getTableName()})}),n.sort((e,t)=>e.model.toLowerCase()>t.model.toLowerCase()?1:-1),t.status(200).send(n)},async getModels(e,t,a){let n=[];Object.keys(dbConnection_1.default.models).forEach(e=>{let t=dbConnection_1.default.models[e].getTableName();n.push({model:e,tableName:t,name:dbConnection_1.default.models[e].options.name})}),t.status(200).send(n)},async getRegistersMetadata(e,t,a){const{modelName:n}=e.query;let r;if(n&&(r=dbConnection_1.default.models[n]),!r)return console.error("Model not found: ",n),void t.status(400).send({message:"Model not found"});const s=[];Object.keys(r.associations).forEach(e=>{const t=r.associations[e];if(t.options._registerRecords){const e=t.target,a=e.options.namespace?e.options.namespace:e.options.name.plural.charAt(0).toLowerCase()+e.options.name.plural.slice(1),n=Object.keys(e.rawAttributes).map(t=>e.rawAttributes[t]),r={name:a,fields:n};s.push(r)}}),t.status(200).send(s)},async getSetting(e,t,a){const n=e.query.settingName,r=await app_service_1.default.getSetting(n);r?r.status===http_status_codes_1.StatusCodes.OK?t.status(r.status).send(r.value):t.status(r.status).send({message:r.message}):t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Bad incoming parameters"})},async setSetting(e,t,a){const{settingName:n,settingValue:r}=e.body,s=await app_service_1.default.setSetting(n,r);s.status===http_status_codes_1.StatusCodes.OK?t.status(s.status).send(s.value):t.status(s.status).send({message:s.message})},async getEnums(e,t,a){const n=e.query.lang;try{const e=[];let a=await dbConnection_1.default.models.Enum.findAll({include:[{model:dbConnection_1.default.models.EnumValue,as:"values"}],order:["name"]});for(const t of a)e.push({id:t.id,name:t.name,title:common_service_1.default.translateField(t,"title",n),values:t.values.map(e=>({value:e.value,title:common_service_1.default.translateField(e,"title",n)}))});t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEnums controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getAppObjects(e,t,a){const n=e.query.lang;try{const e=[];let a=await dbConnection_1.default.models.AppObject.findAll({attributes:["id","name","lang","title","path","type","reflection"],order:["name"]});for(const t of a){let a="createdAt";t.reflection?.sortBy?a=t.reflection?.sortBy:"catalog"===t.type?a="name":"document"===t.type&&(a="numberStr"),e.push({id:t.id,name:t.name,path:t.path,type:t.type,title:common_service_1.default.translateField(t,"title",n),sortBy:a})}t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getCommonModules(e,t,a){if(e.user)try{const a={};let n=await dbConnection_1.default.models.CommonModule.findAll({where:{[sequelize_2.Op.not]:{[sequelize_2.Op.and]:[{execSide:"server"},{clientCall:!1}]}},attributes:["name","execSide","clientCall"],order:["name"]});for(const e of n){const t=`commonModules/${e.name}.js`;let n=null;const r=`${process.cwd()}/src/modules/${t}`;let s="";if("client"===e.execSide){if(!fs_1.default.existsSync(r)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}if(n=await fs_2.promises.readFile(r,"utf-8"),n){const e=/^\s*export\s+(?:async\s+)?function\s+([a-zA-Z0-9_]+)\s*\([^)]*\)\s*{[^}]*}/gm;let t;const a=[];let r=n;for(;null!==(t=e.exec(n));)a.push(t[1]),r=r.replace(t[0],t[0].replace("export ",""));s=`function main() {${r.trim()} return{${a.join(",\n ")}}}`}else s="function main() {return {}}"}else{if(!fs_1.default.existsSync(r)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}n=require(r);let t="";if(n){const e=Object.keys(n).filter(e=>"function"==typeof n[e]);for(const a of e)t+=`\nasync function ${a}(params){ \n const response = await axios.post('/app/exec-common-module',{funcPath:'commonUseServer.${a}', params})\n return response?.data || undefined\n }`;t+=`\n return {${e.join(",\n ")}}`}s=`function main() {${""===t?"return {}":t}}`}const o=await(0,terser_1.minify)(s);a[e.name]=o.code.replace(/^function main\(\)/,"")}const r=crypto_js_1.default.AES.encrypt(JSON.stringify(a),e.user.id).toString();t.status(http_status_codes_1.StatusCodes.OK).send(r)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getEventSubscriptions(e,t,a){if(e.user)try{const e=await eventSubscription_service_1.default.initSubscriptions("client");t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEventSubscriptions controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getCommonCommands(e,t,a){if(e.user)try{const a=await commonCommands_service_1.default.initCommonCommands(e.user.id);t.status(http_status_codes_1.StatusCodes.OK).send(a)}catch(e){logger_service_1.default.error("Error in app getCommonCommands controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getViewSettings(e,t,a){if(!e.user)return void t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"});const n=e.params.id;let r="";if(!n||"string"!=typeof n||36!==n.length)return r="View settings id is not correct!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:r}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:r});try{let a=await dbConnection_1.default.models.ViewSetting.findByPk(n,{include:[{model:dbConnection_1.default.models.AppObject,attributes:["name","title","presentation","type"],as:"appObject"}]});if(!a)return r="View settings not found!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:r}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:r});const s=JSON.parse(JSON.stringify(a)),o=`${process.cwd()}/src/modules/${s.appObject.type}s/${s.appObject.name}/views/${s.name}/server.module.js`;if(fs_1.default.existsSync(o)){const t=require(o);if(t){const a=Object.keys(t).filter(e=>"function"==typeof t[e]);let n="";for(const e of a)n+=`\nasync function ${e}(params){ \n const response = await axios.post('/app/exec-func', { objectFunc: 'viewSettings.${s.appObject.name}.${s.name}.${e}', params })\n return response?.data || undefined\n }`;n+=`\n return {${a.join(",\n ")}}`;const r=`function main() {${""===n?"return {}":n}}`,o=await(0,terser_1.minify)(r);s.serverModule=crypto_js_1.default.AES.encrypt(o.code.replace(/^function main\(\)/,""),e.user.id).toString()}}"3"===(e.headers["x-client-version"]||"2")?(s.moduleV3=await initObjectClientModule(s.moduleV3,e.user.id),s.module=void 0):(s.module=await initObjectClientModule(s.module,e.user.id),s.moduleV3=void 0),t.status(http_status_codes_1.StatusCodes.OK).send(s)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getClientStore(e,t,a){if(e.user)try{let a=await dbConnection_1.default.models.AppObject.findAll({where:{markedToDelete:!1,notClientAccess:!1},attributes:{exclude:["indexes","api","staticAPI"]}});const n=JSON.parse(JSON.stringify(a));for(const t of n)if("3"===(e.headers["x-client-version"]||"2")){if(t.moduleV3){t.moduleV3=`function main() { return ${t.moduleV3.replace(/^\s*export\s+default\s+/,"")}}`;const a=await(0,terser_1.minify)(t.moduleV3);t.moduleV3=crypto_js_1.default.AES.encrypt(a.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.module=void 0}else{if(t.module){t.module=`function main() { return ${t.module.replace(/^\s*export\s+default\s+/,"")}}`;const a=await(0,terser_1.minify)(t.module);t.module=crypto_js_1.default.AES.encrypt(a.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.moduleV3=void 0}t.status(http_status_codes_1.StatusCodes.OK).send(n)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async execFunc(req,res,nex){const{objectFunc,params}=req.body;try{const ObjectData=objectFunc.split("."),objectType=ObjectData[0];let objectName,viewName,funcName,object,appObject;if("viewSettings"===objectType?(objectName=ObjectData[1],viewName=ObjectData[2],funcName=ObjectData[3]):(objectName=ObjectData[1],funcName=ObjectData[2]),!funcName)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});if("appObjects"===objectType)object=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}});else if("viewSettings"===objectType){if(appObject=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}}),!appObject)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`AppObject "${objectName}" not found!`});object=await dbConnection_1.default.models.ViewSetting.findOne({where:{name:viewName,appObjectId:appObject.id}})}else"components"===objectType?object=await dbConnection_1.default.models.Component.findOne({where:{name:objectName}}):"printForms"===objectType&&(object=await dbConnection_1.default.models.PrintForm.findOne({where:{name:objectName}}));if(!object)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Object "${objectName}" id is not found!`});{let module;if("appObjects"===objectType){const e=`${object.type}s/${object.name}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for object "${object.name}" is not found!`});module=require(t)}else if("viewSettings"===objectType){const e=`${appObject.type}s/${appObject.name}/views/${viewName}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for viewSetting "${object.id}" is not found!`});module=require(t)}else module=eval(`(${object.serverModule})`);if(module){if(!module[funcName])return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${funcName}" is not found!`});const e=await module[funcName](params,req);return void res.status(http_status_codes_1.StatusCodes.OK).send(e)}}}catch(e){return logger_service_1.default.error(e),void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async execCommonModuleFunc(e,t,a){const{funcPath:n,params:r}=e.body;try{const e=n.split(".");if(2!==e.length)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Params are not correct!"});const a=e[0],s=e[1];if(!s)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});const o=`commonModules/${a}.js`;let i=null;const l=`${process.cwd()}/src/modules/${o}`;if(fs_1.default.existsSync(l)?i=require(l):(logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${a}" not found!`}),t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Common module "${a}" not found!`})),i){if(!i[s])return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${s}" is not found!`});const e=await i[s](r);return void t.status(http_status_codes_1.StatusCodes.OK).send(e)}}catch(e){return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async hasRole(e,t,a){const{role:n,accessType:r}=e.query;let s=!1,o=!1;switch(r){case"read":s=!0;break;case"modify":s=!0,o=!0}if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}if(!0===e.user?.fullRights)return void t.status(http_status_codes_1.StatusCodes.OK).send(!0);const i=e.user?.id;i?await userAccess_service_1.default.checkUserAccess(i,{key:n},s,o).then(e=>t.status(http_status_codes_1.StatusCodes.OK).send(e)).catch(e=>(logger_service_1.default.error("Error in accessRight.canRead",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e}))):t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},async rawQuery(e,t,a){const{query:n,params:r,sid:s}=e.body;if("b0c95264-07b2-4e72-b705-fee2102505d6"!==s||!n||!r){const e="Error in app.rawQuery. Bad incoming parameters";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e})}if(!e.user){const e="Error in app.rawQuery. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}try{const a=getModelsByTableNames((new node_sql_parser_1.Parser).tableList(n).map(e=>e.split("::")[2]));if(!0!==await hasModelAccess(a,e)){const e="Error in app.rawQuery. User does not have access!";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}const s=await dbConnection_1.default.query(n,{type:sequelize_1.QueryTypes.SELECT,replacements:r});return void t.status(http_status_codes_1.StatusCodes.OK).send(s[0])}catch(e){const a=`Error in app.rawQuery. ${e}`;return logger_service_1.default.error(a),void t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:a})}}}},6357:function(e,t,a){var n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(3648)),o=r(a(4716)),i=r(a(5788)),l=r(a(2282)),u=r(a(2555));function c(e,t,a){const n=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],r="#f2f5fa";for(const s of e){const e=[];let o=!0===a.hideDetails?1:a.fields.length;if(s.isGroup){if(e.push({text:m(s.groups,a),colSpan:o,borderColor:n,fillColor:s.children.length>0?r:null}),o>1)for(let t=1;t<o;t++)e.push({});if(a.colGroups.length>0){for(const t of s.totals)e.push({text:d(t.value||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"});if(a.showXTotal)for(const t of a.calcs){const a=s.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);e.push({text:d(a||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"})}}else for(const t of s.totals)e.push({text:d(t.value||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"});t.push(e),s.children.length>0&&c(s.children,t,a)}else{for(let t=0;t<a.fields.length;t++)e.push({text:f(a.fields[t],s,a),borderColor:n,alignment:a.fields[t].textAlign||"left"});if(a.colGroups.length>0){const t=s[a.colGroups[0].name],r={};for(const o of a.cols)for(let i=0;i<a.calcs.length;i++){let l=0;("object"===a.colGroups[0].valueType&&o.id===t?.id||o===t)&&(l=Number(s[a.calcs[i].name]||0)),e.push({text:d(l||0,a.calcs[i].format),borderColor:n,alignment:a.calcs[i].textAlign?a.calcs[i].textAlign:"left"}),Object.hasOwnProperty.call(r,a.calcs[i].name)?r[a.calcs[i].name]+=Number(l):r[a.calcs[i].name]=Number(l)}if(a.showXTotal)for(let t=0;t<a.calcs.length;t++){let s=r[a.calcs[t].name];e.push({text:d(s||0,a.calcs[t].format),borderColor:n,alignment:a.calcs[t].textAlign?a.calcs[t].textAlign:"left"})}}else if(a.rowGroups.length>0)for(let t=0;t<a.calcs.length;t++){let r=Number(s[a.calcs[t].name]||0);e.push({text:d(r||0,a.calcs[t].format),borderColor:n,alignment:a.calcs[t].textAlign?a.calcs[t].textAlign:"left"})}t.push(e)}}}function d(e,t){if(t){const a=JSON.parse(t||'{"NFD": 3}');a.NFD&&(e=Number(e).toFixed(a.NFD))}return e}function f(e,t,a){let n=t[e.name]||"";switch(e.valueType){case"number":{let t=parseFloat(n);if(isNaN(t)&&(t=0),n=t||0,e.format){const t=JSON.parse(e.format||'{"NFD": 3}');t.NFD&&(n=Number(n).toFixed(t.NFD))}break}case"date":default:n=n||"";break;case"object":n=n.name||"";break;case"boolean":n=Boolean(n||!1),n=n?a.lang.boolean.true:a.lang.boolean.false;break;case"enum":if(n&&e.ref){const t=a.enums[e.ref].find(e=>e.value===n);n=t?t.title:n}n=n||""}return n}function m(e,t){let a;if(1===e.length)switch(e[0].valueType){case"number":a=Number(e[0].value||0);break;case"date":a=""===e[0].value?"":e[0].format?(0,o.default)(e[0].value,e[0].format).toDate()||"":e[0].value||"";break;case"boolean":a=e[0].value||!1,a=a?t.lang.boolean.true:t.lang.boolean.false;break;case"object":a=e[0].value.name||"";break;default:a=e[0].value||""}else{let n="";for(let a=0;a<e.length;a++)"object"===e[a].valueType?n+=e[a].value?.name||t.lang.undefined:"boolean"===e[a].valueType?n+=e[a].value?t.lang.boolean.true:t.lang.boolean.false:n+=e[a].value,a<e.length-1&&(n=`${n}, `);a=n||""}return a}function p(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}t.default={async generatePdf(e,t=null){const a={...e.body},r=new s.default({Courier:{normal:"Courier",bold:"Courier-Bold",italics:"Courier-Oblique",bolditalics:"Courier-BoldOblique"},Helvetica:{normal:"Helvetica",bold:"Helvetica-Bold",italics:"Helvetica-Oblique",bolditalics:"Helvetica-BoldOblique"},Times:{normal:"Times-Roman",bold:"Times-Bold",italics:"Times-Italic",bolditalics:"Times-BoldItalic"},Symbol:{normal:"Symbol"},ZapfDingbats:{normal:"ZapfDingbats"},Roboto:{normal:"src/assets/fonts/Roboto-Regular.ttf",bold:"src/assets/fonts/Roboto-Medium.ttf",italics:"src/assets/fonts/Roboto-Italic.ttf",bolditalics:"src/assets/fonts/Roboto-MediumItalic.ttf"}}),o=await async function(e){if(e.rowGroups.length>1){const t=[];let a=[];for(let n=0;n<e.rowGroups.length;n++)!0!==e.rowGroups[n].withParent&&0!==n&&(t.push(a.length>1?a:a[0]),a=[]),a.push(e.rowGroups[n]),n===e.rowGroups.length-1&&t.push(a.length>1?a:a[0]);e.rowGroups=t}e.rowGroups.length>0&&(e.fields=e.fields.filter(t=>!e.calcs.find(e=>e.name===t.name))),e.enums=await async function(e){try{const t={};let a=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const n of a)t[n.name]=n.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(e.langCode);const t=[],a={body:[],headerRows:0};if(e.periodPresentation){const t=[];let n=e.periodPresentation.length>20?e.lang.byPeriod:e.lang.byDate;t.push(`${n}:`),t.push(e.periodPresentation),a.body.push(t)}if(Array.isArray(e.filterPresentation)&&e.filterPresentation.length>0){let t=[];if(t.push(`${e.lang.filter}:`),t.push(e.filterPresentation[0]),a.body.push(t),e.filterPresentation.length>1)for(let n=1;n<e.filterPresentation.length;n++)t=[],t.push(" "),t.push(e.filterPresentation[n]),a.body.push(t)}a.body.length>0&&t.push({table:a,layout:"noBorders"});const n={body:[],headerRows:0},r=function(e){const t=[],a=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],n="#e9ecef";if(e.rowGroups.length>0){const r=!0===e.hideDetails?1:e.fields.length,s=[];if(s.push({text:p(e.rowGroups[0]),rowSpan:1===e.rowGroups.length&&e.colGroups.length>0&&e.hideDetails?2:1,colSpan:r,borderColor:a,fillColor:n}),r>1)for(let e=1;e<r;e++)s.push({});if(0===e.colGroups.length)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length+(e.hideDetails?0:1),borderColor:a,fillColor:n});else{for(const t of e.cols)s.push({text:"object"===e.colGroups[0].valueType?t.name:t,colSpan:e.calcs.length,borderColor:a,fillColor:n});e.showXTotal&&s.push({text:e.lang.total,colSpan:e.calcs.length,borderColor:a,fillColor:n})}if(t.push(s),e.colGroups.length>0&&1===e.rowGroups.length&&!0===e.hideDetails){const r=[];r.push({});for(const t of e.cols)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});t.push(r)}if(0===e.colGroups.length)for(const s of e.rowGroups.slice(1)){const o=[];if(o.push({text:p(s),colSpan:r,borderColor:a,fillColor:n}),r>1)for(let e=1;e<r;e++)o.push({});for(const t of e.calcs)o.push({});t.push(o)}else if(e.rowGroups.length>1){let s=[];s.push({text:p(e.rowGroups[0]),colSpan:r,borderColor:a,fillColor:n});for(const t of e.colGroupsData)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:n});t.push(s);for(const s of e.rowGroups.slice(2)){let o=[];o.push({text:p(s),colSpan:r,borderColor:a,fillColor:n});for(const t of e.colGroupsData)for(const t of e.calcs)o.push({});if(e.showXTotal)for(const t of e.calcs)o.push({});t.push(o)}}if(!0!==e.hideDetails){let r=[];for(const t of e.fields)r.push({text:t.title,borderColor:a,fillColor:n});if(e.colGroups.length>0)if(1===e.rowGroups.length){for(const t of e.colGroupsData)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n})}else{for(const t of e.colGroupsData)for(const t of e.calcs)r.push({});if(e.showXTotal)for(const t of e.calcs)r.push({})}else for(const t of e.calcs)r.push({});t.push(r)}}else{let r=[];for(const t of e.fields)r.push({text:t.title,borderColor:a,fillColor:n});t.push(r)}return t}(e);n.body.push(...r);const s=[];if(c(e.data,s,e),n.body.push(...s),e.showYTotal>0&&e.totals.length>0){const t=function(e){const t=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],a="#f2f5fa",n=[];if(e.rowGroups.length>0){const r=!0===e.hideDetails?1:e.fields.length;if(n.push({text:e.lang.total,colSpan:r,borderColor:t,fillColor:a}),r>1)for(let e=1;e<r;e++)n.push({});e.totals.forEach(e=>{n.push({text:d(e.value||0,e.format),borderColor:t,fillColor:a,alignment:e.textAlign?e.textAlign:"left"})}),e.colGroups.length>0&&e.showXTotal&&e.calcs.map((r,s)=>{const o=e.totals.reduce((e,t)=>t.id===r.id?e+t.value:e,0);n.push({text:d(o||0,r.format),borderColor:t,fillColor:a,alignment:r.textAlign?r.textAlign:"left"})})}else{let r=!0,s=1;for(const o of e.fields){const i=e.totals.find(e=>e.id===o.id);if(i){if(!0===r){if(n.push({text:e.lang.total,colSpan:s-1,borderColor:t,fillColor:a}),s>1)for(let e=1;e<s-1;e++)n.push({});r=!1}n.push({text:d(i.value||0,o.format),borderColor:t,fillColor:a,alignment:o.textAlign?o.textAlign:"left"})}else r||n.push({text:"",borderColor:t,fillColor:a});s++}}return[n]}(e);n.body.push(...t)}return t.push({table:n,layout:{paddingLeft:function(e,t){return 2},paddingRight:function(e,t){return 2},paddingTop:function(e,t){return 2},paddingBottom:function(e,t){return 2}}}),t}(a),f={content:o,defaultStyle:{font:"Roboto",fontSize:a.pageFontSize||12},pageOrientation:a.pageOrientation||"landscape",pageSize:a.pageSize||"A4",pageMargins:[a.margins.left||20,a.margins.top||20,a.margins.right||20,a.margins.bottom||20]},m=r.createPdfKitDocument(f,{}),h=[];let y;m.on("data",function(e){h.push(e)}),m.on("end",function(){y=n.concat(h),t&&(t.contentType("application/pdf"),t.send(y))}),m.end()}}},6456:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2096)),s=n(a(7825)),o=(0,n(a(6918)).default)({path:`${process.cwd()}/logs/access`,interval:"1d"});t.default=function(e){e.use((0,r.default)((e,t,a)=>{const n={};t.user&&(n.id=t.user.id,n.login=t.user.login,n.name=t.user.name);let r={};t.body&&(r=s.default.cloneDeep(t.body),delete r.password);const o=Object.fromEntries(Object.entries(t.headers).filter(([e])=>"cookie"!==e));return JSON.stringify({date:(new Date).toISOString(),ip:t.headers["x-real-ip"]||t.headers["x-forwarded-for"]||t.ip,method:e.method(t,a),url:e.url(t,a),status:e.status(t,a),time:e["response-time"](t,a),length:e.res(t,a,"content-length"),user:n,query:t.query,params:t.params,body:r,headers:o})},{stream:o}))}},6661:e=>{e.exports=require("base64-js")},6788:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),a(4469);const n={dbName:process.env.DB_NAME||"",dbUser:process.env.DB_USER||"",dbPassword:process.env.DB_PASSWORD||"",dbDialect:process.env.DB_DIALECT?process.env.DB_DIALECT:"postgres",dbHost:process.env.DB_HOST?process.env.DB_HOST:"localhost",dbPort:process.env.DB_PORT?parseInt(process.env.DB_PORT,10):5432};t.default=n},6797:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var r=a(1752).Strategy;const s=n(a(5486)),o=a(7138),i=n(a(2282)),l=n(a(5788)),u=n(a(9151));t.default={initializePassport(e){e.serializeUser(function(e,t){t(null,e.id)}),e.deserializeUser(async function(e,t){const a=await l.default.models.User.findByPk(e);a&&!0===a.isActive?t(null,a):t("User is not found",!1)}),e.use("login",new r({usernameField:"email",passwordField:"password",passReqToCallback:!0},async function(e,a,n,r){if(e.body.tokenElectron){let t=u.default.decrypt(e.body.tokenElectron);if(e.body.workingPlace!==t.workingPlace)return i.default.error("Electron auth error",e.body.workingPlace),r(null,!1);a=t.login,n=t.password}const s=await l.default.models.User.findOne({where:{login:a,isActive:!0}}).catch(e=>(console.error(e),i.default.error("Bad request for user",a),r(null,!1)));if(!s)return i.default.error(`User not found or not active with username: ${a}`),r(null,!1);if(!t(s,n))return i.default.error("Invalid Password",a),r(null,!1);let o="";return e.body.electronCert&&(o=JSON.stringify({login:e.body.email,password:e.body.password,workingPlace:e.body.workingPlace}),s.tokenElectron=u.default.encrypt(o)),r(null,s)}));var t=(e,t)=>s.default.compareSync(t,e.password)},isAuthenticated(e,t,a){if(!e.url.includes("/app")&&!e.url.includes("/auth"))return e.isAuthenticated()?void a():t.status(o.StatusCodes.UNAUTHORIZED).send("only for logged in users");a()},isSuperAdmin:(e,t,a)=>((e,t,a)=>{if(!0!==e.user?.isFullRight)return console.warn("User doesnt have necessary permission to access this."),t.status(o.StatusCodes.FORBIDDEN).send("Permission denied for the user. User doesnt have necessary permission to access this");a()})(e,t,a)}},6836:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2103)),s=n(a(5486)),o="vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3";t.default={generateRandomToken:()=>r.default.lib.WordArray.random(20).toString(r.default.enc.Hex),createPasswordHash:e=>s.default.hashSync(e,s.default.genSaltSync(10)),encrypt(e){const t=r.default.enc.Utf8.parse(o),a=r.default.lib.WordArray.random(16),n=r.default.AES.encrypt(e,t,{iv:a,mode:r.default.mode.CTR,padding:r.default.pad.NoPadding});return{iv:a.toString(r.default.enc.Hex),content:n.ciphertext.toString(r.default.enc.Hex)}},decrypt(e){const t=r.default.enc.Utf8.parse(o),a=r.default.enc.Hex.parse(e.iv),n=r.default.enc.Hex.parse(e.content),s=r.default.lib.CipherParams.create({ciphertext:n}),i=r.default.AES.decrypt(s,t,{iv:a,mode:r.default.mode.CTR,padding:r.default.pad.NoPadding});return r.default.enc.Utf8.stringify(i)}}},6898:e=>{e.exports=require("cookie-parser")},6910:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(7138),s=n(a(6928)),o=n(a(4716)),i=n(a(9896)),l=a(9896),u=n(a(9880)),c=n(a(2282)),d=n(a(2555)),f=n(a(7173)),m=n(a(3275)),p="src/database/migrations";let h={},y=[],g=[];async function b(e,t){let a="";for(const n of e)!0!==n.isTablePart?!0!==n.virtual&&(n.multiType&&"common"===n.multiTypeVariant?a+=`${_(n)}`:a+=`\n ${n.dbName}: ${await w(n)}`):t.push({...n});return a+="\n createdAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",a+="\n updatedAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",a}async function w(e,t="",a=!1){let n="{\n ",r="";switch(e.type){case"json":r="TEXT";break;case"object":r="UUID";break;default:r=e.type.toUpperCase()}let s="";if("string"===e.type?e.typeOptions?.length&&0!==e.typeOptions?.length&&(s+=`(${e.typeOptions.length})`):"decimal"===e.type&&e.typeOptions?.precision&&e.typeOptions?.scale&&(s+=`(${e.typeOptions?.precision}, ${e.typeOptions?.scale})`),n+=` type: Sequelize.DataTypes.${r}${s},\n`,"enum"===e.type&&e.ref&&(n+=` values: [${h[e.ref].map(e=>`'${e}'`)}],\n`),!0===e.primaryKey&&(n+=" primaryKey: true,\n"),!0===e.unique&&(n+=" unique: true,\n"),!0===e.notNull&&(n+=" allowNull: false,\n"),null!==e.defaultValue&&void 0!==e.defaultValue&&(["enum","string","text"].includes(e.type)?n+=` defaultValue: '${e.defaultValue}',\n`:n+=` defaultValue: ${e.defaultValue},\n`),!0===e.autoIncrement&&(n+=" autoIncrement: true,\n"),n+=" },","object"===e.type&&!0===e.multiType){let r=e.dbName.endsWith("Id")?e.dbName.slice(0,-2):e.dbName;a?(n+=")",n+=`\n await queryInterface.addColumn('${t}', '${r}Type', {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(n+=" allowNull: false,\n"),n+=" },"):(n+=`\n ${r}Type: {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(n+=" allowNull: false,\n"),n+=" },")}return n}function _(e){let t="";const a="\n type: Sequelize.DataTypes.",n=!0===e.notNull?" allowNull: false,\n":"";return t+=`\n _${e.dbName}Type: {${a}STRING,\n${n} },`,e.type.includes("string")&&(t+=`\n _${e.dbName}ST: {${a}STRING(${e.typeOptions.length}),\n },`),e.type.includes("text")&&(t+=`\n _${e.dbName}TX: {${a}TEXT,\n },`),e.type.includes("integer")&&(t+=`\n _${e.dbName}IN: {${a}INTEGER,\n },`),e.type.includes("decimal")&&(t+=`\n _${e.dbName}DC: {${a}DECIMAL(${e.typeOptions?.precision}, ${e.typeOptions?.scale}),\n },`),e.type.includes("boolean")&&(t+=`\n _${e.dbName}BL: {${a}BOOLEAN,\n },`),e.type.includes("date")&&(t+=`\n _${e.dbName}DT: {${a}DATE,\n },`),m.default.typeIncludesRef(e.type)&&(t+=`\n _${e.dbName}Ref: {${a}STRING(100),\n },`),t}function S(e,t){return e.type!==t.type&&!("json"===e.type&&"text"===t.type||"text"===e.type&&"json"===t.type)||e.unique!==t.unique||e.defaultValue!==t.defaultValue||e.notNull!==t.notNull||e.primaryKey!==t.primaryKey||e.typeOptions?.precision!==t.typeOptions?.precision||e.typeOptions?.scale!==t.typeOptions?.scale||e.typeOptions?.length!==t.typeOptions?.length||e.multiType!==t.multiType||e.multiTypeVariant!==t.multiTypeVariant}function v(e,t,a){let n="";const r="\n await queryInterface.addColumn(",s="\n type: Sequelize.DataTypes.",o=!0===a.notNull?" allowNull: false,\n":"";if(t.multiTypeVariant===a.multiTypeVariant){const i=m.default.typesSufixes(),l=Array.isArray(t.type)?t.type:t.type?[t.type]:[],u=Array.isArray(a.type)?a.type:a.type?[a.type]:[],c=u.filter(e=>!l.includes(e)),d=l.filter(e=>!u.includes(e));for(const a of d){const r=i[a]||"";r&&(n+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}${r}')`)}m.default.typeIncludesRef(t.type)&&!m.default.typeIncludesRef(a.type)&&(n+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}Ref')`);for(const t of c){const l=i[t]||"";if(l)if("string"===t){const t=a.typeOptions?.length||255;n+=`${r}'${e}', '_${a.dbName}${l}', {${s}STRING(${t}),\n${o} })`}else if("text"===t)n+=`${r}'${e}', '_${a.dbName}${l}', {${s}TEXT,\n${o} })`;else if("integer"===t)n+=`${r}'${e}', '_${a.dbName}${l}', {${s}INTEGER,\n${o} })`;else if("decimal"===t){const t=a.typeOptions?.precision||18,i=a.typeOptions?.scale||2;n+=`${r}'${e}', '_${a.dbName}${l}', {${s}DECIMAL(${t}, ${i}),\n${o} })`}else"boolean"===t?n+=`${r}'${e}', '_${a.dbName}${l}', {${s}BOOLEAN,\n${o} })`:"date"===t?n+=`${r}'${e}', '_${a.dbName}${l}', {${s}DATE,\n${o} })`:m.default.isRefType(t)?n+=`${r}'${e}', '_${a.dbName}Ref', {${s}STRING(100),\n${o} })`:n+=`${r}'${e}', '_${a.dbName}${l}', {${s}TEXT,\n${o} })`}return!m.default.typeIncludesRef(t.type)&&m.default.typeIncludesRef(a.type)&&(n+=`${r}'${e}', '_${a.dbName}Ref', {${s}STRING(100),\n${o} })`),n}return t.multiTypeVariant||"objects"!==a.multiTypeVariant?"objects"===a.multiTypeVariant?(n+=C(e,t),n+=`${r}'${e}', '${a.dbName}Type', {${s}STRING,\n${o} })`,n+=`${r}'${e}', '${a.dbName}Id', {${s}UUID,\n${o} })`,n):(n+=P(e,t.dbName),n+=P(e,`${t.dbName.slice(0,-2)}Type`),n+=D(e,a),n):""}function E(){return"\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {"}function R(){return"\n },\n async down(queryInterface, Sequelize) {\n },\n}"}async function $(e,t){e.dbFields=e.fields,e.dbTableName=e.path,e.modified=!1;const a=JSON.stringify(e,null,2);await l.promises.writeFile(t,a,"utf-8")}function T(e){return e&&e.length>63?e.slice(e.length-63):e}async function N(e,t){return await e.update({dbFields:e.fields,dbTableName:e.path,modified:!1}).then(async a=>await u.default.updateInitialData(t.model,"app_objects",{objectId:e.id,event:"update",oldValue:e,newValue:a}))}async function O(e,t,a){return`\n await queryInterface.addColumn('${e}', '${t}', ${await w(a,e,!0)})`}function D(e,t){let a="";const n="\n await queryInterface.addColumn(",r="\n type: Sequelize.DataTypes.",s=!0===t.notNull?" allowNull: false,\n":"";return a+=`${n}'${e}', '_${t.dbName}Type', {${r}STRING,\n${s} })`,t.type.includes("string")&&(a+=`${n}'${e}', '_${t.dbName}ST', {${r}STRING(${t.typeOptions.length}),\n })`),t.type.includes("text")&&(a+=`${n}'${e}', '_${t.dbName}TX', {${r}TEXT,\n })`),t.type.includes("integer")&&(a+=`${n}'${e}', '_${t.dbName}IN', {${r}INTEGER,\n })`),t.type.includes("decimal")&&(a+=`${n}'${e}', '_${t.dbName}DC', {${r}DECIMAL(${t.typeOptions?.precision}, ${t.typeOptions?.scale}),\n })`),t.type.includes("boolean")&&(a+=`${n}'${e}', '_${t.dbName}BL', {${r}BOOLEAN,\n })`),t.type.includes("date")&&(a+=`${n}'${e}', '_${t.dbName}DT', {${r}DATE,\n })`),m.default.typeIncludesRef(t.type)&&(a+=`${n}'${e}', '_${t.dbName}Ref', {${r}STRING(100),\n })`),a}function C(e,t){let a="";const n=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}`;a+=`${n}Type')`;const r=m.default.typesSufixes();for(const e in r)t.type.includes(e)&&(a+=`${n}${r[e]}')`);return m.default.typeIncludesRef(t.type)&&(a+=`${n}Ref')`),a}function A(e,t,a){return`\n await queryInterface.renameColumn('${e}', '${t}', '${a}')`}function j(e,t){const a=m.default.typesSufixes();let n="";const r=`\n await queryInterface.renameColumn('${e}', `;n+=`${r}'${t.oldName}Type', '${t.newName}Type')`;for(const e in a)t.field?.type.includes(e)&&(n+=`${r}'${t.oldName}${a[e]}', '${t.newName}${a[e]}')`);return m.default.typeIncludesRef(t.field?.type||[])&&(n+=`${r}'${t.oldName}Ref', '${t.newName}Ref')`),n}async function I(e,t,a){let n="";if(t.type!==a.type)if(function(e,t){const a=["uuid","date","boolean","object","enum"];return a.find(t=>t===e)||a.find(e=>e===t)}(t.type,a.type))n+=P(e.name,a.dbName),n+=await O(e.name,a.dbName,a);else if(r=t.type,s=a.type,[{typeFrom:"integer",typeTo:"string"},{typeFrom:"decimal",typeTo:"string"},{typeFrom:"text",typeTo:"string"},{typeFrom:"integer",typeTo:"text"},{typeFrom:"decimal",typeTo:"text"},{typeFrom:"text",typeTo:"decimal"},{typeFrom:"text",typeTo:"integer"},{typeFrom:"string",typeTo:"integer"},{typeFrom:"string",typeTo:"decimal"}].find(e=>e.typeFrom===r&&e.typeTo===s)){n+=await O(e.name,`temp_${a.dbName}`,a);let r="";["integer","decimal","text"].includes(t.type)&&"string"===a.type?r+=`UPDATE ${e.name} SET temp_${a.dbName} = LEFT(CAST(${a.dbName} AS VARCHAR), ${a?.typeOptions?.length||255})`:["integer","decimal"].includes(t.type)&&"text"===a.type?r+=`UPDATE ${e.name} SET temp_${a.dbName} = CAST(${a.dbName} AS TEXT)`:["text","string"].includes(t.type)&&"integer"===a.type?r+=`UPDATE ${e.name} SET temp_${a.dbName} = CASE\n WHEN ${a.dbName} ~ '^[0-9]+$' THEN CAST(${a.dbName} AS INTEGER)\n ELSE NULL\n END`:["text","string"].includes(t.type)&&"decimal"===a.type&&(r+=`UPDATE ${e.name} SET temp_${a.dbName} = CASE\n WHEN ${a.dbName} ~ '^[0-9]+$' THEN CAST(${a.dbName} AS DECIMAL)\n ELSE NULL\n END`),r&&(n+=function(e){return`\n await queryInterface.sequelize.query(\`${e}\`)`}(r)),n+=P(e.name,a.dbName),n+=A(e.name,`temp_${a.dbName}`,a.dbName)}else n+=await x(e.name,a.dbName,a);else n+=await x(e.name,a.dbName,a);var r,s;return n}async function x(e,t,a){return`\n await queryInterface.changeColumn('${e}', '${t}', ${await w(a,e,!0)})`}function P(e,t){return`\n await queryInterface.removeColumn('${e}', '${t}')`}function F(e,t,a){return`\n await queryInterface.addIndex('${e}', ['${t}'], { name: '${a}'})`}function M(e,t,a){let n="";const r="\n await queryInterface.addIndex(";return n+=`${r}'${e}', ['_${t.dbName}Type'], { name: '${a}_type'})`,t.type.includes("string")&&(n+=`${r}'${e}', ['_${t.dbName}ST'], { name: '${a}_st'})`),t.type.includes("text")&&(n+=`${r}'${e}', ['_${t.dbName}TX'], { name: '${a}_tx'})`),t.type.includes("integer")&&(n+=`${r}'${e}', ['_${t.dbName}IN'], { name: '${a}_in'})`),t.type.includes("decimal")&&(n+=`${r}'${e}', ['_${t.dbName}DC'], { name: '${a}_dc'})`),t.type.includes("boolean")&&(n+=`${r}'${e}', ['_${t.dbName}BL'], { name: '${a}_type'})`),t.type.includes("date")&&(n+=`${r}'${e}', ['_${t.dbName}DT'], { name: '${a}_dt'})`),m.default.typeIncludesRef(t.type)&&(n+=`${r}'${e}', ['_${t.dbName}Ref'], { name: '${a}_ref'})`),n}function k(e,t){return`\n await queryInterface.removeIndex('${e}', ['${t}'])`}function U(e,t){let a="";const n="\n await queryInterface.removeIndex(";return a+=`${n}'${e}', ['_${t.dbName}Type'])`,t.type.includes("string")&&(a+=`${n}'${e}', ['_${t.dbName}ST'])`),t.type.includes("text")&&(a+=`${n}'${e}', ['_${t.dbName}TX'])`),t.type.includes("integer")&&(a+=`${n}'${e}', ['_${t.dbName}IN'])`),t.type.includes("decimal")&&(a+=`${n}'${e}', ['_${t.dbName}DC'])`),t.type.includes("boolean")&&(a+=`${n}'${e}', ['_${t.dbName}BL'])`),t.type.includes("date")&&(a+=`${n}'${e}', ['_${t.dbName}DT'])`),m.default.typeIncludesRef(t.type)&&(a+=`${n}'${e}', ['_${t.dbName}Ref'])`),a}t.default={async executeMigrationsAtServer(){const e=await(0,f.default)(),t=await e.appObjects.model.findAll({where:{modified:!0}});if(!t||0===t.length)return{status:r.StatusCodes.OK,responseData:{message:"No migrations needed"}};const a=(0,o.default)();for(const n of t)await this.executeObjectMigration(n,e.appObjects,a);a.add(1,"seconds");for(const n of t)await this.addFieldsForeignKeys(a)&&await N(n,e.appObjects);return{status:r.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async executeMigrationsFromFiles(){const e=await(0,f.default)(),t=function(e){const t=[];return function e(a){const n=i.default.readdirSync(a,{withFileTypes:!0});for(const r of n){const n=s.default.join(a,r.name);r.isDirectory()?e(n):r.isFile()&&"object.struct.json"===r.name&&t.push(n)}}(e),t}(`${process.cwd()}/src/modules`),a=(0,o.default)();for(const n of t){a.add(1,"seconds");const t=await l.promises.readFile(n,"utf-8"),r=JSON.parse(t);r.dbTableName&&!r.modified||(console.log("Migration creation for object:",r.name),await this.executeObjectMigration(r,e.appObjects,a,n))}a.add(1,"seconds");for(const e of t){const t=await l.promises.readFile(e,"utf-8"),n=JSON.parse(t);n.dbTableName&&!n.modified||await this.addFieldsForeignKeys(a)&&await $(n,e)}return{status:r.StatusCodes.OK,responseData:{message:"Migrations were created successfully"}}},async executeMigrations(e,t,a,n){const s=await n.model.findAll({where:{modified:!0}});if(!s||0===s.length)return{status:r.StatusCodes.OK,responseData:{message:"No migrations needed"}};const i=(0,o.default)();for(const e of s)i.add(1,"seconds"),await this.executeObjectMigration(e,n,i);i.add(1,"seconds");for(const e of s)await this.addFieldsForeignKeys(i)&&await N(e,n);return{status:r.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async existMigrations(e,t,a,n){const s=await n.model.findAll({where:{modified:!0}});return s&&0!==s.length?{status:r.StatusCodes.OK,responseData:!0}:{status:r.StatusCodes.OK,responseData:!1}},async executeMigration(e,t,a,n){const s=e.body.objectId;if(!s||"string"!=typeof s||36!==s.length){const e="Object id is not correct!";return c.default.error(`Error in ${n.name} findItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const i=(0,o.default)(),l=await n.model.findByPk(s);return await this.executeObjectMigration(l,n,i)?{status:r.StatusCodes.OK,responseData:{message:"OK"}}:{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Error during migration file creation!"}}},async executeObjectMigration(e,t,a,n=""){if(!e)throw new Error("Object not found!");if(!e.fields)throw new Error(`Object ${e.name} has incorrect fields!`);if(n){const e=s.default.join(process.cwd(),"src","modules","enums"),t=s.default.join(e,"index.json");if(!i.default.existsSync(t))throw new Error(`File index.json not found in ${e}`);{const e=i.default.readFileSync(t,"utf8");h=JSON.parse(e)}}else h=await d.default.initEnums();return e.dbTableName?await this.updateTable({id:e.id,dbName:e.dbTableName,name:e.path,dbFields:e.dbFields,fields:e.fields},a):await this.createTable(e,a)},async addFieldsForeignKeys(e=(0,o.default)()){for(const t of y){console.log("Foreign keys creation for object:",t.path);const a=[];await b(t.fields,a);const n=E(),r=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const a=T(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.path}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${a}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}if(o){e.add(1,"seconds");const a=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.path}.js`,i=s.default.join(p,a);await l.promises.writeFile(i,`${n}${o}${r}`)}for(const t of a){const a=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===a.length)continue;let o="";for(const e of a){const a=T(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.dbName}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${a}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(s.default.join(p,i),`${n}${o}${r}`)}}return y=[],!0},toSnakeCase:e=>e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase(),async delFieldsForeignKeys(e=(0,o.default)()){for(const t of g){const a=[];await b(t.fields,a);const n=E(),r=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const a=T(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.path}', '${a}');\n`}if(o){e.add(1,"seconds");const a=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.path}.js`,i=s.default.join(p,a);await l.promises.writeFile(i,`${n}${o}${r}`)}for(const t of a){const a=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===a.length)continue;let o="";for(const e of a){const a=T(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.dbName}', '${a}');\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(s.default.join(p,i),`${n}${o}${r}`)}}return g=[],!0},prepareFieldsDifs(e,t,a){const n=[];if(!e||!t)return[];for(const r of t){const t=e.find(e=>e.id===r.id);t?!0===r.isTablePart?a.push({action:"changeTable",oldTable:{...t},newTable:{...r}}):(!0===t.multiType&&"common"===t.multiTypeVariant&&!1===r.multiType?(n.push({action:"dropField",field:{...t}}),n.push({action:"addField",field:{...r}}),!0===r.index&&n.push({action:"addIndex",field:r})):!1===t.multiType&&!0===r.multiType&&"common"===r.multiTypeVariant?(!0===t.index&&n.push({action:"removeIndex",field:t}),n.push({action:"dropField",field:{...t}}),n.push({action:"addField",field:{...r}})):(r.dbName!==t.dbName&&n.push({action:"renameField",newName:r.dbName,oldName:t.dbName,field:t}),S(t,r)&&n.push({action:"changeField",oldField:{...t},newField:{...r}})),t.index!==r.index&&(!0===r.index?n.push({action:"addIndex",field:r}):n.push({action:"removeIndex",field:r}))):!0===r.isTablePart?a.push({action:"createTable",newTable:{...r}}):(n.push({action:"addField",field:{...r}}),!0===r.index&&n.push({action:"addIndex",field:r}))}for(const r of e)t.find(e=>e.id===r.id)||(!0===r.isTablePart?a.push({action:"dropTable",oldTable:{...r}}):(!0===r.index&&n.push({action:"removeIndex",field:r}),n.push({action:"dropField",field:{...r}})));return n},async createTable(e,t=(0,o.default)()){y.push(e);let a=`${t.format("YYYYMMDDHHmmss")}-create-table-${e.path}.js`,n=s.default.join(p,a);const r=[];let i=await b(e.fields,r);const u="\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {",c="\n },\n async down(queryInterface, Sequelize) {\n },\n}";let d=`${u}\n await queryInterface.createTable('${e.path}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const a=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=M(e.path,t,a):d+=F(e.path,t.dbName,a)}d+=`${c}`,await l.promises.writeFile(n,d);for(const e of r){t.add(1,"seconds"),a=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${e.dbName}.js`,n=s.default.join(p,a),i=await b(e.fields,[]),d=`${u}\n await queryInterface.createTable('${e.dbName}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const a=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=M(e.dbName,t,a):d+=F(e.dbName,t.dbName,a)}d+=`${c}`,await l.promises.writeFile(n,d)}return!0},async updateTable(e,t=(0,o.default)()){let a="";e.name!==e.dbName&&(a+=`\n await queryInterface.renameTable('${e.dbName}', '${e.name}')`);const n=[],r=this.prepareFieldsDifs(e.dbFields,e.fields,n);if(r.length>0){const n=[],s=[];for(const t of r){if("addField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=D(e.name,t.field):(a+=await O(e.name,t.field.dbName,t.field),"object"!==t.field.type||t.field.multiType||n.push(t.field))),"dropField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=C(e.name,t.field):(a+=P(e.name,t.field.dbName),"object"!==t.field.type||t.field.multiType||s.push(t.field),"object"===t.field.type&&t.field.multiType&&(a+=P(e.name,`${t.field.dbName.slice(0,-2)}Type`)))),"renameField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=j(e.name,t):a+=A(e.name,t.oldName,t.newName)),"changeField"===t.action&&(t.newField.multiType&&t.oldField.multiType?a+=v(e.name,t.oldField,t.newField):a+=await I(e,t.oldField,t.newField),"object"!==t.oldField.type||"object"===t.newField.type||t.oldField.multiType||s.push(t.oldField),"object"!==t.oldField.type||"object"!==t.newField.type||t.oldField.ref===t.newField.ref||t.oldField.multiType||t.newField.multiType||(s.push(t.oldField),n.push(t.newField)),"object"===t.oldField.type||"object"!==t.newField.type||t.newField.multiType||n.push(t.newField),"object"===t.oldField.type&&!t.oldField.multiType&&"object"===t.newField.type&&t.newField.multiType&&s.push(t.oldField),"object"===t.oldField.type&&t.oldField.multiType&&"object"===t.newField.type&&!t.newField.multiType&&(a+=P(e.name,`${t.oldField.dbName.slice(0,-2)}Type`),n.push(t.newField))),"addIndex"===t.action){const n=`${e.id.substring(24)}_${t.field.id.substring(24)}`;t.field.multiType&&"common"===t.field.multiTypeVariant?a+=M(e.name,t.field,n):a+=F(e.name,t.field.dbName,n)}"removeIndex"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=U(e.name,t.field):a+=k(e.name,t.field.dbName))}n.length>0&&y.push({path:e.name,fields:n}),s.length>0&&(g.push({path:e.name,fields:s}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")))}if(""!==a){let n=`${t.format("YYYYMMDDHHmmss")}-change-table-${e.isTablePart?"part-":""}${e.dbName}.js`,r=s.default.join(p,n),o=`\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {${a}\n },\n async down(queryInterface, Sequelize) {\n },\n}`;await l.promises.writeFile(r,o)}for(const a of n){if("createTable"===a.action){t.add(1,"seconds");let n=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${a.newTable.dbName}.js`,r=s.default.join(p,n);const o=await b(a.newTable.fields,[]),i=E(),u=R();let c=`${i}\n await queryInterface.createTable('${a.newTable.dbName}', {${o}\n })${u}`;const d=a.newTable.fields.filter(e=>!0===e.index);for(const e of d){const t=`${a.newTable.id.substring(24)}_${e.id.substring(24)}`;e.multiType&&"common"===e.multiTypeVariant?c+=M(a.newTable.dbName,e,t):c+=F(a.newTable.dbName,e.dbName,t)}c+=`${u}`,await l.promises.writeFile(r,c),y.push({path:e.name,fields:[a.newTable]})}if("changeTable"===a.action&&await this.updateTable({id:a.oldTable.id,dbName:a.oldTable.dbName,name:a.newTable.dbName,dbFields:a.oldTable.fields,fields:a.newTable.fields,isTablePart:!0},t.add(1,"seconds")),"dropTable"===a.action){g.push({path:e.name,fields:[a.oldTable]}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")),t.add(1,"seconds");let n=`${t.format("YYYYMMDDHHmmss")}-drop-table-part-${a.oldTable.dbName}.js`,r=s.default.join(p,n);const o=E(),i=R();let u=`${o}\n await queryInterface.dropTable('${a.oldTable.dbName}')${i}`;await l.promises.writeFile(r,u)}}return!0}}},6918:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(9896)),s=n(a(6928)),o=n(a(4716)),i={m:"YYYYMMDD-HHmm",h:"YYYYMMDD-HH",d:"YYYYMMDD"};t.default=function({path:e,interval:t="1d"}){const a=s.default.resolve(e);r.default.mkdirSync(a,{recursive:!0});const n=t.slice(-1),l=Number(t.slice(0,-1));if(!i[n]||!l)throw new Error(`Invalid log interval: ${t}`);let u=d((0,o.default)()),c=f(u);function d(e){const t="m"===n?e.clone().startOf("minute"):"h"===n?e.clone().startOf("hour"):e.clone().startOf("day"),a="m"===n?t.minute()%l:"h"===n?t.hour()%l:0;return t.subtract(a,n),t.format(i[n])}function f(e){return r.default.createWriteStream(s.default.join(a,`${e}.log`),{flags:"a"})}return{write(e){!function(){const e=d((0,o.default)());e!==u&&(c.end(),u=e,c=f(u))}(),c.write(e+"\n")}}}},6928:e=>{e.exports=require("path")},6961:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(8356)),o=r.default.Router(),i="report";o.get(`/${i}/settings/:id`,s.default.getSettings),o.post(`/${i}/result`,s.default.getResult),t.default=o},6980:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(1572)),s=a(7138),o=a(3903),i=a(9031),l=n(a(5788)),u=n(a(6836)),c=n(a(2282)),d=async(e,t)=>{const a=await l.default.models.User.findOne({where:{email:e}}),n=a?.language,r={en:{registration:{subject:"Confirm your email",hello:"Hello ",begining:",<br>Thank you for your registration. Your account requires activation. Click the link below to confirm your email address:<br><br>",middle:"<br><br>Here are your login details:<br>Login: ",end:"<br><br>Important Safety Tips:<br>1. Always keep your account details in a safe place.<br>2. Never reveal your login and password to anyone.<br>3. Change your password regularly.<br>4. If you suspect someone is using your account illegally, please let us know immediately."},passwordReset:{subject:"Password Reset",metter:"Password recovery for ",begining:"<br><br>Dear User,<br><br>We have received a request to change your account password ",middle:"<br>Click here to reset your password: ",end:"<br><br>If you do not want to reset your password, please ignore this message. The password will remain unchanged.<br><br>Sincerely,<br>Customer Service Team"},passwordResetConfirmation:{subject:"Password Reset Successful",main:"Dear User,<br><br>Your password has been successfully reset.<br><br>Sincerely,<br>Customer Service Team"},statusChange:{subject:"User status",start:"Dear User, <br><br>Your user status has been changed to:<br><br>",end:"<br><br>Sincerely,<br>Customer Service Team"}},pl:{registration:{subject:"Potwierdź swój email",hello:"Witaj ",begining:",<br>Dziękujemy za rejestracje. Twoje konto wymaga aktywacji. Kliknij poniższy link, aby potwierdzić swój adres e-mail:<br><br>",middle:"<br><br>Oto twoje dane logowania:<br>Login: ",end:"<br><br>Ważne wskazówki dotyczące bezpieczeństwa:<br>1. Zawsze trzymaj dane do Twojego konta w bezpiecznym miejscu.<br>2. Nigdy nie ujawniaj nikomu swojego loginu i hasła.<br>3. Regularnie zmieniaj swoje hasło.<br>4. Jeśli podejrzewasz, że ktoś używa Twojego konta nielegalnie, prosimy o natychmiastowe poinformowanie nas o tym."},passwordReset:{subject:"Reset hasła",metter:"Odzyskiwanie hasła do konta ",begining:"<br><br>Drogi Użytkowniku,<br><br>Otrzymaliśmy prośbę o zmianę hasła do konta ",middle:"<br>Kliknij, aby zresetować hasło: ",end:"<br><br>Jeśli nie chcesz resetować swojego hasła, zignoruj tę wiadomość. Hasło pozostanie niezmienione.<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"},passwordResetConfirmation:{subject:"Hasło Zresetowane Pomyślnie",main:"Drogi Użytkowniku,<br><br>Twoje hasło zostało pomyślnie zresetowane.<br><br>Z poważaniem,<br>Dzial Obslugi Klienta"},statusChange:{subject:"Status użytkownika",start:"Drogi Użytkowniku, <br><br>Twój status użytkownika został zmieniony na:<br><br>",end:"<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"}},fr:{registration:{subject:"Confirme ton email",hello:"Bonjour ",begining:",<br>Merci pour votre inscription. Votre compte nécessite une activation. Cliquez sur le lien ci-dessous pour confirmer votre adresse e-mail:<br><br>",middle:"<br><br>Voici vos identifiants de connexion:<br>Login: ",end:"<br><br>Conseils de sécurité importants:<br>1. Conservez toujours les détails de votre compte en lieu sûr.<br>2. Ne révélez jamais votre identifiant et votre mot de passe à qui que ce soit.<br>3. Changez votre mot de passe régulièrement.<br>4. Si vous pensez que quelqu'un utilise votre compte illégalement, veuillez nous en informer immédiatement."},passwordReset:{subject:"Réinitialisation du mot de passe",metter:"Récupération de mot de passe pour ",begining:"<br><br>Cher utilisateur,<br><br>Nous avons reçu une demande de changement de mot de passe de votre compte ",middle:"<br>Cliquez ici pour réinitialiser votre mot de passe: ",end:"<br><br>Si vous ne souhaitez pas réinitialiser votre mot de passe, veuillez ignorer ce message. Le mot de passe restera inchangé.<br><br>Cordialement,<br>L'équipe du service client"},passwordResetConfirmation:{subject:"Réinitialisation du mot de passe réussie",main:"Cher utilisateur,<br><br>Votre mot de passe a été réinitialisé avec succès.<br><br>Cordialement,<br>L'équipe du service client"},statusChange:{subject:"Statut de l'utilisateur",start:"Cher utilisateur, <br><br>Votre statut d'utilisateur a été changé en:<br><br>",end:"<br><br>Cordialement,<br>L'équipe du service client"}}};return n&&n in r?r[n][t]:r.en[t]};async function f(){return await l.default.models.EmailAccount.findOne({where:{isService:!0}})}function m(e){return{credentials:{host:e.smtpHost,port:e.smtpPort,secure:e.smtpTls,auth:{user:e.user,pass:e.password},tls:{rejectUnauthorized:e.smtpTls}}}}function p(e,t,a,n){return{from:e.name,to:t,bcc:e.name,subject:a,html:n}}t.default={async emailConfirmationInstructions(e,t,a,n){const s=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!s)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});s.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),s.password=u.default.decrypt(JSON.parse(s.password));const o=m(s),i=r.default.createTransport(o.credentials);i.verify(async function(r,o){if(r)c.default.error("Error in emailConfirmationInstructions ",{meta:r});else{const r=await d(e,"registration"),o=`${process.env.ALLOW_ORIGIN}/email-confirmation`,l=r.hello+t+r.begining+'<a href="'+o+"/"+n+'">Confirm Your Email Address</a>'+r.middle+a+r.end,u=p(s,e,r.subject,l);i.sendMail(u,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})},async register(e){try{if(await l.default.models.User.findOne({where:{[i.Op.or]:{email:e.email,login:e.login}}})){const e="A user with this login or email already exist";return c.default.error("Error in register Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}let t={email:e.email,login:e.login,uuid:(0,o.v4)(),password:u.default.createPasswordHash(e.password),name:e.name,isActive:!1,fullRights:!1,externalUser:!1,emailConfirmationToken:u.default.generateRandomToken(),referralToken:u.default.generateRandomToken(),isFirm:e.isFirm,firmName:e.firmName,phone:e.phone,country:e.country,companyDepartment:e.companyDepartment,commercialInChargeOfYou:e.commercialInChargeOfYou,notVatNumber:e.notVatNumber,vatNumber:e.vatNumber,address:e.address,postalCode:e.postalCode,city:e.city,deliveryDepartment:e.deliveryDepartment};const a=await async function(){return await l.default.models.User.findAll().then(e=>0===e.length).catch(()=>!1)}();return!0===a&&(t.isActive=!0,t.userState="Aktywny",t.fullRights=!0),await l.default.models.User.create(t).then(async e=>{c.default.info("New user was registered",{meta:JSON.stringify({id:e.id,name:e.name})}),!1===a&&this.emailConfirmationInstructions(e.email,e.name,e.login,e.emailConfirmationToken);const t={email:e.email,login:e.login,name:e.name};return{httpStatus:s.StatusCodes.OK,result:t}}).catch(e=>(c.default.error("Error in register Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:"User create error."}}))}catch(e){return c.default.error("Error in register Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},confirmEmailAddress:async e=>await l.default.models.User.findOne({where:{emailConfirmationToken:e}}).then(async e=>e?(e=await e.update({emailConfirmationToken:null}))?{httpStatus:s.StatusCodes.OK,result:!0}:(c.default.error("Error in confirmEmailAddress Service",{meta:"User not save."}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):(c.default.error("Error in confirmEmailAddress Service",{meta:"Token not find."}),{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.NOT_FOUND)}})).catch(e=>(c.default.error("Error in confirmEmailAddress Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{errorDetails:e}})),async resendEmailAddressConfirmationLink(e){try{let t=await l.default.models.User.findOne({where:{email:e}}),a=u.default.generateRandomToken();return t&&a?(t=await t.update({emailConfirmationToken:a}),t?(this.emailConfirmationInstructions(t.email,t.name,t.login,t.emailConfirmationToken),{httpStatus:s.StatusCodes.OK,result:!0}):{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:"Email is already confirmed or does not exist in our records."}}}catch(e){return c.default.error("Error in resendEmailAddressConfirmationLink Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async forgotPassword(e,t){try{if(!t)return c.default.error("Error in forgotPassword Service",{meta:"Client origin is not defined"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Client origin is not defined"}};const a=await l.default.models.User.findOne({where:{email:e}});if(!a)return c.default.error("Error in forgotPassword Service",{meta:"Email not found"}),{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:"Email not found"}};let n=u.default.generateRandomToken();const o=Number("3600000")||36e5,i={passwordResetToken:n,passwordResetExpires:Date.now()+o},h=await a.update({...i});return h?async function(e,t,a,n,o){const i=await f();if(!i)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account not exist"}};if(!i.password)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account password not set"}};i.password=u.default.decrypt(JSON.parse(i.password));let l=m(i),h=r.default.createTransport(l.credentials);try{await h.verify()}catch(e){return c.default.error("Error in emailConfirmationInstructions ",{meta:e}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:`Email verification error. ${e}`}}}const y=await d(e,"passwordReset"),g=`${o}/password-reset`,b=y.metter+a+y.begining+a+y.middle+'<a href="'+g+"/"+n+'">Reset Password</a>'+y.end,w=p(i,e,y.subject,b);return await h.sendMail(w).then(e=>(c.default.verbose("Service Email sent",{meta:e}),{httpStatus:s.StatusCodes.OK,result:{message:"OK"}})).catch(e=>(c.default.error("Error while sending service email",{meta:e}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:e}}))}(h.email,h.name,h.login,h.passwordResetToken,t):(c.default.error("Error in forgotPassword Service",{meta:"User not updated"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}})}catch(e){return c.default.error("Error in forgotPassword Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async isPasswordResetTokenValid(e){try{return await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}})?{httpStatus:s.StatusCodes.OK,result:!0}:{httpStatus:s.StatusCodes.BAD_REQUEST,result:!1}}catch(e){return c.default.error("Error in isPasswordResetTokenValid Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async resetPassword(e,t){try{let a=await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}});return a?(a=await a.update({passwordResetToken:null,passwordResetExpires:null,password:u.default.createPasswordHash(t)}),a?(async function(e){const t=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!t)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});t.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),t.password=u.default.decrypt(JSON.parse(t.password));const a=m(t),n=r.default.createTransport(a.credentials);n.verify(async function(a,r){if(a)c.default.error("Error in emailConfirmationInstructions ",{meta:a});else{const a=await d(e,"passwordResetConfirmation"),r=p(t,e,a.subject,a.main);n.sendMail(r,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}(a.email,a.name),{httpStatus:s.StatusCodes.OK,result:!0}):{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.NOT_FOUND)}}}catch(e){return c.default.error("Error in resetPassword Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async emailOnUserStateChange(e,t){const a=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!a)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});a.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),a.password=u.default.decrypt(JSON.parse(a.password));const n=m(a),s=r.default.createTransport(n.credentials);s.verify(async function(n,r){if(n)c.default.error("Error in emailConfirmationInstructions ",{meta:n});else{const n=await d(e,"statusChange"),r=p(a,e,n.subject,n.start+t+n.end);s.sendMail(r,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}}},6982:e=>{e.exports=require("crypto")},7135:e=>{e.exports=require("node-sql-parser")},7138:e=>{e.exports=require("http-status-codes")},7173:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(4716)),i=n(a(9896)),l=n(a(7825)),u=n(a(2555)),c=n(a(3275)),d=n(a(2282));let f={};function m(e,t,a){if("common"===t.multiTypeVariant){const n=[];if(e[`_${t.dbName}Type`]={type:r.DataTypes.STRING,allowNull:!0!==t.notNull},t.type.includes("string")){const a=`_${t.dbName}ST`;e[a]={type:r.DataTypes.STRING(t.typeOptions.length)},n.push(a)}if(t.type.includes("text")){const a=`_${t.dbName}TX`;e[a]={type:r.DataTypes.TEXT},n.push(a)}if(t.type.includes("integer")){const a=`_${t.dbName}IN`;e[a]={type:r.DataTypes.INTEGER},n.push(a)}if(t.type.includes("decimal")){const a=`_${t.dbName}DC`;e[a]={type:r.DataTypes.DECIMAL(t.typeOptions?.precision,t.typeOptions?.scale)},n.push(a)}if(t.type.includes("boolean")){const a=`_${t.dbName}BL`;e[a]={type:r.DataTypes.BOOLEAN},n.push(a)}if(t.type.includes("date")){const a=`_${t.dbName}DT`;e[a]={type:r.DataTypes.DATE},n.push(a)}if(c.default.typeIncludesRef(t.type)){const a=`_${t.dbName}Ref`;e[a]={type:r.DataTypes.STRING(100)},n.push(a)}a.push(...n),e[`${t.dbName}`]={type:r.DataTypes.VIRTUAL(r.DataTypes.ABSTRACT,[`_${t.dbName}Type`,...n]),get(){const e=this.getDataValue(`_${t.dbName}Type`);if(!e)return null;const a=c.default.getFieldNameByType(t.dbName,e);return a?this.getDataValue(a):null},set(e){this.setDataValue(`__pending_${t.dbName}`,e)}}}else e[t.dbName]={type:r.DataTypes.UUID,allowNull:!0!==t.notNull,_index:!0===t.index},e[`${t.name}Type`]={type:r.DataTypes.STRING,allowNull:!0!==t.notNull,_index:!0===t.index}}function p(e){const t={foreignKey:e.field.dbName,as:e.field.name};return e.field.notNull&&(t.allowNull=!1),e.field.index&&(t.index=!0),e.field.fullSearch&&(t._fullSearch=e.field.fullSearch),t}function h(e){const t={type:r.DataTypes.STRING},a=e.type.toUpperCase();return"STRING"===a?e.typeOptions?.length&&0!==e.typeOptions?.length?t.type=r.DataTypes[a](e.typeOptions?.length):t.type=r.DataTypes[a]():"JSON"===a?(t.type=r.DataTypes.TEXT(),t.get=function(){const t=this.getDataValue(e.name);return t?JSON.parse(t):null},t.set=function(t){this.setDataValue(e.name,t?JSON.stringify(t):t)}):"ENUM"===a?(t.type=r.DataTypes.ENUM,t.values=e.ref?f[e.ref]:["empty"],t._ref=e.ref):t.type=r.DataTypes[a](),"UUID"===a&&"id"===e.name&&(t.defaultValue=r.DataTypes.UUIDV4()),e.primaryKey&&(t.primaryKey=!0),e.notNull&&(t.allowNull=!1),e.index&&(t._index=!0),null!==e.defaultValue&&void 0!==e.defaultValue&&(t.defaultValue=e.defaultValue),e.fullSearch&&(t._fullSearch=e.fullSearch),t}function y(e,t,a,n,o){let i={};const l=[];let u=!1;for(const y of e.fields)y.multiType?("common"===y.multiTypeVariant&&(u=!0),m(i,y,l)):"object"!==y.type&&(i[y.dbName]=h(y)),"object"===y.type&&a.push({objectName:t.name,tableName:e.name,field:y});class f extends r.Model{}const p={title:e.title,name:e.name,fields:e.fields,model:f.init(i,{sequelize:s.default,modelName:e.model,tableName:e.dbName})};if(t.model.hasMany(p.model,{foreignKey:"parentId",as:e.name,onDelete:"CASCADE",hooks:!0}),l.length>0){const g=p.model.prototype.toJSON;p.model.prototype.toJSON=function(){const t=g?g.call(this):Object.assign({},this.get?this.get():this);for(const e of l)e in t&&delete t[e];if(e.fields){const a=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of a){const a=this.dataValues&&this.dataValues[e.dbName];a&&"object"==typeof a&&(t[e.dbName]=a)}}return t}}if(u){function b(t){if(!e.fields)return;const a=c.default.typesSufixes();for(const n of e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const e=`__pending_${n.dbName}`;if(!Object.prototype.hasOwnProperty.call(t.dataValues,e))continue;const r=t.getDataValue(e),s=t.getDataValue(`_${n.dbName}Type`);for(const e in a){const r=`_${n.dbName}${a[e]}`;t.setDataValue(r,null)}if(c.default.typeIncludesRef(n.type)&&t.setDataValue(`_${n.dbName}Ref`,null),s){const e=c.default.getFieldNameByType(n.dbName,s);e&&(c.default.isRefType(s)&&"object"==typeof r?t.setDataValue(e,r.id||null):t.setDataValue(e,r))}delete t.dataValues[e]}}p.model.addHook("beforeSave",e=>{b(e)}),p.model.addHook("beforeBulkCreate",e=>{for(const t of e)b(t)}),p.model.addHook("afterFind","refObjectsPreload",async t=>{if(!e.fields)return;if(!t)return;const a=Array.isArray(t)?t:[t],n=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),r=[];for(const e of a)for(const t of n){const a=e.getDataValue(`_${t.dbName}Type`),n=e.getDataValue(`_${t.dbName}Ref`);if(!a||!n)continue;const s=a.match(/^(catalog|document)\.(.+)$/);if(!s)continue;const i=s[1],l=s[2],u=o[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(n,{attributes:f}).then(a=>{if(!a)return;const n=a.get?a.get():a;if("catalog"===i){const a={id:n.id,name:n.name??null,presentation:n.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}else{const a={id:n.id,numberStr:n.numberStr??null,date:n.date??null,presentation:n.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});r.push(m)}r.length>0&&await Promise.all(r)})}for(const w of e.fields)w.leading&&n.push({field:w,belongTable:p.model});t.tables[e.name]=p}function g(e,t,a){let n={},o=[],i=[];n.id={type:r.DataTypes.UUID,primaryKey:!0,allowNull:!1},n.period={type:r.DataTypes.DATE,allowNull:!1,_index:!0};for(const e of t.fields)"dimension"!==e.role&&"resource"!==e.role||("object"!==e.type?n[e.dbName]=h(e):a.push({objectName:t.name,accModel:!0,field:e}),"dimension"===e.role&&o.push(l.default.cloneDeep(e)),"resource"===e.role&&i.push(l.default.cloneDeep(e)));class u extends r.Model{}const c={name:`${t.name}Acc`,dimensions:o,resources:i,model:u.init(n,{sequelize:s.default,modelName:`${e.model}Acc`,tableName:`${e.path}_acc`})};t.accTable=c}t.default=async()=>{f=await u.default.initEnums();const e=await s.default.query('SELECT * FROM app_objects WHERE app_objects."markedToDelete" = false AND app_objects."dbTableName" IS NOT NULL',{type:r.QueryTypes.SELECT}),t={},a=[],n=[];for(const i of e){let e={},l=[];const u=JSON.parse(i.dbFields),f=[];let p=!1;for(const t of u.filter(e=>!e.isTablePart))t.multiType?("common"===t.multiTypeVariant&&(p=!0),m(e,t,f)):"object"!==t.type&&(e[t.dbName]=h(t)),"object"===t.type&&a.push({objectName:i.name,field:t});if(i.indexes){const e=JSON.parse(i.indexes);for(const t of e)l.push({name:t.name,fields:t.fields,unique:t.unique,using:t.using})}const b=i.reflection?JSON.parse(i.reflection):{};"catalog"===i.type&&(e.presentation={type:new r.DataTypes.VIRTUAL(r.DataTypes.STRING,b.fields?b.fields:["name"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let a;for(;null!==(a=e.exec(b.template));)a.index===e.lastIndex&&e.lastIndex++,a.forEach(e=>{t.push(e)});let n=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const r=u.find(e=>e.dbName===t);if(r)if("date"===r.type){const e=r.format&&""!==r.format?r.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];n=n.replace(e,a)}return n}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("name")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"name"}),"document"===i.type&&(e.presentation={type:new r.DataTypes.VIRTUAL(r.DataTypes.STRING,b.fields?b.fields:["numberStr"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let a;for(;null!==(a=e.exec(b.template));)a.index===e.lastIndex&&e.lastIndex++,a.forEach(e=>{t.push(e)});let n=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const r=u.find(e=>e.dbName===t);if(r)if("date"===r.type){const e=r.format&&""!==r.format?r.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];n=n.replace(e,a)}return n}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("numberStr")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"numberStr"});class w extends r.Model{}const _={id:i.id,name:i.name,singularName:i.singularName,title:i.title,path:i.path,tableName:i.dbTableName,type:i.type,confirmation:i.confirmation,system:i.system,configurationData:i.configurationData,hierarchic:i.hierarchic,api:i.api?JSON.parse(i.api):null,staticAPI:i.staticAPI?JSON.parse(i.staticAPI):{},fields:u,reflection:b,withoutTimestamps:i.withoutTimestamps,processedPresentation:i.processedPresentation,accessRoleId:i.accessRoleId,accumulationRegister:i.accumulationRegister,model:w.init(e,{sequelize:s.default,modelName:i.model,tableName:i.dbTableName,indexes:l,timestamps:!0!==i.withoutTimestamps,mainModel:!0}),accTable:null,tables:{},controllers:{}};u.find(e=>!0===e.password)&&(_.model.prototype.toJSON=function(){const e=Object.assign({},this.get());for(const t of u.filter(e=>!0===e.password))delete e[t.name];return e});for(const e of u)e.leading&&n.push({field:e,belongTable:_.model});for(const e of u.filter(e=>e.isTablePart))y(e,_,a,n,t);if("register"===_.type&&_.accumulationRegister&&g(i,_,a),p){if(f.length>0){const e=_.model.prototype.toJSON;_.model.prototype.toJSON=function(){const t=e?e.call(this):Object.assign({},this.get?this.get():this);for(const e of f)e in t&&delete t[e];const a=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of a){const a=this.dataValues&&this.dataValues[e.dbName];a&&"object"==typeof a&&(t[e.dbName]=a)}return t}}_.model.addHook("beforeSave",e=>{for(const t of u.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const a=`__pending_${t.dbName}`;if(!Object.prototype.hasOwnProperty.call(e.dataValues,a))continue;const n=e.getDataValue(a),r=e.getDataValue(`_${t.dbName}Type`),s=c.default.typesSufixes();for(const a in s){const n=`_${t.dbName}${s[a]}`;e.setDataValue(n,null)}if(c.default.typeIncludesRef(t.type)&&e.setDataValue(`_${t.dbName}Ref`,null),r){const a=c.default.getFieldNameByType(t.dbName,r);a&&(c.default.isRefType(r)&&"object"==typeof n?e.setDataValue(a,n.id||null):e.setDataValue(a,n))}delete e.dataValues[a]}}),_.model.addHook("afterFind","refObjectsPreload",async e=>{if(!e)return;const a=Array.isArray(e)?e:[e],n=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),r=[];for(const e of a)for(const a of n){const n=e.getDataValue(`_${a.dbName}Type`),s=e.getDataValue(`_${a.dbName}Ref`);if(!n||!s)continue;const o=n.match(/^(catalog|document)\.(.+)$/);if(!o)continue;const i=o[1],l=o[2],u=t[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(s,{attributes:f}).then(t=>{if(!t)return;const n=t.get?t.get():t;if("catalog"===i){const t={id:n.id,name:n.name??null,presentation:n.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}else{const t={id:n.id,numberStr:n.numberStr??null,date:n.date??null,presentation:n.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});r.push(m)}r.length>0&&await Promise.all(r)})}t[_.name]=_}const l=[];for(const n of a){const a=t[n.objectName];if(a)if(n.field.multiType){if(!Array.isArray(n.field.ref))continue;const t=[];let r=!1;for(const s of n.field.ref){const n=e.find(e=>e.name===s);if(!n){r=!0,console.info("No belongs to object: ",`${a.name} -> ${s}`);break}t.push(n)}if(!r){const e=[];let r=!1;for(const o of t){const i=s.default.models[o.model];if(!i){r=!0,l.push({refField:n,object:a,belongToObject:t});break}e.push({object:o,model:i})}if(!r){const t=n.tableName?a.tables[n.tableName].model:n.accModel?a.accTable?.model:a.model;for(const r of e){const e=p(n);e.constraints=!1,e.as=`${n.field.name}${r.model.name}`,t.belongsTo(r.model,e);let s=n.accModel?`${a.name}Acc`:a.name;r.model.associations[s]&&(s=`${n.field.name}${s.charAt(0).toUpperCase()+s.slice(1)} `);const o={foreignKey:n.field.dbName,_noTablePart:!0,_registerRecords:"recorder"===n.field.name||void 0,constraints:!1,as:s,scope:{[`${n.field.name}Type`]:r.object.name}};r.model.hasMany(t,o)}t.addHook("afterFind",t=>{Array.isArray(t)||(t=t?[t]:[]);for(const a of t){const t=e.find(e=>a[`${n.field.name}Type`]===e.object.name);t&&void 0!==a[`${n.field.name}${t.model.name}`]?(a[n.field.name]=a[`${n.field.name}${t.model.name}`],a.dataValues[n.field.name]=a[`${n.field.name}${t.model.name}`]):(a[n.field.name]=null,a.dataValues[n.field.name]=null);for(const t of e)delete a[`${n.field.name}${t.model.name}`],delete a.dataValues[`${n.field.name}${t.model.name}`]}})}}}else{const t=e.find(e=>e.name===n.field.ref);if(t){const e=s.default.models[t.model];if(e){const t=p(n);if(n.tableName)a.tables[n.tableName].model.belongsTo(e,t);else if(n.accModel)a.accTable?.model.belongsTo(e,t);else try{a.model.belongsTo(e,t)}catch(a){console.error("Error in belongsTo: ",{belongToModel:e,fieldData:t},a)}}else l.push({refField:n,object:a,belongToObject:t})}else console.info("No belongs to object: ",`${a.name} -> ${n.field.name} (${n.field.ref})`)}else console.info("No object: ",n.objectName)}for(const a of n){const n=t[a.field.ref];if(n)n.model.hasMany(a.belongTable,{foreignKey:a.field.dbName,as:a.field.leadingAlias,_noTablePart:!0});else{const t=e.find(e=>e.name===a.field.ref);t?l.push({leading:!0,leadingField:a,model:t.model}):console.info("No app object for leading field: ",a.field.ref)}}for(const e in t){if(!t[e].processedPresentation)continue;const a=t[e];let n;const r=`${a.type}s/${a.name}/server.module.js`,s=`${process.cwd()}/src/modules/${r}`;i.default.existsSync(s)&&(n=require(s)),n?.initPresentation&&a.model.addHook("afterFind","addPresentationGetter",async e=>{Array.isArray(e)||(e=e?[e]:[]);for(const t of e){const e=await n.initPresentation(t);t.setDataValue("presentation",e)}})}for(const e of l)console.warn("Missing ref: ",e);return t}},7174:e=>{e.exports=require("compression")},7252:e=>{e.exports=require("express")},7281:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=a(9876),o=n(a(1688)),i=r.default.Router();i.get("/access_log",o.default.canRead({key:"access_logs"}),s.accessLogsController.getFilesInfo),t.default=i},7501:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(2282)),i=n(a(2103)),l=a(9239);t.default={async initCommonCommands(e){const t=await async function(){try{return(await s.default.query('\n SELECT\n command_groups.id AS "id",\n command_groups.name AS "name",\n command_groups."title" AS "title",\n command_groups."objectType" AS "objectType",\n command_groups."viewType" AS "viewType",\n command_groups."lang" AS "lang",\n command_groups."presentationType" AS "presentationType",\n command_groups."variant" AS "variant",\n command_groups."icon" AS "icon",\n command_groups."hidden" AS "hidden",\n command_groups."tooltip" AS "tooltip",\n command_groups."classes" AS "classes",\n command_groups."styles" AS "styles",\n groups_objects."objectId" AS "objectId"\n FROM \n command_groups\n LEFT JOIN \n command_groups_objects as "groups_objects"\n ON \n groups_objects."parentId" = command_groups.id \n WHERE\n command_groups."markedToDelete" = false',{type:r.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,icon:t.icon,variant:t.variant,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,isGroup:!0,objects:[],items:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[])}catch(e){return console.error(e),[]}}(),a=await async function(e){try{const t=(await s.default.query('\n SELECT\n common_commands.id AS "id",\n common_commands.name AS "name",\n common_commands."title" AS "title",\n common_commands."objectType" AS "objectType",\n common_commands."viewType" AS "viewType",\n common_commands."module" AS "module",\n common_commands."moduleV3" AS "moduleV3",\n common_commands."lang" AS "lang",\n common_commands."presentationType" AS "presentationType",\n common_commands."variant" AS "variant",\n common_commands."icon" AS "icon",\n common_commands."hidden" AS "hidden",\n common_commands."tooltip" AS "tooltip",\n common_commands."classes" AS "classes",\n common_commands."styles" AS "styles",\n common_commands."groupId" AS "groupId",\n commands_objects."objectId" AS "objectId"\n FROM \n common_commands\n LEFT JOIN \n common_commands_objects as "commands_objects"\n ON \n commands_objects."parentId" = common_commands.id \n WHERE\n common_commands."markedToDelete" = false',{type:r.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,module:t.module,moduleV3:t.moduleV3,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,variant:t.variant,icon:t.icon,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,groupId:t.groupId,isGroup:!1,objects:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[]),a=/^\s*export\s+/gm,n=/^\s*(?:async\s+)?function\s+commandProcessing\s*\([^)]*\)\s*{[\s\S]*?}/gm;for(const r of t){if(r.module){r.module=r.module.replace(a,""),n.lastIndex=0;const t=n.test(r.module);let s="";s=t?`function main() {${r.module.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(s);r.module=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),r.module=null}}if(r.moduleV3){r.moduleV3=r.moduleV3.replace(a,"function "),n.lastIndex=0;const t=n.test(r.moduleV3);let s="";s=t?`function main() {${r.moduleV3.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(s);r.moduleV3=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),r.moduleV3=null}}}return t}catch(e){return console.error(e),[]}}(e);for(const e of a)if(e.groupId){const a=t.find(t=>t.id===e.groupId&&t.isGroup);a&&a.items.push({...e})}else t.push({...e});return t}}},7565:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(6304)),o=r.default.Router(),i="app";o.get(`/${i}/info`,s.default.getAppInfo),o.get(`/${i}/objects`,s.default.getObjects),o.get(`/${i}/object_meta`,s.default.getObjectMetadata),o.get(`/${i}/object_fields`,s.default.getObjectFields),o.get(`/${i}/subordination`,s.default.getSubordination),o.get(`/${i}/registers_meta`,s.default.getRegistersMetadata),o.get(`/${i}/setting`,s.default.getSetting),o.get(`/${i}/enums`,s.default.getEnums),o.get(`/${i}/app-objects`,s.default.getAppObjects),o.get(`/${i}/common-modules`,s.default.getCommonModules),o.get(`/${i}/event-subscriptions`,s.default.getEventSubscriptions),o.get(`/${i}/view-settings/:id`,s.default.getViewSettings),o.get(`/${i}/store`,s.default.getClientStore),o.get(`/${i}/common-commands`,s.default.getCommonCommands),o.get(`/${i}/has-role`,s.default.hasRole),o.post(`/${i}/setting`,s.default.setSetting),o.post(`/${i}/raw-query`,s.default.rawQuery),o.post(`/${i}/exec-func`,s.default.execFunc),o.post(`/${i}/exec-common-module`,s.default.execCommonModuleFunc),t.default=o},7636:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(8608)),s=a(696),o=n(a(4716)),i=n(a(5788)),l=n(a(2282)),u=n(a(2555));function c(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={vertical:"middle",horizontal:"left",shrinkToFit:!0,wrapText:!0},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"e9ecef"}}}function d(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={horizontal:"left"},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"f2f5fa"}}}function f(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0}}function m(e,t,a,n,r,s){for(const o of t){let t=!0===n?1:e.fields.length;if(r.getRow(a).outlineLevel=s,o.isGroup){const i=r.getCell(a,1);if(y(e,i,o.groups),o.children.length>0?d(i):f(i),r.mergeCells(a,1,a,t),t+=1,e.colGroups.length>0){for(const e of o.totals){const n=r.getCell(a,t);n.value=e.value||0,o.children.length>0?d(n):f(n),n.alignment={horizontal:e.textAlign?e.textAlign:"left"},n.numFmt=p(e.format),t+=1}if(e.showXTotal)for(const n of e.calcs){const e=o.totals.reduce((e,t)=>t.id===n.id?e+t.value:e,0),s=r.getCell(a,t);s.value=e||0,o.children.length>0?d(s):f(s),s.alignment={horizontal:n.textAlign?n.textAlign:"left"},s.numFmt=p(n.format),t+=1}}else for(const e of o.totals){const n=r.getCell(a,t);n.value=e.value||0,o.children.length>0?d(n):f(n),n.alignment={horizontal:e.textAlign?e.textAlign:"left"},n.numFmt=p(e.format),t+=1}a+=1,o.children.length>0&&(a=m(e,o.children,a,n,r,s+1))}else{for(let t=0;t<e.fields.length;t++){const n=r.getCell(a,t+1);h(n,e.fields[t],o,e),f(n),n.alignment={horizontal:e.fields[t].textAlign}}let t=e.fields.length+1;if(e.colGroups.length>0){const n=o[e.colGroups[0].name],s={};for(const i of e.cols)for(let l=0;l<e.calcs.length;l++){let u=0;("object"===e.colGroups[0].valueType&&i.id===n?.id||i===n)&&(u=Number(o[e.calcs[l].name]||0));const c=r.getCell(a,t);c.value=u||0,f(c),c.alignment={horizontal:e.calcs[l].textAlign?e.calcs[l].textAlign:"left"},c.numFmt=p(e.calcs[l].format),Object.hasOwnProperty.call(s,e.calcs[l].name)?s[e.calcs[l].name]+=Number(u):s[e.calcs[l].name]=Number(u),t+=1}if(e.showXTotal)for(let n=0;n<e.calcs.length;n++){let o=s[e.calcs[n].name];const i=r.getCell(a,t+n);i.value=o||0,f(i),i.alignment={horizontal:e.calcs[n].textAlign?e.calcs[n].textAlign:"left"},i.numFmt=p(e.calcs[n].format)}}else if(e.rowGroups.length>0)for(let n=0;n<e.calcs.length;n++){let s=Number(o[e.calcs[n].name]||0);const i=r.getCell(a,t+n);i.value=s||0,f(i),i.alignment={horizontal:e.calcs[n].textAlign?e.calcs[n].textAlign:"left"},i.numFmt=p(e.calcs[n].format)}a+=1}}return a}function p(e){let t=null;if(e){const a=JSON.parse(e||'{"NFD": 3}'),n=0;a.NFD&&(t=n.toFixed(a.NFD))}return t}function h(e,t,a,n){let r=a[t.name]||null;switch(t.valueType){case"number":{let a=parseFloat(r);isNaN(a)&&(a=0),e.value=a||0,t.format&&(e.numFmt=p(t.format));break}case"date":default:e.value=r||"";break;case"object":e.value=r.name||"";break;case"boolean":e.value=Boolean(r||!1),e.numFmt="BOOLEAN";break;case"enum":if(r&&t.ref){const e=n.enums[t.ref].find(e=>e.value===r);r=e?e.title:r}e.value=r||""}}function y(e,t,a){if(1===a.length)switch(a[0].valueType){case"number":t.value=Number(a[0].value||0);break;case"date":""===a[0].value?t.value=null:a[0].format?t.value=(0,o.default)(a[0].value,a[0].format).toDate()||null:t.value=a[0].value||null;break;case"object":t.value=a[0].value.name||"";break;case"boolean":t.value=Boolean(a[0].value||!1),t.numFmt="BOOLEAN";break;default:t.value=a[0].value||""}else{let n="";for(let t=0;t<a.length;t++)"object"===a[t].valueType?n+=a[t].value?.name||e.lang.undefined:"boolean"===a[t].valueType?n+=a[t].value?e.lang.boolean.true:e.lang.boolean.false:n+=a[t].value,t<a.length-1&&(n=`${n}, `);t.value=n||""}}t.default={async generateExcel(e,t=null){const a={...e.body};if(a.rowGroups.length>1){const e=[];let t=[];for(let n=0;n<a.rowGroups.length;n++)!0!==a.rowGroups[n].withParent&&0!==n&&(e.push(t.length>1?t:t[0]),t=[]),t.push(a.rowGroups[n]),n===a.rowGroups.length-1&&e.push(t.length>1?t:t[0]);a.rowGroups=e}a.rowGroups.length>0&&(a.fields=a.fields.filter(e=>!a.calcs.find(t=>t.name===e.name))),a.enums=await async function(e){try{const t={};let a=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const n of a)t[n.name]=n.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(a.langCode);const n=new r.default.Workbook,o=n.addWorksheet("Sheet 1",{pageSetup:{paperSize:9,orientation:"landscape"}});let f=1;if(a.periodPresentation){let e=a.periodPresentation.length>20?a.lang.byPeriod:a.lang.byDate;o.getCell(f,1).value=`${e}:`,o.getCell(f,2).value=a.periodPresentation,f++}if(Array.isArray(a.filterPresentation)&&a.filterPresentation.length>0){o.getCell(f,1).value=`${a.lang.filter}:`;for(const e of a.filterPresentation)o.getCell(f,2).value=e,f++}const h=a.rowGroups.length>0&&!0===a.hideDetails;let y=f,g=a.rowGroups.length+(!0===h?0:1);g=a.colGroups.length>0&&g<2?2:g;let b=!0===h?1:a.fields.length;if(a.rowGroups.length>0){const e=1===a.rowGroups.length&&a.colGroups.length>0&&h?1:0;a.rowGroups.map(t=>{const a=o.getCell(f,1);a.value=function(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}(t),c(a),o.mergeCells(f,1,f+e,b),f+=1})}!0!==h&&(a.fields.map((e,t)=>{const a=o.getCell(f,t+1);c(a),a.value=e.title}),f+=1);const w=a.calcs.length;if(a.colGroups.length>0){for(const e of a.cols){const t=o.getCell(y,b+1);t.value=e.name,c(t),o.mergeCells(y,b+1,y,b+w),a.calcs.map((e,t)=>{const a=o.getCell(y+1,b+t+1);a.value=e.title,c(a),o.mergeCells(y+1,b+t+1,y+g-1,b+t+1)}),b+=w}if(a.showXTotal){const e=o.getCell(y,b+1);e.value=a.lang.total,c(e),o.mergeCells(y,b+1,y,b+w),a.calcs.map((e,t)=>{const a=o.getCell(y+1,b+t+1);a.value=e.title,c(a),o.mergeCells(y+1,b+t+1,y+g-1,b+t+1)})}}else a.rowGroups.length>0&&a.calcs.map((e,t)=>{const a=o.getCell(y,b+t+1);a.value=e.title,c(a),o.mergeCells(y,b+t+1,y+g-1,b+t+1)});f=m(a,a.data,y+g,h,o,0);let _=1;if(a.showYTotal>0&&a.totals.length>0){let e=!0===h?1:a.fields.length;if(a.rowGroups.length>0){const t=o.getCell(f,1);t.value=a.lang.total,d(t),o.mergeCells(f,1,f,e),a.totals.forEach((t,a)=>{_=e+a+1;const n=o.getCell(f,_);n.value=t.value||0,d(n),n.numFmt=p(t.format),n.alignment={horizontal:t.textAlign?t.textAlign:"left"}}),a.colGroups.length>0&&a.showXTotal&&a.calcs.map((t,n)=>{const r=a.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);_=e+a.totals.length+n+1;const s=o.getCell(f,_);s.value=r||0,d(s),s.numFmt=p(t.format),s.alignment={horizontal:t.textAlign?t.textAlign:"left"}})}else{let e=!0,t=1;for(const n of a.fields){const r=a.totals.find(e=>e.id===n.id);if(r){if(!0===e){const n=o.getCell(f,1);n.value=a.lang.total,d(n),o.mergeCells(f,1,f,t-1),e=!1}const s=o.getCell(f,t);s.value=Number(r.value||0),d(s),s.numFmt=p(r.format),s.alignment={horizontal:n.textAlign?n.textAlign:"left"}}else if(!0!==e){const e=o.getCell(f,t);e.value="",d(e)}_=t,t++}}}return function(e,t){e.columns.forEach(e=>{let a=6;e.eachCell(e=>{if(e.row>=t&&!e.isMerged){let t;if(e.numFmt&&null!=e.value)switch(e.type){case r.default.ValueType.Date:{const a=function(e){const t=e.getTimezoneOffset()/1440;return e.getTime()/864e5+(25569-t)}(e.value);t=(0,s.format)(e.numFmt,a).length;break}case r.default.ValueType.Number:default:t=(0,s.format)(e.numFmt,e.value).length}else t=e.value.toString().length;a=Math.max(a,t)}}),a>50&&(a=50),e.width=a+2})}(o,y),function(e){const t=e.getCell(e.rowCount,e.columnCount);e.pageSetup.printArea=`A1:${t.address}`}(o),t&&(t.status(200),t.setHeader("Content-Type","text/xlsx"),t.setHeader("Content-Disposition","attachment; filename=Excel.xlsx"),n.xlsx.write(t).then(function(){t.end()})),n}}},7825:e=>{e.exports=require("lodash")},7927:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.migrationsService=t.eventService=t.registerService=t.seederService=t.cryptoGen=t.defineObjects=t.logger=t.appService=t.documentService=t.controllerService=t.commonService=t.accessRights=t.sequelize=t.app=void 0;const r=n(a(6928)),s=n(a(7252)),o=n(a(7174)),i=n(a(6898)),l=n(a(2525)),u=n(a(8577)),c=a(3903),d=n(a(8278)),f=n(a(5977)),m=n(a(3857)),p=n(a(1763)),h=n(a(6456)),y=n(a(5560)),g=n(a(3407)),b=n(a(3464)),w=n(a(6797)),_=n(a(2362));t.eventService=_.default;const S=n(a(5788));t.sequelize=S.default;const v=(0,m.default)(f.default.Store);process.on("unhandledRejection",e=>console.error(e)),process.on("uncaughtException",e=>console.error(e)),process.on("warning",e=>console.warn(e.stack));const E=(0,s.default)();t.app=E,E.use(s.default.json({limit:"100mb"})),E.use(s.default.urlencoded({extended:!1})),E.use((0,i.default)()),(0,h.default)(E),E.use((0,l.default)()),E.use((0,o.default)()),E.use(s.default.static(r.default.join("src","../public")));const R={origin:[...(process.env.ALLOW_ORIGIN||"").split(","),"app://."],methods:["OPTIONS","GET","POST","PUT","PATCH","DELETE"],allowedHeaders:["Content-Type","Authorization","x-access-token","x-api-key","device_uuid","Access-Control-Allow-Origin","Access-Control-Allow-Credentials","x-client-version"],credentials:!0};E.use((0,u.default)(R)),a(9);const $={genid:()=>(0,c.v4)(),store:new v({db:S.default,table:"Session",extendDefaultFields:function(e,t){const a=t?.passport?.user;return{id:(0,c.v4)(),data:e.data,expires:e.expires,userId:a,licNumber:t?.license?.number||null,clientType:t?.clientType||null}}}),secret:"Mk9pZ2Adth",resave:!1,rolling:!0,saveUninitialized:!1,cookie:{httpOnly:!0,maxAge:Number(process.env.SESSION_MAX_AGE||"900000"),secure:!1}};E.use((0,f.default)($));const T=(0,p.default)({windowMs:6e4,max:1e5,statusCode:429});E.use(T),async function(e){try{await(0,y.default)(e),(0,g.default)(e)}catch(e){console.error(e)}finally{b.default.init(e.locals.objects)}}(E),w.default.initializePassport(d.default),E.use(d.default.initialize()),E.use(d.default.session()),_.default.init(E),E.set("views",r.default.join("src","views")),E.set("view engine","pug"),E.use((e,t,a,n)=>{console.error(e),a.locals.message=e.message,a.locals.error="development"===t.app.get("env")?e:{},a.status(e.status||500),a.render("error")});const N=n(a(1688));t.accessRights=N.default;const O=n(a(2282));t.logger=O.default;const D=n(a(2555));t.commonService=D.default;const C=n(a(3958));t.controllerService=C.default;const A=n(a(4621));t.appService=A.default;const j=n(a(6224));t.defineObjects=j.default;const I=n(a(6836));t.cryptoGen=I.default;const x=n(a(2671));t.documentService=x.default;const P=n(a(9880));t.seederService=P.default;const F=n(a(6299));t.registerService=F.default;const M=n(a(6910));t.migrationsService=M.default},8278:e=>{e.exports=require("passport")},8287:(e,t,a)=>{var n=a(6661),r=a(8876),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=l,t.IS=50;var o=2147483647;function i(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,a){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return d(e)}return u(e,t,a)}function u(e,t,a){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var a=0|h(e,t),n=i(a),r=n.write(e,t);return r!==a&&(n=n.slice(0,r)),n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(V(e,Uint8Array)){var t=new Uint8Array(e);return m(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return m(e,t,a);if("undefined"!=typeof SharedArrayBuffer&&(V(e,SharedArrayBuffer)||e&&V(e.buffer,SharedArrayBuffer)))return m(e,t,a);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,a);var r=function(e){if(l.isBuffer(e)){var t=0|p(e.length),a=i(t);return 0===a.length||e.copy(a,0,0,t),a}return void 0!==e.length?"number"!=typeof e.length||B(e.length)?i(0):f(e):"Buffer"===e.type&&Array.isArray(e.data)?f(e.data):void 0}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,a);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function d(e){return c(e),i(e<0?0:0|p(e))}function f(e){for(var t=e.length<0?0:0|p(e.length),a=i(t),n=0;n<t;n+=1)a[n]=255&e[n];return a}function m(e,t,a){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(a||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===t&&void 0===a?new Uint8Array(e):void 0===a?new Uint8Array(e,t):new Uint8Array(e,t,a),Object.setPrototypeOf(n,l.prototype),n}function p(e){if(e>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||V(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var a=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===a)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return a;case"utf8":case"utf-8":return k(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*a;case"hex":return a>>>1;case"base64":return U(e).length;default:if(r)return n?-1:k(e).length;t=(""+t).toLowerCase(),r=!0}}function y(e,t,a){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===a||a>this.length)&&(a=this.length),a<=0)return"";if((a>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,a);case"utf8":case"utf-8":return T(this,t,a);case"ascii":return O(this,t,a);case"latin1":case"binary":return D(this,t,a);case"base64":return $(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,a);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,a){var n=e[t];e[t]=e[a],e[a]=n}function b(e,t,a,n,r){if(0===e.length)return-1;if("string"==typeof a?(n=a,a=0):a>2147483647?a=2147483647:a<-2147483648&&(a=-2147483648),B(a=+a)&&(a=r?0:e.length-1),a<0&&(a=e.length+a),a>=e.length){if(r)return-1;a=e.length-1}else if(a<0){if(!r)return-1;a=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:w(e,t,a,n,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):w(e,[t],a,n,r);throw new TypeError("val must be string, number or Buffer")}function w(e,t,a,n,r){var s,o=1,i=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,i/=2,l/=2,a/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(r){var c=-1;for(s=a;s<i;s++)if(u(e,s)===u(t,-1===c?0:s-c)){if(-1===c&&(c=s),s-c+1===l)return c*o}else-1!==c&&(s-=s-c),c=-1}else for(a+l>i&&(a=i-l),s=a;s>=0;s--){for(var d=!0,f=0;f<l;f++)if(u(e,s+f)!==u(t,f)){d=!1;break}if(d)return s}return-1}function _(e,t,a,n){a=Number(a)||0;var r=e.length-a;n?(n=Number(n))>r&&(n=r):n=r;var s=t.length;n>s/2&&(n=s/2);for(var o=0;o<n;++o){var i=parseInt(t.substr(2*o,2),16);if(B(i))return o;e[a+o]=i}return o}function S(e,t,a,n){return q(k(t,e.length-a),e,a,n)}function v(e,t,a,n){return q(function(e){for(var t=[],a=0;a<e.length;++a)t.push(255&e.charCodeAt(a));return t}(t),e,a,n)}function E(e,t,a,n){return q(U(t),e,a,n)}function R(e,t,a,n){return q(function(e,t){for(var a,n,r,s=[],o=0;o<e.length&&!((t-=2)<0);++o)n=(a=e.charCodeAt(o))>>8,r=a%256,s.push(r),s.push(n);return s}(t,e.length-a),e,a,n)}function $(e,t,a){return 0===t&&a===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,a))}function T(e,t,a){a=Math.min(e.length,a);for(var n=[],r=t;r<a;){var s,o,i,l,u=e[r],c=null,d=u>239?4:u>223?3:u>191?2:1;if(r+d<=a)switch(d){case 1:u<128&&(c=u);break;case 2:128==(192&(s=e[r+1]))&&(l=(31&u)<<6|63&s)>127&&(c=l);break;case 3:s=e[r+1],o=e[r+2],128==(192&s)&&128==(192&o)&&(l=(15&u)<<12|(63&s)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:s=e[r+1],o=e[r+2],i=e[r+3],128==(192&s)&&128==(192&o)&&128==(192&i)&&(l=(15&u)<<18|(63&s)<<12|(63&o)<<6|63&i)>65535&&l<1114112&&(c=l)}null===c?(c=65533,d=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),r+=d}return function(e){var t=e.length;if(t<=N)return String.fromCharCode.apply(String,e);for(var a="",n=0;n<t;)a+=String.fromCharCode.apply(String,e.slice(n,n+=N));return a}(n)}l.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),l.poolSize=8192,l.from=function(e,t,a){return u(e,t,a)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,a){return function(e,t,a){return c(e),e<=0?i(e):void 0!==t?"string"==typeof a?i(e).fill(t,a):i(e).fill(t):i(e)}(e,t,a)},l.allocUnsafe=function(e){return d(e)},l.allocUnsafeSlow=function(e){return d(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var a=e.length,n=t.length,r=0,s=Math.min(a,n);r<s;++r)if(e[r]!==t[r]){a=e[r],n=t[r];break}return a<n?-1:n<a?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var a;if(void 0===t)for(t=0,a=0;a<e.length;++a)t+=e[a].length;var n=l.allocUnsafe(t),r=0;for(a=0;a<e.length;++a){var s=e[a];if(V(s,Uint8Array))r+s.length>n.length?l.from(s).copy(n,r):Uint8Array.prototype.set.call(n,s,r);else{if(!l.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,r)}r+=s.length}return n},l.byteLength=h,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)g(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},l.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?T(this,0,e):y.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",a=t.IS;return e=this.toString("hex",0,a).replace(/(.{2})/g,"$1 ").trim(),this.length>a&&(e+=" ... "),"<Buffer "+e+">"},s&&(l.prototype[s]=l.prototype.inspect),l.prototype.compare=function(e,t,a,n,r){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===a&&(a=e?e.length:0),void 0===n&&(n=0),void 0===r&&(r=this.length),t<0||a>e.length||n<0||r>this.length)throw new RangeError("out of range index");if(n>=r&&t>=a)return 0;if(n>=r)return-1;if(t>=a)return 1;if(this===e)return 0;for(var s=(r>>>=0)-(n>>>=0),o=(a>>>=0)-(t>>>=0),i=Math.min(s,o),u=this.slice(n,r),c=e.slice(t,a),d=0;d<i;++d)if(u[d]!==c[d]){s=u[d],o=c[d];break}return s<o?-1:o<s?1:0},l.prototype.includes=function(e,t,a){return-1!==this.indexOf(e,t,a)},l.prototype.indexOf=function(e,t,a){return b(this,e,t,a,!0)},l.prototype.lastIndexOf=function(e,t,a){return b(this,e,t,a,!1)},l.prototype.write=function(e,t,a,n){if(void 0===t)n="utf8",a=this.length,t=0;else if(void 0===a&&"string"==typeof t)n=t,a=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(a)?(a>>>=0,void 0===n&&(n="utf8")):(n=a,a=void 0)}var r=this.length-t;if((void 0===a||a>r)&&(a=r),e.length>0&&(a<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return _(this,e,t,a);case"utf8":case"utf-8":return S(this,e,t,a);case"ascii":case"latin1":case"binary":return v(this,e,t,a);case"base64":return E(this,e,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,t,a);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var N=4096;function O(e,t,a){var n="";a=Math.min(e.length,a);for(var r=t;r<a;++r)n+=String.fromCharCode(127&e[r]);return n}function D(e,t,a){var n="";a=Math.min(e.length,a);for(var r=t;r<a;++r)n+=String.fromCharCode(e[r]);return n}function C(e,t,a){var n=e.length;(!t||t<0)&&(t=0),(!a||a<0||a>n)&&(a=n);for(var r="",s=t;s<a;++s)r+=L[e[s]];return r}function A(e,t,a){for(var n=e.slice(t,a),r="",s=0;s<n.length-1;s+=2)r+=String.fromCharCode(n[s]+256*n[s+1]);return r}function j(e,t,a){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>a)throw new RangeError("Trying to access beyond buffer length")}function I(e,t,a,n,r,s){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||t<s)throw new RangeError('"value" argument is out of bounds');if(a+n>e.length)throw new RangeError("Index out of range")}function x(e,t,a,n,r,s){if(a+n>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function P(e,t,a,n,s){return t=+t,a>>>=0,s||x(e,0,a,4),r.write(e,t,a,n,23,4),a+4}function F(e,t,a,n,s){return t=+t,a>>>=0,s||x(e,0,a,8),r.write(e,t,a,n,52,8),a+8}l.prototype.slice=function(e,t){var a=this.length;(e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,l.prototype),n},l.prototype.readUintLE=l.prototype.readUIntLE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e],r=1,s=0;++s<t&&(r*=256);)n+=this[e+s]*r;return n},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e+--t],r=1;t>0&&(r*=256);)n+=this[e+--t]*r;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e],r=1,s=0;++s<t&&(r*=256);)n+=this[e+s]*r;return n>=(r*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=t,r=1,s=this[e+--n];n>0&&(r*=256);)s+=this[e+--n]*r;return s>=(r*=128)&&(s-=Math.pow(2,8*t)),s},l.prototype.readInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var a=this[e+1]|this[e]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,a,n){e=+e,t>>>=0,a>>>=0,n||I(this,e,t,a,Math.pow(2,8*a)-1,0);var r=1,s=0;for(this[t]=255&e;++s<a&&(r*=256);)this[t+s]=e/r&255;return t+a},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,a,n){e=+e,t>>>=0,a>>>=0,n||I(this,e,t,a,Math.pow(2,8*a)-1,0);var r=a-1,s=1;for(this[t+r]=255&e;--r>=0&&(s*=256);)this[t+r]=e/s&255;return t+a},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*a-1);I(this,e,t,a,r-1,-r)}var s=0,o=1,i=0;for(this[t]=255&e;++s<a&&(o*=256);)e<0&&0===i&&0!==this[t+s-1]&&(i=1),this[t+s]=(e/o|0)-i&255;return t+a},l.prototype.writeIntBE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*a-1);I(this,e,t,a,r-1,-r)}var s=a-1,o=1,i=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===i&&0!==this[t+s+1]&&(i=1),this[t+s]=(e/o|0)-i&255;return t+a},l.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,a){return P(this,e,t,!0,a)},l.prototype.writeFloatBE=function(e,t,a){return P(this,e,t,!1,a)},l.prototype.writeDoubleLE=function(e,t,a){return F(this,e,t,!0,a)},l.prototype.writeDoubleBE=function(e,t,a){return F(this,e,t,!1,a)},l.prototype.copy=function(e,t,a,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<a&&(n=a),n===a)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(a<0||a>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-a&&(n=e.length-t+a);var r=n-a;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,a,n):Uint8Array.prototype.set.call(e,this.subarray(a,n),t),r},l.prototype.fill=function(e,t,a,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,a=this.length):"string"==typeof a&&(n=a,a=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!l.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var r=e.charCodeAt(0);("utf8"===n&&r<128||"latin1"===n)&&(e=r)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<a)throw new RangeError("Out of range index");if(a<=t)return this;var s;if(t>>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(s=t;s<a;++s)this[s]=e;else{var o=l.isBuffer(e)?e:l.from(e,n),i=o.length;if(0===i)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<a-t;++s)this[s+t]=o[s%i]}return this};var M=/[^+/0-9A-Za-z-_]/g;function k(e,t){var a;t=t||1/0;for(var n=e.length,r=null,s=[],o=0;o<n;++o){if((a=e.charCodeAt(o))>55295&&a<57344){if(!r){if(a>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&s.push(239,191,189);continue}r=a;continue}if(a<56320){(t-=3)>-1&&s.push(239,191,189),r=a;continue}a=65536+(r-55296<<10|a-56320)}else r&&(t-=3)>-1&&s.push(239,191,189);if(r=null,a<128){if((t-=1)<0)break;s.push(a)}else if(a<2048){if((t-=2)<0)break;s.push(a>>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;s.push(a>>12|224,a>>6&63|128,63&a|128)}else{if(!(a<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return s}function U(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,a,n){for(var r=0;r<n&&!(r+a>=t.length||r>=e.length);++r)t[r+a]=e[r];return r}function V(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function B(e){return e!=e}var L=function(){for(var e="0123456789abcdef",t=new Array(256),a=0;a<16;++a)for(var n=16*a,r=0;r<16;++r)t[n+r]=e[a]+e[r];return t}()},8356:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(4716)),s=a(9031),o=a(7138),i=n(a(2282)),l=n(a(5788)),u=n(a(9896)),c=n(a(7636)),d=n(a(6357)),f=n(a(2555)),m=n(a(3830)),p=a(9031);function h(e,t,a){let n=0;for(const r of e)r.lvl=t,r.hasSub?r.childrenCount=h(r.children,t+1,a):r.childrenCount=!0===a.hideDetails?0:r.children.length,n+=r.childrenCount+1;return n}function y(e,t){for(const a of e)a._index=t++,a._vIndex=a._index,a.children?.length>0&&(t=y(a.children,t));return t}function g(e,t,a){for(const n of e)if(!0===n.hasSub)a=g(n.children,t,a);else for(const e of n.children)e[t.name]=a,a++;return a}function b(e,t,a,n){const r=e.rowGroups[t],s=R(a,r);let o=0;for(let i of s){const s=$(a,r,i),l={isGroup:!0,expanded:!0,hasSub:e.rowGroups.length-1>t,lvl:t,groups:[{value:i,...r}],totals:[],children:[],childrenCount:0};e.rowGroups.length-1===t?(l.children=s,l.childrenCount=!0===e.hideDetails?0:s.length):l.childrenCount=b(e,t+1,s,l.children),n.push(l),o+=l.childrenCount+1}return o}function w(e,t){if(0===e.length)return;if(!e[0].isGroup)return;const a=e[0].lvl;if(a<t)for(const a of e){const e=w(a.children,t);e&&(a.children=e)}else if(a===t){const t=[];for(const n of e){const e=[...n.groups];for(const r of n.children){const n=e.concat(r.groups);t.push({...r,groups:n,lvl:a})}}return t}}function _(e){if(Array.isArray(e))for(let t=e.length-1;t>=0;t--){const a=e[t];_(a.children);const n=a.totals?.filter(e=>0!==e.value);0===n?.length&&(0===a.children?.length&&a.childrenCount>0||0===a.childrenCount)&&e.splice(t,1)}}function S(e,t,a=null){let n=0;if(!0===e.hasSub){const r=[];e.children.map(e=>{r.push(S(e,t,a))}),n=E(r,t.expression)}else n=v(e.children,t,a);return a?e.totals.push({...t,value:n,group:a.value}):e.totals.push({...t,value:n}),n}function v(e,t,a=null){let n,r=0,s=0,o=[];switch(o=a?e.filter(e=>"object"===a.valueType?e[a.name].id===a.value.id:e[a.name]===a.value):e,t.expression){case"sum":o.map(e=>{s+=1*e[t.name]}),s=f.default.normalizeFloat(s,6);break;case"average":o.map(e=>{r+=1*e[t.name]}),s+=r/o.length,s=f.default.normalizeFloat(s,6);break;case"max":if(o.length>0){n=1*o[0][t.name];for(let e=1;e<o?.length;e++)n<=1*o[e][t.name]&&(n=1*o[e][t.name]);s<=n&&(s=n)}break;case"min":if(o.length>0){n=o[0][t.name];for(let e=1;e<o?.length;e++)n>=o[e][t.name]&&(n=o[e][t.name]);s=n}}return s}function E(e,t){let a=0;switch(t){case"sum":a=e.reduce((e,t)=>e+t,0),a=f.default.normalizeFloat(a,6);break;case"average":a=e.reduce((e,t)=>e+t,0)/e.length,a=f.default.normalizeFloat(a,6);break;case"max":a=Math.max(...e);break;case"min":a=Math.min(...e)}return a}function R(e,t){let a=[];if("object"===t.valueType){const n=new Set;for(const r of e)n.has(r[t.name].id)||(n.add(r[t.name].id),a.push(r[t.name]))}else a=[...new Set(e.map(e=>e[t.name]))];return a}function $(e,t,a){return e.filter(e=>"object"===t.valueType?e[t.name].id===a.id:e[t.name]===a)}function T(e){for(const t of e)t.hasSub?T(t.children):t.children=[]}function N(e,t){return e.lastIndexOf("WHERE")>e.lastIndexOf("FROM")?O(t,!0):"\nWHERE "+O(t)}function O(e,t=!1){const a=e.join("");return t?a:a.substring(5)}t.default={async getSettings(e,t,a){const n=e.params.id;if(!n||"string"!=typeof n||36!==n.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(n,{attributes:{exclude:["dataQuery"]}}).then(e=>{e?t.status(o.StatusCodes.OK).send(e):(i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`}))}).catch(e=>{i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async getResult(e,t,a){let n={...e.body};if(!n.id||"string"!=typeof n.id||36!==n.id.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(n.id).then(async a=>{if(a){let o;n.query=a.dataQuery,n.externalData=a.externalData,n.externalUsername=a.externalUsername,n.externalPassword=a.externalPassword,n.externalServer=a.externalServer,n.externalPort=a.externalPort,n.externalDatabase=a.externalDatabase,n.externalDialect=a.externalDialect,n.externalDateKind=a.externalDateKind,n.externalDateFormat=a.externalDateFormat,n.fields=function(e){let t=[];for(const a of e)a.isGroup?t=t.concat(a.fields):t.push(a);return t}(n.fields),function(e){if(e.sqlFilters=[],e.sqlReplacements={},"without"!==e.period.type){let t,a,n;"date"===e.period.type?(t=new Date(e.period.date).setHours(0,0,0,0),a=new Date(e.period.date).setHours(23,59,59,999),n=new Date(e.period.date),e.externalData&&"default"===e.externalDateKind?e.sqlReplacements.date=new Date(n).toLocaleDateString():e.sqlReplacements.date=new Date(n).toISOString()):"dateTime"===e.period.dateType?(t=new Date(e.period.dateFrom),a=new Date(e.period.dateTo)):(t=new Date(e.period.dateFrom).setHours(0,0,0,0),a=new Date(e.period.dateTo).setHours(23,59,59,999)),e.externalData&&"default"===e.externalDateKind?(e.sqlReplacements.dateFrom=new Date(t).toLocaleDateString(),e.sqlReplacements.dateTo=new Date(a).toLocaleDateString()):(e.sqlReplacements.dateFrom=new Date(t).toISOString(),e.sqlReplacements.dateTo=new Date(a).toISOString())}let t="";const a=e.filters;for(let n of a){let a=n.path;if("filled"===n.operator)t=`${a} IS NOT NULL`;else if("notFilled"===n.operator)t=`${a} IS NULL`;else if("object"===n.valueType)if("inList"===n.operator||"notInList"===n.operator){let e=[];for(let t of n.value)e.push(`'${t.id}'`);t=`${a} ${"inList"===n.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=n.value?`${a} ${n.operator} '${n.value.id}'`:`${a} IS NULL`;else if("enum"===n.valueType)if("inList"===n.operator||"notInList"===n.operator){let e=[];for(let t of n.value)e.push(`'${t}'`);t=`${a} ${"inList"===n.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=`${a} ${n.operator} '${n.value}'`;else if("text"===n.valueType)t="iLike"===n.operator?`${a} LIKE '%${n.value}%'`:"notILike"===n.operator?`${a} NOT LIKE '%${n.value}%'`:a+n.operator+"'"+n.value+"'";else if("date"===n.valueType)if("between"===n.operator){if(n.value?.[0]&&n.value?.[1]){let e="",s="";if("dateTime"===n.dateType)e=(0,r.default)(n.value[0],"DD.MM.YYYY HH:mm:ss").toISOString(),s=(0,r.default)(n.value[1],"DD.MM.YYYY HH:mm:ss").toISOString();else{const t=(0,r.default)(n.value[0],"DD.MM.YYYY").toDate(),a=(0,r.default)(n.value[1],"DD.MM.YYYY").toDate();e=(0,r.default)(t.setHours(0,0,0,0)).toISOString(),s=(0,r.default)(a.setHours(23,59,59,999)).toISOString()}t=`${a} ${n.operator} '${e}' and '${s}'`}}else t="dateTime"===n.dateType?`${a} ${n.operator} '${(0,r.default)(n.value,"DD.MM.YYYY HH:mm:ss").toISOString()}'`:`${a} ${n.operator} '${(0,r.default)(n.value,"DD.MM.YYYY").toISOString()}'`;else if("number"===n.valueType&&"between"===n.operator){if(n.value?.[0]&&n.value?.[1]){let e=n.value[0],r=n.value[1];t=`${a} ${n.operator} '${e}' and '${r}'`}}else t=a+n.operator+n.value;e.sqlFilters.push(" AND "+t)}}(n);const c=`reports/${a.name}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;u.default.existsSync(d)&&(o=require(d));let f=[];f=o?.onComposeResult&&"function"==typeof o?.onComposeResult?await o.onComposeResult(e,a,n):await async function(e,t,a){await async function(e,t){const a=await(0,m.default)(e);let n=t.query.match(/\{([^}]+)\}/g);if(n){let e,r=n.map(e=>e.slice(1,-1));for(const n of r){const r=a.find(e=>e.name===n);r&&(t.query=t.query.replace(`{${n}}`,n),e=e?`${e}, ${n} as (${r.query})`:`with ${n} as (${r.query})`,r.params&&(t.sqlReplacements=Object.assign(t.sqlReplacements,r.params)))}e&&(t.query=`${e} ${t.query}`)}}(e,t);const n=t.query.lastIndexOf("ORDER BY"),r=t.query.lastIndexOf("GROUP BY"),o=t.query.lastIndexOf("HAVING"),i=t.query.lastIndexOf("FROM");let u=t.query.length,c=!1,d=[{name:"ORDER BY",index:n},{name:"HAVING",index:o},{name:"GROUP BY",index:r}];if(d=d.filter(e=>e.index>i),d.length>0&&(c=!0,u=Math.min(...d.map(e=>e.index))),t.sqlFilters.length>0&&(t.query=c?function(e,t,a){const n=e.substring(0,a),r=e.substring(a);return`${n} ${N(e,t)} \n${r}`}(t.query,t.sqlFilters,u):t.query+N(t.query,t.sqlFilters)),a?.beforeQuery&&"function"==typeof a?.beforeQuery&&await a.beforeQuery(e,t),!0===t.externalData){const e={userName:t.externalUsername,password:t.externalPassword,host:t.externalServer,port:Number(t.externalPort),database:t.externalDatabase,dialect:t.externalDialect,pool:{max:5,min:0,acquire:3e4,idle:1e4}},a=new p.Sequelize(e.database,e.userName,e.password,{host:e.host,port:e.port,dialect:e.dialect,pool:{max:e.pool.max,min:e.pool.min,acquire:e.pool.acquire,idle:e.pool.idle}});return await a.query(t.query,{type:s.QueryTypes.SELECT,replacements:t.sqlReplacements})}return await l.default.query(t.query,{type:s.QueryTypes.SELECT,replacements:t.sqlReplacements})}(e,n,o);let $=await async function(e,t){let a=[],n=0;for(const s of e){n+=1;const e={};for(const a of t)if(!0===a.rowNumber)e[a.name]=n;else if("date"===a.valueType){let t="DD.MM.YYYY HH:mm:ss";"date"===a.dateType&&(t="DD.MM.YYYY"),a.format&&""!==a.format&&(t=a.format),e[a.name]=s[a.name]?(0,r.default)(s[a.name]).format(t):""}else if("number"===a.valueType){let t=s[a.name];if(t&&a.format&&""!==a.format)try{const n=JSON.parse(a.format);n.NFD&&(t=Number(t),t=t.toFixed(n.NFD)),e[a.name]=t}catch(t){e[a.name]="0",i.default.error("Error in Reports getResult controller",{meta:t})}else e[a.name]=t}else if("object"===a.valueType)if(a.attribs){e[a.name]={};for(const t of a.attribs)e[a.name][t.name]=s[t.path]}else e[a.name]={id:void 0,name:void 0};else e[a.name]=s[a.name];a.push(e)}return a}(f,n.fields),O=$.length;n.sorts?.length>0&&function(e,t,a){e.sort((e,n)=>{for(const s of t){let t,o;"object"===s.valueType?(t=e[s.name]?.name||"",o=n[s.name]?.name||""):(t=e[s.name]||"",o=n[s.name]||"");let i=0;if("date"===s.valueType)if(a.externalData&&"default"===a.externalDateKind&&a.externalDateFormat&&a.externalDateFormat.length>0){const e=(0,r.default)(t,a.externalDateFormat).toDate(),n=(0,r.default)(o,a.externalDateFormat).toDate();i=e.getTime()-n.getTime()}else{const e=new Date(t),a=new Date(o);i=e.getTime()-a.getTime()}else"number"==typeof t&&"number"==typeof o?i=t-o:"string"==typeof t&&"string"==typeof o&&(i=t.localeCompare(o));if(0!==i)return"asc"===s.direction?i:-1*i}return 0})}($,n.sorts,n),n.cols=[],n.colGroups?.length>0&&(n.cols=R($,n.colGroups[0]));let D=!1;n.rowGroups?.length>0?($.length>n.maxLimit&&($=[],D=!0),$=function(e,t){let a=[];b(t,0,e,a);let n=!1;for(let e=t.rowGroups.length-1;e>0;e--)if(t.rowGroups[e].withParent){const t=w(a,e-1);t&&(a=t),n=!0}return n&&h(a,0,t),function(e,t){if(0!==e.calcs.length){if(e.colGroups.length>0){const a=e.colGroups[0];for(const n of e.cols)for(const r of e.calcs)for(const e of t)S(e,r,{name:a.name,valueType:a.valueType,value:n})}else for(const a of e.calcs)for(const e of t)S(e,a);_(t)}}(t,a),a}($,n),function(e,t){const a=e.filter(e=>!0===e.rowNumber);for(const e of a){let a=1;for(const n of t)if(!0===n.hasSub)a=g(n.children,e,a);else for(const t of n.children)t[e.name]=a,a++}}(n.fields,$),O=y($,1)):function(e,t,a=1){const n=e.filter(e=>!0===e.rowNumber);for(const e of n)for(const n of t)n[e.name]=a,a++}(n.fields,$);const C=[];!0===n.showYTotal&&function(e,t,a){if(0!==e.calcs?.length)if(e.colGroups?.length>0){const n=e.colGroups[0].valueType;for(const r of e.cols)for(const s of e.calcs){const e=[];for(const a of t){let t=a.totals.find(e=>e.name===s.name&&("object"===n?e.group.id===r.id:e.group===r));t&&e.push(t.value)}const o=E(e,s.expression);a.push({...s,value:o,group:r})}}else for(const n of e.calcs)if(e.rowGroups?.length>0){const e=[];for(const a of t){const t=a.totals.find(e=>e.name===n.name);t&&e.push(t.value)}const r=E(e,n.expression);a.push({...n,value:r})}else{const e=v(t,n);a.push({...n,value:e})}}(n,$,C),n.rowGroups?.length>0&&n.hideDetails&&(T($),O=y($,1)),0===n.rowGroups?.length&&n.limit&&n.page&&($=function(e,t,a){const n=(a-1)*t,r=n+t;return e.slice(n,r)}($,n.limit,n.page));let A={resultData:$,cols:n.cols,totals:C,total:O-1,limitError:D};A?t.status(200).send(A):(console.error("Bad request"),t.status(400).send({message:"Bad request"}))}else i.default.error("Error in reports getResult controller",{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`})}).catch(e=>{i.default.error("Error in reports getResult controller",{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async generateExcel(e,t){c.default.generateExcel(e,t)},async generatePdf(e,t){d.default.generatePdf(e,t)}}},8403:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(6980)),s=a(7138),o=n(a(2282)),i=n(a(829)),l=n(a(5788)),u=n(a(8473));t.default={async login(e,t,a){let n=e.session.passport;const r=await u.default.getLicense(e.sessionID);e.session.regenerate(a=>{e.session.passport=n,e.session.license=r,e.session.clientType=e.body?.clientType||null,e.session.save(a=>{const n=i.default.sign({id:e.user.id},"RGPRIVATEKEY",{expiresIn:"360h"}),o={isAuthenticated:!0,result:n,token:n,id:e.user.id,email:e.user.email,login:e.user.login,fullRights:e.user.fullRights,use2FA:e.user.use2FA,useCustomerAccess:e.user.useCustomerAccess,name:e.user.name,externalUser:e.user.externalUser,language:e.user.language,forwarderId:e.user.forwarderId,tokenElectron:e.user.tokenElectron,license:r};t.status(s.StatusCodes.OK).send(o)})})},async session(e,t,a){const n={isAuthenticated:!1};if(e.session.passport?.user)try{const a=await l.default.models.User.findOne({where:{id:e.session.passport.user}});a?(n.isAuthenticated=!0,n.id=a.id,n.name=a.name,n.login=a.login,n.fullRights=a.fullRights,n.use2FA=a.use2FA,n.useCustomerAccess=a.useCustomerAccess,n.externalUser=a.externalUser,n.email=a.email,n.language=a.language,n.license=e.session.license,n.forwarderId=a.forwarderId,t.status(s.StatusCodes.OK).send({result:n,message:"OK"})):t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})}catch(e){t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})}else t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})},async logout(e,t,a){if(e.logout(function(e){if(e)return a(e)}),!e.session)return e.isUnauthenticated()?void t.status(s.StatusCodes.OK).send("Logged out successfully"):void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not log out");e.logout(e=>{e?t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not clear out session info completely"):t.status(s.StatusCodes.OK).send("Logged out successfully")})},async register(e,t,a){try{const a=await r.default.register(e.body);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in register Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async confirmEmailAddress(e,t,a){try{const a=await r.default.confirmEmailAddress(e.params.token);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in confirmEmailAddress Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resendEmailAddressConfirmationLink(e,t,a){try{const a=await r.default.resendEmailAddressConfirmationLink(e.query.email);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in resendEmailAddressConfirmationLink Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async forgotPassword(e,t,a){try{const a=e.headers.origin||e.headers.referer||process.env.DEFAULT_CLIENT_URL,n=await r.default.forgotPassword(e.body.email,a);return void t.status(n.httpStatus).send(n.result)}catch(e){return o.default.error("Error in forgotPassword Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async validatePasswordResetToken(e,t,a){try{const a=await r.default.isPasswordResetTokenValid(e.params.token);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in validatePasswordResetToken Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resetPassword(e,t,a){const{token:n,newPassword:i}=e.body;if(n&&i)try{const a=await r.default.resetPassword(e.body.token,e.body.newPassword);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in resetPassword Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(s.StatusCodes.BAD_REQUEST).send({message:"Token and new password are required"})}}},8461:e=>{e.exports=require("multer")},8473:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);t.default={async getLicense(e){const t=process.env.LIC_NUMBER,a=process.env.LIC_COUNT,n={active:!1,number:"none"};if(!t||!a)return n;const o=await r.default.query('SELECT COUNT(id) as auth_users FROM session WHERE sid != :sessionID AND "licNumber" IS NOT NULL',{type:s.QueryTypes.SELECT,replacements:{sessionID:e}});let i=0;return o.length>0&&(i=o[0].auth_users),i>=Number(a)?n.number=null:(n.active=!0,n.number=t),n}}},8577:e=>{e.exports=require("cors")},8608:e=>{e.exports=require("exceljs")},8876:e=>{e.exports=require("ieee754")},8894:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788));t.default={async getUserExecutorRoles(e){let t=await s.default.models.TaskExecutor.findAll({where:{executorId:e},attributes:["parentId"]}).catch(e=>(console.error(e),[]));return t?(t=JSON.parse(JSON.stringify(t)),t):[]},async getVendorsAndCustomersFilter(e){let t=[];if(e){const a=await s.default.models.VendorsAndCustomer.findAll({where:{counterpartyId:{[r.Op.in]:e}}});if(a)for(let e of a)t.push(e.id)}return t},async getCustomerFilter(e){let t=[],a=!1;if(e.user){a=!0!==e.user.useCustomerAccess;const n=e.user.id,r=await s.default.models.UserCustomer.findAll({where:{parentId:n}});if(r)for(let e of r)t.push(e.customerId)}return{fullAccess:a,counterparties:t}},async getForwarderFilter(e){let t,a=!1;if(e.user){a=!0!==e.user.externalUser;const n=e.user.forwarderId,r=await s.default.models.VendorsAndCustomer.findAll({where:{id:n}});t=r[0]?.dataValues.id}return{fullAccess:a,forwarder:t}},async getRoleGroups(e){let t=[];if(e.user&&!0!==e.user.fullRights){const a=e.user.id;t=(await s.default.models.RoleGroupUser.findAll({where:{userId:a},attributes:["parentId"]})).map(e=>e.parentId)}return t}}},9031:e=>{e.exports=require("sequelize")},9151:function(e,t,a){var n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(6982)),o="aes-256-cbc",i=s.default.scryptSync(process.env.CRYPTO_SECRET_KEY_AUTO_LOGIN||"default-salt","salt",32);t.default={encrypt(e){const t=s.default.randomBytes(16),a=s.default.createCipheriv(o,i,t);let r=a.update(e,"utf8","hex");r+=a.final("hex");const l=JSON.stringify({iv:t.toString("hex"),encryptedData:r});return n.from(l).toString("base64")},decrypt(e){const t=n.from(e,"base64").toString("utf8"),a=JSON.parse(t),r=n.from(a.iv,"hex"),l=s.default.createDecipheriv(o,i,r);let u=l.update(a.encryptedData,"hex","utf8");return u+=l.final("utf8"),JSON.parse(u)}}},9239:e=>{e.exports=require("terser")},9816:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(8278)),o=n(a(8403)),i=r.default.Router(),l="auth";i.route(`/${l}/login`).post(s.default.authenticate("login"),o.default.login),i.route(`/${l}/session`).get(o.default.session),i.route(`/${l}/logout`).get(o.default.logout),i.route(`/${l}/register`).post(o.default.register),i.route(`/${l}/confirm_email_address/:token`).get(o.default.confirmEmailAddress),i.route(`/${l}/resend_email_address_confirmation_link`).get(o.default.resendEmailAddressConfirmationLink),i.route(`/${l}/forgot_password`).post(o.default.forgotPassword),i.route(`/${l}/validate_password_reset_token/:token`).get(o.default.validatePasswordResetToken),i.route(`/${l}/reset_password`).post(o.default.resetPassword),t.default=i},9876:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.accessLogsController=void 0;const r=n(a(6928)),s=n(a(9896)),o=n(a(4716)),i=n(a(2282)),l=`${process.cwd()}/logs/access`;async function u(e,t){try{const a=s.default.readFileSync(e,"utf8").split(/\r?\n/),n=[];for(const e of a)if(""!==e.trim()){const a=JSON.parse(e);if(t){let e=!0;for(const n in t)if("user"===n){if(a[n]?.id!==t[n]?.id){e=!1;break}}else if(a[n]!==t[n]){e=!1;break}e&&n.push(a)}else n.push(a)}return n}catch(t){throw new Error(`Failed to process file: ${e}. Error: ${t.message}`)}}function c(e,t,a){const n=e.slice();return n.sort((e,n)=>{const r=e[t],s=n[t];if(a){if(r>s)return-1;if(r<s)return 1}else{if(r<s)return-1;if(r>s)return 1}return 0}),n}function d(e,t){if(e&&"object"==typeof e){if(JSON.stringify(e).match(t))return!0}else if(e&&e.toString().replace(/\s/g,"").match(t))return!0;return!1}t.accessLogsController={async getFilesInfo(e,t){try{const a=JSON.parse(e.query.filter||"{}"),n=JSON.parse(e.query.pagination||"{}"),i=JSON.parse(e.query.sort||"{}");if(!a.period)return void t.status(400).send({message:"Period filter is required"});const f=(0,o.default)(a.period[0]).format("YYYYMMDD"),m=(0,o.default)(a.period[1]).format("YYYYMMDD"),p=await async function(e){return new Promise((t,a)=>{s.default.readdir(e,(n,r)=>{if(n)return a(new Error(`Failed to read directory: ${e}`));t(r)})})}(l);if(!p||0===p.length)return void t.status(404).send({message:"No log files found"});const h=function(e,t,a){return e.filter(e=>{const n=e.slice(0,8);return n===t||n===a||n>t&&n<a})}(p,f,m);if(0===h.length)return void t.status(404).send({message:"No log files found for the specified period"});let y=[];for(const e of h){const t=r.default.join(l,e),n=await u(t,a.searchFilter);y.push(...n)}if(a.searchStr&&(y=function(e,t,a){const n=t.replace(/\s/g,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=new RegExp(n,"i");return e.filter(e=>{let t=!1;for(const n of a){const a=n.split(".");if(a.length>1){if(e[a[0]]&&e[a[0]][a[1]]&&d(e[a[0]][a[1]],r)){t=!0;break}}else if(e[n]&&d(e[n],r)){t=!0;break}}return t})}(y,a.searchStr.searchText,a.searchStr.searchColumns)),Array.isArray(i))for(const e of i)e.sortBy&&(y=c(y,e.sortBy,e.sortDesc));else i.sortBy&&(y=c(y,i.sortBy,i.sortDesc));y=function(e,t,a){const n=(a-1)*t,r=n+t,s=e.slice(n,r);return{totalItems:e.length,currentPage:a,data:s}}(y,n.limit,n.page),t.status(200).send(y)}catch(e){i.default.error("Error in accessLogsController.getFilesInfo",{meta:e}),t.status(500).send({message:"Internal server error"})}}}},9880:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(9896)),s=a(9031);async function o(e,t){const a=await e.findAll({attributes:{exclude:["module"]},order:["id"]});i(JSON.parse(JSON.stringify(a)),t)}function i(e,t){const a=JSON.stringify(e,null,4),n=`src/database/initialdata/${t}.json`;r.default.writeFileSync(n,a)}t.default={async updateInitialData(e,t,a={}){const n="src/modules",s=(l=e.tableName,["app_objects","view_settings","report_settings","data_processors","scheduled_jobs","rest_api","components","print_forms","common_modules"].includes(l));var l;if("delete"===a.event&&s)return function(e,t,a){let n;switch(e){case"app_objects":n=`${t.type}s/${t.name}`;break;case"view_settings":n=`${t.appObject.type}s/${t.appObject.name}/views/${t.name}`;break;case"report_settings":n=`reports/${t.name}`;break;case"data_processors":n=`dataProcessors/${t.name}`;break;case"scheduled_jobs":n=`scheduledJobs/${t.name}`;break;case"components":n=`components/${t.name}`;break;case"common_commands":n=`commonCommands/${t.name}`;break;case"rest_api":n=`restApi/${t.name}`;break;case"print_forms":n=`${t.appObject.type}s/${t.appObject.name}/printForms/${t.name}`;break;case"common_modules":n=`commonModules/${t.name}.js`}if(n){const e=`${a}/${n}`;r.default.existsSync(e)&&r.default.rmSync(e,{force:!0,recursive:!0})}}(e.tableName,a.oldValue,n),void("common_modules"===e.tableName&&o(e,t));const u=[],c=[];if(e.associations){for(const t in e.associations)if(e.associations[t].isMultiAssociation){if(e.associations[t].options._noTablePart)continue;let a=e.associations[t].target;u.push({model:a,as:t}),c.push([{model:a,as:t},"rowNumber","ASC"])}"view_settings"!==e.tableName&&"print_forms"!==e.tableName||e.associations.appObject&&u.push({model:e.associations.appObject.target,as:"appObject"})}const d={};s&&(d.id=a?.objectId);try{const s=await e.findAll({where:d,order:["id",...c],include:u}),l=JSON.parse(JSON.stringify(s));"app_objects"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,...o}=n,i=`${t}/${o.type}s/${o.name}`;if("update"===a.event&&(a.oldValue?.name!==a.newValue?.name||a.oldValue?.type!==a.newValue?.type)){const e=`${t}/${a.oldValue?.type}s/${a.oldValue?.name}`;try{r.default.renameSync(e,i)}catch(e){console.error(e)}}r.default.existsSync(i)||r.default.mkdirSync(i,{recursive:!0});const l=`${i}/object.struct.json`,u=JSON.stringify(o,null,4);if(r.default.writeFile(l,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(void 0!==e){const t=`${i}/client.module.js`;e?r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}if(void 0!==s){const e=`${i}/client.v3.module.js`;s?r.default.writeFile(e,`export default ${s}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"serverModule")){const e=`${i}/server.module.js`;a.serverModule?r.default.writeFile(e,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"info")){const e=`${i}/object.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}}(l,n,a):"view_settings"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,appObject:i,...l}=n,u=`${t}/${i.type}s/${i.name}/views/${l.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/${i.type}s/${i.name}/views/${a.oldValue?.name}`;try{r.default.renameSync(e,u)}catch(e){console.error(e)}}r.default.existsSync(u)||r.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/view.struct.json`;if(r.default.writeFile(d,c,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const f=`${u}/client.module.js`;e?r.default.writeFile(f,`export default ${e}`,function(e){e&&console.error(e)}):r.default.existsSync(f)&&r.default.rmSync(f);const m=`${u}/client.v3.module.js`;s?r.default.writeFile(m,s,function(e){e&&console.error(e)}):r.default.existsSync(m)&&r.default.rmSync(m);const p=`${u}/server.module.js`;if(o?r.default.writeFile(p,`${o}`,function(e){e&&console.error(e)}):r.default.existsSync(p)&&r.default.rmSync(p),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${u}/view.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}(l,n,a):"report_settings"===e.tableName?function(e,t,a){for(const n of e){const{dataQuery:e,...s}=n,o=`${t}/reports/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/reports/${a.oldValue?.name}`;try{r.default.renameSync(e,o)}catch(e){console.error(e)}}r.default.existsSync(o)||r.default.mkdirSync(o,{recursive:!0});const i=JSON.stringify(s,null,4),l=`${o}/report.struct.json`;if(r.default.writeFile(l,i,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;if(e){const t=`${o}/data.query.sql`;r.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}const u=`${o}/server.module.js`;if(a.serverModule?r.default.writeFile(u,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(u)&&r.default.rmSync(u,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${o}/report.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}(l,n,a):"data_processors"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/dataProcessors/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/dataProcessors/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/processor.struct.json`;r.default.writeFile(o,s,function(e){e&&console.error(e)});const i=`${e}/server.module.js`;a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0})}}(l,n,a):"scheduled_jobs"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/scheduledJobs/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/scheduledJobs/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/job.struct.json`;if(r.default.writeFile(o,s,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/job.info.md`;a.info?r.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}}}(l,n,a):"rest_api"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/restApi/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/restApi/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/api.struct.json`;if(r.default.writeFile(o,s,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/api.info.md`;a.info?r.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}}}(l,n,a):"components"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,...i}=n,l=`${t}/components/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/components/${a.oldValue?.name}`;try{r.default.renameSync(e,l)}catch(e){console.error(e)}}r.default.existsSync(l)||r.default.mkdirSync(l,{recursive:!0});const u=JSON.stringify(i,null,4),c=`${l}/component.struct.json`;if(r.default.writeFile(c,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${l}/client.module.js`;r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(s){const e=`${l}/client.v3.module.js`;r.default.writeFile(e,s,function(e){e&&console.error(e)})}if(o){const e=`${l}/server.module.js`;r.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,n,a):"common_commands"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,...o}=n,i=`${t}/commonCommands/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/commonCommands/${a.oldValue?.name}`;try{r.default.renameSync(e,i)}catch(e){console.error(e)}}r.default.existsSync(i)||r.default.mkdirSync(i,{recursive:!0});const l=JSON.stringify(o,null,4),u=`${i}/command.struct.json`;if(r.default.writeFile(u,l,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${i}/client.module.js`;r.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}if(s){const e=`${i}/client.v3.module.js`;r.default.writeFile(e,s,function(e){e&&console.error(e)})}}}}(l,n,a):"print_forms"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,appObject:i,...l}=n,u=`${t}/${i.type}s/${i.name}/printForms/${l.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/${i.type}s/${i.name}/printForms/${a.oldValue?.name}`;try{r.default.renameSync(e,u)}catch(e){console.error(e)}}r.default.existsSync(u)||r.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/form.struct.json`;if(r.default.writeFile(d,c,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${u}/client.module.js`;r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(s){const e=`${u}/client.v3.module.js`;r.default.writeFile(e,`export default ${s}`,function(e){e&&console.error(e)})}if(o){const e=`${u}/server.module.js`;r.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,n,a):"common_modules"===e.tableName?(function(e,t,a){const n=`${t}/commonModules`;r.default.existsSync(n)||r.default.mkdirSync(n,{recursive:!0});for(const n of e){const e=`${t}/commonModules/${n.name}.js`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/commonModules/${a.oldValue?.name}.js`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}a.module&&r.default.writeFile(e,`${a.module}`,function(e){e&&console.error(e)})}}(l,n,a),o(e,t)):i(l,t)}catch(e){console.error(e)}},async updatePredefinedInitialData(e){const t=Object.keys(e.model.rawAttributes),a=Object.values(e.model.associations).map(e=>e.foreignKey),n=t.filter(e=>a.includes(e));try{const t=await e.model.findAll({order:["id"],where:{predefinedName:{[s.Op.ne]:null}},attributes:{exclude:n}}),a=JSON.stringify(t,null,4),o=`src/modules/catalogs/${e.name}/predefined.json`;r.default.writeFile(o,a,function(e){e&&console.error(e)})}catch(e){console.error(e)}},async updateEnums(){const e=`${process.cwd()}/src/database/initialdata/enums.json`,t=`${process.cwd()}/src/modules/enums/index.json`,a=JSON.parse(r.default.readFileSync(e,"utf-8")),n={};for(const e of a){const t=e.name;t&&(n[t]=e.values?.map(e=>e.value)||[])}let s={};r.default.existsSync(t)&&JSON.parse(r.default.readFileSync(t,"utf-8"));const o={};for(const[e,t]of Object.entries(n))o[e]=t;r.default.writeFileSync(t,JSON.stringify(o,null,2),"utf-8")}}},9896:e=>{e.exports=require("fs")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(a.exports,a,a.exports,__webpack_require__),a.exports}var __webpack_exports__=__webpack_require__(7927);module.exports=__webpack_exports__})();
|
|
2
|
+
(()=>{"use strict";var __webpack_modules__={9:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);class o extends s.Model{}o.init({id:{type:s.DataTypes.UUID,primaryKey:!0},sid:{type:s.DataTypes.UUID,allowNull:!1,unique:!0},userId:s.DataTypes.UUID,expires:s.DataTypes.DATE,data:s.DataTypes.TEXT,licNumber:s.DataTypes.STRING(100),clientType:{type:s.DataTypes.ENUM,values:["browser","mobile","electron","api"],defaultValue:"browser"}},{sequelize:r.default,tableName:"session",modelName:"Session"})},360:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=a(9031),o=n(a(9896)),i=a(7138),l=n(a(1688)),u=n(a(3786)),c=n(a(5788)),d=n(a(2282)),f=r.default.Router();function m(e={},t){let a;const n={};return e.userRole?n.id=e.userRole:t.accessRoleId?n.id=t.accessRoleId:n.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?l.default.canRead(n):"CAN_MODIFY"===e.accessLevel?l.default.canModify(n):"IS_AUTH"===e.accessLevel?l.default.isAuth:l.default.isFullRights:"GET"===e.httpMethod?l.default.canRead(n):l.default.canModify(n),a}t.default={async initRoutes(){const e=await c.default.query('SELECT * FROM rest_api WHERE rest_api."markedToDelete" = false AND rest_api."active" = true',{type:s.QueryTypes.SELECT});for(const t of e){if(!t.methods)continue;let e;const a=`restApi/${t.name}/server.module.js`,n=`${process.cwd()}/src/modules/${a}`;if(o.default.existsSync(n)&&(e=require(n)),!e)continue;const r=JSON.parse(t.methods);for(const a of r)e[a.controller]&&"function"==typeof e[a.controller]?f[a.httpMethod.toLowerCase()](`/api/${t.path}/${a.path}`,m(a.httpMethod,t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return u.default.array("files")(e,t,e=>{if(e)return t.status(i.StatusCodes.INTERNAL_SERVER_ERROR).json({message:`File upload error: ${e}`});a()});a()},e[a.controller]):d.default.error("Rest API controller is not exist: ",{meta:{name:t.name,controller:a.controller}})}return f}}},664:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2282)),s=n(a(5788));t.default={async onChangeHandler(e,t,a,n,o){try{const r=await s.default.models.ObjectVersioningSetting.findOne({where:{objectType:e.name}});if(r&&("all"===r.versioningMethod||r.versioningMethod===a)){let r=function(e){let t=[];if(e.associations)for(let a in e.associations){if("chargedServicesAcc"===a)continue;let n=e.associations[a].target;if(e.associations[a].isSingleAssociation){let r=["id","presentation"];e.associations[a].source.rawAttributes.name&&r.push("name"),t.push({model:n,as:a,attributes:r})}else{const e=t.push({model:n,as:a,include:[]});if(n.associations){t[e-1].include=[];for(let a in n.associations){let r=n.associations[a].target;if(n.associations[a].isSingleAssociation){let s=["id","presentation"];n.associations[a].target.rawAttributes.name&&s.push("name"),t[e-1].include.push({model:r,as:a,attributes:s})}}}}}return t}(e);await e.findByPk(t,{include:r,transaction:o}).then(async r=>{if(r){const i={objectId:t,objectData:JSON.stringify(r),objectType:e.name,userId:n,description:a},l={transaction:o||null};await s.default.models.ObjectVersion.create(i,l).catch(e=>{console.error(e)})}})}}catch(t){r.default.error(`Error in ${e.options.name?.plural} objectVersionsService onChangeHandler`,{meta:t})}},async addChanges(e,t){let a={...e};t.user&&(a.userId=t.user.id),await s.default.models.ObjectVersion.create(a).catch(e=>{console.error(e)})}}},696:e=>{e.exports=require("ssf")},829:e=>{e.exports=require("jsonwebtoken")},1572:e=>{e.exports=require("nodemailer")},1688:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(1691)),s=a(7138),o=n(a(2282));t.default={isAuth(e,t,a){if(!e.user){const e="Error in accessRight.isAuth. User not authenticated";return o.default.error(e),t.status(s.StatusCodes.FORBIDDEN).send({message:e})}a()},isFullRights(e,t,a){if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),t.status(s.StatusCodes.FORBIDDEN).send({message:e})}if(!0!==e.user.fullRights){const e="Error in accessRight.isFullRights. User not has full rights";return o.default.error(e),t.status(s.StatusCodes.FORBIDDEN).send({message:e})}a()},canRead:e=>async(t,a,n)=>{if(!t.user){const e="Error in accessRight.canRead. User not authenticated";return o.default.error(e),a.status(s.StatusCodes.FORBIDDEN).send({message:e})}if(!0===t.user.fullRights)return void n();const i=t.user?.id;i?await r.default.checkUserAccess(i,e,!0).then(r=>{if(!0===r)n();else{const n=`User ${t.user?.name} not have access to read. Role ${e}`;o.default.error("Error in accessRight.canRead",{meta:n}),a.status(s.StatusCodes.FORBIDDEN).send({message:n})}}).catch(e=>{o.default.error("Error in accessRight.canRead",{meta:e}),a.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(s.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},canModify:e=>async(t,a,n)=>{if(!0===t.user?.fullRights)return void n();const i=t.user?.id;i?await r.default.checkUserAccess(i,e,!0,!0).then(r=>{if(!0===r)n();else{const n=`User ${t.user?.name} not have access to modify. Role ${e}`;o.default.error("Error in accessRight.canModify",{meta:n}),a.status(s.StatusCodes.FORBIDDEN).send({message:n})}}).catch(e=>{o.default.error("Error in accessRight.canModify",{meta:e}),a.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}):a.status(s.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})}}},1691:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(2555));async function i(e){const t=[];return await s.default.models.Department.findAll({where:{[r.Op.or]:[{leaderId:e},{deputyId:e}]}}).then(e=>{for(const a of e)t.push(a.id)}).catch(e=>{throw e}),await s.default.models.DepartmentEmployee.findAll({where:{employeeId:e}}).then(e=>{for(const a of e)t.push(a.parentId)}).catch(e=>{throw e}),t}t.default={getUserAccessRoles:async(e,t=!1,a=!1)=>await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const n={parentId:e};return!0===a?n.canModify=!0:!0===t&&(n.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:n}).then(e=>{const t=[];for(const a of e){const e=t.findIndex(e=>e.userRoleId===a.id);e>-1?(a.canRead!==t[e].canRead&&!0===a.canRead&&(t[e].canRead=a.canRead),a.canModify!==t[e].canModify&&!0===a.canModify&&(t[e].canModify=a.canModify)):t.push({userRoleId:a.userRoleId,canRead:a.canRead,canModify:a.canModify})}return t}).catch(e=>{throw e})}).catch(e=>{throw e}),getUserAccessRoleId:async(e,t=!1,a=!1)=>await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>{const n={parentId:e.map(e=>e.parentId)};return!0===a?n.canModify=!0:!0===t&&(n.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:n}).then(t=>e=t.map(e=>e.userRoleId)).catch(e=>{throw e})}).catch(e=>{throw e}),getUserRoleByKey:async e=>await s.default.models.UserRole.findOne({where:{key:e}}).then(async e=>e).catch(e=>{throw e}),getUserRoleById:async e=>await s.default.models.UserRole.findByPk(e).then(async e=>e).catch(e=>{throw e}),async checkUserAccess(e,t,a=!1,n=!1){const r=t?.id?await this.getUserRoleById(t.id):await this.getUserRoleByKey(t.key);return r?await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>{const t={parentId:e,userRoleId:r.id};return!0===n?t.canModify=!0:!0===a&&(t.canRead=!0),await s.default.models.RoleGroupSetting.findAll({where:t}).then(e=>!!(e&&e.length>0)).catch(e=>{throw e})}).catch(e=>{throw e}):new Error(`Role with key ${t} does not exist`)},async getAllSubDepartments(e,t){const a=[],n=await s.default.models.Department.findAll({where:{groupId:e.id},include:t});for(const e of n){a.push(e);const n=await this.getAllSubDepartments(e,t);for(const e of n)a.push(e)}return a},async accessRestrictions(e,t){const a={use:!1,users:[]},n=await s.default.models.AccessRestriction.findOne({where:{objectType:t.name}});if(n&&(!0===n.useRestriction||!0===n.useDepartmentRestriction)&&(a.use=!0,a.users.push(e.user?.id),!0===n.useDepartmentRestriction)){const t=o.default.prepareIncludes(s.default.models.Department,{withTableParts:!0}),n=await s.default.models.Department.findAll({where:{[r.Op.or]:[{leaderId:e.user?.id},{deputyId:e.user?.id}]},include:t}),i=[];for(const e of n){const a=await this.getAllSubDepartments(e,t);for(const e of a)i.push(e)}for(const e of i)n.push(e);if(n)for(const e of n)for(const t of e.employees)a.users.push(t.employeeId)}return a},getUserAccessNavigation:async e=>await s.default.models.RoleGroupUser.findAll({where:{userId:e}}).then(async e=>e.map(e=>e.parentId)).then(async t=>{const a=await i(e);return await s.default.models.RoleGroupDepartment.findAll({where:{departmentId:a}}).then(e=>t.concat(e.map(e=>e.parentId)))}).then(async e=>await s.default.models.RoleGroupNavigation.findAll({where:{parentId:e}}).then(e=>{const t=e.map(e=>e.navigationId);return[...new Set(t)]}).catch(e=>{throw e})).catch(e=>{throw e})}},1752:e=>{e.exports=require("passport-local")},1763:e=>{e.exports=require("express-rate-limit")},2096:e=>{e.exports=require("morgan")},2103:e=>{e.exports=require("crypto-js")},2282:function(e,t,a){var n,r=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a);var r=Object.getOwnPropertyDescriptor(t,a);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,n,r)}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[t.length]=a);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a=n(e),o=0;o<a.length;o++)"default"!==a[o]&&r(t,e,a[o]);return s(t,e),t});Object.defineProperty(t,"__esModule",{value:!0});const i=o(a(5124));i.default.addColors({error:"bold red",warn:"yellow",info:"green",verbose:"dim white",debug:"gray",silly:"magenta"});const l=i.default.createLogger({level:"info",format:i.format.combine(i.format.colorize(),i.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),i.format.prettyPrint(),i.format.printf(e=>`${e.timestamp}${e.context?` [${e.context}]`:""}${e.level?` ${e.level}`:""}: ${e.message?e.message:""} ${e.meta?e.meta?.stack?`${e.meta.original?.message?e.meta.original?.message:""} ${e.meta.stack}`:e.meta:""} ${e.stack?`\n${e.stack}`:""}`)),transports:[new i.transports.File({level:"error",filename:"logs/common/error.log",format:i.default.format.uncolorize()}),new i.transports.File({filename:"logs/common/combined.log",format:i.default.format.uncolorize()}),new i.transports.Console],exceptionHandlers:[new i.transports.File({filename:"logs/common/exceptions.log"})]});t.default=l},2362:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(6261));t.default={sendMessage(e,t){e.app.get("eventEmitter").emit("processing",{message:t})},sendData(e,t){e.app.get("eventEmitter").emit("processing",t)},init(e){const t=new r.default;e.set("eventEmitter",t),e.get("/client_events",(e,a)=>{a.setHeader("Content-Type","text/event-stream"),a.setHeader("Cache-Control","no-cache"),a.setHeader("Connection","keep-alive"),a.setHeader("Access-Control-Allow-Credentials","true"),a.flushHeaders(),t.on("processing",e=>{(e=>{a.write(`data: ${JSON.stringify(e)}\n\n`),a.flush()})(e)}),e.on("close",()=>{a.end()})})}}},2525:e=>{e.exports=require("helmet")},2555:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);function o(e){const t={};if(0===e.length)return t;for(const a of e){const e=a.split(".");e.length>0&&(t[e[0]]?2==e.length?t[e[0]].push(e[1]):e.length>2&&(t[e[0]][e[1]]?t[e[0]][e[1]].push(e[2]):t[e[0]].push({[e[1]]:[e[2]]})):2==e.length?t[e[0]]=[e[1]]:e.length>2&&(t[e[0]]={},t[e[0]][e[1]]=[e[2]]))}return t}t.default={prepareIncludes(e,t,a=[],n=null,r=null,s=[]){let i=[],l=!0;Object.prototype.hasOwnProperty.call(t,"compactInclude")&&(l=t.compactInclude);const u=o(a),c=o(s);if(t.include)i=t.include;else if(e.associations){if(!0!==l)return{all:!0};for(let a in e.associations){if(e.associations[a].options._noTablePart)continue;let s=e.associations[a].target;if(e.associations[a].isSingleAssociation){let t=["id","presentation"];e.associations[a].target.getAttributes().name&&t.push("name");const r=[];if(u[a])for(const e of u[a])if("object"==typeof e)for(const t in e){const a=s.associations[t]?.target;if(a){const n=e[t];if(Array.isArray(n)){let e=[...new Set(["id","presentation",...n])];a.getAttributes().name&&e.push("name"),r.push({model:a,as:t,attributes:e})}}}else t.includes(e)||t.push(e);c[a]&&(t=[...new Set([...t,...c[a]])]);const o=n?.[a];i.push({model:s,as:a,attributes:t,where:o,include:r})}else if(t.withTableParts){const e=n?.[a],t=i.push({model:s,as:a,where:e,include:[]});if(r&&s.getAttributes().rowNumber&&r.push([{model:s,as:a},"rowNumber","asc"]),s.associations){i[t-1].include=[];for(let e in s.associations){let n=s.associations[e].target;if(s.associations[e].isSingleAssociation){let r=["id","presentation"];s.associations[e].target.getAttributes().name&&r.push("name"),u[a]?.[e]&&(r=[...new Set([...r,...u[a][e]])]),i[t-1].include?.push({model:n,as:e,attributes:r})}}}}}}return i},async setAuthor(e,t){t.user?(e.authorId=t.user.id,e.author=t.user):console.error("Not found user on request!")},executeConditionCode:(e,t)=>new Function("args",e)(t),translateField:(e,t,a)=>!0!==(a&&"pl"!==a)||null===e.lang?e[t]:e.lang?.[t]?.[a]||e[t],async initEnums(){try{return(await r.default.query('\n SELECT \n enums.id AS "id",\n enums.name AS "enumName",\n enum_values.id AS "valueId",\n enum_values.value AS "value",\n enum_values."rowNumber" AS "rowNumber"\n FROM \n enums\n LEFT JOIN \n enum_values \n ON \n enum_values."parentId" = enums.id\n ORDER BY \n enums.id ASC, \n enum_values."rowNumber" ASC',{type:s.QueryTypes.SELECT})).reduce((e,t)=>(e[t.enumName]||(e[t.enumName]=[]),e[t.enumName].push(t.value),e),{})}catch(e){return console.error(e),{}}},normalizeFloat(e,t=6){if(!Number.isFinite(e))return e;const a=Math.pow(10,t),n=Math.round(e*a)/a,r=Math.pow(10,3);return 0===Math.round(e*r)/r?0:n}}},2562:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2282)),s=a(7138),o=n(a(9896)),i=n(a(2103)),l=n(a(9880));t.default={async executeProcessing(e,t,a,n){const i=e.body.name;if(!i){const e="Object name is not correct!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let l;const u=`dataProcessors/${i}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;if(o.default.existsSync(c)){const e=require.resolve(c);require.cache[e]&&delete require.cache[e],l=require(c)}if(!l){const e="Data processor module is empty!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if(!l?.executeProcessing||"function"!=typeof l?.executeProcessing){const e="Data processor run function is not exist!";return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}try{const r=await l.executeProcessing(e,t,a,n);return{status:s.StatusCodes.OK,responseData:{executionComplited:!0,result:r}}}catch(e){return r.default.error(`Error in ${n.name} executeProcessing controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async exportProcessor(e,t,a,n){const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length){const e="Object id is not correct!";return r.default.error(`Error in ${n.name} findItem controller`,{meta:e}),t.status(s.StatusCodes.BAD_REQUEST).send({message:e})}return await n.model.findByPk(l).then(e=>{if(!e){const e=`${n.name} with id ${l} not found`;return r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.NOT_FOUND).send({message:e})}{const a=JSON.parse(JSON.stringify(e));let l;const u=`dataProcessors/${a.name}/server.module.js`,c=`${process.cwd()}/src/modules/${u}`;o.default.existsSync(c)&&(delete require.cache[require.resolve(c)],l=require(c)),a.serverModule=l?o.default.readFileSync(`src/modules/${u}`,{encoding:"utf8",flag:"r"}):"";const d=i.default.AES.encrypt(JSON.stringify(a),"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3").toString(),f=`/tmp/${a.id}.sdp`;o.default.writeFileSync(f,d),t.status(s.StatusCodes.OK).download(f,`${a.name}.sdp`,e=>{if(e)return r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).json({message:e.message});o.default.unlinkSync(f)})}}).catch(e=>(r.default.error(`Error in ${n.name} exportProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})))},async importProcessor(e,t,a,n){let{data:u}=e.body;if(u=JSON.parse(u||"{}"),!e.files||!u){const e="No file uploaded!";return r.default.error(`Error in ${n.name} importProcessor controller`,{meta:e}),t.status(s.StatusCodes.BAD_REQUEST).send({message:e})}try{for(let a of e.files){const e=a.path,r=o.default.readFileSync(e,{encoding:"utf8",flag:"r"}),c=i.default.AES.decrypt(r,"vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3"),d=JSON.parse(c.toString(i.default.enc.Utf8));o.default.unlinkSync(e);let f=await n.model.findByPk(u.id);const m={objectId:u.id,serverModule:d.serverModule};let p;return f?(p=await f.update({name:d.name,title:d.title,lang:d.lang},{where:{id:u.id}}),m.event="update",m.oldValue=f,m.newValue=p):(p=await n.model.create({id:u.id,name:d.name,title:d.title,lang:d.lang}),m.event="create",m.newValue=p),await l.default.updateInitialData(n.model,n.path,m),t.status(s.StatusCodes.OK).send({message:"OK"})}}catch(e){return r.default.error(`Error in ${n.name} importProcessor controller`,{meta:e}),t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})}}}},2671:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=n(a(4716)),o=n(a(2282)),i=a(9031);t.default={async setNumber(e,t,a){if(t.noSetPrefix&&!0===t.noSetPrefix)return;t.prefix||(t.prefix="AA"),function(e){"numberPeriod"in e&&e.prefix.id&&("year"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("year").toDate():"quarter"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("quarter").toDate():"month"===e.prefix.periodicity?e.numberPeriod=(0,s.default)(e.date).startOf("month").toDate():"day"===e.prefix.periodicity?e.numberPeriod=e.date.startOf("day").toDate():e.numberPeriod=null)}(t);const n=t.prefix?.id?t.prefix.name:t.prefix,l=t.numberPeriod?t.numberPeriod:null;let u=1;try{let s=await r.default.models.Numerator.findOne({where:{tableName:e.path,prefix:n,period:l},lock:i.Transaction.LOCK.UPDATE,transaction:a});if(s)s.number++,await s.save({transaction:a});else{let o={prefixId:null};t.prefix.id?o.prefixId=t.prefix.id:o.prefixId=null,"numberPeriod"in t&&(o.numberPeriod=l);const i=await e.model.findOne({where:o,order:[["number","DESC"]],transaction:a});i&&(u=parseFloat(i.number)+1),s=await r.default.models.Numerator.create({tableName:e.path,prefix:n,period:l,number:u},{transaction:a})}u=s.number}catch(t){o.default.error(`Error in ${e.name} createItem controller`,{meta:t})}t.number=u,function(e){if(e.prefix?.template&&""!=e.prefix?.template){const t=e.prefix.template.trim().replace(/\[([^\]]+)\]/g,(t,a)=>"Number"===a?e.number.toString().padStart(6,"0"):"MonthDay"===a?(0,s.default)(e.date).format("DD"):"MonthNumber"===a?(0,s.default)(e.date).format("MM"):"QuarterNumber"===a?(0,s.default)(e.date).quarter().toString().padStart(2,"0"):"YearTwoDigits"===a?(0,s.default)(e.date).format("YY"):"YearFourDigits"===a?(0,s.default)(e.date).format("YYYY"):"Prefix"===a?e.prefix.name:"Organization"===a?e.organization?.code?e.organization.code:t:"CounterpartyCode"===a?e.counterparty?.code?e.counterparty.code:t:"StoreCode"===a&&e.warehouse?.code?e.warehouse.code:t);e.numberStr=t}else e.numberStr=(e.prefix?.name?e.prefix?.name:e.prefix)+"-"+e.number.toString().padStart(6,"0")}(t)},async nextNumber(e,t,a=void 0,n){let s,l=1,u=!1;n?(s=n,u=!0):s=await(e.sequelize?.transaction());try{const a=e.getTableName();let n=await r.default.models.Numerator.findOne({where:{tableName:a,prefix:t},lock:i.Transaction.LOCK.UPDATE,transaction:s});if(n)n.number++,await n.save({transaction:s});else{const o=await e.findOne({where:{prefix:t},order:[["number","DESC"]],transaction:s});o&&(l=o.number+1),n=await r.default.models.Numerator.create({tableName:a,prefix:t,number:l},{transaction:s})}!0!==u&&s&&await s.commit(),l=n.number}catch(t){!0!==u&&s&&await s.rollback(),o.default.error(`Error in ${e.options.name?.plural} createItem controller`,{meta:t})}return l}}},2703:e=>{e.exports=require("node-cron")},3275:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default={typesSufixes:()=>({string:"ST",text:"TX",integer:"IN",decimal:"DC",boolean:"BL",date:"DT"}),typeIncludesRef:e=>e.includes("enum")||e.includes("catalog")||e.includes("document")||e.includes("anyRef")||e.findIndex(e=>e.includes("."))>-1,isRefType:e=>"enum"===e||"catalog"===e||"document"===e||"anyRef"===e||e.includes("."),getFieldNameByType(e,t){const a=this.typesSufixes();return a[t]?`_${e}${a[t]}`:this.isRefType(t)?`_${e}Ref`:null}}},3407:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(4139)),s=n(a(7281)),o=n(a(9816)),i=n(a(7565)),l=n(a(6961));t.default=e=>{e.use(r.default),e.use(s.default),e.use(o.default),e.use(l.default),e.use(i.default)}},3464:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2703)),s=n(a(5788)),o=n(a(9896)),i=a(7138),l=n(a(2282)),u=[];t.default={async init(e){if(process.env.NODE_APP_INSTANCE&&"0"!==process.env.NODE_APP_INSTANCE)return;if(!s.default.models.ScheduledJob)return void l.default.error("Error in Scheduled Jobs init.",{meta:"Scheduled jobs is not initialized!!!"});const t=await s.default.models.ScheduledJob.findAll({where:{active:!0,markedToDelete:!1}});if(Array.isArray(t)&&t.length>0)for(const a of t){const t=a.schedule,n=`scheduledJobs/${a.name}/server.module.js`;let r;const s=`${process.cwd()}/src/modules/${n}`;if(!o.default.existsSync(s))return console.log(`Serwer module for scheduled job "${a.name}" is not found!`);if(r=require(s),t.dateFrom||t.dateTo){const e=new Date;if(t.dateFrom&&e<new Date(t.dateFrom))continue;if(t.dateTo&&e>new Date(t.dateTo))continue}c(a,t,r,e)}},async executeManually(e,t,a,n){const r=e.body.name;if(!r){const e="Object name is not correct!";return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}let u;const c=`scheduledJobs/${r}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;if(o.default.existsSync(d)&&(delete require.cache[require.resolve(d)],u=require(d)),!u){const e="Scheduled job module is empty!";return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}if("function"!=typeof u){const e="Scheduled job run function is not exist!";return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const f=await s.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.body.id,status:"started"});try{const t=[],a=await u(e.objects,t),n=t.find(e=>"error"===e.status),r=t.find(e=>"info"===e.status);let s="";if(n){for(let e of t)s+=e.meta+"\n";await f.update({endDate:new Date,status:"error",errorDescription:s,userId:e.user?.id,manual:!0})}else if(r){for(let e of t)s+=e.meta+"\n";await f.update({endDate:new Date,status:"success",errorDescription:s,userId:e.user?.id,manual:!0})}else await f.update({endDate:new Date,status:"success",userId:e.user?.id,manual:!0});return{status:i.StatusCodes.OK,responseData:{executionComplited:!0,result:a}}}catch(e){return l.default.error(`Error in ${n.name} executeManually controller`,{meta:e}),{status:i.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}}};const c=(e,t,a,n)=>{const o=`${d(t.minutes,t.startTime,"minutes")} \n ${d(t.hours,t.startTime,"hours")} \n ${f(t.daysOfMonth)} \n ${f(t.months)} \n ${f(t.daysOfWeek)}\n `,i=r.default.schedule(o,async()=>{const t=await s.default.models.ScheduledJobHistory.create({beginDate:new Date,scheduledJobId:e.id,status:"started"});try{const e=[];await a(n,e);const r=e.find(e=>"error"===e.status),s=e.find(e=>"info"===e.status);let o="";if(r){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"error",errorDescription:o})}else if(s){for(let t of e)o+=t.meta+"\n";await t.update({endDate:new Date,status:"success",errorDescription:o})}else await t.update({endDate:new Date,status:"success"})}catch(e){console.error("Error executing module code:",e),await t.update({endDate:new Date,status:"error",errorDescription:e.message})}},{scheduled:!1});i.start(),u.push({jobId:e.id,jobExemplar:i})},d=(e,t,a)=>e&&"00"!==e?`*/${Number(e)}`:t?"minutes"===a?`${t.substring(3,5)}`:`${t.substring(0,2)}`:"*",f=e=>{if(e.length>0){let t="";for(const a of e)t+=a,e.length-1!==e.indexOf(a)&&(t+=",");return t}return"*"}},3648:e=>{e.exports=require("pdfmake")},3786:function(e,t,a){var n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(8461)),o=r(a(4716)),i=r(a(9896)),l=s.default.diskStorage({destination:function(e,t,a){a(null,function(){const e=(0,o.default)().format("DD_MM_YYYY"),t=`${process.env.DESTINATION}/common/${e}`;return i.default.existsSync(t)||i.default.mkdirSync(t,{recursive:!0}),t}())},filename:function(e,t,a){t.originalname=n.from(t.originalname,"latin1").toString("utf8");const r=function(e){let t=e.originalname,a="";const n=/(?:\.([^.]+))?$/.exec(e.originalname);if(!n)return`file_${Date.now()}${a}`;a=n[0],t=String(e.originalname).replace(a,"");return t=String(t).replace(/[^a-zA-Z0-9-_]/g,"_"),t=t.toLowerCase(),`${t}_${Date.now()}${a}`}(t);a(null,r)}});t.default=(0,s.default)({storage:l,limits:{fileSize:104857600}})},3830:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(8894));t.default=async e=>{const t=await s(e);return[{name:"customerRequests",query:'select * from customer_requests where "authorId" = :authorId',params:{authorId:e.user?.id}},{name:"customerRequestStatuses",query:"select * from customer_request_statuses"},{name:"deliveryNotes",query:`SELECT * FROM delivery_notes as virtual_table ${t}`},{name:"deliveryOrders",query:`SELECT * FROM delivery_orders as virtual_table ${t}`},{name:"Dispositions",query:`SELECT * FROM dispositions as virtual_table ${t}`}]};const s=async e=>{let t="";const a=await r.default.getForwarderFilter(e);return!1===a.fullAccess&&(t=`WHERE virtual_table."forwarderId" = '${a.forwarder}'`),t}},3857:e=>{e.exports=require("connect-session-sequelize")},3903:e=>{e.exports=require("uuid")},3958:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(3903),s=a(7138),o=a(9031),i=n(a(4716)),l=n(a(9896)),u=n(a(2282)),c=n(a(2555)),d=n(a(2671)),f=n(a(6299)),m=n(a(9880)),p=n(a(664)),h=n(a(5788)),y=n(a(2103));function g(e,t){const a=[];if(e.associations)for(const n in e.associations)if(e.associations[n].isMultiAssociation){if(e.associations[n].options._noTablePart)continue;if(Object.prototype.hasOwnProperty.call(t,n)){let t=e.associations[n].target;a.push({model:t,as:n})}}if(t.addInclude)for(const e of t.addInclude){const t=a.findIndex(t=>t.model===e.model);-1===t?a.push({...e}):a[t].fkField=e.fkField}return a}function b(e,t,a){for(const n in e){const r=e[n];if("object"==typeof r){const e={};for(const t in r)"inList"===t?e[o.Op.in]=r[t]:"notInList"===t?e[o.Op.notIn]=r[t]:e[o.Op[t]]=r[t];if(n.includes(".")){const t=n.split(".");a[t[0]]?a[t[0]][t[1]]=e:a[t[0]]={[t[1]]:e}}else t[n]=e}else if(n.includes(".")){const e=n.split(".");a[e[0]]?a[e[0]][e[1]]=r:a[e[0]]={[e[1]]:r}}else t[n]=r}}function w(e,t){let a=t.sortBy.split(".");if(a.length>1){const t=e.model.associations[a[0]]?.target;a[1]=t?.rawAttributes?.numberStr?"numberStr":"name"}return!0===t.sortDesc&&a.push("DESC"),a}function _(e,t,a){"appObjects"!==e.name&&"reportSettings"!==e.name&&"dataProcessors"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(a.serverModule=t.serverModule),"commonModules"===e.name&&(a.module=t.module),"appObjects"!==e.name&&"viewSettings"!==e.name&&"reportSettings"!==e.name&&"scheduledJobs"!==e.name&&"restApi"!==e.name||(a.info=t.info)}t.default={async findAllItems(e,t,a,n,r={}){const l=JSON.parse(e.query?.pagination||"{}"),d=JSON.parse(e.query?.sort||"{}");let f={};e.query?.filter&&(f="string"==typeof e.query?.filter?JSON.parse(e.query?.filter):e.query?.filter);const m=e.query?.limit||null,p=e.query?.withTableParts||null;let h={},y=[];e.query?.attributes&&(h=e.query?.attributes,"string"==typeof h&&(h=JSON.parse(h))),r.attributes&&"object"==typeof r.attributes&&("object"!=typeof h||Array.isArray(h)||0!==Object.keys(h).length?"object"==typeof h&&Array.isArray(h)&&0===h.length?h=r.attributes:"object"!=typeof h||Array.isArray(h)||Array.isArray(r.attributes)?"object"==typeof h&&Array.isArray(h)&&Array.isArray(r.attributes)&&(h=[...new Set([...h,...r.attributes])]):h=Object.assign(h,r.attributes):h=r.attributes),Array.isArray(h)&&(y=h.filter(e=>e.includes(".")),h=h.filter(e=>!e.includes(".")));let g=[];e.query?.extraAttributes&&(g="string"==typeof e.query?.extraAttributes?JSON.parse(e.query?.extraAttributes):e.query?.extraAttributes);let _={};if(r.filter&&(f=Object.assign(f,r.filter)),f.searchStr){const e=function(e){const t=[];for(const a in e.model.rawAttributes)e.model.rawAttributes[a]._fullSearch&&t.push(a);for(const a in e.model.associations)if(e.model.associations[a].options._fullSearch){const n=e.model.associations[a].target.rawAttributes;n.name?t.push(`$${a}.name$`):n.numberStr&&t.push(`$${a}.numberStr$`)}return t}(n);if(e.length>0)if(e.length>1){f[o.Op.or]=[];for(let t of e)f[o.Op.or].push({[t]:{[o.Op.iLike]:`%${f.searchStr}%`}})}else f[e[0]]={[o.Op.iLike]:`%${f.searchStr}%`};delete f.searchStr}f.exclude&&(f.id={[o.Op.and]:f.exclude.map(e=>({[o.Op.ne]:e}))},delete f.exclude),f.advanced&&(b(f.advanced,f,_),delete f.advanced),f.quick&&(b(f.quick,f,_),delete f.quick);for(const e in f)if(e.includes(".")){const t=e.split(".");_[t[0]]?_[t[0]][t[1]]=f[e]:_[t[0]]={[t[1]]:f[e]},delete f[e]}if("document"===n.type&&f.period){const e=f.period[0],t=(0,i.default)(f.period[1]).endOf("day").toISOString();f.date={[o.Op.between]:[e,t]},delete f.period}if("register"===n.type&&f.period){const e=f.period[0],t=f.period[1];f.period={[o.Op.between]:[e,t]}}const S=[];!function(e,t,a){if(Array.isArray(t))for(const n of t)n.sortBy&&a.push(w(e,n));else t?.sortBy&&a.push(w(e,t));e.withoutTimestamps||a.push(["createdAt","DESC"]),a.push(["id","DESC"])}(n,d,S),e.query,p&&(r.withTableParts=p);let v=c.default.prepareIncludes(n.model,r,y,_,null,g);try{let e;if(l.page){let t=l.limit,a=0+(l.page-1)*t;e=await n.model.findAndCountAll({where:f,offset:a,limit:t,attributes:h,order:S,include:v,group:r?.group||null})}else e=await n.model.findAll({where:f,attributes:h,order:S,limit:m,include:v,group:r?.group||null});if(r.resultProcessing&&(e=r.resultProcessing(e)),e)return e=JSON.parse(JSON.stringify(e)),{status:s.StatusCodes.OK,responseData:e};{const e="Items not find";return u.default.error(`Error in ${n.name} findAll controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${n.name} findAll controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findItem(e,t,a,n,r={}){const o=e.params.id;if(!o||"string"!=typeof o||36!==o.length){const e="Object id is not correct!";return u.default.error(`Error in ${n.name} findItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!1;let i={},d=[];if(e.query?.attributes&&(i=e.query.attributes,"string"==typeof i&&(i=JSON.parse(i)),Array.isArray(i)&&(d=i.filter(e=>e.includes(".")),i=i.filter(e=>!e.includes(".")))),r?.attributes&&Array.isArray(r.attributes)){const e=r.attributes.filter(e=>e.includes(".")),t=r.attributes.filter(e=>!e.includes("."));i=Object.assign(i,t),d=Object.assign(d,e)}const f=e.query?.extraAttributes;let m=[];f&&(m="string"==typeof f?JSON.parse(f):f);let p=[],g=d,b=m;for(const e in n.tables)g=g.filter(t=>!t.startsWith(`${e}.`)),b=b.filter(t=>!t.startsWith(`${e}.`));let w=c.default.prepareIncludes(n.model,r,g,null,p,b);try{let t=await n.model.findByPk(o,{include:w,order:p});if(t){t=JSON.parse(JSON.stringify(t));for(const e in n.tables){p=[];let a=d,s=m;a=a.filter(t=>t.startsWith(`${e}.`)),s=s.filter(t=>t.startsWith(`${e}.`));const o=new RegExp(`^${e}\\.`);a=a.map(e=>e.replace(o,"")),s=s.map(e=>e.replace(o,""));const i=c.default.prepareIncludes(n.tables[e].model,r,a,null,p,s);p&&n.tables[e].model.getAttributes().rowNumber&&p.push(["rowNumber","asc"]);const l=await n.tables[e].model.findAll({where:{parentId:t.id},include:i,order:p});t[e]=JSON.parse(JSON.stringify(l))}if(!0===n.configurationData){const a=e.headers["x-client-version"]||"2";await async function(e,t,a,n){if("appObjects"===e.name){delete t.serverModule;const e=`src/modules/${t.type}s/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null,"3"===n?t.moduleV3&&(t.moduleV3=y.default.AES.encrypt(t.moduleV3,a).toString()):t.module&&(t.module=y.default.AES.encrypt(t.module,a).toString()),delete t.info;const 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,"3"===n?t.moduleV3&&(t.moduleV3=y.default.AES.encrypt(t.moduleV3,a).toString()):t.module&&(t.module=y.default.AES.encrypt(t.module,a).toString()),e){const n=`src/modules/${e.type}s/${e.name}/views/${t.name}/server.module.js`;l.default.existsSync(n)&&(t.serverModule=y.default.AES.encrypt(l.default.readFileSync(n,{encoding:"utf8",flag:"r"}),a).toString());const r=`src/modules/${e.type}s/${e.name}/views/${t.name}/view.info.md`;l.default.existsSync(r)&&(t.info=l.default.readFileSync(r,{encoding:"utf8",flag:"r"}))}}else if("reportSettings"===e.name){const e=`src/modules/reports/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const n=`src/modules/reports/${t.name}/report.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("dataProcessors"===e.name){const e=`src/modules/dataProcessors/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null}else if("scheduledJobs"===e.name){const e=`src/modules/scheduledJobs/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const n=`src/modules/scheduledJobs/${t.name}/job.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("restApi"===e.name){const e=`src/modules/restApi/${t.name}/server.module.js`;l.default.existsSync(e)?t.serverModule=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.serverModule=null;const n=`src/modules/restApi/${t.name}/api.info.md`;l.default.existsSync(n)?t.info=l.default.readFileSync(n,{encoding:"utf8",flag:"r"}):t.info=null}else if("commonModules"===e.name){const e=`src/modules/commonModules/${t.name}.js`;l.default.existsSync(e)?t.module=y.default.AES.encrypt(l.default.readFileSync(e,{encoding:"utf8",flag:"r"}),a).toString():t.module=null}}(n,t,e.user?.id,a)}return{status:s.StatusCodes.OK,responseData:t}}{const e=`${n.name} with id ${o} not found`;return u.default.error(`Error in ${n.name} findByPk controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}catch(e){return u.default.error(`Error in ${n.name} findByPk controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}}},async findOne(e,t,a,n,r={}){const o=e.params.whereCondition;if(!o){const e="Erron in findOne query parameters!";return u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!0;const i=c.default.prepareIncludes(n.model,r);return await n.model.findOne({where:o,include:i}).then(e=>{if(e)return{status:s.StatusCodes.OK,responseData:e};{const e=`${n.name} not found`;return u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${n.name} findOne controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async findPredefinedItem(e,t,a,n,r={}){const o=e.params.name;if(!o||"string"!=typeof o){const e="Object predefined name is not correct!";return u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}r.withTableParts=!0;let i=c.default.prepareIncludes(n.model,r);return await n.model.findOne({where:{predefinedName:o},include:i}).then(e=>{if(e)return{status:s.StatusCodes.OK,responseData:e};{const e=`${n.name} with predefinedName ${o} is not found`;return u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}}).catch(e=>(u.default.error(`Error in ${n.name} findPredefinedItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}}))},async createItem(e,t,a,n,o={},i=void 0){const l=o?.objectData?o.objectData:{...e.body};l.id||(l.id=(0,r.v4)()),delete l.presentation;const c=g(n.model,l),f=o.transaction?o.transaction:await n.model.sequelize.transaction();try{"document"===n.type&&await d.default.setNumber(n,l,f);const a=await n.model.create(l,{include:c,transaction:f});return a?(f.afterCommit(()=>{if(!0===n.configurationData){const e={objectId:a.id,event:"create",newValue:a};_(n,l,e),m.default.updateInitialData(n.model,n.path,e)}else Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n);p.default.onChangeHandler(n.model,a.id,"create",e.user?.id)}),i&&"function"==typeof i&&await i(e,t,a,f),o.transaction||await f.commit(),{status:s.StatusCodes.OK,responseData:a}):{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Object is not created"}}}catch(e){return o.transaction||await f.rollback(),u.default.error(`Error in ${n.name} createItem controller`,{meta:`${n.name} is not created. ${e}`}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async updateItem(e,t,a,n,r={},o=void 0){let i="";const l=e.params.id;if(!l||"string"!=typeof l||36!==l.length)return i="Object id is not correct!",u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:i}};const c=r.objectData?r.objectData:{...e.body};delete c.presentation;const d=r.transaction?r.transaction:await n.model.sequelize.transaction();let f=await n.model.findByPk(l,{transaction:d});if(!f)return r.transaction||await d.rollback(),i=`${n.name} with uuid ${l} not found`,u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:i}};const h=JSON.parse(JSON.stringify(f));for(const e in n.tables){const t=await n.tables[e].model.findAll({where:{parentId:f.id}});h[e]=JSON.parse(JSON.stringify(t))}try{if(!r.noVersionCheck){if(!c.updatedAt)return i="The data version not defined",u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:i}};const e=new Date(c.updatedAt);if(f.updatedAt>e)return i="The data version is less than the existing one in the database",u.default.error(`Error in ${n.name} updateItem controller`,{meta:i}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:i}}}const a=await f.update(c,{transaction:d});if(!a)return{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Item is not updated"}};const y=g(n.model,c);if(y.length>0){const e=f.id;for(const t of y)if(Object.prototype.hasOwnProperty.call(c,t.as)){let a="parentId";t.fkField&&(a=t.fkField),await t.model.destroy({where:{[a]:e},transaction:d});const n=[];for(const a of c[t.as]){const r={...a};t.fkField||(r.parentId=e),n.push(r)}await t.model.bulkCreate(n,{transaction:d})}}return o&&"function"==typeof o&&await o(e,t,a,h,d),d.afterCommit(()=>{if(!0===n.configurationData){const e={objectId:a.id,event:"update",oldValue:h,newValue:a};_(n,c,e),m.default.updateInitialData(n.model,n.path,e)}else Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n);p.default.onChangeHandler(n.model,l,"update",e.user?.id)}),r.transaction||await d.commit(),{status:s.StatusCodes.OK,responseData:a}}catch(e){return r.transaction||await d.rollback(),u.default.error(`Error in ${n.name} updateItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async confirmItem(e,t,a,n,r={}){const o=e.body.id,i=e.body.isConfirmed,l=n.name,c=r.recordsSet||{},d=r.transaction?r.transaction:await n.model.sequelize.transaction();try{for(const t of Object.keys(c)){const a=e.objects[t];if(a&&n.model.associations[t]){let n=await a.model.findAll({where:{recorderId:o,recorderType:l}});n=JSON.parse(JSON.stringify(n)),await a.model.destroy({where:{recorderId:o,recorderType:l},transaction:d});for(const e of c[t])await a.model.create(e,{transaction:d});await f.default.updateTotals(a,{objects:e.objects,recordsBefore:n,recordsAfter:c[t],recorderId:o,recorderType:l,transaction:d})}}return!1===i&&(await n.model.update({isConfirmed:!0,markedToDelete:!1},{where:{id:e.body.id},transaction:d}),d.afterCommit(()=>{p.default.onChangeHandler(n.model,e.body.id,"confirm",e.user?.id)})),r.transaction||await d.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return r.transaction||await d.rollback(),u.default.error(`Error in ${n.name} confirmItem controller`,{meta:`${n.name} is not confirmed. ${e}`}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async undoConfirmItem(e,t,a,n,r={}){const o=e.body.id,i=n.name,l=r.transaction?r.transaction:await n.model.sequelize.transaction();try{for(const t of Object.keys(n.model.associations))if(n.model.associations[t].options._registerRecords){const a=e.objects?.[t];if(a){let t=await a.model.findAll({where:{recorderId:o,recorderType:i}});t=JSON.parse(JSON.stringify(t));const n=a.model;await n.destroy({where:{recorderId:o,recorderType:i},transaction:l}),await f.default.updateTotals(a,{objects:e.objects,recordsBefore:t,recordsAfter:[],recorderId:o,recorderType:i,transaction:l})}}return await n.model.update({isConfirmed:!1},{where:{id:e.body.id},transaction:l}),l.afterCommit(()=>{p.default.onChangeHandler(n.model,e.body.id,"undoConfirm",e.user?.id)}),r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return u.default.error(`Error in ${n.name} undoConfirmItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async deleteItem(e,t,a,n,r={},o){const i=e.params.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=r.transaction?r.transaction:await n.model.sequelize.transaction(),c=await n.model.findByPk(i);if(!c){r.transaction||await l.rollback();const e=`${n.name} with uuid ${i} not found`;return u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}try{return await c.destroy({where:{id:i},cascade:!0,transaction:l}),l.afterCommit(()=>{!0===n.configurationData?m.default.updateInitialData(n.model,n.path,{objectId:c.id,event:"delete",oldValue:c}):Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n)}),o&&"function"==typeof o&&o(e,t,c,l),r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:{message:"OK"}}}catch(e){return r.transaction||await l.rollback(),u.default.error(`Error in ${n.name} deleteItem controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},async changeItemDeletionMark(e,t,a,n,r={},o=void 0){const i=e.body.id;if(!i||"string"!=typeof i||36!==i.length){const e="Object id is not correct!";return u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const l=r.transaction?r.transaction:await n.model.sequelize.transaction(),c=await n.model.findByPk(i);if(!c){r.transaction||await l.rollback();const e=`${n.name} with uuid ${i} not found`;return u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.NOT_FOUND,responseData:{message:e}}}const d={markedToDelete:!c.markedToDelete};try{const a=JSON.parse(JSON.stringify(c)),u=await c.update(d,{transaction:l});if(o&&"function"==typeof o&&await o(e,t,u,a,l),l.afterCommit(()=>{!0===n.configurationData?m.default.updateInitialData(n.model,n.path,{objectId:u.id,event:"update",oldValue:a,newValue:u,changeDeletionMark:!0}):Object.prototype.hasOwnProperty.call(n.model.rawAttributes,"predefinedName")&&"catalog"===n.type&&m.default.updatePredefinedInitialData(n),p.default.onChangeHandler(n.model,i,"update",e.user?.id)}),"document"===n.type&&c.isConfirmed){for(const e of Object.keys(n.model.associations))if(n.model.associations[e].options._registerRecords){const t=n.model.associations[e].target;await t.destroy({where:{recorderId:i},transaction:l})}await n.model.update({isConfirmed:!1},{where:{id:i},transaction:l})}return r.transaction||await l.commit(),{status:s.StatusCodes.OK,responseData:u}}catch(e){return r.transaction||await l.rollback(),u.default.error(`Error in ${n.name} changeDeletionMark controller`,{meta:e}),{status:s.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e?.original?.message||e?.message}}}},calculateRegisterTotals:async(e,t,a,n)=>(await f.default.calculateTotals(n,e.objects),{status:s.StatusCodes.OK,responseData:{message:"OK"}})}},4139:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(6797)),o=r.default.Router();o.get("/",function(e,t,a){t.render("index",{title:"SYNERGY Server"})}),o.use(s.default.isAuthenticated),t.default=o},4469:e=>{e.exports=require("dotenv/config")},4621:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(7138),s=n(a(5788)),o=n(a(2282));function i(e,t,a){switch(t){case"number":e.valueNumber=a;break;case"string":case"text":e.valueString=a;break;case"date":e.valueDate=a;break;case"boolean":e.valueBoolean=a;break;case"object":e.valueRef=a}}t.default={async getSetting(e){const t={value:null,message:"",status:null};if(!e)return t.status=r.StatusCodes.BAD_REQUEST,t.message="Bad incoming parameters.",t;try{const a=await s.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!a)return t.status=r.StatusCodes.BAD_REQUEST,t.message="App setting is not found.",t;const n=await s.default.models.AppSetting.findOne({where:{appSettingItemId:a.id}});if(n)t.value=function(e,t){switch(e){case"number":return t.valueNumber;case"string":case"text":return t.valueString;case"date":return t.valueDate;case"boolean":return t.valueBoolean;case"object":case"enum":return t.valueRef;default:return null}}(a.valueType,n),t.status=r.StatusCodes.OK;else{const e=function(e){switch(e.valueType){case"number":return 0;case"string":case"text":return"";case"date":case"object":case"enum":default:return null;case"boolean":return!1}}(a);t.status=r.StatusCodes.OK,t.value=e}}catch(e){o.default.error("Error in App getSetting controller",{meta:e}),t.status=r.StatusCodes.INTERNAL_SERVER_ERROR,t.message="Internal server error."}return t},async setSetting(e,t){const a={value:null,message:"",status:null};if(!e)return a.status=r.StatusCodes.BAD_REQUEST,a.message="Bad incoming parameters.",a;try{const n=await s.default.models.AppSettingItem.findOne({where:{predefinedName:e}});if(!n)return a.status=r.StatusCodes.BAD_REQUEST,a.message="App setting is not found.",a;const o=await s.default.models.AppSetting.findOne({where:{appSettingItemId:n.id}});if(o){const e={};i(e,n.valueType,t);const s=await o.update(e);a.status=r.StatusCodes.OK,a.value=s}else{const e={appSettingItemId:n.id};i(e,n.valueType,t);const o=await s.default.models.AppSetting.create(e);a.status=r.StatusCodes.OK,a.value=o}}catch(e){o.default.error("Error in App setSetting controller",{meta:e}),a.status=r.StatusCodes.INTERNAL_SERVER_ERROR,a.message="Internal server error."}return a}}},4716:e=>{e.exports=require("moment")},5124:e=>{e.exports=require("winston")},5379:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(9896));t.default={async initSubscriptions(e){const t=`\n SELECT\n event_subscriptions.id AS "id",\n event_subscriptions.name AS "name",\n event_subscriptions."execSide" AS "execSide",\n event_subscriptions."objectType" AS "objectType",\n event_subscriptions.event AS "event",\n event_subscriptions."serviceFunction" AS "serviceFunctionPath",\n subscription_objects."objectId" AS "objectId"\n FROM \n event_subscriptions\n LEFT JOIN \n event_subscriptions_event_objects as "subscription_objects"\n ON \n subscription_objects."parentId" = event_subscriptions.id \n WHERE\n event_subscriptions."markedToDelete" = false\n AND event_subscriptions."execSide" = '${e}'`;try{const a=(await s.default.query(t,{type:r.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({name:t.name,execSide:t.execSide,objectType:t.objectType,event:t.event,serviceFunctionPath:t.serviceFunctionPath,objects:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[]);if("server"===e)for(const e of a)if(e.serviceFunctionPath){const t=e.serviceFunctionPath.split(".");if(2!==t.length){e.serviceFunction=void 0;continue}const a=t[0],n=t[1],r=`${process.cwd()}/src/modules/commonModules/${a}.js`;let s;o.default.existsSync(r)&&(s=require(r),s?.[n]&&(e.serviceFunction=s[n]))}return a}catch(e){return console.error(e),[]}},getSubscription:(e,t,a,n)=>e.find(e=>e.event===t&&e.objectType===a&&(0===e.objects.length||e.objects.includes(n)))}},5483:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(1688)),o=n(a(3786)),i=n(a(6224)),l=r.default.Router();function u(e={httpMethod:"GET"},t){let a;const n={};return e.userRole?n.id=e.userRole:t.accessRoleId?n.id=t.accessRoleId:n.key=t.path,a=e.accessLevel?"CAN_REED"===e.accessLevel?s.default.canRead(n):"CAN_MODIFY"===e.accessLevel?s.default.canModify(n):"IS_AUTH"===e.accessLevel?s.default.isAuth:s.default.isFullRights:!0===t.system?"GET"===e.httpMethod?s.default.isAuth:s.default.isFullRights:"GET"===e.httpMethod?s.default.canRead(n):s.default.canModify(n),a}t.default=async()=>{const e=await(0,i.default)();for(const t of Object.values(e)){if(t.api)for(const e of t.api)e.controller?t.controllers[e.controller]?l[e.httpMethod.toLowerCase()](`/${t.path}/${e.path}`,u(e,t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.controllers[e.controller]):console.error("API controller is not exist: ",t.name,e.controller):console.error("API controller is not set for object: ",t.name,e);"register"===t.type&&(t.accumulationRegister&&l.post(`/${t.path}/calculate_totals`,u(t.staticAPI.calculateTotals||{httpMethod:"POST"},t),t.calculateTotals),"dataProcessors"===t.name&&(l.post(`/${t.path}/execute_processing`,u(t.staticAPI.executeProcessing||{httpMethod:"POST"},t),t.executeProcessing),l.get(`/${t.path}/export/:id`,u(t.staticAPI.exportProcessor||{httpMethod:"POST"},t),t.exportProcessor),l.post(`/${t.path}/import`,u(t.staticAPI.importProcessor||{httpMethod:"POST"},t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.importProcessor))),"catalog"===t.type&&("appObjects"===t.name?(l.post(`/${t.path}/execute_migration`,u(t.staticAPI.executeMigration||{httpMethod:"POST"},t),t.executeMigration),l.post(`/${t.path}/exist_migrations`,u(t.staticAPI.existMigrations||{httpMethod:"POST"},t),t.existMigrations)):"scheduledJobs"===t.name&&l.post(`/${t.path}/execute_manually`,u(t.staticAPI.executeManually||{httpMethod:"POST"},t),t.executeManually)),!0!==t.staticAPI.findAll?.disabled&&l.get(`/${t.path}`,u(t.staticAPI.findAll||{httpMethod:"GET"},t),t.findAll),!0!==t.staticAPI.findById?.disabled&&l.get(`/${t.path}/:id`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findById),!0!==t.staticAPI.create?.disabled&&l.post(`/${t.path}`,u(t.staticAPI.create||{httpMethod:"POST"},t),(e,t,a)=>{const n=e.headers["content-type"];if(n&&n.includes("multipart/form-data"))return o.default.array("files")(e,t,e=>{if(e)return t.status(400).json({message:`File upload error: ${e}`});a()});a()},t.create),!0!==t.staticAPI.update?.disabled&&l.put(`/${t.path}/:id`,u(t.staticAPI.update||{httpMethod:"PUT"},t),t.update),!0!==t.staticAPI.delete?.disabled&&l.delete(`/${t.path}/:id`,u(t.staticAPI.delete||{httpMethod:"DELETE"},t),t.delete),"catalog"===t.type&&l.get(`/${t.path}/predefined/:name`,u(t.staticAPI.findById||{httpMethod:"GET"},t),t.findPredefined),"catalog"!==t.type&&"document"!==t.type||!0===t.staticAPI.changeDeletionMark?.disabled||l.post(`/${t.path}/change_deletion_mark`,u(t.staticAPI.changeDeletionMark||{httpMethod:"POST"},t),t.changeDeletionMark),"document"===t.type&&(!0!==t.staticAPI.confirm?.disabled&&l.put(`/${t.path}/confirm/:id`,u(t.staticAPI.confirm||{httpMethod:"PUT"},t),t.confirm),!0!==t.staticAPI.undoConfirm?.disabled&&l.put(`/${t.path}/undo_confirm/:id`,u(t.staticAPI.undoConfirm||{httpMethod:"PUT"},t),t.undoConfirm))}return{router:l,objects:e}}},5486:e=>{e.exports=require("bcrypt")},5560:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5483)),s=n(a(360));t.default=async e=>{const{router:t,objects:a}=await(0,r.default)();e.use((e,t,n)=>{e.objects=a,n()}),e.locals.objects=a,e.use(t);const n=await s.default.initRoutes();return e.use(n),{router:t,objects:a}}},5788:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=a(3903),o=n(a(6788)),i=new r.Sequelize(o.default.dbName,o.default.dbUser,o.default.dbPassword,{dialect:o.default.dbDialect,host:o.default.dbHost,port:o.default.dbPort,logging:!1,pool:{max:150},define:{hooks:{beforeValidate:(e,t)=>{null===e.dataValues.id&&(e.dataValues.id=(0,s.v4)())}}}});t.default=i},5977:e=>{e.exports=require("express-session")},6224:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7173)),s=n(a(3958)),o=n(a(2562)),i=n(a(3464)),l=n(a(6910)),u=n(a(5379)),c=n(a(6836)),d=n(a(9896)),f=a(7138),m=n(a(2282));function p(e,t,a){if(t.fields.find(e=>!0===e.password)){const n=a.objectData?a.objectData:{...e.body};for(const e of t.fields.filter(e=>!0===e.password))if(""===n[e.name])n[e.name]=null;else if(n[e.name])if(e.decryptable){const t=c.default.encrypt(n[e.name]);n[e.name]=JSON.stringify(t)}else n[e.name]=c.default.createPasswordHash(n[e.name]);a.objectData=n}}t.default=async()=>{const e=await(0,r.default)(),t=await u.default.initSubscriptions("server");for(const a in e){let n;const r=`${e[a].type}s/${a}/server.module.js`,c=`${process.cwd()}/src/modules/${r}`;if(d.default.existsSync(c)&&(n=require(c)),e[a].findAll=async(r,o,i)=>{let l=null;if(n?.findAll)l=await n.findAll(r,o,i,e[a]);else{const c={};n?.beforeFindAll&&await n.beforeFindAll(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindAll",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),l=await s.default.findAllItems(r,o,i,e[a],c),n?.afterFindAll&&await n.afterFindAll(r,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindAll",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,o,i,e[a],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${a} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[a].findById=async(r,o,i)=>{let l=null;if(n?.findById)l=await n.findById(r,o,i,e[a]);else{const c={};n?.beforeFindById&&await n.beforeFindById(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeFindById",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),l=await s.default.findItem(r,o,i,e[a],c),n?.afterFindById&&await n.afterFindById(r,o,i,e[a],l,c);const f=u.default.getSubscription(t,"afterFindById",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,o,i,e[a],l,c))}return l?.status&&l?.responseData||m.default.error(`Error in ${a} findById controller. Controller result is not correct`),o?o.status(l?.status||f.StatusCodes.INTERNAL_SERVER_ERROR).send(l?.responseData||{message:"Result error."}):l},e[a].create=async(r,o,i)=>{if(n?.create)return await n.create(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{n?.beforeCreate&&"function"==typeof n?.beforeCreate&&await n.beforeCreate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeCreate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(r,s,o,l)=>{n?.afterCreate&&"function"==typeof n?.afterCreate&&await n.afterCreate(r,s,i,e[a],{newItem:o,transaction:l});const c=u.default.getSubscription(t,"afterCreate",e[a].type,e[a].id);c?.serviceFunction&&await(c?.serviceFunction(r,s,i,e[a],{newItem:o,transaction:l}))};p(r,e[a],c);const h=await s.default.createItem(r,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return r.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==r.body?.isConfirmed)return r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,o,i,e[a],y,c);const g=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(g?.serviceFunction&&await(g?.serviceFunction(r,o,i,e[a],y,c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await s.default.confirmItem(r,o,i,e[a],{recordsSet:y,...c});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(r,o,i,e[a],c)),b.status===f.StatusCodes.OK?(r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(r.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[a].update=async(r,o,i)=>{if(n?.update)return await n.update(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{n?.beforeUpdate&&"function"==typeof n?.beforeUpdate&&await n.beforeUpdate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);if(d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const m=async(r,s,o,l,c)=>{n?.afterUpdate&&"function"==typeof n?.afterUpdate&&await n.afterUpdate(r,s,i,e[a],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1});const d=u.default.getSubscription(t,"afterUpdate",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,s,i,e[a],{updatedObject:o,existObject:l,transaction:c,changeDeletionMark:!1}))};p(r,e[a],c);const h=await s.default.updateItem(r,o,i,e[a],c,m);if(h?.status!==f.StatusCodes.OK)return r.transaction||await l.rollback(),o?o.status(h.status).send(h.responseData):h;if("document"!==e[a].type||!0!==e[a].confirmation||!0!==r.body?.isConfirmed)return r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h;const y={};n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,o,i,e[a],y,c);const g=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(g?.serviceFunction&&await(g?.serviceFunction(r,o,i,e[a],y,c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const b=await s.default.confirmItem(r,o,i,e[a],{recordsSet:y,...c});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],c);const w=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return w?.serviceFunction&&await(w?.serviceFunction(r,o,i,e[a],c)),b.status===f.StatusCodes.OK?(r.transaction||await l.commit(),o?o.status(h.status).send(h.responseData):h):(r.transaction||await l.rollback(),o?o.status(b.status).send(b.responseData):b)}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},e[a].delete=async(r,o,i)=>{if(n?.delete)return await n.delete(r,o,i,e[a]);{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={transaction:l};try{n?.beforeDelete&&"function"==typeof n?.beforeDelete&&await n.beforeDelete(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c));const m=async(r,s,o,l)=>{n?.afterDelete&&"function"==typeof n?.afterDelete&&n.afterDelete(r,s,i,e[a],{deletedObject:o,...c});const d=u.default.getSubscription(t,"afterDelete",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,s,i,e[a],{deletedObject:o,...c}))},p=await s.default.deleteItem(r,o,i,e[a],c,m);return r.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}},"catalog"===e[a].type&&(e[a].findPredefined=async(t,n,r)=>{const o=await s.default.findPredefinedItem(t,n,r,e[a]);return n?n.status(o.status).send(o.responseData):o}),"catalog"!==e[a].type&&"document"!==e[a].type||(e[a].changeDeletionMark=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={transaction:l,changeDeletionMark:!0};try{n?.beforeUpdate&&"function"==typeof n?.beforeUpdate&&await n.beforeUpdate(r,o,i,e[a],c);const d=u.default.getSubscription(t,"beforeUpdate",e[a].type,e[a].id);d?.serviceFunction&&await(d?.serviceFunction(r,o,i,e[a],c));const m=async(r,s,o,l,d)=>{n?.afterUpdate&&"function"==typeof n?.afterUpdate&&await n.afterUpdate(r,s,i,e[a],{updatedObject:o,existObject:l,...c});const f=u.default.getSubscription(t,"afterUpdate",e[a].type,e[a].id);f?.serviceFunction&&await(f?.serviceFunction(r,s,i,e[a],{updatedObject:o,existObject:l,...c}))},p=await s.default.changeItemDeletionMark(r,o,i,e[a],c,m);return r.transaction||(p?.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),"register"===e[a].type&&(e[a].accumulationRegister&&(e[a].calculateTotals=async(t,n,r)=>{const o=await s.default.calculateRegisterTotals(t,n,r,e[a]);return n?n.status(o.status).send(o.responseData):o}),"dataProcessors"===a&&(e[a].executeProcessing=async(t,n,r)=>{const s=await o.default.executeProcessing(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s},e[a].exportProcessor=async(t,n,r)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.exportProcessor(t,n,r,e[a])},e[a].importProcessor=async(t,n,r)=>{if(!t)return{status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Controller can only be called from client"}};await o.default.importProcessor(t,n,r,e[a])})),"catalog"===e[a].type&&("appObjects"===a?(e[a].executeMigration=async(t,n,r)=>{try{const s=await l.default.executeMigrations(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s}catch(e){return m.default.error("Error in executeMigration controller",{meta:e}),n.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}},e[a].existMigrations=async(t,n,r)=>{try{const s=await l.default.existMigrations(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s}catch(e){return m.default.error("Error in existMigrations controller",{meta:e}),n.status(f.StatusCodes.INTERNAL_SERVER_ERROR).send(e)}}):"scheduledJobs"===a&&(e[a].executeManually=async(t,n,r)=>{const s=await i.default.executeManually(t,n,r,e[a]);return n?n.status(s.status).send(s.responseData):s})),"document"===e[a].type&&(e[a].confirm=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={},d={cancel:!1,transaction:l};try{const m=await e[a].findById({params:{id:r.body.id}});m.status===f.StatusCodes.OK&&(r.body=JSON.parse(JSON.stringify(m.responseData))),n?.beforeConfirm&&"function"==typeof n?.beforeConfirm&&await n.beforeConfirm(r,o,i,e[a],c,d);const p=u.default.getSubscription(t,"beforeConfirm",e[a].type,e[a].id);if(p?.serviceFunction&&await(p?.serviceFunction(r,o,i,e[a],c,d)),d.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:d.message?d.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const h=await s.default.confirmItem(r,o,i,e[a],{recordsSet:c,...d});n?.afterConfirm&&"function"==typeof n?.afterConfirm&&await n.afterConfirm(r,o,i,e[a],d);const y=u.default.getSubscription(t,"afterConfirm",e[a].type,e[a].id);return y?.serviceFunction&&await(y?.serviceFunction(r,o,i,e[a],d)),r.transaction||(h.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(h.status).send(h.responseData):h}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}},e[a].undoConfirm=async(r,o,i)=>{const l=r.transaction?r.transaction:await e[a].model.sequelize.transaction(),c={cancel:!1,transaction:l};try{const d=await e[a].findById({params:{id:r.body.id}});d.status===f.StatusCodes.OK&&(r.body=JSON.parse(JSON.stringify(d.responseData))),n?.undoConfirm&&"function"==typeof n?.undoConfirm&&await n.undoConfirm(r,o,i,e[a],c);const m=u.default.getSubscription(t,"undoConfirm",e[a].type,e[a].id);if(m?.serviceFunction&&await(m?.serviceFunction(r,o,i,e[a],c)),c.cancel){r.transaction||await l.rollback();const e={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:c.message?c.message:"Operation is canceled"}};return o?o.status(e.status).send(e.responseData):e}const p=await s.default.undoConfirmItem(r,o,i,e[a],c);return r.transaction||(p.status===f.StatusCodes.OK?await l.commit():await l.rollback()),o?o.status(p.status).send(p.responseData):p}catch(e){r.transaction||await l.rollback();const t={status:f.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:e.message}};return o?o.status(t.status).send(t.responseData):t}}),e[a].api&&n)for(const t of e[a].api)n[t.controller]&&(e[a].controllers[t.controller]=async(r,s,o)=>{n[t.controller](r,s,o,e[a])})}return e}},6261:e=>{e.exports=require("events")},6299:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(2282)),o=n(a(4716)),i=a(3903);function l(e,t,a){for(const t of e){for(const e of a)t[e]="expense"===t.recordType?-1*parseFloat(t[e]):parseFloat(t[e]);t.period=u(t.period)}return function(e,t,a){const n={};return e.forEach(e=>{const r=t.map(t=>e[t]).join("|");n[r]||(n[r]={},t.forEach(t=>{n[r][t]=void 0===e[t]?null:e[t]}),a.forEach(e=>{n[r][e]=0})),a.forEach(t=>{n[r][t]+=e[t]})}),Object.values(n)}(e,t,a)}function u(e){return(0,o.default)(e).add(1,"months").startOf("month").toDate()}t.default={async updateTotals(e,t){if(!e.accumulationRegister)return;const a=e.accTable;if(a){const n=await this.getCalculatedPeriod(t.objects.registersCalculation,e.id);if(!n)return;const u=a.dimensions.map(e=>e.dbName);u.push("period");const c=a.resources.map(e=>e.dbName);let d=[];t.recordsBefore.length>0&&(d=l(JSON.parse(JSON.stringify(t.recordsBefore)),u,c));let f=[];t.recordsAfter.length>0&&(f=l(JSON.parse(JSON.stringify(t.recordsAfter)),u,c));const m=function(e,t,a,n){const r={};return e.forEach(e=>{const t=a.map(t=>e[t]).join("|");r[t]||(r[t]={},a.forEach(a=>{r[t][a]=e[a]}),n.forEach(e=>{r[t][e]=0})),n.forEach(a=>{r[t][a]-=parseFloat(e[a])})}),t.forEach(e=>{const t=a.map(t=>e[t]).join("|");r[t]||(r[t]={},a.forEach(a=>{r[t][a]=e[a]}),n.forEach(e=>{r[t][e]=0})),n.forEach(a=>{r[t][a]+=parseFloat(e[a])})}),Object.values(r).filter(e=>n.some(t=>0!==e[t]))}(d,f,u,c);await async function(e,t,a,n,s,l){for(const u of t){const t=[];for(let e=(0,o.default)(s.beginPeriod);e.isSameOrBefore(s.endPeriod,"month");e.add(1,"month"))e.isSameOrAfter(u.period)&&t.push(e.toDate());for(let s of t){let t={};if(a.forEach(e=>{t[e]="period"===e?s:u[e]}),await e.findOne({where:t,transaction:l})){let a={};n.forEach(e=>{a[e]=r.Sequelize.literal(`${e} + ${u[e]}`)}),await e.update(a,{where:t,transaction:l})}else{let t={id:(0,i.v4)()};a.forEach(e=>{t[e]="period"===e?s:u[e]}),n.forEach(e=>{t[e]=u[e]}),await e.create(t,{transaction:l})}}}}(a.model,m,u,c,n,t.transaction).catch(e=>{s.default.error(`Error updating records for register: ${a.name}`,{meta:e})})}},async calculateTotals(e,t){if(!e.accumulationRegister)return;const a=e.accTable;if(a){const n="period",r=a.dimensions.map(e=>e.dbName),s=a.resources.map(e=>e.dbName),l=await e.model.findAll();if(0===l.length)return void await a.model.truncate();const u=l.map(e=>{const t={};return r.forEach(a=>{t[a]=e[a]}),t[n]=(0,o.default)(e[n]).add(1,"month").startOf("month").toDate(),s.forEach(a=>{t[a]="receipt"===e.recordType?parseFloat(e[a]):-parseFloat(e[a])}),t}),c=[...new Set(u.map(e=>e[n]))].sort((e,t)=>e-t)[0],d=(0,o.default)().add(1,"month").startOf("month").toDate();let f={};await a.model.truncate();const m=await a.model.sequelize.transaction();for(let e=(0,o.default)(c);e.isSameOrBefore(d,"month");e.add(1,"month")){const t=e.toDate(),l={};u.forEach(a=>{if((0,o.default)(a[n]).isSame(e,"month")){const e=r.map(e=>a[e]).join("_");l[e]?s.forEach(t=>{l[e][t]+=a[t]}):l[e]={...a,period:t,id:(0,i.v4)()}}}),Object.keys(f).length>0&&Object.keys(f).forEach(e=>{l[e]?s.forEach(t=>{l[e][t]+=parseFloat(f[e][t])}):l[e]={...f[e],period:t,id:(0,i.v4)()}});const c=Object.values(l).map(e=>(s.forEach(t=>{e[t]=e[t].toString()}),e));f=JSON.parse(JSON.stringify(l)),await a.model.bulkCreate(c,{ignoreDuplicates:!0,transaction:m})}await this.updateCalculatedPeriod(t.registersCalculation,{registerId:e.id,beginPeriod:c,endPeriod:d},m),await m.commit()}},getCalculatedPeriod:async(e,t)=>await e.model.findOne({where:{registerId:t}}),async updateCalculatedPeriod(e,t,a){const n=await e.model.findOne({where:{registerId:t.registerId},transaction:a});n?await n.update({beginPeriod:t.beginPeriod,endPeriod:t.endPeriod},{where:{registerId:t.registerId},transaction:a}):await e.model.create({id:(0,i.v4)(),...t},{transaction:a})}}},6304:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const dbConnection_1=__importDefault(__webpack_require__(5788)),sequelize_1=__webpack_require__(9031),http_status_codes_1=__webpack_require__(7138),node_sql_parser_1=__webpack_require__(7135),logger_service_1=__importDefault(__webpack_require__(2282)),sequelize_2=__webpack_require__(9031),fs_1=__importDefault(__webpack_require__(9896)),fs_2=__webpack_require__(9896),path_1=__importDefault(__webpack_require__(6928)),crypto_js_1=__importDefault(__webpack_require__(2103)),terser_1=__webpack_require__(9239),eventSubscription_service_1=__importDefault(__webpack_require__(5379)),commonCommands_service_1=__importDefault(__webpack_require__(7501)),packagePath=path_1.default.resolve(process.cwd(),"package.json");if(!fs_1.default.existsSync(packagePath))throw new Error(`native package.json not found at ${packagePath}`);const serverPackage=require(packagePath),app_service_1=__importDefault(__webpack_require__(4621)),common_service_1=__importDefault(__webpack_require__(2555)),userAccess_service_1=__importDefault(__webpack_require__(1691));async function getSubordinationTree(e,t){const a=[];let n=await getParentObjectsArray(e,t);const r=await getRelated(e,t);if(n.length>1&&1===n[n.length-1].length&&n.pop(),r.parents.length>0){1===n.length&&1===n[0].length&&(n=r.parents);for(const e of r.parents)n.push(e)}async function s(e,t){const a=e.subordination.filter(e=>!e.isParent),n={objectId:t.id,objectType:e.name,text:t.presentation,markedToDelete:t.markedToDelete,icon:!0===t.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]};for(const e of a)if(e.isTablePart){const a=await dbConnection_1.default.models[e.model].findAll({where:{parentId:t.id}}),r=e.childs.filter(e=>!e.isParent&&e.isActive);for(const e of r)for(const t of a){const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),r=t[e.path];if(r&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:r}});e&&n.children.push(await s(a,e))}}}else{const a=await dbConnection_1.default.models.AppObject.findOne({where:{model:e.model}}),r=t[e.path];if(r&&a){const e=await dbConnection_1.default.models[a.model].findOne({where:{id:r}});e&&n.children.push(await s(a,e))}}return n}const o=await s(e,t);if(o.disabled=!0,r.children.length>0)for(const e of r.children)o.children.push(await s(e.appObject,e.object));for(const e of n){let t=null,n={};if(e.length>1)for(let a=e.length-2;a>=0;a--)n={objectId:e[a].object.id,objectType:e[a].objectType,text:e[a].object.presentation,markedToDelete:e[a].object.markedToDelete,icon:!0===e[a].object.markedToDelete?"ri-file-reduce-line text-danger":"ri-file-text-fill text-info tree-icon",opened:!0,disabled:!1,children:[]},t?(n.children.push(t),t=n):(n.children.push(o),t=n);else t=o;t&&a.push(t)}return a}async function getParentObjectsArray(e,t){let a=[];await async function e(t,n,r=[]){const s=[{object:n,objectType:t.name},...r],o=t.subordination.filter(e=>e.isParent);if(o.length>0){for(const t of o)if(t.isParent)if(t.isTablePart){const e=await dbConnection_1.default.models[t.model].findAll({where:{parentId:n.id}}),a=t.childs.filter(e=>!e.isParent&&e.isActive);for(const t of a)for(const a of e){const e=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),n=a[t.path];if(n&&e){const t=await dbConnection_1.default.models[e.model].findOne({where:{id:n}});t&&t.children.push(await this.createChildObjectTree(e,t))}}}else{const n=await dbConnection_1.default.models.AppObject.findOne({where:{model:t.model}}),r=s[0].object[t.path];if(r&&n){const t=await dbConnection_1.default.models[n.model].findOne({where:{id:r}});t&&await e(n,t,s)}else a.push(s)}}else a.push(s)}(e,t);for(let e=0;e<a.length;e++){const t=a[e],n=a.filter(e=>e[0]===t[0]);n.length>1&&a.splice(e+1,n.length-1)}return a}async function getRelated(e,t){const a=await dbConnection_1.default.models.AppObject.findAll({where:{subordination:{[sequelize_2.Op.not]:null,[sequelize_2.Op.ne]:"[]"},model:{[sequelize_2.Op.ne]:e.model}}});let n,r,s={parents:[],children:[]};if(a.length>0)for(const o of a){n=o,r=[];let a=!1;for(const n of o.subordination)if(n.isTablePart){for(const s of n.childs)if(s.model===e.model&&(r=await dbConnection_1.default.models[o.model].findAll({where:{[s.path]:t.id}}),r.length>0)){a=s.isParent;break}if(r.length>0)break}else if(n.model===e.model&&(r=await dbConnection_1.default.models[o.model].findAll({where:{[n.path]:t.id}}),r.length>0)){a=n.isParent;break}if(r.length>0)for(const o of r)if(a)s.children.push({appObject:n,object:o});else{const a=await getParentObjectsArray(n,o);for(const n of a)n.push({object:t,objectType:e.name}),s.parents.push(n)}}return s}function getModelsByTableNames(e){const t=[];for(const a of e){let e=dbConnection_1.default.modelManager.models.find(e=>e.tableName===a);if(!e)throw new Error(`Table "${a}" not found!`);t.push({tableName:a,model:e.name})}return t}function assembleAttrib(e,t){let a={name:t,type:e.type.key,allowNull:e.allowNull,defaultValue:e.defaultValue};return"STRING"===a.type&&(a.maxLength=e.type.options?.length||null),"DECIMAL"===a.type&&(a.typeOptions=e.type.options||null),"ENUM"===a.type&&(a.values=e.values,a.ref=e._ref),"VIRTUAL"===a.type&&(e._sortBy?a.sortBy=e._sortBy:a.sortBy="createdAt"),a}async function hasModelAccess(e,t){t.user;const a=await dbConnection_1.default.models.AppObject.findAll({where:{model:e.map(e=>e.model)},attributes:["model","name","accessRoleId"]});for(const t of e){const e=a.find(e=>e.model===t.model);if(!e)throw new Error(`App object for table "${t.tableName}" is not exist.`);if(!e.accessRoleId)throw new Error(`Access role for app object "${e.name}" is not set.`);t.objectName=e.name,t.accessRoleId=e.accessRoleId}return e.map(e=>e.accessRoleId),!0}async function initObjectClientModule(e,t){if(!e)return e;const a=`function main() { return ${e.replace(/^\s*export\s+default\s+/,"")}}`,n=await(0,terser_1.minify)(a);return crypto_js_1.default.AES.encrypt(n.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),t).toString()}exports.default={async getAppInfo(e,t,a){const n={appName:"SynergyCore",company:"INTELEKTSOFT",serverVersion:serverPackage?.version||"0.0.0"};t.status(200).send(n)},async getObjectMetadata(e,t,a){const{objectType:n,tableName:r}=e.query,s=JSON.parse(e.query.withTableParts||"false");let o;if(n?o=dbConnection_1.default.models[n]:Object.keys(dbConnection_1.default.models).forEach(e=>{dbConnection_1.default.models[e].getTableName()===r&&(o=dbConnection_1.default.models[e])}),!o)return console.error("Model not found: ",n),void t.status(400).send({message:"Model not found"});let i=[],l=[],u=[];Object.keys(o.associations).forEach(e=>{const t=o.associations[e];if(!0===t.isMultiAssociation)return;const a={name:e,foreignKey:t.foreignKey,ref:"",modelName:t.target.name};if(Object.prototype.hasOwnProperty.call(t.target,"options"))if(t.target.options.namespace)a.ref=t.target.options.namespace;else{const e=t.target.options.name.plural;a.ref=e.charAt(0).toLowerCase()+e.slice(1)}const n=t.target.rawAttributes;n.presentation?._sortBy?a.sortBy=n.presentation._sortBy:a.sortBy="createdAt",!1===t.options.constraints?u.push(a):l.push(a)});const c=[];for(let e in o.getAttributes()){if(c.includes(e))continue;let t,a=assembleAttrib(o.getAttributes()[e],e);if(t=l.find(t=>t.foreignKey===e),t||(t=u.filter(t=>t.foreignKey===e),0===t.length&&(t=void 0)),t){if(Array.isArray(t)){const n=e.endsWith("Id")?e.slice(0,-2):e,r=n+"Type";let s=i.find(e=>e.name===r);if(s){const e=i.findIndex(e=>e===s);i.splice(e,1)}else c.push(r);for(const s of t){const t=i.findIndex(e=>e.name===n);-1!==t?(i[t].ref.push(s.ref),i[t].model.push(s.modelName)):(a.name=n,a.ref=[s.ref],a.model=[s.modelName],a.fieldPath=e,a.fieldTypePath=r,a.multiType=!0,a.sortBy=s.sortBy,i.push(a))}continue}a.name=t.name,a.ref=t.ref,a.model=t.modelName,a.fieldPath=e,a.sortBy=t.sortBy}i.push(a)}if(s)for(const e in o.associations){const t=o.associations[e];if(!0===t.isMultiAssociation){if(t.options._noTablePart)continue;let a={name:e,type:"tablePart",model:o.associations[e].target?.name};i.push(a)}}t.status(200).send(i)},async getObjectFields(e,t,a){const{objectName:n}=e.query,r=JSON.parse(e.query.withTableParts||"false"),s=await dbConnection_1.default.models.AppObject.findOne({where:{name:n}});if(!s)return void t.status(404).send({message:"Object not found"});let o=s.dbFields;r||(o=o.filter(e=>!e.isTablePart)),t.status(200).send(o)},async getSubordination(e,t,a){const{objectType:n,objectId:r}=e.query,s=await dbConnection_1.default.models.AppObject.findOne({where:{model:n}});if(!s)return void t.status(400).send({message:"Model not found"});const o=await dbConnection_1.default.models[s.model].findOne({where:{id:r}});if(!o)return void t.status(400).send({message:"Object not found"});const i=await getSubordinationTree(s,o);t.status(200).send(i)},async getObjects(e,t,a){let n=[];Object.keys(dbConnection_1.default.models).forEach(e=>{const t=dbConnection_1.default.models[e];t.options.mainModel&&n.push({model:e,name:t.options.name,tableName:t.getTableName()})}),n.sort((e,t)=>e.model.toLowerCase()>t.model.toLowerCase()?1:-1),t.status(200).send(n)},async getModels(e,t,a){let n=[];Object.keys(dbConnection_1.default.models).forEach(e=>{let t=dbConnection_1.default.models[e].getTableName();n.push({model:e,tableName:t,name:dbConnection_1.default.models[e].options.name})}),t.status(200).send(n)},async getRegistersMetadata(e,t,a){const{modelName:n}=e.query;let r;if(n&&(r=dbConnection_1.default.models[n]),!r)return console.error("Model not found: ",n),void t.status(400).send({message:"Model not found"});const s=[];Object.keys(r.associations).forEach(e=>{const t=r.associations[e];if(t.options._registerRecords){const e=t.target,a=e.options.namespace?e.options.namespace:e.options.name.plural.charAt(0).toLowerCase()+e.options.name.plural.slice(1),n=Object.keys(e.rawAttributes).map(t=>e.rawAttributes[t]),r={name:a,fields:n};s.push(r)}}),t.status(200).send(s)},async getSetting(e,t,a){const n=e.query.settingName,r=await app_service_1.default.getSetting(n);r?r.status===http_status_codes_1.StatusCodes.OK?t.status(r.status).send(r.value):t.status(r.status).send({message:r.message}):t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Bad incoming parameters"})},async setSetting(e,t,a){const{settingName:n,settingValue:r}=e.body,s=await app_service_1.default.setSetting(n,r);s.status===http_status_codes_1.StatusCodes.OK?t.status(s.status).send(s.value):t.status(s.status).send({message:s.message})},async getEnums(e,t,a){const n=e.query.lang;try{const e=[];let a=await dbConnection_1.default.models.Enum.findAll({include:[{model:dbConnection_1.default.models.EnumValue,as:"values"}],order:["name"]});for(const t of a)e.push({id:t.id,name:t.name,title:common_service_1.default.translateField(t,"title",n),values:t.values.map(e=>({value:e.value,title:common_service_1.default.translateField(e,"title",n)}))});t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEnums controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getAppObjects(e,t,a){const n=e.query.lang;try{const e=[];let a=await dbConnection_1.default.models.AppObject.findAll({attributes:["id","name","lang","title","path","type","reflection"],order:["name"]});for(const t of a){let a="createdAt";t.reflection?.sortBy?a=t.reflection?.sortBy:"catalog"===t.type?a="name":"document"===t.type&&(a="numberStr"),e.push({id:t.id,name:t.name,path:t.path,type:t.type,title:common_service_1.default.translateField(t,"title",n),sortBy:a})}t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getCommonModules(e,t,a){if(e.user)try{const a={};let n=await dbConnection_1.default.models.CommonModule.findAll({where:{[sequelize_2.Op.not]:{[sequelize_2.Op.and]:[{execSide:"server"},{clientCall:!1}]}},attributes:["name","execSide","clientCall"],order:["name"]});for(const e of n){const t=`commonModules/${e.name}.js`;let n=null;const r=`${process.cwd()}/src/modules/${t}`;let s="";if("client"===e.execSide){if(!fs_1.default.existsSync(r)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}if(n=await fs_2.promises.readFile(r,"utf-8"),n){const e=/^\s*export\s+(?:async\s+)?function\s+([a-zA-Z0-9_]+)\s*\([^)]*\)\s*{[^}]*}/gm;let t;const a=[];let r=n;for(;null!==(t=e.exec(n));)a.push(t[1]),r=r.replace(t[0],t[0].replace("export ",""));s=`function main() {${r.trim()} return{${a.join(",\n ")}}}`}else s="function main() {return {}}"}else{if(!fs_1.default.existsSync(r)){logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${e.name}" not found!`});continue}n=require(r);let t="";if(n){const e=Object.keys(n).filter(e=>"function"==typeof n[e]);for(const a of e)t+=`\nasync function ${a}(params){ \n const response = await axios.post('/app/exec-common-module',{funcPath:'commonUseServer.${a}', params})\n return response?.data || undefined\n }`;t+=`\n return {${e.join(",\n ")}}`}s=`function main() {${""===t?"return {}":t}}`}const o=await(0,terser_1.minify)(s);a[e.name]=o.code.replace(/^function main\(\)/,"")}const r=crypto_js_1.default.AES.encrypt(JSON.stringify(a),e.user.id).toString();t.status(http_status_codes_1.StatusCodes.OK).send(r)}catch(e){logger_service_1.default.error("Error in app appObjects controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getEventSubscriptions(e,t,a){if(e.user)try{const e=await eventSubscription_service_1.default.initSubscriptions("client");t.status(http_status_codes_1.StatusCodes.OK).send(e)}catch(e){logger_service_1.default.error("Error in app getEventSubscriptions controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getCommonCommands(e,t,a){if(e.user)try{const a=await commonCommands_service_1.default.initCommonCommands(e.user.id);t.status(http_status_codes_1.StatusCodes.OK).send(a)}catch(e){logger_service_1.default.error("Error in app getCommonCommands controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async getViewSettings(e,t,a){if(!e.user)return void t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"});const n=e.params.id;let r="";if(!n||"string"!=typeof n||36!==n.length)return r="View settings id is not correct!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:r}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:r});try{let a=await dbConnection_1.default.models.ViewSetting.findByPk(n,{include:[{model:dbConnection_1.default.models.AppObject,attributes:["name","title","presentation","type"],as:"appObject"}]});if(!a)return r="View settings not found!",logger_service_1.default.error("Error in app getViewSettings controller",{meta:r}),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:r});const s=JSON.parse(JSON.stringify(a)),o=`${process.cwd()}/src/modules/${s.appObject.type}s/${s.appObject.name}/views/${s.name}/server.module.js`;if(fs_1.default.existsSync(o)){const t=require(o);if(t){const a=Object.keys(t).filter(e=>"function"==typeof t[e]);let n="";for(const e of a)n+=`\nasync function ${e}(params){ \n const response = await axios.post('/app/exec-func', { objectFunc: 'viewSettings.${s.appObject.name}.${s.name}.${e}', params })\n return response?.data || undefined\n }`;n+=`\n return {${a.join(",\n ")}}`;const r=`function main() {${""===n?"return {}":n}}`,o=await(0,terser_1.minify)(r);s.serverModule=crypto_js_1.default.AES.encrypt(o.code.replace(/^function main\(\)/,""),e.user.id).toString()}}"3"===(e.headers["x-client-version"]||"2")?(s.moduleV3=await initObjectClientModule(s.moduleV3,e.user.id),s.module=void 0):(s.module=await initObjectClientModule(s.module,e.user.id),s.moduleV3=void 0),t.status(http_status_codes_1.StatusCodes.OK).send(s)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async getClientStore(e,t,a){if(e.user)try{let a=await dbConnection_1.default.models.AppObject.findAll({where:{markedToDelete:!1,notClientAccess:!1},attributes:{exclude:["indexes","api","staticAPI"]}});const n=JSON.parse(JSON.stringify(a));for(const t of n)if("3"===(e.headers["x-client-version"]||"2")){if(t.moduleV3){t.moduleV3=`function main() { return ${t.moduleV3.replace(/^\s*export\s+default\s+/,"")}}`;const a=await(0,terser_1.minify)(t.moduleV3);t.moduleV3=crypto_js_1.default.AES.encrypt(a.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.module=void 0}else{if(t.module){t.module=`function main() { return ${t.module.replace(/^\s*export\s+default\s+/,"")}}`;const a=await(0,terser_1.minify)(t.module);t.module=crypto_js_1.default.AES.encrypt(a.code.replace(/^function main\(\)\{return/,"").replace(/\}\s*$/,""),e.user.id).toString()}t.moduleV3=void 0}t.status(http_status_codes_1.StatusCodes.OK).send(n)}catch(e){logger_service_1.default.error("Error in app getViewSettings controller",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authenticated"})},async execFunc(req,res,nex){const{objectFunc,params}=req.body;try{const ObjectData=objectFunc.split("."),objectType=ObjectData[0];let objectName,viewName,funcName,object,appObject;if("viewSettings"===objectType?(objectName=ObjectData[1],viewName=ObjectData[2],funcName=ObjectData[3]):(objectName=ObjectData[1],funcName=ObjectData[2]),!funcName)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});if("appObjects"===objectType)object=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}});else if("viewSettings"===objectType){if(appObject=await dbConnection_1.default.models.AppObject.findOne({where:{name:objectName}}),!appObject)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`AppObject "${objectName}" not found!`});object=await dbConnection_1.default.models.ViewSetting.findOne({where:{name:viewName,appObjectId:appObject.id}})}else"components"===objectType?object=await dbConnection_1.default.models.Component.findOne({where:{name:objectName}}):"printForms"===objectType&&(object=await dbConnection_1.default.models.PrintForm.findOne({where:{name:objectName}}));if(!object)return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Object "${objectName}" id is not found!`});{let module;if("appObjects"===objectType){const e=`${object.type}s/${object.name}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for object "${object.name}" is not found!`});module=require(t)}else if("viewSettings"===objectType){const e=`${appObject.type}s/${appObject.name}/views/${viewName}/server.module.js`,t=`${process.cwd()}/src/modules/${e}`;if(!fs_1.default.existsSync(t))return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Serwer module for viewSetting "${object.id}" is not found!`});module=require(t)}else module=eval(`(${object.serverModule})`);if(module){if(!module[funcName])return void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${funcName}" is not found!`});const e=await module[funcName](params,req);return void res.status(http_status_codes_1.StatusCodes.OK).send(e)}}}catch(e){return logger_service_1.default.error(e),void res.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async execCommonModuleFunc(e,t,a){const{funcPath:n,params:r}=e.body;try{const e=n.split(".");if(2!==e.length)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Params are not correct!"});const a=e[0],s=e[1];if(!s)return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:"Function name is not correct!"});const o=`commonModules/${a}.js`;let i=null;const l=`${process.cwd()}/src/modules/${o}`;if(fs_1.default.existsSync(l)?i=require(l):(logger_service_1.default.error("Error in app getCommonModules controller",{meta:`Common module "${a}" not found!`}),t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Common module "${a}" not found!`})),i){if(!i[s])return void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:`Function with name "${s}" is not found!`});const e=await i[s](r);return void t.status(http_status_codes_1.StatusCodes.OK).send(e)}}catch(e){return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e.message})}},async hasRole(e,t,a){const{role:n,accessType:r}=e.query;let s=!1,o=!1;switch(r){case"read":s=!0;break;case"modify":s=!0,o=!0}if(!e.user){const e="Error in accessRight.canRead. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}if(!0===e.user?.fullRights)return void t.status(http_status_codes_1.StatusCodes.OK).send(!0);const i=e.user?.id;i?await userAccess_service_1.default.checkUserAccess(i,{key:n},s,o).then(e=>t.status(http_status_codes_1.StatusCodes.OK).send(e)).catch(e=>(logger_service_1.default.error("Error in accessRight.canRead",{meta:e}),t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e}))):t.status(http_status_codes_1.StatusCodes.UNAUTHORIZED).send({message:"User not authorized"})},async rawQuery(e,t,a){const{query:n,params:r,sid:s}=e.body;if("b0c95264-07b2-4e72-b705-fee2102505d6"!==s||!n||!r){const e="Error in app.rawQuery. Bad incoming parameters";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.BAD_REQUEST).send({message:e})}if(!e.user){const e="Error in app.rawQuery. User not authenticated";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}try{const a=getModelsByTableNames((new node_sql_parser_1.Parser).tableList(n).map(e=>e.split("::")[2]));if(!0!==await hasModelAccess(a,e)){const e="Error in app.rawQuery. User does not have access!";return logger_service_1.default.error(e),void t.status(http_status_codes_1.StatusCodes.FORBIDDEN).send({message:e})}const s=await dbConnection_1.default.query(n,{type:sequelize_1.QueryTypes.SELECT,replacements:r});return void t.status(http_status_codes_1.StatusCodes.OK).send(s[0])}catch(e){const a=`Error in app.rawQuery. ${e}`;return logger_service_1.default.error(a),void t.status(http_status_codes_1.StatusCodes.INTERNAL_SERVER_ERROR).send({message:a})}}}},6357:function(e,t,a){var n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(3648)),o=r(a(4716)),i=r(a(5788)),l=r(a(2282)),u=r(a(2555));function c(e,t,a){const n=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],r="#f2f5fa";for(const s of e){const e=[];let o=!0===a.hideDetails?1:a.fields.length;if(s.isGroup){if(e.push({text:m(s.groups,a),colSpan:o,borderColor:n,fillColor:s.children.length>0?r:null}),o>1)for(let t=1;t<o;t++)e.push({});if(a.colGroups.length>0){for(const t of s.totals)e.push({text:d(t.value||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"});if(a.showXTotal)for(const t of a.calcs){const a=s.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);e.push({text:d(a||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"})}}else for(const t of s.totals)e.push({text:d(t.value||0,t.format),borderColor:n,fillColor:s.children.length>0?r:null,alignment:t.textAlign?t.textAlign:"left"});t.push(e),s.children.length>0&&c(s.children,t,a)}else{for(let t=0;t<a.fields.length;t++)e.push({text:f(a.fields[t],s,a),borderColor:n,alignment:a.fields[t].textAlign||"left"});if(a.colGroups.length>0){const t=s[a.colGroups[0].name],r={};for(const o of a.cols)for(let i=0;i<a.calcs.length;i++){let l=0;("object"===a.colGroups[0].valueType&&o.id===t?.id||o===t)&&(l=Number(s[a.calcs[i].name]||0)),e.push({text:d(l||0,a.calcs[i].format),borderColor:n,alignment:a.calcs[i].textAlign?a.calcs[i].textAlign:"left"}),Object.hasOwnProperty.call(r,a.calcs[i].name)?r[a.calcs[i].name]+=Number(l):r[a.calcs[i].name]=Number(l)}if(a.showXTotal)for(let t=0;t<a.calcs.length;t++){let s=r[a.calcs[t].name];e.push({text:d(s||0,a.calcs[t].format),borderColor:n,alignment:a.calcs[t].textAlign?a.calcs[t].textAlign:"left"})}}else if(a.rowGroups.length>0)for(let t=0;t<a.calcs.length;t++){let r=Number(s[a.calcs[t].name]||0);e.push({text:d(r||0,a.calcs[t].format),borderColor:n,alignment:a.calcs[t].textAlign?a.calcs[t].textAlign:"left"})}t.push(e)}}}function d(e,t){if(t){const a=JSON.parse(t||'{"NFD": 3}');a.NFD&&(e=Number(e).toFixed(a.NFD))}return e}function f(e,t,a){let n=t[e.name]||"";switch(e.valueType){case"number":{let t=parseFloat(n);if(isNaN(t)&&(t=0),n=t||0,e.format){const t=JSON.parse(e.format||'{"NFD": 3}');t.NFD&&(n=Number(n).toFixed(t.NFD))}break}case"date":default:n=n||"";break;case"object":n=n.name||"";break;case"boolean":n=Boolean(n||!1),n=n?a.lang.boolean.true:a.lang.boolean.false;break;case"enum":if(n&&e.ref){const t=a.enums[e.ref].find(e=>e.value===n);n=t?t.title:n}n=n||""}return n}function m(e,t){let a;if(1===e.length)switch(e[0].valueType){case"number":a=Number(e[0].value||0);break;case"date":a=""===e[0].value?"":e[0].format?(0,o.default)(e[0].value,e[0].format).toDate()||"":e[0].value||"";break;case"boolean":a=e[0].value||!1,a=a?t.lang.boolean.true:t.lang.boolean.false;break;case"object":a=e[0].value.name||"";break;default:a=e[0].value||""}else{let n="";for(let a=0;a<e.length;a++)"object"===e[a].valueType?n+=e[a].value?.name||t.lang.undefined:"boolean"===e[a].valueType?n+=e[a].value?t.lang.boolean.true:t.lang.boolean.false:n+=e[a].value,a<e.length-1&&(n=`${n}, `);a=n||""}return a}function p(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}t.default={async generatePdf(e,t=null){const a={...e.body},r=new s.default({Courier:{normal:"Courier",bold:"Courier-Bold",italics:"Courier-Oblique",bolditalics:"Courier-BoldOblique"},Helvetica:{normal:"Helvetica",bold:"Helvetica-Bold",italics:"Helvetica-Oblique",bolditalics:"Helvetica-BoldOblique"},Times:{normal:"Times-Roman",bold:"Times-Bold",italics:"Times-Italic",bolditalics:"Times-BoldItalic"},Symbol:{normal:"Symbol"},ZapfDingbats:{normal:"ZapfDingbats"},Roboto:{normal:"src/assets/fonts/Roboto-Regular.ttf",bold:"src/assets/fonts/Roboto-Medium.ttf",italics:"src/assets/fonts/Roboto-Italic.ttf",bolditalics:"src/assets/fonts/Roboto-MediumItalic.ttf"}}),o=await async function(e){if(e.rowGroups.length>1){const t=[];let a=[];for(let n=0;n<e.rowGroups.length;n++)!0!==e.rowGroups[n].withParent&&0!==n&&(t.push(a.length>1?a:a[0]),a=[]),a.push(e.rowGroups[n]),n===e.rowGroups.length-1&&t.push(a.length>1?a:a[0]);e.rowGroups=t}e.rowGroups.length>0&&(e.fields=e.fields.filter(t=>!e.calcs.find(e=>e.name===t.name))),e.enums=await async function(e){try{const t={};let a=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const n of a)t[n.name]=n.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(e.langCode);const t=[],a={body:[],headerRows:0};if(e.periodPresentation){const t=[];let n=e.periodPresentation.length>20?e.lang.byPeriod:e.lang.byDate;t.push(`${n}:`),t.push(e.periodPresentation),a.body.push(t)}if(Array.isArray(e.filterPresentation)&&e.filterPresentation.length>0){let t=[];if(t.push(`${e.lang.filter}:`),t.push(e.filterPresentation[0]),a.body.push(t),e.filterPresentation.length>1)for(let n=1;n<e.filterPresentation.length;n++)t=[],t.push(" "),t.push(e.filterPresentation[n]),a.body.push(t)}a.body.length>0&&t.push({table:a,layout:"noBorders"});const n={body:[],headerRows:0},r=function(e){const t=[],a=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],n="#e9ecef";if(e.rowGroups.length>0){const r=!0===e.hideDetails?1:e.fields.length,s=[];if(s.push({text:p(e.rowGroups[0]),rowSpan:1===e.rowGroups.length&&e.colGroups.length>0&&e.hideDetails?2:1,colSpan:r,borderColor:a,fillColor:n}),r>1)for(let e=1;e<r;e++)s.push({});if(0===e.colGroups.length)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length+(e.hideDetails?0:1),borderColor:a,fillColor:n});else{for(const t of e.cols)s.push({text:"object"===e.colGroups[0].valueType?t.name:t,colSpan:e.calcs.length,borderColor:a,fillColor:n});e.showXTotal&&s.push({text:e.lang.total,colSpan:e.calcs.length,borderColor:a,fillColor:n})}if(t.push(s),e.colGroups.length>0&&1===e.rowGroups.length&&!0===e.hideDetails){const r=[];r.push({});for(const t of e.cols)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});t.push(r)}if(0===e.colGroups.length)for(const s of e.rowGroups.slice(1)){const o=[];if(o.push({text:p(s),colSpan:r,borderColor:a,fillColor:n}),r>1)for(let e=1;e<r;e++)o.push({});for(const t of e.calcs)o.push({});t.push(o)}else if(e.rowGroups.length>1){let s=[];s.push({text:p(e.rowGroups[0]),colSpan:r,borderColor:a,fillColor:n});for(const t of e.colGroupsData)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)s.push({text:p(t.title),rowSpan:e.rowGroups.length,borderColor:a,fillColor:n});t.push(s);for(const s of e.rowGroups.slice(2)){let o=[];o.push({text:p(s),colSpan:r,borderColor:a,fillColor:n});for(const t of e.colGroupsData)for(const t of e.calcs)o.push({});if(e.showXTotal)for(const t of e.calcs)o.push({});t.push(o)}}if(!0!==e.hideDetails){let r=[];for(const t of e.fields)r.push({text:t.title,borderColor:a,fillColor:n});if(e.colGroups.length>0)if(1===e.rowGroups.length){for(const t of e.colGroupsData)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n});if(e.showXTotal)for(const t of e.calcs)r.push({text:t.title,borderColor:a,fillColor:n})}else{for(const t of e.colGroupsData)for(const t of e.calcs)r.push({});if(e.showXTotal)for(const t of e.calcs)r.push({})}else for(const t of e.calcs)r.push({});t.push(r)}}else{let r=[];for(const t of e.fields)r.push({text:t.title,borderColor:a,fillColor:n});t.push(r)}return t}(e);n.body.push(...r);const s=[];if(c(e.data,s,e),n.body.push(...s),e.showYTotal>0&&e.totals.length>0){const t=function(e){const t=["#d3d3d3","#d3d3d3","#d3d3d3","#d3d3d3"],a="#f2f5fa",n=[];if(e.rowGroups.length>0){const r=!0===e.hideDetails?1:e.fields.length;if(n.push({text:e.lang.total,colSpan:r,borderColor:t,fillColor:a}),r>1)for(let e=1;e<r;e++)n.push({});e.totals.forEach(e=>{n.push({text:d(e.value||0,e.format),borderColor:t,fillColor:a,alignment:e.textAlign?e.textAlign:"left"})}),e.colGroups.length>0&&e.showXTotal&&e.calcs.map((r,s)=>{const o=e.totals.reduce((e,t)=>t.id===r.id?e+t.value:e,0);n.push({text:d(o||0,r.format),borderColor:t,fillColor:a,alignment:r.textAlign?r.textAlign:"left"})})}else{let r=!0,s=1;for(const o of e.fields){const i=e.totals.find(e=>e.id===o.id);if(i){if(!0===r){if(n.push({text:e.lang.total,colSpan:s-1,borderColor:t,fillColor:a}),s>1)for(let e=1;e<s-1;e++)n.push({});r=!1}n.push({text:d(i.value||0,o.format),borderColor:t,fillColor:a,alignment:o.textAlign?o.textAlign:"left"})}else r||n.push({text:"",borderColor:t,fillColor:a});s++}}return[n]}(e);n.body.push(...t)}return t.push({table:n,layout:{paddingLeft:function(e,t){return 2},paddingRight:function(e,t){return 2},paddingTop:function(e,t){return 2},paddingBottom:function(e,t){return 2}}}),t}(a),f={content:o,defaultStyle:{font:"Roboto",fontSize:a.pageFontSize||12},pageOrientation:a.pageOrientation||"landscape",pageSize:a.pageSize||"A4",pageMargins:[a.margins.left||20,a.margins.top||20,a.margins.right||20,a.margins.bottom||20]},m=r.createPdfKitDocument(f,{}),h=[];let y;m.on("data",function(e){h.push(e)}),m.on("end",function(){y=n.concat(h),t&&(t.contentType("application/pdf"),t.send(y))}),m.end()}}},6456:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2096)),s=n(a(7825)),o=(0,n(a(6918)).default)({path:`${process.cwd()}/logs/access`,interval:"1d"});t.default=function(e){e.use((0,r.default)((e,t,a)=>{const n={};t.user&&(n.id=t.user.id,n.login=t.user.login,n.name=t.user.name);let r={};t.body&&(r=s.default.cloneDeep(t.body),delete r.password);const o=Object.fromEntries(Object.entries(t.headers).filter(([e])=>"cookie"!==e));return JSON.stringify({date:(new Date).toISOString(),ip:t.headers["x-real-ip"]||t.headers["x-forwarded-for"]||t.ip,method:e.method(t,a),url:e.url(t,a),status:e.status(t,a),time:e["response-time"](t,a),length:e.res(t,a,"content-length"),user:n,query:t.query,params:t.params,body:r,headers:o})},{stream:o}))}},6661:e=>{e.exports=require("base64-js")},6788:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),a(4469);const n={dbName:process.env.DB_NAME||"",dbUser:process.env.DB_USER||"",dbPassword:process.env.DB_PASSWORD||"",dbDialect:process.env.DB_DIALECT?process.env.DB_DIALECT:"postgres",dbHost:process.env.DB_HOST?process.env.DB_HOST:"localhost",dbPort:process.env.DB_PORT?parseInt(process.env.DB_PORT,10):5432};t.default=n},6797:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var r=a(1752).Strategy;const s=n(a(5486)),o=a(7138),i=n(a(2282)),l=n(a(5788)),u=n(a(9151));t.default={initializePassport(e){e.serializeUser(function(e,t){t(null,e.id)}),e.deserializeUser(async function(e,t){const a=await l.default.models.User.findByPk(e);a&&!0===a.isActive?t(null,a):t("User is not found",!1)}),e.use("login",new r({usernameField:"email",passwordField:"password",passReqToCallback:!0},async function(e,a,n,r){if(e.body.tokenElectron){let t=u.default.decrypt(e.body.tokenElectron);if(e.body.workingPlace!==t.workingPlace)return i.default.error("Electron auth error",e.body.workingPlace),r(null,!1);a=t.login,n=t.password}const s=await l.default.models.User.findOne({where:{login:a,isActive:!0}}).catch(e=>(console.error(e),i.default.error("Bad request for user",a),r(null,!1)));if(!s)return i.default.error(`User not found or not active with username: ${a}`),r(null,!1);if(!t(s,n))return i.default.error("Invalid Password",a),r(null,!1);let o="";return e.body.electronCert&&(o=JSON.stringify({login:e.body.email,password:e.body.password,workingPlace:e.body.workingPlace}),s.tokenElectron=u.default.encrypt(o)),r(null,s)}));var t=(e,t)=>s.default.compareSync(t,e.password)},isAuthenticated(e,t,a){if(!e.url.includes("/app")&&!e.url.includes("/auth"))return e.isAuthenticated()?void a():t.status(o.StatusCodes.UNAUTHORIZED).send("only for logged in users");a()},isSuperAdmin:(e,t,a)=>((e,t,a)=>{if(!0!==e.user?.isFullRight)return console.warn("User doesnt have necessary permission to access this."),t.status(o.StatusCodes.FORBIDDEN).send("Permission denied for the user. User doesnt have necessary permission to access this");a()})(e,t,a)}},6836:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(2103)),s=n(a(5486)),o="vOVH6sdvpNWjRRYqCc7rsxs01ljHzfr3";t.default={generateRandomToken:()=>r.default.lib.WordArray.random(20).toString(r.default.enc.Hex),createPasswordHash:e=>s.default.hashSync(e,s.default.genSaltSync(10)),encrypt(e){const t=r.default.enc.Utf8.parse(o),a=r.default.lib.WordArray.random(16),n=r.default.AES.encrypt(e,t,{iv:a,mode:r.default.mode.CTR,padding:r.default.pad.NoPadding});return{iv:a.toString(r.default.enc.Hex),content:n.ciphertext.toString(r.default.enc.Hex)}},decrypt(e){const t=r.default.enc.Utf8.parse(o),a=r.default.enc.Hex.parse(e.iv),n=r.default.enc.Hex.parse(e.content),s=r.default.lib.CipherParams.create({ciphertext:n}),i=r.default.AES.decrypt(s,t,{iv:a,mode:r.default.mode.CTR,padding:r.default.pad.NoPadding});return r.default.enc.Utf8.stringify(i)}}},6898:e=>{e.exports=require("cookie-parser")},6910:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(7138),s=n(a(6928)),o=n(a(4716)),i=n(a(9896)),l=a(9896),u=n(a(9880)),c=n(a(2282)),d=n(a(2555)),f=n(a(7173)),m=n(a(3275)),p="src/database/migrations";let h={},y=[],g=[];async function b(e,t){let a="";for(const n of e)!0!==n.isTablePart?!0!==n.virtual&&(n.multiType&&"common"===n.multiTypeVariant?a+=`${_(n)}`:a+=`\n ${n.dbName}: ${await w(n)}`):t.push({...n});return a+="\n createdAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",a+="\n updatedAt: {\n type: Sequelize.DataTypes.DATE,\n allowNull: false,\n },",a}async function w(e,t="",a=!1){let n="{\n ",r="";switch(e.type){case"json":r="TEXT";break;case"object":r="UUID";break;default:r=e.type.toUpperCase()}let s="";if("string"===e.type?e.typeOptions?.length&&0!==e.typeOptions?.length&&(s+=`(${e.typeOptions.length})`):"decimal"===e.type&&e.typeOptions?.precision&&e.typeOptions?.scale&&(s+=`(${e.typeOptions?.precision}, ${e.typeOptions?.scale})`),n+=` type: Sequelize.DataTypes.${r}${s},\n`,"enum"===e.type&&e.ref&&(n+=` values: [${h[e.ref].map(e=>`'${e}'`)}],\n`),!0===e.primaryKey&&(n+=" primaryKey: true,\n"),!0===e.unique&&(n+=" unique: true,\n"),!0===e.notNull&&(n+=" allowNull: false,\n"),null!==e.defaultValue&&void 0!==e.defaultValue&&(["enum","string","text"].includes(e.type)?n+=` defaultValue: '${e.defaultValue}',\n`:n+=` defaultValue: ${e.defaultValue},\n`),!0===e.autoIncrement&&(n+=" autoIncrement: true,\n"),n+=" },","object"===e.type&&!0===e.multiType){let r=e.dbName.endsWith("Id")?e.dbName.slice(0,-2):e.dbName;a?(n+=")",n+=`\n await queryInterface.addColumn('${t}', '${r}Type', {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(n+=" allowNull: false,\n"),n+=" },"):(n+=`\n ${r}Type: {\n type: Sequelize.DataTypes.STRING,\n`,!0===e.notNull&&(n+=" allowNull: false,\n"),n+=" },")}return n}function _(e){let t="";const a="\n type: Sequelize.DataTypes.",n=!0===e.notNull?" allowNull: false,\n":"";return t+=`\n _${e.dbName}Type: {${a}STRING,\n${n} },`,e.type.includes("string")&&(t+=`\n _${e.dbName}ST: {${a}STRING(${e.typeOptions.length}),\n },`),e.type.includes("text")&&(t+=`\n _${e.dbName}TX: {${a}TEXT,\n },`),e.type.includes("integer")&&(t+=`\n _${e.dbName}IN: {${a}INTEGER,\n },`),e.type.includes("decimal")&&(t+=`\n _${e.dbName}DC: {${a}DECIMAL(${e.typeOptions?.precision}, ${e.typeOptions?.scale}),\n },`),e.type.includes("boolean")&&(t+=`\n _${e.dbName}BL: {${a}BOOLEAN,\n },`),e.type.includes("date")&&(t+=`\n _${e.dbName}DT: {${a}DATE,\n },`),m.default.typeIncludesRef(e.type)&&(t+=`\n _${e.dbName}Ref: {${a}STRING(100),\n },`),t}function S(e,t){return e.type!==t.type&&!("json"===e.type&&"text"===t.type||"text"===e.type&&"json"===t.type)||e.unique!==t.unique||e.defaultValue!==t.defaultValue||e.notNull!==t.notNull||e.primaryKey!==t.primaryKey||e.typeOptions?.precision!==t.typeOptions?.precision||e.typeOptions?.scale!==t.typeOptions?.scale||e.typeOptions?.length!==t.typeOptions?.length||e.multiType!==t.multiType||e.multiTypeVariant!==t.multiTypeVariant}function v(e,t,a){let n="";const r="\n await queryInterface.addColumn(",s="\n type: Sequelize.DataTypes.",o=!0===a.notNull?" allowNull: false,\n":"";if(t.multiTypeVariant===a.multiTypeVariant){const i=m.default.typesSufixes(),l=Array.isArray(t.type)?t.type:t.type?[t.type]:[],u=Array.isArray(a.type)?a.type:a.type?[a.type]:[],c=u.filter(e=>!l.includes(e)),d=l.filter(e=>!u.includes(e));for(const a of d){const r=i[a]||"";r&&(n+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}${r}')`)}m.default.typeIncludesRef(t.type)&&!m.default.typeIncludesRef(a.type)&&(n+=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}Ref')`);for(const t of c){const l=i[t]||"";if(l)if("string"===t){const t=a.typeOptions?.length||255;n+=`${r}'${e}', '_${a.dbName}${l}', {${s}STRING(${t}),\n${o} })`}else if("text"===t)n+=`${r}'${e}', '_${a.dbName}${l}', {${s}TEXT,\n${o} })`;else if("integer"===t)n+=`${r}'${e}', '_${a.dbName}${l}', {${s}INTEGER,\n${o} })`;else if("decimal"===t){const t=a.typeOptions?.precision||18,i=a.typeOptions?.scale||2;n+=`${r}'${e}', '_${a.dbName}${l}', {${s}DECIMAL(${t}, ${i}),\n${o} })`}else"boolean"===t?n+=`${r}'${e}', '_${a.dbName}${l}', {${s}BOOLEAN,\n${o} })`:"date"===t?n+=`${r}'${e}', '_${a.dbName}${l}', {${s}DATE,\n${o} })`:m.default.isRefType(t)?n+=`${r}'${e}', '_${a.dbName}Ref', {${s}STRING(100),\n${o} })`:n+=`${r}'${e}', '_${a.dbName}${l}', {${s}TEXT,\n${o} })`}return!m.default.typeIncludesRef(t.type)&&m.default.typeIncludesRef(a.type)&&(n+=`${r}'${e}', '_${a.dbName}Ref', {${s}STRING(100),\n${o} })`),n}return t.multiTypeVariant||"objects"!==a.multiTypeVariant?"objects"===a.multiTypeVariant?(n+=C(e,t),n+=`${r}'${e}', '${a.dbName}Type', {${s}STRING,\n${o} })`,n+=`${r}'${e}', '${a.dbName}Id', {${s}UUID,\n${o} })`,n):(n+=P(e,t.dbName),n+=P(e,`${t.dbName.slice(0,-2)}Type`),n+=D(e,a),n):""}function E(){return"\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {"}function R(){return"\n },\n async down(queryInterface, Sequelize) {\n },\n}"}async function $(e,t){e.dbFields=e.fields,e.dbTableName=e.path,e.modified=!1;const a=JSON.stringify(e,null,2);await l.promises.writeFile(t,a,"utf-8")}function T(e){return e&&e.length>63?e.slice(e.length-63):e}async function N(e,t){return await e.update({dbFields:e.fields,dbTableName:e.path,modified:!1}).then(async a=>await u.default.updateInitialData(t.model,"app_objects",{objectId:e.id,event:"update",oldValue:e,newValue:a}))}async function O(e,t,a){return`\n await queryInterface.addColumn('${e}', '${t}', ${await w(a,e,!0)})`}function D(e,t){let a="";const n="\n await queryInterface.addColumn(",r="\n type: Sequelize.DataTypes.",s=!0===t.notNull?" allowNull: false,\n":"";return a+=`${n}'${e}', '_${t.dbName}Type', {${r}STRING,\n${s} })`,t.type.includes("string")&&(a+=`${n}'${e}', '_${t.dbName}ST', {${r}STRING(${t.typeOptions.length}),\n })`),t.type.includes("text")&&(a+=`${n}'${e}', '_${t.dbName}TX', {${r}TEXT,\n })`),t.type.includes("integer")&&(a+=`${n}'${e}', '_${t.dbName}IN', {${r}INTEGER,\n })`),t.type.includes("decimal")&&(a+=`${n}'${e}', '_${t.dbName}DC', {${r}DECIMAL(${t.typeOptions?.precision}, ${t.typeOptions?.scale}),\n })`),t.type.includes("boolean")&&(a+=`${n}'${e}', '_${t.dbName}BL', {${r}BOOLEAN,\n })`),t.type.includes("date")&&(a+=`${n}'${e}', '_${t.dbName}DT', {${r}DATE,\n })`),m.default.typeIncludesRef(t.type)&&(a+=`${n}'${e}', '_${t.dbName}Ref', {${r}STRING(100),\n })`),a}function C(e,t){let a="";const n=`\n await queryInterface.removeColumn('${e}', '_${t.dbName}`;a+=`${n}Type')`;const r=m.default.typesSufixes();for(const e in r)t.type.includes(e)&&(a+=`${n}${r[e]}')`);return m.default.typeIncludesRef(t.type)&&(a+=`${n}Ref')`),a}function A(e,t,a){return`\n await queryInterface.renameColumn('${e}', '${t}', '${a}')`}function j(e,t){const a=m.default.typesSufixes();let n="";const r=`\n await queryInterface.renameColumn('${e}', `;n+=`${r}'${t.oldName}Type', '${t.newName}Type')`;for(const e in a)t.field?.type.includes(e)&&(n+=`${r}'${t.oldName}${a[e]}', '${t.newName}${a[e]}')`);return m.default.typeIncludesRef(t.field?.type||[])&&(n+=`${r}'${t.oldName}Ref', '${t.newName}Ref')`),n}async function I(e,t,a){let n="";if(t.type!==a.type)if(function(e,t){const a=["uuid","date","boolean","object","enum"];return a.find(t=>t===e)||a.find(e=>e===t)}(t.type,a.type))n+=P(e.name,a.dbName),n+=await O(e.name,a.dbName,a);else if(r=t.type,s=a.type,[{typeFrom:"integer",typeTo:"string"},{typeFrom:"decimal",typeTo:"string"},{typeFrom:"text",typeTo:"string"},{typeFrom:"integer",typeTo:"text"},{typeFrom:"decimal",typeTo:"text"},{typeFrom:"text",typeTo:"decimal"},{typeFrom:"text",typeTo:"integer"},{typeFrom:"string",typeTo:"integer"},{typeFrom:"string",typeTo:"decimal"}].find(e=>e.typeFrom===r&&e.typeTo===s)){n+=await O(e.name,`temp_${a.dbName}`,a);let r="";["integer","decimal","text"].includes(t.type)&&"string"===a.type?r+=`UPDATE ${e.name} SET temp_${a.dbName} = LEFT(CAST(${a.dbName} AS VARCHAR), ${a?.typeOptions?.length||255})`:["integer","decimal"].includes(t.type)&&"text"===a.type?r+=`UPDATE ${e.name} SET temp_${a.dbName} = CAST(${a.dbName} AS TEXT)`:["text","string"].includes(t.type)&&"integer"===a.type?r+=`UPDATE ${e.name} SET temp_${a.dbName} = CASE\n WHEN ${a.dbName} ~ '^[0-9]+$' THEN CAST(${a.dbName} AS INTEGER)\n ELSE NULL\n END`:["text","string"].includes(t.type)&&"decimal"===a.type&&(r+=`UPDATE ${e.name} SET temp_${a.dbName} = CASE\n WHEN ${a.dbName} ~ '^[0-9]+$' THEN CAST(${a.dbName} AS DECIMAL)\n ELSE NULL\n END`),r&&(n+=function(e){return`\n await queryInterface.sequelize.query(\`${e}\`)`}(r)),n+=P(e.name,a.dbName),n+=A(e.name,`temp_${a.dbName}`,a.dbName)}else n+=await x(e.name,a.dbName,a);else n+=await x(e.name,a.dbName,a);var r,s;return n}async function x(e,t,a){return`\n await queryInterface.changeColumn('${e}', '${t}', ${await w(a,e,!0)})`}function P(e,t){return`\n await queryInterface.removeColumn('${e}', '${t}')`}function F(e,t,a){return`\n await queryInterface.addIndex('${e}', ['${t}'], { name: '${a}'})`}function M(e,t,a){let n="";const r="\n await queryInterface.addIndex(";return n+=`${r}'${e}', ['_${t.dbName}Type'], { name: '${a}_type'})`,t.type.includes("string")&&(n+=`${r}'${e}', ['_${t.dbName}ST'], { name: '${a}_st'})`),t.type.includes("text")&&(n+=`${r}'${e}', ['_${t.dbName}TX'], { name: '${a}_tx'})`),t.type.includes("integer")&&(n+=`${r}'${e}', ['_${t.dbName}IN'], { name: '${a}_in'})`),t.type.includes("decimal")&&(n+=`${r}'${e}', ['_${t.dbName}DC'], { name: '${a}_dc'})`),t.type.includes("boolean")&&(n+=`${r}'${e}', ['_${t.dbName}BL'], { name: '${a}_type'})`),t.type.includes("date")&&(n+=`${r}'${e}', ['_${t.dbName}DT'], { name: '${a}_dt'})`),m.default.typeIncludesRef(t.type)&&(n+=`${r}'${e}', ['_${t.dbName}Ref'], { name: '${a}_ref'})`),n}function k(e,t){return`\n await queryInterface.removeIndex('${e}', ['${t}'])`}function U(e,t){let a="";const n="\n await queryInterface.removeIndex(";return a+=`${n}'${e}', ['_${t.dbName}Type'])`,t.type.includes("string")&&(a+=`${n}'${e}', ['_${t.dbName}ST'])`),t.type.includes("text")&&(a+=`${n}'${e}', ['_${t.dbName}TX'])`),t.type.includes("integer")&&(a+=`${n}'${e}', ['_${t.dbName}IN'])`),t.type.includes("decimal")&&(a+=`${n}'${e}', ['_${t.dbName}DC'])`),t.type.includes("boolean")&&(a+=`${n}'${e}', ['_${t.dbName}BL'])`),t.type.includes("date")&&(a+=`${n}'${e}', ['_${t.dbName}DT'])`),m.default.typeIncludesRef(t.type)&&(a+=`${n}'${e}', ['_${t.dbName}Ref'])`),a}t.default={async executeMigrationsAtServer(){const e=await(0,f.default)(),t=await e.appObjects.model.findAll({where:{modified:!0}});if(!t||0===t.length)return{status:r.StatusCodes.OK,responseData:{message:"No migrations needed"}};const a=(0,o.default)();for(const n of t)await this.executeObjectMigration(n,e.appObjects,a);a.add(1,"seconds");for(const n of t)await this.addFieldsForeignKeys(a)&&await N(n,e.appObjects);return{status:r.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async executeMigrationsFromFiles(){const e=await(0,f.default)(),t=function(e){const t=[];return function e(a){const n=i.default.readdirSync(a,{withFileTypes:!0});for(const r of n){const n=s.default.join(a,r.name);r.isDirectory()?e(n):r.isFile()&&"object.struct.json"===r.name&&t.push(n)}}(e),t}(`${process.cwd()}/src/modules`),a=(0,o.default)();for(const n of t){a.add(1,"seconds");const t=await l.promises.readFile(n,"utf-8"),r=JSON.parse(t);r.dbTableName&&!r.modified||(console.log("Migration creation for object:",r.name),await this.executeObjectMigration(r,e.appObjects,a,n))}a.add(1,"seconds");for(const e of t){const t=await l.promises.readFile(e,"utf-8"),n=JSON.parse(t);n.dbTableName&&!n.modified||await this.addFieldsForeignKeys(a)&&await $(n,e)}return{status:r.StatusCodes.OK,responseData:{message:"Migrations were created successfully"}}},async executeMigrations(e,t,a,n){const s=await n.model.findAll({where:{modified:!0}});if(!s||0===s.length)return{status:r.StatusCodes.OK,responseData:{message:"No migrations needed"}};const i=(0,o.default)();for(const e of s)i.add(1,"seconds"),await this.executeObjectMigration(e,n,i);i.add(1,"seconds");for(const e of s)await this.addFieldsForeignKeys(i)&&await N(e,n);return{status:r.StatusCodes.OK,responseData:{message:"Migrations executed successfully"}}},async existMigrations(e,t,a,n){const s=await n.model.findAll({where:{modified:!0}});return s&&0!==s.length?{status:r.StatusCodes.OK,responseData:!0}:{status:r.StatusCodes.OK,responseData:!1}},async executeMigration(e,t,a,n){const s=e.body.objectId;if(!s||"string"!=typeof s||36!==s.length){const e="Object id is not correct!";return c.default.error(`Error in ${n.name} findItem controller`,{meta:e}),{status:r.StatusCodes.BAD_REQUEST,responseData:{message:e}}}const i=(0,o.default)(),l=await n.model.findByPk(s);return await this.executeObjectMigration(l,n,i)?{status:r.StatusCodes.OK,responseData:{message:"OK"}}:{status:r.StatusCodes.INTERNAL_SERVER_ERROR,responseData:{message:"Error during migration file creation!"}}},async executeObjectMigration(e,t,a,n=""){if(!e)throw new Error("Object not found!");if(!e.fields)throw new Error(`Object ${e.name} has incorrect fields!`);if(n){const e=s.default.join(process.cwd(),"src","modules","enums"),t=s.default.join(e,"index.json");if(!i.default.existsSync(t))throw new Error(`File index.json not found in ${e}`);{const e=i.default.readFileSync(t,"utf8");h=JSON.parse(e)}}else h=await d.default.initEnums();return e.dbTableName?await this.updateTable({id:e.id,dbName:e.dbTableName,name:e.path,dbFields:e.dbFields,fields:e.fields},a):await this.createTable(e,a)},async addFieldsForeignKeys(e=(0,o.default)()){for(const t of y){console.log("Foreign keys creation for object:",t.path);const a=[];await b(t.fields,a);const n=E(),r=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const a=T(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.path}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${a}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}if(o){e.add(1,"seconds");const a=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.path}.js`,i=s.default.join(p,a);await l.promises.writeFile(i,`${n}${o}${r}`)}for(const t of a){const a=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===a.length)continue;let o="";for(const e of a){const a=T(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.addConstraint('${t.dbName}', {\n fields: ['${e.dbName}'],\n type: 'foreign key',\n name: '${a}',\n references: {\n table: '${this.toSnakeCase(e.ref)}',\n field: 'id',\n },\n onUpdate: 'CASCADE',\n onDelete: 'SET NULL',\n });\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-add-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(s.default.join(p,i),`${n}${o}${r}`)}}return y=[],!0},toSnakeCase:e=>e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase(),async delFieldsForeignKeys(e=(0,o.default)()){for(const t of g){const a=[];await b(t.fields,a);const n=E(),r=R();let o="";for(const e of t.fields)if("object"===e.type&&e.ref&&!e.multiType){const a=T(`${t.path}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.path}', '${a}');\n`}if(o){e.add(1,"seconds");const a=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.path}.js`,i=s.default.join(p,a);await l.promises.writeFile(i,`${n}${o}${r}`)}for(const t of a){const a=t.fields.filter(e=>"object"===e.type&&e.ref&&!e.multiType);if(0===a.length)continue;let o="";for(const e of a){const a=T(`${t.dbName}_${e.dbName}_fkey`);o+=`\n await queryInterface.removeConstraint('${t.dbName}', '${a}');\n`}e.add(1,"seconds");const i=`${e.format("YYYYMMDDHHmmss")}-remove-foreign-keys-${t.dbName}.js`;await l.promises.writeFile(s.default.join(p,i),`${n}${o}${r}`)}}return g=[],!0},prepareFieldsDifs(e,t,a){const n=[];if(!e||!t)return[];for(const r of t){const t=e.find(e=>e.id===r.id);t?!0===r.isTablePart?a.push({action:"changeTable",oldTable:{...t},newTable:{...r}}):(!0===t.multiType&&"common"===t.multiTypeVariant&&!1===r.multiType?(n.push({action:"dropField",field:{...t}}),n.push({action:"addField",field:{...r}}),!0===r.index&&n.push({action:"addIndex",field:r})):!1===t.multiType&&!0===r.multiType&&"common"===r.multiTypeVariant?(!0===t.index&&n.push({action:"removeIndex",field:t}),n.push({action:"dropField",field:{...t}}),n.push({action:"addField",field:{...r}})):(r.dbName!==t.dbName&&n.push({action:"renameField",newName:r.dbName,oldName:t.dbName,field:t}),S(t,r)&&n.push({action:"changeField",oldField:{...t},newField:{...r}})),t.index!==r.index&&(!0===r.index?n.push({action:"addIndex",field:r}):n.push({action:"removeIndex",field:r}))):!0===r.isTablePart?a.push({action:"createTable",newTable:{...r}}):(n.push({action:"addField",field:{...r}}),!0===r.index&&n.push({action:"addIndex",field:r}))}for(const r of e)t.find(e=>e.id===r.id)||(!0===r.isTablePart?a.push({action:"dropTable",oldTable:{...r}}):(!0===r.index&&n.push({action:"removeIndex",field:r}),n.push({action:"dropField",field:{...r}})));return n},async createTable(e,t=(0,o.default)()){y.push(e);let a=`${t.format("YYYYMMDDHHmmss")}-create-table-${e.path}.js`,n=s.default.join(p,a);const r=[];let i=await b(e.fields,r);const u="\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {",c="\n },\n async down(queryInterface, Sequelize) {\n },\n}";let d=`${u}\n await queryInterface.createTable('${e.path}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const a=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=M(e.path,t,a):d+=F(e.path,t.dbName,a)}d+=`${c}`,await l.promises.writeFile(n,d);for(const e of r){t.add(1,"seconds"),a=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${e.dbName}.js`,n=s.default.join(p,a),i=await b(e.fields,[]),d=`${u}\n await queryInterface.createTable('${e.dbName}', {${i}\n })`,f=e.fields.filter(e=>!0===e.index);for(const t of f){const a=`${e.id.substring(24)}_${t.id.substring(24)}`;t.multiType&&"common"===t.multiTypeVariant?d+=M(e.dbName,t,a):d+=F(e.dbName,t.dbName,a)}d+=`${c}`,await l.promises.writeFile(n,d)}return!0},async updateTable(e,t=(0,o.default)()){let a="";e.name!==e.dbName&&(a+=`\n await queryInterface.renameTable('${e.dbName}', '${e.name}')`);const n=[],r=this.prepareFieldsDifs(e.dbFields,e.fields,n);if(r.length>0){const n=[],s=[];for(const t of r){if("addField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=D(e.name,t.field):(a+=await O(e.name,t.field.dbName,t.field),"object"!==t.field.type||t.field.multiType||n.push(t.field))),"dropField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=C(e.name,t.field):(a+=P(e.name,t.field.dbName),"object"!==t.field.type||t.field.multiType||s.push(t.field),"object"===t.field.type&&t.field.multiType&&(a+=P(e.name,`${t.field.dbName.slice(0,-2)}Type`)))),"renameField"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=j(e.name,t):a+=A(e.name,t.oldName,t.newName)),"changeField"===t.action&&(t.newField.multiType&&t.oldField.multiType?a+=v(e.name,t.oldField,t.newField):a+=await I(e,t.oldField,t.newField),"object"!==t.oldField.type||"object"===t.newField.type||t.oldField.multiType||s.push(t.oldField),"object"!==t.oldField.type||"object"!==t.newField.type||t.oldField.ref===t.newField.ref||t.oldField.multiType||t.newField.multiType||(s.push(t.oldField),n.push(t.newField)),"object"===t.oldField.type||"object"!==t.newField.type||t.newField.multiType||n.push(t.newField),"object"===t.oldField.type&&!t.oldField.multiType&&"object"===t.newField.type&&t.newField.multiType&&s.push(t.oldField),"object"===t.oldField.type&&t.oldField.multiType&&"object"===t.newField.type&&!t.newField.multiType&&(a+=P(e.name,`${t.oldField.dbName.slice(0,-2)}Type`),n.push(t.newField))),"addIndex"===t.action){const n=`${e.id.substring(24)}_${t.field.id.substring(24)}`;t.field.multiType&&"common"===t.field.multiTypeVariant?a+=M(e.name,t.field,n):a+=F(e.name,t.field.dbName,n)}"removeIndex"===t.action&&(t.field.multiType&&"common"===t.field.multiTypeVariant?a+=U(e.name,t.field):a+=k(e.name,t.field.dbName))}n.length>0&&y.push({path:e.name,fields:n}),s.length>0&&(g.push({path:e.name,fields:s}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")))}if(""!==a){let n=`${t.format("YYYYMMDDHHmmss")}-change-table-${e.isTablePart?"part-":""}${e.dbName}.js`,r=s.default.join(p,n),o=`\n'use strict'\n\n/** @type {import('sequelize-cli').Migration} */\nmodule.exports = {\n async up(queryInterface, Sequelize) {${a}\n },\n async down(queryInterface, Sequelize) {\n },\n}`;await l.promises.writeFile(r,o)}for(const a of n){if("createTable"===a.action){t.add(1,"seconds");let n=`${t.format("YYYYMMDDHHmmss")}-create-table-part-${a.newTable.dbName}.js`,r=s.default.join(p,n);const o=await b(a.newTable.fields,[]),i=E(),u=R();let c=`${i}\n await queryInterface.createTable('${a.newTable.dbName}', {${o}\n })${u}`;const d=a.newTable.fields.filter(e=>!0===e.index);for(const e of d){const t=`${a.newTable.id.substring(24)}_${e.id.substring(24)}`;e.multiType&&"common"===e.multiTypeVariant?c+=M(a.newTable.dbName,e,t):c+=F(a.newTable.dbName,e.dbName,t)}c+=`${u}`,await l.promises.writeFile(r,c),y.push({path:e.name,fields:[a.newTable]})}if("changeTable"===a.action&&await this.updateTable({id:a.oldTable.id,dbName:a.oldTable.dbName,name:a.newTable.dbName,dbFields:a.oldTable.fields,fields:a.newTable.fields,isTablePart:!0},t.add(1,"seconds")),"dropTable"===a.action){g.push({path:e.name,fields:[a.oldTable]}),await this.delFieldsForeignKeys(t.clone().subtract(2,"seconds")),t.add(1,"seconds");let n=`${t.format("YYYYMMDDHHmmss")}-drop-table-part-${a.oldTable.dbName}.js`,r=s.default.join(p,n);const o=E(),i=R();let u=`${o}\n await queryInterface.dropTable('${a.oldTable.dbName}')${i}`;await l.promises.writeFile(r,u)}}return!0}}},6918:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(9896)),s=n(a(6928)),o=n(a(4716)),i={m:"YYYYMMDD-HHmm",h:"YYYYMMDD-HH",d:"YYYYMMDD"};t.default=function({path:e,interval:t="1d"}){const a=s.default.resolve(e);r.default.mkdirSync(a,{recursive:!0});const n=t.slice(-1),l=Number(t.slice(0,-1));if(!i[n]||!l)throw new Error(`Invalid log interval: ${t}`);let u=d((0,o.default)()),c=f(u);function d(e){const t="m"===n?e.clone().startOf("minute"):"h"===n?e.clone().startOf("hour"):e.clone().startOf("day"),a="m"===n?t.minute()%l:"h"===n?t.hour()%l:0;return t.subtract(a,n),t.format(i[n])}function f(e){return r.default.createWriteStream(s.default.join(a,`${e}.log`),{flags:"a"})}return{write(e){!function(){const e=d((0,o.default)());e!==u&&(c.end(),u=e,c=f(u))}(),c.write(e+"\n")}}}},6928:e=>{e.exports=require("path")},6961:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(8356)),o=r.default.Router(),i="report";o.get(`/${i}/settings/:id`,s.default.getSettings),o.post(`/${i}/result`,s.default.getResult),t.default=o},6980:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(1572)),s=a(7138),o=a(3903),i=a(9031),l=n(a(5788)),u=n(a(6836)),c=n(a(2282)),d=async(e,t)=>{const a=await l.default.models.User.findOne({where:{email:e}}),n=a?.language,r={en:{registration:{subject:"Confirm your email",hello:"Hello ",begining:",<br>Thank you for your registration. Your account requires activation. Click the link below to confirm your email address:<br><br>",middle:"<br><br>Here are your login details:<br>Login: ",end:"<br><br>Important Safety Tips:<br>1. Always keep your account details in a safe place.<br>2. Never reveal your login and password to anyone.<br>3. Change your password regularly.<br>4. If you suspect someone is using your account illegally, please let us know immediately."},passwordReset:{subject:"Password Reset",metter:"Password recovery for ",begining:"<br><br>Dear User,<br><br>We have received a request to change your account password ",middle:"<br>Click here to reset your password: ",end:"<br><br>If you do not want to reset your password, please ignore this message. The password will remain unchanged.<br><br>Sincerely,<br>Customer Service Team"},passwordResetConfirmation:{subject:"Password Reset Successful",main:"Dear User,<br><br>Your password has been successfully reset.<br><br>Sincerely,<br>Customer Service Team"},statusChange:{subject:"User status",start:"Dear User, <br><br>Your user status has been changed to:<br><br>",end:"<br><br>Sincerely,<br>Customer Service Team"}},pl:{registration:{subject:"Potwierdź swój email",hello:"Witaj ",begining:",<br>Dziękujemy za rejestracje. Twoje konto wymaga aktywacji. Kliknij poniższy link, aby potwierdzić swój adres e-mail:<br><br>",middle:"<br><br>Oto twoje dane logowania:<br>Login: ",end:"<br><br>Ważne wskazówki dotyczące bezpieczeństwa:<br>1. Zawsze trzymaj dane do Twojego konta w bezpiecznym miejscu.<br>2. Nigdy nie ujawniaj nikomu swojego loginu i hasła.<br>3. Regularnie zmieniaj swoje hasło.<br>4. Jeśli podejrzewasz, że ktoś używa Twojego konta nielegalnie, prosimy o natychmiastowe poinformowanie nas o tym."},passwordReset:{subject:"Reset hasła",metter:"Odzyskiwanie hasła do konta ",begining:"<br><br>Drogi Użytkowniku,<br><br>Otrzymaliśmy prośbę o zmianę hasła do konta ",middle:"<br>Kliknij, aby zresetować hasło: ",end:"<br><br>Jeśli nie chcesz resetować swojego hasła, zignoruj tę wiadomość. Hasło pozostanie niezmienione.<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"},passwordResetConfirmation:{subject:"Hasło Zresetowane Pomyślnie",main:"Drogi Użytkowniku,<br><br>Twoje hasło zostało pomyślnie zresetowane.<br><br>Z poważaniem,<br>Dzial Obslugi Klienta"},statusChange:{subject:"Status użytkownika",start:"Drogi Użytkowniku, <br><br>Twój status użytkownika został zmieniony na:<br><br>",end:"<br><br>Z poważaniem,<br>Zespół Obsługi Klienta"}},fr:{registration:{subject:"Confirme ton email",hello:"Bonjour ",begining:",<br>Merci pour votre inscription. Votre compte nécessite une activation. Cliquez sur le lien ci-dessous pour confirmer votre adresse e-mail:<br><br>",middle:"<br><br>Voici vos identifiants de connexion:<br>Login: ",end:"<br><br>Conseils de sécurité importants:<br>1. Conservez toujours les détails de votre compte en lieu sûr.<br>2. Ne révélez jamais votre identifiant et votre mot de passe à qui que ce soit.<br>3. Changez votre mot de passe régulièrement.<br>4. Si vous pensez que quelqu'un utilise votre compte illégalement, veuillez nous en informer immédiatement."},passwordReset:{subject:"Réinitialisation du mot de passe",metter:"Récupération de mot de passe pour ",begining:"<br><br>Cher utilisateur,<br><br>Nous avons reçu une demande de changement de mot de passe de votre compte ",middle:"<br>Cliquez ici pour réinitialiser votre mot de passe: ",end:"<br><br>Si vous ne souhaitez pas réinitialiser votre mot de passe, veuillez ignorer ce message. Le mot de passe restera inchangé.<br><br>Cordialement,<br>L'équipe du service client"},passwordResetConfirmation:{subject:"Réinitialisation du mot de passe réussie",main:"Cher utilisateur,<br><br>Votre mot de passe a été réinitialisé avec succès.<br><br>Cordialement,<br>L'équipe du service client"},statusChange:{subject:"Statut de l'utilisateur",start:"Cher utilisateur, <br><br>Votre statut d'utilisateur a été changé en:<br><br>",end:"<br><br>Cordialement,<br>L'équipe du service client"}}};return n&&n in r?r[n][t]:r.en[t]};async function f(){return await l.default.models.EmailAccount.findOne({where:{isService:!0}})}function m(e){return{credentials:{host:e.smtpHost,port:e.smtpPort,secure:e.smtpTls,auth:{user:e.user,pass:e.password},tls:{rejectUnauthorized:e.smtpTls}}}}function p(e,t,a,n){return{from:e.name,to:t,bcc:e.name,subject:a,html:n}}t.default={async emailConfirmationInstructions(e,t,a,n){const s=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!s)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});s.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),s.password=u.default.decrypt(JSON.parse(s.password));const o=m(s),i=r.default.createTransport(o.credentials);i.verify(async function(r,o){if(r)c.default.error("Error in emailConfirmationInstructions ",{meta:r});else{const r=await d(e,"registration"),o=`${process.env.ALLOW_ORIGIN}/email-confirmation`,l=r.hello+t+r.begining+'<a href="'+o+"/"+n+'">Confirm Your Email Address</a>'+r.middle+a+r.end,u=p(s,e,r.subject,l);i.sendMail(u,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})},async register(e){try{if(await l.default.models.User.findOne({where:{[i.Op.or]:{email:e.email,login:e.login}}})){const e="A user with this login or email already exist";return c.default.error("Error in register Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}let t={email:e.email,login:e.login,uuid:(0,o.v4)(),password:u.default.createPasswordHash(e.password),name:e.name,isActive:!1,fullRights:!1,externalUser:!1,emailConfirmationToken:u.default.generateRandomToken(),referralToken:u.default.generateRandomToken(),isFirm:e.isFirm,firmName:e.firmName,phone:e.phone,country:e.country,companyDepartment:e.companyDepartment,commercialInChargeOfYou:e.commercialInChargeOfYou,notVatNumber:e.notVatNumber,vatNumber:e.vatNumber,address:e.address,postalCode:e.postalCode,city:e.city,deliveryDepartment:e.deliveryDepartment};const a=await async function(){return await l.default.models.User.findAll().then(e=>0===e.length).catch(()=>!1)}();return!0===a&&(t.isActive=!0,t.userState="Aktywny",t.fullRights=!0),await l.default.models.User.create(t).then(async e=>{c.default.info("New user was registered",{meta:JSON.stringify({id:e.id,name:e.name})}),!1===a&&this.emailConfirmationInstructions(e.email,e.name,e.login,e.emailConfirmationToken);const t={email:e.email,login:e.login,name:e.name};return{httpStatus:s.StatusCodes.OK,result:t}}).catch(e=>(c.default.error("Error in register Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:"User create error."}}))}catch(e){return c.default.error("Error in register Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},confirmEmailAddress:async e=>await l.default.models.User.findOne({where:{emailConfirmationToken:e}}).then(async e=>e?(e=await e.update({emailConfirmationToken:null}))?{httpStatus:s.StatusCodes.OK,result:!0}:(c.default.error("Error in confirmEmailAddress Service",{meta:"User not save."}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):(c.default.error("Error in confirmEmailAddress Service",{meta:"Token not find."}),{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.NOT_FOUND)}})).catch(e=>(c.default.error("Error in confirmEmailAddress Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{errorDetails:e}})),async resendEmailAddressConfirmationLink(e){try{let t=await l.default.models.User.findOne({where:{email:e}}),a=u.default.generateRandomToken();return t&&a?(t=await t.update({emailConfirmationToken:a}),t?(this.emailConfirmationInstructions(t.email,t.name,t.login,t.emailConfirmationToken),{httpStatus:s.StatusCodes.OK,result:!0}):{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:"Email is already confirmed or does not exist in our records."}}}catch(e){return c.default.error("Error in resendEmailAddressConfirmationLink Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async forgotPassword(e,t){try{if(!t)return c.default.error("Error in forgotPassword Service",{meta:"Client origin is not defined"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Client origin is not defined"}};const a=await l.default.models.User.findOne({where:{email:e}});if(!a)return c.default.error("Error in forgotPassword Service",{meta:"Email not found"}),{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:"Email not found"}};let n=u.default.generateRandomToken();const o=Number("3600000")||36e5,i={passwordResetToken:n,passwordResetExpires:Date.now()+o},h=await a.update({...i});return h?async function(e,t,a,n,o){const i=await f();if(!i)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account not exist"}};if(!i.password)return c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:"Service email account password not set"}};i.password=u.default.decrypt(JSON.parse(i.password));let l=m(i),h=r.default.createTransport(l.credentials);try{await h.verify()}catch(e){return c.default.error("Error in emailConfirmationInstructions ",{meta:e}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:`Email verification error. ${e}`}}}const y=await d(e,"passwordReset"),g=`${o}/password-reset`,b=y.metter+a+y.begining+a+y.middle+'<a href="'+g+"/"+n+'">Reset Password</a>'+y.end,w=p(i,e,y.subject,b);return await h.sendMail(w).then(e=>(c.default.verbose("Service Email sent",{meta:e}),{httpStatus:s.StatusCodes.OK,result:{message:"OK"}})).catch(e=>(c.default.error("Error while sending service email",{meta:e}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:e}}))}(h.email,h.name,h.login,h.passwordResetToken,t):(c.default.error("Error in forgotPassword Service",{meta:"User not updated"}),{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}})}catch(e){return c.default.error("Error in forgotPassword Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async isPasswordResetTokenValid(e){try{return await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}})?{httpStatus:s.StatusCodes.OK,result:!0}:{httpStatus:s.StatusCodes.BAD_REQUEST,result:!1}}catch(e){return c.default.error("Error in isPasswordResetTokenValid Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async resetPassword(e,t){try{let a=await l.default.models.User.findOne({where:{passwordResetToken:e,passwordResetExpires:{[i.Op.gte]:Date.now()}}});return a?(a=await a.update({passwordResetToken:null,passwordResetExpires:null,password:u.default.createPasswordHash(t)}),a?(async function(e){const t=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!t)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});t.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),t.password=u.default.decrypt(JSON.parse(t.password));const a=m(t),n=r.default.createTransport(a.credentials);n.verify(async function(a,r){if(a)c.default.error("Error in emailConfirmationInstructions ",{meta:a});else{const a=await d(e,"passwordResetConfirmation"),r=p(t,e,a.subject,a.main);n.sendMail(r,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}(a.email,a.name),{httpStatus:s.StatusCodes.OK,result:!0}):{httpStatus:s.StatusCodes.INTERNAL_SERVER_ERROR,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.INTERNAL_SERVER_ERROR)}}):{httpStatus:s.StatusCodes.NOT_FOUND,result:{message:(0,s.getReasonPhrase)(s.StatusCodes.NOT_FOUND)}}}catch(e){return c.default.error("Error in resetPassword Service",{meta:e}),{httpStatus:s.StatusCodes.BAD_REQUEST,result:{message:e}}}},async emailOnUserStateChange(e,t){const a=await f().catch(e=>{c.default.error("Error in getServiceEmailAccount",{meta:e})});if(!a)return void c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account not exist"});a.password||c.default.error("Error in emailConfirmationInstructions ",{meta:"Service email account password not set"}),a.password=u.default.decrypt(JSON.parse(a.password));const n=m(a),s=r.default.createTransport(n.credentials);s.verify(async function(n,r){if(n)c.default.error("Error in emailConfirmationInstructions ",{meta:n});else{const n=await d(e,"statusChange"),r=p(a,e,n.subject,n.start+t+n.end);s.sendMail(r,async(e,t)=>{e?c.default.error("Error while sending service email",{meta:e}):c.default.verbose("Service Email sent",{meta:t})})}})}}},6982:e=>{e.exports=require("crypto")},7135:e=>{e.exports=require("node-sql-parser")},7138:e=>{e.exports=require("http-status-codes")},7173:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(4716)),i=n(a(9896)),l=n(a(7825)),u=n(a(2555)),c=n(a(3275)),d=n(a(2282));let f={};function m(e,t,a){if("common"===t.multiTypeVariant){const n=[];if(e[`_${t.dbName}Type`]={type:r.DataTypes.STRING,allowNull:!0!==t.notNull},t.type.includes("string")){const a=`_${t.dbName}ST`;e[a]={type:r.DataTypes.STRING(t.typeOptions.length)},n.push(a)}if(t.type.includes("text")){const a=`_${t.dbName}TX`;e[a]={type:r.DataTypes.TEXT},n.push(a)}if(t.type.includes("integer")){const a=`_${t.dbName}IN`;e[a]={type:r.DataTypes.INTEGER},n.push(a)}if(t.type.includes("decimal")){const a=`_${t.dbName}DC`;e[a]={type:r.DataTypes.DECIMAL(t.typeOptions?.precision,t.typeOptions?.scale)},n.push(a)}if(t.type.includes("boolean")){const a=`_${t.dbName}BL`;e[a]={type:r.DataTypes.BOOLEAN},n.push(a)}if(t.type.includes("date")){const a=`_${t.dbName}DT`;e[a]={type:r.DataTypes.DATE},n.push(a)}if(c.default.typeIncludesRef(t.type)){const a=`_${t.dbName}Ref`;e[a]={type:r.DataTypes.STRING(100)},n.push(a)}a.push(...n),e[`${t.dbName}`]={type:r.DataTypes.VIRTUAL(r.DataTypes.ABSTRACT,[`_${t.dbName}Type`,...n]),get(){const e=this.getDataValue(`_${t.dbName}Type`);if(!e)return null;const a=c.default.getFieldNameByType(t.dbName,e);return a?this.getDataValue(a):null},set(e){this.setDataValue(`__pending_${t.dbName}`,e)}}}else e[t.dbName]={type:r.DataTypes.UUID,allowNull:!0!==t.notNull,_index:!0===t.index},e[`${t.name}Type`]={type:r.DataTypes.STRING,allowNull:!0!==t.notNull,_index:!0===t.index}}function p(e){const t={foreignKey:e.field.dbName,as:e.field.name};return e.field.notNull&&(t.allowNull=!1),e.field.index&&(t.index=!0),e.field.fullSearch&&(t._fullSearch=e.field.fullSearch),t}function h(e){const t={type:r.DataTypes.STRING},a=e.type.toUpperCase();return"STRING"===a?e.typeOptions?.length&&0!==e.typeOptions?.length?t.type=r.DataTypes[a](e.typeOptions?.length):t.type=r.DataTypes[a]():"JSON"===a?(t.type=r.DataTypes.TEXT(),t.get=function(){const t=this.getDataValue(e.name);return t?JSON.parse(t):null},t.set=function(t){this.setDataValue(e.name,t?JSON.stringify(t):t)}):"ENUM"===a?(t.type=r.DataTypes.ENUM,t.values=e.ref?f[e.ref]:["empty"],t._ref=e.ref):t.type=r.DataTypes[a](),"UUID"===a&&"id"===e.name&&(t.defaultValue=r.DataTypes.UUIDV4()),e.primaryKey&&(t.primaryKey=!0),e.notNull&&(t.allowNull=!1),e.index&&(t._index=!0),null!==e.defaultValue&&void 0!==e.defaultValue&&(t.defaultValue=e.defaultValue),e.fullSearch&&(t._fullSearch=e.fullSearch),t}function y(e,t,a,n,o){let i={};const l=[];let u=!1;for(const y of e.fields)y.multiType?("common"===y.multiTypeVariant&&(u=!0),m(i,y,l)):"object"!==y.type&&(i[y.dbName]=h(y)),"object"===y.type&&a.push({objectName:t.name,tableName:e.name,field:y});class f extends r.Model{}const p={title:e.title,name:e.name,fields:e.fields,model:f.init(i,{sequelize:s.default,modelName:e.model,tableName:e.dbName})};if(t.model.hasMany(p.model,{foreignKey:"parentId",as:e.name,onDelete:"CASCADE",hooks:!0}),l.length>0){const g=p.model.prototype.toJSON;p.model.prototype.toJSON=function(){const t=g?g.call(this):Object.assign({},this.get?this.get():this);for(const e of l)e in t&&delete t[e];if(e.fields){const a=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of a){const a=this.dataValues&&this.dataValues[e.dbName];a&&"object"==typeof a&&(t[e.dbName]=a)}}return t}}if(u){function b(t){if(!e.fields)return;const a=c.default.typesSufixes();for(const n of e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const e=`__pending_${n.dbName}`;if(!Object.prototype.hasOwnProperty.call(t.dataValues,e))continue;const r=t.getDataValue(e),s=t.getDataValue(`_${n.dbName}Type`);for(const e in a){const r=`_${n.dbName}${a[e]}`;t.setDataValue(r,null)}if(c.default.typeIncludesRef(n.type)&&t.setDataValue(`_${n.dbName}Ref`,null),s){const e=c.default.getFieldNameByType(n.dbName,s);e&&(c.default.isRefType(s)&&"object"==typeof r?t.setDataValue(e,r.id||null):t.setDataValue(e,r))}delete t.dataValues[e]}}p.model.addHook("beforeSave",e=>{b(e)}),p.model.addHook("beforeBulkCreate",e=>{for(const t of e)b(t)}),p.model.addHook("afterFind","refObjectsPreload",async t=>{if(!e.fields)return;if(!t)return;const a=Array.isArray(t)?t:[t],n=e.fields.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),r=[];for(const e of a)for(const t of n){const a=e.getDataValue(`_${t.dbName}Type`),n=e.getDataValue(`_${t.dbName}Ref`);if(!a||!n)continue;const s=a.match(/^(catalog|document)\.(.+)$/);if(!s)continue;const i=s[1],l=s[2],u=o[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(n,{attributes:f}).then(a=>{if(!a)return;const n=a.get?a.get():a;if("catalog"===i){const a={id:n.id,name:n.name??null,presentation:n.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}else{const a={id:n.id,numberStr:n.numberStr??null,date:n.date??null,presentation:n.presentation??null};e.setDataValue(t.dbName,a),e.dataValues[t.dbName]=a}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});r.push(m)}r.length>0&&await Promise.all(r)})}for(const w of e.fields)w.leading&&n.push({field:w,belongTable:p.model});t.tables[e.name]=p}function g(e,t,a){let n={},o=[],i=[];n.id={type:r.DataTypes.UUID,primaryKey:!0,allowNull:!1},n.period={type:r.DataTypes.DATE,allowNull:!1,_index:!0};for(const e of t.fields)"dimension"!==e.role&&"resource"!==e.role||("object"!==e.type?n[e.dbName]=h(e):a.push({objectName:t.name,accModel:!0,field:e}),"dimension"===e.role&&o.push(l.default.cloneDeep(e)),"resource"===e.role&&i.push(l.default.cloneDeep(e)));class u extends r.Model{}const c={name:`${t.name}Acc`,dimensions:o,resources:i,model:u.init(n,{sequelize:s.default,modelName:`${e.model}Acc`,tableName:`${e.path}_acc`})};t.accTable=c}t.default=async()=>{f=await u.default.initEnums();const e=await s.default.query('SELECT * FROM app_objects WHERE app_objects."markedToDelete" = false AND app_objects."dbTableName" IS NOT NULL',{type:r.QueryTypes.SELECT}),t={},a=[],n=[];for(const i of e){let e={},l=[];const u=JSON.parse(i.dbFields),f=[];let p=!1;for(const t of u.filter(e=>!e.isTablePart))t.multiType?("common"===t.multiTypeVariant&&(p=!0),m(e,t,f)):"object"!==t.type&&(e[t.dbName]=h(t)),"object"===t.type&&a.push({objectName:i.name,field:t});if(i.indexes){const e=JSON.parse(i.indexes);for(const t of e)l.push({name:t.name,fields:t.fields,unique:t.unique,using:t.using})}const b=i.reflection?JSON.parse(i.reflection):{};"catalog"===i.type&&(e.presentation={type:new r.DataTypes.VIRTUAL(r.DataTypes.STRING,b.fields?b.fields:["name"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let a;for(;null!==(a=e.exec(b.template));)a.index===e.lastIndex&&e.lastIndex++,a.forEach(e=>{t.push(e)});let n=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const r=u.find(e=>e.dbName===t);if(r)if("date"===r.type){const e=r.format&&""!==r.format?r.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];n=n.replace(e,a)}return n}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("name")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"name"}),"document"===i.type&&(e.presentation={type:new r.DataTypes.VIRTUAL(r.DataTypes.STRING,b.fields?b.fields:["numberStr"]),get(){let e;if(i.processedPresentation&&(e=this.getDataValue("presentation"),e))return e;if(b.template&&""!==b.template){const e=/\[[a-zA-Z\\.]+\]/gm,t=[];let a;for(;null!==(a=e.exec(b.template));)a.index===e.lastIndex&&e.lastIndex++,a.forEach(e=>{t.push(e)});let n=b.template;for(const e of t){const t=e.replace("[","").replace("]","");let a=this[t];const r=u.find(e=>e.dbName===t);if(r)if("date"===r.type){const e=r.format&&""!==r.format?r.format:"DD.MM.YYYY HH:mm:ss";a=(0,o.default)(this[t]).format(e)}else a=this[t];n=n.replace(e,a)}return n}return b.fields?.length>0?b.fields.map(e=>{if(this[e])return this[e]}).filter(e=>void 0!==e).join(", "):this.getDataValue("numberStr")},set(e){this.setDataValue("presentation",e)},_sortBy:b.sortBy?b.sortBy:"numberStr"});class w extends r.Model{}const _={id:i.id,name:i.name,singularName:i.singularName,title:i.title,path:i.path,tableName:i.dbTableName,type:i.type,confirmation:i.confirmation,system:i.system,configurationData:i.configurationData,hierarchic:i.hierarchic,api:i.api?JSON.parse(i.api):null,staticAPI:i.staticAPI?JSON.parse(i.staticAPI):{},fields:u,reflection:b,withoutTimestamps:i.withoutTimestamps,processedPresentation:i.processedPresentation,accessRoleId:i.accessRoleId,accumulationRegister:i.accumulationRegister,model:w.init(e,{sequelize:s.default,modelName:i.model,tableName:i.dbTableName,indexes:l,timestamps:!0!==i.withoutTimestamps,mainModel:!0}),accTable:null,tables:{},controllers:{}};u.find(e=>!0===e.password)&&(_.model.prototype.toJSON=function(){const e=Object.assign({},this.get());for(const t of u.filter(e=>!0===e.password))delete e[t.name];return e});for(const e of u)e.leading&&n.push({field:e,belongTable:_.model});for(const e of u.filter(e=>e.isTablePart))y(e,_,a,n,t);if("register"===_.type&&_.accumulationRegister&&g(i,_,a),p){if(f.length>0){const e=_.model.prototype.toJSON;_.model.prototype.toJSON=function(){const t=e?e.call(this):Object.assign({},this.get?this.get():this);for(const e of f)e in t&&delete t[e];const a=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type));for(const e of a){const a=this.dataValues&&this.dataValues[e.dbName];a&&"object"==typeof a&&(t[e.dbName]=a)}return t}}_.model.addHook("beforeSave",e=>{for(const t of u.filter(e=>e.multiType&&"common"===e.multiTypeVariant)){const a=`__pending_${t.dbName}`;if(!Object.prototype.hasOwnProperty.call(e.dataValues,a))continue;const n=e.getDataValue(a),r=e.getDataValue(`_${t.dbName}Type`),s=c.default.typesSufixes();for(const a in s){const n=`_${t.dbName}${s[a]}`;e.setDataValue(n,null)}if(c.default.typeIncludesRef(t.type)&&e.setDataValue(`_${t.dbName}Ref`,null),r){const a=c.default.getFieldNameByType(t.dbName,r);a&&(c.default.isRefType(r)&&"object"==typeof n?e.setDataValue(a,n.id||null):e.setDataValue(a,n))}delete e.dataValues[a]}}),_.model.addHook("afterFind","refObjectsPreload",async e=>{if(!e)return;const a=Array.isArray(e)?e:[e],n=u.filter(e=>e.multiType&&"common"===e.multiTypeVariant&&c.default.typeIncludesRef(e.type)),r=[];for(const e of a)for(const a of n){const n=e.getDataValue(`_${a.dbName}Type`),s=e.getDataValue(`_${a.dbName}Ref`);if(!n||!s)continue;const o=n.match(/^(catalog|document)\.(.+)$/);if(!o)continue;const i=o[1],l=o[2],u=t[l],c=u?.model;if(!c)continue;const f="catalog"===i?["id","name","presentation"]:["id","presentation","numberStr","date"],m=c.findByPk(s,{attributes:f}).then(t=>{if(!t)return;const n=t.get?t.get():t;if("catalog"===i){const t={id:n.id,name:n.name??null,presentation:n.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}else{const t={id:n.id,numberStr:n.numberStr??null,date:n.date??null,presentation:n.presentation??null};e.setDataValue(a.dbName,t),e.dataValues[a.dbName]=t}}).catch(e=>{d.default.error("Error in 'afterFind' 'refObjectsPreload' hook",{meta:e})});r.push(m)}r.length>0&&await Promise.all(r)})}t[_.name]=_}const l=[];for(const n of a){const a=t[n.objectName];if(a)if(n.field.multiType){if(!Array.isArray(n.field.ref))continue;const t=[];let r=!1;for(const s of n.field.ref){const n=e.find(e=>e.name===s);if(!n){r=!0,console.info("No belongs to object: ",`${a.name} -> ${s}`);break}t.push(n)}if(!r){const e=[];let r=!1;for(const o of t){const i=s.default.models[o.model];if(!i){r=!0,l.push({refField:n,object:a,belongToObject:t});break}e.push({object:o,model:i})}if(!r){const t=n.tableName?a.tables[n.tableName].model:n.accModel?a.accTable?.model:a.model;for(const r of e){const e=p(n);e.constraints=!1,e.as=`${n.field.name}${r.model.name}`,t.belongsTo(r.model,e);let s=n.accModel?`${a.name}Acc`:a.name;r.model.associations[s]&&(s=`${n.field.name}${s.charAt(0).toUpperCase()+s.slice(1)} `);const o={foreignKey:n.field.dbName,_noTablePart:!0,_registerRecords:"recorder"===n.field.name||void 0,constraints:!1,as:s,scope:{[`${n.field.name}Type`]:r.object.name}};r.model.hasMany(t,o)}t.addHook("afterFind",t=>{Array.isArray(t)||(t=t?[t]:[]);for(const a of t){const t=e.find(e=>a[`${n.field.name}Type`]===e.object.name);t&&void 0!==a[`${n.field.name}${t.model.name}`]?(a[n.field.name]=a[`${n.field.name}${t.model.name}`],a.dataValues[n.field.name]=a[`${n.field.name}${t.model.name}`]):(a[n.field.name]=null,a.dataValues[n.field.name]=null);for(const t of e)delete a[`${n.field.name}${t.model.name}`],delete a.dataValues[`${n.field.name}${t.model.name}`]}})}}}else{const t=e.find(e=>e.name===n.field.ref);if(t){const e=s.default.models[t.model];if(e){const t=p(n);if(n.tableName)a.tables[n.tableName].model.belongsTo(e,t);else if(n.accModel)a.accTable?.model.belongsTo(e,t);else try{a.model.belongsTo(e,t)}catch(a){console.error("Error in belongsTo: ",{belongToModel:e,fieldData:t},a)}}else l.push({refField:n,object:a,belongToObject:t})}else console.info("No belongs to object: ",`${a.name} -> ${n.field.name} (${n.field.ref})`)}else console.info("No object: ",n.objectName)}for(const a of n){const n=t[a.field.ref];if(n)n.model.hasMany(a.belongTable,{foreignKey:a.field.dbName,as:a.field.leadingAlias,_noTablePart:!0});else{const t=e.find(e=>e.name===a.field.ref);t?l.push({leading:!0,leadingField:a,model:t.model}):console.info("No app object for leading field: ",a.field.ref)}}for(const e in t){if(!t[e].processedPresentation)continue;const a=t[e];let n;const r=`${a.type}s/${a.name}/server.module.js`,s=`${process.cwd()}/src/modules/${r}`;i.default.existsSync(s)&&(n=require(s)),n?.initPresentation&&a.model.addHook("afterFind","addPresentationGetter",async e=>{Array.isArray(e)||(e=e?[e]:[]);for(const t of e){const e=await n.initPresentation(t);t.setDataValue("presentation",e)}})}for(const e of l)console.warn("Missing ref: ",e);return t}},7174:e=>{e.exports=require("compression")},7252:e=>{e.exports=require("express")},7281:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=a(9876),o=n(a(1688)),i=r.default.Router();i.get("/access_log",o.default.canRead({key:"access_logs"}),s.accessLogsController.getFilesInfo),t.default=i},7501:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788)),o=n(a(2282)),i=n(a(2103)),l=a(9239);t.default={async initCommonCommands(e){const t=await async function(){try{return(await s.default.query('\n SELECT\n command_groups.id AS "id",\n command_groups.name AS "name",\n command_groups."title" AS "title",\n command_groups."objectType" AS "objectType",\n command_groups."viewType" AS "viewType",\n command_groups."lang" AS "lang",\n command_groups."presentationType" AS "presentationType",\n command_groups."variant" AS "variant",\n command_groups."icon" AS "icon",\n command_groups."hidden" AS "hidden",\n command_groups."tooltip" AS "tooltip",\n command_groups."classes" AS "classes",\n command_groups."styles" AS "styles",\n groups_objects."objectId" AS "objectId"\n FROM \n command_groups\n LEFT JOIN \n command_groups_objects as "groups_objects"\n ON \n groups_objects."parentId" = command_groups.id \n WHERE\n command_groups."markedToDelete" = false',{type:r.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,icon:t.icon,variant:t.variant,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,isGroup:!0,objects:[],items:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[])}catch(e){return console.error(e),[]}}(),a=await async function(e){try{const t=(await s.default.query('\n SELECT\n common_commands.id AS "id",\n common_commands.name AS "name",\n common_commands."title" AS "title",\n common_commands."objectType" AS "objectType",\n common_commands."viewType" AS "viewType",\n common_commands."module" AS "module",\n common_commands."moduleV3" AS "moduleV3",\n common_commands."lang" AS "lang",\n common_commands."presentationType" AS "presentationType",\n common_commands."variant" AS "variant",\n common_commands."icon" AS "icon",\n common_commands."hidden" AS "hidden",\n common_commands."tooltip" AS "tooltip",\n common_commands."classes" AS "classes",\n common_commands."styles" AS "styles",\n common_commands."groupId" AS "groupId",\n commands_objects."objectId" AS "objectId"\n FROM \n common_commands\n LEFT JOIN \n common_commands_objects as "commands_objects"\n ON \n commands_objects."parentId" = common_commands.id \n WHERE\n common_commands."markedToDelete" = false',{type:r.QueryTypes.SELECT})).reduce((e,t)=>{let a=e.findIndex(e=>e.name===t.name);return-1===a&&(a=e.push({id:t.id,name:t.name,title:t.title,objectType:t.objectType,viewType:t.viewType,module:t.module,moduleV3:t.moduleV3,lang:t.lang?JSON.parse(t.lang):t.lang,presentationType:t.presentationType,variant:t.variant,icon:t.icon,description:t.description,hidden:t.hidden,tooltip:t.tooltip,classes:t.classes,styles:t.styles,groupId:t.groupId,isGroup:!1,objects:[]})-1),a>-1&&t.objectId&&e[a].objects.push(t.objectId),e},[]),a=/^\s*export\s+/gm,n=/^\s*(?:async\s+)?function\s+commandProcessing\s*\([^)]*\)\s*{[\s\S]*?}/gm;for(const r of t){if(r.module){r.module=r.module.replace(a,""),n.lastIndex=0;const t=n.test(r.module);let s="";s=t?`function main() {${r.module.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(s);r.module=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),r.module=null}}if(r.moduleV3){r.moduleV3=r.moduleV3.replace(a,"function "),n.lastIndex=0;const t=n.test(r.moduleV3);let s="";s=t?`function main() {${r.moduleV3.trim()} return{commandProcessing}}`:"function main() {return {}}";try{const t=await(0,l.minify)(s);r.moduleV3=i.default.AES.encrypt(t.code.replace(/^function main\(\)/,""),e).toString()}catch(e){o.default.error("Error in commonCommand module",{meta:e}),r.moduleV3=null}}}return t}catch(e){return console.error(e),[]}}(e);for(const e of a)if(e.groupId){const a=t.find(t=>t.id===e.groupId&&t.isGroup);a&&a.items.push({...e})}else t.push({...e});return t}}},7565:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(6304)),o=r.default.Router(),i="app";o.get(`/${i}/info`,s.default.getAppInfo),o.get(`/${i}/objects`,s.default.getObjects),o.get(`/${i}/object_meta`,s.default.getObjectMetadata),o.get(`/${i}/object_fields`,s.default.getObjectFields),o.get(`/${i}/subordination`,s.default.getSubordination),o.get(`/${i}/registers_meta`,s.default.getRegistersMetadata),o.get(`/${i}/setting`,s.default.getSetting),o.get(`/${i}/enums`,s.default.getEnums),o.get(`/${i}/app-objects`,s.default.getAppObjects),o.get(`/${i}/common-modules`,s.default.getCommonModules),o.get(`/${i}/event-subscriptions`,s.default.getEventSubscriptions),o.get(`/${i}/view-settings/:id`,s.default.getViewSettings),o.get(`/${i}/store`,s.default.getClientStore),o.get(`/${i}/common-commands`,s.default.getCommonCommands),o.get(`/${i}/has-role`,s.default.hasRole),o.post(`/${i}/setting`,s.default.setSetting),o.post(`/${i}/raw-query`,s.default.rawQuery),o.post(`/${i}/exec-func`,s.default.execFunc),o.post(`/${i}/exec-common-module`,s.default.execCommonModuleFunc),t.default=o},7636:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(8608)),s=a(696),o=n(a(4716)),i=n(a(5788)),l=n(a(2282)),u=n(a(2555));function c(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={vertical:"middle",horizontal:"left",shrinkToFit:!0,wrapText:!0},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"e9ecef"}}}function d(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0},e.alignment={horizontal:"left"},e.fill={type:"pattern",pattern:"solid",fgColor:{argb:"f2f5fa"}}}function f(e){e.border={left:{style:"thin",color:{argb:"d3d3d3"}},top:{style:"thin",color:{argb:"d3d3d3"}},right:{style:"thin",color:{argb:"d3d3d3"}},bottom:{style:"thin",color:{argb:"d3d3d3"}},outline:!0}}function m(e,t,a,n,r,s){for(const o of t){let t=!0===n?1:e.fields.length;if(r.getRow(a).outlineLevel=s,o.isGroup){const i=r.getCell(a,1);if(y(e,i,o.groups),o.children.length>0?d(i):f(i),r.mergeCells(a,1,a,t),t+=1,e.colGroups.length>0){for(const e of o.totals){const n=r.getCell(a,t);n.value=e.value||0,o.children.length>0?d(n):f(n),n.alignment={horizontal:e.textAlign?e.textAlign:"left"},n.numFmt=p(e.format),t+=1}if(e.showXTotal)for(const n of e.calcs){const e=o.totals.reduce((e,t)=>t.id===n.id?e+t.value:e,0),s=r.getCell(a,t);s.value=e||0,o.children.length>0?d(s):f(s),s.alignment={horizontal:n.textAlign?n.textAlign:"left"},s.numFmt=p(n.format),t+=1}}else for(const e of o.totals){const n=r.getCell(a,t);n.value=e.value||0,o.children.length>0?d(n):f(n),n.alignment={horizontal:e.textAlign?e.textAlign:"left"},n.numFmt=p(e.format),t+=1}a+=1,o.children.length>0&&(a=m(e,o.children,a,n,r,s+1))}else{for(let t=0;t<e.fields.length;t++){const n=r.getCell(a,t+1);h(n,e.fields[t],o,e),f(n),n.alignment={horizontal:e.fields[t].textAlign}}let t=e.fields.length+1;if(e.colGroups.length>0){const n=o[e.colGroups[0].name],s={};for(const i of e.cols)for(let l=0;l<e.calcs.length;l++){let u=0;("object"===e.colGroups[0].valueType&&i.id===n?.id||i===n)&&(u=Number(o[e.calcs[l].name]||0));const c=r.getCell(a,t);c.value=u||0,f(c),c.alignment={horizontal:e.calcs[l].textAlign?e.calcs[l].textAlign:"left"},c.numFmt=p(e.calcs[l].format),Object.hasOwnProperty.call(s,e.calcs[l].name)?s[e.calcs[l].name]+=Number(u):s[e.calcs[l].name]=Number(u),t+=1}if(e.showXTotal)for(let n=0;n<e.calcs.length;n++){let o=s[e.calcs[n].name];const i=r.getCell(a,t+n);i.value=o||0,f(i),i.alignment={horizontal:e.calcs[n].textAlign?e.calcs[n].textAlign:"left"},i.numFmt=p(e.calcs[n].format)}}else if(e.rowGroups.length>0)for(let n=0;n<e.calcs.length;n++){let s=Number(o[e.calcs[n].name]||0);const i=r.getCell(a,t+n);i.value=s||0,f(i),i.alignment={horizontal:e.calcs[n].textAlign?e.calcs[n].textAlign:"left"},i.numFmt=p(e.calcs[n].format)}a+=1}}return a}function p(e){let t=null;if(e){const a=JSON.parse(e||'{"NFD": 3}'),n=0;a.NFD&&(t=n.toFixed(a.NFD))}return t}function h(e,t,a,n){let r=a[t.name]||null;switch(t.valueType){case"number":{let a=parseFloat(r);isNaN(a)&&(a=0),e.value=a||0,t.format&&(e.numFmt=p(t.format));break}case"date":default:e.value=r||"";break;case"object":e.value=r.name||"";break;case"boolean":e.value=Boolean(r||!1),e.numFmt="BOOLEAN";break;case"enum":if(r&&t.ref){const e=n.enums[t.ref].find(e=>e.value===r);r=e?e.title:r}e.value=r||""}}function y(e,t,a){if(1===a.length)switch(a[0].valueType){case"number":t.value=Number(a[0].value||0);break;case"date":""===a[0].value?t.value=null:a[0].format?t.value=(0,o.default)(a[0].value,a[0].format).toDate()||null:t.value=a[0].value||null;break;case"object":t.value=a[0].value.name||"";break;case"boolean":t.value=Boolean(a[0].value||!1),t.numFmt="BOOLEAN";break;default:t.value=a[0].value||""}else{let n="";for(let t=0;t<a.length;t++)"object"===a[t].valueType?n+=a[t].value?.name||e.lang.undefined:"boolean"===a[t].valueType?n+=a[t].value?e.lang.boolean.true:e.lang.boolean.false:n+=a[t].value,t<a.length-1&&(n=`${n}, `);t.value=n||""}}t.default={async generateExcel(e,t=null){const a={...e.body};if(a.rowGroups.length>1){const e=[];let t=[];for(let n=0;n<a.rowGroups.length;n++)!0!==a.rowGroups[n].withParent&&0!==n&&(e.push(t.length>1?t:t[0]),t=[]),t.push(a.rowGroups[n]),n===a.rowGroups.length-1&&e.push(t.length>1?t:t[0]);a.rowGroups=e}a.rowGroups.length>0&&(a.fields=a.fields.filter(e=>!a.calcs.find(t=>t.name===e.name))),a.enums=await async function(e){try{const t={};let a=await i.default.models.Enum.findAll({include:[{model:i.default.models.EnumValue,as:"values"}],order:["name"]});for(const n of a)t[n.name]=n.values.map(t=>({value:t.value,title:u.default.translateField(t,"title",e)}));return t}catch(e){return l.default.error("Error in app getEnums controller",{meta:e}),[]}}(a.langCode);const n=new r.default.Workbook,o=n.addWorksheet("Sheet 1",{pageSetup:{paperSize:9,orientation:"landscape"}});let f=1;if(a.periodPresentation){let e=a.periodPresentation.length>20?a.lang.byPeriod:a.lang.byDate;o.getCell(f,1).value=`${e}:`,o.getCell(f,2).value=a.periodPresentation,f++}if(Array.isArray(a.filterPresentation)&&a.filterPresentation.length>0){o.getCell(f,1).value=`${a.lang.filter}:`;for(const e of a.filterPresentation)o.getCell(f,2).value=e,f++}const h=a.rowGroups.length>0&&!0===a.hideDetails;let y=f,g=a.rowGroups.length+(!0===h?0:1);g=a.colGroups.length>0&&g<2?2:g;let b=!0===h?1:a.fields.length;if(a.rowGroups.length>0){const e=1===a.rowGroups.length&&a.colGroups.length>0&&h?1:0;a.rowGroups.map(t=>{const a=o.getCell(f,1);a.value=function(e){let t;return t=Array.isArray(e)?e.map(e=>e.title).join(", "):"object"==typeof e?e?.title:e,t}(t),c(a),o.mergeCells(f,1,f+e,b),f+=1})}!0!==h&&(a.fields.map((e,t)=>{const a=o.getCell(f,t+1);c(a),a.value=e.title}),f+=1);const w=a.calcs.length;if(a.colGroups.length>0){for(const e of a.cols){const t=o.getCell(y,b+1);t.value=e.name,c(t),o.mergeCells(y,b+1,y,b+w),a.calcs.map((e,t)=>{const a=o.getCell(y+1,b+t+1);a.value=e.title,c(a),o.mergeCells(y+1,b+t+1,y+g-1,b+t+1)}),b+=w}if(a.showXTotal){const e=o.getCell(y,b+1);e.value=a.lang.total,c(e),o.mergeCells(y,b+1,y,b+w),a.calcs.map((e,t)=>{const a=o.getCell(y+1,b+t+1);a.value=e.title,c(a),o.mergeCells(y+1,b+t+1,y+g-1,b+t+1)})}}else a.rowGroups.length>0&&a.calcs.map((e,t)=>{const a=o.getCell(y,b+t+1);a.value=e.title,c(a),o.mergeCells(y,b+t+1,y+g-1,b+t+1)});f=m(a,a.data,y+g,h,o,0);let _=1;if(a.showYTotal>0&&a.totals.length>0){let e=!0===h?1:a.fields.length;if(a.rowGroups.length>0){const t=o.getCell(f,1);t.value=a.lang.total,d(t),o.mergeCells(f,1,f,e),a.totals.forEach((t,a)=>{_=e+a+1;const n=o.getCell(f,_);n.value=t.value||0,d(n),n.numFmt=p(t.format),n.alignment={horizontal:t.textAlign?t.textAlign:"left"}}),a.colGroups.length>0&&a.showXTotal&&a.calcs.map((t,n)=>{const r=a.totals.reduce((e,a)=>a.id===t.id?e+a.value:e,0);_=e+a.totals.length+n+1;const s=o.getCell(f,_);s.value=r||0,d(s),s.numFmt=p(t.format),s.alignment={horizontal:t.textAlign?t.textAlign:"left"}})}else{let e=!0,t=1;for(const n of a.fields){const r=a.totals.find(e=>e.id===n.id);if(r){if(!0===e){const n=o.getCell(f,1);n.value=a.lang.total,d(n),o.mergeCells(f,1,f,t-1),e=!1}const s=o.getCell(f,t);s.value=Number(r.value||0),d(s),s.numFmt=p(r.format),s.alignment={horizontal:n.textAlign?n.textAlign:"left"}}else if(!0!==e){const e=o.getCell(f,t);e.value="",d(e)}_=t,t++}}}return function(e,t){e.columns.forEach(e=>{let a=6;e.eachCell(e=>{if(e.row>=t&&!e.isMerged){let t;if(e.numFmt&&null!=e.value)switch(e.type){case r.default.ValueType.Date:{const a=function(e){const t=e.getTimezoneOffset()/1440;return e.getTime()/864e5+(25569-t)}(e.value);t=(0,s.format)(e.numFmt,a).length;break}case r.default.ValueType.Number:default:t=(0,s.format)(e.numFmt,e.value).length}else t=e.value.toString().length;a=Math.max(a,t)}}),a>50&&(a=50),e.width=a+2})}(o,y),function(e){const t=e.getCell(e.rowCount,e.columnCount);e.pageSetup.printArea=`A1:${t.address}`}(o),t&&(t.status(200),t.setHeader("Content-Type","text/xlsx"),t.setHeader("Content-Disposition","attachment; filename=Excel.xlsx"),n.xlsx.write(t).then(function(){t.end()})),n}}},7825:e=>{e.exports=require("lodash")},7927:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.migrationsService=t.eventService=t.registerService=t.seederService=t.cryptoGen=t.defineObjects=t.logger=t.appService=t.documentService=t.controllerService=t.commonService=t.accessRights=t.sequelize=t.app=void 0;const r=n(a(6928)),s=n(a(7252)),o=n(a(7174)),i=n(a(6898)),l=n(a(2525)),u=n(a(8577)),c=a(3903),d=n(a(8278)),f=n(a(5977)),m=n(a(3857)),p=n(a(1763)),h=n(a(6456)),y=n(a(5560)),g=n(a(3407)),b=n(a(3464)),w=n(a(6797)),_=n(a(2362));t.eventService=_.default;const S=n(a(5788));t.sequelize=S.default;const v=(0,m.default)(f.default.Store);process.on("unhandledRejection",e=>console.error(e)),process.on("uncaughtException",e=>console.error(e)),process.on("warning",e=>console.warn(e.stack));const E=(0,s.default)();t.app=E,E.use(s.default.json({limit:"100mb"})),E.use(s.default.urlencoded({extended:!1})),E.use((0,i.default)()),(0,h.default)(E),E.use((0,l.default)()),E.use((0,o.default)()),E.use(s.default.static(r.default.join("src","../public")));const R={origin:[...(process.env.ALLOW_ORIGIN||"").split(","),"app://."],methods:["OPTIONS","GET","POST","PUT","PATCH","DELETE"],allowedHeaders:["Content-Type","Authorization","x-access-token","x-api-key","device_uuid","Access-Control-Allow-Origin","Access-Control-Allow-Credentials","x-client-version"],credentials:!0};E.use((0,u.default)(R)),a(9);const $={genid:()=>(0,c.v4)(),store:new v({db:S.default,table:"Session",extendDefaultFields:function(e,t){const a=t?.passport?.user;return{id:(0,c.v4)(),data:e.data,expires:e.expires,userId:a,licNumber:t?.license?.number||null,clientType:t?.clientType||null}}}),secret:"Mk9pZ2Adth",resave:!1,rolling:!0,saveUninitialized:!1,cookie:{httpOnly:!0,maxAge:Number(process.env.SESSION_MAX_AGE||"900000"),secure:!1}};E.use((0,f.default)($));const T=(0,p.default)({windowMs:6e4,max:1e5,statusCode:429});E.use(T),async function(e){try{await(0,y.default)(e),(0,g.default)(e)}catch(e){console.error(e)}finally{b.default.init(e.locals.objects)}}(E),w.default.initializePassport(d.default),E.use(d.default.initialize()),E.use(d.default.session()),_.default.init(E),E.set("views",r.default.join("src","views")),E.set("view engine","pug"),E.use((e,t,a,n)=>{console.error(e),a.locals.message=e.message,a.locals.error="development"===t.app.get("env")?e:{},a.status(e.status||500),a.render("error")});const N=n(a(1688));t.accessRights=N.default;const O=n(a(2282));t.logger=O.default;const D=n(a(2555));t.commonService=D.default;const C=n(a(3958));t.controllerService=C.default;const A=n(a(4621));t.appService=A.default;const j=n(a(6224));t.defineObjects=j.default;const I=n(a(6836));t.cryptoGen=I.default;const x=n(a(2671));t.documentService=x.default;const P=n(a(9880));t.seederService=P.default;const F=n(a(6299));t.registerService=F.default;const M=n(a(6910));t.migrationsService=M.default},8278:e=>{e.exports=require("passport")},8287:(e,t,a)=>{var n=a(6661),r=a(8876),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=l,t.IS=50;var o=2147483647;function i(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,a){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return d(e)}return u(e,t,a)}function u(e,t,a){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var a=0|h(e,t),n=i(a),r=n.write(e,t);return r!==a&&(n=n.slice(0,r)),n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(V(e,Uint8Array)){var t=new Uint8Array(e);return m(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return m(e,t,a);if("undefined"!=typeof SharedArrayBuffer&&(V(e,SharedArrayBuffer)||e&&V(e.buffer,SharedArrayBuffer)))return m(e,t,a);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,a);var r=function(e){if(l.isBuffer(e)){var t=0|p(e.length),a=i(t);return 0===a.length||e.copy(a,0,0,t),a}return void 0!==e.length?"number"!=typeof e.length||B(e.length)?i(0):f(e):"Buffer"===e.type&&Array.isArray(e.data)?f(e.data):void 0}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,a);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function d(e){return c(e),i(e<0?0:0|p(e))}function f(e){for(var t=e.length<0?0:0|p(e.length),a=i(t),n=0;n<t;n+=1)a[n]=255&e[n];return a}function m(e,t,a){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(a||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===t&&void 0===a?new Uint8Array(e):void 0===a?new Uint8Array(e,t):new Uint8Array(e,t,a),Object.setPrototypeOf(n,l.prototype),n}function p(e){if(e>=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||V(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var a=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===a)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return a;case"utf8":case"utf-8":return k(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*a;case"hex":return a>>>1;case"base64":return U(e).length;default:if(r)return n?-1:k(e).length;t=(""+t).toLowerCase(),r=!0}}function y(e,t,a){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===a||a>this.length)&&(a=this.length),a<=0)return"";if((a>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,a);case"utf8":case"utf-8":return T(this,t,a);case"ascii":return O(this,t,a);case"latin1":case"binary":return D(this,t,a);case"base64":return $(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,a);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function g(e,t,a){var n=e[t];e[t]=e[a],e[a]=n}function b(e,t,a,n,r){if(0===e.length)return-1;if("string"==typeof a?(n=a,a=0):a>2147483647?a=2147483647:a<-2147483648&&(a=-2147483648),B(a=+a)&&(a=r?0:e.length-1),a<0&&(a=e.length+a),a>=e.length){if(r)return-1;a=e.length-1}else if(a<0){if(!r)return-1;a=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:w(e,t,a,n,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):w(e,[t],a,n,r);throw new TypeError("val must be string, number or Buffer")}function w(e,t,a,n,r){var s,o=1,i=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,i/=2,l/=2,a/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(r){var c=-1;for(s=a;s<i;s++)if(u(e,s)===u(t,-1===c?0:s-c)){if(-1===c&&(c=s),s-c+1===l)return c*o}else-1!==c&&(s-=s-c),c=-1}else for(a+l>i&&(a=i-l),s=a;s>=0;s--){for(var d=!0,f=0;f<l;f++)if(u(e,s+f)!==u(t,f)){d=!1;break}if(d)return s}return-1}function _(e,t,a,n){a=Number(a)||0;var r=e.length-a;n?(n=Number(n))>r&&(n=r):n=r;var s=t.length;n>s/2&&(n=s/2);for(var o=0;o<n;++o){var i=parseInt(t.substr(2*o,2),16);if(B(i))return o;e[a+o]=i}return o}function S(e,t,a,n){return q(k(t,e.length-a),e,a,n)}function v(e,t,a,n){return q(function(e){for(var t=[],a=0;a<e.length;++a)t.push(255&e.charCodeAt(a));return t}(t),e,a,n)}function E(e,t,a,n){return q(U(t),e,a,n)}function R(e,t,a,n){return q(function(e,t){for(var a,n,r,s=[],o=0;o<e.length&&!((t-=2)<0);++o)n=(a=e.charCodeAt(o))>>8,r=a%256,s.push(r),s.push(n);return s}(t,e.length-a),e,a,n)}function $(e,t,a){return 0===t&&a===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,a))}function T(e,t,a){a=Math.min(e.length,a);for(var n=[],r=t;r<a;){var s,o,i,l,u=e[r],c=null,d=u>239?4:u>223?3:u>191?2:1;if(r+d<=a)switch(d){case 1:u<128&&(c=u);break;case 2:128==(192&(s=e[r+1]))&&(l=(31&u)<<6|63&s)>127&&(c=l);break;case 3:s=e[r+1],o=e[r+2],128==(192&s)&&128==(192&o)&&(l=(15&u)<<12|(63&s)<<6|63&o)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:s=e[r+1],o=e[r+2],i=e[r+3],128==(192&s)&&128==(192&o)&&128==(192&i)&&(l=(15&u)<<18|(63&s)<<12|(63&o)<<6|63&i)>65535&&l<1114112&&(c=l)}null===c?(c=65533,d=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),r+=d}return function(e){var t=e.length;if(t<=N)return String.fromCharCode.apply(String,e);for(var a="",n=0;n<t;)a+=String.fromCharCode.apply(String,e.slice(n,n+=N));return a}(n)}l.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),l.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),l.poolSize=8192,l.from=function(e,t,a){return u(e,t,a)},Object.setPrototypeOf(l.prototype,Uint8Array.prototype),Object.setPrototypeOf(l,Uint8Array),l.alloc=function(e,t,a){return function(e,t,a){return c(e),e<=0?i(e):void 0!==t?"string"==typeof a?i(e).fill(t,a):i(e).fill(t):i(e)}(e,t,a)},l.allocUnsafe=function(e){return d(e)},l.allocUnsafeSlow=function(e){return d(e)},l.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==l.prototype},l.compare=function(e,t){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var a=e.length,n=t.length,r=0,s=Math.min(a,n);r<s;++r)if(e[r]!==t[r]){a=e[r],n=t[r];break}return a<n?-1:n<a?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var a;if(void 0===t)for(t=0,a=0;a<e.length;++a)t+=e[a].length;var n=l.allocUnsafe(t),r=0;for(a=0;a<e.length;++a){var s=e[a];if(V(s,Uint8Array))r+s.length>n.length?l.from(s).copy(n,r):Uint8Array.prototype.set.call(n,s,r);else{if(!l.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,r)}r+=s.length}return n},l.byteLength=h,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)g(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},l.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?T(this,0,e):y.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",a=t.IS;return e=this.toString("hex",0,a).replace(/(.{2})/g,"$1 ").trim(),this.length>a&&(e+=" ... "),"<Buffer "+e+">"},s&&(l.prototype[s]=l.prototype.inspect),l.prototype.compare=function(e,t,a,n,r){if(V(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===a&&(a=e?e.length:0),void 0===n&&(n=0),void 0===r&&(r=this.length),t<0||a>e.length||n<0||r>this.length)throw new RangeError("out of range index");if(n>=r&&t>=a)return 0;if(n>=r)return-1;if(t>=a)return 1;if(this===e)return 0;for(var s=(r>>>=0)-(n>>>=0),o=(a>>>=0)-(t>>>=0),i=Math.min(s,o),u=this.slice(n,r),c=e.slice(t,a),d=0;d<i;++d)if(u[d]!==c[d]){s=u[d],o=c[d];break}return s<o?-1:o<s?1:0},l.prototype.includes=function(e,t,a){return-1!==this.indexOf(e,t,a)},l.prototype.indexOf=function(e,t,a){return b(this,e,t,a,!0)},l.prototype.lastIndexOf=function(e,t,a){return b(this,e,t,a,!1)},l.prototype.write=function(e,t,a,n){if(void 0===t)n="utf8",a=this.length,t=0;else if(void 0===a&&"string"==typeof t)n=t,a=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(a)?(a>>>=0,void 0===n&&(n="utf8")):(n=a,a=void 0)}var r=this.length-t;if((void 0===a||a>r)&&(a=r),e.length>0&&(a<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return _(this,e,t,a);case"utf8":case"utf-8":return S(this,e,t,a);case"ascii":case"latin1":case"binary":return v(this,e,t,a);case"base64":return E(this,e,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,t,a);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var N=4096;function O(e,t,a){var n="";a=Math.min(e.length,a);for(var r=t;r<a;++r)n+=String.fromCharCode(127&e[r]);return n}function D(e,t,a){var n="";a=Math.min(e.length,a);for(var r=t;r<a;++r)n+=String.fromCharCode(e[r]);return n}function C(e,t,a){var n=e.length;(!t||t<0)&&(t=0),(!a||a<0||a>n)&&(a=n);for(var r="",s=t;s<a;++s)r+=L[e[s]];return r}function A(e,t,a){for(var n=e.slice(t,a),r="",s=0;s<n.length-1;s+=2)r+=String.fromCharCode(n[s]+256*n[s+1]);return r}function j(e,t,a){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>a)throw new RangeError("Trying to access beyond buffer length")}function I(e,t,a,n,r,s){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||t<s)throw new RangeError('"value" argument is out of bounds');if(a+n>e.length)throw new RangeError("Index out of range")}function x(e,t,a,n,r,s){if(a+n>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function P(e,t,a,n,s){return t=+t,a>>>=0,s||x(e,0,a,4),r.write(e,t,a,n,23,4),a+4}function F(e,t,a,n,s){return t=+t,a>>>=0,s||x(e,0,a,8),r.write(e,t,a,n,52,8),a+8}l.prototype.slice=function(e,t){var a=this.length;(e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,l.prototype),n},l.prototype.readUintLE=l.prototype.readUIntLE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e],r=1,s=0;++s<t&&(r*=256);)n+=this[e+s]*r;return n},l.prototype.readUintBE=l.prototype.readUIntBE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e+--t],r=1;t>0&&(r*=256);)n+=this[e+--t]*r;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||j(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=this[e],r=1,s=0;++s<t&&(r*=256);)n+=this[e+s]*r;return n>=(r*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,a){e>>>=0,t>>>=0,a||j(e,t,this.length);for(var n=t,r=1,s=this[e+--n];n>0&&(r*=256);)s+=this[e+--n]*r;return s>=(r*=128)&&(s-=Math.pow(2,8*t)),s},l.prototype.readInt8=function(e,t){return e>>>=0,t||j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||j(e,2,this.length);var a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt16BE=function(e,t){e>>>=0,t||j(e,2,this.length);var a=this[e+1]|this[e]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||j(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||j(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||j(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||j(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,a,n){e=+e,t>>>=0,a>>>=0,n||I(this,e,t,a,Math.pow(2,8*a)-1,0);var r=1,s=0;for(this[t]=255&e;++s<a&&(r*=256);)this[t+s]=e/r&255;return t+a},l.prototype.writeUintBE=l.prototype.writeUIntBE=function(e,t,a,n){e=+e,t>>>=0,a>>>=0,n||I(this,e,t,a,Math.pow(2,8*a)-1,0);var r=a-1,s=1;for(this[t+r]=255&e;--r>=0&&(s*=256);)this[t+r]=e/s&255;return t+a},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*a-1);I(this,e,t,a,r-1,-r)}var s=0,o=1,i=0;for(this[t]=255&e;++s<a&&(o*=256);)e<0&&0===i&&0!==this[t+s-1]&&(i=1),this[t+s]=(e/o|0)-i&255;return t+a},l.prototype.writeIntBE=function(e,t,a,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*a-1);I(this,e,t,a,r-1,-r)}var s=a-1,o=1,i=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===i&&0!==this[t+s+1]&&(i=1),this[t+s]=(e/o|0)-i&255;return t+a},l.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,a){return e=+e,t>>>=0,a||I(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,a){return P(this,e,t,!0,a)},l.prototype.writeFloatBE=function(e,t,a){return P(this,e,t,!1,a)},l.prototype.writeDoubleLE=function(e,t,a){return F(this,e,t,!0,a)},l.prototype.writeDoubleBE=function(e,t,a){return F(this,e,t,!1,a)},l.prototype.copy=function(e,t,a,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<a&&(n=a),n===a)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(a<0||a>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-a&&(n=e.length-t+a);var r=n-a;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,a,n):Uint8Array.prototype.set.call(e,this.subarray(a,n),t),r},l.prototype.fill=function(e,t,a,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,a=this.length):"string"==typeof a&&(n=a,a=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!l.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var r=e.charCodeAt(0);("utf8"===n&&r<128||"latin1"===n)&&(e=r)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<a)throw new RangeError("Out of range index");if(a<=t)return this;var s;if(t>>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(s=t;s<a;++s)this[s]=e;else{var o=l.isBuffer(e)?e:l.from(e,n),i=o.length;if(0===i)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<a-t;++s)this[s+t]=o[s%i]}return this};var M=/[^+/0-9A-Za-z-_]/g;function k(e,t){var a;t=t||1/0;for(var n=e.length,r=null,s=[],o=0;o<n;++o){if((a=e.charCodeAt(o))>55295&&a<57344){if(!r){if(a>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&s.push(239,191,189);continue}r=a;continue}if(a<56320){(t-=3)>-1&&s.push(239,191,189),r=a;continue}a=65536+(r-55296<<10|a-56320)}else r&&(t-=3)>-1&&s.push(239,191,189);if(r=null,a<128){if((t-=1)<0)break;s.push(a)}else if(a<2048){if((t-=2)<0)break;s.push(a>>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;s.push(a>>12|224,a>>6&63|128,63&a|128)}else{if(!(a<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return s}function U(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,a,n){for(var r=0;r<n&&!(r+a>=t.length||r>=e.length);++r)t[r+a]=e[r];return r}function V(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function B(e){return e!=e}var L=function(){for(var e="0123456789abcdef",t=new Array(256),a=0;a<16;++a)for(var n=16*a,r=0;r<16;++r)t[n+r]=e[a]+e[r];return t}()},8356:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(4716)),s=a(9031),o=a(7138),i=n(a(2282)),l=n(a(5788)),u=n(a(9896)),c=n(a(7636)),d=n(a(6357)),f=n(a(2555)),m=n(a(3830)),p=a(9031);function h(e,t,a){let n=0;for(const r of e)r.lvl=t,r.hasSub?r.childrenCount=h(r.children,t+1,a):r.childrenCount=!0===a.hideDetails?0:r.children.length,n+=r.childrenCount+1;return n}function y(e,t){for(const a of e)a._index=t++,a._vIndex=a._index,a.children?.length>0&&(t=y(a.children,t));return t}function g(e,t,a){for(const n of e)if(!0===n.hasSub)a=g(n.children,t,a);else for(const e of n.children)e[t.name]=a,a++;return a}function b(e,t,a,n){const r=e.rowGroups[t],s=R(a,r);let o=0;for(let i of s){const s=$(a,r,i),l={isGroup:!0,expanded:!0,hasSub:e.rowGroups.length-1>t,lvl:t,groups:[{value:i,...r}],totals:[],children:[],childrenCount:0};e.rowGroups.length-1===t?(l.children=s,l.childrenCount=!0===e.hideDetails?0:s.length):l.childrenCount=b(e,t+1,s,l.children),n.push(l),o+=l.childrenCount+1}return o}function w(e,t){if(0===e.length)return;if(!e[0].isGroup)return;const a=e[0].lvl;if(a<t)for(const a of e){const e=w(a.children,t);e&&(a.children=e)}else if(a===t){const t=[];for(const n of e){const e=[...n.groups];for(const r of n.children){const n=e.concat(r.groups);t.push({...r,groups:n,lvl:a})}}return t}}function _(e){if(Array.isArray(e))for(let t=e.length-1;t>=0;t--){const a=e[t];_(a.children);const n=a.totals?.filter(e=>0!==e.value);0===n?.length&&(0===a.children?.length&&a.childrenCount>0||0===a.childrenCount)&&e.splice(t,1)}}function S(e,t,a=null){let n=0;if(!0===e.hasSub){const r=[];e.children.map(e=>{r.push(S(e,t,a))}),n=E(r,t.expression)}else n=v(e.children,t,a);return a?e.totals.push({...t,value:n,group:a.value}):e.totals.push({...t,value:n}),n}function v(e,t,a=null){let n,r=0,s=0,o=[];switch(o=a?e.filter(e=>"object"===a.valueType?e[a.name].id===a.value.id:e[a.name]===a.value):e,t.expression){case"sum":o.map(e=>{s+=1*e[t.name]}),s=f.default.normalizeFloat(s,6);break;case"average":o.map(e=>{r+=1*e[t.name]}),s+=r/o.length,s=f.default.normalizeFloat(s,6);break;case"max":if(o.length>0){n=1*o[0][t.name];for(let e=1;e<o?.length;e++)n<=1*o[e][t.name]&&(n=1*o[e][t.name]);s<=n&&(s=n)}break;case"min":if(o.length>0){n=o[0][t.name];for(let e=1;e<o?.length;e++)n>=o[e][t.name]&&(n=o[e][t.name]);s=n}}return s}function E(e,t){let a=0;switch(t){case"sum":a=e.reduce((e,t)=>e+t,0),a=f.default.normalizeFloat(a,6);break;case"average":a=e.reduce((e,t)=>e+t,0)/e.length,a=f.default.normalizeFloat(a,6);break;case"max":a=Math.max(...e);break;case"min":a=Math.min(...e)}return a}function R(e,t){let a=[];if("object"===t.valueType){const n=new Set;for(const r of e)n.has(r[t.name].id)||(n.add(r[t.name].id),a.push(r[t.name]))}else a=[...new Set(e.map(e=>e[t.name]))];return a}function $(e,t,a){return e.filter(e=>"object"===t.valueType?e[t.name].id===a.id:e[t.name]===a)}function T(e){for(const t of e)t.hasSub?T(t.children):t.children=[]}function N(e,t){return e.lastIndexOf("WHERE")>e.lastIndexOf("FROM")?O(t,!0):"\nWHERE "+O(t)}function O(e,t=!1){const a=e.join("");return t?a:a.substring(5)}t.default={async getSettings(e,t,a){const n=e.params.id;if(!n||"string"!=typeof n||36!==n.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(n,{attributes:{exclude:["dataQuery"]}}).then(e=>{e?t.status(o.StatusCodes.OK).send(e):(i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`}))}).catch(e=>{i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findByPk controller`,{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async getResult(e,t,a){let n={...e.body};if(!n.id||"string"!=typeof n.id||36!==n.id.length)return i.default.error(`Error in ${l.default.models.ReportSetting.options.name?.plural} findItem controller`,{meta:"Report id is not correct!"}),void t.status(o.StatusCodes.BAD_REQUEST).send({message:"Report id is not correct!"});await l.default.models.ReportSetting.findByPk(n.id).then(async a=>{if(a){let o;n.query=a.dataQuery,n.externalData=a.externalData,n.externalUsername=a.externalUsername,n.externalPassword=a.externalPassword,n.externalServer=a.externalServer,n.externalPort=a.externalPort,n.externalDatabase=a.externalDatabase,n.externalDialect=a.externalDialect,n.externalDateKind=a.externalDateKind,n.externalDateFormat=a.externalDateFormat,n.fields=function(e){let t=[];for(const a of e)a.isGroup?t=t.concat(a.fields):t.push(a);return t}(n.fields),function(e){if(e.sqlFilters=[],e.sqlReplacements={},"without"!==e.period.type){let t,a,n;"date"===e.period.type?(t=new Date(e.period.date).setHours(0,0,0,0),a=new Date(e.period.date).setHours(23,59,59,999),n=new Date(e.period.date),e.externalData&&"default"===e.externalDateKind?e.sqlReplacements.date=new Date(n).toLocaleDateString():e.sqlReplacements.date=new Date(n).toISOString()):"dateTime"===e.period.dateType?(t=new Date(e.period.dateFrom),a=new Date(e.period.dateTo)):(t=new Date(e.period.dateFrom).setHours(0,0,0,0),a=new Date(e.period.dateTo).setHours(23,59,59,999)),e.externalData&&"default"===e.externalDateKind?(e.sqlReplacements.dateFrom=new Date(t).toLocaleDateString(),e.sqlReplacements.dateTo=new Date(a).toLocaleDateString()):(e.sqlReplacements.dateFrom=new Date(t).toISOString(),e.sqlReplacements.dateTo=new Date(a).toISOString())}let t="";const a=e.filters;for(let n of a){let a=n.path;if("filled"===n.operator)t=`${a} IS NOT NULL`;else if("notFilled"===n.operator)t=`${a} IS NULL`;else if("object"===n.valueType)if("inList"===n.operator||"notInList"===n.operator){let e=[];for(let t of n.value)e.push(`'${t.id}'`);t=`${a} ${"inList"===n.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=n.value?`${a} ${n.operator} '${n.value.id}'`:`${a} IS NULL`;else if("enum"===n.valueType)if("inList"===n.operator||"notInList"===n.operator){let e=[];for(let t of n.value)e.push(`'${t}'`);t=`${a} ${"inList"===n.operator?" IN ":"NOT IN "} (${e.toString()})`}else t=`${a} ${n.operator} '${n.value}'`;else if("text"===n.valueType)t="iLike"===n.operator?`${a} LIKE '%${n.value}%'`:"notILike"===n.operator?`${a} NOT LIKE '%${n.value}%'`:a+n.operator+"'"+n.value+"'";else if("date"===n.valueType)if("between"===n.operator){if(n.value?.[0]&&n.value?.[1]){let e="",s="";if("dateTime"===n.dateType)e=(0,r.default)(n.value[0],"DD.MM.YYYY HH:mm:ss").toISOString(),s=(0,r.default)(n.value[1],"DD.MM.YYYY HH:mm:ss").toISOString();else{const t=(0,r.default)(n.value[0],"DD.MM.YYYY").toDate(),a=(0,r.default)(n.value[1],"DD.MM.YYYY").toDate();e=(0,r.default)(t.setHours(0,0,0,0)).toISOString(),s=(0,r.default)(a.setHours(23,59,59,999)).toISOString()}t=`${a} ${n.operator} '${e}' and '${s}'`}}else t="dateTime"===n.dateType?`${a} ${n.operator} '${(0,r.default)(n.value,"DD.MM.YYYY HH:mm:ss").toISOString()}'`:`${a} ${n.operator} '${(0,r.default)(n.value,"DD.MM.YYYY").toISOString()}'`;else if("number"===n.valueType&&"between"===n.operator){if(n.value?.[0]&&n.value?.[1]){let e=n.value[0],r=n.value[1];t=`${a} ${n.operator} '${e}' and '${r}'`}}else t=a+n.operator+n.value;e.sqlFilters.push(" AND "+t)}}(n);const c=`reports/${a.name}/server.module.js`,d=`${process.cwd()}/src/modules/${c}`;u.default.existsSync(d)&&(o=require(d));let f=[];f=o?.onComposeResult&&"function"==typeof o?.onComposeResult?await o.onComposeResult(e,a,n):await async function(e,t,a){await async function(e,t){const a=await(0,m.default)(e);let n=t.query.match(/\{([^}]+)\}/g);if(n){let e,r=n.map(e=>e.slice(1,-1));for(const n of r){const r=a.find(e=>e.name===n);r&&(t.query=t.query.replace(`{${n}}`,n),e=e?`${e}, ${n} as (${r.query})`:`with ${n} as (${r.query})`,r.params&&(t.sqlReplacements=Object.assign(t.sqlReplacements,r.params)))}e&&(t.query=`${e} ${t.query}`)}}(e,t);const n=t.query.lastIndexOf("ORDER BY"),r=t.query.lastIndexOf("GROUP BY"),o=t.query.lastIndexOf("HAVING"),i=t.query.lastIndexOf("FROM");let u=t.query.length,c=!1,d=[{name:"ORDER BY",index:n},{name:"HAVING",index:o},{name:"GROUP BY",index:r}];if(d=d.filter(e=>e.index>i),d.length>0&&(c=!0,u=Math.min(...d.map(e=>e.index))),t.sqlFilters.length>0&&(t.query=c?function(e,t,a){const n=e.substring(0,a),r=e.substring(a);return`${n} ${N(e,t)} \n${r}`}(t.query,t.sqlFilters,u):t.query+N(t.query,t.sqlFilters)),a?.beforeQuery&&"function"==typeof a?.beforeQuery&&await a.beforeQuery(e,t),!0===t.externalData){const e={userName:t.externalUsername,password:t.externalPassword,host:t.externalServer,port:Number(t.externalPort),database:t.externalDatabase,dialect:t.externalDialect,pool:{max:5,min:0,acquire:3e4,idle:1e4}},a=new p.Sequelize(e.database,e.userName,e.password,{host:e.host,port:e.port,dialect:e.dialect,pool:{max:e.pool.max,min:e.pool.min,acquire:e.pool.acquire,idle:e.pool.idle}});return await a.query(t.query,{type:s.QueryTypes.SELECT,replacements:t.sqlReplacements})}return await l.default.query(t.query,{type:s.QueryTypes.SELECT,replacements:t.sqlReplacements})}(e,n,o);let $=await async function(e,t){let a=[],n=0;for(const s of e){n+=1;const e={};for(const a of t)if(!0===a.rowNumber)e[a.name]=n;else if("date"===a.valueType){let t="DD.MM.YYYY HH:mm:ss";"date"===a.dateType&&(t="DD.MM.YYYY"),a.format&&""!==a.format&&(t=a.format),e[a.name]=s[a.name]?(0,r.default)(s[a.name]).format(t):""}else if("number"===a.valueType){let t=s[a.name];if(t&&a.format&&""!==a.format)try{const n=JSON.parse(a.format);n.NFD&&(t=Number(t),t=t.toFixed(n.NFD)),e[a.name]=t}catch(t){e[a.name]="0",i.default.error("Error in Reports getResult controller",{meta:t})}else e[a.name]=t}else if("object"===a.valueType)if(a.attribs){e[a.name]={};for(const t of a.attribs)e[a.name][t.name]=s[t.path]}else e[a.name]={id:void 0,name:void 0};else e[a.name]=s[a.name];a.push(e)}return a}(f,n.fields),O=$.length;n.sorts?.length>0&&function(e,t,a){e.sort((e,n)=>{for(const s of t){let t,o;"object"===s.valueType?(t=e[s.name]?.name||"",o=n[s.name]?.name||""):(t=e[s.name]||"",o=n[s.name]||"");let i=0;if("date"===s.valueType)if(a.externalData&&"default"===a.externalDateKind&&a.externalDateFormat&&a.externalDateFormat.length>0){const e=(0,r.default)(t,a.externalDateFormat).toDate(),n=(0,r.default)(o,a.externalDateFormat).toDate();i=e.getTime()-n.getTime()}else{const e=new Date(t),a=new Date(o);i=e.getTime()-a.getTime()}else"number"==typeof t&&"number"==typeof o?i=t-o:"string"==typeof t&&"string"==typeof o&&(i=t.localeCompare(o));if(0!==i)return"asc"===s.direction?i:-1*i}return 0})}($,n.sorts,n),n.cols=[],n.colGroups?.length>0&&(n.cols=R($,n.colGroups[0]));let D=!1;n.rowGroups?.length>0?($.length>n.maxLimit&&($=[],D=!0),$=function(e,t){let a=[];b(t,0,e,a);let n=!1;for(let e=t.rowGroups.length-1;e>0;e--)if(t.rowGroups[e].withParent){const t=w(a,e-1);t&&(a=t),n=!0}return n&&h(a,0,t),function(e,t){if(0!==e.calcs.length){if(e.colGroups.length>0){const a=e.colGroups[0];for(const n of e.cols)for(const r of e.calcs)for(const e of t)S(e,r,{name:a.name,valueType:a.valueType,value:n})}else for(const a of e.calcs)for(const e of t)S(e,a);_(t)}}(t,a),a}($,n),function(e,t){const a=e.filter(e=>!0===e.rowNumber);for(const e of a){let a=1;for(const n of t)if(!0===n.hasSub)a=g(n.children,e,a);else for(const t of n.children)t[e.name]=a,a++}}(n.fields,$),O=y($,1)):function(e,t,a=1){const n=e.filter(e=>!0===e.rowNumber);for(const e of n)for(const n of t)n[e.name]=a,a++}(n.fields,$);const C=[];!0===n.showYTotal&&function(e,t,a){if(0!==e.calcs?.length)if(e.colGroups?.length>0){const n=e.colGroups[0].valueType;for(const r of e.cols)for(const s of e.calcs){const e=[];for(const a of t){let t=a.totals.find(e=>e.name===s.name&&("object"===n?e.group.id===r.id:e.group===r));t&&e.push(t.value)}const o=E(e,s.expression);a.push({...s,value:o,group:r})}}else for(const n of e.calcs)if(e.rowGroups?.length>0){const e=[];for(const a of t){const t=a.totals.find(e=>e.name===n.name);t&&e.push(t.value)}const r=E(e,n.expression);a.push({...n,value:r})}else{const e=v(t,n);a.push({...n,value:e})}}(n,$,C),n.rowGroups?.length>0&&n.hideDetails&&(T($),O=y($,1)),0===n.rowGroups?.length&&n.limit&&n.page&&($=function(e,t,a){const n=(a-1)*t,r=n+t;return e.slice(n,r)}($,n.limit,n.page));let A={resultData:$,cols:n.cols,totals:C,total:O-1,limitError:D};A?t.status(200).send(A):(console.error("Bad request"),t.status(400).send({message:"Bad request"}))}else i.default.error("Error in reports getResult controller",{meta:`${l.default.models.ReportSetting.options.name?.plural} not found`}),t.status(o.StatusCodes.NOT_FOUND).send({message:`${l.default.models.ReportSetting.options.name?.plural} not found`})}).catch(e=>{i.default.error("Error in reports getResult controller",{meta:e}),t.status(o.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e.message})})},async generateExcel(e,t){c.default.generateExcel(e,t)},async generatePdf(e,t){d.default.generatePdf(e,t)}}},8403:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(6980)),s=a(7138),o=n(a(2282)),i=n(a(829)),l=n(a(5788)),u=n(a(8473));t.default={async login(e,t,a){let n=e.session.passport;const r=await u.default.getLicense(e.sessionID);e.session.regenerate(a=>{e.session.passport=n,e.session.license=r,e.session.clientType=e.body?.clientType||null,e.session.save(a=>{const n=i.default.sign({id:e.user.id},"RGPRIVATEKEY",{expiresIn:"360h"}),o={isAuthenticated:!0,result:n,token:n,id:e.user.id,email:e.user.email,login:e.user.login,fullRights:e.user.fullRights,use2FA:e.user.use2FA,useCustomerAccess:e.user.useCustomerAccess,name:e.user.name,externalUser:e.user.externalUser,language:e.user.language,forwarderId:e.user.forwarderId,tokenElectron:e.user.tokenElectron,license:r};t.status(s.StatusCodes.OK).send(o)})})},async session(e,t,a){const n={isAuthenticated:!1};if(e.session.passport?.user)try{const a=await l.default.models.User.findOne({where:{id:e.session.passport.user}});a?(n.isAuthenticated=!0,n.id=a.id,n.name=a.name,n.login=a.login,n.fullRights=a.fullRights,n.use2FA=a.use2FA,n.useCustomerAccess=a.useCustomerAccess,n.externalUser=a.externalUser,n.email=a.email,n.language=a.language,n.license=e.session.license,n.forwarderId=a.forwarderId,t.status(s.StatusCodes.OK).send({result:n,message:"OK"})):t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})}catch(e){t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})}else t.status(s.StatusCodes.UNAUTHORIZED).send({result:n,message:"Authentication failed"})},async logout(e,t,a){if(e.logout(function(e){if(e)return a(e)}),!e.session)return e.isUnauthenticated()?void t.status(s.StatusCodes.OK).send("Logged out successfully"):void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not log out");e.logout(e=>{e?t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send("Server error - could not clear out session info completely"):t.status(s.StatusCodes.OK).send("Logged out successfully")})},async register(e,t,a){try{const a=await r.default.register(e.body);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in register Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async confirmEmailAddress(e,t,a){try{const a=await r.default.confirmEmailAddress(e.params.token);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in confirmEmailAddress Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resendEmailAddressConfirmationLink(e,t,a){try{const a=await r.default.resendEmailAddressConfirmationLink(e.query.email);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in resendEmailAddressConfirmationLink Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async forgotPassword(e,t,a){try{const a=e.headers.origin||e.headers.referer||process.env.DEFAULT_CLIENT_URL,n=await r.default.forgotPassword(e.body.email,a);return void t.status(n.httpStatus).send(n.result)}catch(e){return o.default.error("Error in forgotPassword Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async validatePasswordResetToken(e,t,a){try{const a=await r.default.isPasswordResetTokenValid(e.params.token);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in validatePasswordResetToken Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}},async resetPassword(e,t,a){const{token:n,newPassword:i}=e.body;if(n&&i)try{const a=await r.default.resetPassword(e.body.token,e.body.newPassword);return void t.status(a.httpStatus).send(a.result)}catch(e){return o.default.error("Error in resetPassword Controller",{meta:e}),void t.status(s.StatusCodes.INTERNAL_SERVER_ERROR).send({message:e})}else t.status(s.StatusCodes.BAD_REQUEST).send({message:"Token and new password are required"})}}},8461:e=>{e.exports=require("multer")},8473:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(5788)),s=a(9031);t.default={async getLicense(e){const t=process.env.LIC_NUMBER,a=process.env.LIC_COUNT,n={active:!1,number:"none"};if(!t||!a)return n;const o=await r.default.query('SELECT COUNT(id) as auth_users FROM session WHERE sid != :sessionID AND "licNumber" IS NOT NULL',{type:s.QueryTypes.SELECT,replacements:{sessionID:e}});let i=0;return o.length>0&&(i=o[0].auth_users),i>=Number(a)?n.number=null:(n.active=!0,n.number=t),n}}},8577:e=>{e.exports=require("cors")},8608:e=>{e.exports=require("exceljs")},8876:e=>{e.exports=require("ieee754")},8894:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=a(9031),s=n(a(5788));t.default={async getUserExecutorRoles(e){let t=await s.default.models.TaskExecutor.findAll({where:{executorId:e},attributes:["parentId"]}).catch(e=>(console.error(e),[]));return t?(t=JSON.parse(JSON.stringify(t)),t):[]},async getVendorsAndCustomersFilter(e){let t=[];if(e){const a=await s.default.models.VendorsAndCustomer.findAll({where:{counterpartyId:{[r.Op.in]:e}}});if(a)for(let e of a)t.push(e.id)}return t},async getCustomerFilter(e){let t=[],a=!1;if(e.user){a=!0!==e.user.useCustomerAccess;const n=e.user.id,r=await s.default.models.UserCustomer.findAll({where:{parentId:n}});if(r)for(let e of r)t.push(e.customerId)}return{fullAccess:a,counterparties:t}},async getForwarderFilter(e){let t,a=!1;if(e.user){a=!0!==e.user.externalUser;try{const a=e.user.forwarderId;if(a){const e=await s.default.models.VendorsAndCustomer.findAll({where:{id:a}});t=e[0]?.dataValues?.id}}catch(e){console.error("Forwarder lookup failed:",e)}}return{fullAccess:a,forwarder:t}},async getRoleGroups(e){let t=[];if(e.user&&!0!==e.user.fullRights){const a=e.user.id;t=(await s.default.models.RoleGroupUser.findAll({where:{userId:a},attributes:["parentId"]})).map(e=>e.parentId)}return t}}},9031:e=>{e.exports=require("sequelize")},9151:function(e,t,a){var n=a(8287).hp,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(a(6982)),o="aes-256-cbc",i=s.default.scryptSync(process.env.CRYPTO_SECRET_KEY_AUTO_LOGIN||"default-salt","salt",32);t.default={encrypt(e){const t=s.default.randomBytes(16),a=s.default.createCipheriv(o,i,t);let r=a.update(e,"utf8","hex");r+=a.final("hex");const l=JSON.stringify({iv:t.toString("hex"),encryptedData:r});return n.from(l).toString("base64")},decrypt(e){const t=n.from(e,"base64").toString("utf8"),a=JSON.parse(t),r=n.from(a.iv,"hex"),l=s.default.createDecipheriv(o,i,r);let u=l.update(a.encryptedData,"hex","utf8");return u+=l.final("utf8"),JSON.parse(u)}}},9239:e=>{e.exports=require("terser")},9816:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(7252)),s=n(a(8278)),o=n(a(8403)),i=r.default.Router(),l="auth";i.route(`/${l}/login`).post(s.default.authenticate("login"),o.default.login),i.route(`/${l}/session`).get(o.default.session),i.route(`/${l}/logout`).get(o.default.logout),i.route(`/${l}/register`).post(o.default.register),i.route(`/${l}/confirm_email_address/:token`).get(o.default.confirmEmailAddress),i.route(`/${l}/resend_email_address_confirmation_link`).get(o.default.resendEmailAddressConfirmationLink),i.route(`/${l}/forgot_password`).post(o.default.forgotPassword),i.route(`/${l}/validate_password_reset_token/:token`).get(o.default.validatePasswordResetToken),i.route(`/${l}/reset_password`).post(o.default.resetPassword),t.default=i},9876:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.accessLogsController=void 0;const r=n(a(6928)),s=n(a(9896)),o=n(a(4716)),i=n(a(2282)),l=`${process.cwd()}/logs/access`;async function u(e,t){try{const a=s.default.readFileSync(e,"utf8").split(/\r?\n/),n=[];for(const e of a)if(""!==e.trim()){const a=JSON.parse(e);if(t){let e=!0;for(const n in t)if("user"===n){if(a[n]?.id!==t[n]?.id){e=!1;break}}else if(a[n]!==t[n]){e=!1;break}e&&n.push(a)}else n.push(a)}return n}catch(t){throw new Error(`Failed to process file: ${e}. Error: ${t.message}`)}}function c(e,t,a){const n=e.slice();return n.sort((e,n)=>{const r=e[t],s=n[t];if(a){if(r>s)return-1;if(r<s)return 1}else{if(r<s)return-1;if(r>s)return 1}return 0}),n}function d(e,t){if(e&&"object"==typeof e){if(JSON.stringify(e).match(t))return!0}else if(e&&e.toString().replace(/\s/g,"").match(t))return!0;return!1}t.accessLogsController={async getFilesInfo(e,t){try{const a=JSON.parse(e.query.filter||"{}"),n=JSON.parse(e.query.pagination||"{}"),i=JSON.parse(e.query.sort||"{}");if(!a.period)return void t.status(400).send({message:"Period filter is required"});const f=(0,o.default)(a.period[0]).format("YYYYMMDD"),m=(0,o.default)(a.period[1]).format("YYYYMMDD"),p=await async function(e){return new Promise((t,a)=>{s.default.readdir(e,(n,r)=>{if(n)return a(new Error(`Failed to read directory: ${e}`));t(r)})})}(l);if(!p||0===p.length)return void t.status(404).send({message:"No log files found"});const h=function(e,t,a){return e.filter(e=>{const n=e.slice(0,8);return n===t||n===a||n>t&&n<a})}(p,f,m);if(0===h.length)return void t.status(404).send({message:"No log files found for the specified period"});let y=[];for(const e of h){const t=r.default.join(l,e),n=await u(t,a.searchFilter);y.push(...n)}if(a.searchStr&&(y=function(e,t,a){const n=t.replace(/\s/g,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=new RegExp(n,"i");return e.filter(e=>{let t=!1;for(const n of a){const a=n.split(".");if(a.length>1){if(e[a[0]]&&e[a[0]][a[1]]&&d(e[a[0]][a[1]],r)){t=!0;break}}else if(e[n]&&d(e[n],r)){t=!0;break}}return t})}(y,a.searchStr.searchText,a.searchStr.searchColumns)),Array.isArray(i))for(const e of i)e.sortBy&&(y=c(y,e.sortBy,e.sortDesc));else i.sortBy&&(y=c(y,i.sortBy,i.sortDesc));y=function(e,t,a){const n=(a-1)*t,r=n+t,s=e.slice(n,r);return{totalItems:e.length,currentPage:a,data:s}}(y,n.limit,n.page),t.status(200).send(y)}catch(e){i.default.error("Error in accessLogsController.getFilesInfo",{meta:e}),t.status(500).send({message:"Internal server error"})}}}},9880:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(a(9896)),s=a(9031);async function o(e,t){const a=await e.findAll({attributes:{exclude:["module"]},order:["id"]});i(JSON.parse(JSON.stringify(a)),t)}function i(e,t){const a=JSON.stringify(e,null,4),n=`src/database/initialdata/${t}.json`;r.default.writeFileSync(n,a)}t.default={async updateInitialData(e,t,a={}){const n="src/modules",s=(l=e.tableName,["app_objects","view_settings","report_settings","data_processors","scheduled_jobs","rest_api","components","print_forms","common_modules"].includes(l));var l;if("delete"===a.event&&s)return function(e,t,a){let n;switch(e){case"app_objects":n=`${t.type}s/${t.name}`;break;case"view_settings":n=`${t.appObject.type}s/${t.appObject.name}/views/${t.name}`;break;case"report_settings":n=`reports/${t.name}`;break;case"data_processors":n=`dataProcessors/${t.name}`;break;case"scheduled_jobs":n=`scheduledJobs/${t.name}`;break;case"components":n=`components/${t.name}`;break;case"common_commands":n=`commonCommands/${t.name}`;break;case"rest_api":n=`restApi/${t.name}`;break;case"print_forms":n=`${t.appObject.type}s/${t.appObject.name}/printForms/${t.name}`;break;case"common_modules":n=`commonModules/${t.name}.js`}if(n){const e=`${a}/${n}`;r.default.existsSync(e)&&r.default.rmSync(e,{force:!0,recursive:!0})}}(e.tableName,a.oldValue,n),void("common_modules"===e.tableName&&o(e,t));const u=[],c=[];if(e.associations){for(const t in e.associations)if(e.associations[t].isMultiAssociation){if(e.associations[t].options._noTablePart)continue;let a=e.associations[t].target;u.push({model:a,as:t}),c.push([{model:a,as:t},"rowNumber","ASC"])}"view_settings"!==e.tableName&&"print_forms"!==e.tableName||e.associations.appObject&&u.push({model:e.associations.appObject.target,as:"appObject"})}const d={};s&&(d.id=a?.objectId);try{const s=await e.findAll({where:d,order:["id",...c],include:u}),l=JSON.parse(JSON.stringify(s));"app_objects"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,...o}=n,i=`${t}/${o.type}s/${o.name}`;if("update"===a.event&&(a.oldValue?.name!==a.newValue?.name||a.oldValue?.type!==a.newValue?.type)){const e=`${t}/${a.oldValue?.type}s/${a.oldValue?.name}`;try{r.default.renameSync(e,i)}catch(e){console.error(e)}}r.default.existsSync(i)||r.default.mkdirSync(i,{recursive:!0});const l=`${i}/object.struct.json`,u=JSON.stringify(o,null,4);if(r.default.writeFile(l,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(void 0!==e){const t=`${i}/client.module.js`;e?r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}if(void 0!==s){const e=`${i}/client.v3.module.js`;s?r.default.writeFile(e,`export default ${s}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"serverModule")){const e=`${i}/server.module.js`;a.serverModule?r.default.writeFile(e,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}if(Object.prototype.hasOwnProperty.call(a,"info")){const e=`${i}/object.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}}(l,n,a):"view_settings"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,appObject:i,...l}=n,u=`${t}/${i.type}s/${i.name}/views/${l.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/${i.type}s/${i.name}/views/${a.oldValue?.name}`;try{r.default.renameSync(e,u)}catch(e){console.error(e)}}r.default.existsSync(u)||r.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/view.struct.json`;if(r.default.writeFile(d,c,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const f=`${u}/client.module.js`;e?r.default.writeFile(f,`export default ${e}`,function(e){e&&console.error(e)}):r.default.existsSync(f)&&r.default.rmSync(f);const m=`${u}/client.v3.module.js`;s?r.default.writeFile(m,s,function(e){e&&console.error(e)}):r.default.existsSync(m)&&r.default.rmSync(m);const p=`${u}/server.module.js`;if(o?r.default.writeFile(p,`${o}`,function(e){e&&console.error(e)}):r.default.existsSync(p)&&r.default.rmSync(p),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${u}/view.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}(l,n,a):"report_settings"===e.tableName?function(e,t,a){for(const n of e){const{dataQuery:e,...s}=n,o=`${t}/reports/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/reports/${a.oldValue?.name}`;try{r.default.renameSync(e,o)}catch(e){console.error(e)}}r.default.existsSync(o)||r.default.mkdirSync(o,{recursive:!0});const i=JSON.stringify(s,null,4),l=`${o}/report.struct.json`;if(r.default.writeFile(l,i,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;if(e){const t=`${o}/data.query.sql`;r.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}const u=`${o}/server.module.js`;if(a.serverModule?r.default.writeFile(u,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(u)&&r.default.rmSync(u,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const e=`${o}/report.info.md`;a.info?r.default.writeFile(e,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(e)&&r.default.rmSync(e,{force:!0})}}}(l,n,a):"data_processors"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/dataProcessors/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/dataProcessors/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/processor.struct.json`;r.default.writeFile(o,s,function(e){e&&console.error(e)});const i=`${e}/server.module.js`;a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0})}}(l,n,a):"scheduled_jobs"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/scheduledJobs/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/scheduledJobs/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/job.struct.json`;if(r.default.writeFile(o,s,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/job.info.md`;a.info?r.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}}}(l,n,a):"rest_api"===e.tableName?function(e,t,a){for(const n of e){const e=`${t}/restApi/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/restApi/${a.oldValue?.name}`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}r.default.existsSync(e)||r.default.mkdirSync(e,{recursive:!0});const s=JSON.stringify(n,null,4),o=`${e}/api.struct.json`;if(r.default.writeFile(o,s,function(e){e&&console.error(e)}),a.changeDeletionMark)continue;const i=`${e}/server.module.js`;if(a.serverModule?r.default.writeFile(i,`${a.serverModule}`,function(e){e&&console.error(e)}):r.default.existsSync(i)&&r.default.rmSync(i,{force:!0}),Object.prototype.hasOwnProperty.call(a,"info")){const t=`${e}/api.info.md`;a.info?r.default.writeFile(t,`${a.info}`,function(e){e&&console.error(e)}):r.default.existsSync(t)&&r.default.rmSync(t,{force:!0})}}}(l,n,a):"components"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,...i}=n,l=`${t}/components/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/components/${a.oldValue?.name}`;try{r.default.renameSync(e,l)}catch(e){console.error(e)}}r.default.existsSync(l)||r.default.mkdirSync(l,{recursive:!0});const u=JSON.stringify(i,null,4),c=`${l}/component.struct.json`;if(r.default.writeFile(c,u,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${l}/client.module.js`;r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(s){const e=`${l}/client.v3.module.js`;r.default.writeFile(e,s,function(e){e&&console.error(e)})}if(o){const e=`${l}/server.module.js`;r.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,n,a):"common_commands"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,...o}=n,i=`${t}/commonCommands/${n.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/commonCommands/${a.oldValue?.name}`;try{r.default.renameSync(e,i)}catch(e){console.error(e)}}r.default.existsSync(i)||r.default.mkdirSync(i,{recursive:!0});const l=JSON.stringify(o,null,4),u=`${i}/command.struct.json`;if(r.default.writeFile(u,l,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${i}/client.module.js`;r.default.writeFile(t,`${e}`,function(e){e&&console.error(e)})}if(s){const e=`${i}/client.v3.module.js`;r.default.writeFile(e,s,function(e){e&&console.error(e)})}}}}(l,n,a):"print_forms"===e.tableName?function(e,t,a){for(const n of e){const{module:e,moduleV3:s,serverModule:o,appObject:i,...l}=n,u=`${t}/${i.type}s/${i.name}/printForms/${l.name}`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const e=`${t}/${i.type}s/${i.name}/printForms/${a.oldValue?.name}`;try{r.default.renameSync(e,u)}catch(e){console.error(e)}}r.default.existsSync(u)||r.default.mkdirSync(u,{recursive:!0});const c=JSON.stringify(l,null,4),d=`${u}/form.struct.json`;if(r.default.writeFile(d,c,function(e){e&&console.error(e)}),!a.changeDeletionMark){if(e){const t=`${u}/client.module.js`;r.default.writeFile(t,`export default ${e}`,function(e){e&&console.error(e)})}if(s){const e=`${u}/client.v3.module.js`;r.default.writeFile(e,`export default ${s}`,function(e){e&&console.error(e)})}if(o){const e=`${u}/server.module.js`;r.default.writeFile(e,`${o}`,function(e){e&&console.error(e)})}}}}(l,n,a):"common_modules"===e.tableName?(function(e,t,a){const n=`${t}/commonModules`;r.default.existsSync(n)||r.default.mkdirSync(n,{recursive:!0});for(const n of e){const e=`${t}/commonModules/${n.name}.js`;if("update"===a.event&&a.oldValue?.name!==a.newValue?.name){const n=`${t}/commonModules/${a.oldValue?.name}.js`;try{r.default.renameSync(n,e)}catch(e){console.error(e)}}a.module&&r.default.writeFile(e,`${a.module}`,function(e){e&&console.error(e)})}}(l,n,a),o(e,t)):i(l,t)}catch(e){console.error(e)}},async updatePredefinedInitialData(e){const t=Object.keys(e.model.rawAttributes),a=Object.values(e.model.associations).map(e=>e.foreignKey),n=t.filter(e=>a.includes(e));try{const t=await e.model.findAll({order:["id"],where:{predefinedName:{[s.Op.ne]:null}},attributes:{exclude:n}}),a=JSON.stringify(t,null,4),o=`src/modules/catalogs/${e.name}/predefined.json`;r.default.writeFile(o,a,function(e){e&&console.error(e)})}catch(e){console.error(e)}},async updateEnums(){const e=`${process.cwd()}/src/database/initialdata/enums.json`,t=`${process.cwd()}/src/modules/enums/index.json`,a=JSON.parse(r.default.readFileSync(e,"utf-8")),n={};for(const e of a){const t=e.name;t&&(n[t]=e.values?.map(e=>e.value)||[])}let s={};r.default.existsSync(t)&&JSON.parse(r.default.readFileSync(t,"utf-8"));const o={};for(const[e,t]of Object.entries(n))o[e]=t;r.default.writeFileSync(t,JSON.stringify(o,null,2),"utf-8")}}},9896:e=>{e.exports=require("fs")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(a.exports,a,a.exports,__webpack_require__),a.exports}var __webpack_exports__=__webpack_require__(7927);module.exports=__webpack_exports__})();
|