croswil_markuno 1.0.36 → 1.0.37
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 +1 -1
- package/bin/mu.js +1 -1
- package/package.json +1 -1
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();e&&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")}},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 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}}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.39${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();e&&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")}},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 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}}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.40${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){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 l,f,h,d,u,v;const m=(...e)=>{v?v(e):console.log(...e)};function p(e,t,a,r,i,s){f=e,l=t,h=a,d=r,u=i,v=s}const g=()=>(new Date).valueOf();function w(e){return(e||"").trim().toLowerCase()}function b(e,t="="){var a=(e=e||"").indexOf(t);return a>=0?{v:w(e.substring(0,a)),o:e.substring(a+t.length).trim(),fl:!0}:{v:w(e),o:"",fl:!1}}function $(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=y(cat)}}function y(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 x(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();e&&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 E=(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 k(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 S(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)),{}):{}}const 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 a="object"==typeof t.msg?JSON.stringify(t.msg):t.msg||"";e.push(`${t.row?t.row+":":""}${a}`)}return e.join("\n")}},F=/(?<!\w)\(/g,L=/^-?[0-9.]+$/,C=/^(\w+)(\!)?\[(.*)?\]$/,_=/^(rnd|random|cas)\(/i,j=/^clamp\(/i,A=/^(dec|round)\(/i,I=/[0-9.]/,D=/[+\-*/\^\%]/,N=/[a-zA-Z]/i;function z(e){for(e=(e+"").trim();;){var t=F.exec(e);if(!t)break;var{i:a,res:r}=E(e,t.index+1,"(",")");if(a<=0)break;e=e.substring(0,t.index)+z(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=x(e[3]);for(var i of r)if(i==t)return a?"0":"1";return a?"1":"0"}for(;;){var t=C.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={"||":()=>z(t)||z(a)?1:0,"|":()=>z(t)||z(a)?1:0,"&&":()=>z(t)&&z(a)?1:0,"&":()=>z(t)&&z(a)?1:0,"<<=":()=>w(t)<=w(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),"<=":()=>M(t)<=M(a),">=":()=>M(t)>=M(a),"<":()=>M(t)<M(a),">":()=>M(t)>M(a),"=":()=>M(t)==M(a),"!":()=>M(t)!=M(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):M(e)}(e)}const T={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 M(e){let t=0;function a(){const a=e[t];return D.test(a)?(t++,a):null}function r(){if(I.test(e[t]))return function(){const a=t;for(;t<e.length&&I.test(e[t]);)t++;return Number(e.slice(a,t))}();if("("===e[t]){t++;const a=s();return")"===e[t]&&t++,a}return N.test(e[t])?function(){var a=e.slice(t);if(!a)return 0;for(const[r,i]of Object.entries(T)){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=_.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=j.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=A.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&&D.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 R(e){if(!e)return 0;if("number"==typeof e)return e||0;if("string"!=typeof e)return 0;var t=e.replaceAll(",",".");return L.test(t)?(console.log("muCalc",t),Number(t)):z(e)}const W=500;function J(e,t){var a=t[0]||"";if(!a)return"";if(e.counter>=W)return a;var r=P(e,e.var(V(e,a)));if(e.counter>=W)return a;if(t[1]){var i=R(V(e,t[1])),s=x(r);if(!(i>=0&&i<s.length))return"";r=V(e,s[i])}if(t[2]){var n=R(V(e,t[2]));if(n){var o=0;return t[3]&&(o=R(V(e,t[3]))),n<0?r.slice(n):o?r.substring(n-1,n+o-1):r.substring(n-1)}}return r}function U(e,t){var a=x(t||""),r=w(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=V(e,a[1]||""),n=V(e,a[2]||"");e.add(s,e.vars(n));break;case"ex":s=V(e,a[1]||"");(n=V(e,a[2]||""))||(n=",");var o=R(V(e,a[3]||"")),c=s.split(n);return o>0&&c[o-1]||"";case"ex2":var l=i(a[1]||""),f=R(V(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=R(V(e,a[1]||""))||0)?a[f>0?f+1:2]||"":(f=R(V(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=V(e,a[1]||""),v=(f=R(V(e,a[2]||"")),R(V(e,a[3]||"")));return u.substring(f-1,f+v-1);case"arrotonda":{u=R(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=R(a[2]),0==e&&(e=1e3)),Math.round(u*e)/e}case"iif":u=R(V(e,a[1]));return console.log("iif",u,a),u?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 V(e,t){if(t+="",e.counter>=W)return t;for(;;){const s=/\$([\{\(])/im.exec(t);if(!s)break;var a=s.index,{i:r,res:i}="("==s[1]?E(t,a+2,"(",")"):E(t,a+2,"{","}");t=V(e,t.substring(0,a))+J(e,i)+(r>=0?V(e,t.substring(r+1)):"")}return t=(t=t.replace(/\$([a-z|][\w|\.]*)/gi,((t,a)=>{for(var r="";a.length;){var i=P(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 P(e,t){return t&&(e.counter++,e.counter<=W&&(t=V(e,t)),e.counter--),t}class B{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();objval(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}var(e){const t=B.sanitizeKey(e);if(B.isValidKey(t)){var a=/^([\w][\w|\d]*)[\.\[]/.exec(t);if(a){var r=this.dictionary[a[1]];if(r&&"object"==typeof r)return this.objval(r,t.substring(a[0].length))}return this.dictionary[t.toLowerCase()]||""}return""}getvar(e){return this.var(e)}colonna(e,t){return x[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=B.sanitizeKey(e);if(B.isValidKey(a)){const e=a.toLowerCase();0===t||t?this.dictionary[e]=t:delete this.dictionary[e]}else m(`Invalid key: ${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=P(e,t);break}var{i:s,res:n}=E(t,i+2,"[","]"),o=P(e,t.substring(0,i)),c=n?P(e,n[0]):"",l=s>=0?P(e,t.substring(s+1)):"",f=U(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}=E(e,t+1,"{","}");if(a<0)return e;e=e.substring(0,t)+R(r[0])+(a>=0?e.substring(a+1):"")}return e})(a),a}}const K="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|:P".split("|");function X(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 G(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(K.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})}O.add("muClean: expected array!")}function q(e){var t,a=X(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"==w(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:m("missing:",n[1])}}return r}function H(e){let t,a=[];for(var r of e){t={},r.varfilter=JSON.parse(r.varfilter||"[]"),r.result=JSON.parse(r.result||"[]"),r.result2=JSON.parse(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=>w("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=w(item).split(";")),model&&(t.m=w(model).split(";")),i&&(t.r=w(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==w(u.Variant)));v||(v={v:w(u.Variant),o:[]},t.v.push(v)),v.o=[...v.o,w(u.Value).split(";")]}}Y(t),a.push(t)}}return a=a.sort(((e,t)=>t.l-e.l)),a}function Y(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 Z{constructor(amb){this.rows={},this.name="$",this.key="$",this.amb=amb}setheader(e,cat){var{name:t,cat:cat}=$(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=R(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(l){var r=await l(cat,a);if(r){if(await this.loadContentExtended(r),r.filter)m("verifica anche i filtri!",r.filter),this.limits=H(r.filter);else if(d&&!t){let e=await d("filter",cat,a);e&&e.length&&(this.limits=H(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(w(s)))if(t&&"extra"==h[1].toLowerCase()){var n=x(h[2]);for(var o of n){var c=o.indexOf("=");if(c>0){var l=w(o.substring(0,c));"v"!=l&&(this.rows[t][l]=o.substring(c+1).trim())}}}else switch(h[1].toLowerCase()){case"alias":if((b=h[2].toLowerCase().split(";"))[0].trim()!=this.name)if(1==b.length)this.alias=b[0];else{var f;this.amb?f=await this.amb.getvariante(b[0]):(f=new Z,await f.load(b[0],this.cat));var h=f?.rows;if(h){var d=Object.keys(h);if(d.length){b.splice(0,1);const e=e=>{e&&e.forEach((e=>this.rows[e]=h[e]))};for(var o of b){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=x(h[2]).map((e=>({des:e})));break;case"t":let e=x(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=x(h[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else(g=w((n=x(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 b=g.split(".");for(m=0;m<b.length-1;m++){var $=b.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=w(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=w(s[2].substring(0,e)),r=x(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",x(s[2]));break;case"item":case"i":r("i",x(s[2]));break;case"model":case"m":r("m",x(s[2]));break;case"e":case"escludi":case"exclude":r("ex",x(s[2]))}else r("valid",x(i))}return Y(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=w(cod);if(!this.rows[e])return cod;var t=this.rows[e];return 2==t.annulla?"":this.#e(cod,t)}isvalidopz(e){let t=w(e);return!!this.rows[t]&&1!=this.rows[t].annulla}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=w(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=H(e.filter))}else await this._loadContent(X(e,!1))}}let Q={};async function ee(e,t,a,vari){if(h){if(Q[t])return"";let e=await h(t,a,vari);return e=(e||"").trim(),"!"==e&&(Q[t]=!0,e=""),e}return e}async function te(amb,e,t){return await amb.vari.valuta(t,(async(t,a)=>{if("dim"===t){var r=R(a[1]),i=await ae(amb,e,a[2]),s=parseInt(a[3])||2;return i&&i.fromdim?i.fromdim(r,s):r}return await ee(`**fun:${t}**`,t,a,amb.vari)}))}async function ae(amb,macro,e){return macro&¯o?.localvar&¯o.localvar[e]?macro.localvar[e]:await amb.getvariante(e)}async function re(amb,macro,e,t,a){let r,i=e;if(t=t||""){var s=t.indexOf(":");s>=0&&(s>0&&(i=w(t.slice(0,s))),t=t.slice(s+1))}if(r=await ae(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 ie=(e,t,a)=>{null!=t&&null!=t&&("string"==typeof t&&t.startsWith("_ ")&&e.length>0&&"string"==typeof e[e.length-1]&&!a?e[e.length-1]+=t.slice(2):("string"==typeof t||a||(a="o"),a?e.push({t:a,v:t}):e.push(...t.split("\n"))))};async function se(amb,e,codice,options){if(!Array.isArray(codice))return O.add("codice is not a valid parsed array"),[];options||(options={}),options._stackmacro||(options._stackmacro=[]),options.limited||(options.limited=!1),amb||O.add("amb deve essere definito");let vari=amb.vari;amb.maxdelays,amb.cat;let t=[];g();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?R(await te(amb,e,riga.contenuto)):"IFDEF"==riga.tipo?""!=await te(amb,e,riga.contenuto):""==await te(amb,e,riga.contenuto);riga.next?(codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)):O.add("Troppo tempo",riga);break;case"SELECT":riga.next?(codice[riga.next].t1=await te(amb,e,riga.contenuto),a=riga.next-1):O.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=R(riga.t1||""),s=x(await te(amb,e,riga.contenuto));for(var n of s)if(R(n)==i){r=1;break}}else if("CASES"==riga.tipo){r=0;i=riga.t1||"",s=x(await te(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 O.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?R(await te(amb,e,riga.contenuto)):"ELSEIFDEF"==riga.tipo?""!=await te(amb,e,riga.contenuto):""==await te(amb,e,riga.contenuto);codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)}else O.add("manca endif",riga);break;case"ENDIF":case"ENDSELECT":break;case"PUSH":vari.push();break;case"POP":vari.pop();break;case"FUNC":case"F":case"MACRO":case"M":var{macro:macro,pars:o}=await amb.getmacro(riga);if(options._stackmacro.length>500)O.add("stack chiamate macro troppo profondo!",riga);else if(macro){let e=macro.parametri?._,a={};if("F"==riga.tipo||"FUNC"==riga.tipo)vari.push();else{if(macro.head)for(var c in macro.head)a[c]=amb.vari.var(c);if(e&&e.length)for(var c of e){let e=(c.split("=")[0]||"").trim().toLowerCase();e&&(a[e]=amb.vari.var(e))}}await macro.impostaparametri(e,o);let r={};r=macro.getparametri(),options._stackmacro.push(r);let i=[];if(macro.codice.length&&(i=await se(amb,macro,macro.codice,options)),options._stackmacro.pop(),options.cad?ie(t,i,"m"):t.push(...i),"F"==riga.tipo||"FUNC"==riga.tipo)vari.pop();else for(var n in a)amb.vari.dictionary[n]=a[n]}break;case"LET":case"LETS":var l=-1;if((d=riga.contenuto.indexOf("="))>=0&&(l=riga.contenuto.indexOf("=",d+1)),l<0){if((d=(n=riga.contenuto).indexOf("="))>0){var f=await te(amb,e,n.slice(0,d).trim()),h=n.slice(d+1).trim();h="LET"==riga.tipo?R(await te(amb,e,h))||"":await te(amb,e,h),vari.add(f,h)}}else{s=x(riga.contenuto);for(var n of s){if((d=n.indexOf("="))>0){f=await te(amb,e,n.slice(0,d)),h=n.slice(d+1).trim();h="LET"==riga.tipo?R(await te(amb,e,h))||"":await te(amb,e,h),vari.add(f,h)}}}break;case"LETT":var d;if((d=riga.contenuto.indexOf("="))>0){f=await te(amb,e,riga.contenuto.slice(0,d).trim()),h=riga.contenuto.slice(d+1).trim();vari.add(f,h)}break;case"LETV":case"LETM":case"DEF":if(r=x(riga.contenuto))for(var c of r){var{v:n,o:u,fl:v}=b(c);v&&(n=await amb.vari.valuta(n),u=await te(amb,e,u),await re(amb,e,n.trim().toLowerCase(),u.trim().toLowerCase(),"LETM"==riga.tipo?{t:"m"}:{t:"v"}))}break;case"DO":v=!0;(m=(riga.contenuto||"").trim())&&!R(await te(amb,e,m))&&(v=!1),riga.next&&(v||(a=riga.next+1));break;case"VARIANTE":case"FORVAR":case"FOR":{var m,p;if(options.oldstyle)n=(s=riga.contenuto.split(","))[2]||"i",p=s[0],m=s[1];else n=(s=x(riga.contenuto||""))[0]||"",p=s[1],m=s[2]||"";if(n=n.includes("$")?await te(amb,e,n):n||"","FORVAR"==riga.tipo||"VARIANTE"==riga.tipo){var w=(r=await te(amb,e,p))?await ae(amb,e,r):void 0;w?p=w.tovec():(p=[],O.add("getvariante not found!",riga))}else{var $=await te(amb,e,p||"");p=p?x($):void 0}p=p||[];let t=0;if(riga.next){(k=codice[riga.next]).for={v:n,elenco:p,nc:t,valido:m};var y;v=!0;n&&p.length>0?t>=p.length?v=!1:(y=p[t],vari.add(n,y),m&&(v=!R(await te(amb,e,m)))):v=!1,v||(a=riga.next-1)}else O.add("manca endfor/loop",riga)}break;case"LOOP":var v=!0;riga.contenuto&&!R(await te(amb,e,riga.contenuto))&&(v=!1),v&&(a=riga.prev-1);break;case"ENDFOR":if(!riga.contenuto||R(await te(amb,e,riga.contenuto)))if(riga.for){var{v:n,elenco:p,valido:m}=riga.for;if(n&&p.length>0&&riga.for.nc<500)for(;;){if(riga.for.nc++,riga.for.nc<p.length){if(vari.add(n,p[riga.for.nc]),m&&R(await te(amb,e,m)))continue;a=riga.prev;break}break}}else O.add("manca istruzione for",riga);break;case"BREAK":case"EXIT":case"EXITFOR":riga.next?riga.contenuto.trim()?R(await te(amb,e,riga.contenuto))&&(a=riga.next):a=riga.next:O.add("break outside loop",riga);break;case"CONTINUE":riga.next?riga.contenuto&&!R(await te(amb,e,riga.contenuto))||(a=riga.next-1):O.add("continue outside loop",riga);break;default:if((r=await te(amb,e,riga.contenuto)).startsWith("!")){f="";if(k=/^\!(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){var E=k[1].toLowerCase();o=x(k[2]||"");f=await ee(r,E,o,vari)}f&&ie(t,f)}else{var k;if(options.callback)if(k=/^(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){E=k[1].toLowerCase();var o=x(k[2]||"");r=await options.callback(E,o,options.key||"",a)}else r=await options.callback(r,[],options.key||"",a);ie(t,r)}}a++}return t}async function ne(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 ae(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}m("manca la variante",l)}}for(var u of i.calcola)e.formula[u]&&await se(amb,e,e.formula[u],{limited:!0});for(var u of i.exclude){if(e.formula[u])if(w=await se(amb,e,e.formula[u],{limited:!0}))for(var v of w){if(R(v))return}}var p=await se(amb,e,i.codice,{limited:!0,localvar:e.localvar}),g={};for(var u of i.bom)if(e.formula[u]){var w=await se(amb,e,e.formula[u],{limited:!0});for(var v of w=w.join("\n").split("\n"))if(v){var b=x(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=x(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)]=R(c[f]):l[h]=c[f]}await e(i,l,n?a:void 0,s.counter,s.counter2),n=!1}}}(a,p,g,i,t,r)}}await o(0)}}const oe=/^\{(\:?(var|valid|formula|genera|header|v|f|g|h))[\s|\}]/im;class ce{constructor(amb,e){var{name:e,cat:cat}=$(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)a=((a=this.amb.vari.var(t.cod))||"").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&&(a._h=!1,a._v=e[a.cod],t[a.cod]=!0);for(var a in e)t[a]||(t[a]=!0,await re(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 te(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._h){let e=!await te(this.amb,this,riga.valid);if(riga._h!=e&&(riga._h=!e,["g","g1","g2"].includes(riga.t)))for(let e=t;e<this.head.length;e++){let t=this.head[e];if(t){if(["g","g1","g2"].includes(t.t))break;t._h=riga._h}}}if(riga._h)return this.amb.vari.add(a,""),riga._v=void 0,"";{let t=this.amb.vari.var(a)||"";t=t.split(",")[0];let r=await re(this.amb,this,a,e||riga._v||t,riga);if(riga._v=void 0,t=this.amb.vari.var(a)||"",this.amb&&this.amb.deriva&&this.amb.deriva[a]){this.amb.deriva[a].filter((t=>!t.fop||t.fop==e)).forEach((t=>{let a=this.head.find((e=>e.cod==e.v));a&&(a._v=t.op||e)}))}return r}};let n=await s(i,t,r);if(a)for(let e=r+1;e<this.head.length;e++)await s(this.head[e],void 0,e);return n}return await re(this.amb,this,e,t)}async impostaparametri(e,t){if(this.head)for(var a of(Array.isArray(this.head)||(this.head=[]),this.head))this.head._v="";for(var r of(e||(e=[]),t||(t=[]),[...e,...t])){if((a=r.indexOf("="))>0){let e=w(r.substr(0,a));e.includes("$")&&(e=await te(this.amb,this,e));let t,i=r.substr(a+1);i.includes("$")&&(i=await te(this.amb,this,i)),this.head&&(t=this.head.find((t=>t.cod==e)))?t._v=i:await re(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 R(te(this.amb,this,e))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return S(this,["amb"])}setmacro(e){if(k(this,JSON.parse(e||{})),this.localvar)for(var t in this.localvar){k(e=new Z,this.localvar[t]),this.localvar[t]=e}}async load(e,t){try{var a,{name:r,cat:cat}=$(e||this.name,t||this.cat||"");if(this.name||(this.name=r),this.cat||(this.cat=cat),this.azzera(),f&&("string"==typeof(a=await f(cat,r))&&(a.startsWith("{")||a.startsWith("["))&&(a=JSON.parse(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}O.add(`missing cbGetFile: ${cat}/${r}`)}catch(e){O.add(c(e),`macro.load: ${r}/${cat}`)}}async loadAndCompile(e,cat,t=!1){var a,{name:r,cat:cat}=$(e,this.cat||cat);return this.azzera(),u&&(a=await u(cat,r)),a?(await this.parsedata(a,t),this.getmacro()):void O.add(`missing cbGetFile: ${r}/${cat}`)}async#t(e,t,a,r){var i,{name:s,cat:cat}=$(e,this.cat);if(u&&(i=await u(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=X(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=oe.exec(l);if(e)t=!e[1].startsWith(":"),c.push(l);else{const e=/^\s*\{i\s(.+)?\}/im.exec(l);if(e){r=x(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=X(e),i=!1;let s=[];for(var n of r){const e=oe.exec(n);if(e)i=!e[1].startsWith(":"),a.push(n);else{const e=/^\s*\{i\s(.+)?\}/im.exec(n);if(e){var o=x(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=oe.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=y(x(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=x(d[2]);f=y(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=y(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 Z,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)){(E={v:(E=b(n,",")).v,msg:E.o}).v&&(E.v.startsWith("#")?this.formula[E.v.substring(1)]&&this.valid.push(E):this.valid.push(E))}r=s;var p=[];for(var n of r){if(L=/^\s*([\w\-\_]+)+[\;\,\s]\s*(.*)?$/im.exec(n)){o=x(L[2]);var g=w(L[1]);let e;if(g)for(var $ of(e=p.find((e=>e.cod==g)),e||(e={cod:g,t:"t"},p.push(e)),o)){var E;switch((E=b($)).v){case"t":e.t=E.o;break;case"def":case"default":e.def=E.o;break;case"valid":case"colonna":case"hidden":E.o.startsWith("#")?this.formula[E.o.substring(1)]&&(e[E.v]=E.o):e[E.v]=E.o;break;default:e[E.v]=E.o}}}}this.head=p;r=this.genera;var k={};for(var S in r)if(Array.isArray(r[S])){var O={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]};const e=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;for(var F of r[S]){var L;if(L=e.exec(w(F)))switch(L[1]){case"calcola":case"c":O.calcola=[...O.calcola,...x(L[2])];break;case"exclude":case"e":case"escludi":O.exclude=[...O.exclude,...x(L[2])];break;case"bom":case"db":O.bom=[...O.bom,...x(L[2])];break;case"vars":case"v":O.vars=[...O.vars,...x(L[2])];break;case"head":case"h":O.head=x(L[2]);break;default:this.errori.push(`genera ${S} => ${F}`)}else O.codice.push(F)}O.codice=G(O.codice,!0),k[S]=O}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]=x(t[1]);else{let t=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(codice[r]);t&&(codice[r]=null,a=!0,this.parametri[e]=x(t[2]))}}a&&(codice=codice.filter((e=>null!=e)))}return codice=G(codice,t)}}class le{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=w(r.cod),r.barcode=w(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 fe(e){var t=X(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:w(o[0])};(n=(o[1]||"").trim())&&(c.des=n),(n=w(o[2]))&&(c.tipo=n),(n=w(o[3]))&&(c.alias=n),(n=w(o[4]))&&(c.valid=n),(n=w(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 he(e){var t=X(e.toLowerCase(),!1),a={};for(var r of t)if(!/^\s*\:/.exec(r)){var i=x(r);i[0]&&i[1]&&(a[i[0]]=i[1])}return a}function de(e){X(e.toLowerCase(),!1);let t={};for(var a of tm){var r=x(a);if(r[0]&&r[1]){var i=b(r[0]),s=b(r[1]);if(i.v&&s.v){this.deriva[i.v]||(this.deriva[i.v]=[]);var n={v:s.v};i.o&&(n.fop=i.o),s.o&&(n.op=s.o),t[i.v].push(n)}}}return t}class ue{#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=w(cat),this.cat!=cat&&(this.cat=cat,this.item=this.rule=this.model="",this.azzera(!0)),cat}azzera(e=!1){this.vari=new B,this.ruleheader="",e&&(this.macro={},this.varianti={},this.varelenco={},this.macroelenco={},this.#a=void 0,this.#r=void 0,this.#i=void 0,this.#s=void 0)}async#n(cat){d&&(this.varelenco[cat]||(this.varelenco[cat]=await d("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=fe(t.value),this.#a=t.value||{};break;case"_alias":t.value,t.value=he(t.value),this.#r=t.value||{};break;case"_deriva":t.value,t.value=de(t.value),this.#i=t.value||{};break;case"_typos":t.value;var a=JSON.parse(t.value||"{}");for(var r in a){var i=a[r];i.db&&(i.db=G(X(i.db))),i.list&&(i.list=G(X(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&&d){var e=await d("headers",this.cat,"_headers");this.parseheaderfrominfo(e)}return this.#a||(this.#a={}),this.#a[cod]}async getalias(){if(!this.#r&&d){var e=await d("headers",this.cat,"_alias");this.parseheaderfrominfo(e)}return this.#r||(this.#r={}),this.#r}async getderiva(){if(!this.#i&&d){var e=await d("headers",this.cat,"_deriva");this.parseheaderfrominfo(e)}return this.#i||(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 O.add("Macro non valida:"+riga.contenuto,riga);(macro=w(e[1])).includes("$")&&(macro=await this.vari.valuta(macro));var t=x(e[2]),{name:a,cat:cat}=$(macro,this.cat);this.cat=cat;var macro,r=`${cat}/${a}`;if(!this.macro[r]){var i=new ce(this,a);await i.load()?this.macro[r]=i:O.add(`macro fail to load ${r}`,riga)}return(macro=this.macro[r])?{macro:macro,pars:t}:(O.add(`macro non trovata ${r}`,riga),{})}catch(e){O.add(c(e),`ambiente.getmacro: ${riga?.contenuto}`)}}async varcompila(e,t){var a=new Z(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(S(a,["amb"]))})}async macrocompila(e,t){var a=new ce(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 le;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 h&&(t=await h("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,d){var r=await d("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(r)}this.#a?t("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):m("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.#r)}),this.#s&&t("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#s)})}}async getvariante(cod){var{name:e,cat:cat}=$(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 Z(this);await r.load(a,cat),this.varianti[a]=r}return this.varianti[a]}}async getheaderfromdb(e){let{head:t,rows:a,macros:r}=await d("header",this.cat,e);await this.#n(this.cat),t.cod=w(t.cod),t.rule=w(t.rule),t.ruledef=t.ruledef||[];let i=[];for(var s of a){s.cod=w(s.cod),s.alias=w(s.alias),s.t=w(s.t);let e=s.alias?s.alias:s.cod;if(!this.varianti[`${this.cat}/${e}`]){let t=this.varelenco[this.cat];t&&t.includes(e)&&i.push(e)}}if(i.length&&l){var n=await l(this.cat,i);if(n&&n.length)for(var o of n){let{name:e,content:t}=o,a=new Z(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&&f){let e=await f(this.cat,i);if(e&&e.length>0)for(var n of e){let e=new ce(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}=$(e,this.cat),r=`${cat}/${a}`;if(console.log("v1",Object.keys(this.varianti)),!this.macro[r]){let{head:t,rows:n,macros:o}=await this.getheaderfromdb(a);console.log("v1a",Object.keys(this.varianti)),await this.getlinkedmacros(t.rule,o),console.log("v2",Object.keys(this.varianti));var i=new ce(this,a);if(!t)return void O.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])}console.log("v3",Object.keys(this.varianti)),i.head=n.length?n:void 0,this.macro[r]=i}console.log("v4",Object.keys(this.varianti)),this.ruleheader=r;let n=this.macro[r];return O.azzera(),console.log("v5",Object.keys(this.varianti)),await n.setparametri(t),console.log("v6",Object.keys(this.varianti)),n}getruleheader(){return this.macro[this.ruleheader]}async setvariante(cod,e){return await re(this,null,cod,e)}async valuta(codice){let e;return"string"==typeof codice&&(codice=G(X(codice,this.righevuote))),Array.isArray(codice)&&(m("m1",codice),e=await se(this,null,codice)),e}setinfos(e){e&&(this.#a=e.headers,this.#r=e.alias,this.#i=e.deriva,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 ve={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"}}},me=/^\s*\{(\:)?(var|deriva|valid|formula|header|genera|g|v|f|h)(\s.*)?\}/i;function pe(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(me.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=x(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{Clear:ge,Reset:we,Bold:be,Reverse:$e,Red:ye,Green:xe,Yellow:Ee,Blue:ke,Magenta:Se,Cyan:Oe,White:Fe}=a();var Le=o(process.argv);console.log("----------------------------------------------------------------------------------------"),console.log(`${be}${Oe}${be}Markuno:${we} command line utility del linguaggio (c) Croswil 2024 v. ${Ee}1.0.39${we}`),console.log("----------------------------------------------------------------------------------------");var Ce={FOLDERBASE:"./",DBWORK:"./data/app.db",FOLDERCAT:"./data/mu",FOLDEROUT:"./out",CAT:"cat"};const _e=".lasts.markuno";e.existsSync(_e)&&(Ce=JSON.parse(e.readFileSync(_e)));var je=Le._;(Le.h||Le.help||!je[2])&&(console.log(`Uso: ${be}markuno <funzioni> <[catalogo/]markuno> [opzioni]${we} \n${be}${Oe}Funzioni:${we} (seleziona una tra le seguenti)\n ${Fe} c, compila ${we}${xe} compila un catalogo/Markuno + Codici Barra\n ${Fe} d, dump ${we}${xe} compila e salva il compilato in formato json\n ${Fe} e, esegui ${we}${xe} esegui un file markuno \n ${Fe} f, formatta ${we}${xe} Formattazione di un file .mu o .var\n ${Fe} g, genera${we}${xe} generatore di codice \n ${Fe} w, watch ${we}${xe} abilita il watch su un file markuno \n ${Fe} gw <markuno> <maxele> ${we}${xe} Genera con wath (solo i primi maxele=20 elementi senza salvare\n${be}${Oe}Opzioni:${we}${xe}\n ${Fe} -h, --help${we}${xe} mostra l'help\n ${Fe} -c, --cat <cat>${we}${xe} catalogo (default='${Ce.CAT}' ) \n ${Fe} -d, --dbwork ${we}${xe} database principale (default='${Ce.DBWORK}')\n ${Fe} -i, --init <folder>${we}${xe} cartella di lavoro (default='${Ce.FOLDERCAT}' ) \n ${Fe} -o, --out <folder>${we}${xe} cartella di output (default='${Ce.FOLDEROUT}' ) \n ${Fe} -x, --xlsx${we}${xe} output in formato excel (generatore)\n `),process.exit(0));let Ae=0;const Ie="./",De=Le.d||Le.dbwork||Ce.DBWORK,Ne=Le.i||Le.init||Ce.FOLDERCAT,ze=Le.o||Le.out||Ce.FOLDEROUT,Te=Le.c||Le.cat||Ce.CAT;var Me=void 0,Re=!1;e.existsSync(Ne)||Je(`Manca la cartella di lavoro: ${Ne}`),Ce=Object.assign(Ce,{FOLDERBASE:Ie,DBWORK:De,FOLDERCAT:Ne,FOLDEROUT:ze,CAT:Te}),e.writeFileSync(_e,JSON.stringify(Ce,null,2)),e.existsSync(Ne)||e.mkdirSync(Ne,{recursive:!0});const We=Le.x||Le.xlsx;function Je(e){var t=e.stack.toString().split("\n");t.splice(0,1),t=t.filter((e=>!/module/.test(e)&&!/node\:/.test(e))),console.log(`${ye}${e.message}${we}\n${t.join("\n")}`),process.exit(1)}function Ue(cat){var a=t.join(Ne,`mu_${cat}.db`);e.existsSync(a)||r(a,ve,"mus"),console.log("DB",a);var n=i.db(a);return s(ve),n}function Ve(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 Pe(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 Be(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 Ke(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=`${Ne}/${cat}/${t}.mu`;return e.existsSync(a)?e.readFileSync(a).toString():""}async function cbGetVariante(cat,t){var a=`${Ne}/${cat}/${t}.var`;return e.existsSync(a)?e.readFileSync(a).toString():(O.add(`missing var: ${cat}, ${t}`,{t:"cbGetVariante"}),"")}async function cbFunc(e,t,a){O.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(!Me||!a&&!a[0])return[];if(Re)return[];var n=Me.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?`${Ne}/${cat}/typos.json`:`${Ne}/${cat}/${a}.inc`,e.existsSync(c)?e.readFileSync(c).toString():""}}async function cbGetFile(cat,a){if(e.existsSync(t.join(Ie,a)))return e.readFileSync(t.join(Ie,a)).toString();const r=`${Ne}/${cat}/${a}`;if(e.existsSync(r))return e.readFileSync(r).toString();O.add(`missing file: ${r}`,{t:"cbGetFile"})}function Xe(cat,a){var r=t.extname(a);[".mu",".var",".inc"].includes(r)||(r=".mu",a+=".mu");var i=t.join(Ne,cat||Te),s=t.join(Ie,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(Ne,cat||Te),!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 Ge(amb,t){var{file:a,folder:r,diversi:i}=Xe(amb.cat,je[3]||""),s=parseInt(je[4]||"10");console.log(`Start Watching: ${Oe}${be}${a}${we}`),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 qe(amb,a){var{file:r,folder:i,diversi:s}=Xe(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 ce(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 ne(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:R(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(`${Ee}${m.join(" | ")}${we}`),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(ze,`gen_${o}.json`),JSON.stringify(h,null,2));const a=t.join(ze,`gen_${o}.xlsx`);var y=(new Date).valueOf();if(We){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(`${Ee}${be}EVAL........: ${b}${we}${Oe} rows\n${Oe}load/compile: ${be}${Ee}${f-l}${we}${Oe} ms.\n${Oe}generate....: ${be}${Ee}${w-f}${we}${Oe} ms.\n${Oe}save JSON...: ${be}${Ee}${y-w}${we}${Oe} ms.\n${Oe}save XLSX...: ${be}${Ee}${E-y}${we}${Oe} ms.\n--------------------------------\n${Oe}${be}TOTALE......: ${Ee}${E-l}${we}${Oe} ms.`)}}async function He(amb){var{file:a,folder:r,diversi:i}=Xe(amb.cat,je[3]||""),s=(new Date).valueOf(),n=e.readFileSync(a).toString(),o=new ce(amb,je[3]||"");Ae++,o.parsedata(n);var c=(new Date).valueOf(),l=await se(amb,o,o.codice,{limited:!1,oldstyle:!0,localvar:o.localvar}),f=(new Date).valueOf();console.log(`${l.join("\n")}`),console.log(`${Ee}${be}EVAL ${Ae}${we}: ${a} => ${Oe}load:${be}${Ee}${c-s}${we}${Oe}ms. -- exec:${be}${Ee}${f-c}${we}${Oe}ms.${we}\n----------------------------------------------\n${O.toString()}`),e.writeFileSync(t.join(ze,"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(ze,"out.txt"),l.join("\n"))}await async function(){try{var amb=function(cat,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e){var t=new ue(cat);return p(cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e),t}(Te,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile),a=t.join(Ne,Te);if(e.mkdirSync(ze,{recursive:!0}),!e.existsSync(a))throw new Error(`Manca il catalogo: ${Te} su ${Ne}`);var r=(new Date).valueOf();switch(je[2].trim().toLowerCase()){case"g":case"genera":await qe(amb,0);break;case"d":case"dump":await async function(amb){var{file:a,folder:r,diversi:i}=Xe(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 ce(amb,c);await l.loadAndCompile(`${c}${o}`),s=l.getmacro(),n=t.join(ze,c+".json")}else".var"==o&&(s=await async function(cod,cat,amb){var e=new Z(amb);return await e.load(cod,cat),e}(c,Te,amb),n=t.join(ze,c+".var.json"));s&&(e.writeFileSync(n,JSON.stringify(s,null,2)),console.log(`${Oe}${be}Dump: ${we}${Ee}${n}`))}(amb);break;case"gw":await Ge(amb,qe);break;case"c":case"compila":await async function(amb){var a,r,s=t.join(Ne,Te);if(!e.existsSync(s))throw new Error("Manca il catalogo "+Te);if(!e.existsSync(De))throw new Error("Manca il database di lavoro: "+De);if(e.existsSync(De))if((Me=i.db(De)).esisteTabella("artbarre")){Re=!0;var o=Me.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=Me.all("select codicebarra barcode,diml l,dima a,dimp p,cod cod from articoli where codicebarra like ? order by codicebarra","+%")}else a=Me.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=Ue(Te);l.begin(),l.run("delete from variants"),l.run("delete from macros"),l.run("delete from barcodes"),l.run("delete from extras");var f=Pe(Te,s);for(var h of(await amb.compila(f,((e,t)=>{if(t){if("macros"===e){var{def:a,md:r}=Ve(`${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=q(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"),Me&&Me.chiudi();l.commit(),l.chiudi()}(amb),console.log(`Compilazione catalogo: ${ye}${be}${Te}${we}: ${Ee}${(new Date).valueOf()-r}ms.`);break;case"x":case"e":case"esegui":await He(amb);break;case"f":case"format":!function(amb){var{file:t,folder:a,diversi:r,ext:i}=Xe(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=pe(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=me.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=pe(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=x(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} ${Oe}${be}${t}${we}`)}}(amb);break;case"w":case"watch":await Ge(amb,He);break;default:throw new Error("Funzione non contemplata (g,c,b,x)")}}catch(e){Je(e)}}();export{Ue as dbmu,Pe as getinfo,Ve as getinfofile,Be as xlsexport,Ke 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){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 l,f,h,d,u,v;const m=(...e)=>{v?v(e):console.log(...e)};function p(e,t,a,r,i,s){f=e,l=t,h=a,d=r,u=i,v=s}const g=()=>(new Date).valueOf();function w(e){return(e||"").trim().toLowerCase()}function b(e,t="="){var a=(e=e||"").indexOf(t);return a>=0?{v:w(e.substring(0,a)),o:e.substring(a+t.length).trim(),fl:!0}:{v:w(e),o:"",fl:!1}}function $(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=y(cat)}}function y(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 x(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();e&&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 E=(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 k(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 S(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 F(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 m(`Errore parsing JSON: ${a}\n${e}`),t||{}}}const 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 a="object"==typeof t.msg?JSON.stringify(t.msg):t.msg||"";e.push(`${t.row?t.row+":":""}${a}`)}return e.join("\n")}},L=/(?<!\w)\(/g,_=/^-?[0-9.]+$/,C=/^(\w+)(\!)?\[(.*)?\]$/,A=/^(rnd|random|cas)\(/i,I=/^clamp\(/i,D=/^(dec|round)\(/i,j=/[0-9.]/,z=/[+\-*/\^\%]/,N=/[a-zA-Z]/i;function T(e){for(e=(e+"").trim();;){var t=L.exec(e);if(!t)break;var{i:a,res:r}=E(e,t.index+1,"(",")");if(a<=0)break;e=e.substring(0,t.index)+T(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=x(e[3]);for(var i of r)if(i==t)return a?"0":"1";return a?"1":"0"}for(;;){var t=C.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={"||":()=>T(t)||T(a)?1:0,"|":()=>T(t)||T(a)?1:0,"&&":()=>T(t)&&T(a)?1:0,"&":()=>T(t)&&T(a)?1:0,"<<=":()=>w(t)<=w(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),"<=":()=>R(t)<=R(a),">=":()=>R(t)>=R(a),"<":()=>R(t)<R(a),">":()=>R(t)>R(a),"=":()=>R(t)==R(a),"!":()=>R(t)!=R(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):R(e)}(e)}const M={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 R(e){let t=0;function a(){const a=e[t];return z.test(a)?(t++,a):null}function r(){if(j.test(e[t]))return function(){const a=t;for(;t<e.length&&j.test(e[t]);)t++;return Number(e.slice(a,t))}();if("("===e[t]){t++;const a=s();return")"===e[t]&&t++,a}return N.test(e[t])?function(){var a=e.slice(t);if(!a)return 0;for(const[r,i]of Object.entries(M)){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=I.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=D.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 W(e){if(!e)return 0;if("number"==typeof e)return e||0;if("string"!=typeof e)return 0;var t=e.replaceAll(",",".");return _.test(t)?Number(t)||0:T(e)||0}const U=500;function J(e,t){var a=t[0]||"";if(!a)return"";if(e.counter>=U)return a;var r=B(e,e.var(P(e,a)));if(e.counter>=U)return a;if(t[1]){var i=W(P(e,t[1])),s=x(r);if(!(i>=0&&i<s.length))return"";r=P(e,s[i])}if(t[2]){var n=W(P(e,t[2]));if(n){var o=0;return t[3]&&(o=W(P(e,t[3]))),n<0?r.slice(n):o?r.substring(n-1,n+o-1):r.substring(n-1)}}return r}function V(e,t){var a=x(t||""),r=w(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=P(e,a[1]||""),n=P(e,a[2]||"");e.add(s,e.vars(n));break;case"ex":s=P(e,a[1]||"");(n=P(e,a[2]||""))||(n=",");var o=W(P(e,a[3]||"")),c=s.split(n);return o>0&&c[o-1]||"";case"ex2":var l=i(a[1]||""),f=W(P(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=W(P(e,a[1]||""))||0)?a[f>0?f+1:2]||"":(f=W(P(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=P(e,a[1]||""),v=(f=W(P(e,a[2]||"")),W(P(e,a[3]||"")));return u.substring(f-1,f+v-1);case"arrotonda":{u=W(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=W(a[2]),0==e&&(e=1e3)),Math.round(u*e)/e}case"iif":return(u=W(P(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 P(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]?E(t,a+2,"(",")"):E(t,a+2,"{","}");t=P(e,t.substring(0,a))+J(e,i)+(r>=0?P(e,t.substring(r+1)):"")}return t=(t=t.replace(/\$([a-z|][\w|\.]*)/gi,((t,a)=>{for(var r="";a.length;){var i=B(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 B(e,t){return t&&(e.counter++,e.counter<=U&&(t=P(e,t)),e.counter--),t}class K{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();objval(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}var(e){const t=K.sanitizeKey(e);if(K.isValidKey(t)){var a=/^([\w][\w|\d]*)[\.\[]/.exec(t);if(a){var r=this.dictionary[a[1]];if(r&&"object"==typeof r)return this.objval(r,t.substring(a[0].length))}return this.dictionary[t.toLowerCase()]||""}return""}getvar(e){return this.var(e)}colonna(e,t){return x[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=K.sanitizeKey(e);if(K.isValidKey(a)){const e=a.toLowerCase();0===t||t?this.dictionary[e]=t:delete this.dictionary[e]}else m(`Invalid key: ${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=B(e,t);break}var{i:s,res:n}=E(t,i+2,"[","]"),o=B(e,t.substring(0,i)),c=n?B(e,n[0]):"",l=s>=0?B(e,t.substring(s+1)):"",f=V(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}=E(e,t+1,"{","}");if(a<0)return e;e=e.substring(0,t)+W(r[0])+(a>=0?e.substring(a+1):"")}return e})(a),a}}const X="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|:P".split("|");function G(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 q(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(X.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})}O.add("muClean: expected array!")}function H(e){var t,a=G(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"==w(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:m("missing:",n[1])}}return r}function Y(e){let t,a=[];for(var r of e){t={},r.varfilter=F(r.varfilter,[]),r.result=F(r.result,[]),r.result2=F(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=>w("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=w(item).split(";")),model&&(t.m=w(model).split(";")),i&&(t.r=w(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==w(u.Variant)));v||(v={v:w(u.Variant),o:[]},t.v.push(v)),v.o=[...v.o,w(u.Value).split(";")]}}Z(t),a.push(t)}}return a=a.sort(((e,t)=>t.l-e.l)),a}function Z(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 Q{constructor(amb){this.rows={},this.name="$",this.key="$",this.amb=amb}setheader(e,cat){var{name:t,cat:cat}=$(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=W(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(l){var r=await l(cat,a);if(r){if(await this.loadContentExtended(r),r.filter)m("verifica anche i filtri!",r.filter),this.limits=Y(r.filter);else if(d&&!t){let e=await d("filter",cat,a);e&&e.length&&(this.limits=Y(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(w(s)))if(t&&"extra"==h[1].toLowerCase()){var n=x(h[2]);for(var o of n){var c=o.indexOf("=");if(c>0){var l=w(o.substring(0,c));"v"!=l&&(this.rows[t][l]=o.substring(c+1).trim())}}}else switch(h[1].toLowerCase()){case"alias":if((b=h[2].toLowerCase().split(";"))[0].trim()!=this.name)if(1==b.length)this.alias=b[0];else{var f;this.amb?f=await this.amb.getvariante(b[0]):(f=new Q,await f.load(b[0],this.cat));var h=f?.rows;if(h){var d=Object.keys(h);if(d.length){b.splice(0,1);const e=e=>{e&&e.forEach((e=>this.rows[e]=h[e]))};for(var o of b){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=x(h[2]).map((e=>({des:e})));break;case"t":let e=x(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=x(h[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else(g=w((n=x(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 b=g.split(".");for(m=0;m<b.length-1;m++){var $=b.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=w(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=w(s[2].substring(0,e)),r=x(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",x(s[2]));break;case"item":case"i":r("i",x(s[2]));break;case"model":case"m":r("m",x(s[2]));break;case"e":case"escludi":case"exclude":r("ex",x(s[2]))}else r("valid",x(i))}return Z(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=w(cod);if(!this.rows[e])return cod;var t=this.rows[e];return 2==t.annulla?"":this.#e(cod,t)}isvalidopz(e){let t=w(e);return!!this.rows[t]&&1!=this.rows[t].annulla}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=w(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=Y(e.filter))}else await this._loadContent(G(e,!1))}}let ee={};async function te(e,t,a,vari){if(h){if(ee[t])return"";let e=await h(t,a,vari);return e=(e||"").trim(),"!"==e&&(ee[t]=!0,e=""),e}return e}async function ae(amb,e,t){return await amb.vari.valuta(t,(async(t,a)=>{if("dim"===t){var r=W(a[1]),i=await re(amb,e,a[2]),s=parseInt(a[3])||2;return i&&i.fromdim?i.fromdim(r,s):r}return await te(`**fun:${t}**`,t,a,amb.vari)}))}async function re(amb,macro,e){return macro&¯o?.localvar&¯o.localvar[e]?macro.localvar[e]:await amb.getvariante(e)}async function ie(amb,macro,e,t,a){let r,i=e;if(t=t||""){var s=t.indexOf(":");s>=0&&(s>0&&(i=w(t.slice(0,s))),t=t.slice(s+1))}if(r=await re(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 se=(e,t,a)=>{null!=t&&null!=t&&("string"==typeof t&&t.startsWith("_ ")&&e.length>0&&"string"==typeof e[e.length-1]&&!a?e[e.length-1]+=t.slice(2):("string"==typeof t||a||(a="o"),a?e.push({t:a,v:t}):e.push(...t.split("\n"))))};async function ne(amb,e,codice,options){if(!Array.isArray(codice))return O.add("codice is not a valid parsed array"),[];options||(options={}),options._stackmacro||(options._stackmacro=[]),options.limited||(options.limited=!1),amb||O.add("amb deve essere definito");let vari=amb.vari;amb.maxdelays,amb.cat;let t=[];g();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?W(await ae(amb,e,riga.contenuto)):"IFDEF"==riga.tipo?""!=await ae(amb,e,riga.contenuto):""==await ae(amb,e,riga.contenuto);riga.next?(codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)):O.add("Troppo tempo",riga);break;case"SELECT":riga.next?(codice[riga.next].t1=await ae(amb,e,riga.contenuto),a=riga.next-1):O.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=W(riga.t1||""),s=x(await ae(amb,e,riga.contenuto));for(var n of s)if(W(n)==i){r=1;break}}else if("CASES"==riga.tipo){r=0;i=riga.t1||"",s=x(await ae(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 O.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?W(await ae(amb,e,riga.contenuto)):"ELSEIFDEF"==riga.tipo?""!=await ae(amb,e,riga.contenuto):""==await ae(amb,e,riga.contenuto);codice[riga.next].jlast=r?1:0,r||(a=riga.next-1)}else O.add("manca endif",riga);break;case"ENDIF":case"ENDSELECT":break;case"PUSH":vari.push();break;case"POP":vari.pop();break;case"FUNC":case"F":case"MACRO":case"M":var{macro:macro,pars:o}=await amb.getmacro(riga);if(options._stackmacro.length>500)O.add("stack chiamate macro troppo profondo!",riga);else if(macro){let e=macro.parametri?._,a={};if("F"==riga.tipo||"FUNC"==riga.tipo)vari.push();else{if(macro.head)for(var c in macro.head)a[c]=amb.vari.var(c);if(e&&e.length)for(var c of e){let e=(c.split("=")[0]||"").trim().toLowerCase();e&&(a[e]=amb.vari.var(e))}}await macro.impostaparametri(e,o);let r={};r=macro.getparametri(),options._stackmacro.push(r);let i=[];if(macro.codice.length&&(i=await ne(amb,macro,macro.codice,options)),options._stackmacro.pop(),options.cad?se(t,i,"m"):t.push(...i),"F"==riga.tipo||"FUNC"==riga.tipo)vari.pop();else for(var n in a)amb.vari.dictionary[n]=a[n]}break;case"LET":case"LETS":var l=-1;if((d=riga.contenuto.indexOf("="))>=0&&(l=riga.contenuto.indexOf("=",d+1)),l<0){if((d=(n=riga.contenuto).indexOf("="))>0){var f=await ae(amb,e,n.slice(0,d).trim()),h=n.slice(d+1).trim();h="LET"==riga.tipo?W(await ae(amb,e,h))||"":await ae(amb,e,h),vari.add(f,h)}}else{s=x(riga.contenuto);for(var n of s){if((d=n.indexOf("="))>0){f=await ae(amb,e,n.slice(0,d)),h=n.slice(d+1).trim();h="LET"==riga.tipo?W(await ae(amb,e,h))||"":await ae(amb,e,h),vari.add(f,h)}}}break;case"LETT":var d;if((d=riga.contenuto.indexOf("="))>0){f=await ae(amb,e,riga.contenuto.slice(0,d).trim()),h=riga.contenuto.slice(d+1).trim();vari.add(f,h)}break;case"LETV":case"LETM":case"DEF":if(r=x(riga.contenuto))for(var c of r){var{v:n,o:u,fl:v}=b(c);v&&(n=await amb.vari.valuta(n),u=await ae(amb,e,u),await ie(amb,e,n.trim().toLowerCase(),u.trim().toLowerCase(),"LETM"==riga.tipo?{t:"m"}:{t:"v"}))}break;case"DO":v=!0;(m=(riga.contenuto||"").trim())&&!W(await ae(amb,e,m))&&(v=!1),riga.next&&(v||(a=riga.next+1));break;case"VARIANTE":case"FORVAR":case"FOR":{var m,p;if(options.oldstyle)n=(s=riga.contenuto.split(","))[2]||"i",p=s[0],m=s[1];else n=(s=x(riga.contenuto||""))[0]||"",p=s[1],m=s[2]||"";if(n=n.includes("$")?await ae(amb,e,n):n||"","FORVAR"==riga.tipo||"VARIANTE"==riga.tipo){var w=(r=await ae(amb,e,p))?await re(amb,e,r):void 0;w?p=w.tovec():(p=[],O.add("getvariante not found!",riga))}else{var $=await ae(amb,e,p||"");p=p?x($):void 0}p=p||[];let t=0;if(riga.next){(k=codice[riga.next]).for={v:n,elenco:p,nc:t,valido:m};var y;v=!0;n&&p.length>0?t>=p.length?v=!1:(y=p[t],vari.add(n,y),m&&(v=!W(await ae(amb,e,m)))):v=!1,v||(a=riga.next-1)}else O.add("manca endfor/loop",riga)}break;case"LOOP":var v=!0;riga.contenuto&&!W(await ae(amb,e,riga.contenuto))&&(v=!1),v&&(a=riga.prev-1);break;case"ENDFOR":if(!riga.contenuto||W(await ae(amb,e,riga.contenuto)))if(riga.for){var{v:n,elenco:p,valido:m}=riga.for;if(n&&p.length>0&&riga.for.nc<500)for(;;){if(riga.for.nc++,riga.for.nc<p.length){if(vari.add(n,p[riga.for.nc]),m&&W(await ae(amb,e,m)))continue;a=riga.prev;break}break}}else O.add("manca istruzione for",riga);break;case"BREAK":case"EXIT":case"EXITFOR":riga.next?riga.contenuto.trim()?W(await ae(amb,e,riga.contenuto))&&(a=riga.next):a=riga.next:O.add("break outside loop",riga);break;case"CONTINUE":riga.next?riga.contenuto&&!W(await ae(amb,e,riga.contenuto))||(a=riga.next-1):O.add("continue outside loop",riga);break;default:if((r=await ae(amb,e,riga.contenuto)).startsWith("!")){f="";if(k=/^\!(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){var E=k[1].toLowerCase();o=x(k[2]||"");f=await te(r,E,o,vari)}f&&se(t,f)}else{var k;if(options.callback)if(k=/^(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){E=k[1].toLowerCase();var o=x(k[2]||"");r=await options.callback(E,o,options.key||"",a)}else r=await options.callback(r,[],options.key||"",a);se(t,r)}}a++}return t}async function oe(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 re(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}m("manca la variante",l)}}for(var u of i.calcola)e.formula[u]&&await ne(amb,e,e.formula[u],{limited:!0});for(var u of i.exclude){if(e.formula[u])if(w=await ne(amb,e,e.formula[u],{limited:!0}))for(var v of w){if(W(v))return}}var p=await ne(amb,e,i.codice,{limited:!0,localvar:e.localvar}),g={};for(var u of i.bom)if(e.formula[u]){var w=await ne(amb,e,e.formula[u],{limited:!0});for(var v of w=w.join("\n").split("\n"))if(v){var b=x(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=x(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)]=W(c[f]):l[h]=c[f]}await e(i,l,n?a:void 0,s.counter,s.counter2),n=!1}}}(a,p,g,i,t,r)}}await o(0)}}const ce=/^\{(\:?(var|valid|formula|genera|header|v|f|g|h))[\s|\}]/im;class le{constructor(amb,e){var{name:e,cat:cat}=$(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)a=((a=this.amb.vari.var(t.cod))||"").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&&(a._h=!1,a._v=e[a.cod],t[a.cod]=!0);for(var a in e)t[a]||(t[a]=!0,await ie(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 ae(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._h){let e=!await ae(this.amb,this,riga.valid);if(riga._h!=e&&(riga._h=!e,["g","g1","g2"].includes(riga.t)))for(let e=t;e<this.head.length;e++){let t=this.head[e];if(t){if(["g","g1","g2"].includes(t.t))break;t._h=riga._h}}}if(riga._h)return this.amb.vari.add(a,""),riga._v=void 0,"";{let t=this.amb.vari.var(a)||"";t=t.split(",")[0];let r=await ie(this.amb,this,a,e||riga._v||t,riga);if(riga._v=void 0,t=this.amb.vari.var(a)||"",this.amb&&this.amb.deriva&&this.amb.deriva[a]){this.amb.deriva[a].filter((t=>!t.fop||t.fop==e)).forEach((t=>{let a=this.head.find((e=>e.cod==e.v));a&&(a._v=t.op||e)}))}return r}};let n=await s(i,t,r);if(a)for(let e=r+1;e<this.head.length;e++)await s(this.head[e],void 0,e);return n}return await ie(this.amb,this,e,t)}async impostaparametri(e,t){if(this.head)for(var a of(Array.isArray(this.head)||(this.head=[]),this.head))this.head._v="";for(var r of(e||(e=[]),t||(t=[]),[...e,...t])){if((a=r.indexOf("="))>0){let e=w(r.substr(0,a));e.includes("$")&&(e=await ae(this.amb,this,e));let t,i=r.substr(a+1);i.includes("$")&&(i=await ae(this.amb,this,i)),this.head&&(t=this.head.find((t=>t.cod==e)))?t._v=i:await ie(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 W(ae(this.amb,this,e))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return S(this,["amb"])}setmacro(e){if(k(this,F(e,{})),this.localvar)for(var t in this.localvar){k(e=new Q,this.localvar[t]),this.localvar[t]=e}}async load(e,t){try{var a,{name:r,cat:cat}=$(e||this.name,t||this.cat||"");if(this.name||(this.name=r),this.cat||(this.cat=cat),this.azzera(),f&&("string"==typeof(a=await f(cat,r))&&(a.startsWith("{")||a.startsWith("["))&&(a=F(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}O.add(`missing cbGetFile: ${cat}/${r}`)}catch(e){O.add(c(e),`macro.load: ${r}/${cat}`)}}async loadAndCompile(e,cat,t=!1){var a,{name:r,cat:cat}=$(e,this.cat||cat);return this.azzera(),u&&(a=await u(cat,r)),a?(await this.parsedata(a,t),this.getmacro()):void O.add(`missing cbGetFile: ${r}/${cat}`)}async#t(e,t,a,r){var i,{name:s,cat:cat}=$(e,this.cat);if(u&&(i=await u(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=G(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=ce.exec(l);if(e)t=!e[1].startsWith(":"),c.push(l);else{const e=/^\s*\{i\s(.+)?\}/im.exec(l);if(e){r=x(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=G(e),i=!1;let s=[];for(var n of r){const e=ce.exec(n);if(e)i=!e[1].startsWith(":"),a.push(n);else{const e=/^\s*\{i\s(.+)?\}/im.exec(n);if(e){var o=x(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=ce.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=y(x(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=x(d[2]);f=y(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=y(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 Q,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)){(E={v:(E=b(n,",")).v,msg:E.o}).v&&(E.v.startsWith("#")?this.formula[E.v.substring(1)]&&this.valid.push(E):this.valid.push(E))}r=s;var p=[];for(var n of r){if(L=/^\s*([\w\-\_]+)+[\;\,\s]\s*(.*)?$/im.exec(n)){o=x(L[2]);var g=w(L[1]);let e;if(g)for(var $ of(e=p.find((e=>e.cod==g)),e||(e={cod:g,t:"t"},p.push(e)),o)){var E;switch((E=b($)).v){case"t":e.t=E.o;break;case"def":case"default":e.def=E.o;break;case"valid":case"colonna":case"hidden":E.o.startsWith("#")?this.formula[E.o.substring(1)]&&(e[E.v]=E.o):e[E.v]=E.o;break;default:e[E.v]=E.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 L;if(L=e.exec(w(O)))switch(L[1]){case"calcola":case"c":F.calcola=[...F.calcola,...x(L[2])];break;case"exclude":case"e":case"escludi":F.exclude=[...F.exclude,...x(L[2])];break;case"bom":case"db":F.bom=[...F.bom,...x(L[2])];break;case"vars":case"v":F.vars=[...F.vars,...x(L[2])];break;case"head":case"h":F.head=x(L[2]);break;default:this.errori.push(`genera ${S} => ${O}`)}else F.codice.push(O)}F.codice=q(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]=x(t[1]);else{let t=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(codice[r]);t&&(codice[r]=null,a=!0,this.parametri[e]=x(t[2]))}}a&&(codice=codice.filter((e=>null!=e)))}return codice=q(codice,t)}}class fe{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=w(r.cod),r.barcode=w(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 he(e){var t=G(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:w(o[0])};(n=(o[1]||"").trim())&&(c.des=n),(n=w(o[2]))&&(c.tipo=n),(n=w(o[3]))&&(c.alias=n),(n=w(o[4]))&&(c.valid=n),(n=w(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 de(e){var t=G(e.toLowerCase(),!1),a={};for(var r of t)if(!/^\s*\:/.exec(r)){var i=x(r);i[0]&&i[1]&&(a[i[0]]=i[1])}return a}function ue(e){G(e.toLowerCase(),!1);let t={};for(var a of tm){var r=x(a);if(r[0]&&r[1]){var i=b(r[0]),s=b(r[1]);if(i.v&&s.v){this.deriva[i.v]||(this.deriva[i.v]=[]);var n={v:s.v};i.o&&(n.fop=i.o),s.o&&(n.op=s.o),t[i.v].push(n)}}}return t}class ve{#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=w(cat),this.cat!=cat&&(this.cat=cat,this.item=this.rule=this.model="",this.azzera(!0)),cat}azzera(e=!1){this.vari=new K,this.ruleheader="",e&&(this.macro={},this.varianti={},this.varelenco={},this.macroelenco={},this.#a=void 0,this.#r=void 0,this.#i=void 0,this.#s=void 0)}async#n(cat){d&&(this.varelenco[cat]||(this.varelenco[cat]=await d("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=he(t.value),this.#a=t.value||{};break;case"_alias":t.value,t.value=de(t.value),this.#r=t.value||{};break;case"_deriva":t.value,t.value=ue(t.value),this.#i=t.value||{};break;case"_typos":t.value;var a=F(t.value);for(var r in a){var i=a[r];i.db&&(i.db=q(G(i.db))),i.list&&(i.list=q(G(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&&d){var e=await d("headers",this.cat,"_headers");this.parseheaderfrominfo(e)}return this.#a||(this.#a={}),this.#a[cod]}async getalias(){if(!this.#r&&d){var e=await d("headers",this.cat,"_alias");this.parseheaderfrominfo(e)}return this.#r||(this.#r={}),this.#r}async getderiva(){if(!this.#i&&d){var e=await d("headers",this.cat,"_deriva");this.parseheaderfrominfo(e)}return this.#i||(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 O.add("Macro non valida:"+riga.contenuto,riga);(macro=w(e[1])).includes("$")&&(macro=await this.vari.valuta(macro));var t=x(e[2]),{name:a,cat:cat}=$(macro,this.cat);this.cat=cat;var macro,r=`${cat}/${a}`;if(!this.macro[r]){var i=new le(this,a);await i.load()?this.macro[r]=i:O.add(`macro fail to load ${r}`,riga)}return(macro=this.macro[r])?{macro:macro,pars:t}:(O.add(`macro non trovata ${r}`,riga),{})}catch(e){O.add(c(e),`ambiente.getmacro: ${riga?.contenuto}`)}}async varcompila(e,t){var a=new Q(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(S(a,["amb"]))})}async macrocompila(e,t){var a=new le(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 fe;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 h&&(t=await h("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,d){var r=await d("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(r)}this.#a?t("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):m("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.#r)}),this.#s&&t("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#s)})}}async getvariante(cod){var{name:e,cat:cat}=$(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 Q(this);await r.load(a,cat),this.varianti[a]=r}return this.varianti[a]}}async getheaderfromdb(e){let{head:t,rows:a,macros:r}=await d("header",this.cat,e);await this.#n(this.cat),t.cod=w(t.cod),t.rule=w(t.rule),t.ruledef=t.ruledef||[];let i=[];for(var s of a){s.cod=w(s.cod),s.alias=w(s.alias),s.t=w(s.t);let e=s.alias?s.alias:s.cod;if(!this.varianti[`${this.cat}/${e}`]){let t=this.varelenco[this.cat];t&&t.includes(e)&&i.push(e)}}if(i.length&&l){var n=await l(this.cat,i);if(n&&n.length)for(var o of n){let{name:e,content:t}=o,a=new Q(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&&f){let e=await f(this.cat,i);if(e&&e.length>0)for(var n of e){let e=new le(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}=$(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 le(this,a);if(!t)return void O.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])}i.head=n.length?n:void 0,this.macro[r]=i}this.ruleheader=r;let n=this.macro[r];return O.azzera(),await n.setparametri(t),n}getruleheader(){return this.macro[this.ruleheader]}async setvariante(cod,e){return await ie(this,null,cod,e)}async valuta(codice){let e;return"string"==typeof codice&&(codice=q(G(codice,this.righevuote))),Array.isArray(codice)&&(m("m1",codice),e=await ne(this,null,codice)),e}setinfos(e){e&&(this.#a=e.headers,this.#r=e.alias,this.#i=e.deriva,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 me={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"}}},pe=/^\s*\{(\:)?(var|deriva|valid|formula|header|genera|g|v|f|h)(\s.*)?\}/i;function ge(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(pe.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=x(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{Clear:we,Reset:be,Bold:$e,Reverse:ye,Red:xe,Green:Ee,Yellow:ke,Blue:Se,Magenta:Fe,Cyan:Oe,White:Le}=a();var _e=o(process.argv);console.log("----------------------------------------------------------------------------------------"),console.log(`${$e}${Oe}${$e}Markuno:${be} command line utility del linguaggio (c) Croswil 2024 v. ${ke}1.0.40${be}`),console.log("----------------------------------------------------------------------------------------");var Ce={FOLDERBASE:"./",DBWORK:"./data/app.db",FOLDERCAT:"./data/mu",FOLDEROUT:"./out",CAT:"cat"};const Ae=".lasts.markuno";e.existsSync(Ae)&&(Ce=JSON.parse(e.readFileSync(Ae)));var Ie=_e._;(_e.h||_e.help||!Ie[2])&&(console.log(`Uso: ${$e}markuno <funzioni> <[catalogo/]markuno> [opzioni]${be} \n${$e}${Oe}Funzioni:${be} (seleziona una tra le seguenti)\n ${Le} c, compila ${be}${Ee} compila un catalogo/Markuno + Codici Barra\n ${Le} d, dump ${be}${Ee} compila e salva il compilato in formato json\n ${Le} e, esegui ${be}${Ee} esegui un file markuno \n ${Le} f, formatta ${be}${Ee} Formattazione di un file .mu o .var\n ${Le} g, genera${be}${Ee} generatore di codice \n ${Le} w, watch ${be}${Ee} abilita il watch su un file markuno \n ${Le} gw <markuno> <maxele> ${be}${Ee} Genera con wath (solo i primi maxele=20 elementi senza salvare\n${$e}${Oe}Opzioni:${be}${Ee}\n ${Le} -h, --help${be}${Ee} mostra l'help\n ${Le} -c, --cat <cat>${be}${Ee} catalogo (default='${Ce.CAT}' ) \n ${Le} -d, --dbwork ${be}${Ee} database principale (default='${Ce.DBWORK}')\n ${Le} -i, --init <folder>${be}${Ee} cartella di lavoro (default='${Ce.FOLDERCAT}' ) \n ${Le} -o, --out <folder>${be}${Ee} cartella di output (default='${Ce.FOLDEROUT}' ) \n ${Le} -x, --xlsx${be}${Ee} output in formato excel (generatore)\n `),process.exit(0));let De=0;const je="./",ze=_e.d||_e.dbwork||Ce.DBWORK,Ne=_e.i||_e.init||Ce.FOLDERCAT,Te=_e.o||_e.out||Ce.FOLDEROUT,Me=_e.c||_e.cat||Ce.CAT;var Re=void 0,We=!1;e.existsSync(Ne)||Je(`Manca la cartella di lavoro: ${Ne}`),Ce=Object.assign(Ce,{FOLDERBASE:je,DBWORK:ze,FOLDERCAT:Ne,FOLDEROUT:Te,CAT:Me}),e.writeFileSync(Ae,JSON.stringify(Ce,null,2)),e.existsSync(Ne)||e.mkdirSync(Ne,{recursive:!0});const Ue=_e.x||_e.xlsx;function Je(e){var t=e.stack.toString().split("\n");t.splice(0,1),t=t.filter((e=>!/module/.test(e)&&!/node\:/.test(e))),console.log(`${xe}${e.message}${be}\n${t.join("\n")}`),process.exit(1)}function Ve(cat){var a=t.join(Ne,`mu_${cat}.db`);e.existsSync(a)||r(a,me,"mus"),console.log("DB",a);var n=i.db(a);return s(me),n}function Pe(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 Be(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 Ke(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 Xe(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=`${Ne}/${cat}/${t}.mu`;return e.existsSync(a)?e.readFileSync(a).toString():""}async function cbGetVariante(cat,t){var a=`${Ne}/${cat}/${t}.var`;return e.existsSync(a)?e.readFileSync(a).toString():(O.add(`missing var: ${cat}, ${t}`,{t:"cbGetVariante"}),"")}async function cbFunc(e,t,a){O.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(!Re||!a&&!a[0])return[];if(We)return[];var n=Re.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?`${Ne}/${cat}/typos.json`:`${Ne}/${cat}/${a}.inc`,e.existsSync(c)?e.readFileSync(c).toString():""}}async function cbGetFile(cat,a){if(e.existsSync(t.join(je,a)))return e.readFileSync(t.join(je,a)).toString();const r=`${Ne}/${cat}/${a}`;if(e.existsSync(r))return e.readFileSync(r).toString();O.add(`missing file: ${r}`,{t:"cbGetFile"})}function Ge(cat,a){var r=t.extname(a);[".mu",".var",".inc"].includes(r)||(r=".mu",a+=".mu");var i=t.join(Ne,cat||Me),s=t.join(je,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(Ne,cat||Me),!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 qe(amb,t){var{file:a,folder:r,diversi:i}=Ge(amb.cat,Ie[3]||""),s=parseInt(Ie[4]||"10");console.log(`Start Watching: ${Oe}${$e}${a}${be}`),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 He(amb,a){var{file:r,folder:i,diversi:s}=Ge(amb.cat,Ie[3]||"");if(!e.existsSync(r))throw new Error("Manca il file: "+r);var n=t.extname(r),o=t.basename(r,n),c=new le(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 oe(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:W(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(`${ke}${m.join(" | ")}${be}`),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(Te,`gen_${o}.json`),JSON.stringify(h,null,2));const a=t.join(Te,`gen_${o}.xlsx`);var y=(new Date).valueOf();if(Ue){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(`${ke}${$e}EVAL........: ${b}${be}${Oe} rows\n${Oe}load/compile: ${$e}${ke}${f-l}${be}${Oe} ms.\n${Oe}generate....: ${$e}${ke}${w-f}${be}${Oe} ms.\n${Oe}save JSON...: ${$e}${ke}${y-w}${be}${Oe} ms.\n${Oe}save XLSX...: ${$e}${ke}${E-y}${be}${Oe} ms.\n--------------------------------\n${Oe}${$e}TOTALE......: ${ke}${E-l}${be}${Oe} ms.`)}}async function Ye(amb){var{file:a,folder:r,diversi:i}=Ge(amb.cat,Ie[3]||""),s=(new Date).valueOf(),n=e.readFileSync(a).toString(),o=new le(amb,Ie[3]||"");De++,o.parsedata(n);var c=(new Date).valueOf(),l=await ne(amb,o,o.codice,{limited:!1,oldstyle:!0,localvar:o.localvar}),f=(new Date).valueOf();console.log(`${l.join("\n")}`),console.log(`${ke}${$e}EVAL ${De}${be}: ${a} => ${Oe}load:${$e}${ke}${c-s}${be}${Oe}ms. -- exec:${$e}${ke}${f-c}${be}${Oe}ms.${be}\n----------------------------------------------\n${O.toString()}`),e.writeFileSync(t.join(Te,"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(Te,"out.txt"),l.join("\n"))}await async function(){try{var amb=function(cat,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e){var t=new ve(cat);return p(cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e),t}(Me,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile),a=t.join(Ne,Me);if(e.mkdirSync(Te,{recursive:!0}),!e.existsSync(a))throw new Error(`Manca il catalogo: ${Me} su ${Ne}`);var r=(new Date).valueOf();switch(Ie[2].trim().toLowerCase()){case"g":case"genera":await He(amb,0);break;case"d":case"dump":await async function(amb){var{file:a,folder:r,diversi:i}=Ge(amb.cat,Ie[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 le(amb,c);await l.loadAndCompile(`${c}${o}`),s=l.getmacro(),n=t.join(Te,c+".json")}else".var"==o&&(s=await async function(cod,cat,amb){var e=new Q(amb);return await e.load(cod,cat),e}(c,Me,amb),n=t.join(Te,c+".var.json"));s&&(e.writeFileSync(n,JSON.stringify(s,null,2)),console.log(`${Oe}${$e}Dump: ${be}${ke}${n}`))}(amb);break;case"gw":await qe(amb,He);break;case"c":case"compila":await async function(amb){var a,r,s=t.join(Ne,Me);if(!e.existsSync(s))throw new Error("Manca il catalogo "+Me);if(!e.existsSync(ze))throw new Error("Manca il database di lavoro: "+ze);if(e.existsSync(ze))if((Re=i.db(ze)).esisteTabella("artbarre")){We=!0;var o=Re.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=Re.all("select codicebarra barcode,diml l,dima a,dimp p,cod cod from articoli where codicebarra like ? order by codicebarra","+%")}else a=Re.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=Ve(Me);l.begin(),l.run("delete from variants"),l.run("delete from macros"),l.run("delete from barcodes"),l.run("delete from extras");var f=Be(Me,s);for(var h of(await amb.compila(f,((e,t)=>{if(t){if("macros"===e){var{def:a,md:r}=Pe(`${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=H(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"),Re&&Re.chiudi();l.commit(),l.chiudi()}(amb),console.log(`Compilazione catalogo: ${xe}${$e}${Me}${be}: ${ke}${(new Date).valueOf()-r}ms.`);break;case"x":case"e":case"esegui":await Ye(amb);break;case"f":case"format":!function(amb){var{file:t,folder:a,diversi:r,ext:i}=Ge(amb.cat,Ie[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=ge(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=pe.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=ge(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=x(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} ${Oe}${$e}${t}${be}`)}}(amb);break;case"w":case"watch":await qe(amb,Ye);break;default:throw new Error("Funzione non contemplata (g,c,b,x)")}}catch(e){Je(e)}}();export{Ve as dbmu,Be as getinfo,Pe as getinfofile,Ke as xlsexport,Xe as xlsimport};
|