exocortex-cli 13.106.2 → 13.107.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// exocortex-cli v13.
|
|
2
|
+
// exocortex-cli v13.107.1
|
|
3
3
|
// CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
|
|
4
4
|
// License: MIT
|
|
5
5
|
|
|
@@ -99,7 +99,7 @@ Expecting `+Zo.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":Zl="Parse erro
|
|
|
99
99
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(E){this.unput(this.match.slice(E))},"less"),pastInput:o(function(){var E=this.matched.substr(0,this.matched.length-this.match.length);return(E.length>20?"...":"")+E.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var E=this.match;return E.length<20&&(E+=this._input.substr(0,20-E.length)),(E.substr(0,20)+(E.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var E=this.pastInput(),O=new Array(E.length+1).join("-");return E+this.upcomingInput()+`
|
|
100
100
|
`+O+"^"},"showPosition"),test_match:o(function(E,O){var I,z,pe;if(this.options.backtrack_lexer&&(pe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(pe.yylloc.range=this.yylloc.range.slice(0))),z=E[0].match(/(?:\r\n?|\n).*/g),z&&(this.yylineno+=z.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:z?z[z.length-1].length-z[z.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+E[0].length},this.yytext+=E[0],this.match+=E[0],this.matches=E,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(E[0].length),this.matched+=E[0],I=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var d in pe)this[d]=pe[d];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var E,O,I,z;this._more||(this.yytext="",this.match="");for(var pe=this._currentRules(),d=0;d<pe.length;d++)if(I=this._input.match(this.rules[pe[d]]),I&&(!O||I[0].length>O[0].length)){if(O=I,z=d,this.options.backtrack_lexer){if(E=this.test_match(I,pe[d]),E!==!1)return E;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(E=this.test_match(O,pe[z]),E!==!1?E:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
|
|
101
101
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{flex:!0,"case-insensitive":!0},performAction:o(function(O,I,z,pe){var d=pe;switch(z){case 0:break;case 1:return 12;case 2:return 15;case 3:return 41;case 4:return 325;case 5:return 326;case 6:return 45;case 7:return 47;case 8:return 48;case 9:return 39;case 10:return 24;case 11:return 28;case 12:return 29;case 13:return 31;case 14:return 32;case 15:return 36;case 16:return 53;case 17:return 327;case 18:return 63;case 19:return 64;case 20:return 70;case 21:return 73;case 22:return 76;case 23:return 78;case 24:return 81;case 25:return 83;case 26:return 85;case 27:return 193;case 28:return 100;case 29:return 328;case 30:return 121;case 31:return 329;case 32:return 330;case 33:return 110;case 34:return 331;case 35:return 109;case 36:return 332;case 37:return 333;case 38:return 113;case 39:return 115;case 40:return 116;case 41:return 131;case 42:return 123;case 43:return 126;case 44:return 128;case 45:return 132;case 46:return 112;case 47:return 334;case 48:return 335;case 49:return 159;case 50:return 161;case 51:return 164;case 52:return 174;case 53:return 160;case 54:return 336;case 55:return 163;case 56:return 312;case 57:return 314;case 58:return 317;case 59:return 318;case 60:return 272;case 61:return 197;case 62:return 337;case 63:return 338;case 64:return 229;case 65:return 340;case 66:return 263;case 67:return 224;case 68:return 231;case 69:return 232;case 70:return 242;case 71:return 246;case 72:return 290;case 73:return 341;case 74:return 342;case 75:return 343;case 76:return 344;case 77:return 345;case 78:return 250;case 79:return 346;case 80:return 265;case 81:return 276;case 82:return 277;case 83:return 268;case 84:return 269;case 85:return 270;case 86:return 271;case 87:return 347;case 88:return 348;case 89:return 273;case 90:return 274;case 91:return 350;case 92:return 349;case 93:return 351;case 94:return 279;case 95:return 280;case 96:return 283;case 97:return 285;case 98:return 289;case 99:return 293;case 100:return 296;case 101:return 13;case 102:return 16;case 103:return 308;case 104:return 309;case 105:return 87;case 106:return 292;case 107:return 82;case 108:return 294;case 109:return 295;case 110:return 297;case 111:return 298;case 112:return 299;case 113:return 300;case 114:return 301;case 115:return 302;case 116:return"EXPONENT";case 117:return 303;case 118:return 304;case 119:return 305;case 120:return 306;case 121:return 89;case 122:return 310;case 123:return 6;case 124:return"INVALID";case 125:console.log(I.yytext);break}},"anonymous"),rules:[/^(?:\s+|(#[^\n\r]*))/i,/^(?:BASE)/i,/^(?:PREFIX)/i,/^(?:SELECT)/i,/^(?:DISTINCT)/i,/^(?:REDUCED)/i,/^(?:\()/i,/^(?:AS)/i,/^(?:\))/i,/^(?:\*)/i,/^(?:CONSTRUCT)/i,/^(?:WHERE)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:DESCRIBE)/i,/^(?:ASK)/i,/^(?:FROM)/i,/^(?:NAMED)/i,/^(?:GROUP)/i,/^(?:BY)/i,/^(?:HAVING)/i,/^(?:ORDER)/i,/^(?:ASC)/i,/^(?:DESC)/i,/^(?:LIMIT)/i,/^(?:OFFSET)/i,/^(?:VALUES)/i,/^(?:;)/i,/^(?:LOAD)/i,/^(?:SILENT)/i,/^(?:INTO)/i,/^(?:CLEAR)/i,/^(?:DROP)/i,/^(?:CREATE)/i,/^(?:ADD)/i,/^(?:TO)/i,/^(?:MOVE)/i,/^(?:COPY)/i,/^(?:INSERT((\s+|(#[^\n\r]*)\n\r?)+)DATA)/i,/^(?:DELETE((\s+|(#[^\n\r]*)\n\r?)+)DATA)/i,/^(?:DELETE((\s+|(#[^\n\r]*)\n\r?)+)WHERE)/i,/^(?:WITH)/i,/^(?:DELETE)/i,/^(?:INSERT)/i,/^(?:USING)/i,/^(?:DEFAULT)/i,/^(?:GRAPH)/i,/^(?:ALL)/i,/^(?:\.)/i,/^(?:OPTIONAL)/i,/^(?:SERVICE)/i,/^(?:BIND)/i,/^(?:UNDEF)/i,/^(?:MINUS)/i,/^(?:UNION)/i,/^(?:FILTER)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:\{\|)/i,/^(?:\|\})/i,/^(?:,)/i,/^(?:a)/i,/^(?:\|)/i,/^(?:\/)/i,/^(?:\^)/i,/^(?:\?)/i,/^(?:\+)/i,/^(?:!)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:\|\|)/i,/^(?:&&)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:<)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:>=)/i,/^(?:IN)/i,/^(?:NOT)/i,/^(?:-)/i,/^(?:BOUND)/i,/^(?:BNODE)/i,/^(?:(RAND|NOW|UUID|STRUUID))/i,/^(?:(LANG|DATATYPE|IRI|URI|ABS|CEIL|FLOOR|ROUND|STRLEN|STR|UCASE|LCASE|ENCODE_FOR_URI|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|MD5|SHA1|SHA256|SHA384|SHA512|isIRI|isURI|isBLANK|isLITERAL|isNUMERIC))/i,/^(?:(SUBJECT|PREDICATE|OBJECT|isTRIPLE))/i,/^(?:(LANGMATCHES|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|STRLANG|STRDT|sameTerm))/i,/^(?:CONCAT)/i,/^(?:COALESCE)/i,/^(?:IF)/i,/^(?:TRIPLE)/i,/^(?:REGEX)/i,/^(?:SUBSTR)/i,/^(?:REPLACE)/i,/^(?:EXISTS)/i,/^(?:COUNT)/i,/^(?:SUM|MIN|MAX|AVG|SAMPLE)/i,/^(?:GROUP_CONCAT)/i,/^(?:SEPARATOR)/i,/^(?:\^\^)/i,/^(?:true|false)/i,/^(?:(<(?:[^<>\"\{\}\|\^`\\\u0000-\u0020])*>))/i,/^(?:((([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?)?:))/i,/^(?:(((([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?)?:)((?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|:|[0-9]|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%))))*(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|:|((%([0-9A-Fa-f])([0-9A-Fa-f]))|(\\(_|~|\.|-|!|\$|&|'|\(|\)|\*|\+|,|;|=|\/|\?|#|@|%)))))?)))/i,/^(?:(_:(?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9])(?:(?:(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])|\.)*(((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|-|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040]))?))/i,/^(?:([\?\$]((?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9])(?:((?:([A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])|_))|[0-9]|\u00B7|[\u0300-\u036F\u203F-\u2040])*)))/i,/^(?:(@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*))/i,/^(?:([0-9]+))/i,/^(?:([0-9]*\.[0-9]+))/i,/^(?:([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+)))/i,/^(?:(\+([0-9]+)))/i,/^(?:(\+([0-9]*\.[0-9]+)))/i,/^(?:(\+([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:(-([0-9]+)))/i,/^(?:(-([0-9]*\.[0-9]+)))/i,/^(?:(-([0-9]+\.[0-9]*([eE][+-]?[0-9]+)|\.([0-9])+([eE][+-]?[0-9]+)|([0-9])+([eE][+-]?[0-9]+))))/i,/^(?:([eE][+-]?[0-9]+))/i,/^(?:('(?:(?:[^\u0027\u005C\u000A\u000D])|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*'))/i,/^(?:("(?:(?:[^\u0022\u005C\u000A\u000D])|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])))*"))/i,/^(?:('''(?:(?:'|'')?(?:[^'\\]|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*'''))/i,/^(?:("""(?:(?:"|"")?(?:[^\"\\]|(\\[tbnrf\\\"']|\\u([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])|\\U([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f]))))*"""))/i,/^(?:(\((\u0020|\u0009|\u000D|\u000A)*\)))/i,/^(?:(\[(\u0020|\u0009|\u000D|\u000A)*\]))/i,/^(?:$)/i,/^(?:.)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],inclusive:!0}}};return T})();ql.lexer=CS;function ve(){this.yy={}}return o(ve,"Parser"),ve.prototype=ql,ql.Parser=ve,new ve})();fg.exports=Sx});var gg=y((XN,mg)=>{var bx="http://www.w3.org/2001/XMLSchema#integer",wx="http://www.w3.org/2001/XMLSchema#string";function Xe(r){this._options=r=r||{};var e=r.prefixes||{};this._prefixByIri={};var t=[];for(var i in e){var n=e[i];Va(n)&&(this._prefixByIri[n]=i,t.push(n))}var s=t.join("|").replace(/[\]\/\(\)\*\+\?\.\\\$]/g,"\\$&");this._prefixRegex=new RegExp("^("+s+")([a-zA-Z][\\-_a-zA-Z0-9]*)$"),this._usedPrefixes={},this._sparqlStar=r.sparqlStar,this._indent=Va(r.indent)?r.indent:" ",this._newline=Va(r.newline)?r.newline:`
|
|
102
|
-
`,this._explicitDatatype=!!r.explicitDatatype}o(Xe,"Generator");Xe.prototype.toQuery=function(r){var e="";return r.queryType&&(e+=r.queryType.toUpperCase()+" "),r.reduced&&(e+="REDUCED "),r.distinct&&(e+="DISTINCT "),r.variables?e+=gr(r.variables,void 0,function(t){return/^[?$]/.test(t)?t:un(t)?this.toEntity(t):"("+this.toExpression(t.expression)+" AS "+ou(t.variable)+")"},this)+" ":r.template&&(e+=this.group(r.template,!0)+this._newline),r.from&&(e+=this.graphs("FROM ",r.from.default)+this.graphs("FROM NAMED ",r.from.named)),r.where&&(e+="WHERE "+this.group(r.where,!0)+this._newline),r.updates&&(e+=gr(r.updates,";"+this._newline,this.toUpdate,this)),r.group&&(e+="GROUP BY "+gr(r.group,void 0,function(t){var i=un(t.expression)?this.toEntity(t.expression):"("+this.toExpression(t.expression)+")";return t.variable?"("+i+" AS "+ou(t.variable)+")":i},this)+this._newline),r.having&&(e+="HAVING ("+gr(r.having,void 0,this.toExpression,this)+")"+this._newline),r.order&&(e+="ORDER BY "+gr(r.order,void 0,function(t){var i="("+this.toExpression(t.expression)+")";return t.descending?"DESC "+i:i},this)+this._newline),r.offset&&(e+="OFFSET "+r.offset+this._newline),r.limit&&(e+="LIMIT "+r.limit+this._newline),r.values&&(e+=this.values(r)),e=this.baseAndPrefixes(r)+e,e.trim()};Xe.prototype.baseAndPrefixes=function(r){var e=r.base?"BASE <"+r.base+">"+this._newline:"",t="";for(var i in r.prefixes)(this._options.allPrefixes||this._usedPrefixes[i])&&(t+="PREFIX "+i+": <"+r.prefixes[i]+">"+this._newline);return e+t};Xe.prototype.toPattern=function(r){var e=r.type||r instanceof Array&&"array"||(r.subject&&r.predicate&&r.object?"triple":"");if(!(e in this))throw new Error("Unknown entry type: "+e);return this[e](r)};Xe.prototype.triple=function(r){return this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+"."};Xe.prototype.array=function(r){return gr(r,this._newline,this.toPattern,this)};Xe.prototype.bgp=function(r){return this.encodeTriples(r.triples)};Xe.prototype.encodeTriples=function(r){if(!r.length)return"";for(var e=[],t=void 0,i=void 0,n=0;n<r.length;n++){var s=r[n];Qn(s.subject,t)?Qn(s.predicate,i)?e.push(","):(i=s.predicate,e.push(";"+this._newline,this._indent,this.toEntity(i))):(t&&e.push("."+this._newline),t=s.subject,i=s.predicate,e.push(this.toEntity(t)," ",this.toEntity(i))),e.push(" ",this.toEntity(s.object))}return e.push("."),e.join("")};Xe.prototype.graph=function(r){return"GRAPH "+this.toEntity(r.name)+" "+this.group(r)};Xe.prototype.graphs=function(r,e){return!e||e.length===0?"":gr(e,"",function(t){return r+this.toEntity(t)+this._newline},this)};Xe.prototype.group=function(r,e){return r=e!==!0?this.array(r.patterns||r.triples):this.toPattern(r.type!=="group"?r:r.patterns),r.indexOf(this._newline)===-1?"{ "+r+" }":"{"+this._newline+this.indent(r)+this._newline+"}"};Xe.prototype.query=function(r){return this.toQuery(r)};Xe.prototype.filter=function(r){return"FILTER("+this.toExpression(r.expression)+")"};Xe.prototype.bind=function(r){return"BIND("+this.toExpression(r.expression)+" AS "+ou(r.variable)+")"};Xe.prototype.optional=function(r){return"OPTIONAL "+this.group(r)};Xe.prototype.union=function(r){return gr(r.patterns,this._newline+"UNION"+this._newline,function(e){return this.group(e,!0)},this)};Xe.prototype.minus=function(r){return"MINUS "+this.group(r)};Xe.prototype.values=function(r){var e=Object.keys(r.values.reduce(function(n,s){for(var a in s)n[a]=!0;return n},{})),t,i;return e.length===1?t=i="":(t="(",i=")"),"VALUES "+t+e.join(" ")+i+" {"+this._newline+gr(r.values,this._newline,function(n){return" "+t+gr(e,void 0,function(s){return n[s]?this.toEntity(n[s]):"UNDEF"},this)+i},this)+this._newline+"}"};Xe.prototype.service=function(r){return"SERVICE "+(r.silent?"SILENT ":"")+this.toEntity(r.name)+" "+this.group(r)};Xe.prototype.toExpression=function(r){if(un(r))return this.toEntity(r);switch(r.type.toLowerCase()){case"aggregate":return r.aggregation.toUpperCase()+"("+(r.distinct?"DISTINCT ":"")+this.toExpression(r.expression)+(typeof r.separator=="string"?'; SEPARATOR = "'+r.separator.replace(dg,pg)+'"':"")+")";case"functioncall":return this.toEntity(r.function)+"("+gr(r.args,", ",this.toExpression,this)+")";case"operation":var e=r.operator.toUpperCase(),t=r.args||[];switch(r.operator.toLowerCase()){case"<":case">":case">=":case"<=":case"&&":case"||":case"=":case"!=":case"+":case"-":case"*":case"/":return(un(t[0])?this.toEntity(t[0]):"("+this.toExpression(t[0])+")")+" "+e+" "+(un(t[1])?this.toEntity(t[1]):"("+this.toExpression(t[1])+")");case"!":return"!("+this.toExpression(t[0])+")";case"uplus":return"+("+this.toExpression(t[0])+")";case"uminus":return"-("+this.toExpression(t[0])+")";case"notin":e="NOT IN";case"in":return this.toExpression(t[0])+" "+e+"("+(Va(t[1])?t[1]:gr(t[1],", ",this.toExpression,this))+")";case"notexists":e="NOT EXISTS";case"exists":return e+" "+this.group(t[0],!0);default:return e+"("+gr(t,", ",this.toExpression,this)+")"}default:throw new Error("Unknown expression type: "+r.type)}};Xe.prototype.toEntity=function(r){if(un(r))switch(r.termType){case"Wildcard":return"*";case"Variable":return ou(r);case"BlankNode":return"_:"+r.value;case"Literal":var e=r.value||"",t=r.language||"",i=r.datatype;if(r='"'+e.replace(dg,pg)+'"',t)r+="@"+t;else if(i){if(!this._explicitDatatype)switch(i.value){case wx:return r;case bx:if(/^\d+$/.test(e))return e+" "}r+="^^"+this.encodeIRI(i.value)}return r;case"Quad":if(!this._sparqlStar)throw new Error("SPARQL* support is not enabled");return r.graph&&r.graph.termType!=="DefaultGraph"?"<< GRAPH "+this.toEntity(r.graph)+" { "+this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+" } >>":"<< "+this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+" >>";default:return this.encodeIRI(r.value)}else{var n=r.items.map(this.toEntity,this),s=r.pathType;switch(s){case"^":case"!":return s+n[0];case"*":case"+":case"?":return"("+n[0]+s+")";default:return"("+n.join(s)+")"}}};var dg=/["\\\t\n\r\b\f]/g,pg=o(function(r){return Ex[r]},"escapeReplacer"),Ex={"\\":"\\\\",'"':'\\"'," ":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};Xe.prototype.encodeIRI=function(r){var e=this._prefixRegex.exec(r);if(e){var t=this._prefixByIri[e[1]];return this._usedPrefixes[t]=!0,t+":"+e[2]}return"<"+r+">"};Xe.prototype.toUpdate=function(r){switch(r.type||r.updateType){case"load":return"LOAD"+(r.source?" "+this.toEntity(r.source):"")+(r.destination?" INTO GRAPH "+this.toEntity(r.destination):"");case"insert":return"INSERT DATA "+this.group(r.insert,!0);case"delete":return"DELETE DATA "+this.group(r.delete,!0);case"deletewhere":return"DELETE WHERE "+this.group(r.delete,!0);case"insertdelete":return(r.graph?"WITH "+this.toEntity(r.graph)+this._newline:"")+(r.delete.length?"DELETE "+this.group(r.delete,!0)+this._newline:"")+(r.insert.length?"INSERT "+this.group(r.insert,!0)+this._newline:"")+(r.using?this.graphs("USING ",r.using.default):"")+(r.using?this.graphs("USING NAMED ",r.using.named):"")+"WHERE "+this.group(r.where,!0);case"add":case"copy":case"move":return r.type.toUpperCase()+" "+(r.silent?"SILENT ":"")+(r.source.default?"DEFAULT":this.toEntity(r.source.name))+" TO "+this.toEntity(r.destination.name);case"create":case"clear":case"drop":return r.type.toUpperCase()+(r.silent?" SILENT ":" ")+(r.graph.default?"DEFAULT":r.graph.named?"NAMED":r.graph.all?"ALL":"GRAPH "+this.toEntity(r.graph.name));default:throw new Error("Unknown update query type: "+r.type)}};Xe.prototype.indent=function(r){return r.replace(/^/gm,this._indent)};function ou(r){return"?"+r.value}o(ou,"variableToString");function Va(r){return typeof r=="string"}o(Va,"isString");function un(r){return typeof r.termType=="string"}o(un,"isTerm");function Qn(r,e){if(!r||!un(r)||!e||!un(e)||r.termType!==e.termType)return!1;switch(r.termType){case"Literal":return r.value===e.value&&r.language===e.language&&Qn(r.datatype,e.datatype);case"Quad":return Qn(r.subject,e.subject)&&Qn(r.predicate,e.predicate)&&Qn(r.object,e.object)&&Qn(r.graph,e.graph);default:return r.value===e.value}}o(Qn,"equalTerms");function gr(r,e,t,i){return r.map(t,i).join(Va(e)?e:" ")}o(gr,"mapJoin");function Tx(r={}){return{stringify:o(function(e){var t=Object.create(r);return t.prefixes=e.prefixes,new Xe(t).toQuery(e)},"stringify"),createGenerator:o(function(){return new Xe(r)},"createGenerator")}}o(Tx,"_Generator");mg.exports={Generator:Tx}});var Kd=y(cu=>{"use strict";Object.defineProperty(cu,"__esModule",{value:!0});cu.BlankNode=void 0;var zd=class{static{o(this,"BlankNode")}constructor(e){this.termType="BlankNode",this.value=e}equals(e){return!!e&&e.termType==="BlankNode"&&e.value===this.value}};cu.BlankNode=zd});var Yd=y(uu=>{"use strict";Object.defineProperty(uu,"__esModule",{value:!0});uu.DefaultGraph=void 0;var qa=class{static{o(this,"DefaultGraph")}constructor(){this.termType="DefaultGraph",this.value=""}equals(e){return!!e&&e.termType==="DefaultGraph"}};uu.DefaultGraph=qa;qa.INSTANCE=new qa});var fu=y(lu=>{"use strict";Object.defineProperty(lu,"__esModule",{value:!0});lu.NamedNode=void 0;var Qd=class{static{o(this,"NamedNode")}constructor(e){this.termType="NamedNode",this.value=e}equals(e){return!!e&&e.termType==="NamedNode"&&e.value===this.value}};lu.NamedNode=Qd});var Jd=y(hu=>{"use strict";Object.defineProperty(hu,"__esModule",{value:!0});hu.Literal=void 0;var yg=fu(),Ba=class r{static{o(this,"Literal")}constructor(e,t){this.termType="Literal",this.value=e,typeof t=="string"?(this.language=t,this.datatype=r.RDF_LANGUAGE_STRING):t?(this.language="",this.datatype=t):(this.language="",this.datatype=r.XSD_STRING)}equals(e){return!!e&&e.termType==="Literal"&&e.value===this.value&&e.language===this.language&&this.datatype.equals(e.datatype)}};hu.Literal=Ba;Ba.RDF_LANGUAGE_STRING=new yg.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#langString");Ba.XSD_STRING=new yg.NamedNode("http://www.w3.org/2001/XMLSchema#string")});var Zd=y(du=>{"use strict";Object.defineProperty(du,"__esModule",{value:!0});du.Quad=void 0;var Xd=class{static{o(this,"Quad")}constructor(e,t,i,n){this.termType="Quad",this.value="",this.subject=e,this.predicate=t,this.object=i,this.graph=n}equals(e){return!!e&&(e.termType==="Quad"||!e.termType)&&this.subject.equals(e.subject)&&this.predicate.equals(e.predicate)&&this.object.equals(e.object)&&this.graph.equals(e.graph)}};du.Quad=Xd});var tp=y(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});pu.Variable=void 0;var ep=class{static{o(this,"Variable")}constructor(e){this.termType="Variable",this.value=e}equals(e){return!!e&&e.termType==="Variable"&&e.value===this.value}};pu.Variable=ep});var vg=y(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});mu.DataFactory=void 0;var Ax=Kd(),xx=Yd(),_g=Jd(),Ox=fu(),Cx=Zd(),Fx=tp(),Px=0,rp=class{static{o(this,"DataFactory")}constructor(e){this.blankNodeCounter=0,e=e||{},this.blankNodePrefix=e.blankNodePrefix||`df_${Px++}_`}namedNode(e){return new Ox.NamedNode(e)}blankNode(e){return new Ax.BlankNode(e||`${this.blankNodePrefix}${this.blankNodeCounter++}`)}literal(e,t){return new _g.Literal(e,t)}variable(e){return new Fx.Variable(e)}defaultGraph(){return xx.DefaultGraph.INSTANCE}quad(e,t,i,n){return new Cx.Quad(e,t,i,n||this.defaultGraph())}fromTerm(e){switch(e.termType){case"NamedNode":return this.namedNode(e.value);case"BlankNode":return this.blankNode(e.value);case"Literal":return e.language?this.literal(e.value,e.language):e.datatype.equals(_g.Literal.XSD_STRING)?this.literal(e.value):this.literal(e.value,this.fromTerm(e.datatype));case"Variable":return this.variable(e.value);case"DefaultGraph":return this.defaultGraph();case"Quad":return this.quad(this.fromTerm(e.subject),this.fromTerm(e.predicate),this.fromTerm(e.object),this.fromTerm(e.graph))}}fromQuad(e){return this.fromTerm(e)}resetBlankNodeCounter(){this.blankNodeCounter=0}};mu.DataFactory=rp});var Sg=y(yr=>{"use strict";var Ix=yr&&yr.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),Jn=yr&&yr.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Ix(e,r,t)};Object.defineProperty(yr,"__esModule",{value:!0});Jn(Kd(),yr);Jn(vg(),yr);Jn(Yd(),yr);Jn(Jd(),yr);Jn(fu(),yr);Jn(Zd(),yr);Jn(tp(),yr)});var wg=y((gk,bg)=>{var{Parser:Ui}=hg(),{Generator:Dx}=gg(),{Wildcard:Rx}=Hd(),{DataFactory:Nx}=Sg();function kx({prefixes:r,baseIRI:e,factory:t,pathOnly:i,sparqlStar:n,skipValidation:s,skipUngroupedVariableCheck:a}={}){let c={};for(let f in r??{})c[f]=r[f];let u=new Ui;return u.parse=function(){return Ui.base=e||"",Ui.prefixes=Object.create(c),Ui.factory=t||new Nx,Ui.sparqlStar=!!n,Ui.pathOnly=!!i,Ui.skipValidation=!!s||!!a,Ui.prototype.parse.apply(u,arguments)},u._resetBlanks=Ui._resetBlanks,u}o(kx,"_Parser");bg.exports={Parser:kx,Generator:Dx,Wildcard:Rx}});var np=y(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});Rs.CaseWhenTransformerError=Rs.CaseWhenTransformer=void 0;var ip=class{static{o(this,"CaseWhenTransformer")}transform(e){let t=e,i,n=0,s=100;do if(i=t,t=this.transformSinglePass(t),n++,n>s)throw new $i("Too many nested CASE expressions (max 100 iterations)");while(t!==i);return t}transformSinglePass(e){let t=this.findCasePositions(e);if(t.length===0)return e;let i=e;for(let n=t.length-1;n>=0;n--){let s=t[n],a=this.extractCaseExpression(i,s);if(a){let c=this.convertCaseToIf(a.content);i=i.substring(0,s)+c+i.substring(s+a.length)}}return i}findCasePositions(e){let t=[],i=e.toUpperCase(),n=0;for(;n<e.length;){if(e[n]==="'"||e[n]==='"'){let s=e[n];for(n++;n<e.length&&e[n]!==s;)e[n]==="\\"&&n++,n++;n++;continue}if(i.substring(n,n+4)==="CASE"&&this.isWordBoundary(e,n,4)){t.push(n),n+=4;continue}n++}return t}extractCaseExpression(e,t){let i=1,n=t+4,s=e.toUpperCase();for(;n<e.length&&i>0;){if(e[n]==="'"||e[n]==='"'){let a=e[n];for(n++;n<e.length&&e[n]!==a;)e[n]==="\\"&&n++,n++;n++;continue}if(s.substring(n,n+4)==="CASE"&&this.isWordBoundary(e,n,4)){i++,n+=4;continue}if(s.substring(n,n+3)==="END"&&this.isWordBoundary(e,n,3)){if(i--,i===0){let a=e.substring(t,n+3);return{content:a,length:a.length}}n+=3;continue}n++}if(i>0)throw new $i(`Unclosed CASE expression at position ${t}`);return null}isWordBoundary(e,t,i){let n=t>0?e[t-1]:"",s=t===0||!/[a-zA-Z0-9_?$]/.test(n),a=t+i<e.length?e[t+i]:"",c=t+i>=e.length||!/[a-zA-Z0-9_]/.test(a);return s&&c}convertCaseToIf(e){let t=this.extractWhenClauses(e),i=this.extractElseClause(e);if(t.length===0)throw new $i("CASE expression must have at least one WHEN clause");let n=i!==null?i:'""';for(let s=t.length-1;s>=0;s--){let{condition:a,result:c}=t[s];n=`IF(${a}, ${c}, ${n})`}return n}extractWhenClauses(e){let t=[],i=e.replace(/^\s*CASE\s+/i,"").replace(/\s*END\s*$/i,""),n=this.findKeywordPositions(i,"WHEN"),s=this.findKeywordPositions(i,"ELSE"),a=s.length>0?s[0]:i.length;for(let c=0;c<n.length;c++){let u=n[c]+4,f=c+1<n.length?n[c+1]:a,l=i.substring(u,f).trim(),h=this.parseWhenClause(l);h&&t.push(h)}return t}findKeywordPositions(e,t){let i=[],n=e.toUpperCase(),s=0,a=0;for(;s<e.length;){let c=e[s];if(c==="'"||c==='"'){let u=c;for(s++;s<e.length&&e[s]!==u;)e[s]==="\\"&&s++,s++;s++;continue}if(c==="("){a++,s++;continue}if(c===")"){a--,s++;continue}if(a===0&&n.substring(s,s+t.length)===t&&this.isWordBoundary(e,s,t.length)){i.push(s),s+=t.length;continue}s++}return i}parseWhenClause(e){let t=this.findKeywordPositions(e,"THEN");if(t.length===0)throw new $i(`WHEN clause missing THEN keyword: ${e.substring(0,50)}...`);let i=t[0],n=e.substring(0,i).trim(),s=e.substring(i+4).trim();if(!n)throw new $i("WHEN clause has empty condition");if(!s)throw new $i("WHEN clause has empty result");return{condition:n,result:s}}extractElseClause(e){let t=e.replace(/^\s*CASE\s+/i,"").replace(/\s*END\s*$/i,""),i=this.findKeywordPositions(t,"ELSE");if(i.length>0){let n=i[0];return t.substring(n+4).trim()}return null}};Rs.CaseWhenTransformer=ip;var $i=class extends Error{static{o(this,"CaseWhenTransformerError")}constructor(e){super(`CASE WHEN transformation error: ${e}`),this.name="CaseWhenTransformerError"}};Rs.CaseWhenTransformerError=$i});var Ag=y(Cr=>{"use strict";var jx=Cr&&Cr.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),Mx=Cr&&Cr.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),Lx=Cr&&Cr.__importStar||(function(){var r=o(function(e){return r=Object.getOwnPropertyNames||function(t){var i=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[i.length]=n);return i},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=r(e),n=0;n<i.length;n++)i[n]!=="default"&&jx(t,e,i[n]);return Mx(t,e),t}})();Object.defineProperty(Cr,"__esModule",{value:!0});Cr.SPARQLParser=Cr.SPARQLParseError=void 0;var Eg=Lx(wg()),Tg=np(),vi=class extends Error{static{o(this,"SPARQLParseError")}constructor(e,t,i,n){super(e,n?{cause:n}:void 0),this.name="SPARQLParseError",this.line=t,this.column=i}};Cr.SPARQLParseError=vi;var sp=class{static{o(this,"SPARQLParser")}constructor(){this.parser=new Eg.Parser,this.generator=new Eg.Generator,this.caseWhenTransformer=new Tg.CaseWhenTransformer}parse(e){try{let t=this.caseWhenTransformer.transform(e),i=this.parser.parse(t);return this.validateQuery(i),i}catch(t){if(t instanceof Tg.CaseWhenTransformerError)throw new vi(t.message);if(t instanceof Error){let i=t.message.match(/line (\d+), column (\d+)/),n=i?parseInt(i[1],10):void 0,s=i?parseInt(i[2],10):void 0;throw new vi(`SPARQL syntax error: ${t.message}`,n,s,t)}throw t}}toString(e){try{return this.generator.stringify(e)}catch(t){throw t instanceof Error?new vi(`Failed to serialize SPARQL query: ${t.message}`,void 0,void 0,t):t}}getQueryType(e){if("queryType"in e&&e.type==="query")return e.queryType;throw new vi("Query does not have a valid queryType property")}isSelectQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="SELECT"}isConstructQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="CONSTRUCT"}isAskQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="ASK"}isDescribeQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="DESCRIBE"}validateQuery(e){if(!e||typeof e!="object")throw new vi("Invalid query: not an object");if(e.type!=="query"&&e.type!=="update")throw new vi(`Invalid type: expected "query" or "update", got "${e.type}"`);if(e.type==="query"){let t=["SELECT","CONSTRUCT","ASK","DESCRIBE"];if(!t.includes(e.queryType))throw new vi(`Invalid query type: expected one of ${t.join(", ")}, got "${e.queryType}"`)}}};Cr.SPARQLParser=sp});var xg=y(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.AlgebraTranslator=Ns.AlgebraTranslatorError=void 0;var Ie=class extends Error{static{o(this,"AlgebraTranslatorError")}constructor(e,t){super(e,t?{cause:t}:void 0),this.name="AlgebraTranslatorError"}};Ns.AlgebraTranslatorError=Ie;var ap=class{static{o(this,"AlgebraTranslator")}constructor(){this.aggregateCounter=0}translate(e){if(e.type!=="query")throw new Ie("Only query operations are supported (not updates)");if(e.queryType==="SELECT")return this.translateSelect(e);if(e.queryType==="CONSTRUCT")return this.translateConstruct(e);throw new Ie(`Query type ${e.queryType} not yet supported`)}translateSelect(e){let t;if(!e.where||e.where.length===0)throw new Ie("SELECT query must have WHERE clause");t=this.translateWhere(e.where),this.aggregateCounter=0;let i=new Map,n=this.extractAggregatesWithMapping(e.variables,i),s=this.extractGroupVariables(e.group);if((n.length>0||s.length>0)&&(t={type:"group",variables:s,aggregates:n,input:t}),e.variables&&e.variables.length>0){for(let c of e.variables){let u=c;if(u.expression&&u.variable){if(u.expression.type==="aggregate")continue;let f=this.transformExpressionWithAggregateVars(u.expression,i);t={type:"extend",variable:u.variable.value,expression:f,input:t}}}let a=e.variables.filter(c=>c.termType==="Variable"||c.variable).map(c=>c.termType==="Variable"?c.value:c.variable.value);a.length>0&&(t={type:"project",variables:a,input:t})}return e.distinct&&(t={type:"distinct",input:t}),e.order&&e.order.length>0&&(t={type:"orderby",comparators:e.order.map(a=>this.translateOrderComparator(a)),input:t}),(e.limit!==void 0||e.offset!==void 0)&&(t={type:"slice",limit:e.limit,offset:e.offset,input:t}),t}translateConstruct(e){let t=this.translateConstructTemplate(e.template??[]);if(!e.where||e.where.length===0)throw new Ie("CONSTRUCT query must have WHERE clause");let i=this.translateWhere(e.where);return{type:"construct",template:t,where:i}}translateConstructTemplate(e){return!e||!Array.isArray(e)?[]:e.map(t=>this.translateTriple(t))}extractAggregatesWithMapping(e,t){if(!e)return[];let i=[];for(let n of e)!n.expression||!n.variable||(n.expression.type==="aggregate"?(i.push({variable:n.variable.value,expression:this.translateAggregateExpression(n.expression)}),t.set(n.expression,n.variable.value)):this.collectNestedAggregates(n.expression,i,t));return i}collectNestedAggregates(e,t,i){if(e){if(e.type==="aggregate"){let n=`__agg${this.aggregateCounter++}`;t.push({variable:n,expression:this.translateAggregateExpression(e)}),i.set(e,n)}else if(e.type==="operation"&&e.args)for(let n of e.args)this.collectNestedAggregates(n,t,i)}}transformExpressionWithAggregateVars(e,t){if(t.has(e))return{type:"variable",name:t.get(e)};if(e.type==="operation"&&e.args){let i=e.args.map(c=>this.transformExpressionWithAggregateVars(c,t)),n=["=","!=","<",">","<=",">="],s=["&&","||","!"],a=["+","-","*","/"];return n.includes(e.operator)?{type:"comparison",operator:e.operator,left:i[0],right:i[1]}:s.includes(e.operator)?{type:"logical",operator:e.operator,operands:i}:a.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:i[0],right:i[1]}:{type:"function",function:e.operator,args:i}}return this.translateExpression(e)}extractGroupVariables(e){return e?e.filter(t=>t.expression&&t.expression.termType==="Variable").map(t=>t.expression.value):[]}translateAggregateExpression(e){return{type:"aggregate",aggregation:e.aggregation.toLowerCase(),expression:e.expression?this.translateExpression(e.expression):void 0,distinct:e.distinct||!1,separator:e.separator}}translateWhere(e){if(e.length===0)throw new Ie("Empty WHERE clause");let t=e.filter(a=>a.type==="filter"),i=e.filter(a=>a.type==="bind"),n=e.filter(a=>a.type!=="filter"&&a.type!=="bind"),s;n.length===0?s={type:"bgp",triples:[]}:n.length===1?s=this.translatePattern(n[0]):s=n.map(c=>this.translatePattern(c)).reduce((c,u)=>({type:"join",left:c,right:u}));for(let a of i)s=this.translateBind(a,s);for(let a of t)s={type:"filter",expression:this.translateExpression(a.expression),input:s};return s}translatePattern(e){if(!e||!e.type)throw new Ie("Invalid pattern: missing type");switch(e.type){case"bgp":return this.translateBGP(e);case"filter":return this.translateFilter(e);case"optional":return this.translateOptional(e);case"union":return this.translateUnion(e);case"minus":return this.translateMinus(e);case"values":return this.translateValues(e);case"group":return this.translateWhere(e.patterns);case"query":return this.translateSubquery(e);default:throw new Ie(`Unsupported pattern type: ${e.type}`)}}translateBGP(e){if(!e.triples||!Array.isArray(e.triples))throw new Ie("BGP pattern must have triples array");return{type:"bgp",triples:e.triples.map(t=>this.translateTriple(t))}}translateTriple(e){if(!e.subject||!e.predicate||!e.object)throw new Ie("Triple must have subject, predicate, and object");return{subject:this.translateTripleElement(e.subject),predicate:this.translatePredicate(e.predicate),object:this.translateTripleElement(e.object)}}translatePredicate(e){return e.type==="path"?this.translatePropertyPath(e):this.translateTripleElement(e)}translatePropertyPath(e){if(!e.pathType)throw new Ie("Property path must have pathType");if(!e.items||!Array.isArray(e.items))throw new Ie("Property path must have items array");let t=e.items.map(i=>this.translatePathItem(i));switch(e.pathType){case"/":return{type:"path",pathType:"/",items:t};case"|":return{type:"path",pathType:"|",items:t};case"^":if(t.length!==1)throw new Ie("Inverse path must have exactly one item");return{type:"path",pathType:"^",items:[t[0]]};case"+":if(t.length!==1)throw new Ie("OneOrMore path must have exactly one item");return{type:"path",pathType:"+",items:[t[0]]};case"*":if(t.length!==1)throw new Ie("ZeroOrMore path must have exactly one item");return{type:"path",pathType:"*",items:[t[0]]};case"?":if(t.length!==1)throw new Ie("ZeroOrOne path must have exactly one item");return{type:"path",pathType:"?",items:[t[0]]};default:throw new Ie(`Unsupported property path type: ${e.pathType}`)}}translatePathItem(e){if(e.type==="path")return this.translatePropertyPath(e);if(e.termType==="NamedNode")return{type:"iri",value:e.value};throw new Ie(`Unsupported path item type: ${e.type||e.termType}`)}translateTripleElement(e){if(!e||!e.termType)throw new Ie("Triple element must have termType");switch(e.termType){case"Variable":return{type:"variable",value:e.value};case"NamedNode":return{type:"iri",value:e.value};case"Literal":return{type:"literal",value:e.value,datatype:e.datatype?.value,language:e.language};case"BlankNode":return{type:"blank",value:e.value};default:throw new Ie(`Unsupported term type: ${e.termType}`)}}translateFilter(e){if(!e.expression)throw new Ie("Filter pattern must have expression");let t=e.patterns?this.translateWhere(e.patterns):{type:"bgp",triples:[]};return{type:"filter",expression:this.translateExpression(e.expression),input:t}}translateExpression(e){if(!e)throw new Ie("Expression cannot be null or undefined");if(e.type==="operation")return this.translateOperationExpression(e);if(e.type==="functioncall"||e.type==="functionCall")return{type:"functionCall",function:e.function,args:e.args.map(t=>this.translateExpression(t))};if(e.termType)return this.translateTermExpression(e);throw new Ie(`Unsupported expression structure: ${JSON.stringify(e)}`)}translateOperationExpression(e){let t=["=","!=","<",">","<=",">="],i=["&&","||","!"],n=["+","-","*","/"];return t.includes(e.operator)?{type:"comparison",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:i.includes(e.operator)?{type:"logical",operator:e.operator,operands:e.args.map(s=>this.translateExpression(s))}:n.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:e.operator==="exists"||e.operator==="notexists"?this.translateExistsExpression(e):{type:"function",function:e.operator,args:e.args.map(s=>this.translateExpression(s))}}translateExistsExpression(e){if(!e.args||e.args.length!==1)throw new Ie("EXISTS/NOT EXISTS must have exactly one pattern argument");let t=e.args[0],i;return t.type==="group"&&t.patterns?i=this.translateWhere(t.patterns):t.type==="bgp"?i=this.translateBGP(t):i=this.translatePattern(t),{type:"exists",negated:e.operator==="notexists",pattern:i}}translateTermExpression(e){if(e.termType==="Variable")return{type:"variable",name:e.value};if(e.termType==="Literal"){let t=e.value;return e.datatype&&(e.datatype.value.includes("#integer")||e.datatype.value.includes("#decimal")?t=parseFloat(e.value):e.datatype.value.includes("#boolean")&&(t=e.value==="true")),{type:"literal",value:t,datatype:e.datatype?.value}}return{type:"literal",value:String(e.value||e)}}translateOptional(e){if(!e.patterns||e.patterns.length===0)throw new Ie("OPTIONAL pattern must have patterns");return{type:"leftjoin",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns),expression:e.expression?this.translateExpression(e.expression):void 0}}translateUnion(e){if(!e.patterns||e.patterns.length!==2)throw new Ie("UNION pattern must have exactly 2 patterns");return{type:"union",left:this.translateWhere(e.patterns[0].patterns||[e.patterns[0]]),right:this.translateWhere(e.patterns[1].patterns||[e.patterns[1]])}}translateMinus(e){if(!e.patterns||e.patterns.length===0)throw new Ie("MINUS pattern must have patterns");return{type:"minus",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns)}}translateValues(e){if(!e.values||!Array.isArray(e.values))throw new Ie("VALUES pattern must have values array");let t=new Set;for(let n of e.values)for(let s of Object.keys(n)){let a=s.startsWith("?")?s.slice(1):s;t.add(a)}let i=e.values.map(n=>this.translateValuesBinding(n));return{type:"values",variables:Array.from(t),bindings:i}}translateValuesBinding(e){let t={};for(let[i,n]of Object.entries(e)){let s=i.startsWith("?")?i.slice(1):i,a=n;if(a.termType==="NamedNode")t[s]={type:"iri",value:a.value};else if(a.termType==="Literal")t[s]={type:"literal",value:a.value,datatype:a.datatype?.value,language:a.language||void 0};else throw new Ie(`Unsupported VALUES term type: ${a.termType}`)}return t}translateBind(e,t){if(!e.variable||!e.expression)throw new Ie("BIND pattern must have variable and expression");return{type:"extend",variable:e.variable.value,expression:this.translateExpression(e.expression),input:t}}translateOrderComparator(e){return{expression:this.translateExpression(e.expression),descending:e.descending||!1}}translateSubquery(e){if(e.queryType!=="SELECT")throw new Ie(`Only SELECT subqueries are supported, got: ${e.queryType}`);return{type:"subquery",query:this.translateSelect(e)}}};Ns.AlgebraTranslator=ap});var Og=y(gu=>{"use strict";Object.defineProperty(gu,"__esModule",{value:!0});gu.AlgebraOptimizer=void 0;var op=class{static{o(this,"AlgebraOptimizer")}constructor(){this.stats=new Map}optimize(e){let t=e;return t=this.eliminateEmptyBGPInFilterJoin(t),t=this.filterPushDown(t),t=this.joinReordering(t),t}eliminateEmptyBGPInFilterJoin(e){if(e.type==="join"){if(e.left.type==="filter"){let t=e.left;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.right)}}if(e.right.type==="filter"){let t=e.right;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.left)}}return{type:"join",left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}}return e.type==="filter"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="leftjoin"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="union"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="minus"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="project"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="orderby"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="slice"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="distinct"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e}filterPushDown(e){return e.type==="filter"?this.pushDownFilter(e):e.type==="join"?{type:"join",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="leftjoin"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="union"?{type:"union",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="minus"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="project"?{...e,input:this.filterPushDown(e.input)}:e.type==="orderby"?{...e,input:this.filterPushDown(e.input)}:e.type==="slice"?{...e,input:this.filterPushDown(e.input)}:e.type==="distinct"?{...e,input:this.filterPushDown(e.input)}:e}pushDownFilter(e){let t=e.input;if(t.type==="join"){let i=this.getFilterVariables(e.expression),n=this.getOperationVariables(t.left),s=this.getOperationVariables(t.right),a=i.every(u=>n.has(u)),c=i.every(u=>s.has(u));return a&&!c?{type:"join",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:this.filterPushDown(t.right)}:c&&!a?{type:"join",left:this.filterPushDown(t.left),right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:{type:"join",left:this.filterPushDown(t.left),right:this.filterPushDown(t.right)}}}return t.type==="union"?{type:"union",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:this.filterPushDown(t)}}getFilterVariables(e){let t=[];if(e.type==="variable")t.push(e.name);else if(e.type==="comparison")t.push(...this.getFilterVariables(e.left)),t.push(...this.getFilterVariables(e.right));else if(e.type==="logical")for(let i of e.operands)t.push(...this.getFilterVariables(i));else if(e.type==="function")for(let i of e.args)t.push(...this.getFilterVariables(i));return Array.from(new Set(t))}getOperationVariables(e){let t=new Set;if(e.type==="bgp")for(let i of e.triples)i.subject.type==="variable"&&t.add(i.subject.value),i.predicate.type==="variable"&&t.add(i.predicate.value),i.object.type==="variable"&&t.add(i.object.value);else if(e.type==="join"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="filter")return this.getOperationVariables(e.input);if(e.type==="leftjoin"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else if(e.type==="union"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="minus")return this.getOperationVariables(e.left);if(e.type==="project")return new Set(e.variables)}}return t}joinReordering(e){return e.type==="join"?this.reorderJoin(e):e.type==="filter"?{...e,input:this.joinReordering(e.input)}:e.type==="leftjoin"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="union"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="minus"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="project"?{...e,input:this.joinReordering(e.input)}:e.type==="orderby"?{...e,input:this.joinReordering(e.input)}:e.type==="slice"?{...e,input:this.joinReordering(e.input)}:e.type==="distinct"?{...e,input:this.joinReordering(e.input)}:e}reorderJoin(e){let t=this.estimateCost(e.left);return this.estimateCost(e.right)<t?{type:"join",left:this.joinReordering(e.right),right:this.joinReordering(e.left)}:{type:"join",left:this.joinReordering(e.left),right:this.joinReordering(e.right)}}estimateCost(e){if(e.type==="bgp"){let t=e.triples.length*100;for(let i of e.triples)i.subject.type==="variable"&&(t+=10),i.predicate.type==="variable"&&(t+=20),i.object.type==="variable"&&(t+=10);return t}return e.type==="filter"?this.estimateCost(e.input)*.3:e.type==="join"?this.estimateCost(e.left)*this.estimateCost(e.right):e.type==="leftjoin"?this.estimateCost(e.left)+this.estimateCost(e.right)*.5:e.type==="union"?this.estimateCost(e.left)+this.estimateCost(e.right):e.type==="minus"?this.estimateCost(e.left)+this.estimateCost(e.right)*.3:100}setStatistics(e,t){this.stats.set(e,t)}getStatistics(e){return this.stats.get(e)}};gu.AlgebraOptimizer=op});var Cg=y(yu=>{"use strict";Object.defineProperty(yu,"__esModule",{value:!0});yu.AlgebraSerializer=void 0;var cp=class{static{o(this,"AlgebraSerializer")}toString(e,t=0){let i=" ".repeat(t);switch(e.type){case"bgp":return`${i}BGP [
|
|
102
|
+
`,this._explicitDatatype=!!r.explicitDatatype}o(Xe,"Generator");Xe.prototype.toQuery=function(r){var e="";return r.queryType&&(e+=r.queryType.toUpperCase()+" "),r.reduced&&(e+="REDUCED "),r.distinct&&(e+="DISTINCT "),r.variables?e+=gr(r.variables,void 0,function(t){return/^[?$]/.test(t)?t:un(t)?this.toEntity(t):"("+this.toExpression(t.expression)+" AS "+ou(t.variable)+")"},this)+" ":r.template&&(e+=this.group(r.template,!0)+this._newline),r.from&&(e+=this.graphs("FROM ",r.from.default)+this.graphs("FROM NAMED ",r.from.named)),r.where&&(e+="WHERE "+this.group(r.where,!0)+this._newline),r.updates&&(e+=gr(r.updates,";"+this._newline,this.toUpdate,this)),r.group&&(e+="GROUP BY "+gr(r.group,void 0,function(t){var i=un(t.expression)?this.toEntity(t.expression):"("+this.toExpression(t.expression)+")";return t.variable?"("+i+" AS "+ou(t.variable)+")":i},this)+this._newline),r.having&&(e+="HAVING ("+gr(r.having,void 0,this.toExpression,this)+")"+this._newline),r.order&&(e+="ORDER BY "+gr(r.order,void 0,function(t){var i="("+this.toExpression(t.expression)+")";return t.descending?"DESC "+i:i},this)+this._newline),r.offset&&(e+="OFFSET "+r.offset+this._newline),r.limit&&(e+="LIMIT "+r.limit+this._newline),r.values&&(e+=this.values(r)),e=this.baseAndPrefixes(r)+e,e.trim()};Xe.prototype.baseAndPrefixes=function(r){var e=r.base?"BASE <"+r.base+">"+this._newline:"",t="";for(var i in r.prefixes)(this._options.allPrefixes||this._usedPrefixes[i])&&(t+="PREFIX "+i+": <"+r.prefixes[i]+">"+this._newline);return e+t};Xe.prototype.toPattern=function(r){var e=r.type||r instanceof Array&&"array"||(r.subject&&r.predicate&&r.object?"triple":"");if(!(e in this))throw new Error("Unknown entry type: "+e);return this[e](r)};Xe.prototype.triple=function(r){return this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+"."};Xe.prototype.array=function(r){return gr(r,this._newline,this.toPattern,this)};Xe.prototype.bgp=function(r){return this.encodeTriples(r.triples)};Xe.prototype.encodeTriples=function(r){if(!r.length)return"";for(var e=[],t=void 0,i=void 0,n=0;n<r.length;n++){var s=r[n];Qn(s.subject,t)?Qn(s.predicate,i)?e.push(","):(i=s.predicate,e.push(";"+this._newline,this._indent,this.toEntity(i))):(t&&e.push("."+this._newline),t=s.subject,i=s.predicate,e.push(this.toEntity(t)," ",this.toEntity(i))),e.push(" ",this.toEntity(s.object))}return e.push("."),e.join("")};Xe.prototype.graph=function(r){return"GRAPH "+this.toEntity(r.name)+" "+this.group(r)};Xe.prototype.graphs=function(r,e){return!e||e.length===0?"":gr(e,"",function(t){return r+this.toEntity(t)+this._newline},this)};Xe.prototype.group=function(r,e){return r=e!==!0?this.array(r.patterns||r.triples):this.toPattern(r.type!=="group"?r:r.patterns),r.indexOf(this._newline)===-1?"{ "+r+" }":"{"+this._newline+this.indent(r)+this._newline+"}"};Xe.prototype.query=function(r){return this.toQuery(r)};Xe.prototype.filter=function(r){return"FILTER("+this.toExpression(r.expression)+")"};Xe.prototype.bind=function(r){return"BIND("+this.toExpression(r.expression)+" AS "+ou(r.variable)+")"};Xe.prototype.optional=function(r){return"OPTIONAL "+this.group(r)};Xe.prototype.union=function(r){return gr(r.patterns,this._newline+"UNION"+this._newline,function(e){return this.group(e,!0)},this)};Xe.prototype.minus=function(r){return"MINUS "+this.group(r)};Xe.prototype.values=function(r){var e=Object.keys(r.values.reduce(function(n,s){for(var a in s)n[a]=!0;return n},{})),t,i;return e.length===1?t=i="":(t="(",i=")"),"VALUES "+t+e.join(" ")+i+" {"+this._newline+gr(r.values,this._newline,function(n){return" "+t+gr(e,void 0,function(s){return n[s]?this.toEntity(n[s]):"UNDEF"},this)+i},this)+this._newline+"}"};Xe.prototype.service=function(r){return"SERVICE "+(r.silent?"SILENT ":"")+this.toEntity(r.name)+" "+this.group(r)};Xe.prototype.toExpression=function(r){if(un(r))return this.toEntity(r);switch(r.type.toLowerCase()){case"aggregate":return r.aggregation.toUpperCase()+"("+(r.distinct?"DISTINCT ":"")+this.toExpression(r.expression)+(typeof r.separator=="string"?'; SEPARATOR = "'+r.separator.replace(dg,pg)+'"':"")+")";case"functioncall":return this.toEntity(r.function)+"("+gr(r.args,", ",this.toExpression,this)+")";case"operation":var e=r.operator.toUpperCase(),t=r.args||[];switch(r.operator.toLowerCase()){case"<":case">":case">=":case"<=":case"&&":case"||":case"=":case"!=":case"+":case"-":case"*":case"/":return(un(t[0])?this.toEntity(t[0]):"("+this.toExpression(t[0])+")")+" "+e+" "+(un(t[1])?this.toEntity(t[1]):"("+this.toExpression(t[1])+")");case"!":return"!("+this.toExpression(t[0])+")";case"uplus":return"+("+this.toExpression(t[0])+")";case"uminus":return"-("+this.toExpression(t[0])+")";case"notin":e="NOT IN";case"in":return this.toExpression(t[0])+" "+e+"("+(Va(t[1])?t[1]:gr(t[1],", ",this.toExpression,this))+")";case"notexists":e="NOT EXISTS";case"exists":return e+" "+this.group(t[0],!0);default:return e+"("+gr(t,", ",this.toExpression,this)+")"}default:throw new Error("Unknown expression type: "+r.type)}};Xe.prototype.toEntity=function(r){if(un(r))switch(r.termType){case"Wildcard":return"*";case"Variable":return ou(r);case"BlankNode":return"_:"+r.value;case"Literal":var e=r.value||"",t=r.language||"",i=r.datatype;if(r='"'+e.replace(dg,pg)+'"',t)r+="@"+t;else if(i){if(!this._explicitDatatype)switch(i.value){case wx:return r;case bx:if(/^\d+$/.test(e))return e+" "}r+="^^"+this.encodeIRI(i.value)}return r;case"Quad":if(!this._sparqlStar)throw new Error("SPARQL* support is not enabled");return r.graph&&r.graph.termType!=="DefaultGraph"?"<< GRAPH "+this.toEntity(r.graph)+" { "+this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+" } >>":"<< "+this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+" >>";default:return this.encodeIRI(r.value)}else{var n=r.items.map(this.toEntity,this),s=r.pathType;switch(s){case"^":case"!":return s+n[0];case"*":case"+":case"?":return"("+n[0]+s+")";default:return"("+n.join(s)+")"}}};var dg=/["\\\t\n\r\b\f]/g,pg=o(function(r){return Ex[r]},"escapeReplacer"),Ex={"\\":"\\\\",'"':'\\"'," ":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};Xe.prototype.encodeIRI=function(r){var e=this._prefixRegex.exec(r);if(e){var t=this._prefixByIri[e[1]];return this._usedPrefixes[t]=!0,t+":"+e[2]}return"<"+r+">"};Xe.prototype.toUpdate=function(r){switch(r.type||r.updateType){case"load":return"LOAD"+(r.source?" "+this.toEntity(r.source):"")+(r.destination?" INTO GRAPH "+this.toEntity(r.destination):"");case"insert":return"INSERT DATA "+this.group(r.insert,!0);case"delete":return"DELETE DATA "+this.group(r.delete,!0);case"deletewhere":return"DELETE WHERE "+this.group(r.delete,!0);case"insertdelete":return(r.graph?"WITH "+this.toEntity(r.graph)+this._newline:"")+(r.delete.length?"DELETE "+this.group(r.delete,!0)+this._newline:"")+(r.insert.length?"INSERT "+this.group(r.insert,!0)+this._newline:"")+(r.using?this.graphs("USING ",r.using.default):"")+(r.using?this.graphs("USING NAMED ",r.using.named):"")+"WHERE "+this.group(r.where,!0);case"add":case"copy":case"move":return r.type.toUpperCase()+" "+(r.silent?"SILENT ":"")+(r.source.default?"DEFAULT":this.toEntity(r.source.name))+" TO "+this.toEntity(r.destination.name);case"create":case"clear":case"drop":return r.type.toUpperCase()+(r.silent?" SILENT ":" ")+(r.graph.default?"DEFAULT":r.graph.named?"NAMED":r.graph.all?"ALL":"GRAPH "+this.toEntity(r.graph.name));default:throw new Error("Unknown update query type: "+r.type)}};Xe.prototype.indent=function(r){return r.replace(/^/gm,this._indent)};function ou(r){return"?"+r.value}o(ou,"variableToString");function Va(r){return typeof r=="string"}o(Va,"isString");function un(r){return typeof r.termType=="string"}o(un,"isTerm");function Qn(r,e){if(!r||!un(r)||!e||!un(e)||r.termType!==e.termType)return!1;switch(r.termType){case"Literal":return r.value===e.value&&r.language===e.language&&Qn(r.datatype,e.datatype);case"Quad":return Qn(r.subject,e.subject)&&Qn(r.predicate,e.predicate)&&Qn(r.object,e.object)&&Qn(r.graph,e.graph);default:return r.value===e.value}}o(Qn,"equalTerms");function gr(r,e,t,i){return r.map(t,i).join(Va(e)?e:" ")}o(gr,"mapJoin");function Tx(r={}){return{stringify:o(function(e){var t=Object.create(r);return t.prefixes=e.prefixes,new Xe(t).toQuery(e)},"stringify"),createGenerator:o(function(){return new Xe(r)},"createGenerator")}}o(Tx,"_Generator");mg.exports={Generator:Tx}});var Kd=y(cu=>{"use strict";Object.defineProperty(cu,"__esModule",{value:!0});cu.BlankNode=void 0;var zd=class{static{o(this,"BlankNode")}constructor(e){this.termType="BlankNode",this.value=e}equals(e){return!!e&&e.termType==="BlankNode"&&e.value===this.value}};cu.BlankNode=zd});var Yd=y(uu=>{"use strict";Object.defineProperty(uu,"__esModule",{value:!0});uu.DefaultGraph=void 0;var qa=class{static{o(this,"DefaultGraph")}constructor(){this.termType="DefaultGraph",this.value=""}equals(e){return!!e&&e.termType==="DefaultGraph"}};uu.DefaultGraph=qa;qa.INSTANCE=new qa});var fu=y(lu=>{"use strict";Object.defineProperty(lu,"__esModule",{value:!0});lu.NamedNode=void 0;var Qd=class{static{o(this,"NamedNode")}constructor(e){this.termType="NamedNode",this.value=e}equals(e){return!!e&&e.termType==="NamedNode"&&e.value===this.value}};lu.NamedNode=Qd});var Jd=y(hu=>{"use strict";Object.defineProperty(hu,"__esModule",{value:!0});hu.Literal=void 0;var yg=fu(),Ba=class r{static{o(this,"Literal")}constructor(e,t){this.termType="Literal",this.value=e,typeof t=="string"?(this.language=t,this.datatype=r.RDF_LANGUAGE_STRING):t?(this.language="",this.datatype=t):(this.language="",this.datatype=r.XSD_STRING)}equals(e){return!!e&&e.termType==="Literal"&&e.value===this.value&&e.language===this.language&&this.datatype.equals(e.datatype)}};hu.Literal=Ba;Ba.RDF_LANGUAGE_STRING=new yg.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#langString");Ba.XSD_STRING=new yg.NamedNode("http://www.w3.org/2001/XMLSchema#string")});var Zd=y(du=>{"use strict";Object.defineProperty(du,"__esModule",{value:!0});du.Quad=void 0;var Xd=class{static{o(this,"Quad")}constructor(e,t,i,n){this.termType="Quad",this.value="",this.subject=e,this.predicate=t,this.object=i,this.graph=n}equals(e){return!!e&&(e.termType==="Quad"||!e.termType)&&this.subject.equals(e.subject)&&this.predicate.equals(e.predicate)&&this.object.equals(e.object)&&this.graph.equals(e.graph)}};du.Quad=Xd});var tp=y(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});pu.Variable=void 0;var ep=class{static{o(this,"Variable")}constructor(e){this.termType="Variable",this.value=e}equals(e){return!!e&&e.termType==="Variable"&&e.value===this.value}};pu.Variable=ep});var vg=y(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});mu.DataFactory=void 0;var Ax=Kd(),xx=Yd(),_g=Jd(),Ox=fu(),Cx=Zd(),Fx=tp(),Px=0,rp=class{static{o(this,"DataFactory")}constructor(e){this.blankNodeCounter=0,e=e||{},this.blankNodePrefix=e.blankNodePrefix||`df_${Px++}_`}namedNode(e){return new Ox.NamedNode(e)}blankNode(e){return new Ax.BlankNode(e||`${this.blankNodePrefix}${this.blankNodeCounter++}`)}literal(e,t){return new _g.Literal(e,t)}variable(e){return new Fx.Variable(e)}defaultGraph(){return xx.DefaultGraph.INSTANCE}quad(e,t,i,n){return new Cx.Quad(e,t,i,n||this.defaultGraph())}fromTerm(e){switch(e.termType){case"NamedNode":return this.namedNode(e.value);case"BlankNode":return this.blankNode(e.value);case"Literal":return e.language?this.literal(e.value,e.language):e.datatype.equals(_g.Literal.XSD_STRING)?this.literal(e.value):this.literal(e.value,this.fromTerm(e.datatype));case"Variable":return this.variable(e.value);case"DefaultGraph":return this.defaultGraph();case"Quad":return this.quad(this.fromTerm(e.subject),this.fromTerm(e.predicate),this.fromTerm(e.object),this.fromTerm(e.graph))}}fromQuad(e){return this.fromTerm(e)}resetBlankNodeCounter(){this.blankNodeCounter=0}};mu.DataFactory=rp});var Sg=y(yr=>{"use strict";var Ix=yr&&yr.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),Jn=yr&&yr.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Ix(e,r,t)};Object.defineProperty(yr,"__esModule",{value:!0});Jn(Kd(),yr);Jn(vg(),yr);Jn(Yd(),yr);Jn(Jd(),yr);Jn(fu(),yr);Jn(Zd(),yr);Jn(tp(),yr)});var wg=y((gk,bg)=>{var{Parser:Ui}=hg(),{Generator:Dx}=gg(),{Wildcard:Rx}=Hd(),{DataFactory:Nx}=Sg();function kx({prefixes:r,baseIRI:e,factory:t,pathOnly:i,sparqlStar:n,skipValidation:s,skipUngroupedVariableCheck:a}={}){let c={};for(let f in r??{})c[f]=r[f];let u=new Ui;return u.parse=function(){return Ui.base=e||"",Ui.prefixes=Object.create(c),Ui.factory=t||new Nx,Ui.sparqlStar=!!n,Ui.pathOnly=!!i,Ui.skipValidation=!!s||!!a,Ui.prototype.parse.apply(u,arguments)},u._resetBlanks=Ui._resetBlanks,u}o(kx,"_Parser");bg.exports={Parser:kx,Generator:Dx,Wildcard:Rx}});var np=y(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});Rs.CaseWhenTransformerError=Rs.CaseWhenTransformer=void 0;var ip=class{static{o(this,"CaseWhenTransformer")}transform(e){let t=e,i,n=0,s=100;do if(i=t,t=this.transformSinglePass(t),n++,n>s)throw new $i("Too many nested CASE expressions (max 100 iterations)");while(t!==i);return t}transformSinglePass(e){let t=this.findCasePositions(e);if(t.length===0)return e;let i=e;for(let n=t.length-1;n>=0;n--){let s=t[n],a=this.extractCaseExpression(i,s);if(a){let c=this.convertCaseToIf(a.content);i=i.substring(0,s)+c+i.substring(s+a.length)}}return i}findCasePositions(e){let t=[],i=e.toUpperCase(),n=0;for(;n<e.length;){if(e[n]==="'"||e[n]==='"'){let s=e[n];for(n++;n<e.length&&e[n]!==s;)e[n]==="\\"&&n++,n++;n++;continue}if(i.substring(n,n+4)==="CASE"&&this.isWordBoundary(e,n,4)){t.push(n),n+=4;continue}n++}return t}extractCaseExpression(e,t){let i=1,n=t+4,s=e.toUpperCase();for(;n<e.length&&i>0;){if(e[n]==="'"||e[n]==='"'){let a=e[n];for(n++;n<e.length&&e[n]!==a;)e[n]==="\\"&&n++,n++;n++;continue}if(s.substring(n,n+4)==="CASE"&&this.isWordBoundary(e,n,4)){i++,n+=4;continue}if(s.substring(n,n+3)==="END"&&this.isWordBoundary(e,n,3)){if(i--,i===0){let a=e.substring(t,n+3);return{content:a,length:a.length}}n+=3;continue}n++}if(i>0)throw new $i(`Unclosed CASE expression at position ${t}`);return null}isWordBoundary(e,t,i){let n=t>0?e[t-1]:"",s=t===0||!/[a-zA-Z0-9_?$]/.test(n),a=t+i<e.length?e[t+i]:"",c=t+i>=e.length||!/[a-zA-Z0-9_]/.test(a);return s&&c}convertCaseToIf(e){let t=this.extractWhenClauses(e),i=this.extractElseClause(e);if(t.length===0)throw new $i("CASE expression must have at least one WHEN clause");let n=i!==null?i:'""';for(let s=t.length-1;s>=0;s--){let{condition:a,result:c}=t[s];n=`IF(${a}, ${c}, ${n})`}return n}extractWhenClauses(e){let t=[],i=e.replace(/^\s*CASE\s+/i,"").replace(/\s*END\s*$/i,""),n=this.findKeywordPositions(i,"WHEN"),s=this.findKeywordPositions(i,"ELSE"),a=s.length>0?s[0]:i.length;for(let c=0;c<n.length;c++){let u=n[c]+4,f=c+1<n.length?n[c+1]:a,l=i.substring(u,f).trim(),h=this.parseWhenClause(l);h&&t.push(h)}return t}findKeywordPositions(e,t){let i=[],n=e.toUpperCase(),s=0,a=0;for(;s<e.length;){let c=e[s];if(c==="'"||c==='"'){let u=c;for(s++;s<e.length&&e[s]!==u;)e[s]==="\\"&&s++,s++;s++;continue}if(c==="("){a++,s++;continue}if(c===")"){a--,s++;continue}if(a===0&&n.substring(s,s+t.length)===t&&this.isWordBoundary(e,s,t.length)){i.push(s),s+=t.length;continue}s++}return i}parseWhenClause(e){let t=this.findKeywordPositions(e,"THEN");if(t.length===0)throw new $i(`WHEN clause missing THEN keyword: ${e.substring(0,50)}...`);let i=t[0],n=e.substring(0,i).trim(),s=e.substring(i+4).trim();if(!n)throw new $i("WHEN clause has empty condition");if(!s)throw new $i("WHEN clause has empty result");return{condition:n,result:s}}extractElseClause(e){let t=e.replace(/^\s*CASE\s+/i,"").replace(/\s*END\s*$/i,""),i=this.findKeywordPositions(t,"ELSE");if(i.length>0){let n=i[0];return t.substring(n+4).trim()}return null}};Rs.CaseWhenTransformer=ip;var $i=class extends Error{static{o(this,"CaseWhenTransformerError")}constructor(e){super(`CASE WHEN transformation error: ${e}`),this.name="CaseWhenTransformerError"}};Rs.CaseWhenTransformerError=$i});var Ag=y(Cr=>{"use strict";var jx=Cr&&Cr.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),Mx=Cr&&Cr.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),Lx=Cr&&Cr.__importStar||(function(){var r=o(function(e){return r=Object.getOwnPropertyNames||function(t){var i=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[i.length]=n);return i},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=r(e),n=0;n<i.length;n++)i[n]!=="default"&&jx(t,e,i[n]);return Mx(t,e),t}})();Object.defineProperty(Cr,"__esModule",{value:!0});Cr.SPARQLParser=Cr.SPARQLParseError=void 0;var Eg=Lx(wg()),Tg=np(),vi=class extends Error{static{o(this,"SPARQLParseError")}constructor(e,t,i,n){super(e,n?{cause:n}:void 0),this.name="SPARQLParseError",this.line=t,this.column=i}};Cr.SPARQLParseError=vi;var sp=class{static{o(this,"SPARQLParser")}constructor(){this.parser=new Eg.Parser,this.generator=new Eg.Generator,this.caseWhenTransformer=new Tg.CaseWhenTransformer}parse(e){try{let t=this.caseWhenTransformer.transform(e),i=this.parser.parse(t);return this.validateQuery(i),i}catch(t){if(t instanceof Tg.CaseWhenTransformerError)throw new vi(t.message);if(t instanceof Error){let i=t.message.match(/line (\d+), column (\d+)/),n=i?parseInt(i[1],10):void 0,s=i?parseInt(i[2],10):void 0;throw new vi(`SPARQL syntax error: ${t.message}`,n,s,t)}throw t}}toString(e){try{return this.generator.stringify(e)}catch(t){throw t instanceof Error?new vi(`Failed to serialize SPARQL query: ${t.message}`,void 0,void 0,t):t}}getQueryType(e){if("queryType"in e&&e.type==="query")return e.queryType;throw new vi("Query does not have a valid queryType property")}isSelectQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="SELECT"}isConstructQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="CONSTRUCT"}isAskQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="ASK"}isDescribeQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="DESCRIBE"}validateQuery(e){if(!e||typeof e!="object")throw new vi("Invalid query: not an object");if(e.type!=="query"&&e.type!=="update")throw new vi(`Invalid type: expected "query" or "update", got "${e.type}"`);if(e.type==="query"){let t=["SELECT","CONSTRUCT","ASK","DESCRIBE"];if(!t.includes(e.queryType))throw new vi(`Invalid query type: expected one of ${t.join(", ")}, got "${e.queryType}"`)}}};Cr.SPARQLParser=sp});var xg=y(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.AlgebraTranslator=Ns.AlgebraTranslatorError=void 0;var Ie=class extends Error{static{o(this,"AlgebraTranslatorError")}constructor(e,t){super(e,t?{cause:t}:void 0),this.name="AlgebraTranslatorError"}};Ns.AlgebraTranslatorError=Ie;var ap=class{static{o(this,"AlgebraTranslator")}constructor(){this.aggregateCounter=0}translate(e){if(e.type!=="query")throw new Ie("Only query operations are supported (not updates)");if(e.queryType==="SELECT")return this.translateSelect(e);if(e.queryType==="CONSTRUCT")return this.translateConstruct(e);throw new Ie(`Query type ${e.queryType} not yet supported`)}translateSelect(e){let t;if(!e.where||e.where.length===0)throw new Ie("SELECT query must have WHERE clause");t=this.translateWhere(e.where),this.aggregateCounter=0;let i=new Map,n=this.extractAggregatesWithMapping(e.variables,i),s=this.extractGroupVariables(e.group);if((n.length>0||s.length>0)&&(t={type:"group",variables:s,aggregates:n,input:t}),e.variables&&e.variables.length>0){for(let c of e.variables){let u=c;if(u.expression&&u.variable){if(u.expression.type==="aggregate")continue;let f=this.transformExpressionWithAggregateVars(u.expression,i);t={type:"extend",variable:u.variable.value,expression:f,input:t}}}let a=e.variables.filter(c=>c.termType==="Variable"||c.variable).map(c=>c.termType==="Variable"?c.value:c.variable.value);a.length>0&&(t={type:"project",variables:a,input:t})}return e.distinct&&(t={type:"distinct",input:t}),e.order&&e.order.length>0&&(t={type:"orderby",comparators:e.order.map(a=>this.translateOrderComparator(a)),input:t}),(e.limit!==void 0||e.offset!==void 0)&&(t={type:"slice",limit:e.limit,offset:e.offset,input:t}),t}translateConstruct(e){let t=this.translateConstructTemplate(e.template??[]);if(!e.where||e.where.length===0)throw new Ie("CONSTRUCT query must have WHERE clause");let i=this.translateWhere(e.where);return{type:"construct",template:t,where:i}}translateConstructTemplate(e){return!e||!Array.isArray(e)?[]:e.map(t=>this.translateTriple(t))}extractAggregatesWithMapping(e,t){if(!e)return[];let i=[];for(let n of e)!n.expression||!n.variable||(n.expression.type==="aggregate"?(i.push({variable:n.variable.value,expression:this.translateAggregateExpression(n.expression)}),t.set(n.expression,n.variable.value)):this.collectNestedAggregates(n.expression,i,t));return i}collectNestedAggregates(e,t,i){if(e){if(e.type==="aggregate"){let n=`__agg${this.aggregateCounter++}`;t.push({variable:n,expression:this.translateAggregateExpression(e)}),i.set(e,n)}else if(e.type==="operation"&&e.args)for(let n of e.args)this.collectNestedAggregates(n,t,i)}}transformExpressionWithAggregateVars(e,t){if(t.has(e))return{type:"variable",name:t.get(e)};if(e.type==="operation"&&e.args){let i=e.args.map(c=>this.transformExpressionWithAggregateVars(c,t)),n=["=","!=","<",">","<=",">="],s=["&&","||","!"],a=["+","-","*","/"];return n.includes(e.operator)?{type:"comparison",operator:e.operator,left:i[0],right:i[1]}:s.includes(e.operator)?{type:"logical",operator:e.operator,operands:i}:a.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:i[0],right:i[1]}:{type:"function",function:e.operator,args:i}}return this.translateExpression(e)}extractGroupVariables(e){return e?e.filter(t=>t.expression&&t.expression.termType==="Variable").map(t=>t.expression.value):[]}translateAggregateExpression(e){return{type:"aggregate",aggregation:e.aggregation.toLowerCase(),expression:e.expression?this.translateExpression(e.expression):void 0,distinct:e.distinct||!1,separator:e.separator}}translateWhere(e){if(e.length===0)throw new Ie("Empty WHERE clause");let t=e.filter(a=>a.type==="filter"),i=e.filter(a=>a.type==="bind"),n=e.filter(a=>a.type!=="filter"&&a.type!=="bind"),s;n.length===0?s={type:"bgp",triples:[]}:n.length===1?s=this.translatePattern(n[0]):s=n.map(c=>this.translatePattern(c)).reduce((c,u)=>({type:"join",left:c,right:u}));for(let a of i)s=this.translateBind(a,s);for(let a of t)s={type:"filter",expression:this.translateExpression(a.expression),input:s};return s}translatePattern(e){if(!e||!e.type)throw new Ie("Invalid pattern: missing type");switch(e.type){case"bgp":return this.translateBGP(e);case"filter":return this.translateFilter(e);case"optional":return this.translateOptional(e);case"union":return this.translateUnion(e);case"minus":return this.translateMinus(e);case"values":return this.translateValues(e);case"group":return this.translateWhere(e.patterns);case"query":return this.translateSubquery(e);default:throw new Ie(`Unsupported pattern type: ${e.type}`)}}translateBGP(e){if(!e.triples||!Array.isArray(e.triples))throw new Ie("BGP pattern must have triples array");return{type:"bgp",triples:e.triples.map(t=>this.translateTriple(t))}}translateTriple(e){if(!e.subject||!e.predicate||!e.object)throw new Ie("Triple must have subject, predicate, and object");return{subject:this.translateTripleElement(e.subject),predicate:this.translatePredicate(e.predicate),object:this.translateTripleElement(e.object)}}translatePredicate(e){return e.type==="path"?this.translatePropertyPath(e):this.translateTripleElement(e)}translatePropertyPath(e){if(!e.pathType)throw new Ie("Property path must have pathType");if(!e.items||!Array.isArray(e.items))throw new Ie("Property path must have items array");let t=e.items.map(i=>this.translatePathItem(i));switch(e.pathType){case"/":return{type:"path",pathType:"/",items:t};case"|":return{type:"path",pathType:"|",items:t};case"^":if(t.length!==1)throw new Ie("Inverse path must have exactly one item");return{type:"path",pathType:"^",items:[t[0]]};case"+":if(t.length!==1)throw new Ie("OneOrMore path must have exactly one item");return{type:"path",pathType:"+",items:[t[0]]};case"*":if(t.length!==1)throw new Ie("ZeroOrMore path must have exactly one item");return{type:"path",pathType:"*",items:[t[0]]};case"?":if(t.length!==1)throw new Ie("ZeroOrOne path must have exactly one item");return{type:"path",pathType:"?",items:[t[0]]};default:throw new Ie(`Unsupported property path type: ${e.pathType}`)}}translatePathItem(e){if(e.type==="path")return this.translatePropertyPath(e);if(e.termType==="NamedNode")return{type:"iri",value:e.value};throw new Ie(`Unsupported path item type: ${e.type||e.termType}`)}translateTripleElement(e){if(!e||!e.termType)throw new Ie("Triple element must have termType");switch(e.termType){case"Variable":return{type:"variable",value:e.value};case"NamedNode":return{type:"iri",value:e.value};case"Literal":return{type:"literal",value:e.value,datatype:e.datatype?.value,language:e.language};case"BlankNode":return{type:"blank",value:e.value};default:throw new Ie(`Unsupported term type: ${e.termType}`)}}translateFilter(e){if(!e.expression)throw new Ie("Filter pattern must have expression");let t=e.patterns?this.translateWhere(e.patterns):{type:"bgp",triples:[]};return{type:"filter",expression:this.translateExpression(e.expression),input:t}}translateExpression(e){if(!e)throw new Ie("Expression cannot be null or undefined");if(e.type==="operation")return this.translateOperationExpression(e);if(e.type==="functioncall"||e.type==="functionCall")return{type:"functionCall",function:e.function,args:e.args.map(t=>this.translateExpression(t))};if(e.termType)return this.translateTermExpression(e);throw new Ie(`Unsupported expression structure: ${JSON.stringify(e)}`)}translateOperationExpression(e){let t=["=","!=","<",">","<=",">="],i=["&&","||","!"],n=["+","-","*","/"];return t.includes(e.operator)?{type:"comparison",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:i.includes(e.operator)?{type:"logical",operator:e.operator,operands:e.args.map(s=>this.translateExpression(s))}:n.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:e.operator==="exists"||e.operator==="notexists"?this.translateExistsExpression(e):{type:"function",function:e.operator,args:e.args.map(s=>this.translateExpression(s))}}translateExistsExpression(e){if(!e.args||e.args.length!==1)throw new Ie("EXISTS/NOT EXISTS must have exactly one pattern argument");let t=e.args[0],i;return t.type==="group"&&t.patterns?i=this.translateWhere(t.patterns):t.type==="bgp"?i=this.translateBGP(t):i=this.translatePattern(t),{type:"exists",negated:e.operator==="notexists",pattern:i}}translateTermExpression(e){if(e.termType==="Variable")return{type:"variable",name:e.value};if(e.termType==="Literal"){let t=e.value;return e.datatype&&(e.datatype.value.includes("#integer")||e.datatype.value.includes("#decimal")?t=parseFloat(e.value):e.datatype.value.includes("#boolean")&&(t=e.value==="true")),{type:"literal",value:t,datatype:e.datatype?.value}}return{type:"literal",value:String(e.value||e)}}translateOptional(e){if(!e.patterns||e.patterns.length===0)throw new Ie("OPTIONAL pattern must have patterns");return{type:"leftjoin",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns),expression:e.expression?this.translateExpression(e.expression):void 0}}translateUnion(e){if(!e.patterns||e.patterns.length<2)throw new Ie("UNION pattern must have at least 2 patterns");let t=o(n=>n.patterns&&Array.isArray(n.patterns)?this.translateWhere(n.patterns):this.translateWhere([n]),"translateBranch"),i={type:"union",left:t(e.patterns[0]),right:t(e.patterns[1])};for(let n=2;n<e.patterns.length;n++)i={type:"union",left:i,right:t(e.patterns[n])};return i}translateMinus(e){if(!e.patterns||e.patterns.length===0)throw new Ie("MINUS pattern must have patterns");return{type:"minus",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns)}}translateValues(e){if(!e.values||!Array.isArray(e.values))throw new Ie("VALUES pattern must have values array");let t=new Set;for(let n of e.values)for(let s of Object.keys(n)){let a=s.startsWith("?")?s.slice(1):s;t.add(a)}let i=e.values.map(n=>this.translateValuesBinding(n));return{type:"values",variables:Array.from(t),bindings:i}}translateValuesBinding(e){let t={};for(let[i,n]of Object.entries(e)){let s=i.startsWith("?")?i.slice(1):i,a=n;if(a.termType==="NamedNode")t[s]={type:"iri",value:a.value};else if(a.termType==="Literal")t[s]={type:"literal",value:a.value,datatype:a.datatype?.value,language:a.language||void 0};else throw new Ie(`Unsupported VALUES term type: ${a.termType}`)}return t}translateBind(e,t){if(!e.variable||!e.expression)throw new Ie("BIND pattern must have variable and expression");return{type:"extend",variable:e.variable.value,expression:this.translateExpression(e.expression),input:t}}translateOrderComparator(e){return{expression:this.translateExpression(e.expression),descending:e.descending||!1}}translateSubquery(e){if(e.queryType!=="SELECT")throw new Ie(`Only SELECT subqueries are supported, got: ${e.queryType}`);return{type:"subquery",query:this.translateSelect(e)}}};Ns.AlgebraTranslator=ap});var Og=y(gu=>{"use strict";Object.defineProperty(gu,"__esModule",{value:!0});gu.AlgebraOptimizer=void 0;var op=class{static{o(this,"AlgebraOptimizer")}constructor(){this.stats=new Map}optimize(e){let t=e;return t=this.eliminateEmptyBGPInFilterJoin(t),t=this.filterPushDown(t),t=this.joinReordering(t),t}eliminateEmptyBGPInFilterJoin(e){if(e.type==="join"){if(e.left.type==="filter"){let t=e.left;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.right)}}if(e.right.type==="filter"){let t=e.right;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.left)}}return{type:"join",left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}}return e.type==="filter"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="leftjoin"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="union"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="minus"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="project"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="orderby"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="slice"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="distinct"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e}filterPushDown(e){return e.type==="filter"?this.pushDownFilter(e):e.type==="join"?{type:"join",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="leftjoin"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="union"?{type:"union",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="minus"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="project"?{...e,input:this.filterPushDown(e.input)}:e.type==="orderby"?{...e,input:this.filterPushDown(e.input)}:e.type==="slice"?{...e,input:this.filterPushDown(e.input)}:e.type==="distinct"?{...e,input:this.filterPushDown(e.input)}:e}pushDownFilter(e){let t=e.input;if(t.type==="join"){let i=this.getFilterVariables(e.expression),n=this.getOperationVariables(t.left),s=this.getOperationVariables(t.right),a=i.every(u=>n.has(u)),c=i.every(u=>s.has(u));return a&&!c?{type:"join",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:this.filterPushDown(t.right)}:c&&!a?{type:"join",left:this.filterPushDown(t.left),right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:{type:"join",left:this.filterPushDown(t.left),right:this.filterPushDown(t.right)}}}return t.type==="union"?{type:"union",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:this.filterPushDown(t)}}getFilterVariables(e){let t=[];if(e.type==="variable")t.push(e.name);else if(e.type==="comparison")t.push(...this.getFilterVariables(e.left)),t.push(...this.getFilterVariables(e.right));else if(e.type==="logical")for(let i of e.operands)t.push(...this.getFilterVariables(i));else if(e.type==="function")for(let i of e.args)t.push(...this.getFilterVariables(i));return Array.from(new Set(t))}getOperationVariables(e){let t=new Set;if(e.type==="bgp")for(let i of e.triples)i.subject.type==="variable"&&t.add(i.subject.value),i.predicate.type==="variable"&&t.add(i.predicate.value),i.object.type==="variable"&&t.add(i.object.value);else if(e.type==="join"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="filter")return this.getOperationVariables(e.input);if(e.type==="leftjoin"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else if(e.type==="union"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="minus")return this.getOperationVariables(e.left);if(e.type==="project")return new Set(e.variables)}}return t}joinReordering(e){return e.type==="join"?this.reorderJoin(e):e.type==="filter"?{...e,input:this.joinReordering(e.input)}:e.type==="leftjoin"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="union"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="minus"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="project"?{...e,input:this.joinReordering(e.input)}:e.type==="orderby"?{...e,input:this.joinReordering(e.input)}:e.type==="slice"?{...e,input:this.joinReordering(e.input)}:e.type==="distinct"?{...e,input:this.joinReordering(e.input)}:e}reorderJoin(e){let t=this.estimateCost(e.left);return this.estimateCost(e.right)<t?{type:"join",left:this.joinReordering(e.right),right:this.joinReordering(e.left)}:{type:"join",left:this.joinReordering(e.left),right:this.joinReordering(e.right)}}estimateCost(e){if(e.type==="bgp"){let t=e.triples.length*100;for(let i of e.triples)i.subject.type==="variable"&&(t+=10),i.predicate.type==="variable"&&(t+=20),i.object.type==="variable"&&(t+=10);return t}return e.type==="filter"?this.estimateCost(e.input)*.3:e.type==="join"?this.estimateCost(e.left)*this.estimateCost(e.right):e.type==="leftjoin"?this.estimateCost(e.left)+this.estimateCost(e.right)*.5:e.type==="union"?this.estimateCost(e.left)+this.estimateCost(e.right):e.type==="minus"?this.estimateCost(e.left)+this.estimateCost(e.right)*.3:100}setStatistics(e,t){this.stats.set(e,t)}getStatistics(e){return this.stats.get(e)}};gu.AlgebraOptimizer=op});var Cg=y(yu=>{"use strict";Object.defineProperty(yu,"__esModule",{value:!0});yu.AlgebraSerializer=void 0;var cp=class{static{o(this,"AlgebraSerializer")}toString(e,t=0){let i=" ".repeat(t);switch(e.type){case"bgp":return`${i}BGP [
|
|
103
103
|
${e.triples.map(f=>`${i} ${this.tripleToString(f)}`).join(`
|
|
104
104
|
`)}
|
|
105
105
|
${i}]`;case"filter":return`${i}Filter(
|
|
@@ -250,7 +250,7 @@ globstar while`,e,p,t,g,b),this.matchOne(e.slice(p),t.slice(g),i))return this.de
|
|
|
250
250
|
\u{1F4DD} Note: Actual command execution will be implemented in follow-up issues.`),console.log(" This PR establishes the infrastructure foundation."),process.exit(0)}catch(n){Pe.handle(n)}}getVaultRoot(){return this.context.pathResolver.getVaultRoot()}async executeStart(e){return this.statusExecutor.executeStart(e)}async executeComplete(e){return this.statusExecutor.executeComplete(e)}async executeTrash(e){return this.statusExecutor.executeTrash(e)}async executeArchive(e){return this.statusExecutor.executeArchive(e)}async executeMoveToBacklog(e){return this.statusExecutor.executeMoveToBacklog(e)}async executeMoveToAnalysis(e){return this.statusExecutor.executeMoveToAnalysis(e)}async executeMoveToToDo(e){return this.statusExecutor.executeMoveToToDo(e)}async executeCreateTask(e,t,i={}){return this.creationExecutor.executeCreateTask(e,t,i)}async executeCreateMeeting(e,t,i={}){return this.creationExecutor.executeCreateMeeting(e,t,i)}async executeCreateProject(e,t,i={}){return this.creationExecutor.executeCreateProject(e,t,i)}async executeCreateArea(e,t,i={}){return this.creationExecutor.executeCreateArea(e,t,i)}async executeRenameToUid(e){return this.propertyExecutor.executeRenameToUid(e)}async executeUpdateLabel(e,t){return this.propertyExecutor.executeUpdateLabel(e,t)}async executeSchedule(e,t){return this.propertyExecutor.executeSchedule(e,t)}async executeSetDeadline(e,t){return this.propertyExecutor.executeSetDeadline(e,t)}};function Ut(r,e,t,i,n){if(r==="json"){let s={command:e,filepath:t,action:i,...n&&{changes:n}},a=Vt.success(s);console.log(JSON.stringify(a,null,2))}else console.log(`\u2705 ${i}`)}o(Ut,"outputResult");function cs(r,e,t,i){let n=new st(`--${e} option is required for ${t} command`,i,{command:t,missingOption:e});Pe.handle(n)}o(cs,"handleMissingOption");function fS(){return new pi("command").description("Execute plugin command on single asset").argument("<command-name>","Command to execute (rename-to-uid, start, complete, schedule, set-deadline, etc.)").argument("<filepath>","Path to asset file (relative to vault root or absolute)").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--label <value>","Asset label (required for update-label and creation commands)").option("--prototype <uid>","Prototype UID for inheritance (creation commands)").option("--area <uid>","Area UID for effort linkage (creation commands)").option("--parent <uid>","Parent UID for effort linkage (creation commands)").option("--date <value>","Date in YYYY-MM-DD format (required for schedule and set-deadline commands)").option("--dry-run","Preview changes without modifying files").option("--format <type>","Output format: text|json (default: text)","text").action(async(r,e,t)=>{let i=t.format||"text";Pe.setFormat(i);try{let n=(0,lS.resolve)(t.vault),s=new Pl(n,t.dryRun);switch(r){case"rename-to-uid":await s.executeRenameToUid(e),Ut(i,r,e,"Renamed file to UID-based name");break;case"update-label":t.label||cs(i,"label","update-label",'exocortex command update-label <filepath> --label "<value>"'),await s.executeUpdateLabel(e,t.label),Ut(i,r,e,`Updated label to "${t.label}"`,{label:t.label});break;case"start":await s.executeStart(e),Ut(i,r,e,"Started task");break;case"complete":await s.executeComplete(e),Ut(i,r,e,"Completed task");break;case"trash":await s.executeTrash(e),Ut(i,r,e,"Moved task to trash");break;case"archive":await s.executeArchive(e),Ut(i,r,e,"Archived task");break;case"move-to-backlog":await s.executeMoveToBacklog(e),Ut(i,r,e,"Moved task to backlog");break;case"move-to-analysis":await s.executeMoveToAnalysis(e),Ut(i,r,e,"Moved task to analysis");break;case"move-to-todo":await s.executeMoveToToDo(e),Ut(i,r,e,"Moved task to todo");break;case"create-task":t.label||cs(i,"label","create-task",'exocortex command create-task <filepath> --label "<value>"'),await s.executeCreateTask(e,t.label,{prototype:t.prototype,area:t.area,parent:t.parent}),Ut(i,r,e,`Created task "${t.label}"`,{label:t.label,prototype:t.prototype,area:t.area,parent:t.parent});break;case"create-meeting":t.label||cs(i,"label","create-meeting",'exocortex command create-meeting <filepath> --label "<value>"'),await s.executeCreateMeeting(e,t.label,{prototype:t.prototype,area:t.area,parent:t.parent}),Ut(i,r,e,`Created meeting "${t.label}"`,{label:t.label,prototype:t.prototype,area:t.area,parent:t.parent});break;case"create-project":t.label||cs(i,"label","create-project",'exocortex command create-project <filepath> --label "<value>"'),await s.executeCreateProject(e,t.label,{prototype:t.prototype,area:t.area,parent:t.parent}),Ut(i,r,e,`Created project "${t.label}"`,{label:t.label,prototype:t.prototype,area:t.area,parent:t.parent});break;case"create-area":t.label||cs(i,"label","create-area",'exocortex command create-area <filepath> --label "<value>"'),await s.executeCreateArea(e,t.label,{prototype:t.prototype,area:t.area,parent:t.parent}),Ut(i,r,e,`Created area "${t.label}"`,{label:t.label,prototype:t.prototype,area:t.area,parent:t.parent});break;case"schedule":t.date||cs(i,"date","schedule",'exocortex command schedule <filepath> --date "YYYY-MM-DD"'),await s.executeSchedule(e,t.date),Ut(i,r,e,`Scheduled task for ${t.date}`,{date:t.date});break;case"set-deadline":t.date||cs(i,"date","set-deadline",'exocortex command set-deadline <filepath> --date "YYYY-MM-DD"'),await s.executeSetDeadline(e,t.date),Ut(i,r,e,`Set deadline to ${t.date}`,{date:t.date});break;default:await s.execute(r,e,t),Ut(i,r,e,`Executed ${r}`);break}}catch(n){Pe.handle(n)}})}o(fS,"commandCommand");var dS=require("path");var Ji=Qe(require("fs")),Wm=Qe(require("path")),hS=require("events");var LP={watch:Ji.default.watch.bind(Ji.default),existsSync:Ji.default.existsSync.bind(Ji.default),statSync:Ji.default.statSync.bind(Ji.default),readFileSync:Ji.default.readFileSync.bind(Ji.default)},Il=class extends hS.EventEmitter{constructor(t,i={}){super();this.watcher=null;this.debounceTimers=new Map;this.isRunning=!1;this.vaultPath=Wm.default.resolve(t),this.fsAdapter=i.fsAdapter??LP,this.options={pattern:i.pattern??"**/*.md",assetType:i.assetType??"",debounceMs:i.debounceMs??100,recursive:i.recursive??!0}}static{o(this,"FileSystemWatcher")}start(){this.isRunning||(this.watcher=this.fsAdapter.watch(this.vaultPath,{recursive:this.options.recursive},(t,i)=>{i&&this.handleFileEvent(t,i.toString())}),this.watcher.on("error",t=>{this.emit("error",t)}),this.isRunning=!0,this.emit("started"))}stop(){if(this.isRunning){for(let t of this.debounceTimers.values())clearTimeout(t);this.debounceTimers.clear(),this.watcher&&(this.watcher.close(),this.watcher=null),this.isRunning=!1,this.emit("stopped")}}isWatching(){return this.isRunning}handleFileEvent(t,i){let n=Wm.default.join(this.vaultPath,i),s=i;if(!this.matchesPattern(s))return;let a=this.debounceTimers.get(n);a&&clearTimeout(a);let c=setTimeout(()=>{this.debounceTimers.delete(n),this.processFileEvent(n,s)},this.options.debounceMs);this.debounceTimers.set(n,c)}processFileEvent(t,i){let n=this.fsAdapter.existsSync(t),s;if(!n)s="delete";else{let u=this.fsAdapter.statSync(t);s=Date.now()-u.birthtimeMs<1e3?"create":"modify"}let a;if(n&&t.endsWith(".md")&&(a=this.extractAssetType(t)),this.options.assetType&&a!==this.options.assetType)return;let c={type:s,path:t,relativePath:i,timestamp:new Date().toISOString(),assetType:a};this.emit("change",c)}matchesPattern(t){return this.options.pattern?Rt(t,this.options.pattern):!0}extractAssetType(t){try{let n=this.fsAdapter.readFileSync(t,"utf-8").match(/^---\n([\s\S]*?)\n---/);if(!n)return;let a=n[1].match(/exo__Instance_class:\s*(?:\[?"?\[\[([^\]]+)\]\]"?\]?|"?\[\[([^\]]+)\]\]"?)/);return a?a[1]||a[2]:void 0}catch{return}}};var Gm=Qe(require("fs"));function pS(){return new pi("watch").description("Watch vault for file changes and emit NDJSON events").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--pattern <glob>","Glob pattern to filter files (e.g., '*.md', 'tasks/**')").option("--asset-type <type>","Filter by asset type (e.g., 'ems__Task', 'ems__Project')").option("--debounce <ms>","Debounce interval in milliseconds","100").action(async r=>{Pe.setFormat("json");try{let e=(0,dS.resolve)(r.vault);if(!Gm.default.existsSync(e))throw new ns(e);if(!Gm.default.statSync(e).isDirectory())throw new st(`Vault path is not a directory: ${e}`,"Provide a path to a directory, not a file",{vaultPath:e});let t=parseInt(r.debounce?.toString()??"100",10);if(isNaN(t)||t<0)throw new st("--debounce must be a non-negative integer","Use a positive integer value for debounce",{debounce:r.debounce});let i=new Il(e,{pattern:r.pattern,assetType:r.assetType,debounceMs:t});i.on("change",s=>{console.log(JSON.stringify(s))}),i.on("error",s=>{let a=Vt.error("INTERNAL_OPERATION_FAILED",s.message,5,{recovery:{message:"Check file permissions and vault access",suggestion:"Ensure the vault directory is accessible"}});console.log(JSON.stringify(a))});let n=o(()=>{i.stop(),process.exit(0)},"shutdown");process.on("SIGINT",n),process.on("SIGTERM",n),console.error(`Watching vault: ${e}`),r.pattern&&console.error(` Pattern filter: ${r.pattern}`),r.assetType&&console.error(` Asset type filter: ${r.assetType}`),console.error(` Debounce: ${t}ms`),console.error("Press Ctrl+C to stop"),i.start()}catch(e){Pe.handle(e)}})}o(pS,"watchCommand");var zm=require("path"),Km=Qe(zs());var ha=Qe(dn());var oi=Qe(zs()),Hm=Qe(require("crypto"));var Dl=class{constructor(){this.backups=new Map;this.fileHashes=new Map}static{o(this,"TransactionManager")}async begin(e){if(!oi.default.existsSync(e))throw new Error(`Cannot backup non-existent file: ${e}`);let t=await oi.default.readFile(e,"utf-8"),i=Hm.default.createHash("sha256").update(t).digest("hex");this.fileHashes.set(e,i);let n=`${e}.backup.${Date.now()}`;await oi.default.writeFile(n,t,"utf-8"),this.backups.set(e,n)}async verify(e){let t=this.fileHashes.get(e);if(!t)return!0;if(!oi.default.existsSync(e))return!1;let i=await oi.default.readFile(e,"utf-8");return Hm.default.createHash("sha256").update(i).digest("hex")===t}async commit(){for(let e of this.backups.values())oi.default.existsSync(e)&&await oi.default.remove(e);this.backups.clear(),this.fileHashes.clear()}async rollback(){for(let[e,t]of this.backups.entries())oi.default.existsSync(t)&&(await oi.default.copy(t,e,{overwrite:!0}),await oi.default.remove(t));this.backups.clear(),this.fileHashes.clear()}getTrackedFiles(){return Array.from(this.backups.keys())}};var Io=class{static{o(this,"BatchExecutor")}constructor(e,t=!1){this.pathResolver=new la(e),this.fsAdapter=new ua(e),this.frontmatterService=new ha.FrontmatterService,this.transactionManager=new Dl,this.dryRun=t}async executeBatch(e,t=!1){let i=Date.now(),n=[],s=0,a=0,c=!1;if(e.length===0)return{success:!0,total:0,succeeded:0,failed:0,results:[],durationMs:Date.now()-i,atomic:t};if(t&&!this.dryRun)try{await this.backupAllFiles(e)}catch(f){return{success:!1,total:e.length,succeeded:0,failed:e.length,results:e.map(l=>({success:!1,command:l.command,filepath:l.filepath,error:`Backup failed: ${f.message}`})),durationMs:Date.now()-i,atomic:t}}for(let f of e){let l=await this.executeSingleOperation(f);if(n.push(l),l.success)s++;else if(a++,t&&!this.dryRun){await this.transactionManager.rollback(),c=!0;let h=n.length;for(let p=h;p<e.length;p++)n.push({success:!1,command:e[p].command,filepath:e[p].filepath,error:"Not executed due to atomic rollback"}),a++;return{success:!1,total:e.length,succeeded:0,failed:e.length,results:n,durationMs:Date.now()-i,atomic:t,rolledBack:!0}}}return t&&!this.dryRun&&!c&&await this.transactionManager.commit(),{success:a===0,total:e.length,succeeded:s,failed:a,results:n,durationMs:Date.now()-i,atomic:t,...t&&{rolledBack:c}}}static parseInput(e){try{let t=JSON.parse(e);if(!Array.isArray(t))throw new st("Batch input must be a JSON array of operations",`exo batch --input '[{"command":"start","filepath":"task.md"}]'`);for(let i of t){if(!i.command||typeof i.command!="string")throw new st('Each operation must have a "command" string property','{"command":"start","filepath":"task.md"}');if(!i.filepath||typeof i.filepath!="string")throw new st('Each operation must have a "filepath" string property','{"command":"start","filepath":"task.md"}')}return t}catch(t){throw t instanceof st?t:new st(`Failed to parse batch input: ${t.message}`,`exo batch --input '[{"command":"start","filepath":"task.md"}]'`)}}async backupAllFiles(e){let t=new Set;for(let i of e){let n=this.pathResolver.resolve(i.filepath);t.add(n)}for(let i of t)await this.transactionManager.begin(i)}async executeSingleOperation(e){try{let t=this.pathResolver.resolve(e.filepath);this.pathResolver.validate(t);let i=t.replace(this.pathResolver.getVaultRoot()+"/",""),n=await this.fsAdapter.readFile(i);if(this.dryRun)return{success:!0,command:e.command,filepath:e.filepath,action:`Would execute ${e.command} (dry-run)`};switch(e.command){case"start":return await this.executeStart(i,e);case"complete":return await this.executeComplete(i,e);case"trash":return await this.executeTrash(i,e);case"archive":return await this.executeArchive(i,e);case"move-to-backlog":return await this.executeStatusUpdate(i,e,"ems__EffortStatusBacklog","Moved to backlog");case"move-to-analysis":return await this.executeStatusUpdate(i,e,"ems__EffortStatusAnalysis","Moved to analysis");case"move-to-todo":return await this.executeStatusUpdate(i,e,"ems__EffortStatusToDo","Moved to todo");case"update-label":return await this.executeUpdateLabel(i,e);case"schedule":return await this.executeSchedule(i,e);case"set-deadline":return await this.executeSetDeadline(i,e);default:return{success:!1,command:e.command,filepath:e.filepath,error:`Unknown command: ${e.command}`}}}catch(t){return{success:!1,command:e.command,filepath:e.filepath,error:t.message}}}getCurrentTimestamp(){return ha.DateFormatter.toLocalTimestamp(new Date)}async executeStart(e,t){let i=await this.fsAdapter.readFile(e),n=this.getCurrentTimestamp(),s=this.frontmatterService.updateProperty(i,"ems__Effort_status",'"[[ems__EffortStatusDoing]]"');return s=this.frontmatterService.updateProperty(s,"ems__Effort_startTimestamp",n),await this.fsAdapter.updateFile(e,s),{success:!0,command:t.command,filepath:t.filepath,action:"Started task",changes:{status:"Doing",startTimestamp:n}}}async executeComplete(e,t){let i=await this.fsAdapter.readFile(e),n=this.getCurrentTimestamp(),s=this.frontmatterService.updateProperty(i,"ems__Effort_status",'"[[ems__EffortStatusDone]]"');return s=this.frontmatterService.updateProperty(s,"ems__Effort_endTimestamp",n),s=this.frontmatterService.updateProperty(s,"ems__Effort_resolutionTimestamp",n),await this.fsAdapter.updateFile(e,s),{success:!0,command:t.command,filepath:t.filepath,action:"Completed task",changes:{status:"Done",endTimestamp:n,resolutionTimestamp:n}}}async executeTrash(e,t){let i=await this.fsAdapter.readFile(e),n=this.getCurrentTimestamp(),s=this.frontmatterService.updateProperty(i,"ems__Effort_status",'"[[ems__EffortStatusTrashed]]"');return s=this.frontmatterService.updateProperty(s,"ems__Effort_resolutionTimestamp",n),await this.fsAdapter.updateFile(e,s),{success:!0,command:t.command,filepath:t.filepath,action:"Trashed task",changes:{status:"Trashed",resolutionTimestamp:n}}}async executeArchive(e,t){let i=await this.fsAdapter.readFile(e),n=this.frontmatterService.updateProperty(i,"archived","true");return n=this.frontmatterService.removeProperty(n,"aliases"),await this.fsAdapter.updateFile(e,n),{success:!0,command:t.command,filepath:t.filepath,action:"Archived task",changes:{archived:!0,aliasesRemoved:!0}}}async executeStatusUpdate(e,t,i,n){let s=await this.fsAdapter.readFile(e),a=this.frontmatterService.updateProperty(s,"ems__Effort_status",`"[[${i}]]"`);return await this.fsAdapter.updateFile(e,a),{success:!0,command:t.command,filepath:t.filepath,action:n,changes:{status:i.replace("ems__EffortStatus","")}}}async executeUpdateLabel(e,t){let i=t.options?.label;if(!i||i.trim()==="")return{success:!1,command:t.command,filepath:t.filepath,error:'Missing required option: "label"'};let n=i.trim(),s=await this.fsAdapter.readFile(e),a=this.frontmatterService.updateProperty(s,"exo__Asset_label",`"${n}"`);return await this.fsAdapter.updateFile(e,a),{success:!0,command:t.command,filepath:t.filepath,action:`Updated label to "${n}"`,changes:{label:n}}}async executeSchedule(e,t){let i=t.options?.date;if(!i)return{success:!1,command:t.command,filepath:t.filepath,error:'Missing required option: "date"'};if(!/^\d{4}-\d{2}-\d{2}$/.test(i))return{success:!1,command:t.command,filepath:t.filepath,error:`Invalid date format: ${i}. Expected YYYY-MM-DD`};let n=await this.fsAdapter.readFile(e),s=ha.DateFormatter.toTimestampAtStartOfDay(i),a=this.frontmatterService.updateProperty(n,"ems__Effort_scheduledTimestamp",s);return await this.fsAdapter.updateFile(e,a),{success:!0,command:t.command,filepath:t.filepath,action:`Scheduled for ${i}`,changes:{scheduledTimestamp:s}}}async executeSetDeadline(e,t){let i=t.options?.date;if(!i)return{success:!1,command:t.command,filepath:t.filepath,error:'Missing required option: "date"'};if(!/^\d{4}-\d{2}-\d{2}$/.test(i))return{success:!1,command:t.command,filepath:t.filepath,error:`Invalid date format: ${i}. Expected YYYY-MM-DD`};let n=await this.fsAdapter.readFile(e),s=ha.DateFormatter.toTimestampAtStartOfDay(i),a=this.frontmatterService.updateProperty(n,"ems__Effort_deadlineTimestamp",s);return await this.fsAdapter.updateFile(e,a),{success:!0,command:t.command,filepath:t.filepath,action:`Set deadline to ${i}`,changes:{deadlineTimestamp:s}}}};function VP(r,e){if(r==="json"){let t=Vt.success(e,{durationMs:e.durationMs,itemCount:e.total});console.log(JSON.stringify(t,null,2))}else{if(console.log(`
|
|
251
251
|
\u{1F4E6} Batch Execution ${e.success?"Complete":"Failed"}`),console.log(` Total: ${e.total} operations`),console.log(` \u2705 Succeeded: ${e.succeeded}`),console.log(` \u274C Failed: ${e.failed}`),console.log(` \u23F1\uFE0F Duration: ${e.durationMs}ms`),e.atomic&&console.log(` \u{1F512} Atomic mode: ${e.rolledBack?"Rolled back":"Committed"}`),e.failed>0){console.log(`
|
|
252
252
|
\u{1F4CB} Failed Operations:`);for(let t of e.results.filter(i=>!i.success))console.log(` \u274C ${t.command} ${t.filepath}: ${t.error}`)}if(e.succeeded>0&&r==="text"){console.log(`
|
|
253
|
-
\u{1F4CB} Successful Operations:`);for(let t of e.results.filter(i=>i.success))console.log(` \u2705 ${t.command} ${t.filepath}: ${t.action}`)}}}o(VP,"outputResult");function mS(){return new pi("batch").description("Execute multiple operations in a single CLI invocation").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--input <json>","JSON array of operations to execute").option("--file <path>","Path to JSON file containing operations").option("--atomic","All-or-nothing execution (rollback on any failure)").option("--dry-run","Preview changes without modifying files").option("--format <type>","Output format: text|json (default: text)","text").action(async r=>{let e=r.format||"text";Pe.setFormat(e);try{let t=(0,zm.resolve)(r.vault),i;if(r.input)i=r.input;else if(r.file){let c=(0,zm.resolve)(r.file);if(!Km.default.existsSync(c))throw new st(`Batch file not found: ${c}`,"exocortex batch --file operations.json");i=await Km.default.readFile(c,"utf-8")}else throw new st("Either --input or --file option is required",`exocortex batch --input '[{"command":"start","filepath":"task.md"}]' or exocortex batch --file operations.json`);let n=Io.parseInput(i);if(n.length===0)throw new st("Batch input contains no operations",`exocortex batch --input '[{"command":"start","filepath":"task.md"}]'`);let a=await new Io(t,r.dryRun).executeBatch(n,r.atomic);VP(e,a),process.exit(a.success?0:5)}catch(t){Pe.handle(t)}})}o(mS,"batchCommand");var da=new pi;da.name("exocortex").description("CLI tool for Exocortex knowledge management system").version("13.
|
|
253
|
+
\u{1F4CB} Successful Operations:`);for(let t of e.results.filter(i=>i.success))console.log(` \u2705 ${t.command} ${t.filepath}: ${t.action}`)}}}o(VP,"outputResult");function mS(){return new pi("batch").description("Execute multiple operations in a single CLI invocation").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--input <json>","JSON array of operations to execute").option("--file <path>","Path to JSON file containing operations").option("--atomic","All-or-nothing execution (rollback on any failure)").option("--dry-run","Preview changes without modifying files").option("--format <type>","Output format: text|json (default: text)","text").action(async r=>{let e=r.format||"text";Pe.setFormat(e);try{let t=(0,zm.resolve)(r.vault),i;if(r.input)i=r.input;else if(r.file){let c=(0,zm.resolve)(r.file);if(!Km.default.existsSync(c))throw new st(`Batch file not found: ${c}`,"exocortex batch --file operations.json");i=await Km.default.readFile(c,"utf-8")}else throw new st("Either --input or --file option is required",`exocortex batch --input '[{"command":"start","filepath":"task.md"}]' or exocortex batch --file operations.json`);let n=Io.parseInput(i);if(n.length===0)throw new st("Batch input contains no operations",`exocortex batch --input '[{"command":"start","filepath":"task.md"}]'`);let a=await new Io(t,r.dryRun).executeBatch(n,r.atomic);VP(e,a),process.exit(a.success?0:5)}catch(t){Pe.handle(t)}})}o(mS,"batchCommand");var da=new pi;da.name("exocortex").description("CLI tool for Exocortex knowledge management system").version("13.107.1");da.command("sparql").description("SPARQL query execution").addCommand(nv());da.addCommand(fS());da.addCommand(pS());da.addCommand(mS());da.parse();
|
|
254
254
|
/*! Bundled license information:
|
|
255
255
|
|
|
256
256
|
reflect-metadata/Reflect.js:
|