croswil_markuno 1.0.39 → 1.0.40

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/bin/mu-convcad.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{init as e,database as t}from"croswil_lib";import r from"fs";import o from"path";import i from"minimist";function s(e){e=String(e||"");const t=/^(\d+)\.\.(\d+)$/.exec(e);if(t){var r=parseInt(t[1]),o=parseInt(t[2]),i=[];r>o&&([r,o]=[o,r]);for(var s=r;s<=o;s++)i.push(s+"");return i}if(!/["({[]/.test(e))return e.split(/[,;]/).map((e=>e.trim()));const a=[];let n="",l=0,c=!1;for(let t=0;t<e.length;t++){const r=e[t];if(0===l&&'"'===r&&(0!==t&&"\\"===e[t-1]||(c=!c)),c||("("===r||"["===r||"{"===r?l++:")"!==r&&"]"!==r&&"}"!==r||(l=Math.max(0,l-1))),","!==r&&";"!==r||0!==l||c)n+=r;else{const e=n.trim();a.push(e),n=""}}const d=n.trim();return d&&a.push(d),a.map((e=>(e=e.trim()).startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e))}function a(e,t){const r=e.split("\n"),o=[];let i=!1,s="";for(const e of r){let r=e.trim();if(i)r.endsWith("*/")&&(i=!1);else if(r.startsWith("/*"))i=!0;else if(!i&&r.includes("//")&&(r=r.split("//")[0].trim()),0!==r.length||t)if(s.length>0&&(r=s+" "+r,s=""),r.endsWith("\\")){r=r.slice(0,-1);const e=r.lastIndexOf("//");-1!==e&&(r=r.slice(0,e).trim()),s=r}else o.push(r)}return o}new class{constructor(){this.azzera()}azzera(){this.err=[]}add(e,t){this.err.push({msg:e,row:t})}get(){return this.err}get length(){return this.err.length}toString(){var e=[];for(var t of this.err){let r="object"==typeof t.msg?JSON.stringify(t.msg):t.msg||"";e.push(`${t.row?t.row+":":""}${r}`)}return e.join("\n")}};const n=/^\s*\{(\:)?(var|deriva|valid|formula|header|genera|g|v|f|h)(\s.*)?\}/i;function l(e,t){let r=!1;for(var o=[],i=e;i<t.length;i++){let e=t[i].trim(),d=e.split("//")[0].trim();if(e.startsWith("/*"))r=!0;else if(r&&e.endsWith("*/"))r=!1;else if(!r){if(n.test(e))return{fl:!0,i2:i-1,cols:o};if(d.endsWith("\\"))return{fl:!1};if(e.startsWith(":h ")&&(d=d.substr(3).trim()),!d.startsWith(":"))for(var a=s(d),l=0;l<a.length;l++){var c=a[l].length;a[l].includes(",")&&(c+=2),(!o[l]||o[l]<c)&&(o[l]=c)}}}return{fl:!0,i2:t.length-1,cols:o}}Date.prototype.toInt||(Date.prototype.toInt=function(){const e=this;return e.getDate()+100*(e.getMonth()+1)+1e4*e.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const{Clear:c,Reset:d,Bold:p,Reverse:h,Red:f,Green:u,Yellow:m,Blue:v,Magenta:g,Cyan:$,White:b}=e();var w={FOLDERBASE:"./",DBWORK:"./data/app.db",FOLDERCAT:"./data/mu",FOLDEROUT:"./out",CAT:"cat"};const C=".lasts.markuno";r.existsSync(C)&&(w=JSON.parse(r.readFileSync(C))),w.FOLDERCAD||(w.FOLDERCAD="./cat3cad");var L=i(process.argv);console.log(`----------------------------------------------------------------------------------------\n${p}${$}${p}mu-convcad:${d} Convert data from 3CAD (c) Croswil 2024 v. ${m}1.0.51${d}\n----------------------------------------------------------------------------------------`);const F=`uso: ${p} mu-convcad <nomecatalogo> [opzioni]\n${u}Opzioni:${d}\n ${b} -h, --help${d}${u} mostra l'help\n ${b} -i, --init <folder>${d}${u} cartella di lavoro (default='${w.FOLDERCAT}' ) \n ${b} -c, --cad <folder>${d}${u} cartella cad (default='${w.FOLDERCAD}' ) \n ${b} -r, --reset${d}${u} Cancella tutti i dati precedenti\n ${b} -t, --tipologie${d}${u} Tipologie e Macro tip\n ${b} -a, --abilita${d}${u} Processa abilitazioni\n`;w.FOLDERCAT=L.i||L.init||w.FOLDERCAT,w.FOLDERCAD=L.c||L.cad||w.FOLDERCAD,process.exit(1);const S=L._[2]||void 0;(L.h||L.help||!S)&&(console.log(F),process.exit(0)),w.CAT=S;const y=o.join(w.FOLDERCAT,S),D=o.join(w.FOLDERCAD,S);var E=o.join(D,`${S}.ddb`);r.existsSync(E)||(console.log("manca il database di origine: "+S),process.exit(1)),r.writeFileSync(C,JSON.stringify(w,null,2));const j=[],O=e=>j.push(e),A="select cod cod,des des,memo info from speciali where cat='pro'";function W(e){var t=[];for(var r of e)!r.startsWith('"')&&r.includes(",")&&(r=`"${r}"`),t.push(r);return t.join(",")}function R(e,t){var r=(e=e.replaceAll("\t",",").replaceAll("\r","").replace(/\#vb/gim,"/* VB !not supported").replace(/#endvb/gim,"*/").replace(/\#msg /gim,"!msg ")).split("\n"),o=[],i=!1;return r.forEach(((e,r)=>{e.startsWith("/*")&&(i=!0),i?o.push(e):/^\s*$/.test(e)||(t?(e=e.replace(/\s*\#m\s+(\w+)/im,((e,t)=>"#m ++"+t)),o.push(e)):(/^\s*\d+/.test(e)?e="!t "+e.trim():/^\s*\!parametri/i.test(e)?e=e.replace(/\!parametri /gi,":p "):/^\s*\w+/.test(e)&&(e="#m +"+e.replace(/\s*\_*/,"")),o.push(e))),i&&e.trim().endsWith("*/")&&(i=!1)})),function(e,t){let r=e.split("\n"),o=[],i=0,a=!1,c=!1,d=[];var p=t;p&&(p=(u=l(0,r)).fl)&&(d=u.cols);for(let e=0;e<r.length;e++){let t=r[e],$=t.trim();var h=$.split("//");let b=h[0].trim();h.splice(0,1);let w=h.length?` // ${h.join("//").trim()} `:"";if($.startsWith("/*"))a=!0,o.push($);else if(a&&$.endsWith("*/"))a=!1,o.push($);else if(a)o.push(t);else{var f=n.exec($);if(f){var u;o.push($),i=f[1]?0:1,/^\s*\{(var|deriva|header|v|h)(\s.*)?\}/i.test($)?(p=(u=l(e+1,r)).fl)&&(d=u.cols):p=!1,c=!1;continue}if(p)if(b.startsWith(":")&&!b.startsWith(":h ")||!b)o.push($);else{var m=" ";b.startsWith(":h ")&&(b=b.substr(3).trim(),m=":h ");for(var v=s(b),g=0;g<v.length;g++)v[g].includes(",")&&(v[g]=`"${v[g]}"`),v[g]=v[g].padEnd(d[g]," ");o.push(`${m}${v.join(" , ")} ${w}`)}else{let e=" ".repeat(i>=0?i:0);if(c)o.push(`${e} ${$}`);else{let t="";$.startsWith("#")&&(t=$.substring(1).split(" ")[0].toUpperCase(),$="#"+t+$.substring(t.length+1)),["IF","IFDEF","IFNDEF"].includes(t)?$.indexOf("#",2)<0?(o.push(`${e}${$}`),i++):($=$.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())),o.push(`${e}${$}`)):["FOR","SELECT","FORVAR","VARIANTE","DO"].includes(t)?(o.push(`${e}${$}`),i++):["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(t)&&i>0?o.push(" ".repeat(i>0?i-1:0)+$):["ENDIF","ENDSELECT","LOOP","ENDFOR"].includes(t)?(o.push(" ".repeat(i>0?i-1:0)+$),i--,i<0&&(i=0)):$.startsWith("_ ")||$.startsWith(":")?o.push($):o.push(e+$)}c=b.endsWith("\\")}}}return o.join("\n")}(o.join("\n"))}const x={"-":"sep",T:"var",M:"num",S:"str",C:"yn",L:"hidden",Z:"ny"};function z(e){var t=[];if(!e)return"";for(var r in e)"cod"!=r&&t.push(`${r}=${e[r]}`);return`${e.cod} ${t.join(",")}`}function T(e){var t=e.split(",");if(t[1]||t[2]){var r={};return r.cod=(t[2]||t[1]).trim().toLowerCase(),t[2]&&(r.alias=t[2].trim().toLowerCase()),t[3]&&(r.valid=t[3].trim().toLowerCase()),t[4]&&(r.des=t[4].trim()),t[5]&&(r.visible=t[5].trim().toLowerCase()),x[t[0]]?r.tipo=x[t[0]]:"D"==t[0]?r.tipo="sp."+t[6]:r.tipo=t[0].trim().toUpperCase(),r}}L.r||L.reset?console.log("-> crea catalogo e copia"):console.log("-> aggiorna catalogo");var I=`${w.FOLDERCAT}/mu_${S}.db`;(L.r||L.reset)&&(r.existsSync(y)&&r.rmSync(y,{recursive:!0}),r.existsSync(I)&&r.unlinkSync(I)),r.existsSync(y)||r.mkdirSync(y,{recursive:!0}),r.copyFileSync(E,y+"/"+S+".db");var _=t.db(E),k=(new Date).valueOf(),M=[],N=_.all("select cod cod,des des ,codmet alias,obbl obbligo, memo info from codvar ");for(var B of(console.log("-> varianti",N.length),N)){for(var U=B.info.split(""),J=[],V=[],Y=1;Y<U.length&&U[Y];Y+=2)V.push(U[Y]);if(J.push(`:des ${B.des.trim().toLowerCase()}`),B.obbl&&J.push(":obbligo"),B.alias)M.push(`${B.cod.trim().toLowerCase()} , ${B.alias.trim().toLowerCase()}`);else{J.push(""),J.push(":h "+W(V));var G=_.all("select codopz cod,des des,memo info from varianti where codvar=? order by ordinamento,codopz",B.cod);for(var P of G){V=W([P.cod.trim().toLowerCase(),P.des.trim().toLowerCase(),...P.info.trim().toLowerCase().split("\t")]);J.push(" "+V)}B.cod=B.cod.trim().toLowerCase(),O("var: "+B.cod),r.writeFileSync(`${y}/${B.cod}.var`,J.join("\n"))}}N=_.all("select cod cod,des des,fldef defs from modelli order by cod"),J=[];for(var B of(J.push(":des Modelli\n\n:h Cod, Descrizione\n"),N))J.push(" "+W([B.cod.trim().toLowerCase(),B.des]));r.writeFileSync(`${y}/modelli.var`,J.join("\n")),M=["// Alias Varianti\n\n{v __aliasvar}\n:h variante, alias",...M.sort()],r.writeFileSync(`${y}/_alias.inc`,M.join("\n")),console.log("-> gruppi.ini");var H=o.join(D,"gruppi.ini");if(r.existsSync(H)){N=a(oe=r.readFileSync(H).toString().replaceAll("�","'"),!1);var K={},Z=[];for(var B of N){if(de=/^\s*\[(\w+)\]/i.exec(B))Z=[],K[de[1].trim().toLowerCase()]=Z;else(he=T(B))&&Z.push(z(he))}}var q=Object.keys(K).sort();J=[];for(var Q of(J.push("// includes headers"),q))J.push(""),J.push(`{h ${Q}}`),J.push(...K[Q]);if(r.writeFileSync(o.join(y,"_headers.inc"),J.join("\n")),console.log("-> deriva"),(B=_.get(`${A} and cod='deriva'`)).cod&&B.info){B.info=B.info.trim().toLowerCase().replaceAll("","\n");var X=B.info.split("\n").map((e=>e.trim())).sort();r.writeFileSync(o.join(y,"_deriva.inc"),`// derivazione varianti \n{v deriva}\n:des deriva delle varianti\n :h var=opz,-> var=opz\n \n${X.join("\n")}`)}N=_.all(`${A} and cod like ?`,">>%");for(var B of(console.log("-> macro",N.length),N)){O("mac "+(ge=(ge=B.cod.substr(2).trim().toLowerCase()).replace(/^_*/,"")));var ee=R(B.info.toLowerCase());J=`// ${B.des}\n${ee} \n `;r.writeFileSync(o.join(y,`+${ge}.mu`),J)}var te=r.readdirSync(D);te=te.filter((e=>e.toLowerCase().endsWith(".erg")));var re=0;for(var N of(console.log("-> regole",te.length),te)){var oe=r.readFileSync(o.join(D,N)).toString().replaceAll("\r",""),ie=o.extname(N),se=o.basename(N,ie).trim().toLowerCase();if(!se.includes(".")&&"gene"!=se){var ae={cod:se,des:"",codice:[],header:[],formule:{}},ne=[],le=(J=oe.split("\n"),-1);for(var ce of J){var de;if(de=/^\s*\[(\w+)\]/.exec(ce)){var pe=de[1].toLowerCase();switch(pe){case"info":le=0;break;case"gene":le=1;break;case"grafica":le=2;break;default:ne=[],ae.formule[pe]=ne,le=3}}else 0==le?/^\s*descrizione\s*=/i.test(ce)&&(ae.des=ce.split("=")[1].trim().toLowerCase()):1==le?ce.trim()&&ae.header.push(ce):2==le?ae.codice.push(ce):ne.push(ce)}if(ae.tm=a(ae.codice.join("\n"),!1),ae.tm.length){J=[`// rule ${ae.cod}\n :des ${ae.des||ae.cod}\n `];if(ae.header.length){for(var B of(J.push("{header}"),ae.header)){var he;(he=T(B))&&("G"==he.tipo?(delete he.tipo,J.push(`:g ${z(he)}`)):he.tipo.length>1&&J.push(z(he)))}J.push("{:header}")}for(var fe in ae.formule){X=R((ue=ae.formule[fe]).join("\n"));J.push(`\n{f ${fe}}\n${X}\n{:f}`)}var ue=ae.codice.join("\n");J.push(R(ue)),r.writeFileSync(o.join(y,se+".mu"),J.join("\n")),O(`reg ${++re}: ${ae.cod} - ${ae.des}`)}}}if(L.t||L.tipologie){N=(B=_.get(`${A} and cod=?`,"tipologie")).info.split("").sort();console.log("-> tipologie",N.length);var me={};for(var ve of N){if(ce=(P=ve.trim().toLowerCase()).split(",")[0].trim())if(ce.includes("."))me[(B=ce.split("."))[0]]?me[B[0]][B[1]]=P:console.log("errore tipo",ce);else me[ce]={v:P},(B=_.get(`${A} and cod=?`,`db_${ce}`)).info&&(me[ce].db=R(B.info.trim().toLowerCase().replaceAll("","\n"),!0)),(B=_.get(`${A} and cod=?`,`ll_${ce}`)).info&&(me[ce].list=R(B.info.trim().toLowerCase().replaceAll("","\n"),!0))}r.writeFileSync(y+"/typos.json",JSON.stringify(me,null,2));N=_.all(`${A} and cod like ?`,"M>%");for(var B of(console.log("-> macro tip",N.length),N)){var ge;O("macdb "+(ge=B.cod.substr(2).trim().toLowerCase()));ee=R(B.info.toLowerCase(),!0),J=`// ${B.des}\n${ee} \n `;r.writeFileSync(o.join(y,`++${ge}.mu`),J)}}if(L.a||L.abilita){function Oe(e){var t=[];for(var r="";;){var o=e.lastIndexOf(",",100);if(e.length<100||o<0){t.push(r+e),r.length&&t.push("");break}t.push(r+e.substr(0,o)+", \\"),r=" ",e=e.substr(o+1)}return t.join("\n")}function Ae(e){var t=e.toLowerCase().split(";"),r=e=>e?[...new Set(e.split("*").sort().filter((e=>e.trim())))].join(","):"";return{abilit:r(t[0]),scons:r(t[1]),obs:r(t[2])}}console.log("-> abilitazioni");q={};var $e=(N=_.all("select var var,abilit abilit,codart codart from valartopz order by var,abilit")).length;for(var B of N)if(B.var&&B.abilit&&B.codart){var be=B.var.trim().toLowerCase(),{abilit:we,scons:Ce,obs:Le}=Ae(B.abilit),Fe=B.codart.trim().toLowerCase();q[be]||(q[be]={}),(De=q[be])[we]||(De[we]={scons:Ce,obs:Le,neutri:[],art:[],mod:[]}),De[we].neutri.push(Fe)}var Se=(N=_.all("select var var,abilit abilit,codmod codart from valmodopz order by var,abilit")).length;for(var B of N)if(B.var&&B.abilit&&B.codart){be=B.var.trim().toLowerCase();var{abilit:we,scons:Ce,obs:Le}=Ae(B.abilit);Fe=B.codart.trim().toLowerCase();q[be]||(q[be]={}),(De=q[be])[we]||(De[we]={scons:Ce,obs:Le,neutri:[],art:[],mod:[]}),De[we].mod.push(Fe)}var ye=(N=_.all("select var var,abilit abilit,cod codart from valmodartopz order by var,abilit")).length;for(var B of N)if(B.var&&B.abilit&&B.codart){be=B.var.trim().toLowerCase();var De,{abilit:we,scons:Ce,obs:Le}=Ae(B.abilit);Fe=B.codart.trim().toLowerCase();q[be]||(q[be]={}),(De=q[be])[we]||(De[we]={scons:Ce,obs:Le,neutri:[],art:[],mod:[]}),De[we].art.push(Fe)}for(var be in console.log("-> ab trasforma",$e,Se,ye),q)if(r.existsSync(o.join(y,be+".var"))){J=[];var Ee=q[be];for(var je in Ee){X=Ee[je];J.push("\n\n{limit}"),X.neutri.length&&J.push(Oe(":neutri "+X.neutri.join(","))),X.art.length&&J.push(Oe(":art "+X.art.join(","))),X.mod.length&&J.push(Oe(":mod "+X.mod.join(","))),X.obs&&J.push(Oe(":obs "+X.obs)),X.scons&&J.push(Oe(":scons "+X.obs)),J.push(Oe(":opz "+je))}r.writeFileSync(o.join(y,be+".var.txt"),J.join("\n"))}}k=(new Date).valueOf()-k,console.log("Tempo: ",k+"ms"),_.chiudi();
2
+ import{init as e,database as t}from"croswil_lib";import r from"fs";import o from"path";import i from"minimist";function s(e){e=String(e||"");const t=/^(\d+)\.\.(\d+)$/.exec(e);if(t){var r=parseInt(t[1]),o=parseInt(t[2]),i=[];r>o&&([r,o]=[o,r]);for(var s=r;s<=o;s++)i.push(s+"");return i}if(!/["({[]/.test(e))return e.split(/[,;]/).map((e=>e.trim()));const a=[];let n="",l=0,c=!1;for(let t=0;t<e.length;t++){const r=e[t];if(0===l&&'"'===r&&(0!==t&&"\\"===e[t-1]||(c=!c)),c||("("===r||"["===r||"{"===r?l++:")"!==r&&"]"!==r&&"}"!==r||(l=Math.max(0,l-1))),","!==r&&";"!==r||0!==l||c)n+=r;else{const e=n.trim();a.push(e),n=""}}const d=n.trim();return d&&a.push(d),a.map((e=>(e=e.trim()).startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e))}function a(e,t){const r=e.split("\n"),o=[];let i=!1,s="";for(const e of r){let r=e.trim();if(i)r.endsWith("*/")&&(i=!1);else if(r.startsWith("/*"))i=!0;else if(!i&&r.includes("//")&&(r=r.split("//")[0].trim()),0!==r.length||t)if(s.length>0&&(r=s+" "+r,s=""),r.endsWith("\\")){r=r.slice(0,-1);const e=r.lastIndexOf("//");-1!==e&&(r=r.slice(0,e).trim()),s=r}else o.push(r)}return o}new class{constructor(){this.azzera()}azzera(){this.err=[]}add(e,t){this.err.push({msg:e,row:t})}get(){return this.err}get length(){return this.err.length}toString(){var e=[];for(var t of this.err){let r="object"==typeof t.msg?JSON.stringify(t.msg):t.msg||"";e.push(`${t.row?t.row+":":""}${r}`)}return e.join("\n")}};const n=/^\s*\{(\:)?(var|deriva|valid|formula|header|genera|g|v|f|h)(\s.*)?\}/i;function l(e,t){let r=!1;for(var o=[],i=e;i<t.length;i++){let e=t[i].trim(),d=e.split("//")[0].trim();if(e.startsWith("/*"))r=!0;else if(r&&e.endsWith("*/"))r=!1;else if(!r){if(n.test(e))return{fl:!0,i2:i-1,cols:o};if(d.endsWith("\\"))return{fl:!1};if(e.startsWith(":h ")&&(d=d.substr(3).trim()),!d.startsWith(":"))for(var a=s(d),l=0;l<a.length;l++){var c=a[l].length;a[l].includes(",")&&(c+=2),(!o[l]||o[l]<c)&&(o[l]=c)}}}return{fl:!0,i2:t.length-1,cols:o}}Date.prototype.toInt||(Date.prototype.toInt=function(){const e=this;return e.getDate()+100*(e.getMonth()+1)+1e4*e.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const{Clear:c,Reset:d,Bold:p,Reverse:h,Red:f,Green:u,Yellow:m,Blue:v,Magenta:g,Cyan:$,White:b}=e();var w={FOLDERBASE:"./",DBWORK:"./data/app.db",FOLDERCAT:"./data/mu",FOLDEROUT:"./out",CAT:"cat"};const C=".lasts.markuno";r.existsSync(C)&&(w=JSON.parse(r.readFileSync(C))),w.FOLDERCAD||(w.FOLDERCAD="./cat3cad");var L=i(process.argv);console.log(`----------------------------------------------------------------------------------------\n${p}${$}${p}mu-convcad:${d} Convert data from 3CAD (c) Croswil 2024 v. ${m}1.0.53${d}\n----------------------------------------------------------------------------------------`);const F=`uso: ${p} mu-convcad <nomecatalogo> [opzioni]\n${u}Opzioni:${d}\n ${b} -h, --help${d}${u} mostra l'help\n ${b} -i, --init <folder>${d}${u} cartella di lavoro (default='${w.FOLDERCAT}' ) \n ${b} -c, --cad <folder>${d}${u} cartella cad (default='${w.FOLDERCAD}' ) \n ${b} -r, --reset${d}${u} Cancella tutti i dati precedenti\n ${b} -t, --tipologie${d}${u} Tipologie e Macro tip\n ${b} -a, --abilita${d}${u} Processa abilitazioni\n`;w.FOLDERCAT=L.i||L.init||w.FOLDERCAT,w.FOLDERCAD=L.c||L.cad||w.FOLDERCAD,process.exit(1);const S=L._[2]||void 0;(L.h||L.help||!S)&&(console.log(F),process.exit(0)),w.CAT=S;const y=o.join(w.FOLDERCAT,S),D=o.join(w.FOLDERCAD,S);var E=o.join(D,`${S}.ddb`);r.existsSync(E)||(console.log("manca il database di origine: "+S),process.exit(1)),r.writeFileSync(C,JSON.stringify(w,null,2));const j=[],O=e=>j.push(e),A="select cod cod,des des,memo info from speciali where cat='pro'";function W(e){var t=[];for(var r of e)!r.startsWith('"')&&r.includes(",")&&(r=`"${r}"`),t.push(r);return t.join(",")}function R(e,t){var r=(e=e.replaceAll("\t",",").replaceAll("\r","").replace(/\#vb/gim,"/* VB !not supported").replace(/#endvb/gim,"*/").replace(/\#msg /gim,"!msg ")).split("\n"),o=[],i=!1;return r.forEach(((e,r)=>{e.startsWith("/*")&&(i=!0),i?o.push(e):/^\s*$/.test(e)||(t?(e=e.replace(/\s*\#m\s+(\w+)/im,((e,t)=>"#m ++"+t)),o.push(e)):(/^\s*\d+/.test(e)?e="!t "+e.trim():/^\s*\!parametri/i.test(e)?e=e.replace(/\!parametri /gi,":p "):/^\s*\w+/.test(e)&&(e="#m +"+e.replace(/\s*\_*/,"")),o.push(e))),i&&e.trim().endsWith("*/")&&(i=!1)})),function(e,t){let r=e.split("\n"),o=[],i=0,a=!1,c=!1,d=[];var p=t;p&&(p=(u=l(0,r)).fl)&&(d=u.cols);for(let e=0;e<r.length;e++){let t=r[e],$=t.trim();var h=$.split("//");let b=h[0].trim();h.splice(0,1);let w=h.length?` // ${h.join("//").trim()} `:"";if($.startsWith("/*"))a=!0,o.push($);else if(a&&$.endsWith("*/"))a=!1,o.push($);else if(a)o.push(t);else{var f=n.exec($);if(f){var u;o.push($),i=f[1]?0:1,/^\s*\{(var|deriva|header|v|h)(\s.*)?\}/i.test($)?(p=(u=l(e+1,r)).fl)&&(d=u.cols):p=!1,c=!1;continue}if(p)if(b.startsWith(":")&&!b.startsWith(":h ")||!b)o.push($);else{var m=" ";b.startsWith(":h ")&&(b=b.substr(3).trim(),m=":h ");for(var v=s(b),g=0;g<v.length;g++)v[g].includes(",")&&(v[g]=`"${v[g]}"`),v[g]=v[g].padEnd(d[g]," ");o.push(`${m}${v.join(" , ")} ${w}`)}else{let e=" ".repeat(i>=0?i:0);if(c)o.push(`${e} ${$}`);else{let t="";$.startsWith("#")&&(t=$.substring(1).split(" ")[0].toUpperCase(),$="#"+t+$.substring(t.length+1)),["IF","IFDEF","IFNDEF"].includes(t)?$.indexOf("#",2)<0?(o.push(`${e}${$}`),i++):($=$.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())),o.push(`${e}${$}`)):["FOR","SELECT","FORVAR","VARIANTE","DO"].includes(t)?(o.push(`${e}${$}`),i++):["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(t)&&i>0?o.push(" ".repeat(i>0?i-1:0)+$):["ENDIF","ENDSELECT","LOOP","ENDFOR"].includes(t)?(o.push(" ".repeat(i>0?i-1:0)+$),i--,i<0&&(i=0)):$.startsWith("_ ")||$.startsWith(":")?o.push($):o.push(e+$)}c=b.endsWith("\\")}}}return o.join("\n")}(o.join("\n"))}const x={"-":"sep",T:"var",M:"num",S:"str",C:"yn",L:"hidden",Z:"ny"};function z(e){var t=[];if(!e)return"";for(var r in e)"cod"!=r&&t.push(`${r}=${e[r]}`);return`${e.cod} ${t.join(",")}`}function T(e){var t=e.split(",");if(t[1]||t[2]){var r={};return r.cod=(t[2]||t[1]).trim().toLowerCase(),t[2]&&(r.alias=t[2].trim().toLowerCase()),t[3]&&(r.valid=t[3].trim().toLowerCase()),t[4]&&(r.des=t[4].trim()),t[5]&&(r.visible=t[5].trim().toLowerCase()),x[t[0]]?r.tipo=x[t[0]]:"D"==t[0]?r.tipo="sp."+t[6]:r.tipo=t[0].trim().toUpperCase(),r}}L.r||L.reset?console.log("-> crea catalogo e copia"):console.log("-> aggiorna catalogo");var I=`${w.FOLDERCAT}/mu_${S}.db`;(L.r||L.reset)&&(r.existsSync(y)&&r.rmSync(y,{recursive:!0}),r.existsSync(I)&&r.unlinkSync(I)),r.existsSync(y)||r.mkdirSync(y,{recursive:!0}),r.copyFileSync(E,y+"/"+S+".db");var _=t.db(E),k=(new Date).valueOf(),M=[],N=_.all("select cod cod,des des ,codmet alias,obbl obbligo, memo info from codvar ");for(var B of(console.log("-> varianti",N.length),N)){for(var U=B.info.split(""),J=[],V=[],Y=1;Y<U.length&&U[Y];Y+=2)V.push(U[Y]);if(J.push(`:des ${B.des.trim().toLowerCase()}`),B.obbl&&J.push(":obbligo"),B.alias)M.push(`${B.cod.trim().toLowerCase()} , ${B.alias.trim().toLowerCase()}`);else{J.push(""),J.push(":h "+W(V));var G=_.all("select codopz cod,des des,memo info from varianti where codvar=? order by ordinamento,codopz",B.cod);for(var P of G){V=W([P.cod.trim().toLowerCase(),P.des.trim().toLowerCase(),...P.info.trim().toLowerCase().split("\t")]);J.push(" "+V)}B.cod=B.cod.trim().toLowerCase(),O("var: "+B.cod),r.writeFileSync(`${y}/${B.cod}.var`,J.join("\n"))}}N=_.all("select cod cod,des des,fldef defs from modelli order by cod"),J=[];for(var B of(J.push(":des Modelli\n\n:h Cod, Descrizione\n"),N))J.push(" "+W([B.cod.trim().toLowerCase(),B.des]));r.writeFileSync(`${y}/modelli.var`,J.join("\n")),M=["// Alias Varianti\n\n{v __aliasvar}\n:h variante, alias",...M.sort()],r.writeFileSync(`${y}/_alias.inc`,M.join("\n")),console.log("-> gruppi.ini");var H=o.join(D,"gruppi.ini");if(r.existsSync(H)){N=a(oe=r.readFileSync(H).toString().replaceAll("�","'"),!1);var K={},Z=[];for(var B of N){if(de=/^\s*\[(\w+)\]/i.exec(B))Z=[],K[de[1].trim().toLowerCase()]=Z;else(he=T(B))&&Z.push(z(he))}}var q=Object.keys(K).sort();J=[];for(var Q of(J.push("// includes headers"),q))J.push(""),J.push(`{h ${Q}}`),J.push(...K[Q]);if(r.writeFileSync(o.join(y,"_headers.inc"),J.join("\n")),console.log("-> deriva"),(B=_.get(`${A} and cod='deriva'`)).cod&&B.info){B.info=B.info.trim().toLowerCase().replaceAll("","\n");var X=B.info.split("\n").map((e=>e.trim())).sort();r.writeFileSync(o.join(y,"_deriva.inc"),`// derivazione varianti \n{v deriva}\n:des deriva delle varianti\n :h var=opz,-> var=opz\n \n${X.join("\n")}`)}N=_.all(`${A} and cod like ?`,">>%");for(var B of(console.log("-> macro",N.length),N)){O("mac "+(ge=(ge=B.cod.substr(2).trim().toLowerCase()).replace(/^_*/,"")));var ee=R(B.info.toLowerCase());J=`// ${B.des}\n${ee} \n `;r.writeFileSync(o.join(y,`+${ge}.mu`),J)}var te=r.readdirSync(D);te=te.filter((e=>e.toLowerCase().endsWith(".erg")));var re=0;for(var N of(console.log("-> regole",te.length),te)){var oe=r.readFileSync(o.join(D,N)).toString().replaceAll("\r",""),ie=o.extname(N),se=o.basename(N,ie).trim().toLowerCase();if(!se.includes(".")&&"gene"!=se){var ae={cod:se,des:"",codice:[],header:[],formule:{}},ne=[],le=(J=oe.split("\n"),-1);for(var ce of J){var de;if(de=/^\s*\[(\w+)\]/.exec(ce)){var pe=de[1].toLowerCase();switch(pe){case"info":le=0;break;case"gene":le=1;break;case"grafica":le=2;break;default:ne=[],ae.formule[pe]=ne,le=3}}else 0==le?/^\s*descrizione\s*=/i.test(ce)&&(ae.des=ce.split("=")[1].trim().toLowerCase()):1==le?ce.trim()&&ae.header.push(ce):2==le?ae.codice.push(ce):ne.push(ce)}if(ae.tm=a(ae.codice.join("\n"),!1),ae.tm.length){J=[`// rule ${ae.cod}\n :des ${ae.des||ae.cod}\n `];if(ae.header.length){for(var B of(J.push("{header}"),ae.header)){var he;(he=T(B))&&("G"==he.tipo?(delete he.tipo,J.push(`:g ${z(he)}`)):he.tipo.length>1&&J.push(z(he)))}J.push("{:header}")}for(var fe in ae.formule){X=R((ue=ae.formule[fe]).join("\n"));J.push(`\n{f ${fe}}\n${X}\n{:f}`)}var ue=ae.codice.join("\n");J.push(R(ue)),r.writeFileSync(o.join(y,se+".mu"),J.join("\n")),O(`reg ${++re}: ${ae.cod} - ${ae.des}`)}}}if(L.t||L.tipologie){N=(B=_.get(`${A} and cod=?`,"tipologie")).info.split("").sort();console.log("-> tipologie",N.length);var me={};for(var ve of N){if(ce=(P=ve.trim().toLowerCase()).split(",")[0].trim())if(ce.includes("."))me[(B=ce.split("."))[0]]?me[B[0]][B[1]]=P:console.log("errore tipo",ce);else me[ce]={v:P},(B=_.get(`${A} and cod=?`,`db_${ce}`)).info&&(me[ce].db=R(B.info.trim().toLowerCase().replaceAll("","\n"),!0)),(B=_.get(`${A} and cod=?`,`ll_${ce}`)).info&&(me[ce].list=R(B.info.trim().toLowerCase().replaceAll("","\n"),!0))}r.writeFileSync(y+"/typos.json",JSON.stringify(me,null,2));N=_.all(`${A} and cod like ?`,"M>%");for(var B of(console.log("-> macro tip",N.length),N)){var ge;O("macdb "+(ge=B.cod.substr(2).trim().toLowerCase()));ee=R(B.info.toLowerCase(),!0),J=`// ${B.des}\n${ee} \n `;r.writeFileSync(o.join(y,`++${ge}.mu`),J)}}if(L.a||L.abilita){function Oe(e){var t=[];for(var r="";;){var o=e.lastIndexOf(",",100);if(e.length<100||o<0){t.push(r+e),r.length&&t.push("");break}t.push(r+e.substr(0,o)+", \\"),r=" ",e=e.substr(o+1)}return t.join("\n")}function Ae(e){var t=e.toLowerCase().split(";"),r=e=>e?[...new Set(e.split("*").sort().filter((e=>e.trim())))].join(","):"";return{abilit:r(t[0]),scons:r(t[1]),obs:r(t[2])}}console.log("-> abilitazioni");q={};var $e=(N=_.all("select var var,abilit abilit,codart codart from valartopz order by var,abilit")).length;for(var B of N)if(B.var&&B.abilit&&B.codart){var be=B.var.trim().toLowerCase(),{abilit:we,scons:Ce,obs:Le}=Ae(B.abilit),Fe=B.codart.trim().toLowerCase();q[be]||(q[be]={}),(De=q[be])[we]||(De[we]={scons:Ce,obs:Le,neutri:[],art:[],mod:[]}),De[we].neutri.push(Fe)}var Se=(N=_.all("select var var,abilit abilit,codmod codart from valmodopz order by var,abilit")).length;for(var B of N)if(B.var&&B.abilit&&B.codart){be=B.var.trim().toLowerCase();var{abilit:we,scons:Ce,obs:Le}=Ae(B.abilit);Fe=B.codart.trim().toLowerCase();q[be]||(q[be]={}),(De=q[be])[we]||(De[we]={scons:Ce,obs:Le,neutri:[],art:[],mod:[]}),De[we].mod.push(Fe)}var ye=(N=_.all("select var var,abilit abilit,cod codart from valmodartopz order by var,abilit")).length;for(var B of N)if(B.var&&B.abilit&&B.codart){be=B.var.trim().toLowerCase();var De,{abilit:we,scons:Ce,obs:Le}=Ae(B.abilit);Fe=B.codart.trim().toLowerCase();q[be]||(q[be]={}),(De=q[be])[we]||(De[we]={scons:Ce,obs:Le,neutri:[],art:[],mod:[]}),De[we].art.push(Fe)}for(var be in console.log("-> ab trasforma",$e,Se,ye),q)if(r.existsSync(o.join(y,be+".var"))){J=[];var Ee=q[be];for(var je in Ee){X=Ee[je];J.push("\n\n{limit}"),X.neutri.length&&J.push(Oe(":neutri "+X.neutri.join(","))),X.art.length&&J.push(Oe(":art "+X.art.join(","))),X.mod.length&&J.push(Oe(":mod "+X.mod.join(","))),X.obs&&J.push(Oe(":obs "+X.obs)),X.scons&&J.push(Oe(":scons "+X.obs)),J.push(Oe(":opz "+je))}r.writeFileSync(o.join(y,be+".var.txt"),J.join("\n"))}}k=(new Date).valueOf()-k,console.log("Tempo: ",k+"ms"),_.chiudi();
package/bin/mu.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import e from"fs";import t from"path";import{init as a,checkdb as r,database as i,setstruttura as s,insertorupdate as n}from"croswil_lib";import o from"minimist";function c(e){let t="";if("string"==typeof e||"number"==typeof e)t=e+"";else if("object"==typeof e&&e){const a=Object.keys(e).sort(),r="\0";t=a.map((t=>`${t}${r}${String(e[t])}`)).join(r)}let a=333941315,r=2218511855;for(let e=0;e<t.length;e++){const i=t.charCodeAt(e);a=(a<<5)-r+i>>>0,r=(r<<3)-a+i>>>0}return a.toString(16)+r.toString(16)}function l(e){if(e&&"object"==typeof e){let t=e.stack?.toString().replace(/^.*?node_modules.*$/gim,"")||e.message||"";t=t.replaceAll("/","_").replaceAll(".js","").replaceAll("\n\n","\n").replace(/\;\s+/gi,"\n"),e=t}return(e=e.replace(/sqlite/gi,"SQL ")).replaceAll(";",",").trim()}let f,h,d,u,v,m;const p=(...e)=>{m?m(e):console.log(...e)};function g(e,t,a,r,i,s){h=e,f=t,d=a,u=r,v=i,m=s}const w=()=>(new Date).valueOf();function b(e){return(e||"").trim().toLowerCase()}function $(e,t="="){var a=(e=e||"").indexOf(t);return a>=0?{v:b(e.substring(0,a)),o:e.substring(a+t.length).trim(),fl:!0}:{v:b(e),o:"",fl:!1}}function y(e,cat){if((e=(e||"").trim()).indexOf("/")>0){var t=e.split("/");cat=t[0]||"",e=t[1]||""}if(!cat)throw new Error("manca il catalogo per "+e);return{name:e,cat:cat=x(cat)}}function x(e){if(!(e=(e||"").trim())||!/^(?:(\w|\-|\_|\+|\.))+$/im.test(e)){throw new Error(`nome non valido: |${e}| \n deve contenere solo lettere, _, e numeri`)}return e.toLowerCase()}function E(e){e=String(e||"");const t=/^(\d+)\.\.(\d+)$/.exec(e);if(t){var a=parseInt(t[1]),r=parseInt(t[2]),i=[];a>r&&([a,r]=[r,a]);for(var s=a;s<=r;s++)i.push(s+"");return i}if(!/["({[]/.test(e))return e.split(/[,;]/).map((e=>e.trim()));const n=[];let o="",c=0,l=!1;for(let t=0;t<e.length;t++){const a=e[t];if(0===c&&'"'===a&&(0!==t&&"\\"===e[t-1]||(l=!l)),l||("("===a||"["===a||"{"===a?c++:")"!==a&&"]"!==a&&"}"!==a||(c=Math.max(0,c-1))),","!==a&&";"!==a||0!==c||l)o+=a;else{const e=o.trim();n.push(e),o=""}}const f=o.trim();return f&&n.push(f),n.map((e=>(e=e.trim()).startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e))}const k=(e,t,a,r,i=!1)=>{const s=["[","(","{"],n=["]",")","}"];r||(r="["==a?"]":"("==a?")":"}");for(var o=s.includes(a),c=1,l=[],f=0,h=t;h<e.length;h++)if(o&&s.includes(e[h])||e[h]==a)c++;else if(o&&n.includes(e[h])||e[h]==r){if(0==--c&&e[h]==r)return l[f]=e.substring(t,h),{i:h,res:l}}else if(":"==e[h])1==c&&(l[f]=e.substring(t,h),t=h+1,f++);else if("\n"==e[h]&&i)return{i:h,res:l};return{i:-1,res:e.substring(t)}};function S(e,t){"object"==typeof e&&"object"==typeof t&&Object.keys(t).forEach((a=>{Object.hasOwn(e,a)&&"function"!=typeof e[a]&&(e[a]=t[a])}))}function F(e,t){return"object"==typeof e?Object.keys(e).reduce(((a,r)=>("function"!=typeof e[r]&&(t&&t.length>0&&t.includes(r)||(a[r]=e[r])),a)),{}):{}}function O(e,t){if(Array.isArray(e))return e;if("string"!=typeof e)return e;if(""==e)return t||{};try{return JSON.parse(e)}catch(a){return p(`Errore parsing JSON: ${a}\n${e}`),t||{}}}const _=new class{constructor(){this.azzera()}azzera(){this.err=[]}add(e,t){this.err.push({msg:e,row:t})}get(){return this.err}get length(){return this.err.length}toString(){var e=[];for(var t of this.err){let a="object"==typeof t.msg?JSON.stringify(t.msg):t.msg||"";e.push(`${t.row?t.row+":":""}${a}`)}return e.join("\n")}};const L=/(?<!\w)\(/g,C=/^-?[0-9.]+$/,I=/^(\w+)(\!)?\[(.*)?\]$/,A=/^(rnd|random|cas)\(/i,D=/^clamp\(/i,j=/^(dec|round)\(/i,z=/[0-9.]/,N=/[+\-*/\^\%]/,T=/[a-zA-Z]/i;function M(e){for(e=(e+"").trim();;){var t=L.exec(e);if(!t)break;var{i:a,res:r}=k(e,t.index+1,"(",")");if(a<=0)break;e=e.substring(0,t.index)+M(r[0])+(a>=0?e.substring(a+1):"")}return e=function(e){if(e.includes("[")){function r(e){let t=e[1],a=!!e[2],r=E(e[3]);for(var i of r)if(i==t)return a?"0":"1";return a?"1":"0"}for(;;){var t=I.exec(e);if(!t)break;var a=r(t);e=e.substring(0,t.index)+a+e.substring(t.index+t[0].length)}}return e}(e),function(e){let t,a;const r={"||":()=>M(t)||M(a)?1:0,"|":()=>M(t)||M(a)?1:0,"&&":()=>M(t)&&M(a)?1:0,"&":()=>M(t)&&M(a)?1:0,"<<=":()=>b(t)<=b(a),">>=":()=>b(t)>=b(a),"===":()=>b(t)==b(a),"==":()=>b(t)==b(a),"!!":()=>b(t)!=b(a),"<<":()=>b(t)<b(a),">>":()=>b(t)>b(a),"<=":()=>W(t)<=W(a),">=":()=>W(t)>=W(a),"<":()=>W(t)<W(a),">":()=>W(t)>W(a),"=":()=>W(t)==W(a),"!":()=>W(t)!=W(a)};var i=-1,s="";for(var n in r)if((i=e.indexOf(n))>=0){s=n;break}return-1!==i?(t=e.slice(0,i),a=e.slice(i+s.length),r[s]&&r[s]()?1:0):W(e)}(e)}const R={sqr:e=>Math.sqrt(e),sqrt:e=>Math.sqrt(e),int:e=>Math.floor(e),floor:e=>Math.floor(e),round:e=>Math.round(e),abs:e=>Math.abs(e),sin:e=>Math.sin(e*(Math.PI/180)),cos:e=>Math.cos(e*(Math.PI/180)),tan:e=>Math.tan(e*(Math.PI/180)),atan:e=>Math.atan(e*(Math.PI/180)),atan2:(e,t)=>Math.atan2(e,t)*(Math.PI/180),asin:e=>Math.asin(e*(Math.PI/180)),acos:e=>Math.acos(e*(Math.PI/180))};function W(e){let t=0;function a(){const a=e[t];return N.test(a)?(t++,a):null}function r(){if(z.test(e[t]))return function(){const a=t;for(;t<e.length&&z.test(e[t]);)t++;return Number(e.slice(a,t))}();if("("===e[t]){t++;const a=s();return")"===e[t]&&t++,a}return T.test(e[t])?function(){var a=e.slice(t);if(!a)return 0;for(const[r,i]of Object.entries(R)){const n=new RegExp(`^(${r})\\(`,"i").exec(a);if(n){t+=n[0].length;const a=i(s());return")"===e[t]&&t++,a}}let r;if(r=A.exec(a),r){t+=r[0].length;let a=0,i=1;return")"!==e[t]&&(a=s(),","===e[t]?(t++,i=s()):(i=a,a=0)),")"===e[t]&&t++,Math.random()*(i-a)+a}if(r=D.exec(a),r){t+=r[0].length;const a=s();","===e[t]&&t++;const i=s();","===e[t]&&t++;const n=s();return")"===e[t]&&t++,Math.min(Math.max(a,i),n)}if(r=j.exec(a),r){t+=r[0].length;const a=s();let i=0;return","===e[t]&&(t++,i=s()),")"===e[t]&&t++,parseFloat(a.toFixed(i))}return t++,s()}():0}function i(){let i=r();for(;t<e.length&&/[\/\*\^\%]/.test(e[t]);){const e=a(),t=r();"*"===e?i*=t:"/"===e?i=t?i/t:0:"%"===e?i=t?i%t:0:"^"===e&&(i=Math.pow(i,t))}return i}function s(){let r=i();for(;t<e.length&&/[+\-]/.test(e[t]);){const e=a(),t=i();"+"===e?r+=t:"-"===e&&(r-=t)}return r}return e=e.replace(/\s/g,""),s()}function U(e){if(!e)return 0;if("number"==typeof e)return e||0;if("string"!=typeof e)return 0;var t=e.replaceAll(",",".");return C.test(t)?Number(t)||0:M(e)||0}const J=500;function V(e,t){var a=t[0]||"";if(!a)return"";if(e.counter>=J)return a;var r=K(e,e.var(B(e,a)));if(e.counter>=J)return a;if(t[1]){var i=E(r);if("l"==t[1])return String(i.length);var s=U(B(e,t[1]));if(!(s>=0&&s<i.length))return"";r=B(e,i[s])}if(t[2]){var n=U(B(e,t[2]));if(n){var o=0;return t[3]&&(o=U(B(e,t[3]))),n<0?r.slice(n):o?r.substring(n-1,n+o-1):r.substring(n-1)}}return r}function P(e,t){var a=E(t||""),r=b(a[0]);function i(e){return"\\t"==e?"\t":"\\n"==e?"\n":(e||"").replace(/&(\d+)/g,((e,t)=>String.fromCharCode(parseInt(t))))}switch(r){case"set":var s=B(e,a[1]||""),n=B(e,a[2]||"");e.add(s,e.vars(n));break;case"ex":s=B(e,a[1]||"");(n=B(e,a[2]||""))||(n=",");var o=U(B(e,a[3]||"")),c=s.split(n);return o>0&&c[o-1]||"";case"ex2":var l=i(a[1]||""),f=U(B(e,a[2]||""));return a.splice(0,3),(u=a.join(";")).split(l)[f>0?f-1:0]||"";case"replace":return a[1].replace(new RegExp(a[2]||"x","im"),(a[3]||"").trim());case"replace2":case"rp2":var h=i(a[1]||"x"),d=i(a[2]||"").trim();return a.splice(0,3),a.join(";").replace(new RegExp(h,"im"),d);case"tk":return(f=U(B(e,a[1]||""))||0)?a[f>0?f+1:2]||"":(f=U(B(e,a[2]||"")),l=a[1]||"",f?a[3].split(l)[f-1]:"");case"totab":return a.splice(0,1),a.join("\t");case"tosep":l=i(a[1]||"")||";";return a.splice(0,2),a.join(l);case"len":{let e;return a.length>2?(a.shift(),e=a.join(";")):e=a[1]||"",e.length}case"mid":var u=B(e,a[1]||""),v=(f=U(B(e,a[2]||"")),U(B(e,a[3]||"")));return u.substring(f-1,f+v-1);case"arrotonda":{u=U(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=U(a[2]),0==e&&(e=1e3)),Math.round(u*e)/e}case"iif":return(u=U(B(e,a[1])))?a[2]||1:a[3]||0;case"instr":case"instr2":var m=a[1]||"",p=a[2]||"";return m.toLowerCase().indexOf(p.toLowerCase())+1;case"instr2":p=a[1]||"";return a.splice(0,2),a.join(";").toLowerCase().indexOf(p.toLowerCase())+1;default:return{fun:r,pars:a}}}function B(e,t){if(t+="",e.counter>=J)return t;for(;;){const s=/\$([\{\(])/im.exec(t);if(!s)break;var a=s.index,{i:r,res:i}="("==s[1]?k(t,a+2,"(",")"):k(t,a+2,"{","}");t=B(e,t.substring(0,a))+V(e,i)+(r>=0?B(e,t.substring(r+1)):"")}return t=(t=t.replace(/\$([a-z|][\w|\.]*)/gi,((t,a)=>{for(var r="";a.length;){var i=K(e,e.var(a));if(i||!(a.length>1)){r=i+r;break}r=a.slice(-1)+r,a=a.substring(0,a.length-1)}return r}))).replace(/\$(\d+)\:(\d+)(\:(\d+))?/g,((e,t,a,r,i)=>{i=i?+i:1;let s=[];for(let e=+t;e<=+a;e+=i)s.push(e.toString());return s.join(";")})),t}function K(e,t){return t&&(e.counter++,e.counter<=J&&(t=B(e,t)),e.counter--),t}class X{constructor(){this.dictionary={},this.vec=[],this.counter=0}static isValidKey(e){return/^[\w][\w\d\.\[\]]*$/.test(e)}static sanitizeKey(e){return e.replace(/[^a-zA-Z0-9_\.\[\]]/g,"_")}push(){this.vec.push({...this.dictionary})}pop(){this.vec.length>0&&(this.dictionary=this.vec.pop())}clear(){this.vec=[],this.dictionary={}}azzera=()=>this.clear();var(e){let t="";const a=/^(\d+)\.\.(\d+)$/.exec(e);if(a){var r=parseInt(a[1]),i=parseInt(a[2]),s=[];r>i&&([r,i]=[i,r]);for(var n=r;n<=i;n++)s.push(n+"");return s}if(e.indexOf("|")>=0){let a=e.split("|");e=a[0],t=a[1]}function o(e,t){switch(t.trim().toLowerCase()){case"data":return a=parseFloat(e)||0,new Intl.DateTimeFormat("it",{day:"2-digit",month:"short",year:"2-digit"}).format(a.toDate());case"euro":return((e,t="")=>{if(e){var a=Intl.NumberFormat("en",{style:"currency",currency:"EUR"}).format(e);return a.replace(/€/g,"").replace(/\./g,";").replace(/,/g,".").replace(/;/g,",")+"€"}return t})(parseFloat(e));case"num":return((e,t=-1)=>{const a="string"==typeof e?parseFloat(e)||0:e;if(t<0)return a||0;const r=Math.pow(10,t);return Math.round(a*r)/r||0})(parseFloat(e));default:return e}var a}const c=X.sanitizeKey(e);if(X.isValidKey(c)){const e=c.toLowerCase();var l=/^([\w][\w\d]*)[\.\[]/.exec(e);if(l){var f=this.dictionary[l[1]];if(f&&"object"==typeof f)return o(function(e,t){for(var a=t.split("."),r=e,i=0;i<a.length;i++){var s=a[i],n=s.match(/(.*?)\[(\d+)\]/);if(n){if(void 0===(r=r[n[1]]))return"";r=r[parseInt(n[2],10)]}else r=r[s];if(void 0===r)return""}return"number"==typeof r?r+"":r}(f,e.substring(l[0].length)),t)}return o(this.dictionary[e]||"",t)}return""}getvar(e){return this.var(e)}colonna(e,t){return E[t]||e}dump(e=!1){var t=[];for(var a in this.dictionary)t.push({cod:a,val:this.dictionary[a]});return t=t.sort(((e,t)=>e.cod>t.cod)),e?t.map((e=>`${e.cod} = ${e.val}`)):t}add(e,t){const a=X.sanitizeKey(e);if(X.isValidKey(a)){const e=a.toLowerCase();0===t||t?this.dictionary[e]=t:delete this.dictionary[e]}else p(`Invalid key: ${e}`)}valutasync(e){return K(this,e)}async valuta(e,t){var a=await async function(e,t,a){if(t){for(var r=0;r<20;r++){var i=t.lastIndexOf("$[");if(!(i>=0)){t=K(e,t);break}var{i:s,res:n}=k(t,i+2,"[","]"),o=K(e,t.substring(0,i)),c=n?K(e,n[0]):"",l=s>=0?K(e,t.substring(s+1)):"",f=P(e,c);"object"==typeof f&&(f=a?await a(f?.fun,f.pars):`** fun: ${f.fun} ** `),t=o+(f="object"==typeof f?"**str**":f+""||"")+l}return t}return""}(this,e,t);return a=(e=>{for(;;){var t=e.indexOf("{");if(!(t>=0))break;var{i:a,res:r}=k(e,t+1,"{","}");if(a<0)return e;e=e.substring(0,t)+U(r[0])+(a>=0?e.substring(a+1):"")}return e})(a),a}}const G="IFDEF|IFNDEF|SELECT|CASES|CASE|DEFAULT|ELSEIFDEF|ELSEIFNDEF|ELSEIF|ELSE|ENDIF|ENDSELECT|PUSH|POP|FUNC|MACRO|LETS|LETO|LETM|LETT|LETV|LETM|LET|DEF|DO|VARIANTE|FORVAR|FOR|LOOP|ENDFOR|BREAK|EXIT|EXITFOR|CONTINUE|IF|F|M|J|:P".split("|");function q(codice,e){const t=codice.split("\n"),a=[];let r=!1,i="";for(const riga of t){let t=riga.trim();if(r)t.endsWith("*/")&&(r=!1);else if(t.startsWith("/*"))r=!0;else if(!r&&t.includes("//")&&(t=t.split("//")[0].trim()),0!==t.length||e)if(i.length>0&&(t=i+" "+t,i=""),t.endsWith("\\")){t=t.slice(0,-1);const e=t.lastIndexOf("//");-1!==e&&(t=t.slice(0,e).trim()),i=t}else a.push(t)}return a}function H(e,t=!1){if(Array.isArray(e)){var a=[];for(var r of e){const e=r.match(/^#([\w\.]+)\s*(.*)$/);if(e){var i=e[1].toUpperCase().trim(),s="";if(i.includes(".")){var n=i.split(".");i=n[0],s=n[1]}if(G.includes(i)){const t=e[2];if("IF"!==i&&"IFDEF"!=i&&"IFNDEF"!=i||!t.includes("#")){let t={tipo:i,contenuto:e[2]};s&&(t.tipo2=s),a.push(t)}else{var o=t.match(/^(.*?)\s*#\s*(\w+)\s*(.*?)\s*#\s*(\w+)\s*(.*)$/);o?(a.push({tipo:i,contenuto:o[1].trim()}),a.push({tipo:o[2].toUpperCase(),contenuto:o[3]}),a.push({tipo:"ELSE",contenuto:""}),a.push({tipo:o[4].toUpperCase(),contenuto:o[5]}),a.push({tipo:"ENDIF",contenuto:""})):(o=t.match(/^(.*?)\s*#\s*(\w+)\s*(.*)$/))?(a.push({tipo:i,contenuto:o[1].trim()}),a.push({tipo:o[2].toUpperCase(),contenuto:o[3]}),a.push({tipo:"ENDIF",contenuto:""})):a.push({tipo:e[1].toUpperCase(),contenuto:e[2]})}}else $(r)}else $(r)}for(var c=0,l=0,f=0,h=[],d=[],u=[],v=0;v<a.length;v++){var m=a[v];switch(m.i=v,m.tipo){case"FOR":case"FORVAR":case"VARIANTE":case"DO":d[++l]={pos:v,bk:[]};break;case"LOOP":case"ENDFOR":if(l>0){var{pos:p}=d[l];for(var g of d[l].bk)g.next=v,g.prev=p;m.prev=p,a[p].next=v,l--}break;case"BREAK":case"EXIT":case"EXITFOR":case"CONTINUE":l>0&&d[l].bk.push(m);break;case"IF":case"IFDEF":case"IFNDEF":h[++c]={pos:v,bk:[m]};break;case"SELECT":u[++f]={pos:v,bk:[m],first:v};break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(c>0){var{pos:p}=h[c];h[c].bk.push(m),a[p].next=v,h[c].pos=v}break;case"CASE":case"CASES":case"DEFAULT":if(f>0){var{pos:p,first:w}=u[f];u[f].bk.push(m),a[p].next=v,m.first=w,u[f].pos=v}break;case"ENDIF":if(c>0){var{pos:p,next:b}=h[c];for(var g of(a[p].next=v,h[c].bk))g.last=v;c--}break;case"ENDSELECT":if(f>0){var{pos:p,next:b}=u[f];for(var g of(a[p].next=v,u[f].bk))g.last=v;f--}}}return a}function $(e){if(a.length>0&&""==a[a.length-1].tipo){var r=a[a.length-1];t||e.startsWith("!")||e.startsWith("$")||e.startsWith("{")||e.startsWith("#")||r.contenuto.startsWith("!")||r.contenuto.startsWith("$")||r.contenuto.startsWith("{")||r.contenuto.startsWith("#")?a.push({tipo:"",contenuto:e}):r.contenuto=r.contenuto+"\n"+e}else a.push({tipo:"",contenuto:e})}_.add("muClean: expected array!")}function Y(e){var t,a=q(e),r=[],i=e=>e?[...new Set(e.split(",").map((e=>e.trim())).sort().filter((e=>e)))]:void 0;for(var s of a){var n=/^\s*\{(.*)?\}/im.exec(s);if(n)"limit"==b(n[1])?(t={},r.push(t)):t=void 0;else if(t&&(n=/^\s*\:(\w+)\s*(.*)/.exec(s)))switch(n[1].toLowerCase()){case"opz":case"o":t.opz=i(n[2]);break;case"obs":case"obsolete":t.obsolete=i(n[2]);break;case"scons":case"sconsigliate":t.scons=i(n[2]);break;case"neutri":t.neutri=i(n[2]);break;case"art":t.art=i(n[2]);break;case"mod":t.mod=i(n[2]);break;default:p("missing:",n[1])}}return r}function Z(e){let t,a=[];for(var r of e){t={},r.varfilter=O(r.varfilter,[]),r.result=O(r.result,[]),r.result2=O(r.result2,[]),r.exclude=parseInt(r.exclude)?1:0,r.exclude2=parseInt(r.exclude2)?1:0;let{item:item,model:model,rule:i,varfilter:s,result:n,result2:o,exclude:c,exclude2:l,datai:f,dataf:h}=r;function d(e){return e.map((e=>b("string"==typeof e?e:e.Value)))}if(n.length||o.length){if(n.length&&(c?t.ex=d(n):t.valid=d(n)),o.length&&(l?t.ex2=d(o):t.valid2=d(o)),item&&(t.i=b(item).split(";")),model&&(t.m=b(model).split(";")),i&&(t.r=b(i).split(";")),(f||h)&&f<h&&(t.datai=parseInt(f),t.dataf=parseInt(h)),s&&s.length){t.v=[];for(let u of s){let v=t.v.find((e=>e.v==b(u.Variant)));v||(v={v:b(u.Variant),o:[]},t.v.push(v)),v.o=[...v.o,b(u.Value).split(";")]}}Q(t),a.push(t)}}return a=a.sort(((e,t)=>t.l-e.l)),a}function Q(e){let t=0;e.i&&e.i.length&&(t+=5),e.m&&e.m.length&&(t+=3),e.r&&e.r.length&&(t+=2),e.v&&e.v.length&&(t+=3),e.datai&&e.dataf&&(t+=1),e.l=t}class ee{constructor(amb){this.rows={},this.name="$",this.key="$",this.amb=amb}setheader(e,cat){var{name:t,cat:cat}=y(e,cat);return this.cat=cat,this.name=t,this.alias="",this.obbligo=!1,this.des=t,this.rows={},this.h=[],this.key=`${cat}/${t}`,{name:t,cat:cat}}fromdim(dim,e=2){"number"!=typeof dim&&(dim=U(dim)),e>0&&e--;var t,a=1e9;for(var r in this.rows){var i=this.rows[r];if(!i.annulla){var s=parseFloat(i.v[e])||0;s<=a&&s>=dim&&(a=s,t=i)}}return this.#e(dim,t)}async load(e,cat,t=!1){var{name:a,cat:cat}=this.setheader(e,cat);if(f){var r=await f(cat,a);if(r){if(await this.loadContentExtended(r),r.filter)p("verifica anche i filtri!",r.filter),this.limits=Z(r.filter);else if(u&&!t){let e=await u("filter",cat,a);e&&e.length&&(this.limits=Z(e))}return!0}}return!1}async _loadContent(lines){const e=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;var t="";let a,r=[],i=!1;for(var s of lines){if("{limit}"==(n=s.toLowerCase()))a=[],r.push(a),i=!0;else if("{:limit}"==n)i=!1;else if(i)a.push(s);else{if(h=e.exec(b(s)))if(t&&"extra"==h[1].toLowerCase()){var n=E(h[2]);for(var o of n){var c=o.indexOf("=");if(c>0){var l=b(o.substring(0,c));"v"!=l&&(this.rows[t][l]=o.substring(c+1).trim())}}}else switch(h[1].toLowerCase()){case"alias":if((w=h[2].toLowerCase().split(";"))[0].trim()!=this.name)if(1==w.length)this.alias=w[0];else{var f;this.amb?f=await this.amb.getvariante(w[0]):(f=new ee,await f.load(w[0],this.cat));var h=f?.rows;if(h){var d=Object.keys(h);if(d.length){w.splice(0,1);const e=e=>{e&&e.forEach((e=>this.rows[e]=h[e]))};for(var o of w){var u=/([ei])\s*:\s*(.*)\s*$/im.exec(o);if(u){for(var v=u[2].split(","),m=0;m<v.length;m++)v[m]=v[m].trim();d="e"==u[1]?d.filter((e=>{for(var t of v)if(e.startsWith(t))return!1;return!0})):d.filter((e=>{for(var t of v)if(e.startsWith(t))return!0;return!1}))}}e(d)}}}break;case"h":this.h=E(h[2]).map((e=>({des:e})));break;case"t":let e=E(h[2]);if(this.h)for(let t=0;t<this.h.length;t++)this.h[t].t=e[t]||"";break;case"des":this.des=h[2];break;case"default":case"vdef":this.vdef=E(h[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else(g=b((n=E(s))[0]))&&(t=g,this.rows[t]={annulla:0,v:n})}}var p=Object.keys(this.rows);for(var g of p)if(g.includes(".")){var w=g.split(".");for(m=0;m<w.length-1;m++){var $=w.slice(0,m+1).join(".");this.rows[$]||(this.rows[$]={annulla:0,v:[$]})}}return this.limits=function(e){function t(e){let t={};const a=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;function r(e,a){function r(e,a){(a=b(a))&&(t[e]||(t[e]=[]),t[e].includes(a)||t[e].push(a))}if(Array.isArray(a))for(var i of a)r(e,i);else r(e,a)}for(var i of e){var s=a.exec(i);if(s)switch(s[1]){case"var":case"v":case"variante":let e=(s[2]||"").indexOf(" ");if(e>0){let a=b(s[2].substring(0,e)),r=E(s[2].substring(e+1));if(a&&r&&r.length){t.v||(t.v=[]);let e=t.v.find((e=>e.v==a));for(var n of(e||(e={v:a,o:[]},t.v.push(e)),r))e.o.includes(n)||e.o.push(n)}}break;case"d":case"dt":case"data":case"date":let a=s[2].split(" "),i=parseInt(a[0]),o=parseInt(a[1]);(i||o)&&(t.datai=i,t.dataf=o);break;case"rule":case"r":case"mu":r("r",E(s[2]));break;case"item":case"i":r("i",E(s[2]));break;case"model":case"m":r("m",E(s[2]));break;case"e":case"escludi":case"exclude":r("ex",E(s[2]))}else r("valid",E(i))}return Q(t),t}let a;if(e&&e.length){for(var r of e){let e=t(r);if(e&&(e.valid&&e.valid.length||e.ex&&e.ex.length)){let t=0;e.i&&e.i.length&&(t+=5),e.m&&e.m.length&&(t+=3),e.r&&e.r.length&&(t+=2),e.v&&e.v.length&&(t+=3),e.datai&&e.dataf&&(t+=1),e.l=t,a||(a=[]),a.push(e)}}a&&(a=a.sort(((e,t)=>t.l-e.l)))}return a}(r),!0}tovec(){var e=this.rows,t=[],a=Object.keys(e).sort();for(var r of a)this.rows[r].annulla<2&&t.push(this.#e(r,this.rows[r]));return t}#e(cod,e){var t=[cod];if(e)for(var a of e.v)a.indexOf(",")>=0?t.push(a.indexOf('"')>=0?`'${a}'`:`"${a}"`):t.push(a);return t.join(",")}tovar(cod){var e=b(cod);if(!this.rows[e])return cod;var t=this.rows[e];return 2==t.annulla?"":this.#e(cod,t)}isvalidopz(e){let t=b(e),a=this.rows[t];return!!a&&(1!=a.annulla&&!a.hasliv)}firstvalid(e){if(e&&this.isvalidopz(e))return e;if(this.vdef&&this.vdef.length)for(var t of this.vdef)if(this.isvalidopz(t))return t;for(var a in this.rows)if(this.isvalidopz(a))return a}resetfilter(){for(var e in delete this._valids,this.rows)this.rows[e].annulla=0}validkeys(){let e=Object.keys(this.rows)||[];return e=e.filter((e=>0==this.rows[e].annulla)).sort(),e}limita(){if(!this.limits||!this.amb)return this.resetfilter();let{item:item,rule:e,model:model,vari:vari,data:t}=this.amb,a=this.limits.filter((a=>{if(!item&&a.i&&a.i.length)return!1;if(!e&&a.r&&a.r.length)return!1;if(!model&&a.m&&a.m.length)return!1;if(a.i&&!a.i.includes(item))return!1;if(a.r&&!a.r.includes(e))return!1;if(a.m&&!a.m.includes(model))return!1;if(t&&a.datai&&t<a.datai)return!1;if(t&&a.dataf&&t>a.dataf)return!1;if(a.v&&a.v.length)for(var r of a.v){let e=b(vari.var(r.v).split(",")[0]);if(e&&!r.o.includes(e))return!1}return!0}));if(!a||!a.length)return this.resetfilter();let r=new Set,i=new Set,s=new Set,n=new Set,o=!1,c=!1;for(var l of a){if(l.valid&&l.valid.length){o=!0;let e=l.valid.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0]));r.add(...e),s.add(...l.valid.filter((e=>!e.includes("*"))))}if(l.ex&&l.ex.length){c=!0;let e=l.ex.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0]));i.add(...e),n.add(...l.ex.filter((e=>!e.includes("*"))))}}for(var f in this.rows){let e=this.rows[f],t=!1,a=!1;if(o){for(let e of r)if(f.startsWith(e)){t=!0;break}!t&&s.has(f)&&(t=!0)}if(c){for(let e of i)if(f.startsWith(e)){a=!0;break}!a&&n.has(f)&&(a=!0)}e.annulla=0,o&&!t&&(e.annulla=1),c&&a&&(e.annulla=1)}return a}async loadContentExtended(e){if("object"==typeof e){for(var t in e)["rows","des","h","alias","obbligo"].includes(t)&&(this[t]=e[t]);e.filter&&e.filter.length&&(this.limits=Z(e.filter))}else await this._loadContent(q(e,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}let te={};async function ae(e,t,a,vari,amb,r){if(d){if(te[t])return"";let e=await d(t,a,vari,amb,r);return e=(e||"").trim(),"!"==e&&(te[t]=!0,e=""),e}return e}async function re(amb,e,t){return await amb.vari.valuta(t,(async(t,a)=>{if("dim"===t){var r=U(a[1]),i=await ie(amb,e,a[2]),s=parseInt(a[3])||2;return i&&i.fromdim?i.fromdim(r,s):r}return await ae(`**fun:${t}**`,t,a,amb.vari,amb)}))}async function ie(amb,macro,e){return macro&&macro?.localvar&&macro.localvar[e]?macro.localvar[e]:await amb.getvariante(e)}async function se(amb,macro,e,t,a){let r,i=e;if(t=t||""){var s=t.indexOf(":");s>=0&&(s>0&&(i=b(t.slice(0,s))),t=t.slice(s+1))}if(a&&a.alias&&(i=a.alias),r=await ie(amb,macro,i),r)if(a&&a.t)if("m"===a.t){var n=2;if(t.includes(":")){var o=t.split(":");n=parseInt(o[1]),t=o[0]}r.limita(),t=r.fromdim(parseFloat(t),n)}else{r.limita();let e=r.firstvalid(t);t=r.tovar(e)}else r.resetfilter(),t=r.firstvalid(t),t=r.tovar(t);else a&&a.t&&a.t;return amb.vari.add(e,t),t}const ne=(e,t)=>{null!=t&&null!=t&&("string"==typeof t&&t.startsWith("_ ")&&e.length>0&&"string"==typeof e[e.length-1]&&!tipo?e[e.length-1]+=t.slice(2):e.push(...t.split("\n")))};async function oe(amb,e,codice,options){if(!Array.isArray(codice))return _.add("codice is not a valid parsed array"),[];options||(options={}),options.id||(options.id="_"),options._stackmacro||(options._stackmacro=0),options.limited||(options.limited=!1),amb||_.add("amb deve essere definito");let vari=amb.vari;amb.maxdelays,amb.cat;let t=[];w();for(var a=0;a<codice.length;){var riga=codice[a];switch(riga.tipo){case"IFDEF":case"IFNDEF":case"IF":var r="IF"==riga.tipo?U(await re(amb,e,riga.contenuto)):"IFDEF"==riga.tipo?""!=await re(amb,e,riga.contenuto):""==await re(amb,e,riga.contenuto);riga.next?(codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)):_.add("Troppo tempo",riga);break;case"SELECT":riga.next?(codice[riga.next].t1=await re(amb,e,riga.contenuto),a=riga.next-1):_.add("manca endselect",riga);break;case"CASE":case"CASES":case"DEFAULT":if(riga.next)if(riga.jlast)riga.jlast=0,a=riga.last-1;else{r=1;if("CASE"==riga.tipo){r=0;var i=U(riga.t1||""),s=E(await re(amb,e,riga.contenuto));for(var n of s)if(U(n)==i){r=1;break}}else if("CASES"==riga.tipo){r=0;i=riga.t1||"",s=E(await re(amb,e,riga.contenuto));for(var n of s)if(n==i){r=1;break}}codice[riga.next].jlast=r?1:0,codice[riga.next].t1=riga.t1,r||(a=riga.next-1)}else _.add("manca select",riga);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(riga.next)if(riga.jlast)riga.jlast=0,a=riga.last-1;else{r="ELSE"==riga.tipo?1:"ELSEIF"==riga.tipo?U(await re(amb,e,riga.contenuto)):"ELSEIFDEF"==riga.tipo?""!=await re(amb,e,riga.contenuto):""==await re(amb,e,riga.contenuto);codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)}else _.add("manca endif",riga);break;case"ENDIF":case"ENDSELECT":break;case"PUSH":vari.push();break;case"POP":vari.pop();break;case"J":await ae("$$","$$",await re(amb,e,riga.contenuto),vari,amb,t);break;case"FUNC":case"F":case"MACRO":case"M":var{macro:macro,pars:o,xid:l}=await amb.getmacro(riga);if(options._stackmacro>500)_.add("stack chiamate macro troppo profondo!",riga);else if(macro){let e=macro.parametri?._,r={};if("F"==riga.tipo||"FUNC"==riga.tipo)vari.push();else{if(macro.head)for(var f in macro.head)r[f]=amb.vari.var(f);if(e&&e.length)for(var f of e){let e=(f.split("=")[0]||"").trim().toLowerCase();e&&(r[e]=vari.dictionary[e])}}if(macro.codice.length){if(options._stackmacro++,options.grafica&&"function"==typeof options.grafica){let r="",i="",s=options.id;o&&o.length?(r=o.find((e=>e.startsWith("#id"))),r?(r=await vari.valuta(r.slice(3)),options.id=c(`${s}${a}${r||""}`),o=o.filter((e=>!e.startsWith("#id"))),i=options.id):options.id=c(`z${s}${a}`)):options.id=c(`z${s}${a}`);let n=await options.grafica({tipo:riga.tipo,id:i,pars:o,parametri:e,macro:macro,options:options,xval:oe(amb,macro,macro.codice,options)});t.push(n),options.id=s}else if(macro.codice.length){await macro.impostaparametri(e,o);let a=await oe(amb,macro,macro.codice,options);t.push(...a)}options._stackmacro--}if("F"==riga.tipo||"FUNC"==riga.tipo)vari.pop();else for(var n in r)vari.dictionary[n]=r[n]}break;case"LET":case"LETS":var h=-1;if((v=riga.contenuto.indexOf("="))>=0&&(h=riga.contenuto.indexOf("=",v+1)),h<0){if((v=(n=riga.contenuto).indexOf("="))>0){var d=await re(amb,e,n.slice(0,v).trim()),u=n.slice(v+1).trim();u="LET"==riga.tipo?U(await re(amb,e,u))||"":await re(amb,e,u),vari.add(d,u)}}else{s=E(riga.contenuto);for(var n of s){if((v=n.indexOf("="))>0){d=await re(amb,e,n.slice(0,v)),u=n.slice(v+1).trim();u="LET"==riga.tipo?U(await re(amb,e,u))||"":await re(amb,e,u),vari.add(d,u)}}}break;case"LETT":var v;if((v=riga.contenuto.indexOf("="))>0){d=await re(amb,e,riga.contenuto.slice(0,v).trim()),u=riga.contenuto.slice(v+1).trim();vari.add(d,u)}break;case"LETV":case"LETM":case"DEF":if(r=E(riga.contenuto))for(var f of r){var{v:n,o:m,fl:p}=$(f);p&&(n=await vari.valuta(n),m=await re(amb,e,m),await se(amb,e,n.trim().toLowerCase(),m.trim().toLowerCase(),"LETM"==riga.tipo?{t:"m"}:{t:"v"}))}break;case"DO":p=!0;(g=(riga.contenuto||"").trim())&&!U(await re(amb,e,g))&&(p=!1),riga.next&&(p||(a=riga.next+1));break;case"VARIANTE":case"FORVAR":case"FOR":{var g,b;if(options.oldstyle)n=(s=riga.contenuto.split(","))[2]||"i",b=s[0],g=s[1];else n=(s=E(riga.contenuto||""))[0]||"",b=s[1],g=s[2]||"";if(n=n.includes("$")?await re(amb,e,n):n||"","FORVAR"==riga.tipo||"VARIANTE"==riga.tipo){var y=(r=await re(amb,e,b))?await ie(amb,e,r):void 0;y?b=y.tovec():(b=[],_.add("getvariante not found!",riga))}else{var x=await re(amb,e,b||"");b=b?E(x):void 0}b=b||[];let t=0;if(riga.next){(F=codice[riga.next]).for={v:n,elenco:b,nc:t,valido:g};var k;p=!0;n&&b.length>0?t>=b.length?p=!1:(k=b[t],vari.add(n,k),g&&(p=!U(await re(amb,e,g)))):p=!1,p||(a=riga.next-1)}else _.add("manca endfor/loop",riga)}break;case"LOOP":var p=!0;riga.contenuto&&!U(await re(amb,e,riga.contenuto))&&(p=!1),p&&(a=riga.prev-1);break;case"ENDFOR":if(!riga.contenuto||U(await re(amb,e,riga.contenuto)))if(riga.for){var{v:n,elenco:b,valido:g}=riga.for;if(n&&b.length>0&&riga.for.nc<500)for(;;){if(riga.for.nc++,riga.for.nc<b.length){if(vari.add(n,b[riga.for.nc]),g&&U(await re(amb,e,g)))continue;a=riga.prev;break}break}}else _.add("manca istruzione for",riga);break;case"BREAK":case"EXIT":case"EXITFOR":riga.next?riga.contenuto.trim()?U(await re(amb,e,riga.contenuto))&&(a=riga.next):a=riga.next:_.add("break outside loop",riga);break;case"CONTINUE":riga.next?riga.contenuto&&!U(await re(amb,e,riga.contenuto))||(a=riga.next-1):_.add("continue outside loop",riga);break;default:if((r=await re(amb,e,riga.contenuto)).startsWith("!")){d="";if(F=/^\!(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){var S=F[1].toLowerCase();o=E(F[2]||"");d=await ae(r,S,o,vari,amb)}d&&ne(t,d)}else{var F;if(options.callback)if(F=/^(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){S=F[1].toLowerCase();var o=E(F[2]||"");r=await options.callback(S,o,options.key||"",a)}else r=await options.callback(r,[],options.key||"",a);ne(t,r)}}a++}return t}async function ce(e,amb,t,a,r){var i=e.genera[t];if(i){r.counter2=0;var s={},n=[];async function o(c){if(!(r.isTestmode&&r.counter>r.isTestmode)){if(c<i.vars.length){var l=i.vars[c];if(!s[l]){var f=await ie(amb,e,l),h=Object.keys(f.rows);if(h&&h.length>0){for(var d of h)n.push(d),amb.vari.add(f.name,f.tovar(d)),s[l]=!0,await o(c+1),s[l]=!1,n.pop();return}p("manca la variante",l)}}for(var u of i.calcola)e.formula[u]&&await oe(amb,e,e.formula[u],{limited:!0});for(var u of i.exclude){if(e.formula[u])if(w=await oe(amb,e,e.formula[u],{limited:!0}))for(var v of w){if(U(v))return}}var m=await oe(amb,e,i.codice,{limited:!0,localvar:e.localvar}),g={};for(var u of i.bom)if(e.formula[u]){var w=await oe(amb,e,e.formula[u],{limited:!0});for(var v of w=w.join("\n").split("\n"))if(v){var b=E(v);g[u]||(g[u]=[]);for(var $={},y=0;y<b.length;y++)$[`c${y}`]=b[y];g[u].push($)}}await async function(e,t,a,r,i,s){var n=!0;for(var o of t){var c=E(o);if(c[0]&&!s[c[0]]){s[c[0]]=1,s.counter++,s.counter2++;for(var l={__id:s.counter},f=0;f<c.length;f++){var h=r.head[f]?r.head[f]:`c${f}`;"#"==h[0]?l[h=h.substr(1)]=U(c[f]):l[h]=c[f]}await e(i,l,n?a:void 0,s.counter,s.counter2),n=!1}}}(a,m,g,i,t,r)}}await o(0)}}const le=/^\s*\{(\:)?(var|deriva|valid|formula|header|genera|g|v|f|h)(\s.*)?\}/i;function fe(e,lines){let t=!1;for(var a=[],r=e;r<lines.length;r++){let e=lines[r].trim(),o=e.split("//")[0].trim();if(e.startsWith("/*"))t=!0;else if(t&&e.endsWith("*/"))t=!1;else if(!t){if(le.test(e))return{fl:!0,i2:r-1,cols:a};if(o.endsWith("\\"))return{fl:!1};if(e.startsWith(":h ")&&(o=o.substr(3).trim()),!o.startsWith(":"))for(var i=E(o),s=0;s<i.length;s++){var n=i[s].length;i[s].includes(",")&&(n+=2),(!a[s]||a[s]<n)&&(a[s]=n)}}}return{fl:!0,i2:lines.length-1,cols:a}}const he=/^\{(\:?(var|valid|formula|genera|header|v|f|g|h))[\s|\}]/im;function de(vari,e){var t=e.split("\n");for(var a of t)if(a.trim()){if(U(vari.valutasync(a)))return!0}return!1}class ue{constructor(amb,e){var{name:e,cat:cat}=y(e,amb.cat||"");this.name=e,this.cat=cat,this.amb=amb,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){var e=[];return this.errori.forEach((t=>e.push({e:t}))),e}getparametri(){let e={};if(this.head)for(var t of this.head){if(!t._h)"string"==typeof(a=this.amb.vari.var(t.cod))&&(a=a.split(",")[0]),e[t.cod]=a}else if(this.parametri?._)for(var t of this.parametri._){let r=(t.split("=")[0]||"").trim().toLowerCase();var a;a=((a=this.amb.vari.var[r])||"").split(",")[0],e[r]=a}return e}async setparametri(e){let t={};for(var a of(e||(e={}),this.head))"g"!=a.t&&("z"!=a.t||e[a.cod]||(e[a.cod]="1"),a._v=e[a.cod],t[a.cod]=!0);for(var a in e)t[a]||(t[a]=!0,await se(this.amb,this,a,e[a]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,e[this.head[0].cod]||void 0,!0),this.getparametri()}async setparametro(e,t,a=!1){if(t&&t.includes("$")&&(t=await re(this.amb,this,t)),this.head){const r=this.head.findIndex((t=>t.cod===e));if(r<0)return;let i=this.head[r];const s=async(riga,e,t)=>{let a=riga?.cod;if(riga.valid&&!riga._h1){let e=!de(this.amb.vari,riga.valid);if(riga._h!=e&&(riga._h=e,["g","g1","g2"].includes(riga.t)))for(let e=t+1;e<this.head.length;e++){let t=this.head[e];if(t){if(["g","g1","g2"].includes(t.t))break;t._h1=riga._h}}}if(riga._h||riga._h1)return this.amb.vari.add(a,""),riga._v=void 0,"";{if(delete riga._h2,riga.visible){let e=!de(this.amb.vari,riga.visible);if(e&&(riga._h2=e),["g","g1","g2"].includes(riga.t))for(let e=t+1;e<this.head.length;e++){let t=this.head[e];if(t){if(["g","g1","g2"].includes(t.t))break;riga._h2?t._h3=riga._h2:delete t._h3}}}let r=this.amb.vari.var(a)||"";if(r=r.split(",")[0],"z"!=riga.t||r||(this.amb.vari.add(a,"1"),r="1"),"m"==riga.t&&riga.spars){let e=E(riga.spars);r=parseFloat(r||e[0])||0,e[1]&&parseFloat(r)<e[1]&&(r=parseFloat(e[1])||0),e[2]&&parseFloat(r)>e[2]&&(r=parseFloat(e[2])||0),r=String(r),this.amb.vari.add(a,r)}let i=await se(this.amb,this,a,e||riga._v||r,riga);if(riga._v=void 0,r=this.amb.vari.var(a)||"",this.amb&&this.amb.deriva&&this.amb.deriva.length>0){this.amb.deriva.filter((t=>t.cod==a&&((!t.item||t.item==this.amb.item)&&((!t.model||t.model==this.amb.model)&&((!t.rule||t.rule==this.amb.rule)&&(!t.opz||t.opz==e)))))).forEach((t=>{let a=this.head.find((e=>e.cod==t.tocod));a&&(a._v=t.toopz||e,this._d=1)}))}return i}};let n=await s(i,t,r);if(delete i._d,a)for(let e=r+1;e<this.head.length;e++)await s(this.head[e],void 0,e);return n}return await se(this.amb,this,e,t)}async impostaparametri(e,t){if(this.head)for(var a of(Array.isArray(this.head)||(this.head=[]),this.head))a._v="",delete a._h,delete a._h1,delete a._h2;for(var r of(e||(e=[]),t||(t=[]),[...e,...t])){if((a=r.indexOf("="))>0){let e=b(r.substr(0,a));e.includes("$")&&(e=await re(this.amb,this,e));let t,i=r.substr(a+1);i.includes("$")&&(i=await re(this.amb,this,i)),this.head&&(t=this.head.find((t=>t.cod==e)))?t._v=i:await se(this.amb,this,e,i)}}if(this.head){let e=!0;for(var i of this.head)["g","g1","g2"].includes(i.t)?e=await this.checkvalid(i.valid):e&&await this.checkvalid(i.valid)&&await this.setparametro(i.name,i._v)}}async checkvalid(e){if(!e)return!0;return!!await U(re(this.amb,this,e))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return F(this,["amb"])}setmacro(e){if(S(this,O(e,{})),this.localvar)for(var t in this.localvar){S(e=new ee,this.localvar[t]),this.localvar[t]=e}}async load(e,t){try{var a,{name:r,cat:cat}=y(e||this.name,t||this.cat||"");if(this.name||(this.name=r),this.cat||(this.cat=cat),this.azzera(),h&&("string"==typeof(a=await h(cat,r))&&(a.startsWith("{")||a.startsWith("["))&&(a=O(a)),a&&a.head&&!Array.isArray(a.head)&&(a.head=[])),a){if("string"==typeof a)await this.parsedata(a);else for(var i in a)this[i]=a[i];return!0}_.add(`missing cbGetFile: ${cat}/${r}`)}catch(e){_.add(l(e),`macro.load: ${r}/${cat}`)}}async loadAndCompile(e,cat,t=!1){var a,{name:r,cat:cat}=y(e,this.cat||cat);return this.azzera(),v&&(a=await v(cat,r)),a?(await this.parsedata(a,t),this.getmacro()):void _.add(`missing cbGetFile: ${r}/${cat}`)}async#t(e,t,a,r){var i,{name:s,cat:cat}=y(e,this.cat);if(v&&(i=await v(cat,s)),!i)return[];if(i.includes("$1")&&r&&r.length>0)for(var n=1;n<r.length;n++)i=i.replaceAll(`$${n}`,r[n]);var o=q(i),c=[];for(var l of(t&&(o=o.filter((e=>!/^\{(\:?(var|valid|formula|header|genera|v|f|h))[\s|\}]/im.test(e)))),o)){const e=he.exec(l);if(e)t=!e[1].startsWith(":"),c.push(l);else{const e=/^\s*\{i\s(.+)?\}/im.exec(l);if(e){r=E(e[1]);if(!a.includes(r[0])){a.push(r[0]);var f=await this.loadinclude(r[0],t,a,r);Array.isArray(f)&&c.push(...f),a.pop()}}else c.push(l)}}return c}async parsedata(e,t=!1){if(this.azzera(),!e)return;var a=[],r=q(e),i=!1;let s=[];for(var n of r){const e=he.exec(n);if(e)i=!e[1].startsWith(":"),a.push(n);else{const e=/^\s*\{i\s(.+)?\}/im.exec(n);if(e){var o=E(e[1]),c=await this.#t(o[0],i,[o[0]],o);Array.isArray(c)&&a.push(...c)}else a.push(n)}}i=!1;var l=this.codice;for(var n of a){const e=he.exec(n);if(e)if(e[1].startsWith(":"))l=this.codice;else switch(e[1]){case"genera":case"g":if(d=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(n)){var f=x(E(d[2])[0]);this.genera[f]=[],l=this.genera[f]}else(l=this.errori).push(n);break;case"valid":l=this.valid;break;case"var":case"v":if(d=/^\s*\{(var|v)\s+(.+)?\}/im.exec(n)){var h=E(d[2]);f=x(h[0]);this.localvar[f]={name:f,des:h[1]||"",rows:[]},l=this.localvar[f].rows}else(l=this.errori).push(n);break;case"formula":case"f":var d;if(d=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(n)){f=x(d[2]);this.formula[f]=[],l=this.formula[f]}else(l=this.errori).push(n);break;case"h":case"header":l=s;break;default:this.errori.push(n),l=this.errori}else n.startsWith("{")&&(l=this.codice),l.push(n)}for(var u in this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,t),this.formula)this.formula[u]=this.cleanfiltraparametri(u,this.formula[u],t);for(var u in this.localvar){var v=new ee,m=this.localvar[u];v.setheader(u,this.cat),await v.loadContentExtended(m.rows),m.des&&(v.des=m.des),this.localvar[u]=v}r=this.valid;for(var n of(this.valid=[],r)){(y={v:(y=$(n,",")).v,msg:y.o}).v&&(y.v.startsWith("#")?this.formula[y.v.substring(1)]&&this.valid.push(y):this.valid.push(y))}r=s;var p=[];for(var n of r){if(_=/^\s*([\w\-\_]+)+[\;\,\s]\s*(.*)?$/im.exec(n)){o=E(_[2]);var g=b(_[1]);let e;if(g)for(var w of(e=p.find((e=>e.cod==g)),e||(e={cod:g,t:"t"},p.push(e)),o)){var y;switch((y=$(w)).v){case"t":e.t=y.o;break;case"def":case"default":e.def=y.o;break;case"valid":case"colonna":case"hidden":y.o.startsWith("#")?this.formula[y.o.substring(1)]&&(e[y.v]=y.o):e[y.v]=y.o;break;default:e[y.v]=y.o}}}}this.head=p;r=this.genera;var k={};for(var S in r)if(Array.isArray(r[S])){var F={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]};const e=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;for(var O of r[S]){var _;if(_=e.exec(b(O)))switch(_[1]){case"calcola":case"c":F.calcola=[...F.calcola,...E(_[2])];break;case"exclude":case"e":case"escludi":F.exclude=[...F.exclude,...E(_[2])];break;case"bom":case"db":F.bom=[...F.bom,...E(_[2])];break;case"vars":case"v":F.vars=[...F.vars,...E(_[2])];break;case"head":case"h":F.head=E(_[2]);break;default:this.errori.push(`genera ${S} => ${O}`)}else F.codice.push(O)}F.codice=H(F.codice,!0),k[S]=F}this.genera=k}cleanfiltraparametri(e,codice,t){if(codice&&codice.length){for(var a=!1,r=0;r<codice.length;r++){let t=/^\:p[;,\s]+(.*)?$/im.exec(codice[r]);if(t)codice[r]=null,a=!0,this.parametri[e]=E(t[1]);else{let t=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(codice[r]);t&&(codice[r]=null,a=!0,this.parametri[e]=E(t[2]))}}a&&(codice=codice.filter((e=>null!=e)))}return codice=H(codice,t)}}class ve{constructor(){this.barre={}}azzera(){this.barre={}}oriented(e,t,a,r){switch(e=(e||"1").substr(0,1).toLowerCase()){case"0":break;case"l":return{t:"l",x:t};case"a":return{t:"a",x:a};case"p":return{t:"p",x:r};case"2":return{t:e,x:t,y:r,z:a};case"5":return{t:e,x:t,y:a,z:r};case"4":return{t:e,x:r,y:t,z:a};case"3":return{t:e,x:a,y:r,z:t};case"6":return{t:e,x:r,y:a,z:t};default:return{t:"1",x:a,y:t,z:r}}}async getcode(e,t,a,r,i){let[s,n]=e.split(":");n=n||"";var o=async(e,s)=>{var n=this.barre[e];if(!n&&i&&((n=await i(e))||(n={t:"1",r:[]}),this.barre[e]=n,n.coderr&&"errore"!=n.coderr||(n.coderr=`#err_${e}`)),!n||0==n.r.length)return{extra:{err:"missing codicebarra"},c:`#err_${e}`,fm:10};var{t:c,x:l,y:f,z:h}=this.oriented(e,t,a,r),d={barra:e,fm:n.fm,t:c,liv:s,items:n.r.length,err:""},u=n.r;if(h){var v=u.filter((e=>e.z===h||!e.z));v.length>0?u=v:d.err=`spessore non coerente: ${h}`}if("l"==c||"a"==c||"p"==c){if(c=u.find((e=>e.x>=l)))return{c:c.c,fm:c.x==l?0:1,x1:c.x,x:l,extra:d}}else{var c;if(c=u.find((e=>e.x==l&&e.y==f)))return{c:c.c,fm:0,x:l,y:f,z:h,x1:c.x,y1:c.y,z1:c.z,extra:d};if(0!=n.fm&&(c=u.find((e=>e.x>=l&&e.y==f))))return{c:c.c,fm:1,x:l,y:f,z:h,x1:c.x,y1:c.y,z1:c.z,extra:d};if(0!=n.fm&&2!=n.fm&&(c=u.find((e=>e.x>=l&&e.y>=f))))return{c:c.c,fm:2,x:l,y:f,z:h,x1:c.x,y1:c.y,z1:c.z,extra:d}}return n.codalt&&s<5?await o(n.codalt,s+1):{c:n.coderr,fm:9,x:l,y:f,z:h,extra:d}};return await o(s,0)}compila(e,t){t||(t={});var a={};if(Array.isArray(e)){for(var r of e)if(r.cod=b(r.cod),r.barcode=b(r.barcode),r.barcode.length>2&&"+"==r.barcode[0]){r.barcode=r.barcode.substr(1);var i=this.oriented(r.barcode.substr(0,1),r.l,r.a,r.p);i.c=r.modello?{c:r.cod,m:r.modello}:r.cod,a[r.barcode]||(a[r.barcode]={t:r.barcode.substr(0,1),r:[]},t[r.barcode]&&(a[r.barcode]=Object.assign(t[r.barcode],a[r.barcode]))),a[r.barcode].r.push(i)}for(var s in a){a[s].r.sort(((e,t)=>e.y?1e4*(e.x-t.x)+(e.y-t.y):e.x-t.x))}}this.barre=a}}function me(e){var t=q(e,!1),a=(e={},{r:[]}),r=!1;for(var i of t){var s=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(i);if(s)a={cod:s[2],des:s[2],r:[]},r=!1,e[s[2]]=a;else if(!/^\s*\:/.exec(i)){var n,o=i.split(","),c={cod:b(o[0])};(n=(o[1]||"").trim())&&(c.des=n),(n=b(o[2]))&&(c.tipo=n),(n=b(o[3]))&&(c.alias=n),(n=b(o[4]))&&(c.valid=n),(n=b(o[5]))&&(c.visible=n),c.cod&&(r||"sep"!=c.tipo?a.r.push(c):(a.des=c.des,a.valid=c.valid,a.visible=c.visible,r=!0))}}return e}function pe(e){var t=q(e.toLowerCase(),!1),a={};for(var r of t)if(!/^\s*\:/.exec(r)){var i=E(r);i[0]&&i[1]&&(a[i[0]]=i[1])}return a}class ge{#a=void 0;#r=void 0;#i=void 0;#s=void 0;constructor(cat=".",e=100,t=!1){this.righevuote=t,this.maxdelays=e,this.setcatalog(cat)}setcatalog(cat){return cat=b(cat),this.cat!=cat&&(this.cat=cat,this.item=this.rule=this.model="",this.azzera(!0)),cat}azzera(e=!1){this.vari=new X,this.ruleheader="",e&&(this.macro={},this.varianti={},this.varelenco={},this.macroelenco={},this.scripts={},this.#a=void 0,this.#r=void 0,this.#i=void 0,this.#s=void 0)}async#n(cat){u&&(this.varelenco[cat]||(this.varelenco[cat]=await u("headers",cat,"_varianti"),this.varelenco[cat]||(this.varelenco[cat]=[])))}parseheaderfrominfo(e){if(e&&e.length>0)for(var t of e)switch(t.tipo){case"_headers":t.value,t.value=me(t.value),this.#a=t.value||{};break;case"_alias":t.value,t.value=pe(t.value),this.#r=t.value||{};break;case"_typos":t.value;var a=O(t.value);for(var r in a){var i=a[r];i.db&&(i.db=H(q(i.db))),i.list&&(i.list=H(q(i.list)))}t.value=a,this.#s=t.value||{}}}setitem(item,e,model,t){this.item=item,this.rule=e,this.model=model,this.data=t||(new Date).toInt()}async getheader(cod){if(!this.#a&&u){var e=await u("headers",this.cat,"_headers");this.parseheaderfrominfo(e)}return this.#a||(this.#a={}),this.#a[cod]}async getalias(){if(!this.#r&&u){var e=await u("headers",this.cat,"_alias");this.parseheaderfrominfo(e)}return this.#r||(this.#r={}),this.#r}get deriva(){return this.#i,this.#i||[]}async getmacro(riga){try{if("string"==typeof riga&&(riga={tipo:"M",contenuto:riga}),!riga||!riga.contenuto)return;var e=/^([\(\{\}\)\:\$\w\.\\\/]+)[\s\;\,]*(.*)?$/im.exec(riga.contenuto);if(!e)return void _.add("Macro non valida:"+riga.contenuto,riga);(macro=b(e[1])).includes("$")&&(macro=await this.vari.valuta(macro));var t=E(e[2]),{name:a,cat:cat}=y(macro,this.cat);this.cat=cat;var macro,r=`${cat}/${a}`;if(!this.macro[r]){var i=new ue(this,a);await i.load()?this.macro[r]=i:_.add(`macro fail to load ${r}`,riga)}return(macro=this.macro[r])?{macro:macro,pars:t}:(_.add(`macro non trovata ${r}`,riga),{})}catch(e){_.add(l(e),`ambiente.getmacro: ${riga?.contenuto}`)}}async varcompila(e,t){var a=new ee(this);(await a.load(e,this.cat,!0),a.alias)&&((await this.getalias())[e]=a.alias);t("variants",{cod:e,des:a.des||"",alias:a.alias,info:a.alias?"":JSON.stringify(F(a,["amb"]))})}async macrocompila(e,t){var a=new ue(this,e);await a.loadAndCompile(`${e}.mu`);var r=a.getmacro();t("macros",{cod:e,info:JSON.stringify(r),isgenera:a.isgenera,isheader:a.isheader,iscodice:a.iscodice})}async barrecompila(e,t,a){var r=new ve;for(var i in r.compila(e,t),r.barre){a("barcodes",{cod:i,des:"",info:JSON.stringify(r.barre[i])})}return r}async tojson(e){let t;return d&&(t=await d("json",e)),t}async compila(e,t){if(t){for(var a of e.var)await this.varcompila(a,t),π;for(var a of e.mu)await this.macrocompila(a,t);if(t("infos",{cod:"info",des:e.cat,info:JSON.stringify({cat:e.cat,md:e.info})}),this.#a=void 0,this.#r=void 0,this.#i=void 0,this.#s=void 0,u){var r=await u("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(r)}this.#a?t("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):p("missing headers"),this.#r&&t("infos",{cod:"alias",des:"",info:JSON.stringify(this.#r)}),this.#i&&t("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#i)}),this.#s&&t("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#s)})}}async getvariante(cod){var{name:e,cat:cat}=y(cod,this.cat),t=e;if(cat==this.cat&&this.#r&&this.#r[e]&&(t=this.#r[e]),await this.#n(cat),!this.varelenco[cat].length||this.varelenco[cat].includes(e)){var a=`${cat}/${t}`;if(!this.varianti[a]){var r=new ee(this);await r.load(a,cat),this.varianti[a]=r}return this.varianti[a]}}async getheaderfromdb(e){let{head:t,rows:a,macros:r,deriva:i}=await u("header",this.cat,e,!this.#i);this.#i||(this.#i=i),await this.#n(this.cat),t.cod=b(t.cod),t.rule=b(t.rule),t.ruledef=t.ruledef||[];let s=new Set;for(var n of a){n.cod=b(n.cod),n.alias=b(n.alias),n.t=b(n.t);let e=n.alias?n.alias:n.cod;if(!this.varianti[`${this.cat}/${e}`]){let t=this.varelenco[this.cat];t&&t.includes(e)&&s.add(e)}}if(s=[...s],s.length&&f){var o=await f(this.cat,s);if(o&&o.length)for(var c of o){let{name:e,content:t}=c,a=new ee(this);a.setheader(e,this.cat),t&&await a.loadContentExtended(t),this.varianti[a.key]=a}}return{head:t,rows:a,macros:r}}async getlinkedmacros(e,t){var a=e=>e.includes("/")?e:`${this.cat}/${e}`;let r,i=[];if(e&&(r=a(e),this.macro[r]||i.push(e)),t&&"string"==typeof t){let e=t.split(";");for(var s of e)r=a(s),this.macro[r]||i.push(s)}if(i&&i.length>0&&h){let e=await h(this.cat,i);if(e&&e.length>0)for(var n of e){let e=new ue(this,n.name);for(var o in n.content){let t=n.content[o];e[o]=t}this.macro[e.key]=e}}}async setruleheader(e,t){var{name:a,cat:cat}=y(e,this.cat),r=`${cat}/${a}`;if(!this.macro[r]){let{head:t,rows:n,macros:o}=await this.getheaderfromdb(a);await this.getlinkedmacros(t.rule,o);var i=new ue(this,a);if(!t)return void _.add("Missing rule: "+e);if(t.rule){let e=this.macro[`${cat}/${t.rule}`];if(e)for(var s in e)["cat","name","key"].includes(s)||(i[s]=e[s])}n&&n.length&&(i.head=n),this.macro[r]=i}this.ruleheader=r;let n=this.macro[r];return _.azzera(),await n.setparametri(t),n}getruleheader(){return this.macro[this.ruleheader]}async setvariante(cod,e){return await se(this,null,cod,e)}async valuta(codice){let e;return"string"==typeof codice&&(codice=H(q(codice,this.righevuote))),Array.isArray(codice)&&(p("m1",codice),e=await oe(this,null,codice)),e}setinfos(e){e&&(this.#a=e.headers,this.#r=e.alias,this.#i=void 0,this.#s=e.typos)}}Date.prototype.toInt||(Date.prototype.toInt=function(){const e=this;return e.getDate()+100*(e.getMonth()+1)+1e4*e.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const we={mus:{variants:{cod:"s",des:"s",alias:"s",info:"s",md:"s",__pk:"cod"},extras:{tipo:"s",cod:"s",info:"s",__pk:"tipo, cod"},macros:{cod:"s",des:"s",info:"s",md:"s",def:"s",isgenera:"i",iscodice:"i",isheader:"i",__pk:"cod"},infos:{cod:"s",des:"s",info:"s",__pk:"cod"},barcodes:{cod:"s",des:"s",info:"s",__pk:"cod"}}},{Clear:be,Reset:$e,Bold:ye,Reverse:xe,Red:Ee,Green:ke,Yellow:Se,Blue:Fe,Magenta:Oe,Cyan:_e,White:Le}=a();var Ce=o(process.argv);console.log("----------------------------------------------------------------------------------------"),console.log(`${ye}${_e}${ye}Markuno:${$e} command line utility del linguaggio (c) Croswil 2024 v. ${Se}1.0.51${$e}`),console.log("----------------------------------------------------------------------------------------");var Ie={FOLDERBASE:"./",DBWORK:"./data/app.db",FOLDERCAT:"./data/mu",FOLDEROUT:"./out",CAT:"cat"};const Ae=".lasts.markuno";e.existsSync(Ae)&&(Ie=JSON.parse(e.readFileSync(Ae)));var De=Ce._;(Ce.h||Ce.help||!De[2])&&(console.log(`Uso: ${ye}markuno <funzioni> <[catalogo/]markuno> [opzioni]${$e} \n${ye}${_e}Funzioni:${$e} (seleziona una tra le seguenti)\n ${Le} c, compila ${$e}${ke} compila un catalogo/Markuno + Codici Barra\n ${Le} d, dump ${$e}${ke} compila e salva il compilato in formato json\n ${Le} e, esegui ${$e}${ke} esegui un file markuno \n ${Le} f, formatta ${$e}${ke} Formattazione di un file .mu o .var\n ${Le} g, genera${$e}${ke} generatore di codice \n ${Le} w, watch ${$e}${ke} abilita il watch su un file markuno \n ${Le} gw <markuno> <maxele> ${$e}${ke} Genera con wath (solo i primi maxele=20 elementi senza salvare\n${ye}${_e}Opzioni:${$e}${ke}\n ${Le} -h, --help${$e}${ke} mostra l'help\n ${Le} -c, --cat <cat>${$e}${ke} catalogo (default='${Ie.CAT}' ) \n ${Le} -d, --dbwork ${$e}${ke} database principale (default='${Ie.DBWORK}')\n ${Le} -i, --init <folder>${$e}${ke} cartella di lavoro (default='${Ie.FOLDERCAT}' ) \n ${Le} -o, --out <folder>${$e}${ke} cartella di output (default='${Ie.FOLDEROUT}' ) \n ${Le} -x, --xlsx${$e}${ke} output in formato excel (generatore)\n `),process.exit(0));let je=0;const ze="./",Ne=Ce.d||Ce.dbwork||Ie.DBWORK,Te=Ce.i||Ce.init||Ie.FOLDERCAT,Me=Ce.o||Ce.out||Ie.FOLDEROUT,Re=Ce.c||Ce.cat||Ie.CAT;var We=void 0,Ue=!1;e.existsSync(Te)||Ve(`Manca la cartella di lavoro: ${Te}`),Ie=Object.assign(Ie,{FOLDERBASE:ze,DBWORK:Ne,FOLDERCAT:Te,FOLDEROUT:Me,CAT:Re}),e.writeFileSync(Ae,JSON.stringify(Ie,null,2)),e.existsSync(Te)||e.mkdirSync(Te,{recursive:!0});const Je=Ce.x||Ce.xlsx;function Ve(e){var t=e.stack.toString().split("\n");t.splice(0,1),t=t.filter((e=>!/module/.test(e)&&!/node\:/.test(e))),console.log(`${Ee}${e.message}${$e}\n${t.join("\n")}`),process.exit(1)}function Pe(cat){var a=t.join(Te,`mu_${cat}.db`);e.existsSync(a)||r(a,we,"mus"),console.log("DB",a);var n=i.db(a);return s(we),n}function Be(t){var a="",r="",i=`${t}.txt`;e.existsSync(i)&&(a=e.readFileSync(i).toString());i=`${t}.md`;return e.existsSync(i)&&(r=e.readFileSync(i).toString()),{def:a,md:r}}function Ke(cat,a){var r=e.readdirSync(a),i={cat:cat,info:"",mu:[],var:[],inc:[]};for(var s of r){var n=t.join(a,s),o=t.extname(s),c=t.basename(s,o);"__info.md"==s?i.info=e.readFileSync(n).toString():".mu"==o?i.mu.push(c):".var"==o?i.var.push(c):".inc"==o&&i.inc.push(c)}return i}async function Xe(e,t,a){const r=await import("xlsx"),i=r.utils.json_to_sheet(e),s=r.utils.book_new();r.utils.book_append_sheet(s,i,t),r.writeFile(s,`${a}.xlsx`,{compression:!0})}async function Ge(e,t){const a=await import("xlsx");var r=a.readFile(e).Sheets[t];return a.utils.sheet_to_json(r)}async function cbGetMacro(cat,t){var a=`${Te}/${cat}/${t}.mu`;return e.existsSync(a)?e.readFileSync(a).toString():""}async function cbGetVariante(cat,t){var a=`${Te}/${cat}/${t}.var`;return e.existsSync(a)?e.readFileSync(a).toString():(_.add(`missing var: ${cat}, ${t}`,{t:"cbGetVariante"}),"")}async function cbFunc(e,t,a){_.add(`missing fun: ${e}`,{t:"cbFunc"})}async function cbInfo(t,cat,a){if(Array.isArray(a)){var r=[];for(var i of a){var s=await cbInfo(t,cat,i);s&&r.push({tipo:i,value:s})}return r}switch(t){case"filter":if(!We||!a&&!a[0])return[];if(Ue)return[];var n=We.all("select item,model,rule,varfilter,result,result2,exclude,exclude2 from limits where variant=?",a[0]);for(var o of n)o.valfilter=JSON.parse(o.varfilter||"{}"),o.result=JSON.parse(o.result||"[]"),o.result2=JSON.parse(o.result2||"[]");return n;case"headers":var c;return c="_typos"==a?`${Te}/${cat}/typos.json`:`${Te}/${cat}/${a}.inc`,e.existsSync(c)?e.readFileSync(c).toString():""}}async function cbGetFile(cat,a){if(e.existsSync(t.join(ze,a)))return e.readFileSync(t.join(ze,a)).toString();const r=`${Te}/${cat}/${a}`;if(e.existsSync(r))return e.readFileSync(r).toString();_.add(`missing file: ${r}`,{t:"cbGetFile"})}function qe(cat,a){var r=t.extname(a);[".mu",".var",".inc"].includes(r)||(r=".mu",a+=".mu");var i=t.join(Te,cat||Re),s=t.join(ze,a);if(e.existsSync(s))return{file:s,folder:i,diversi:!0};var n=a.indexOf("/");if(n>0&&(cat=a.substr(0,n),a=a.substr(n+1),i=t.join(Te,cat||Re),!e.existsSync(i)))throw new Error("missing folder: "+i);if(s=t.join(i,a),e.existsSync(s))return{file:s,folder:i,diversi:!1,ext:r};throw new Error(`non trovato il file: ${a} su ${i}`)}async function He(amb,t){var{file:a,folder:r,diversi:i}=qe(amb.cat,De[3]||""),s=parseInt(De[4]||"10");console.log(`Start Watching: ${_e}${ye}${a}${$e}`),e.watch(r,(async(e,a)=>{a&&await t(amb,s)})),i&&e.watch(a,(async(e,a)=>{a&&await t(amb,s)})),await t(amb,s)}async function Ye(amb,a){var{file:r,folder:i,diversi:s}=qe(amb.cat,De[3]||"");if(!e.existsSync(r))throw new Error("Manca il file: "+r);var n=t.extname(r),o=t.basename(r,n),c=new ue(amb,o),l=(new Date).valueOf();await c.loadAndCompile(`${o}${n}`);var f=(new Date).valueOf(),h={},d={},u=[],v=[],m=[];if(await async function(macro,amb,e,t,a=0){if(macro.isgenera&&t){var r={counter:0,keys:{},isTestmode:a};for(var i in macro.genera)await ce(macro,amb,i,t,r);return!0}}(c,amb,0,((e,t,r,i,s)=>{if(a){var n=[];for(var o in t){var c=t[o];if("number"==typeof c&&(c=Math.round(1e4*c)/1e4+""),"__id"!=o){var l=n.length;m[l]||(m[l]=o,v[l]=o.length),v[l]<c.length&&(v[l]=c.length),n.push(c)}}u.push(n)}else{var f=e.split("_")[0]||f;if(h[f]||(h[f]=[]),h[f].push(t),t.cod&&(d[f]=!0,r))for(var p in r){var g=`${f}_${p}`;h[g]||(h[g]=[]);var w=r[p];for(o=0;o<w.length;o++){var b=w[o];h[g].push({padre:t.cod,i:o,comp:b.c0,qt:U(b.c1),des:b.c2})}}}}),a),a){for(var p=0;p<m.length;p++)m[p]=m[p].padEnd(v[p]," ");for(var g of(console.log(`${Se}${m.join(" | ")}${$e}`),u)){for(p=0;p<g.length;p++)g[p]=g[p].padEnd(v[p]," ");console.log(g.join(" | "))}}else{var w=(new Date).valueOf(),b=0;for(var $ in d)b+=h[$].length,h[$].sort(((e,t)=>(e.cod||"").localeCompare(t.cod||"")));h._errori=c.geterrori(),e.writeFileSync(t.join(Me,`gen_${o}.json`),JSON.stringify(h,null,2));const a=t.join(Me,`gen_${o}.xlsx`);var y=(new Date).valueOf();if(Je){const e=await import("xlsx"),t=e.utils.book_new();for(var x in h){const a=e.utils.json_to_sheet(h[x]);e.utils.book_append_sheet(t,a,x)}e.writeFile(t,a,{compression:!0})}else e.existsSync(a)&&e.unlinkSync(a);var E=(new Date).valueOf();console.log(`${Se}${ye}EVAL........: ${b}${$e}${_e} rows\n${_e}load/compile: ${ye}${Se}${f-l}${$e}${_e} ms.\n${_e}generate....: ${ye}${Se}${w-f}${$e}${_e} ms.\n${_e}save JSON...: ${ye}${Se}${y-w}${$e}${_e} ms.\n${_e}save XLSX...: ${ye}${Se}${E-y}${$e}${_e} ms.\n--------------------------------\n${_e}${ye}TOTALE......: ${Se}${E-l}${$e}${_e} ms.`)}}async function Ze(amb){var{file:a,folder:r,diversi:i}=qe(amb.cat,De[3]||""),s=(new Date).valueOf(),n=e.readFileSync(a).toString(),o=new ue(amb,De[3]||"");je++,o.parsedata(n);var c=(new Date).valueOf(),l=await oe(amb,o,o.codice,{limited:!1,oldstyle:!0,localvar:o.localvar}),f=(new Date).valueOf();console.log(`${l.join("\n")}`),console.log(`${Se}${ye}EVAL ${je}${$e}: ${a} => ${_e}load:${ye}${Se}${c-s}${$e}${_e}ms. -- exec:${ye}${Se}${f-c}${$e}${_e}ms.${$e}\n----------------------------------------------\n${_.toString()}`),e.writeFileSync(t.join(Me,"logs.json"),JSON.stringify({loadandcompile:c-s,execute:f-c,vari:amb.vari.dump(),codice:o.codice,errori:o.errori},null,2)),e.writeFileSync(t.join(Me,"out.txt"),l.join("\n"))}await async function(){try{var amb=function(cat,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e){var t=new ge(cat);return g(cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e),t}(Re,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile),a=t.join(Te,Re);if(e.mkdirSync(Me,{recursive:!0}),!e.existsSync(a))throw new Error(`Manca il catalogo: ${Re} su ${Te}`);var r=(new Date).valueOf();switch(De[2].trim().toLowerCase()){case"g":case"genera":await Ye(amb,0);break;case"d":case"dump":await async function(amb){var{file:a,folder:r,diversi:i}=qe(amb.cat,De[3]||"");if(!e.existsSync(a))throw new Error("Manca il file: "+a);var s,n,o=t.extname(a),c=t.basename(a,o);if(console.log(c,o),".mu"==o){var l=new ue(amb,c);await l.loadAndCompile(`${c}${o}`),s=l.getmacro(),n=t.join(Me,c+".json")}else".var"==o&&(s=await async function(cod,cat,amb){var e=new ee(amb);return await e.load(cod,cat),e}(c,Re,amb),n=t.join(Me,c+".var.json"));s&&(e.writeFileSync(n,JSON.stringify(s,null,2)),console.log(`${_e}${ye}Dump: ${$e}${Se}${n}`))}(amb);break;case"gw":await He(amb,Ye);break;case"c":case"compila":await async function(amb){var a,r,s=t.join(Te,Re);if(!e.existsSync(s))throw new Error("Manca il catalogo "+Re);if(!e.existsSync(Ne))throw new Error("Manca il database di lavoro: "+Ne);if(e.existsSync(Ne))if((We=i.db(Ne)).esisteTabella("artbarre")){Ue=!0;var o=We.all("select cod cod,des des,flfm fm,coderr coderr,codalt codalt from artbarre order by cod ");for(var c of(r={},o)){(d=c.cod.trim().toLowerCase().substr(1))&&(r[d]={des:c.des,fm:c.fm,coderr:c.coderr.trim().toLowerCase(),codalt:c.codalt.trim().toLowerCase()})}a=We.all("select codicebarra barcode,diml l,dima a,dimp p,cod cod from articoli where codicebarra like ? order by codicebarra","+%")}else a=We.all("select barcode,l,a,p,cod from items where barcode>'' order by barcode"),r={};else console.warn("MISSING DBWORK (barre e limits)");var l=Pe(Re);l.begin(),l.run("delete from variants"),l.run("delete from macros"),l.run("delete from barcodes"),l.run("delete from extras");var f=Ke(Re,s);for(var h of(await amb.compila(f,((e,t)=>{if(t){if("macros"===e){var{def:a,md:r}=Be(`${t.cod}.mu`);t.def=a,t.md=r}n(l,e,t,"mus")}})),f.var)){var d,u=`${s}/${h}.var.txt`;if(e.existsSync(u))(d=Y(e.readFileSync(u).toString()))&&d.length&&n(l,"extras",{tipo:"l",cod:h,info:JSON.stringify(d)},"mus")}await amb.barrecompila(a,r,((e,t)=>{n(l,e,t,"mus")})),n(l,"infos",{cod:"info",des:f.cat,info:JSON.stringify({cat:f.cat,md:f.info})},"mus"),We&&We.chiudi();l.commit(),l.chiudi()}(amb),console.log(`Compilazione catalogo: ${Ee}${ye}${Re}${$e}: ${Se}${(new Date).valueOf()-r}ms.`);break;case"x":case"e":case"esegui":await Ze(amb);break;case"f":case"format":!function(amb){var{file:t,folder:a,diversi:r,ext:i}=qe(amb.cat,De[3]||"");if(e.existsSync(t)){var s=e.readFileSync(t).toString(),n=".var"==i;s=function(e,t){let lines=e.split("\n"),a=[],r=0,i=!1,s=!1,n=[];var o=t;o&&(o=(f=fe(0,lines)).fl)&&(n=f.cols);for(let e=0;e<lines.length;e++){let t=lines[e],v=t.trim();var c=v.split("//");let m=c[0].trim();c.splice(0,1);let p=c.length?` // ${c.join("//").trim()} `:"";if(v.startsWith("/*"))i=!0,a.push(v);else if(i&&v.endsWith("*/"))i=!1,a.push(v);else if(i)a.push(t);else{var l=le.exec(v);if(l){var f;a.push(v),r=l[1]?0:1,/^\s*\{(var|deriva|header|v|h)(\s.*)?\}/i.test(v)?(o=(f=fe(e+1,lines)).fl)&&(n=f.cols):o=!1,s=!1;continue}if(o)if(m.startsWith(":")&&!m.startsWith(":h ")||!m)a.push(v);else{var h=" ";m.startsWith(":h ")&&(m=m.substr(3).trim(),h=":h ");for(var d=E(m),u=0;u<d.length;u++)d[u].includes(",")&&(d[u]=`"${d[u]}"`),d[u]=d[u].padEnd(n[u]," ");a.push(`${h}${d.join(" , ")} ${p}`)}else{let e=" ".repeat(r>=0?r:0);if(s)a.push(`${e} ${v}`);else{let t="";v.startsWith("#")&&(t=v.substring(1).split(" ")[0].toUpperCase(),v="#"+t+v.substring(t.length+1)),["IF","IFDEF","IFNDEF"].includes(t)?v.indexOf("#",2)<0?(a.push(`${e}${v}`),r++):(v=v.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())),a.push(`${e}${v}`)):["FOR","SELECT","FORVAR","VARIANTE","DO"].includes(t)?(a.push(`${e}${v}`),r++):["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(t)&&r>0?a.push(" ".repeat(r>0?r-1:0)+v):["ENDIF","ENDSELECT","LOOP","ENDFOR"].includes(t)?(a.push(" ".repeat(r>0?r-1:0)+v),r--,r<0&&(r=0)):v.startsWith("_ ")||v.startsWith(":")?a.push(v):a.push(e+v)}s=m.endsWith("\\")}}}return a.join("\n")}(s,n),e.writeFileSync(t,s),console.log(`formatted: ${n} ${_e}${ye}${t}${$e}`)}}(amb);break;case"w":case"watch":await He(amb,Ze);break;default:throw new Error("Funzione non contemplata (g,c,b,x)")}}catch(e){Ve(e)}}();export{Pe as dbmu,Ke as getinfo,Be as getinfofile,Xe as xlsexport,Ge as xlsimport};
2
+ import e from"fs";import t from"path";import{init as a,checkdb as r,database as i,setstruttura as s,insertorupdate as n}from"croswil_lib";import o from"minimist";function c(e){let t="";if("string"==typeof e||"number"==typeof e)t=e+"";else if("object"==typeof e&&e){const a=Object.keys(e).sort(),r="\0";t=a.map((t=>`${t}${r}${String(e[t])}`)).join(r)}let a=2166136261,r=2218511855;for(let e=0;e<t.length;e++){const i=t.charCodeAt(e);a^=i,a+=a<<5^2779096485,r^=a,r=((r<<3)+i^2134516169)>>>0}return a>>>=0,a.toString(16)+r.toString(16)}function l(e){if(e&&"object"==typeof e){let t=e.stack?.toString().replace(/^.*?node_modules.*$/gim,"")||e.message||"";t=t.replaceAll("/","_").replaceAll(".js","").replaceAll("\n\n","\n").replace(/\;\s+/gi,"\n"),e=t}return(e=e.replace(/sqlite/gi,"SQL ")).replaceAll(";",",").trim()}let f,h,d,u,v,m;const p=(...e)=>{m?m(e):console.log(...e)};function g(e,t,a,r,i,s){h=e,f=t,d=a,u=r,v=i,m=s}const w=()=>(new Date).valueOf();function b(e){return(e||"").trim().toLowerCase()}function $(e,t="="){var a=(e=e||"").indexOf(t);return a>=0?{v:b(e.substring(0,a)),o:e.substring(a+t.length).trim(),fl:!0}:{v:b(e),o:"",fl:!1}}function y(e,cat){if((e=(e||"").trim()).indexOf("/")>0){var t=e.split("/");cat=t[0]||"",e=t[1]||""}if(!cat)throw new Error("manca il catalogo per "+e);return{name:e,cat:cat=x(cat)}}function x(e){if(!(e=(e||"").trim())||!/^(?:(\w|\-|\_|\+|\.))+$/im.test(e)){throw new Error(`nome non valido: |${e}| \n deve contenere solo lettere, _, e numeri`)}return e.toLowerCase()}function E(e){e=String(e||"");const t=/^(\d+)\.\.(\d+)$/.exec(e);if(t){var a=parseInt(t[1]),r=parseInt(t[2]),i=[];a>r&&([a,r]=[r,a]);for(var s=a;s<=r;s++)i.push(s+"");return i}if(!/["({[]/.test(e))return e.split(/[,;]/).map((e=>e.trim()));const n=[];let o="",c=0,l=!1;for(let t=0;t<e.length;t++){const a=e[t];if(0===c&&'"'===a&&(0!==t&&"\\"===e[t-1]||(l=!l)),l||("("===a||"["===a||"{"===a?c++:")"!==a&&"]"!==a&&"}"!==a||(c=Math.max(0,c-1))),","!==a&&";"!==a||0!==c||l)o+=a;else{const e=o.trim();n.push(e),o=""}}const f=o.trim();return f&&n.push(f),n.map((e=>(e=e.trim()).startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e))}const k=(e,t,a,r,i=!1)=>{const s=["[","(","{"],n=["]",")","}"];r||(r="["==a?"]":"("==a?")":"}");for(var o=s.includes(a),c=1,l=[],f=0,h=t;h<e.length;h++)if(o&&s.includes(e[h])||e[h]==a)c++;else if(o&&n.includes(e[h])||e[h]==r){if(0==--c&&e[h]==r)return l[f]=e.substring(t,h),{i:h,res:l}}else if(":"==e[h])1==c&&(l[f]=e.substring(t,h),t=h+1,f++);else if("\n"==e[h]&&i)return{i:h,res:l};return{i:-1,res:e.substring(t)}};function S(e,t){"object"==typeof e&&"object"==typeof t&&Object.keys(t).forEach((a=>{Object.hasOwn(e,a)&&"function"!=typeof e[a]&&(e[a]=t[a])}))}function F(e,t){return"object"==typeof e?Object.keys(e).reduce(((a,r)=>("function"!=typeof e[r]&&(t&&t.length>0&&t.includes(r)||(a[r]=e[r])),a)),{}):{}}function O(e,t){if(Array.isArray(e))return e;if("string"!=typeof e)return e;if(""==e)return t||{};try{return JSON.parse(e)}catch(a){return p(`Errore parsing JSON: ${a}\n${e}`),t||{}}}const _=new class{constructor(){this.azzera()}azzera(){this.err=[]}add(e,t){this.err.push({msg:e,row:t})}get(){return this.err}get length(){return this.err.length}toString(){var e=[];for(var t of this.err){let a="object"==typeof t.msg?JSON.stringify(t.msg):t.msg||"";e.push(`${t.row?t.row+":":""}${a}`)}return e.join("\n")}};const L=/(?<!\w)\(/g,C=/^-?[0-9.]+$/,I=/^(\w+)(\!)?\[(.*)?\]$/,A=/^(rnd|random|cas)\(/i,D=/^clamp\(/i,j=/^(dec|round)\(/i,z=/[0-9.]/,N=/[+\-*/\^\%]/,T=/[a-zA-Z]/i;function M(e){for(e=(e+"").trim();;){var t=L.exec(e);if(!t)break;var{i:a,res:r}=k(e,t.index+1,"(",")");if(a<=0)break;e=e.substring(0,t.index)+M(r[0])+(a>=0?e.substring(a+1):"")}return e=function(e){if(e.includes("[")){function r(e){let t=e[1],a=!!e[2],r=E(e[3]);for(var i of r)if(i==t)return a?"0":"1";return a?"1":"0"}for(;;){var t=I.exec(e);if(!t)break;var a=r(t);e=e.substring(0,t.index)+a+e.substring(t.index+t[0].length)}}return e}(e),function(e){let t,a;const r={"||":()=>M(t)||M(a)?1:0,"|":()=>M(t)||M(a)?1:0,"&&":()=>M(t)&&M(a)?1:0,"&":()=>M(t)&&M(a)?1:0,"<<=":()=>b(t)<=b(a),">>=":()=>b(t)>=b(a),"===":()=>b(t)==b(a),"==":()=>b(t)==b(a),"!!":()=>b(t)!=b(a),"<<":()=>b(t)<b(a),">>":()=>b(t)>b(a),"<=":()=>W(t)<=W(a),">=":()=>W(t)>=W(a),"<":()=>W(t)<W(a),">":()=>W(t)>W(a),"=":()=>W(t)==W(a),"!":()=>W(t)!=W(a)};var i=-1,s="";for(var n in r)if((i=e.indexOf(n))>=0){s=n;break}return-1!==i?(t=e.slice(0,i),a=e.slice(i+s.length),r[s]&&r[s]()?1:0):W(e)}(e)}const R={sqr:e=>Math.sqrt(e),sqrt:e=>Math.sqrt(e),int:e=>Math.floor(e),floor:e=>Math.floor(e),round:e=>Math.round(e),abs:e=>Math.abs(e),sin:e=>Math.sin(e*(Math.PI/180)),cos:e=>Math.cos(e*(Math.PI/180)),tan:e=>Math.tan(e*(Math.PI/180)),atan:e=>Math.atan(e*(Math.PI/180)),atan2:(e,t)=>Math.atan2(e,t)*(Math.PI/180),asin:e=>Math.asin(e*(Math.PI/180)),acos:e=>Math.acos(e*(Math.PI/180))};function W(e){let t=0;function a(){const a=e[t];return N.test(a)?(t++,a):null}function r(){if(z.test(e[t]))return function(){const a=t;for(;t<e.length&&z.test(e[t]);)t++;return Number(e.slice(a,t))}();if("("===e[t]){t++;const a=s();return")"===e[t]&&t++,a}return T.test(e[t])?function(){var a=e.slice(t);if(!a)return 0;for(const[r,i]of Object.entries(R)){const n=new RegExp(`^(${r})\\(`,"i").exec(a);if(n){t+=n[0].length;const a=i(s());return")"===e[t]&&t++,a}}let r;if(r=A.exec(a),r){t+=r[0].length;let a=0,i=1;return")"!==e[t]&&(a=s(),","===e[t]?(t++,i=s()):(i=a,a=0)),")"===e[t]&&t++,Math.random()*(i-a)+a}if(r=D.exec(a),r){t+=r[0].length;const a=s();","===e[t]&&t++;const i=s();","===e[t]&&t++;const n=s();return")"===e[t]&&t++,Math.min(Math.max(a,i),n)}if(r=j.exec(a),r){t+=r[0].length;const a=s();let i=0;return","===e[t]&&(t++,i=s()),")"===e[t]&&t++,parseFloat(a.toFixed(i))}return t++,s()}():0}function i(){let i=r();for(;t<e.length&&/[\/\*\^\%]/.test(e[t]);){const e=a(),t=r();"*"===e?i*=t:"/"===e?i=t?i/t:0:"%"===e?i=t?i%t:0:"^"===e&&(i=Math.pow(i,t))}return i}function s(){let r=i();for(;t<e.length&&/[+\-]/.test(e[t]);){const e=a(),t=i();"+"===e?r+=t:"-"===e&&(r-=t)}return r}return e=e.replace(/\s/g,""),s()}function J(e){if(!e)return 0;if("number"==typeof e)return e||0;if("string"!=typeof e)return 0;var t=e.replaceAll(",",".");return C.test(t)?Number(t)||0:M(e)||0}const U=500;function V(e,t){var a=t[0]||"";if(!a)return"";if(e.counter>=U)return a;var r=K(e,e.var(B(e,a)));if(e.counter>=U)return a;if(t[1]){var i=E(r);if("l"==t[1])return String(i.length);var s=J(B(e,t[1]));if(!(s>=0&&s<i.length))return"";r=B(e,i[s])}if(t[2]){var n=J(B(e,t[2]));if(n){var o=0;return t[3]&&(o=J(B(e,t[3]))),n<0?r.slice(n):o?r.substring(n-1,n+o-1):r.substring(n-1)}}return r}function P(e,t){var a=E(t||""),r=b(a[0]);function i(e){return"\\t"==e?"\t":"\\n"==e?"\n":(e||"").replace(/&(\d+)/g,((e,t)=>String.fromCharCode(parseInt(t))))}switch(r){case"set":var s=B(e,a[1]||""),n=B(e,a[2]||"");e.add(s,e.vars(n));break;case"ex":s=B(e,a[1]||"");(n=B(e,a[2]||""))||(n=",");var o=J(B(e,a[3]||"")),c=s.split(n);return o>0&&c[o-1]||"";case"ex2":var l=i(a[1]||""),f=J(B(e,a[2]||""));return a.splice(0,3),(u=a.join(";")).split(l)[f>0?f-1:0]||"";case"replace":return a[1].replace(new RegExp(a[2]||"x","im"),(a[3]||"").trim());case"replace2":case"rp2":var h=i(a[1]||"x"),d=i(a[2]||"").trim();return a.splice(0,3),a.join(";").replace(new RegExp(h,"im"),d);case"tk":return(f=J(B(e,a[1]||""))||0)?a[f>0?f+1:2]||"":(f=J(B(e,a[2]||"")),l=a[1]||"",f?a[3].split(l)[f-1]:"");case"totab":return a.splice(0,1),a.join("\t");case"tosep":l=i(a[1]||"")||";";return a.splice(0,2),a.join(l);case"len":{let e;return a.length>2?(a.shift(),e=a.join(";")):e=a[1]||"",e.length}case"mid":var u=B(e,a[1]||""),v=(f=J(B(e,a[2]||"")),J(B(e,a[3]||"")));return u.substring(f-1,f+v-1);case"arrotonda":{u=J(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=J(a[2]),0==e&&(e=1e3)),Math.round(u*e)/e}case"iif":return(u=J(B(e,a[1])))?a[2]||1:a[3]||0;case"instr":case"instr2":var m=a[1]||"",p=a[2]||"";return m.toLowerCase().indexOf(p.toLowerCase())+1;case"instr2":p=a[1]||"";return a.splice(0,2),a.join(";").toLowerCase().indexOf(p.toLowerCase())+1;default:return{fun:r,pars:a}}}function B(e,t){if(t+="",e.counter>=U)return t;for(;;){const s=/\$([\{\(])/im.exec(t);if(!s)break;var a=s.index,{i:r,res:i}="("==s[1]?k(t,a+2,"(",")"):k(t,a+2,"{","}");t=B(e,t.substring(0,a))+V(e,i)+(r>=0?B(e,t.substring(r+1)):"")}return t=(t=t.replace(/\$([a-z|][\w|\.]*)/gi,((t,a)=>{for(var r="";a.length;){var i=K(e,e.var(a));if(i||!(a.length>1)){r=i+r;break}r=a.slice(-1)+r,a=a.substring(0,a.length-1)}return r}))).replace(/\$(\d+)\:(\d+)(\:(\d+))?/g,((e,t,a,r,i)=>{i=i?+i:1;let s=[];for(let e=+t;e<=+a;e+=i)s.push(e.toString());return s.join(";")})),t}function K(e,t){return t&&(e.counter++,e.counter<=U&&(t=B(e,t)),e.counter--),t}class X{constructor(){this.dictionary={},this.vec=[],this.counter=0}static isValidKey(e){return/^[\w][\w\d\.\[\]]*$/.test(e)}static sanitizeKey(e){return e.replace(/[^a-zA-Z0-9_\.\[\]]/g,"_")}push(){this.vec.push({...this.dictionary})}pop(){this.vec.length>0&&(this.dictionary=this.vec.pop())}clear(){this.vec=[],this.dictionary={}}azzera=()=>this.clear();var(e){let t="";const a=/^(\d+)\.\.(\d+)$/.exec(e);if(a){var r=parseInt(a[1]),i=parseInt(a[2]),s=[];r>i&&([r,i]=[i,r]);for(var n=r;n<=i;n++)s.push(n+"");return s}if(e.indexOf("|")>=0){let a=e.split("|");e=a[0],t=a[1]}function o(e,t){switch(t.trim().toLowerCase()){case"data":return a=parseFloat(e)||0,new Intl.DateTimeFormat("it",{day:"2-digit",month:"short",year:"2-digit"}).format(a.toDate());case"euro":return((e,t="")=>{if(e){var a=Intl.NumberFormat("en",{style:"currency",currency:"EUR"}).format(e);return a.replace(/€/g,"").replace(/\./g,";").replace(/,/g,".").replace(/;/g,",")+"€"}return t})(parseFloat(e));case"num":return((e,t=-1)=>{const a="string"==typeof e?parseFloat(e)||0:e;if(t<0)return a||0;const r=Math.pow(10,t);return Math.round(a*r)/r||0})(parseFloat(e));default:return e}var a}const c=X.sanitizeKey(e);if(X.isValidKey(c)){const e=c.toLowerCase();var l=/^([\w][\w\d]*)[\.\[]/.exec(e);if(l){var f=this.dictionary[l[1]];if(f&&"object"==typeof f)return o(function(e,t){for(var a=t.split("."),r=e,i=0;i<a.length;i++){var s=a[i],n=s.match(/(.*?)\[(\d+)\]/);if(n){if(void 0===(r=r[n[1]]))return"";r=r[parseInt(n[2],10)]}else r=r[s];if(void 0===r)return""}return"number"==typeof r?r+"":r}(f,e.substring(l[0].length)),t)}return o(this.dictionary[e]||"",t)}return""}getvar(e){return this.var(e)}colonna(e,t){return E[t]||e}dump(e=!1){var t=[];for(var a in this.dictionary)t.push({cod:a,val:this.dictionary[a]});return t=t.sort(((e,t)=>e.cod>t.cod)),e?t.map((e=>`${e.cod} = ${e.val}`)):t}add(e,t){const a=X.sanitizeKey(e);if(X.isValidKey(a)){const e=a.toLowerCase();0===t||t?this.dictionary[e]=t:delete this.dictionary[e]}else p(`Invalid key: ${e}`)}valutasync(e){return K(this,e)}async valuta(e,t){var a=await async function(e,t,a){if(t){for(var r=0;r<20;r++){var i=t.lastIndexOf("$[");if(!(i>=0)){t=K(e,t);break}var{i:s,res:n}=k(t,i+2,"[","]"),o=K(e,t.substring(0,i)),c=n?K(e,n[0]):"",l=s>=0?K(e,t.substring(s+1)):"",f=P(e,c);"object"==typeof f&&(f=a?await a(f?.fun,f.pars):`** fun: ${f.fun} ** `),t=o+(f="object"==typeof f?"**str**":f+""||"")+l}return t}return""}(this,e,t);return a=(e=>{for(;;){var t=e.indexOf("{");if(!(t>=0))break;var{i:a,res:r}=k(e,t+1,"{","}");if(a<0)return e;e=e.substring(0,t)+J(r[0])+(a>=0?e.substring(a+1):"")}return e})(a),a}}const G="IFDEF|IFNDEF|SELECT|CASES|CASE|DEFAULT|ELSEIFDEF|ELSEIFNDEF|ELSEIF|ELSE|ENDIF|ENDSELECT|PUSH|POP|FUNC|MACRO|LETS|LETO|LETM|LETT|LETV|LETM|LET|DEF|DO|VARIANTE|FORVAR|FOR|LOOP|ENDFOR|BREAK|EXIT|EXITFOR|CONTINUE|IF|F|M|J|:P".split("|");function q(codice,e){const t=codice.split("\n"),a=[];let r=!1,i="";for(const riga of t){let t=riga.trim();if(r)t.endsWith("*/")&&(r=!1);else if(t.startsWith("/*"))r=!0;else if(!r&&t.includes("//")&&(t=t.split("//")[0].trim()),0!==t.length||e)if(i.length>0&&(t=i+" "+t,i=""),t.endsWith("\\")){t=t.slice(0,-1);const e=t.lastIndexOf("//");-1!==e&&(t=t.slice(0,e).trim()),i=t}else a.push(t)}return a}function H(e,t=!1){if(Array.isArray(e)){var a=[];for(var r of e){const e=r.match(/^#([\w\.]+)\s*(.*)$/);if(e){var i=e[1].toUpperCase().trim(),s="";if(i.includes(".")){var n=i.split(".");i=n[0],s=n[1]}if(G.includes(i)){const t=e[2];if("IF"!==i&&"IFDEF"!=i&&"IFNDEF"!=i||!t.includes("#")){let t={tipo:i,contenuto:e[2]};s&&(t.tipo2=s),a.push(t)}else{var o=t.match(/^(.*?)\s*#\s*(\w+)\s*(.*?)\s*#\s*(\w+)\s*(.*)$/);o?(a.push({tipo:i,contenuto:o[1].trim()}),a.push({tipo:o[2].toUpperCase(),contenuto:o[3]}),a.push({tipo:"ELSE",contenuto:""}),a.push({tipo:o[4].toUpperCase(),contenuto:o[5]}),a.push({tipo:"ENDIF",contenuto:""})):(o=t.match(/^(.*?)\s*#\s*(\w+)\s*(.*)$/))?(a.push({tipo:i,contenuto:o[1].trim()}),a.push({tipo:o[2].toUpperCase(),contenuto:o[3]}),a.push({tipo:"ENDIF",contenuto:""})):a.push({tipo:e[1].toUpperCase(),contenuto:e[2]})}}else $(r)}else $(r)}for(var c=0,l=0,f=0,h=[],d=[],u=[],v=0;v<a.length;v++){var m=a[v];switch(m.i=v,m.tipo){case"FOR":case"FORVAR":case"VARIANTE":case"DO":d[++l]={pos:v,bk:[]};break;case"LOOP":case"ENDFOR":if(l>0){var{pos:p}=d[l];for(var g of d[l].bk)g.next=v,g.prev=p;m.prev=p,a[p].next=v,l--}break;case"BREAK":case"EXIT":case"EXITFOR":case"CONTINUE":l>0&&d[l].bk.push(m);break;case"IF":case"IFDEF":case"IFNDEF":h[++c]={pos:v,bk:[m]};break;case"SELECT":u[++f]={pos:v,bk:[m],first:v};break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(c>0){var{pos:p}=h[c];h[c].bk.push(m),a[p].next=v,h[c].pos=v}break;case"CASE":case"CASES":case"DEFAULT":if(f>0){var{pos:p,first:w}=u[f];u[f].bk.push(m),a[p].next=v,m.first=w,u[f].pos=v}break;case"ENDIF":if(c>0){var{pos:p,next:b}=h[c];for(var g of(a[p].next=v,h[c].bk))g.last=v;c--}break;case"ENDSELECT":if(f>0){var{pos:p,next:b}=u[f];for(var g of(a[p].next=v,u[f].bk))g.last=v;f--}}}return a}function $(e){if(a.length>0&&""==a[a.length-1].tipo){var r=a[a.length-1];t||e.startsWith("!")||e.startsWith("$")||e.startsWith("{")||e.startsWith("#")||r.contenuto.startsWith("!")||r.contenuto.startsWith("$")||r.contenuto.startsWith("{")||r.contenuto.startsWith("#")?a.push({tipo:"",contenuto:e}):r.contenuto=r.contenuto+"\n"+e}else a.push({tipo:"",contenuto:e})}_.add("muClean: expected array!")}function Y(e){var t,a=q(e),r=[],i=e=>e?[...new Set(e.split(",").map((e=>e.trim())).sort().filter((e=>e)))]:void 0;for(var s of a){var n=/^\s*\{(.*)?\}/im.exec(s);if(n)"limit"==b(n[1])?(t={},r.push(t)):t=void 0;else if(t&&(n=/^\s*\:(\w+)\s*(.*)/.exec(s)))switch(n[1].toLowerCase()){case"opz":case"o":t.opz=i(n[2]);break;case"obs":case"obsolete":t.obsolete=i(n[2]);break;case"scons":case"sconsigliate":t.scons=i(n[2]);break;case"neutri":t.neutri=i(n[2]);break;case"art":t.art=i(n[2]);break;case"mod":t.mod=i(n[2]);break;default:p("missing:",n[1])}}return r}function Z(e){let t,a=[];for(var r of e){t={},r.varfilter=O(r.varfilter,[]),r.result=O(r.result,[]),r.result2=O(r.result2,[]),r.exclude=parseInt(r.exclude)?1:0,r.exclude2=parseInt(r.exclude2)?1:0;let{item:item,model:model,rule:i,varfilter:s,result:n,result2:o,exclude:c,exclude2:l,datai:f,dataf:h}=r;function d(e){return e.map((e=>b("string"==typeof e?e:e.Value)))}if(n.length||o.length){if(n.length&&(c?t.ex=d(n):t.valid=d(n)),o.length&&(l?t.ex2=d(o):t.valid2=d(o)),item&&(t.i=b(item).split(";")),model&&(t.m=b(model).split(";")),i&&(t.r=b(i).split(";")),(f||h)&&f<h&&(t.datai=parseInt(f),t.dataf=parseInt(h)),s&&s.length){t.v=[];for(let u of s){let v=t.v.find((e=>e.v==b(u.Variant)));v||(v={v:b(u.Variant),o:[]},t.v.push(v)),v.o=[...v.o,b(u.Value).split(";")]}}Q(t),a.push(t)}}return a=a.sort(((e,t)=>t.l-e.l)),a}function Q(e){let t=0;e.i&&e.i.length&&(t+=5),e.m&&e.m.length&&(t+=3),e.r&&e.r.length&&(t+=2),e.v&&e.v.length&&(t+=3),e.datai&&e.dataf&&(t+=1),e.l=t}class ee{constructor(amb){this.rows={},this.name="$",this.key="$",this.amb=amb}setheader(e,cat){var{name:t,cat:cat}=y(e,cat);return this.cat=cat,this.name=t,this.alias="",this.obbligo=!1,this.des=t,this.rows={},this.h=[],this.key=`${cat}/${t}`,{name:t,cat:cat}}fromdim(dim,e=2){"number"!=typeof dim&&(dim=J(dim)),e>0&&e--;var t,a=1e9;for(var r in this.rows){var i=this.rows[r];if(!i.annulla){var s=parseFloat(i.v[e])||0;s<=a&&s>=dim&&(a=s,t=i)}}return this.#e(dim,t)}async load(e,cat,t=!1){var{name:a,cat:cat}=this.setheader(e,cat);if(f){var r=await f(cat,a);if(r){if(await this.loadContentExtended(r),r.filter)p("verifica anche i filtri!",r.filter),this.limits=Z(r.filter);else if(u&&!t){let e=await u("filter",cat,a);e&&e.length&&(this.limits=Z(e))}return!0}}return!1}async _loadContent(lines){const e=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;var t="";let a,r=[],i=!1;for(var s of lines){if("{limit}"==(n=s.toLowerCase()))a=[],r.push(a),i=!0;else if("{:limit}"==n)i=!1;else if(i)a.push(s);else{if(h=e.exec(b(s)))if(t&&"extra"==h[1].toLowerCase()){var n=E(h[2]);for(var o of n){var c=o.indexOf("=");if(c>0){var l=b(o.substring(0,c));"v"!=l&&(this.rows[t][l]=o.substring(c+1).trim())}}}else switch(h[1].toLowerCase()){case"alias":if((w=h[2].toLowerCase().split(";"))[0].trim()!=this.name)if(1==w.length)this.alias=w[0];else{var f;this.amb?f=await this.amb.getvariante(w[0]):(f=new ee,await f.load(w[0],this.cat));var h=f?.rows;if(h){var d=Object.keys(h);if(d.length){w.splice(0,1);const e=e=>{e&&e.forEach((e=>this.rows[e]=h[e]))};for(var o of w){var u=/([ei])\s*:\s*(.*)\s*$/im.exec(o);if(u){for(var v=u[2].split(","),m=0;m<v.length;m++)v[m]=v[m].trim();d="e"==u[1]?d.filter((e=>{for(var t of v)if(e.startsWith(t))return!1;return!0})):d.filter((e=>{for(var t of v)if(e.startsWith(t))return!0;return!1}))}}e(d)}}}break;case"h":this.h=E(h[2]).map((e=>({des:e})));break;case"t":let e=E(h[2]);if(this.h)for(let t=0;t<this.h.length;t++)this.h[t].t=e[t]||"";break;case"des":this.des=h[2];break;case"default":case"vdef":this.vdef=E(h[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else(g=b((n=E(s))[0]))&&(t=g,this.rows[t]={annulla:0,v:n})}}var p=Object.keys(this.rows);for(var g of p)if(g.includes(".")){var w=g.split(".");for(m=0;m<w.length-1;m++){var $=w.slice(0,m+1).join(".");this.rows[$]||(this.rows[$]={annulla:0,v:[$]})}}return this.limits=function(e){function t(e){let t={};const a=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;function r(e,a){function r(e,a){(a=b(a))&&(t[e]||(t[e]=[]),t[e].includes(a)||t[e].push(a))}if(Array.isArray(a))for(var i of a)r(e,i);else r(e,a)}for(var i of e){var s=a.exec(i);if(s)switch(s[1]){case"var":case"v":case"variante":let e=(s[2]||"").indexOf(" ");if(e>0){let a=b(s[2].substring(0,e)),r=E(s[2].substring(e+1));if(a&&r&&r.length){t.v||(t.v=[]);let e=t.v.find((e=>e.v==a));for(var n of(e||(e={v:a,o:[]},t.v.push(e)),r))e.o.includes(n)||e.o.push(n)}}break;case"d":case"dt":case"data":case"date":let a=s[2].split(" "),i=parseInt(a[0]),o=parseInt(a[1]);(i||o)&&(t.datai=i,t.dataf=o);break;case"rule":case"r":case"mu":r("r",E(s[2]));break;case"item":case"i":r("i",E(s[2]));break;case"model":case"m":r("m",E(s[2]));break;case"e":case"escludi":case"exclude":r("ex",E(s[2]))}else r("valid",E(i))}return Q(t),t}let a;if(e&&e.length){for(var r of e){let e=t(r);if(e&&(e.valid&&e.valid.length||e.ex&&e.ex.length)){let t=0;e.i&&e.i.length&&(t+=5),e.m&&e.m.length&&(t+=3),e.r&&e.r.length&&(t+=2),e.v&&e.v.length&&(t+=3),e.datai&&e.dataf&&(t+=1),e.l=t,a||(a=[]),a.push(e)}}a&&(a=a.sort(((e,t)=>t.l-e.l)))}return a}(r),!0}tovec(){var e=this.rows,t=[],a=Object.keys(e).sort();for(var r of a)this.rows[r].annulla<2&&t.push(this.#e(r,this.rows[r]));return t}#e(cod,e){var t=[cod];if(e)for(var a of e.v)a.indexOf(",")>=0?t.push(a.indexOf('"')>=0?`'${a}'`:`"${a}"`):t.push(a);return t.join(",")}tovar(cod){var e=b(cod);if(!this.rows[e])return cod;var t=this.rows[e];return 2==t.annulla?"":this.#e(cod,t)}isvalidopz(e){let t=b(e),a=this.rows[t];return!!a&&(1!=a.annulla&&!a.hasliv)}firstvalid(e){if(e&&this.isvalidopz(e))return e;if(this.vdef&&this.vdef.length)for(var t of this.vdef)if(this.isvalidopz(t))return t;for(var a in this.rows)if(this.isvalidopz(a))return a}resetfilter(){for(var e in delete this._valids,this.rows)this.rows[e].annulla=0}validkeys(){let e=Object.keys(this.rows)||[];return e=e.filter((e=>0==this.rows[e].annulla)).sort(),e}limita(){if(!this.limits||!this.amb)return this.resetfilter();let{item:item,rule:e,model:model,vari:vari,data:t}=this.amb,a=this.limits.filter((a=>{if(!item&&a.i&&a.i.length)return!1;if(!e&&a.r&&a.r.length)return!1;if(!model&&a.m&&a.m.length)return!1;if(a.i&&!a.i.includes(item))return!1;if(a.r&&!a.r.includes(e))return!1;if(a.m&&!a.m.includes(model))return!1;if(t&&a.datai&&t<a.datai)return!1;if(t&&a.dataf&&t>a.dataf)return!1;if(a.v&&a.v.length)for(var r of a.v){let e=b(vari.var(r.v).split(",")[0]);if(e&&!r.o.includes(e))return!1}return!0}));if(!a||!a.length)return this.resetfilter();let r=new Set,i=new Set,s=new Set,n=new Set,o=!1,c=!1;for(var l of a){if(l.valid&&l.valid.length){o=!0;let e=l.valid.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0]));r.add(...e),s.add(...l.valid.filter((e=>!e.includes("*"))))}if(l.ex&&l.ex.length){c=!0;let e=l.ex.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0]));i.add(...e),n.add(...l.ex.filter((e=>!e.includes("*"))))}}for(var f in this.rows){let e=this.rows[f],t=!1,a=!1;if(o){for(let e of r)if(f.startsWith(e)){t=!0;break}!t&&s.has(f)&&(t=!0)}if(c){for(let e of i)if(f.startsWith(e)){a=!0;break}!a&&n.has(f)&&(a=!0)}e.annulla=0,o&&!t&&(e.annulla=1),c&&a&&(e.annulla=1)}return a}async loadContentExtended(e){if("object"==typeof e){for(var t in e)["rows","des","h","alias","obbligo"].includes(t)&&(this[t]=e[t]);e.filter&&e.filter.length&&(this.limits=Z(e.filter))}else await this._loadContent(q(e,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}let te={};async function ae(e,t,a,vari,amb,r){if(d){if(te[t])return"";let e=await d(t,a,vari,amb,r);return e=(e||"").trim(),"!"==e&&(te[t]=!0,e=""),e}return e}async function re(amb,e,t){return await amb.vari.valuta(t,(async(t,a)=>{if("dim"===t){var r=J(a[1]),i=await ie(amb,e,a[2]),s=parseInt(a[3])||2;return i&&i.fromdim?i.fromdim(r,s):r}return await ae(`**fun:${t}**`,t,a,amb.vari,amb)}))}async function ie(amb,macro,e){return macro&&macro?.localvar&&macro.localvar[e]?macro.localvar[e]:await amb.getvariante(e)}async function se(amb,macro,e,t,a){let r,i=e;if((t=t||"")&&"string"==typeof t){var s=t.indexOf(":");s>=0&&(s>0&&(i=b(t.slice(0,s))),t=t.slice(s+1))}if(a&&a.alias&&(i=a.alias),r=await ie(amb,macro,i),r)if(a&&a.t)if("m"===a.t){var n=2;if(t.includes(":")){var o=t.split(":");n=parseInt(o[1]),t=o[0]}r.limita(),t=r.fromdim(parseFloat(t),n)}else{r.limita();let e=r.firstvalid(t);t=r.tovar(e)}else r.resetfilter(),t=r.firstvalid(t),t=r.tovar(t);else a&&a.t&&a.t;return amb.vari.add(e,t),t}const ne=(e,t)=>{null!=t&&null!=t&&("string"==typeof t&&t.startsWith("_ ")&&e.length>0&&"string"==typeof e[e.length-1]&&!tipo?e[e.length-1]+=t.slice(2):e.push(...t.split("\n")))};async function oe(amb,e,codice,options){if(!Array.isArray(codice))return _.add("codice is not a valid parsed array"),[];options||(options={}),options.id||(options.id="_"),options._stackmacro||(options._stackmacro=0),options.limited||(options.limited=!1),amb||_.add("amb deve essere definito");let vari=amb.vari;amb.maxdelays,amb.cat;let t=[];w();for(var a=0;a<codice.length;){var riga=codice[a];switch(riga.tipo){case"IFDEF":case"IFNDEF":case"IF":var r="IF"==riga.tipo?J(await re(amb,e,riga.contenuto)):"IFDEF"==riga.tipo?""!=await re(amb,e,riga.contenuto):""==await re(amb,e,riga.contenuto);riga.next?(codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)):_.add("Troppo tempo",riga);break;case"SELECT":riga.next?(codice[riga.next].t1=await re(amb,e,riga.contenuto),a=riga.next-1):_.add("manca endselect",riga);break;case"CASE":case"CASES":case"DEFAULT":if(riga.next)if(riga.jlast)riga.jlast=0,a=riga.last-1;else{r=1;if("CASE"==riga.tipo){r=0;var i=J(riga.t1||""),s=E(await re(amb,e,riga.contenuto));for(var n of s)if(J(n)==i){r=1;break}}else if("CASES"==riga.tipo){r=0;i=riga.t1||"",s=E(await re(amb,e,riga.contenuto));for(var n of s)if(n==i){r=1;break}}codice[riga.next].jlast=r?1:0,codice[riga.next].t1=riga.t1,r||(a=riga.next-1)}else _.add("manca select",riga);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(riga.next)if(riga.jlast)riga.jlast=0,a=riga.last-1;else{r="ELSE"==riga.tipo?1:"ELSEIF"==riga.tipo?J(await re(amb,e,riga.contenuto)):"ELSEIFDEF"==riga.tipo?""!=await re(amb,e,riga.contenuto):""==await re(amb,e,riga.contenuto);codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)}else _.add("manca endif",riga);break;case"ENDIF":case"ENDSELECT":break;case"PUSH":vari.push();break;case"POP":vari.pop();break;case"J":await ae("$$","$$",await re(amb,e,riga.contenuto),vari,amb,t);break;case"FUNC":case"F":case"MACRO":case"M":var{macro:macro,pars:o,xid:l}=await amb.getmacro(riga)||{};if(options._stackmacro>500)_.add("stack chiamate macro troppo profondo!",riga);else if(macro){let e=macro.parametri?._,r={};if("F"==riga.tipo||"FUNC"==riga.tipo)vari.push();else{if(macro.head)for(var f in macro.head)r[f]=amb.vari.var(f);if(e&&e.length)for(var f of e){let e=(f.split("=")[0]||"").trim().toLowerCase();e&&(r[e]=vari.dictionary[e])}}if(macro.codice.length){if(options._stackmacro++,options.grafica&&"function"==typeof options.grafica){let r="",i="",s=options.id;o&&o.length?(r=o.find((e=>e.startsWith("#id"))),r?(r=await vari.valuta(r.slice(3)),options.id=c(`${macro.name}${s}${r||a||""}`),o=o.filter((e=>!e.startsWith("#id"))),i=options.id):options.id=c(`z${s}${a}`)):options.id=c(`z${s}${a}`);let n=await options.grafica({tipo:riga.tipo,id:i,pars:o,parametri:e,macro:macro,options:options,xval:oe(amb,macro,macro.codice,options)});t.push(n),options.id=s}else if(macro.codice.length){await macro.impostaparametri(e,o);let a=await oe(amb,macro,macro.codice,options);t.push(...a)}options._stackmacro--}if("F"==riga.tipo||"FUNC"==riga.tipo)vari.pop();else for(var n in r)vari.dictionary[n]=r[n]}else _.add("Macro non trovata!",riga);break;case"LET":case"LETS":var h=-1;if((v=riga.contenuto.indexOf("="))>=0&&(h=riga.contenuto.indexOf("=",v+1)),h<0){if((v=(n=riga.contenuto).indexOf("="))>0){var d=await re(amb,e,n.slice(0,v).trim()),u=n.slice(v+1).trim();u="LET"==riga.tipo?J(await re(amb,e,u))||"":await re(amb,e,u),vari.add(d,u)}}else{s=E(riga.contenuto);for(var n of s){if((v=n.indexOf("="))>0){d=await re(amb,e,n.slice(0,v)),u=n.slice(v+1).trim();u="LET"==riga.tipo?J(await re(amb,e,u))||"":await re(amb,e,u),vari.add(d,u)}}}break;case"LETT":var v;if((v=riga.contenuto.indexOf("="))>0){d=await re(amb,e,riga.contenuto.slice(0,v).trim()),u=riga.contenuto.slice(v+1).trim();vari.add(d,u)}break;case"LETV":case"LETM":case"DEF":if(r=E(riga.contenuto))for(var f of r){var{v:n,o:m,fl:p}=$(f);p&&(n=await vari.valuta(n),m=await re(amb,e,m),await se(amb,e,n.trim().toLowerCase(),m.trim().toLowerCase(),"LETM"==riga.tipo?{t:"m"}:{t:"v"}))}break;case"DO":p=!0;(g=(riga.contenuto||"").trim())&&!J(await re(amb,e,g))&&(p=!1),riga.next&&(p||(a=riga.next+1));break;case"VARIANTE":case"FORVAR":case"FOR":{var g,b;if(options.oldstyle)n=(s=riga.contenuto.split(","))[2]||"i",b=s[0],g=s[1];else n=(s=E(riga.contenuto||""))[0]||"",b=s[1],g=s[2]||"";if(n=n.includes("$")?await re(amb,e,n):n||"","FORVAR"==riga.tipo||"VARIANTE"==riga.tipo){var y=(r=await re(amb,e,b))?await ie(amb,e,r):void 0;y?b=y.tovec():(b=[],_.add("getvariante not found!",riga))}else{var x=await re(amb,e,b||"");b=b?E(x):void 0}b=b||[];let t=0;if(riga.next){(F=codice[riga.next]).for={v:n,elenco:b,nc:t,valido:g};var k;p=!0;n&&b.length>0?t>=b.length?p=!1:(k=b[t],vari.add(n,k),g&&(p=!J(await re(amb,e,g)))):p=!1,p||(a=riga.next-1)}else _.add("manca endfor/loop",riga)}break;case"LOOP":var p=!0;riga.contenuto&&!J(await re(amb,e,riga.contenuto))&&(p=!1),p&&(a=riga.prev-1);break;case"ENDFOR":if(!riga.contenuto||J(await re(amb,e,riga.contenuto)))if(riga.for){var{v:n,elenco:b,valido:g}=riga.for;if(n&&b.length>0&&riga.for.nc<500)for(;;){if(riga.for.nc++,riga.for.nc<b.length){if(vari.add(n,b[riga.for.nc]),g&&J(await re(amb,e,g)))continue;a=riga.prev;break}break}}else _.add("manca istruzione for",riga);break;case"BREAK":case"EXIT":case"EXITFOR":riga.next?riga.contenuto.trim()?J(await re(amb,e,riga.contenuto))&&(a=riga.next):a=riga.next:_.add("break outside loop",riga);break;case"CONTINUE":riga.next?riga.contenuto&&!J(await re(amb,e,riga.contenuto))||(a=riga.next-1):_.add("continue outside loop",riga);break;default:if((r=await re(amb,e,riga.contenuto)).startsWith("!")){d="";if(F=/^\!(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){var S=F[1].toLowerCase();o=E(F[2]||"");d=await ae(r,S,o,vari,amb)}d&&ne(t,d)}else{var F;if(options.callback)if(F=/^(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){S=F[1].toLowerCase();var o=E(F[2]||"");r=await options.callback(S,o,options.key||"",a)}else r=await options.callback(r,[],options.key||"",a);ne(t,r)}}a++}return t}async function ce(e,amb,t,a,r){var i=e.genera[t];if(i){r.counter2=0;var s={},n=[];async function o(c){if(!(r.isTestmode&&r.counter>r.isTestmode)){if(c<i.vars.length){var l=i.vars[c];if(!s[l]){var f=await ie(amb,e,l),h=Object.keys(f.rows);if(h&&h.length>0){for(var d of h)n.push(d),amb.vari.add(f.name,f.tovar(d)),s[l]=!0,await o(c+1),s[l]=!1,n.pop();return}p("manca la variante",l)}}for(var u of i.calcola)e.formula[u]&&await oe(amb,e,e.formula[u],{limited:!0});for(var u of i.exclude){if(e.formula[u])if(w=await oe(amb,e,e.formula[u],{limited:!0}))for(var v of w){if(J(v))return}}var m=await oe(amb,e,i.codice,{limited:!0,localvar:e.localvar}),g={};for(var u of i.bom)if(e.formula[u]){var w=await oe(amb,e,e.formula[u],{limited:!0});for(var v of w=w.join("\n").split("\n"))if(v){var b=E(v);g[u]||(g[u]=[]);for(var $={},y=0;y<b.length;y++)$[`c${y}`]=b[y];g[u].push($)}}await async function(e,t,a,r,i,s){var n=!0;for(var o of t){var c=E(o);if(c[0]&&!s[c[0]]){s[c[0]]=1,s.counter++,s.counter2++;for(var l={__id:s.counter},f=0;f<c.length;f++){var h=r.head[f]?r.head[f]:`c${f}`;"#"==h[0]?l[h=h.substr(1)]=J(c[f]):l[h]=c[f]}await e(i,l,n?a:void 0,s.counter,s.counter2),n=!1}}}(a,m,g,i,t,r)}}await o(0)}}const le=/^\s*\{(\:)?(var|deriva|valid|formula|header|genera|g|v|f|h)(\s.*)?\}/i;function fe(e,lines){let t=!1;for(var a=[],r=e;r<lines.length;r++){let e=lines[r].trim(),o=e.split("//")[0].trim();if(e.startsWith("/*"))t=!0;else if(t&&e.endsWith("*/"))t=!1;else if(!t){if(le.test(e))return{fl:!0,i2:r-1,cols:a};if(o.endsWith("\\"))return{fl:!1};if(e.startsWith(":h ")&&(o=o.substr(3).trim()),!o.startsWith(":"))for(var i=E(o),s=0;s<i.length;s++){var n=i[s].length;i[s].includes(",")&&(n+=2),(!a[s]||a[s]<n)&&(a[s]=n)}}}return{fl:!0,i2:lines.length-1,cols:a}}const he=["l","a","p"],de=/^\{(\:?(var|valid|formula|genera|header|v|f|g|h))[\s|\}]/im;function ue(vari,e){var t=e.split("\n");for(var a of t)if(a.trim()){if(J(vari.valutasync(a)))return!0}return!1}class ve{constructor(amb,e){var{name:e,cat:cat}=y(e,amb.cat||"");this.name=e,this.cat=cat,this.amb=amb,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){var e=[];return this.errori.forEach((t=>e.push({e:t}))),e}getparametri(){let e={};if(this.dims&&he.forEach((t=>{let a=J(this.amb.vari.var(t));a&&(e[t]=String(a))})),this.head)for(var t of this.head){if(!t._h)"string"==typeof(a=this.amb.vari.var(t.cod))&&(a=a.split(",")[0]),e[t.cod]=a}else if(this.parametri?._)for(var t of this.parametri._){let r=(t.split("=")[0]||"").trim().toLowerCase();var a;a=((a=this.amb.vari.var[r])||"").split(",")[0],e[r]=a}return e}async setparametri(e){let t={};for(var a of(e||(e={}),this.dims&&he.forEach((t=>{let a=e[t]||this.dims[t].val;a=parseFloat(a)||0,this.dims[t].visible&&(a<this.dims[t].min&&(a=this.dims[t].min),a>this.dims[t].max&&(a=this.dims[t].max)),e[t]=String(a)})),this.head))"g"!=a.t&&("z"!=a.t||e[a.cod]||(e[a.cod]="1"),a._v=e[a.cod],t[a.cod]=!0);for(var a in e)t[a]||(t[a]=!0,await se(this.amb,this,a,e[a]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,e[this.head[0].cod]||void 0,!0),this.getparametri()}async setparametro(e,t,a=!1){if(t&&t.includes("$")&&(t=await re(this.amb,this,t)),this.head){const r=this.head.findIndex((t=>t.cod===e));if(r<0)return;let i=this.head[r];const s=async(riga,e,t)=>{let a=riga?.cod;if(riga.valid&&!riga._h1){let e=!ue(this.amb.vari,riga.valid);if(riga._h!=e&&(riga._h=e,["g","g1","g2"].includes(riga.t)))for(let e=t+1;e<this.head.length;e++){let t=this.head[e];if(t){if(["g","g1","g2"].includes(t.t))break;t._h1=riga._h}}}if(riga._h||riga._h1)return this.amb.vari.add(a,""),riga._v=void 0,"";{if(delete riga._h2,riga.visible){let e=!ue(this.amb.vari,riga.visible);if(e&&(riga._h2=e),["g","g1","g2"].includes(riga.t))for(let e=t+1;e<this.head.length;e++){let t=this.head[e];if(t){if(["g","g1","g2"].includes(t.t))break;riga._h2?t._h3=riga._h2:delete t._h3}}}let r=this.amb.vari.var(a)||"";if("string"==typeof r&&(r=r.split(",")[0]),"z"!=riga.t||r||(this.amb.vari.add(a,"1"),r="1"),"m"==riga.t&&riga.spars){let e=E(riga.spars);r=parseFloat(r||e[0])||0,e[1]&&parseFloat(r)<e[1]&&(r=parseFloat(e[1])||0),e[2]&&parseFloat(r)>e[2]&&(r=parseFloat(e[2])||0),r=String(r),this.amb.vari.add(a,r)}let i=await se(this.amb,this,a,e||riga._v||r,riga);if(riga._v=void 0,r=this.amb.vari.var(a)||"",this.amb&&this.amb.deriva&&this.amb.deriva.length>0){this.amb.deriva.filter((t=>t.cod==a&&((!t.item||t.item==this.amb.item)&&((!t.model||t.model==this.amb.model)&&((!t.rule||t.rule==this.amb.rule)&&(!t.opz||t.opz==e)))))).forEach((t=>{let a=this.head.find((e=>e.cod==t.tocod));a&&(a._v=t.toopz||e,this._d=1)}))}return i}};let n=await s(i,t,r);if(delete i._d,a)for(let e=r+1;e<this.head.length;e++)await s(this.head[e],void 0,e);return n}return await se(this.amb,this,e,t)}async impostaparametri(e,t){if(this.head)for(var a of(Array.isArray(this.head)||(this.head=[]),this.head))a._v="",delete a._h,delete a._h1,delete a._h2;for(var r of(e||(e=[]),t||(t=[]),[...e,...t])){if((a=r.indexOf("="))>0){let e=b(r.substr(0,a));e.includes("$")&&(e=await re(this.amb,this,e));let t,i=r.substr(a+1);i.includes("$")&&(i=await re(this.amb,this,i)),this.head&&(t=this.head.find((t=>t.cod==e)))?t._v=i:await se(this.amb,this,e,i)}}if(this.head){let e=!0;for(var i of this.head)["g","g1","g2"].includes(i.t)?e=await this.checkvalid(i.valid):e&&await this.checkvalid(i.valid)&&await this.setparametro(i.name,i._v)}}async checkvalid(e){if(!e)return!0;return!!await J(re(this.amb,this,e))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return F(this,["amb"])}setmacro(e){if(S(this,O(e,{})),this.localvar)for(var t in this.localvar){S(e=new ee,this.localvar[t]),this.localvar[t]=e}}async load(e,t){try{var a,{name:r,cat:cat}=y(e||this.name,t||this.cat||"");if(this.name||(this.name=r),this.cat||(this.cat=cat),this.azzera(),h&&("string"==typeof(a=await h(cat,r))&&(a.startsWith("{")||a.startsWith("["))&&(a=O(a)),a&&a.head&&!Array.isArray(a.head)&&(a.head=[]),a.head&&(a.dims=function(dims){let e;try{e="object"==typeof dims&&dims?dims:JSON.parse(dims||"{}")}catch(e){}return e||(e={}),e.l||(e.l={visible:1,val:1e3,min:0,max:1e4}),e.a||(e.a={visible:1,val:1e3,min:0,max:1e4}),e.p||(e.p={visible:1,val:1e3,min:0,max:1e4}),e}(a.dims))),a){if("string"==typeof a)await this.parsedata(a);else for(var i in a)this[i]=a[i];return!0}_.add(`missing cbGetFile: ${cat}/${r}`)}catch(e){_.add(l(e),`macro.load: ${r}/${cat}`)}}async loadAndCompile(e,cat,t=!1){var a,{name:r,cat:cat}=y(e,this.cat||cat);return this.azzera(),v&&(a=await v(cat,r)),a?(await this.parsedata(a,t),this.getmacro()):void _.add(`missing cbGetFile: ${r}/${cat}`)}async#t(e,t,a,r){var i,{name:s,cat:cat}=y(e,this.cat);if(v&&(i=await v(cat,s)),!i)return[];if(i.includes("$1")&&r&&r.length>0)for(var n=1;n<r.length;n++)i=i.replaceAll(`$${n}`,r[n]);var o=q(i),c=[];for(var l of(t&&(o=o.filter((e=>!/^\{(\:?(var|valid|formula|header|genera|v|f|h))[\s|\}]/im.test(e)))),o)){const e=de.exec(l);if(e)t=!e[1].startsWith(":"),c.push(l);else{const e=/^\s*\{i\s(.+)?\}/im.exec(l);if(e){r=E(e[1]);if(!a.includes(r[0])){a.push(r[0]);var f=await this.loadinclude(r[0],t,a,r);Array.isArray(f)&&c.push(...f),a.pop()}}else c.push(l)}}return c}async parsedata(e,t=!1){if(this.azzera(),!e)return;var a=[],r=q(e),i=!1;let s=[];for(var n of r){const e=de.exec(n);if(e)i=!e[1].startsWith(":"),a.push(n);else{const e=/^\s*\{i\s(.+)?\}/im.exec(n);if(e){var o=E(e[1]),c=await this.#t(o[0],i,[o[0]],o);Array.isArray(c)&&a.push(...c)}else a.push(n)}}i=!1;var l=this.codice;for(var n of a){const e=de.exec(n);if(e)if(e[1].startsWith(":"))l=this.codice;else switch(e[1]){case"genera":case"g":if(d=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(n)){var f=x(E(d[2])[0]);this.genera[f]=[],l=this.genera[f]}else(l=this.errori).push(n);break;case"valid":l=this.valid;break;case"var":case"v":if(d=/^\s*\{(var|v)\s+(.+)?\}/im.exec(n)){var h=E(d[2]);f=x(h[0]);this.localvar[f]={name:f,des:h[1]||"",rows:[]},l=this.localvar[f].rows}else(l=this.errori).push(n);break;case"formula":case"f":var d;if(d=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(n)){f=x(d[2]);this.formula[f]=[],l=this.formula[f]}else(l=this.errori).push(n);break;case"h":case"header":l=s;break;default:this.errori.push(n),l=this.errori}else n.startsWith("{")&&(l=this.codice),l.push(n)}for(var u in this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,t),this.formula)this.formula[u]=this.cleanfiltraparametri(u,this.formula[u],t);for(var u in this.localvar){var v=new ee,m=this.localvar[u];v.setheader(u,this.cat),await v.loadContentExtended(m.rows),m.des&&(v.des=m.des),this.localvar[u]=v}r=this.valid;for(var n of(this.valid=[],r)){(y={v:(y=$(n,",")).v,msg:y.o}).v&&(y.v.startsWith("#")?this.formula[y.v.substring(1)]&&this.valid.push(y):this.valid.push(y))}r=s;var p=[];for(var n of r){if(_=/^\s*([\w\-\_]+)+[\;\,\s]\s*(.*)?$/im.exec(n)){o=E(_[2]);var g=b(_[1]);let e;if(g)for(var w of(e=p.find((e=>e.cod==g)),e||(e={cod:g,t:"t"},p.push(e)),o)){var y;switch((y=$(w)).v){case"t":e.t=y.o;break;case"def":case"default":e.def=y.o;break;case"valid":case"colonna":case"hidden":y.o.startsWith("#")?this.formula[y.o.substring(1)]&&(e[y.v]=y.o):e[y.v]=y.o;break;default:e[y.v]=y.o}}}}this.head=p;r=this.genera;var k={};for(var S in r)if(Array.isArray(r[S])){var F={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]};const e=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;for(var O of r[S]){var _;if(_=e.exec(b(O)))switch(_[1]){case"calcola":case"c":F.calcola=[...F.calcola,...E(_[2])];break;case"exclude":case"e":case"escludi":F.exclude=[...F.exclude,...E(_[2])];break;case"bom":case"db":F.bom=[...F.bom,...E(_[2])];break;case"vars":case"v":F.vars=[...F.vars,...E(_[2])];break;case"head":case"h":F.head=E(_[2]);break;default:this.errori.push(`genera ${S} => ${O}`)}else F.codice.push(O)}F.codice=H(F.codice,!0),k[S]=F}this.genera=k}cleanfiltraparametri(e,codice,t){if(codice&&codice.length){for(var a=!1,r=0;r<codice.length;r++){let t=/^\:p[;,\s]+(.*)?$/im.exec(codice[r]);if(t)codice[r]=null,a=!0,this.parametri[e]=E(t[1]);else{let t=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(codice[r]);t&&(codice[r]=null,a=!0,this.parametri[e]=E(t[2]))}}a&&(codice=codice.filter((e=>null!=e)))}return codice=H(codice,t)}}class me{constructor(){this.barre={}}azzera(){this.barre={}}oriented(e,t,a,r){switch(e=(e||"1").substr(0,1).toLowerCase()){case"0":break;case"l":return{t:"l",x:t};case"a":return{t:"a",x:a};case"p":return{t:"p",x:r};case"2":return{t:e,x:t,y:r,z:a};case"5":return{t:e,x:t,y:a,z:r};case"4":return{t:e,x:r,y:t,z:a};case"3":return{t:e,x:a,y:r,z:t};case"6":return{t:e,x:r,y:a,z:t};default:return{t:"1",x:a,y:t,z:r}}}async getcode(e,t,a,r,i){let[s,n]=e.split(":");n=n||"";var o=async(e,s)=>{var n=this.barre[e];if(!n&&i&&((n=await i(e))||(n={t:"1",r:[]}),this.barre[e]=n,n.coderr&&"errore"!=n.coderr||(n.coderr=`#err_${e}`)),!n||0==n.r.length)return{extra:{err:"missing codicebarra"},c:`#err_${e}`,fm:10};var{t:c,x:l,y:f,z:h}=this.oriented(e,t,a,r),d={barra:e,fm:n.fm,t:c,liv:s,items:n.r.length,err:""},u=n.r;if(h){var v=u.filter((e=>e.z===h||!e.z));v.length>0?u=v:d.err=`spessore non coerente: ${h}`}if("l"==c||"a"==c||"p"==c){if(c=u.find((e=>e.x>=l)))return{c:c.c,fm:c.x==l?0:1,x1:c.x,x:l,extra:d}}else{var c;if(c=u.find((e=>e.x==l&&e.y==f)))return{c:c.c,fm:0,x:l,y:f,z:h,x1:c.x,y1:c.y,z1:c.z,extra:d};if(0!=n.fm&&(c=u.find((e=>e.x>=l&&e.y==f))))return{c:c.c,fm:1,x:l,y:f,z:h,x1:c.x,y1:c.y,z1:c.z,extra:d};if(0!=n.fm&&2!=n.fm&&(c=u.find((e=>e.x>=l&&e.y>=f))))return{c:c.c,fm:2,x:l,y:f,z:h,x1:c.x,y1:c.y,z1:c.z,extra:d}}return n.codalt&&s<5?await o(n.codalt,s+1):{c:n.coderr,fm:9,x:l,y:f,z:h,extra:d}};return await o(s,0)}compila(e,t){t||(t={});var a={};if(Array.isArray(e)){for(var r of e)if(r.cod=b(r.cod),r.barcode=b(r.barcode),r.barcode.length>2&&"+"==r.barcode[0]){r.barcode=r.barcode.substr(1);var i=this.oriented(r.barcode.substr(0,1),r.l,r.a,r.p);i.c=r.modello?{c:r.cod,m:r.modello}:r.cod,a[r.barcode]||(a[r.barcode]={t:r.barcode.substr(0,1),r:[]},t[r.barcode]&&(a[r.barcode]=Object.assign(t[r.barcode],a[r.barcode]))),a[r.barcode].r.push(i)}for(var s in a){a[s].r.sort(((e,t)=>e.y?1e4*(e.x-t.x)+(e.y-t.y):e.x-t.x))}}this.barre=a}}function pe(e){var t=q(e,!1),a=(e={},{r:[]}),r=!1;for(var i of t){var s=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(i);if(s)a={cod:s[2],des:s[2],r:[]},r=!1,e[s[2]]=a;else if(!/^\s*\:/.exec(i)){var n,o=i.split(","),c={cod:b(o[0])};(n=(o[1]||"").trim())&&(c.des=n),(n=b(o[2]))&&(c.tipo=n),(n=b(o[3]))&&(c.alias=n),(n=b(o[4]))&&(c.valid=n),(n=b(o[5]))&&(c.visible=n),c.cod&&(r||"sep"!=c.tipo?a.r.push(c):(a.des=c.des,a.valid=c.valid,a.visible=c.visible,r=!0))}}return e}function ge(e){var t=q(e.toLowerCase(),!1),a={};for(var r of t)if(!/^\s*\:/.exec(r)){var i=E(r);i[0]&&i[1]&&(a[i[0]]=i[1])}return a}class we{#a=void 0;#r=void 0;#i=void 0;#s=void 0;constructor(cat=".",e=100,t=!1){this.righevuote=t,this.maxdelays=e,this.setcatalog(cat)}setcatalog(cat){return cat=b(cat),this.cat!=cat&&(this.cat=cat,this.item=this.rule=this.model="",this.azzera(!0)),cat}azzera(e=!1){this.vari=new X,this.ruleheader="",e&&(this.macro={},this.varianti={},this.varelenco={},this.macroelenco={},this.scripts={},this.#a=void 0,this.#r=void 0,this.#i=void 0,this.#s=void 0)}async#n(cat){u&&(this.varelenco[cat]||(this.varelenco[cat]=await u("headers",cat,"_varianti"),this.varelenco[cat]||(this.varelenco[cat]=[])))}parseheaderfrominfo(e){if(e&&e.length>0)for(var t of e)switch(t.tipo){case"_headers":t.value,t.value=pe(t.value),this.#a=t.value||{};break;case"_alias":t.value,t.value=ge(t.value),this.#r=t.value||{};break;case"_typos":t.value;var a=O(t.value);for(var r in a){var i=a[r];i.db&&(i.db=H(q(i.db))),i.list&&(i.list=H(q(i.list)))}t.value=a,this.#s=t.value||{}}}setitem(item,e,model,t){this.item=item,this.rule=e,this.model=model,this.data=t||(new Date).toInt()}async getheader(cod){if(!this.#a&&u){var e=await u("headers",this.cat,"_headers");this.parseheaderfrominfo(e)}return this.#a||(this.#a={}),this.#a[cod]}async getalias(){if(!this.#r&&u){var e=await u("headers",this.cat,"_alias");this.parseheaderfrominfo(e)}return this.#r||(this.#r={}),this.#r}get deriva(){return this.#i,this.#i||[]}async getmacro(riga){try{if("string"==typeof riga&&(riga={tipo:"M",contenuto:riga}),!riga||!riga.contenuto)return;var e=/^([\(\{\}\)\:\$\w\.\\\/]+)[\s\;\,]*(.*)?$/im.exec(riga.contenuto);if(!e)return void _.add("Macro non valida:"+riga.contenuto,riga);(macro=b(e[1])).includes("$")&&(macro=await this.vari.valuta(macro));var t=E(e[2]),{name:a,cat:cat}=y(macro,this.cat);this.cat=cat;var macro,r=`${cat}/${a}`;if(!this.macro[r]){var i=new ve(this,a);await i.load()?this.macro[r]=i:_.add(`macro fail to load ${r}`,riga)}return(macro=this.macro[r])?{macro:macro,pars:t}:(_.add(`macro non trovata ${r}`,riga),{})}catch(e){_.add(l(e),`ambiente.getmacro: ${riga?.contenuto}`)}}async varcompila(e,t){var a=new ee(this);(await a.load(e,this.cat,!0),a.alias)&&((await this.getalias())[e]=a.alias);t("variants",{cod:e,des:a.des||"",alias:a.alias,info:a.alias?"":JSON.stringify(F(a,["amb"]))})}async macrocompila(e,t){var a=new ve(this,e);await a.loadAndCompile(`${e}.mu`);var r=a.getmacro();t("macros",{cod:e,info:JSON.stringify(r),isgenera:a.isgenera,isheader:a.isheader,iscodice:a.iscodice})}async barrecompila(e,t,a){var r=new me;for(var i in r.compila(e,t),r.barre){a("barcodes",{cod:i,des:"",info:JSON.stringify(r.barre[i])})}return r}async tojson(e){let t;return d&&(t=await d("json",e)),t}async compila(e,t){if(t){for(var a of e.var)await this.varcompila(a,t),π;for(var a of e.mu)await this.macrocompila(a,t);if(t("infos",{cod:"info",des:e.cat,info:JSON.stringify({cat:e.cat,md:e.info})}),this.#a=void 0,this.#r=void 0,this.#i=void 0,this.#s=void 0,u){var r=await u("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(r)}this.#a?t("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):p("missing headers"),this.#r&&t("infos",{cod:"alias",des:"",info:JSON.stringify(this.#r)}),this.#i&&t("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#i)}),this.#s&&t("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#s)})}}async getvariante(cod){var{name:e,cat:cat}=y(cod,this.cat),t=e;if(cat==this.cat&&this.#r&&this.#r[e]&&(t=this.#r[e]),await this.#n(cat),!this.varelenco[cat].length||this.varelenco[cat].includes(e)){var a=`${cat}/${t}`;if(!this.varianti[a]){var r=new ee(this);await r.load(a,cat),this.varianti[a]=r}return this.varianti[a]}}async getheaderfromdb(e){let{head:t,rows:a,macros:r,deriva:i}=await u("header",this.cat,e,!this.#i);this.#i||(this.#i=i),await this.#n(this.cat),t.cod=b(t.cod),t.rule=b(t.rule),t.ruledef=t.ruledef||[];let s=new Set;for(var n of a){n.cod=b(n.cod),n.alias=b(n.alias),n.t=b(n.t);let e=n.alias?n.alias:n.cod;if(!this.varianti[`${this.cat}/${e}`]){let t=this.varelenco[this.cat];t&&t.includes(e)&&s.add(e)}}if(s=[...s],s.length&&f){var o=await f(this.cat,s);if(o&&o.length)for(var c of o){let{name:e,content:t}=c,a=new ee(this);a.setheader(e,this.cat),t&&await a.loadContentExtended(t),this.varianti[a.key]=a}}return{head:t,rows:a,macros:r}}async getlinkedmacros(e,t){var a=e=>e.includes("/")?e:`${this.cat}/${e}`;let r,i=[];if(e&&(r=a(e),this.macro[r]||i.push(e)),t&&"string"==typeof t){let e=t.split(";");for(var s of e)r=a(s),this.macro[r]||i.push(s)}if(i&&i.length>0&&h){let e=await h(this.cat,i);if(e&&e.length>0)for(var n of e){let e=new ve(this,n.name);for(var o in n.content){let t=n.content[o];e[o]=t}this.macro[e.key]=e}}}async setruleheader(e,t){var{name:a,cat:cat}=y(e,this.cat),r=`${cat}/${a}`;if(!this.macro[r]){let{head:t,rows:n,macros:o}=await this.getheaderfromdb(a);await this.getlinkedmacros(t.rule,o);var i=new ve(this,a);if(!t)return void _.add("Missing rule: "+e);if(t.rule){let e=this.macro[`${cat}/${t.rule}`];if(e)for(var s in e)["cat","name","key"].includes(s)||(i[s]=e[s])}n&&n.length&&(i.head=n),this.macro[r]=i}this.ruleheader=r;let n=this.macro[r];return _.azzera(),await n.setparametri(t),n}getruleheader(){return this.macro[this.ruleheader]}async setvariante(cod,e){return await se(this,null,cod,e)}async valuta(codice){let e;return"string"==typeof codice&&(codice=H(q(codice,this.righevuote))),Array.isArray(codice)&&(p("m1",codice),e=await oe(this,null,codice)),e}setinfos(e){e&&(this.#a=e.headers,this.#r=e.alias,this.#i=void 0,this.#s=e.typos)}}Date.prototype.toInt||(Date.prototype.toInt=function(){const e=this;return e.getDate()+100*(e.getMonth()+1)+1e4*e.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const be={mus:{variants:{cod:"s",des:"s",alias:"s",info:"s",md:"s",__pk:"cod"},extras:{tipo:"s",cod:"s",info:"s",__pk:"tipo, cod"},macros:{cod:"s",des:"s",info:"s",md:"s",def:"s",isgenera:"i",iscodice:"i",isheader:"i",__pk:"cod"},infos:{cod:"s",des:"s",info:"s",__pk:"cod"},barcodes:{cod:"s",des:"s",info:"s",__pk:"cod"}}},{Clear:$e,Reset:ye,Bold:xe,Reverse:Ee,Red:ke,Green:Se,Yellow:Fe,Blue:Oe,Magenta:_e,Cyan:Le,White:Ce}=a();var Ie=o(process.argv);console.log("----------------------------------------------------------------------------------------"),console.log(`${xe}${Le}${xe}Markuno:${ye} command line utility del linguaggio (c) Croswil 2024 v. ${Fe}1.0.53${ye}`),console.log("----------------------------------------------------------------------------------------");var Ae={FOLDERBASE:"./",DBWORK:"./data/app.db",FOLDERCAT:"./data/mu",FOLDEROUT:"./out",CAT:"cat"};const De=".lasts.markuno";e.existsSync(De)&&(Ae=JSON.parse(e.readFileSync(De)));var je=Ie._;(Ie.h||Ie.help||!je[2])&&(console.log(`Uso: ${xe}markuno <funzioni> <[catalogo/]markuno> [opzioni]${ye} \n${xe}${Le}Funzioni:${ye} (seleziona una tra le seguenti)\n ${Ce} c, compila ${ye}${Se} compila un catalogo/Markuno + Codici Barra\n ${Ce} d, dump ${ye}${Se} compila e salva il compilato in formato json\n ${Ce} e, esegui ${ye}${Se} esegui un file markuno \n ${Ce} f, formatta ${ye}${Se} Formattazione di un file .mu o .var\n ${Ce} g, genera${ye}${Se} generatore di codice \n ${Ce} w, watch ${ye}${Se} abilita il watch su un file markuno \n ${Ce} gw <markuno> <maxele> ${ye}${Se} Genera con wath (solo i primi maxele=20 elementi senza salvare\n${xe}${Le}Opzioni:${ye}${Se}\n ${Ce} -h, --help${ye}${Se} mostra l'help\n ${Ce} -c, --cat <cat>${ye}${Se} catalogo (default='${Ae.CAT}' ) \n ${Ce} -d, --dbwork ${ye}${Se} database principale (default='${Ae.DBWORK}')\n ${Ce} -i, --init <folder>${ye}${Se} cartella di lavoro (default='${Ae.FOLDERCAT}' ) \n ${Ce} -o, --out <folder>${ye}${Se} cartella di output (default='${Ae.FOLDEROUT}' ) \n ${Ce} -x, --xlsx${ye}${Se} output in formato excel (generatore)\n `),process.exit(0));let ze=0;const Ne="./",Te=Ie.d||Ie.dbwork||Ae.DBWORK,Me=Ie.i||Ie.init||Ae.FOLDERCAT,Re=Ie.o||Ie.out||Ae.FOLDEROUT,We=Ie.c||Ie.cat||Ae.CAT;var Je=void 0,Ue=!1;e.existsSync(Me)||Pe(`Manca la cartella di lavoro: ${Me}`),Ae=Object.assign(Ae,{FOLDERBASE:Ne,DBWORK:Te,FOLDERCAT:Me,FOLDEROUT:Re,CAT:We}),e.writeFileSync(De,JSON.stringify(Ae,null,2)),e.existsSync(Me)||e.mkdirSync(Me,{recursive:!0});const Ve=Ie.x||Ie.xlsx;function Pe(e){var t=e.stack.toString().split("\n");t.splice(0,1),t=t.filter((e=>!/module/.test(e)&&!/node\:/.test(e))),console.log(`${ke}${e.message}${ye}\n${t.join("\n")}`),process.exit(1)}function Be(cat){var a=t.join(Me,`mu_${cat}.db`);e.existsSync(a)||r(a,be,"mus"),console.log("DB",a);var n=i.db(a);return s(be),n}function Ke(t){var a="",r="",i=`${t}.txt`;e.existsSync(i)&&(a=e.readFileSync(i).toString());i=`${t}.md`;return e.existsSync(i)&&(r=e.readFileSync(i).toString()),{def:a,md:r}}function Xe(cat,a){var r=e.readdirSync(a),i={cat:cat,info:"",mu:[],var:[],inc:[]};for(var s of r){var n=t.join(a,s),o=t.extname(s),c=t.basename(s,o);"__info.md"==s?i.info=e.readFileSync(n).toString():".mu"==o?i.mu.push(c):".var"==o?i.var.push(c):".inc"==o&&i.inc.push(c)}return i}async function Ge(e,t,a){const r=await import("xlsx"),i=r.utils.json_to_sheet(e),s=r.utils.book_new();r.utils.book_append_sheet(s,i,t),r.writeFile(s,`${a}.xlsx`,{compression:!0})}async function qe(e,t){const a=await import("xlsx");var r=a.readFile(e).Sheets[t];return a.utils.sheet_to_json(r)}async function cbGetMacro(cat,t){var a=`${Me}/${cat}/${t}.mu`;return e.existsSync(a)?e.readFileSync(a).toString():""}async function cbGetVariante(cat,t){var a=`${Me}/${cat}/${t}.var`;return e.existsSync(a)?e.readFileSync(a).toString():(_.add(`missing var: ${cat}, ${t}`,{t:"cbGetVariante"}),"")}async function cbFunc(e,t,a){_.add(`missing fun: ${e}`,{t:"cbFunc"})}async function cbInfo(t,cat,a){if(Array.isArray(a)){var r=[];for(var i of a){var s=await cbInfo(t,cat,i);s&&r.push({tipo:i,value:s})}return r}switch(t){case"filter":if(!Je||!a&&!a[0])return[];if(Ue)return[];var n=Je.all("select item,model,rule,varfilter,result,result2,exclude,exclude2 from limits where variant=?",a[0]);for(var o of n)o.valfilter=JSON.parse(o.varfilter||"{}"),o.result=JSON.parse(o.result||"[]"),o.result2=JSON.parse(o.result2||"[]");return n;case"headers":var c;return c="_typos"==a?`${Me}/${cat}/typos.json`:`${Me}/${cat}/${a}.inc`,e.existsSync(c)?e.readFileSync(c).toString():""}}async function cbGetFile(cat,a){if(e.existsSync(t.join(Ne,a)))return e.readFileSync(t.join(Ne,a)).toString();const r=`${Me}/${cat}/${a}`;if(e.existsSync(r))return e.readFileSync(r).toString();_.add(`missing file: ${r}`,{t:"cbGetFile"})}function He(cat,a){var r=t.extname(a);[".mu",".var",".inc"].includes(r)||(r=".mu",a+=".mu");var i=t.join(Me,cat||We),s=t.join(Ne,a);if(e.existsSync(s))return{file:s,folder:i,diversi:!0};var n=a.indexOf("/");if(n>0&&(cat=a.substr(0,n),a=a.substr(n+1),i=t.join(Me,cat||We),!e.existsSync(i)))throw new Error("missing folder: "+i);if(s=t.join(i,a),e.existsSync(s))return{file:s,folder:i,diversi:!1,ext:r};throw new Error(`non trovato il file: ${a} su ${i}`)}async function Ye(amb,t){var{file:a,folder:r,diversi:i}=He(amb.cat,je[3]||""),s=parseInt(je[4]||"10");console.log(`Start Watching: ${Le}${xe}${a}${ye}`),e.watch(r,(async(e,a)=>{a&&await t(amb,s)})),i&&e.watch(a,(async(e,a)=>{a&&await t(amb,s)})),await t(amb,s)}async function Ze(amb,a){var{file:r,folder:i,diversi:s}=He(amb.cat,je[3]||"");if(!e.existsSync(r))throw new Error("Manca il file: "+r);var n=t.extname(r),o=t.basename(r,n),c=new ve(amb,o),l=(new Date).valueOf();await c.loadAndCompile(`${o}${n}`);var f=(new Date).valueOf(),h={},d={},u=[],v=[],m=[];if(await async function(macro,amb,e,t,a=0){if(macro.isgenera&&t){var r={counter:0,keys:{},isTestmode:a};for(var i in macro.genera)await ce(macro,amb,i,t,r);return!0}}(c,amb,0,((e,t,r,i,s)=>{if(a){var n=[];for(var o in t){var c=t[o];if("number"==typeof c&&(c=Math.round(1e4*c)/1e4+""),"__id"!=o){var l=n.length;m[l]||(m[l]=o,v[l]=o.length),v[l]<c.length&&(v[l]=c.length),n.push(c)}}u.push(n)}else{var f=e.split("_")[0]||f;if(h[f]||(h[f]=[]),h[f].push(t),t.cod&&(d[f]=!0,r))for(var p in r){var g=`${f}_${p}`;h[g]||(h[g]=[]);var w=r[p];for(o=0;o<w.length;o++){var b=w[o];h[g].push({padre:t.cod,i:o,comp:b.c0,qt:J(b.c1),des:b.c2})}}}}),a),a){for(var p=0;p<m.length;p++)m[p]=m[p].padEnd(v[p]," ");for(var g of(console.log(`${Fe}${m.join(" | ")}${ye}`),u)){for(p=0;p<g.length;p++)g[p]=g[p].padEnd(v[p]," ");console.log(g.join(" | "))}}else{var w=(new Date).valueOf(),b=0;for(var $ in d)b+=h[$].length,h[$].sort(((e,t)=>(e.cod||"").localeCompare(t.cod||"")));h._errori=c.geterrori(),e.writeFileSync(t.join(Re,`gen_${o}.json`),JSON.stringify(h,null,2));const a=t.join(Re,`gen_${o}.xlsx`);var y=(new Date).valueOf();if(Ve){const e=await import("xlsx"),t=e.utils.book_new();for(var x in h){const a=e.utils.json_to_sheet(h[x]);e.utils.book_append_sheet(t,a,x)}e.writeFile(t,a,{compression:!0})}else e.existsSync(a)&&e.unlinkSync(a);var E=(new Date).valueOf();console.log(`${Fe}${xe}EVAL........: ${b}${ye}${Le} rows\n${Le}load/compile: ${xe}${Fe}${f-l}${ye}${Le} ms.\n${Le}generate....: ${xe}${Fe}${w-f}${ye}${Le} ms.\n${Le}save JSON...: ${xe}${Fe}${y-w}${ye}${Le} ms.\n${Le}save XLSX...: ${xe}${Fe}${E-y}${ye}${Le} ms.\n--------------------------------\n${Le}${xe}TOTALE......: ${Fe}${E-l}${ye}${Le} ms.`)}}async function Qe(amb){var{file:a,folder:r,diversi:i}=He(amb.cat,je[3]||""),s=(new Date).valueOf(),n=e.readFileSync(a).toString(),o=new ve(amb,je[3]||"");ze++,o.parsedata(n);var c=(new Date).valueOf(),l=await oe(amb,o,o.codice,{limited:!1,oldstyle:!0,localvar:o.localvar}),f=(new Date).valueOf();console.log(`${l.join("\n")}`),console.log(`${Fe}${xe}EVAL ${ze}${ye}: ${a} => ${Le}load:${xe}${Fe}${c-s}${ye}${Le}ms. -- exec:${xe}${Fe}${f-c}${ye}${Le}ms.${ye}\n----------------------------------------------\n${_.toString()}`),e.writeFileSync(t.join(Re,"logs.json"),JSON.stringify({loadandcompile:c-s,execute:f-c,vari:amb.vari.dump(),codice:o.codice,errori:o.errori},null,2)),e.writeFileSync(t.join(Re,"out.txt"),l.join("\n"))}await async function(){try{var amb=function(cat,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e){var t=new we(cat);return g(cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e),t}(We,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile),a=t.join(Me,We);if(e.mkdirSync(Re,{recursive:!0}),!e.existsSync(a))throw new Error(`Manca il catalogo: ${We} su ${Me}`);var r=(new Date).valueOf();switch(je[2].trim().toLowerCase()){case"g":case"genera":await Ze(amb,0);break;case"d":case"dump":await async function(amb){var{file:a,folder:r,diversi:i}=He(amb.cat,je[3]||"");if(!e.existsSync(a))throw new Error("Manca il file: "+a);var s,n,o=t.extname(a),c=t.basename(a,o);if(console.log(c,o),".mu"==o){var l=new ve(amb,c);await l.loadAndCompile(`${c}${o}`),s=l.getmacro(),n=t.join(Re,c+".json")}else".var"==o&&(s=await async function(cod,cat,amb){var e=new ee(amb);return await e.load(cod,cat),e}(c,We,amb),n=t.join(Re,c+".var.json"));s&&(e.writeFileSync(n,JSON.stringify(s,null,2)),console.log(`${Le}${xe}Dump: ${ye}${Fe}${n}`))}(amb);break;case"gw":await Ye(amb,Ze);break;case"c":case"compila":await async function(amb){var a,r,s=t.join(Me,We);if(!e.existsSync(s))throw new Error("Manca il catalogo "+We);if(!e.existsSync(Te))throw new Error("Manca il database di lavoro: "+Te);if(e.existsSync(Te))if((Je=i.db(Te)).esisteTabella("artbarre")){Ue=!0;var o=Je.all("select cod cod,des des,flfm fm,coderr coderr,codalt codalt from artbarre order by cod ");for(var c of(r={},o)){(d=c.cod.trim().toLowerCase().substr(1))&&(r[d]={des:c.des,fm:c.fm,coderr:c.coderr.trim().toLowerCase(),codalt:c.codalt.trim().toLowerCase()})}a=Je.all("select codicebarra barcode,diml l,dima a,dimp p,cod cod from articoli where codicebarra like ? order by codicebarra","+%")}else a=Je.all("select barcode,l,a,p,cod from items where barcode>'' order by barcode"),r={};else console.warn("MISSING DBWORK (barre e limits)");var l=Be(We);l.begin(),l.run("delete from variants"),l.run("delete from macros"),l.run("delete from barcodes"),l.run("delete from extras");var f=Xe(We,s);for(var h of(await amb.compila(f,((e,t)=>{if(t){if("macros"===e){var{def:a,md:r}=Ke(`${t.cod}.mu`);t.def=a,t.md=r}n(l,e,t,"mus")}})),f.var)){var d,u=`${s}/${h}.var.txt`;if(e.existsSync(u))(d=Y(e.readFileSync(u).toString()))&&d.length&&n(l,"extras",{tipo:"l",cod:h,info:JSON.stringify(d)},"mus")}await amb.barrecompila(a,r,((e,t)=>{n(l,e,t,"mus")})),n(l,"infos",{cod:"info",des:f.cat,info:JSON.stringify({cat:f.cat,md:f.info})},"mus"),Je&&Je.chiudi();l.commit(),l.chiudi()}(amb),console.log(`Compilazione catalogo: ${ke}${xe}${We}${ye}: ${Fe}${(new Date).valueOf()-r}ms.`);break;case"x":case"e":case"esegui":await Qe(amb);break;case"f":case"format":!function(amb){var{file:t,folder:a,diversi:r,ext:i}=He(amb.cat,je[3]||"");if(e.existsSync(t)){var s=e.readFileSync(t).toString(),n=".var"==i;s=function(e,t){let lines=e.split("\n"),a=[],r=0,i=!1,s=!1,n=[];var o=t;o&&(o=(f=fe(0,lines)).fl)&&(n=f.cols);for(let e=0;e<lines.length;e++){let t=lines[e],v=t.trim();var c=v.split("//");let m=c[0].trim();c.splice(0,1);let p=c.length?` // ${c.join("//").trim()} `:"";if(v.startsWith("/*"))i=!0,a.push(v);else if(i&&v.endsWith("*/"))i=!1,a.push(v);else if(i)a.push(t);else{var l=le.exec(v);if(l){var f;a.push(v),r=l[1]?0:1,/^\s*\{(var|deriva|header|v|h)(\s.*)?\}/i.test(v)?(o=(f=fe(e+1,lines)).fl)&&(n=f.cols):o=!1,s=!1;continue}if(o)if(m.startsWith(":")&&!m.startsWith(":h ")||!m)a.push(v);else{var h=" ";m.startsWith(":h ")&&(m=m.substr(3).trim(),h=":h ");for(var d=E(m),u=0;u<d.length;u++)d[u].includes(",")&&(d[u]=`"${d[u]}"`),d[u]=d[u].padEnd(n[u]," ");a.push(`${h}${d.join(" , ")} ${p}`)}else{let e=" ".repeat(r>=0?r:0);if(s)a.push(`${e} ${v}`);else{let t="";v.startsWith("#")&&(t=v.substring(1).split(" ")[0].toUpperCase(),v="#"+t+v.substring(t.length+1)),["IF","IFDEF","IFNDEF"].includes(t)?v.indexOf("#",2)<0?(a.push(`${e}${v}`),r++):(v=v.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())),a.push(`${e}${v}`)):["FOR","SELECT","FORVAR","VARIANTE","DO"].includes(t)?(a.push(`${e}${v}`),r++):["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(t)&&r>0?a.push(" ".repeat(r>0?r-1:0)+v):["ENDIF","ENDSELECT","LOOP","ENDFOR"].includes(t)?(a.push(" ".repeat(r>0?r-1:0)+v),r--,r<0&&(r=0)):v.startsWith("_ ")||v.startsWith(":")?a.push(v):a.push(e+v)}s=m.endsWith("\\")}}}return a.join("\n")}(s,n),e.writeFileSync(t,s),console.log(`formatted: ${n} ${Le}${xe}${t}${ye}`)}}(amb);break;case"w":case"watch":await Ye(amb,Qe);break;default:throw new Error("Funzione non contemplata (g,c,b,x)")}}catch(e){Pe(e)}}();export{Be as dbmu,Xe as getinfo,Ke as getinfofile,Ge as xlsexport,qe as xlsimport};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "croswil_markuno",
3
- "version": "1.0.39",
3
+ "version": "1.0.40",
4
4
  "private": false,
5
5
  "dependencies": {
6
6
  "croswil_lib": "^5.0.31",