croswil_markuno 1.0.31

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/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # cli utility for markuno
2
+
3
+ Installazione
4
+
5
+ ```bash
6
+ sudo npm i -g markuno-cli
7
+ ```
8
+
9
+ uso:
10
+
11
+ ```bash
12
+ markuno -h # segui le istruzioni: è necessario un ambiente markuno installato
13
+ ```
14
+
15
+
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env node
2
+ import minimist from 'minimist'
3
+ import jwt from 'jsonwebtoken'
4
+ import "dotenv/config";
5
+ var mi = minimist(process.argv);
6
+ import { spawnSync } from 'child_process';
7
+
8
+ const user = mi.u || mi.user;
9
+ var l = parseInt(mi.l || mi.level);
10
+ if (l < 1) l = 1;
11
+ if (l > 9) l = 9;
12
+ var gg = parseInt(mi.e || mi.expire);
13
+ if (!gg) gg = 30;
14
+ const Reset = "\x1b[0m",
15
+ Bold = "\x1b[1m",
16
+ Reverse = "\x1b[7m",
17
+ Red = "\x1b[31m",
18
+ Green = "\x1b[32m",
19
+ Yellow = "\x1b[33m",
20
+ Blue = "\x1b[34m",
21
+ Magenta = "\x1b[35m",
22
+ Cyan = "\x1b[36m",
23
+ White = "\x1b[37m";
24
+
25
+ console.log(`${Bold}${Green}markuno-token${Reset} (c) Croswil 2024 v1.1`);
26
+
27
+ if (mi.h || mi.help || !user) {
28
+ console.log(`Uso: ${Bold}${Yellow}markuno-token -u <username> -l <level>${Reset}
29
+ crea un token per l'accesso ai server markuno (è necessario avere configurara una chiave in .env)
30
+ ${Bold}Options:${Reset}
31
+ ${Green}-h, --help${Reset} mostra l'help
32
+ ${Green}-u, --user <nome>${Reset} nome utente
33
+ ${Green}-l, --level <id>${Reset} livello (1-9)
34
+ ${Green}-e, --expire <giorni>${Reset} giorni scadenza token
35
+
36
+ `);
37
+ process.exit(0);
38
+ }
39
+ if (!process.env.JWT_SECRET) {
40
+ console.log(`${Red}${Bold}Manca il file .env con la chiave di generazione${Reset}`)
41
+
42
+ } else {
43
+
44
+ let token = jwt.sign({ id: 1, user, level: l }, process.env.JWT_SECRET, { expiresIn: 3600 * 24 * gg }); //dopo un giorno devi rifare il login
45
+
46
+ console.log(`user: ${Green}${Bold}${user}${Reset}
47
+ level: ${Bold}${l}${Reset}
48
+ gg: ${Bold}${gg}${Reset}
49
+ ${Bold}${Red}On clipboard${Reset}
50
+ ${token}`);
51
+ if (process.platform == 'darwin') {
52
+ spawnSync('pbcopy', { input: token });
53
+ } else {
54
+ spawnSync('xsel', ['--clipboard', '--input'], { input: token });
55
+ }
56
+ }
@@ -0,0 +1,2 @@
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){const t=/^(\d+)\.\.(\d+)$/.exec(e=e+""||"");if(t){for(var r=parseInt(t[1]),o=parseInt(t[2]),i=[],s=r;s<=o;s++)i.push(s+"");return i}if(e.includes('"')){return e.split(/[,;](?=(?:(?:[^"]*["]){2})*[^"]*$)/).map((e=>e.trim().replace(/(^["'])|(["']$)/g,"").replace(/=\s*["']/g,"=")))}return e.includes("=")?e.split(/[,;]/).map((e=>e.trim().replace(/\s*=\s*/g,"="))):e.split(/[,;]/).map((e=>e.trim()))}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:f,Red:h,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.33${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 y=L._[2]||void 0;(L.h||L.help||!y)&&(console.log(F),process.exit(0)),w.CAT=y;const S=o.join(w.FOLDERCAT,y),D=o.join(w.FOLDERCAD,y);var E=o.join(D,`${y}.ddb`);r.existsSync(E)||(console.log("manca il database di origine: "+y),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 R(e){var t=[];for(var r of e)!r.startsWith('"')&&r.includes(",")&&(r=`"${r}"`),t.push(r);return t.join(",")}function W(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 f=$.split("//");let b=f[0].trim();f.splice(0,1);let w=f.length?` // ${f.join("//").trim()} `:"";if($.startsWith("/*"))a=!0,o.push($);else if(a&&$.endsWith("*/"))a=!1,o.push($);else if(a)o.push(t);else{var h=n.exec($);if(h){var u;o.push($),i=h[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_${y}.db`;(L.r||L.reset)&&(r.existsSync(S)&&r.rmSync(S,{recursive:!0}),r.existsSync(I)&&r.unlinkSync(I)),r.existsSync(S)||r.mkdirSync(S,{recursive:!0}),r.copyFileSync(E,S+"/"+y+".db");var _=t.db(E),k=(new Date).valueOf(),N=[],M=_.all("select cod cod,des des ,codmet alias,obbl obbligo, memo info from codvar ");for(var B of(console.log("-> varianti",M.length),M)){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)N.push(`${B.cod.trim().toLowerCase()} , ${B.alias.trim().toLowerCase()}`);else{J.push(""),J.push(":h "+R(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=R([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(`${S}/${B.cod}.var`,J.join("\n"))}}M=_.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"),M))J.push(" "+R([B.cod.trim().toLowerCase(),B.des]));r.writeFileSync(`${S}/modelli.var`,J.join("\n")),N=["// Alias Varianti\n\n{v __aliasvar}\n:h variante, alias",...N.sort()],r.writeFileSync(`${S}/_alias.inc`,N.join("\n")),console.log("-> gruppi.ini");var H=o.join(D,"gruppi.ini");if(r.existsSync(H)){M=a(oe=r.readFileSync(H).toString().replaceAll("�","'"),!1);var K={},Z=[];for(var B of M){if(de=/^\s*\[(\w+)\]/i.exec(B))Z=[],K[de[1].trim().toLowerCase()]=Z;else(fe=T(B))&&Z.push(z(fe))}}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(S,"_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(S,"_deriva.inc"),`// derivazione varianti \n{v deriva}\n:des deriva delle varianti\n :h var=opz,-> var=opz\n \n${X.join("\n")}`)}M=_.all(`${A} and cod like ?`,">>%");for(var B of(console.log("-> macro",M.length),M)){O("mac "+(ge=(ge=B.cod.substr(2).trim().toLowerCase()).replace(/^_*/,"")));var ee=W(B.info.toLowerCase());J=`// ${B.des}\n${ee} \n `;r.writeFileSync(o.join(S,`+${ge}.mu`),J)}var te=r.readdirSync(D);te=te.filter((e=>e.toLowerCase().endsWith(".erg")));var re=0;for(var M of(console.log("-> regole",te.length),te)){var oe=r.readFileSync(o.join(D,M)).toString().replaceAll("\r",""),ie=o.extname(M),se=o.basename(M,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 fe;(fe=T(B))&&("G"==fe.tipo?(delete fe.tipo,J.push(`:g ${z(fe)}`)):fe.tipo.length>1&&J.push(z(fe)))}J.push("{:header}")}for(var he in ae.formule){X=W((ue=ae.formule[he]).join("\n"));J.push(`\n{f ${he}}\n${X}\n{:f}`)}var ue=ae.codice.join("\n");J.push(W(ue)),r.writeFileSync(o.join(S,se+".mu"),J.join("\n")),O(`reg ${++re}: ${ae.cod} - ${ae.des}`)}}}if(L.t||L.tipologie){M=(B=_.get(`${A} and cod=?`,"tipologie")).info.split("").sort();console.log("-> tipologie",M.length);var me={};for(var ve of M){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=W(B.info.trim().toLowerCase().replaceAll("","\n"),!0)),(B=_.get(`${A} and cod=?`,`ll_${ce}`)).info&&(me[ce].list=W(B.info.trim().toLowerCase().replaceAll("","\n"),!0))}r.writeFileSync(S+"/typos.json",JSON.stringify(me,null,2));M=_.all(`${A} and cod like ?`,"M>%");for(var B of(console.log("-> macro tip",M.length),M)){var ge;O("macdb "+(ge=B.cod.substr(2).trim().toLowerCase()));ee=W(B.info.toLowerCase(),!0),J=`// ${B.des}\n${ee} \n `;r.writeFileSync(o.join(S,`++${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=(M=_.all("select var var,abilit abilit,codart codart from valartopz order by var,abilit")).length;for(var B of M)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 ye=(M=_.all("select var var,abilit abilit,codmod codart from valmodopz order by var,abilit")).length;for(var B of M)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 Se=(M=_.all("select var var,abilit abilit,cod codart from valmodartopz order by var,abilit")).length;for(var B of M)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,ye,Se),q)if(r.existsSync(o.join(S,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(S,be+".var.txt"),J.join("\n"))}}k=(new Date).valueOf()-k,console.log("Tempo: ",k+"ms"),_.chiudi();
package/bin/mu.js ADDED
@@ -0,0 +1,2 @@
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,u,d,m;const p=(...e)=>{m?m(e):console.log(...e)};function g(e,t,a,r,i,s){f=e,l=t,h=a,u=r,d=i,m=s}const w=()=>(new Date).valueOf();function b(e){return(e||"").trim().toLowerCase()}function $(e,t="="){var a=(e=e||"").indexOf(t);return a>=0?{v:b(e.substring(0,a)),o:e.substring(a+t.length).trim(),fl:!0}:{v:b(e),o:"",fl:!1}}function y(e,cat){if((e=(e||"").trim()).indexOf("/")>0){var t=e.split("/");cat=t[0]||"",e=t[1]||""}if(!cat)throw new Error("manca il catalogo per "+e);return{name:e,cat:cat=x(cat)}}function x(e){if(!(e=(e||"").trim())||!/^(?:(\w|\-|\_|\+|\.))+$/im.test(e)){throw new Error(`nome non valido: |${e}| \n deve contenere solo lettere, _, e numeri`)}return e.toLowerCase()}function E(e){const t=/^(\d+)\.\.(\d+)$/.exec(e=e+""||"");if(t){for(var a=parseInt(t[1]),r=parseInt(t[2]),i=[],s=a;s<=r;s++)i.push(s+"");return i}if(e.includes('"')){return e.split(/[,;](?=(?:(?:[^"]*["]){2})*[^"]*$)/).map((e=>e.trim().replace(/(^["'])|(["']$)/g,"").replace(/=\s*["']/g,"=")))}return e.includes("=")?e.split(/[,;]/).map((e=>e.trim().replace(/\s*=\s*/g,"="))):e.split(/[,;]/).map((e=>e.trim()))}const k=(e,t,a,r,i=!1)=>{const s=["[","(","{"],n=["]",")","}"];r||(r="["==a?"]":"("==a?")":"}");for(var o=s.includes(a),c=1,l=[],f=0,h=t;h<e.length;h++)if(o&&s.includes(e[h])||e[h]==a)c++;else if(o&&n.includes(e[h])||e[h]==r){if(0==--c&&e[h]==r)return l[f]=e.substring(t,h),{i:h,res:l}}else if(":"==e[h])1==c&&(l[f]=e.substring(t,h),t=h+1,f++);else if("\n"==e[h]&&i)return{i:h,res:l};return{i:-1,res:e.substring(t)}};function S(e,t){"object"==typeof e&&"object"==typeof t&&Object.keys(t).forEach((a=>{Object.hasOwn(e,a)&&"function"!=typeof e[a]&&(e[a]=t[a])}))}function F(e,t){return"object"==typeof e?Object.keys(e).reduce(((a,r)=>("function"!=typeof e[r]&&(t&&t.length>0&&t.includes(r)||(a[r]=e[r])),a)),{}):{}}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")}};function L(e){for(e=(e+"").trim();;){var t=/(?<!\w)\(/g.exec(e);if(!t)break;var{i:a,res:r}=k(e,t.index+1,"(",")");if(a<=0)break;e=e.substring(0,t.index)+L(r[0])+(a>=0?e.substring(a+1):"")}return e=function(e){if(e.includes("[")){function r(e){let t=e[1],a=!!e[2],r=E(e[3]);for(var i of r)if(i==t)return a?"0":"1";return a?"1":"0"}for(;;){var t=/^(\w+)(\!)?\[(.*)?\]$/.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){const t=["||","&&","|","&","<<=",">>=","===","<=",">=","==",">>","<<","!!","=","!","<",">"];var a=-1,r="";for(var i of t)if((a=e.indexOf(i))>=0){r=i;break}if(-1!==a){const t=e.slice(0,a),i=e.slice(a+r.length);var s=0;switch(r){case"||":case"|":return L(t)||L(i)?1:0;case"&&":case"&":return L(t)&&L(i)?1:0;case"<":s=_(t)<_(i);break;case"<=":s=_(t)<=_(i);break;case">":s=_(t)>_(i);break;case">=":s=_(t)>=_(i);break;case"=":s=_(t)==_(i);break;case"!":s=_(t)!=_(i);break;case"<<=":s=b(t)<=b(i);break;case">>=":s=b(t)>=b(i);break;case"===":case"==":s=b(t)==b(i);break;case"!!":s=b(t)!=b(i);break;case"<<":s=b(t)<b(i);break;case">>":s=b(t)>b(i);break;default:s=0}return s?1:0}return _(e)}(e)}function _(e){let t=0;function a(){const a=e[t];return/[+\-*/\^\%]/.test(a)?(t++,a):null}function r(){if(/\d/.test(e[t]))return function(){const a=t;for(;t<e.length&&/[0-9.]/.test(e[t]);)t++;return Number(e.slice(a,t))}();if("("===e[t]){t++;const a=s();return")"===e[t]&&t++,a}return/[a-zA-Z]/i.test(e[t])?function(){var a,r=e.slice(t);if(!r)return 0;if(a=/^(sqr|sqrt)\(/i.exec(r)){t+=a[0].length;const r=Math.sqrt(s());return")"===e[t]&&t++,r}if(a=/^(int|floor)\(/i.exec(r)){t+=a[0].length;const r=Math.floor(s());return")"===e[t]&&t++,r}if(a=/^(abs)\(/i.exec(r)){t+=a[0].length;var i=s();const r=i>0?i:-i;return")"===e[t]&&t++,r}if(a=/^sin\(/i.exec(r)){t+=a[0].length;const r=Math.sin(s()*(Math.PI/180));return")"===e[t]&&t++,r}if(a=/^cos\(/i.exec(r)){t+=a[0].length;const r=Math.cos(s()*(Math.PI/180));return")"===e[t]&&t++,r}if(a=/^(rnd|random|cas)\(/i.exec(r)){t+=a[0].length;let r=0,i=1;return")"!==e[t]&&(r=s(),","===e[t]?(t++,i=s()):(i=r,r=0)),")"===e[t]&&t++,Math.random()*(i-r)+r}if(a=/^clamp\(/i.exec(r)){t+=a[0].length;const r=s();","===e[t]&&t++;const i=s();","===e[t]&&t++;const n=s();return")"===e[t]&&t++,Math.min(Math.max(r,i),n)}if(a=/^(dec|round)\(/i.exec(r)){t+=a[0].length;const r=s();let i=0;return","===e[t]&&(t++,i=s()),")"===e[t]&&t++,parseFloat(r.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 C(e){if(!e)return 0;if("number"==typeof e)return e||0;if("string"!=typeof e)return 0;var t=e.replaceAll(",",".");return/^-?[0-9.]+$/.test(t)?Number(t):L(e)}const A=500;function D(e,t){var a=t[0]||"";if(!a)return"";if(e.counter>=A)return a;var r=N(e,e.var(I(e,a)));if(e.counter>=A)return a;if(t[1]){var i=C(I(e,t[1])),s=E(r);if(!(i>=0&&i<s.length))return"";r=I(e,s[i])}if(t[2]){var n=C(I(e,t[2]));if(n){var o=0;return t[3]&&(o=C(I(e,t[3]))),n<0?r.slice(n):o?r.substring(n-1,n+o-1):r.substring(n-1)}}return r}function j(e,t){var a=E(t||""),r=b(a[0]);function i(e){return(e||"").replace(/&(\d+)/g,((e,t)=>String.fromCharCode(parseInt(t))))}switch(r){case"set":var s=I(e,a[1]||""),n=I(e,a[2]||"");e.add(s,e.vars(n));break;case"ex":s=I(e,a[1]||"");(n=I(e,a[2]||""))||(n=",");var o=C(I(e,a[3]||"")),c=s.split(n);return o>0&&c[o-1]||"";case"ex2":var l=i(a[1]||""),f=C(I(e,a[2]||""));return a.splice(0,3),(d=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"),u=i(a[2]||"").trim();return a.splice(0,3),a.join(";").replace(new RegExp(h,"im"),u);case"tk":return(f=C(I(e,a[1]||""))||0)?a[f>0?f+1:2]||"":(f=C(I(e,a[2]||"")),l=a[1]||"",f?a[3].split(l)[f-1]:"");case"totab":return a.splice(0,1),a.join(";");case"tosep":l=i(a[1]||"")||";";return a.splice(0,2),a.join(";").split(l).join(";");case"len":{let e;return a.length>2?(a.shift(),e=a.join(";")):e=a[1]||"",e.length}case"mid":var d=I(e,a[1]||""),v=(f=C(I(e,a[2]||"")),C(I(e,a[3]||"")));return d.substring(f-1,f+v-1);case"arrotonda":{d=C(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=C(a[2]),0==e&&(e=1e3)),Math.round(d*e)/e}case"iif":return(d=C(I(e,a[1])))?a[2]||1:a[3]||0;case"instr":case"instr2":{var m=a[1]||"",g=a[2]||"";let e=m.toLowerCase().indexOf(g.toLowerCase())+1;return p(`INSTR ==>| ${a[1]} || ${a[2]} || ${e}`),e}case"instr2":g=a[1]||"";return a.splice(0,2),a.join(";").toLowerCase().indexOf(g.toLowerCase())+1;default:return{fun:r,pars:a}}}function I(e,t){if(t+="",e.counter>=A)return t;for(;;){const s=/\$([\{\(])/im.exec(t);if(!s)break;var a=s.index,{i:r,res:i}="("==s[1]?k(t,a+2,"(",")"):k(t,a+2,"{","}");t=I(e,t.substring(0,a))+D(e,i)+(r>=0?I(e,t.substring(r+1)):"")}return t=(t=t.replace(/\$([a-z|][\w|\.]*)/gi,((t,a)=>{for(var r="";a.length;){var i=N(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 N(e,t){return t&&(e.counter++,e.counter<=A&&(t=I(e,t)),e.counter--),t}class z{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=z.sanitizeKey(e);if(z.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 E[t]||e}dump(e=!1){var t=[];for(var a in this.dictionary)t.push({cod:a,val:this.dictionary[a]});return t=t.sort(((e,t)=>e.cod>t.cod)),e?t.map((e=>`${e.cod} = ${e.val}`)):t}add(e,t){const a=z.sanitizeKey(e);if(z.isValidKey(a)){const e=a.toLowerCase();0===t||t?this.dictionary[e]=t:delete this.dictionary[e]}else p(`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.indexOf("$[");if(!(i>=0)){t=N(e,t);break}var{i:s,res:n}=k(t,i+2,"[","]"),o=N(e,t.substring(0,i)),c=n?N(e,n[0]):"",l=s>=0?N(e,t.substring(s+1)):"",f=j(e,c);"object"==typeof f&&(f=a?await a(f?.fun,f.pars):`** fun: ${f.fun} ** `),t=o+(f="object"==typeof f?"**str**":f+""||"")+l}return t}return""}(this,e,t);return a=(e=>{for(;;){var t=e.indexOf("{");if(!(t>=0))break;var{i:a,res:r}=k(e,t+1,"{","}");if(a<0)return e;e=e.substring(0,t)+C(r[0])+(a>=0?e.substring(a+1):"")}return e})(a),a}}const T="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 R(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 W(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(T.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=[],u=[],d=[],v=0;v<a.length;v++){var m=a[v];switch(m.i=v,m.tipo){case"FOR":case"FORVAR":case"VARIANTE":case"DO":u[++l]={pos:v,bk:[]};break;case"LOOP":case"ENDFOR":if(l>0){var{pos:p}=u[l];for(var g of u[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&&u[l].bk.push(m);break;case"IF":case"IFDEF":case"IFNDEF":h[++c]={pos:v,bk:[m]};break;case"SELECT":d[++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}=d[f];d[f].bk.push(m),a[p].next=v,m.first=w,d[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}=d[f];for(var g of(a[p].next=v,d[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 M(e){var t,a=R(e),r=[],i=e=>e?[...new Set(e.split(",").map((e=>e.trim())).sort().filter((e=>e)))]:void 0;for(var s of a){var n=/^\s*\{(.*)?\}/im.exec(s);if(n)"limit"==b(n[1])?(t={},r.push(t)):t=void 0;else if(t&&(n=/^\s*\:(\w+)\s*(.*)/.exec(s)))switch(n[1].toLowerCase()){case"opz":case"o":t.opz=i(n[2]);break;case"obs":case"obsolete":t.obsolete=i(n[2]);break;case"scons":case"sconsigliate":t.scons=i(n[2]);break;case"neutri":t.neutri=i(n[2]);break;case"art":t.art=i(n[2]);break;case"mod":t.mod=i(n[2]);break;default:p("missing:",n[1])}}return r}function J(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 u(e){return e.map((e=>b("string"==typeof e?e:e.Value)))}if(n.length||o.length){if(n.length&&(c?t.ex=u(n):t.valid=u(n)),o.length&&(l?t.ex2=u(o):t.valid2=u(o)),item&&(t.i=b(item).split(";")),model&&(t.m=b(model).split(";")),i&&(t.r=b(i).split(";")),(f||h)&&f<h&&(t.datai=parseInt(f),t.dataf=parseInt(h)),s&&s.length){t.v=[];for(let d of s){let v=t.v.find((e=>e.v==b(d.Variant)));v||(v={v:b(d.Variant),o:[]},t.v.push(v)),v.o=[...v.o,b(d.Value).split(";")]}}U(t),a.push(t)}}return a=a.sort(((e,t)=>t.l-e.l)),a}function U(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 V{constructor(amb){this.rows={},this.name="$",this.key="$",this.amb=amb}setheader(e,cat){var{name:t,cat:cat}=y(e,cat);return this.cat=cat,this.name=t,this.alias="",this.obbligo=!1,this.des=t,this.rows={},this.h=[],this.key=`${cat}/${t}`,{name:t,cat:cat}}fromdim(dim,e=2){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("object"==typeof r)for(var i in r)["rows","des","h","alias","obbligo"].includes(i)&&(this[i]=r[i]);else await this.loadContent(R(r,!1));if(r.filter)p("verifica anche i filtri!",r.filter),this.limits=J(r.filter);else if(u&&!t){let e=await u("filter",cat,a);e&&e.length&&(this.limits=J(e))}return!0}}return!1}async loadContent(lines){const e=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;var t="";let a,r=[],i=!1;for(var s of lines){if("{limit}"==(n=s.toLowerCase()))a=[],r.push(a),i=!0;else if("{:limit}"==n)i=!1;else if(i)a.push(s);else{if(h=e.exec(b(s)))if(t&&"extra"==h[1].toLowerCase()){var n=E(h[2]);for(var o of n){var c=o.indexOf("=");if(c>0){var l=b(o.substring(0,c));"v"!=l&&(this.rows[t][l]=o.substring(c+1).trim())}}}else switch(h[1].toLowerCase()){case"alias":if((w=h[2].toLowerCase().split(";"))[0].trim()!=this.name)if(1==w.length)this.alias=w[0];else{var f;this.amb?f=await this.amb.getvariante(w[0]):(f=new V,await f.load(w[0],this.cat));var h=f?.rows;if(h){var u=Object.keys(h);if(u.length){w.splice(0,1);const e=e=>{e&&e.forEach((e=>this.rows[e]=h[e]))};for(var o of w){var d=/([ei])\s*:\s*(.*)\s*$/im.exec(o);if(d){for(var v=d[2].split(","),m=0;m<v.length;m++)v[m]=v[m].trim();u="e"==d[1]?u.filter((e=>{for(var t of v)if(e.startsWith(t))return!1;return!0})):u.filter((e=>{for(var t of v)if(e.startsWith(t))return!0;return!1}))}}e(u)}}}break;case"h":this.h=E(h[2]);break;case"des":this.des=h[2];break;case"default":case"vdef":this.vdef=E(h[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else(g=b((n=E(s))[0]))&&(t=g,this.rows[t]={annulla:0,v:n})}}var p=Object.keys(this.rows);for(var g of p)if(g.includes(".")){var w=g.split(".");for(m=0;m<w.length-1;m++){var $=w.slice(0,m+1).join(".");this.rows[$]||(this.rows[$]={annulla:0,v:[$]})}}return this.limits=function(e){function t(e){let t={};const a=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;function r(e,a){function r(e,a){(a=b(a))&&(t[e]||(t[e]=[]),t[e].includes(a)||t[e].push(a))}if(Array.isArray(a))for(var i of a)r(e,i);else r(e,a)}for(var i of e){var s=a.exec(i);if(s)switch(s[1]){case"var":case"v":case"variante":let e=(s[2]||"").indexOf(" ");if(e>0){let a=b(s[2].substring(0,e)),r=E(s[2].substring(e+1));if(a&&r&&r.length){t.v||(t.v=[]);let e=t.v.find((e=>e.v==a));for(var n of(e||(e={v:a,o:[]},t.v.push(e)),r))e.o.includes(n)||e.o.push(n)}}break;case"d":case"dt":case"data":case"date":let a=s[2].split(" "),i=parseInt(a[0]),o=parseInt(a[1]);(i||o)&&(t.datai=i,t.dataf=o);break;case"rule":case"r":case"mu":r("r",E(s[2]));break;case"item":case"i":r("i",E(s[2]));break;case"model":case"m":r("m",E(s[2]));break;case"e":case"escludi":case"exclude":r("ex",E(s[2]))}else r("valid",E(i))}return U(t),t}let a;if(e&&e.length){for(var r of e){let e=t(r);if(e&&(e.valid&&e.valid.length||e.ex&&e.ex.length)){let t=0;e.i&&e.i.length&&(t+=5),e.m&&e.m.length&&(t+=3),e.r&&e.r.length&&(t+=2),e.v&&e.v.length&&(t+=3),e.datai&&e.dataf&&(t+=1),e.l=t,a||(a=[]),a.push(e)}}a&&(a=a.sort(((e,t)=>t.l-e.l)))}return a}(r),!0}tovec(){var e=this.rows,t=[],a=Object.keys(e).sort();for(var r of a)this.rows[r].annulla<2&&t.push(this.#e(r,this.rows[r]));return t}#e(cod,e){var t=[cod];if(e)for(var a of e.v)a.indexOf(",")>=0?t.push(a.indexOf('"')>=0?`'${a}'`:`"${a}"`):t.push(a);return t.join(",")}tovar(cod){var e=b(cod);if(!this.rows[e])return cod;var t=this.rows[e];return 2==t.annulla?"":this.#e(cod,t)}isvalidopz(e){let t=b(e);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=b(vari.var(r.v).split(",")[0]);if(e&&!r.o.includes(e))return!1}return!0}));if(!a||!a.length)return this.resetfilter();let r,i=[],s=[],n=[],o=[],c=!1,l=!1;for(var f of a)f.valid&&f.valid.length&&(c=!0,r=f.valid.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0])),i=[...i,...r],n=[...n,...f.valid.filter((e=>!e.includes("*")))]),f.ex&&f.ex.length&&(l=!0,r=f.ex.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0])),s=[...s,...r],o=[...o,...f.ex.filter((e=>!e.includes("*")))]);for(var h in this.rows){let e=this.rows[h],t=!1,a=!1;if(c){for(let e of i)if(h.startsWith(e)){t=!0;break}!t&&n.includes(h)&&(t=!0)}if(l){for(let e of s)if(h.startsWith(e)){a=!0;break}!a&&o.includes(h)&&(a=!0)}e.annulla=0,c&&!t&&(e.annulla=1),l&&a&&(e.annulla=1)}return a}}let B={};async function K(e,t,a,vari){if(h){if(B[t])return"";let e=await h(t,a,vari);return e=(e||"").trim(),"!"==e&&(B[t]=!0,e=""),e}return e}async function P(amb,e,t){return await amb.vari.valuta(t,(async(t,a)=>{if("dim"===t){var r=C(a[1]),i=await X(amb,e,a[2]),s=parseInt(a[3])||2;return i&&i.fromdim?i.fromdim(r,s):r}return await K(`**fun:${t}**`,t,a,amb.vari)}))}async function X(amb,macro,e){return macro&&macro?.localvar&&macro.localvar[e]?macro.localvar[e]:await amb.getvariante(e)}async function G(amb,macro,e,t,a){let r,i=e;if(t=t||""){var s=t.indexOf(":");s>=0&&(s>0&&(i=b(t.slice(0,s))),t=t.slice(s+1))}if(r=await X(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 q=(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 H(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=[];w();for(var a=0;a<codice.length;){var riga=codice[a];switch(riga.tipo){case"IFDEF":case"IFNDEF":case"IF":var r="IF"==riga.tipo?C(await P(amb,e,riga.contenuto)):"IFDEF"==riga.tipo?""!=await P(amb,e,riga.contenuto):""==await P(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 P(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=C(riga.t1||""),s=E(await P(amb,e,riga.contenuto));for(var n of s)if(C(n)==i){r=1;break}}else if("CASES"==riga.tipo){r=0;i=riga.t1||"",s=E(await P(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?C(await P(amb,e,riga.contenuto)):"ELSEIFDEF"==riga.tipo?""!=await P(amb,e,riga.contenuto):""==await P(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 H(amb,macro,macro.codice,options)),options._stackmacro.pop(),options.cad?q(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((u=riga.contenuto.indexOf("="))>=0&&(l=riga.contenuto.indexOf("=",u+1)),l<0){if((u=(n=riga.contenuto).indexOf("="))>0){var f=await P(amb,e,n.slice(0,u).trim()),h=n.slice(u+1).trim();h="LET"==riga.tipo?C(await P(amb,e,h))||"":await P(amb,e,h),vari.add(f,h)}}else{s=riga.contenuto.split(",");for(var n of s){if((u=n.indexOf("="))>0){f=await P(amb,e,n.slice(0,u)),h=n.slice(u+1).trim();h="LET"==riga.tipo?C(await P(amb,e,h))||"":await P(amb,e,h),vari.add(f,h)}}}break;case"LETT":var u;if((u=riga.contenuto.indexOf("="))>0){f=await P(amb,e,riga.contenuto.slice(0,u)),h=riga.contenuto.slice(u+1).trim();vari.add(f,h)}break;case"LETV":case"LETM":case"DEF":if(r=E(riga.contenuto))for(var c of r){var{v:n,o:d,fl:v}=$(c);v&&(n=await amb.vari.valuta(n),d=await P(amb,e,d),await G(amb,e,n,d,"LETM"==riga.tipo?{t:"m"}:{t:"v"}))}break;case"DO":v=!0;(m=(riga.contenuto||"").trim())&&!C(await P(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=E(riga.contenuto||""))[0]||"",p=s[1],m=s[2]||"";if(n=n.includes("$")?await P(amb,e,n):n||"","FORVAR"==riga.tipo||"VARIANTE"==riga.tipo){var g=(r=await P(amb,e,p))?await X(amb,e,r):void 0;g?p=g.tovec():(p=[],O.add("getvariante not found!",riga))}else{var b=await P(amb,e,p||"");p=p?E(b):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=!C(await P(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&&!C(await P(amb,e,riga.contenuto))&&(v=!1),v&&(a=riga.prev-1);break;case"ENDFOR":if(!riga.contenuto||C(await P(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&&C(await P(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()?C(await P(amb,e,riga.contenuto))&&(a=riga.next):a=riga.next:O.add("break outside loop",riga);break;case"CONTINUE":riga.next?riga.contenuto&&!C(await P(amb,e,riga.contenuto))||(a=riga.next-1):O.add("continue outside loop",riga);break;default:if((r=await P(amb,e,riga.contenuto)).startsWith("!")){f="";if(k=/^\!(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){var x=k[1].toLowerCase();o=E(k[2]||"");f=await K(r,x,o,vari)}f&&q(t,f)}else{var k;if(options.callback)if(k=/^(\w+)[\s;,]\s*(.+)?$/gim.exec(r)){x=k[1].toLowerCase();var o=E(k[2]||"");r=await options.callback(x,o,options.key||"",a)}else r=await options.callback(r,[],options.key||"",a);q(t,r)}}a++}return t}async function Y(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 X(amb,e,l),h=Object.keys(f.rows);if(h&&h.length>0){for(var u of h)n.push(u),amb.vari.add(f.name,f.tovar(u)),s[l]=!0,await o(c+1),s[l]=!1,n.pop();return}p("manca la variante",l)}}for(var d of i.calcola)e.formula[d]&&await H(amb,e,e.formula[d],{limited:!0});for(var d of i.exclude){if(e.formula[d])if(w=await H(amb,e,e.formula[d],{limited:!0}))for(var v of w){if(C(v))return}}var m=await H(amb,e,i.codice,{limited:!0,localvar:e.localvar}),g={};for(var d of i.bom)if(e.formula[d]){var w=await H(amb,e,e.formula[d],{limited:!0});for(var v of w=w.join("\n").split("\n"))if(v){var b=E(v);g[d]||(g[d]=[]);for(var $={},y=0;y<b.length;y++)$[`c${y}`]=b[y];g[d].push($)}}await async function(e,t,a,r,i,s){var n=!0;for(var o of t){var c=E(o);if(c[0]&&!s[c[0]]){s[c[0]]=1,s.counter++,s.counter2++;for(var l={__id:s.counter},f=0;f<c.length;f++){var h=r.head[f]?r.head[f]:`c${f}`;"#"==h[0]?l[h=h.substr(1)]=C(c[f]):l[h]=c[f]}await e(i,l,n?a:void 0,s.counter,s.counter2),n=!1}}}(a,m,g,i,t,r)}}await o(0)}}const Z=/^\{(\:?(var|valid|formula|genera|header|v|f|g|h))[\s|\}]/im;class Q{constructor(amb,e){var{name:e,cat:cat}=y(e,amb.cat||"");this.name=e,this.cat=cat,this.amb=amb,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){var e=[];return this.errori.forEach((t=>e.push({e:t}))),e}getparametri(){let e={};if(this.head)for(var t of this.head){if(!t._h)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 G(this.amb,this,a,e[a]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,void 0,!0),this.getparametri()}async setparametro(e,t,a=!1){if(t&&t.includes("$")&&(t=await P(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 P(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)||"").split(",")[0],r=await G(this.amb,this,a,e||riga._v||t,riga);if(riga._v=void 0,this.amb&&this.amb.deriva&&this.amb.deriva[a]){this.amb.deriva[a].filter((e=>!e.fop||e.fop==v)).forEach((e=>{let t=this.head.find((e=>e.cod==e.v));t&&(t._v=e.op||v)}))}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 G(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=b(r.substr(0,a));e.includes("$")&&(e=await P(this.amb,this,e));let t,i=r.substr(a+1);i.includes("$")&&(i=await P(this.amb,this,i)),this.head&&(t=this.head.find((t=>t.cod==e)))?t._v=i:await G(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 C(P(this.amb,this,e))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return F(this,["amb"])}setmacro(e){if(S(this,JSON.parse(e||{})),this.localvar)for(var t in this.localvar){S(e=new V,this.localvar[t]),this.localvar[t]=e}}async load(e,t){try{var a,{name:r,cat:cat}=y(e||this.name,t||this.cat||"");if(this.name||(this.name=r),this.cat||(this.cat=cat),this.azzera(),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}=y(e,this.cat||cat);return this.azzera(),d&&(a=await d(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}=y(e,this.cat);if(d&&(i=await d(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=R(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=Z.exec(l);if(e)t=!e[1].startsWith(":"),c.push(l);else{const e=/^\s*\{i\s(.+)?\}/im.exec(l);if(e){r=E(e[1]);if(!a.includes(r[0])){a.push(r[0]);var f=await this.loadinclude(r[0],t,a,r);Array.isArray(f)&&c.push(...f),a.pop()}}else c.push(l)}}return c}async parsedata(e,t=!1){if(this.azzera(),!e)return;var a=[],r=R(e),i=!1;let s=[];for(var n of r){const e=Z.exec(n);if(e)i=!e[1].startsWith(":"),a.push(n);else{const e=/^\s*\{i\s(.+)?\}/im.exec(n);if(e){var o=E(e[1]),c=await this.#t(o[0],i,[o[0]],o);Array.isArray(c)&&a.push(...c)}else a.push(n)}}i=!1;var l=this.codice;for(var n of a){const e=Z.exec(n);if(e)if(e[1].startsWith(":"))l=this.codice;else switch(e[1]){case"genera":case"g":if(u=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(n)){var f=x(E(u[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(u=/^\s*\{(var|v)\s+(.+)?\}/im.exec(n)){var h=E(u[2]);f=x(h[0]);this.localvar[f]={name:f,des:h[1]||"",rows:[]},l=this.localvar[f].rows}else(l=this.errori).push(n);break;case"formula":case"f":var u;if(u=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(n)){f=x(u[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 d in this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,t),this.formula)this.formula[d]=this.cleanfiltraparametri(d,this.formula[d],t);for(var d in this.localvar){var v=new V,m=this.localvar[d];v.setheader(d,this.cat),await v.loadContent(m.rows),m.des&&(v.des=m.des),this.localvar[d]=v}r=this.valid;for(var n of(this.valid=[],r)){(y={v:(y=$(n,",")).v,msg:y.o}).v&&(y.v.startsWith("#")?this.formula[y.v.substring(1)]&&this.valid.push(y):this.valid.push(y))}r=s;var p=[];for(var n of r){if(L=/^\s*([\w\-\_]+)+[\;\,\s]\s*(.*)?$/im.exec(n)){o=E(L[2]);var g=b(L[1]);let e;if(g)for(var w of(e=p.find((e=>e.cod==g)),e||(e={cod:g,t:"t"},p.push(e)),o)){var y;switch((y=$(w)).v){case"t":e.t=y.o;break;case"def":case"default":e.def=y.o;break;case"valid":case"colonna":case"hidden":y.o.startsWith("#")?this.formula[y.o.substring(1)]&&(e[y.v]=y.o):e[y.v]=y.o;break;default:e[y.v]=y.o}}}}this.head=p;r=this.genera;var k={};for(var S in r)if(Array.isArray(r[S])){var F={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]};const e=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;for(var O of r[S]){var L;if(L=e.exec(b(O)))switch(L[1]){case"calcola":case"c":F.calcola=[...F.calcola,...E(L[2])];break;case"exclude":case"e":case"escludi":F.exclude=[...F.exclude,...E(L[2])];break;case"bom":case"db":F.bom=[...F.bom,...E(L[2])];break;case"vars":case"v":F.vars=[...F.vars,...E(L[2])];break;case"head":case"h":F.head=E(L[2]);break;default:this.errori.push(`genera ${S} => ${O}`)}else F.codice.push(O)}F.codice=W(F.codice,!0),k[S]=F}this.genera=k}cleanfiltraparametri(e,codice,t){if(codice&&codice.length){for(var a=!1,r=0;r<codice.length;r++){let t=/^\:p[;,\s]+(.*)?$/im.exec(codice[r]);if(t)codice[r]=null,a=!0,this.parametri[e]=E(t[1]);else{let t=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(codice[r]);t&&(codice[r]=null,a=!0,this.parametri[e]=E(t[2]))}}a&&(codice=codice.filter((e=>null!=e)))}return codice=W(codice,t)}}class ee{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),u={barra:e,fm:n.fm,t:c,liv:s,items:n.r.length,err:""},d=n.r;if(h){var v=d.filter((e=>e.z===h||!e.z));v.length>0?d=v:u.err=`spessore non coerente: ${h}`}if("l"==c||"a"==c||"p"==c){if(c=d.find((e=>e.x>=l)))return{c:c.c,fm:c.x==l?0:1,x1:c.x,x:l,extra:u}}else{var c;if(c=d.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:u};if(0!=n.fm&&(c=d.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:u};if(0!=n.fm&&2!=n.fm&&(c=d.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:u}}return n.codalt&&s<5?await o(n.codalt,s+1):{c:n.coderr,fm:9,x:l,y:f,z:h,extra:u}};return await o(s,0)}compila(e,t){t||(t={});var a={};if(Array.isArray(e)){for(var r of e)if(r.cod=b(r.cod),r.barcode=b(r.barcode),r.barcode.length>2&&"+"==r.barcode[0]){r.barcode=r.barcode.substr(1);var i=this.oriented(r.barcode.substr(0,1),r.l,r.a,r.p);i.c=r.modello?{c:r.cod,m:r.modello}:r.cod,a[r.barcode]||(a[r.barcode]={t:r.barcode.substr(0,1),r:[]},t[r.barcode]&&(a[r.barcode]=Object.assign(t[r.barcode],a[r.barcode]))),a[r.barcode].r.push(i)}for(var s in a){a[s].r.sort(((e,t)=>e.y?1e4*(e.x-t.x)+(e.y-t.y):e.x-t.x))}}this.barre=a}}function te(e){var t=R(e,!1),a=(e={},{r:[]}),r=!1;for(var i of t){var s=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(i);if(s)a={cod:s[2],des:s[2],r:[]},r=!1,e[s[2]]=a;else if(!/^\s*\:/.exec(i)){var n,o=i.split(","),c={cod:b(o[0])};(n=(o[1]||"").trim())&&(c.des=n),(n=b(o[2]))&&(c.tipo=n),(n=b(o[3]))&&(c.alias=n),(n=b(o[4]))&&(c.valid=n),(n=b(o[5]))&&(c.visible=n),c.cod&&(r||"sep"!=c.tipo?a.r.push(c):(a.des=c.des,a.valid=c.valid,a.visible=c.visible,r=!0))}}return e}function ae(e){var t=R(e.toLowerCase(),!1),a={};for(var r of t)if(!/^\s*\:/.exec(r)){var i=E(r);i[0]&&i[1]&&(a[i[0]]=i[1])}return a}function re(e){R(e.toLowerCase(),!1);let t={};for(var a of tm){var r=E(a);if(r[0]&&r[1]){var i=$(r[0]),s=$(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 ie{#a=void 0;#r=void 0;#i=void 0;#s=void 0;constructor(cat=".",e=100,t=!1){this.righevuote=t,this.maxdelays=e,this.setcatalog(cat)}setcatalog(cat){return cat=b(cat),this.cat!=cat&&(this.cat=cat,this.item=this.rule=this.model="",this.azzera(!0)),cat}azzera(e=!1){this.vari=new z,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){u&&(this.varelenco[cat]||(this.varelenco[cat]=await u("headers",cat,"_varianti"),this.varelenco[cat]||(this.varelenco[cat]=[])))}parseheaderfrominfo(e){if(e&&e.length>0)for(var t of e)switch(t.tipo){case"_headers":t.value,t.value=te(t.value),this.#a=t.value||{};break;case"_alias":t.value,t.value=ae(t.value),this.#r=t.value||{};break;case"_deriva":t.value,t.value=re(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=W(R(i.db))),i.list&&(i.list=W(R(i.list)))}t.value=a,this.#s=t.value||{}}}setitem(item,e,model,t){this.item=item,this.rule=e,this.model=model,this.data=t||(new Date).toInt()}async getheader(cod){if(!this.#a&&u){var e=await u("headers",this.cat,"_headers");this.parseheaderfrominfo(e)}return this.#a||(this.#a={}),this.#a[cod]}async getalias(){if(!this.#r&&u){var e=await u("headers",this.cat,"_alias");this.parseheaderfrominfo(e)}return this.#r||(this.#r={}),this.#r}async getderiva(){if(!this.#i&&u){var e=await u("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=b(e[1])).includes("$")&&(macro=await this.vari.valuta(macro));var t=E(e[2]),{name:a,cat:cat}=y(macro,this.cat);this.cat=cat;var macro,r=`${cat}/${a}`;if(!this.macro[r]){var i=new Q(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 V(this);(await a.load(e,this.cat,!0),a.alias)&&((await this.getalias())[e]=a.alias);t("variants",{cod:e,des:a.des||"",alias:a.alias,info:a.alias?"":JSON.stringify(F(a,["amb"]))})}async macrocompila(e,t){var a=new Q(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 ee;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,u){var r=await u("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(r)}this.#a?t("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):p("missing headers"),this.#r&&t("infos",{cod:"alias",des:"",info:JSON.stringify(this.#r)}),this.#i&&t("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#r)}),this.#s&&t("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#s)})}}async getvariante(cod){var{name:e,cat:cat}=y(cod,this.cat),t=e;if(cat==this.cat&&this.#r&&this.#r[e]&&(t=this.#r[e]),await this.#n(cat),!this.varelenco[cat].length||this.varelenco[cat].includes(e)){var a=`${cat}/${t}`;if(!this.varianti[a]){var r=new V(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 u("header",this.cat,e);await this.#n(this.cat),t.cod=b(t.cod),t.rule=b(t.rule),t.ruledef=t.ruledef||[];let i=[];for(var s of a){s.cod=b(s.cod),s.alias=b(s.alias),s.t=b(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 V(this);if(a.setheader(e,this.cat),t){for(var o in t)["rows","des","h","alias","obbligo"].includes(o)&&(a[o]=t[o]);t.filter&&t.filter.length&&(a.limits=J(t.filter))}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 Q(this,n.name);for(var o in n.content){let t=n.content[o];e[o]=t}this.macro[e.key]=e}}}async setruleheader(e,t){var{name:a,cat:cat}=y(e,this.cat),r=`${cat}/${a}`;if(!this.macro[r]){let{head:t,rows:n,macros:o}=await this.getheaderfromdb(a);await this.getlinkedmacros(t.rule,o);var i=new Q(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 G(this,null,cod,e)}async valuta(codice){let e;return"string"==typeof codice&&(codice=W(R(codice,this.righevuote))),Array.isArray(codice)&&(p("m1",codice),e=await H(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 se={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"}}},ne=/^\s*\{(\:)?(var|deriva|valid|formula|header|genera|g|v|f|h)(\s.*)?\}/i;function oe(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(ne.test(e))return{fl:!0,i2:r-1,cols:a};if(o.endsWith("\\"))return{fl:!1};if(e.startsWith(":h ")&&(o=o.substr(3).trim()),!o.startsWith(":"))for(var i=E(o),s=0;s<i.length;s++){var n=i[s].length;i[s].includes(",")&&(n+=2),(!a[s]||a[s]<n)&&(a[s]=n)}}}return{fl:!0,i2:lines.length-1,cols:a}}const{Clear:ce,Reset:le,Bold:fe,Reverse:he,Red:ue,Green:de,Yellow:ve,Blue:me,Magenta:pe,Cyan:ge,White:we}=a();var be=o(process.argv);console.log("----------------------------------------------------------------------------------------"),console.log(`${fe}${ge}${fe}Markuno:${le} command line utility del linguaggio (c) Croswil 2024 v. ${ve}1.0.33${le}`),console.log("----------------------------------------------------------------------------------------");var $e={FOLDERBASE:"./",DBWORK:"./data/app.db",FOLDERCAT:"./data/mu",FOLDEROUT:"./out",CAT:"cat"};const ye=".lasts.markuno";e.existsSync(ye)&&($e=JSON.parse(e.readFileSync(ye)));var xe=be._;(be.h||be.help||!xe[2])&&(console.log(`Uso: ${fe}markuno <funzioni> <[catalogo/]markuno> [opzioni]${le} \n${fe}${ge}Funzioni:${le} (seleziona una tra le seguenti)\n ${we} c, compila ${le}${de} compila un catalogo/Markuno + Codici Barra\n ${we} d, dump ${le}${de} compila e salva il compilato in formato json\n ${we} e, esegui ${le}${de} esegui un file markuno \n ${we} f, formatta ${le}${de} Formattazione di un file .mu o .var\n ${we} g, genera${le}${de} generatore di codice \n ${we} w, watch ${le}${de} abilita il watch su un file markuno \n ${we} gw <markuno> <maxele> ${le}${de} Genera con wath (solo i primi maxele=20 elementi senza salvare\n${fe}${ge}Opzioni:${le}${de}\n ${we} -h, --help${le}${de} mostra l'help\n ${we} -c, --cat <cat>${le}${de} catalogo (default='${$e.CAT}' ) \n ${we} -d, --dbwork ${le}${de} database principale (default='${$e.DBWORK}')\n ${we} -i, --init <folder>${le}${de} cartella di lavoro (default='${$e.FOLDERCAT}' ) \n ${we} -o, --out <folder>${le}${de} cartella di output (default='${$e.FOLDEROUT}' ) \n ${we} -x, --xlsx${le}${de} output in formato excel (generatore)\n `),process.exit(0));let Ee=0;const ke="./",Se=be.d||be.dbwork||$e.DBWORK,Fe=be.i||be.init||$e.FOLDERCAT,Oe=be.o||be.out||$e.FOLDEROUT,Le=be.c||be.cat||$e.CAT;var _e=void 0,Ce=!1;e.existsSync(Fe)||De(`Manca la cartella di lavoro: ${Fe}`),$e=Object.assign($e,{FOLDERBASE:ke,DBWORK:Se,FOLDERCAT:Fe,FOLDEROUT:Oe,CAT:Le}),e.writeFileSync(ye,JSON.stringify($e,null,2)),e.existsSync(Fe)||e.mkdirSync(Fe,{recursive:!0});const Ae=be.x||be.xlsx;function De(e){var t=e.stack.toString().split("\n");t.splice(0,1),t=t.filter((e=>!/module/.test(e)&&!/node\:/.test(e))),console.log(`${ue}${e.message}${le}\n${t.join("\n")}`),process.exit(1)}function je(cat){var a=t.join(Fe,`mu_${cat}.db`);e.existsSync(a)||r(a,se,"mus"),console.log("DB",a);var n=i.db(a);return s(se),n}function Ie(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 Ne(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 ze(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 Te(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=`${Fe}/${cat}/${t}.mu`;return e.existsSync(a)?e.readFileSync(a).toString():""}async function cbGetVariante(cat,t){var a=`${Fe}/${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(!_e||!a&&!a[0])return[];if(Ce)return[];var n=_e.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?`${Fe}/${cat}/typos.json`:`${Fe}/${cat}/${a}.inc`,e.existsSync(c)?e.readFileSync(c).toString():""}}async function cbGetFile(cat,a){if(e.existsSync(t.join(ke,a)))return e.readFileSync(t.join(ke,a)).toString();const r=`${Fe}/${cat}/${a}`;if(e.existsSync(r))return e.readFileSync(r).toString();O.add(`missing file: ${r}`,{t:"cbGetFile"})}function Re(cat,a){var r=t.extname(a);[".mu",".var",".inc"].includes(r)||(r=".mu",a+=".mu");var i=t.join(Fe,cat||Le),s=t.join(ke,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(Fe,cat||Le),!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 We(amb,t){var{file:a,folder:r,diversi:i}=Re(amb.cat,xe[3]||""),s=parseInt(xe[4]||"10");console.log(`Start Watching: ${ge}${fe}${a}${le}`),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 Me(amb,a){var{file:r,folder:i,diversi:s}=Re(amb.cat,xe[3]||"");if(!e.existsSync(r))throw new Error("Manca il file: "+r);var n=t.extname(r),o=t.basename(r,n),c=new Q(amb,o),l=(new Date).valueOf();await c.loadAndCompile(`${o}${n}`);var f=(new Date).valueOf(),h={},u={},d=[],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 Y(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)}}d.push(n)}else{var f=e.split("_")[0]||f;if(h[f]||(h[f]=[]),h[f].push(t),t.cod&&(u[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:C(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(`${ve}${m.join(" | ")}${le}`),d)){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 u)b+=h[$].length,h[$].sort(((e,t)=>(e.cod||"").localeCompare(t.cod||"")));h._errori=c.geterrori(),e.writeFileSync(t.join(Oe,`gen_${o}.json`),JSON.stringify(h,null,2));const a=t.join(Oe,`gen_${o}.xlsx`);var y=(new Date).valueOf();if(Ae){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(`${ve}${fe}EVAL........: ${b}${le}${ge} rows\n${ge}load/compile: ${fe}${ve}${f-l}${le}${ge} ms.\n${ge}generate....: ${fe}${ve}${w-f}${le}${ge} ms.\n${ge}save JSON...: ${fe}${ve}${y-w}${le}${ge} ms.\n${ge}save XLSX...: ${fe}${ve}${E-y}${le}${ge} ms.\n--------------------------------\n${ge}${fe}TOTALE......: ${ve}${E-l}${le}${ge} ms.`)}}async function Je(amb){var{file:a,folder:r,diversi:i}=Re(amb.cat,xe[3]||""),s=(new Date).valueOf(),n=e.readFileSync(a).toString(),o=new Q(amb,xe[3]||"");Ee++,o.parsedata(n);var c=(new Date).valueOf(),l=await H(amb,o,o.codice,{limited:!1,oldstyle:!0,localvar:o.localvar}),f=(new Date).valueOf();console.log(`${l.join("\n")}`),console.log(`${ve}${fe}EVAL ${Ee}${le}: ${a} => ${ge}load:${fe}${ve}${c-s}${le}${ge}ms. -- exec:${fe}${ve}${f-c}${le}${ge}ms.${le}\n----------------------------------------------\n${O.toString()}`),e.writeFileSync(t.join(Oe,"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(Oe,"out.txt"),l.join("\n"))}await async function(){try{var amb=function(cat,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e){var t=new ie(cat);return g(cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile,e),t}(Le,cbGetMacro,cbGetVariante,cbFunc,cbInfo,cbGetFile),a=t.join(Fe,Le);if(e.mkdirSync(Oe,{recursive:!0}),!e.existsSync(a))throw new Error(`Manca il catalogo: ${Le} su ${Fe}`);var r=(new Date).valueOf();switch(xe[2].trim().toLowerCase()){case"g":case"genera":await Me(amb,0);break;case"d":case"dump":await async function(amb){var{file:a,folder:r,diversi:i}=Re(amb.cat,xe[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 Q(amb,c);await l.loadAndCompile(`${c}${o}`),s=l.getmacro(),n=t.join(Oe,c+".json")}else".var"==o&&(s=await async function(cod,cat,amb){var e=new V(amb);return await e.load(cod,cat),e}(c,Le,amb),n=t.join(Oe,c+".var.json"));s&&(e.writeFileSync(n,JSON.stringify(s,null,2)),console.log(`${ge}${fe}Dump: ${le}${ve}${n}`))}(amb);break;case"gw":await We(amb,Me);break;case"c":case"compila":await async function(amb){var a,r,s=t.join(Fe,Le);if(!e.existsSync(s))throw new Error("Manca il catalogo "+Le);if(!e.existsSync(Se))throw new Error("Manca il database di lavoro: "+Se);if(e.existsSync(Se))if((_e=i.db(Se)).esisteTabella("artbarre")){Ce=!0;var o=_e.all("select cod cod,des des,flfm fm,coderr coderr,codalt codalt from artbarre order by cod ");for(var c of(r={},o)){(u=c.cod.trim().toLowerCase().substr(1))&&(r[u]={des:c.des,fm:c.fm,coderr:c.coderr.trim().toLowerCase(),codalt:c.codalt.trim().toLowerCase()})}a=_e.all("select codicebarra barcode,diml l,dima a,dimp p,cod cod from articoli where codicebarra like ? order by codicebarra","+%")}else a=_e.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=je(Le);l.begin(),l.run("delete from variants"),l.run("delete from macros"),l.run("delete from barcodes"),l.run("delete from extras");var f=Ne(Le,s);for(var h of(await amb.compila(f,((e,t)=>{if(t){if("macros"===e){var{def:a,md:r}=Ie(`${t.cod}.mu`);t.def=a,t.md=r}n(l,e,t,"mus")}})),f.var)){var u,d=`${s}/${h}.var.txt`;if(e.existsSync(d))(u=M(e.readFileSync(d).toString()))&&u.length&&n(l,"extras",{tipo:"l",cod:h,info:JSON.stringify(u)},"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"),_e&&_e.chiudi();l.commit(),l.chiudi()}(amb),console.log(`Compilazione catalogo: ${ue}${fe}${Le}${le}: ${ve}${(new Date).valueOf()-r}ms.`);break;case"x":case"e":case"esegui":await Je(amb);break;case"f":case"format":!function(amb){var{file:t,folder:a,diversi:r,ext:i}=Re(amb.cat,xe[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=oe(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=ne.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=oe(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 u=E(m),d=0;d<u.length;d++)u[d].includes(",")&&(u[d]=`"${u[d]}"`),u[d]=u[d].padEnd(n[d]," ");a.push(`${h}${u.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} ${ge}${fe}${t}${le}`)}}(amb);break;case"w":case"watch":await We(amb,Je);break;default:throw new Error("Funzione non contemplata (g,c,b,x)")}}catch(e){De(e)}}();export{je as dbmu,Ne as getinfo,Ie as getinfofile,ze as xlsexport,Te as xlsimport};
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "croswil_markuno",
3
+ "version": "1.0.31",
4
+ "private": false,
5
+ "dependencies": {
6
+ "croswil_lib": "^5.0.31",
7
+ "dotenv": "^16.4.5",
8
+ "jsonwebtoken": "^9.0.2",
9
+ "minimist": "^1.2.8",
10
+ "xlsx": "^0.18.5"
11
+ },
12
+ "type": "module",
13
+ "description": "Croswil markuno cli",
14
+ "main": "bin/cli.js",
15
+ "directories": {
16
+ "bin": "bin"
17
+ },
18
+ "files": [
19
+ "bin/**"
20
+ ],
21
+ "bin": {
22
+ "mu": "./bin/mu.js",
23
+ "markuno": "./bin/mu.js",
24
+ "mu-convcad": "./bin/mu-convcad.js",
25
+ "markuno-token": "./bin/gettoken.js"
26
+ },
27
+ "author": "Croswil (c) 2024",
28
+ "license": "ISC",
29
+ "versiondate": "20240303"
30
+ }