claude-maestro 0.1.16

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.
Files changed (125) hide show
  1. package/README.md +130 -0
  2. package/bin/maestro.mjs +45 -0
  3. package/out/main/index.js +5293 -0
  4. package/out/preload/index.js +130 -0
  5. package/out/renderer/assets/apl-fqmucPXA.js +140 -0
  6. package/out/renderer/assets/asciiarmor-DucZyvP0.js +56 -0
  7. package/out/renderer/assets/asn1-BnOEsgAm.js +144 -0
  8. package/out/renderer/assets/asterisk-QAlztEwS.js +345 -0
  9. package/out/renderer/assets/brainfuck-DZVCuF_t.js +53 -0
  10. package/out/renderer/assets/clike-xqXYL6ge.js +805 -0
  11. package/out/renderer/assets/clojure-BhXMqnxz.js +849 -0
  12. package/out/renderer/assets/cmake-BGaNd9E7.js +71 -0
  13. package/out/renderer/assets/cobol-4yqQntpt.js +120 -0
  14. package/out/renderer/assets/coffeescript-D2dXvhEc.js +308 -0
  15. package/out/renderer/assets/commonlisp-CF_VNHQR.js +130 -0
  16. package/out/renderer/assets/crystal-DyuLTqLs.js +398 -0
  17. package/out/renderer/assets/css-c-jst79C.js +1783 -0
  18. package/out/renderer/assets/cypher-Dlu_3r4V.js +121 -0
  19. package/out/renderer/assets/d-UURgV0Ux.js +179 -0
  20. package/out/renderer/assets/diff-B_Bi2Crb.js +25 -0
  21. package/out/renderer/assets/dockerfile-Bvk733Ga.js +201 -0
  22. package/out/renderer/assets/dtd-Dy74G54E.js +114 -0
  23. package/out/renderer/assets/dylan-TSb-Nfix.js +314 -0
  24. package/out/renderer/assets/ebnf-4fKAGW3a.js +140 -0
  25. package/out/renderer/assets/ecl-B59qGGVg.js +178 -0
  26. package/out/renderer/assets/eiffel-Dze7nlu3.js +134 -0
  27. package/out/renderer/assets/elm-DG7jkhNZ.js +176 -0
  28. package/out/renderer/assets/erlang-BO6gOnGA.js +674 -0
  29. package/out/renderer/assets/factor-CMxFHDqz.js +65 -0
  30. package/out/renderer/assets/fcl-CDDUNjTj.js +141 -0
  31. package/out/renderer/assets/forth-B9D2JCeE.js +116 -0
  32. package/out/renderer/assets/fortran-CAG2BFbe.js +467 -0
  33. package/out/renderer/assets/gas-d3KEcW3x.js +294 -0
  34. package/out/renderer/assets/gherkin-DhZlEZiy.js +115 -0
  35. package/out/renderer/assets/groovy-CpwJiBl7.js +223 -0
  36. package/out/renderer/assets/haskell-ySd-OUo8.js +459 -0
  37. package/out/renderer/assets/haxe-7MlzfeYV.js +514 -0
  38. package/out/renderer/assets/http-BqypyemW.js +79 -0
  39. package/out/renderer/assets/idl-4HIGJlDI.js +985 -0
  40. package/out/renderer/assets/index-2SQReYbL.js +117 -0
  41. package/out/renderer/assets/index-B4G_DF7l.js +178 -0
  42. package/out/renderer/assets/index-BJ7HHtlW.css +4015 -0
  43. package/out/renderer/assets/index-BLk1t3tc.js +151 -0
  44. package/out/renderer/assets/index-BLtm0KYA.js +157 -0
  45. package/out/renderer/assets/index-BPgGZ4iY.js +82 -0
  46. package/out/renderer/assets/index-BQE9vCdv.js +332 -0
  47. package/out/renderer/assets/index-BYr39Do3.js +61 -0
  48. package/out/renderer/assets/index-Ba0sUbhl.js +47177 -0
  49. package/out/renderer/assets/index-BewSkGJT.js +1041 -0
  50. package/out/renderer/assets/index-BnId7J8H.js +1021 -0
  51. package/out/renderer/assets/index-Btn996gP.js +406 -0
  52. package/out/renderer/assets/index-C7i4WyfA.js +311 -0
  53. package/out/renderer/assets/index-CW9SAu99.js +385 -0
  54. package/out/renderer/assets/index-CXmk7jHk.js +291 -0
  55. package/out/renderer/assets/index-CyQp9UDR.js +82 -0
  56. package/out/renderer/assets/index-Da2gJ_Wd.js +704 -0
  57. package/out/renderer/assets/index-DkFO-IXC.js +2488 -0
  58. package/out/renderer/assets/index-DqrDpNqn.js +689 -0
  59. package/out/renderer/assets/index-Dw7p19YD.js +327 -0
  60. package/out/renderer/assets/index-QPm3UFYR.js +97 -0
  61. package/out/renderer/assets/index-RGiHNShF.js +1768 -0
  62. package/out/renderer/assets/index-RgZE5T_I.js +642 -0
  63. package/out/renderer/assets/index-t8kJBumF.js +312 -0
  64. package/out/renderer/assets/javascript-C_OHM9hj.js +994 -0
  65. package/out/renderer/assets/julia-Bs6JJhYG.js +407 -0
  66. package/out/renderer/assets/livescript-DmzgM3Yt.js +296 -0
  67. package/out/renderer/assets/lua-Cvg8VrAA.js +256 -0
  68. package/out/renderer/assets/mathematica-DNLOL9PQ.js +110 -0
  69. package/out/renderer/assets/mbox-Ga7d4MMN.js +117 -0
  70. package/out/renderer/assets/mirc-Dma3B8rS.js +107 -0
  71. package/out/renderer/assets/mllike-DHn7xckP.js +334 -0
  72. package/out/renderer/assets/modelica-0d55jYY0.js +147 -0
  73. package/out/renderer/assets/mscgen-DdqZYINH.js +135 -0
  74. package/out/renderer/assets/mumps-Btr8VblO.js +93 -0
  75. package/out/renderer/assets/nginx-DTDtBDVN.js +141 -0
  76. package/out/renderer/assets/nsis-3zG7tgur.js +62 -0
  77. package/out/renderer/assets/ntriples-CvgOYMpL.js +153 -0
  78. package/out/renderer/assets/octave-DYBj3-tl.js +200 -0
  79. package/out/renderer/assets/oz-R_e8WMIi.js +231 -0
  80. package/out/renderer/assets/pascal-GD8iposT.js +105 -0
  81. package/out/renderer/assets/perl-DL9mHpoi.js +1105 -0
  82. package/out/renderer/assets/pig-C_4T4YIV.js +101 -0
  83. package/out/renderer/assets/powershell-B0suO7Vd.js +328 -0
  84. package/out/renderer/assets/properties-BR-vP1aU.js +58 -0
  85. package/out/renderer/assets/protobuf-BxgpyhoW.js +77 -0
  86. package/out/renderer/assets/pug-CTXt1f8z.js +405 -0
  87. package/out/renderer/assets/puppet-Bdao66PW.js +137 -0
  88. package/out/renderer/assets/python-CvWbmiX4.js +427 -0
  89. package/out/renderer/assets/q-CrbCVq4a.js +131 -0
  90. package/out/renderer/assets/r-V7nswm59.js +170 -0
  91. package/out/renderer/assets/rpm-C-DLY-If.js +109 -0
  92. package/out/renderer/assets/ruby-JDKLJNK0.js +330 -0
  93. package/out/renderer/assets/sas-D2UG-yhZ.js +207 -0
  94. package/out/renderer/assets/scheme-BKzrkGJD.js +222 -0
  95. package/out/renderer/assets/shell-BlsXDxCn.js +222 -0
  96. package/out/renderer/assets/sieve-CjwBwOY5.js +135 -0
  97. package/out/renderer/assets/simple-mode-DMneyfDu.js +130 -0
  98. package/out/renderer/assets/smalltalk-BOIGQuhN.js +121 -0
  99. package/out/renderer/assets/solr-CwD7U71z.js +69 -0
  100. package/out/renderer/assets/sparql-DYskk2vE.js +249 -0
  101. package/out/renderer/assets/spreadsheet-Bgtt3oLP.js +87 -0
  102. package/out/renderer/assets/sql-BSrOzCRI.js +354 -0
  103. package/out/renderer/assets/stex-B6LNC55o.js +231 -0
  104. package/out/renderer/assets/stylus-BkS-boTH.js +565 -0
  105. package/out/renderer/assets/swift-FRZi1uvB.js +291 -0
  106. package/out/renderer/assets/tcl-CUcaCdmq.js +114 -0
  107. package/out/renderer/assets/textile-BnFpjsrl.js +414 -0
  108. package/out/renderer/assets/tiddlywiki-CjprD-Qp.js +218 -0
  109. package/out/renderer/assets/tiki-DK9DOeWn.js +268 -0
  110. package/out/renderer/assets/toml-BOuWGMcf.js +76 -0
  111. package/out/renderer/assets/troff-E1bJ0PPL.js +61 -0
  112. package/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +133 -0
  113. package/out/renderer/assets/ttcn-tKd4HLu4.js +192 -0
  114. package/out/renderer/assets/turtle-Dq7-1WAf.js +124 -0
  115. package/out/renderer/assets/vb-Dp90gtsv.js +196 -0
  116. package/out/renderer/assets/vbscript-CI6_mxxU.js +479 -0
  117. package/out/renderer/assets/velocity-BwIZK1TH.js +149 -0
  118. package/out/renderer/assets/verilog-DDCYnHN8.js +430 -0
  119. package/out/renderer/assets/vhdl-DCkMIyT9.js +158 -0
  120. package/out/renderer/assets/webidl-BTLTThCm.js +204 -0
  121. package/out/renderer/assets/xquery-BrBUuxMR.js +525 -0
  122. package/out/renderer/assets/yacas-b5lAVEIl.js +130 -0
  123. package/out/renderer/assets/z80-BZV19vqv.js +93 -0
  124. package/out/renderer/index.html +16 -0
  125. package/package.json +109 -0
@@ -0,0 +1,135 @@
1
+ function words(str) {
2
+ var obj = {}, words2 = str.split(" ");
3
+ for (var i = 0; i < words2.length; ++i) obj[words2[i]] = true;
4
+ return obj;
5
+ }
6
+ var keywords = words("if elsif else stop require");
7
+ var atoms = words("true false not");
8
+ function tokenBase(stream, state) {
9
+ var ch = stream.next();
10
+ if (ch == "/" && stream.eat("*")) {
11
+ state.tokenize = tokenCComment;
12
+ return tokenCComment(stream, state);
13
+ }
14
+ if (ch === "#") {
15
+ stream.skipToEnd();
16
+ return "comment";
17
+ }
18
+ if (ch == '"') {
19
+ state.tokenize = tokenString(ch);
20
+ return state.tokenize(stream, state);
21
+ }
22
+ if (ch == "(") {
23
+ state._indent.push("(");
24
+ state._indent.push("{");
25
+ return null;
26
+ }
27
+ if (ch === "{") {
28
+ state._indent.push("{");
29
+ return null;
30
+ }
31
+ if (ch == ")") {
32
+ state._indent.pop();
33
+ state._indent.pop();
34
+ }
35
+ if (ch === "}") {
36
+ state._indent.pop();
37
+ return null;
38
+ }
39
+ if (ch == ",")
40
+ return null;
41
+ if (ch == ";")
42
+ return null;
43
+ if (/[{}\(\),;]/.test(ch))
44
+ return null;
45
+ if (/\d/.test(ch)) {
46
+ stream.eatWhile(/[\d]/);
47
+ stream.eat(/[KkMmGg]/);
48
+ return "number";
49
+ }
50
+ if (ch == ":") {
51
+ stream.eatWhile(/[a-zA-Z_]/);
52
+ stream.eatWhile(/[a-zA-Z0-9_]/);
53
+ return "operator";
54
+ }
55
+ stream.eatWhile(/\w/);
56
+ var cur = stream.current();
57
+ if (cur == "text" && stream.eat(":")) {
58
+ state.tokenize = tokenMultiLineString;
59
+ return "string";
60
+ }
61
+ if (keywords.propertyIsEnumerable(cur))
62
+ return "keyword";
63
+ if (atoms.propertyIsEnumerable(cur))
64
+ return "atom";
65
+ return null;
66
+ }
67
+ function tokenMultiLineString(stream, state) {
68
+ state._multiLineString = true;
69
+ if (!stream.sol()) {
70
+ stream.eatSpace();
71
+ if (stream.peek() == "#") {
72
+ stream.skipToEnd();
73
+ return "comment";
74
+ }
75
+ stream.skipToEnd();
76
+ return "string";
77
+ }
78
+ if (stream.next() == "." && stream.eol()) {
79
+ state._multiLineString = false;
80
+ state.tokenize = tokenBase;
81
+ }
82
+ return "string";
83
+ }
84
+ function tokenCComment(stream, state) {
85
+ var maybeEnd = false, ch;
86
+ while ((ch = stream.next()) != null) {
87
+ if (maybeEnd && ch == "/") {
88
+ state.tokenize = tokenBase;
89
+ break;
90
+ }
91
+ maybeEnd = ch == "*";
92
+ }
93
+ return "comment";
94
+ }
95
+ function tokenString(quote) {
96
+ return function(stream, state) {
97
+ var escaped = false, ch;
98
+ while ((ch = stream.next()) != null) {
99
+ if (ch == quote && !escaped)
100
+ break;
101
+ escaped = !escaped && ch == "\\";
102
+ }
103
+ if (!escaped) state.tokenize = tokenBase;
104
+ return "string";
105
+ };
106
+ }
107
+ const sieve = {
108
+ name: "sieve",
109
+ startState: function(base) {
110
+ return {
111
+ tokenize: tokenBase,
112
+ baseIndent: base || 0,
113
+ _indent: []
114
+ };
115
+ },
116
+ token: function(stream, state) {
117
+ if (stream.eatSpace())
118
+ return null;
119
+ return (state.tokenize || tokenBase)(stream, state);
120
+ },
121
+ indent: function(state, _textAfter, cx) {
122
+ var length = state._indent.length;
123
+ if (_textAfter && _textAfter[0] == "}")
124
+ length--;
125
+ if (length < 0)
126
+ length = 0;
127
+ return length * cx.unit;
128
+ },
129
+ languageData: {
130
+ indentOnInput: /^\s*\}$/
131
+ }
132
+ };
133
+ export {
134
+ sieve
135
+ };
@@ -0,0 +1,130 @@
1
+ function simpleMode(states) {
2
+ ensureState(states, "start");
3
+ var states_ = {}, meta = states.languageData || {}, hasIndentation = false;
4
+ for (var state in states) if (state != meta && states.hasOwnProperty(state)) {
5
+ var list = states_[state] = [], orig = states[state];
6
+ for (var i = 0; i < orig.length; i++) {
7
+ var data = orig[i];
8
+ list.push(new Rule(data, states));
9
+ if (data.indent || data.dedent) hasIndentation = true;
10
+ }
11
+ }
12
+ return {
13
+ name: meta.name,
14
+ startState: function() {
15
+ return { state: "start", pending: null, indent: hasIndentation ? [] : null };
16
+ },
17
+ copyState: function(state2) {
18
+ var s = { state: state2.state, pending: state2.pending, indent: state2.indent && state2.indent.slice(0) };
19
+ if (state2.stack)
20
+ s.stack = state2.stack.slice(0);
21
+ return s;
22
+ },
23
+ token: tokenFunction(states_),
24
+ indent: indentFunction(states_, meta),
25
+ mergeTokens: meta.mergeTokens,
26
+ languageData: meta
27
+ };
28
+ }
29
+ function ensureState(states, name) {
30
+ if (!states.hasOwnProperty(name))
31
+ throw new Error("Undefined state " + name + " in simple mode");
32
+ }
33
+ function toRegex(val, caret) {
34
+ if (!val) return /(?:)/;
35
+ var flags = "";
36
+ if (val instanceof RegExp) {
37
+ if (val.ignoreCase) flags = "i";
38
+ if (val.unicode) flags += "u";
39
+ val = val.source;
40
+ } else {
41
+ val = String(val);
42
+ }
43
+ return new RegExp("^(?:" + val + ")", flags);
44
+ }
45
+ function asToken(val) {
46
+ if (!val) return null;
47
+ if (val.apply) return val;
48
+ if (typeof val == "string") return val.replace(/\./g, " ");
49
+ var result = [];
50
+ for (var i = 0; i < val.length; i++)
51
+ result.push(val[i] && val[i].replace(/\./g, " "));
52
+ return result;
53
+ }
54
+ function Rule(data, states) {
55
+ if (data.next || data.push) ensureState(states, data.next || data.push);
56
+ this.regex = toRegex(data.regex);
57
+ this.token = asToken(data.token);
58
+ this.data = data;
59
+ }
60
+ function tokenFunction(states) {
61
+ return function(stream, state) {
62
+ if (state.pending) {
63
+ var pend = state.pending.shift();
64
+ if (state.pending.length == 0) state.pending = null;
65
+ stream.pos += pend.text.length;
66
+ return pend.token;
67
+ }
68
+ var curState = states[state.state];
69
+ for (var i = 0; i < curState.length; i++) {
70
+ var rule = curState[i];
71
+ var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);
72
+ if (matches) {
73
+ if (rule.data.next) {
74
+ state.state = rule.data.next;
75
+ } else if (rule.data.push) {
76
+ (state.stack || (state.stack = [])).push(state.state);
77
+ state.state = rule.data.push;
78
+ } else if (rule.data.pop && state.stack && state.stack.length) {
79
+ state.state = state.stack.pop();
80
+ }
81
+ if (rule.data.indent)
82
+ state.indent.push(stream.indentation() + stream.indentUnit);
83
+ if (rule.data.dedent)
84
+ state.indent.pop();
85
+ var token = rule.token;
86
+ if (token && token.apply) token = token(matches);
87
+ if (matches.length > 2 && rule.token && typeof rule.token != "string") {
88
+ state.pending = [];
89
+ for (var j = 2; j < matches.length; j++)
90
+ if (matches[j])
91
+ state.pending.push({ text: matches[j], token: rule.token[j - 1] });
92
+ stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));
93
+ return token[0];
94
+ } else if (token && token.join) {
95
+ return token[0];
96
+ } else {
97
+ return token;
98
+ }
99
+ }
100
+ }
101
+ stream.next();
102
+ return null;
103
+ };
104
+ }
105
+ function indentFunction(states, meta) {
106
+ return function(state, textAfter) {
107
+ if (state.indent == null || meta.dontIndentStates && meta.dontIndentStates.indexOf(state.state) > -1)
108
+ return null;
109
+ var pos = state.indent.length - 1, rules = states[state.state];
110
+ scan: for (; ; ) {
111
+ for (var i = 0; i < rules.length; i++) {
112
+ var rule = rules[i];
113
+ if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {
114
+ var m = rule.regex.exec(textAfter);
115
+ if (m && m[0]) {
116
+ pos--;
117
+ if (rule.next || rule.push) rules = states[rule.next || rule.push];
118
+ textAfter = textAfter.slice(m[0].length);
119
+ continue scan;
120
+ }
121
+ }
122
+ }
123
+ break;
124
+ }
125
+ return pos < 0 ? 0 : state.indent[pos];
126
+ };
127
+ }
128
+ export {
129
+ simpleMode as s
130
+ };
@@ -0,0 +1,121 @@
1
+ var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/;
2
+ var keywords = /true|false|nil|self|super|thisContext/;
3
+ var Context = function(tokenizer, parent) {
4
+ this.next = tokenizer;
5
+ this.parent = parent;
6
+ };
7
+ var Token = function(name, context, eos) {
8
+ this.name = name;
9
+ this.context = context;
10
+ this.eos = eos;
11
+ };
12
+ var State = function() {
13
+ this.context = new Context(next, null);
14
+ this.expectVariable = true;
15
+ this.indentation = 0;
16
+ this.userIndentationDelta = 0;
17
+ };
18
+ State.prototype.userIndent = function(indentation, indentUnit) {
19
+ this.userIndentationDelta = indentation > 0 ? indentation / indentUnit - this.indentation : 0;
20
+ };
21
+ var next = function(stream, context, state) {
22
+ var token = new Token(null, context, false);
23
+ var aChar = stream.next();
24
+ if (aChar === '"') {
25
+ token = nextComment(stream, new Context(nextComment, context));
26
+ } else if (aChar === "'") {
27
+ token = nextString(stream, new Context(nextString, context));
28
+ } else if (aChar === "#") {
29
+ if (stream.peek() === "'") {
30
+ stream.next();
31
+ token = nextSymbol(stream, new Context(nextSymbol, context));
32
+ } else {
33
+ if (stream.eatWhile(/[^\s.{}\[\]()]/))
34
+ token.name = "string.special";
35
+ else
36
+ token.name = "meta";
37
+ }
38
+ } else if (aChar === "$") {
39
+ if (stream.next() === "<") {
40
+ stream.eatWhile(/[^\s>]/);
41
+ stream.next();
42
+ }
43
+ token.name = "string.special";
44
+ } else if (aChar === "|" && state.expectVariable) {
45
+ token.context = new Context(nextTemporaries, context);
46
+ } else if (/[\[\]{}()]/.test(aChar)) {
47
+ token.name = "bracket";
48
+ token.eos = /[\[{(]/.test(aChar);
49
+ if (aChar === "[") {
50
+ state.indentation++;
51
+ } else if (aChar === "]") {
52
+ state.indentation = Math.max(0, state.indentation - 1);
53
+ }
54
+ } else if (specialChars.test(aChar)) {
55
+ stream.eatWhile(specialChars);
56
+ token.name = "operator";
57
+ token.eos = aChar !== ";";
58
+ } else if (/\d/.test(aChar)) {
59
+ stream.eatWhile(/[\w\d]/);
60
+ token.name = "number";
61
+ } else if (/[\w_]/.test(aChar)) {
62
+ stream.eatWhile(/[\w\d_]/);
63
+ token.name = state.expectVariable ? keywords.test(stream.current()) ? "keyword" : "variable" : null;
64
+ } else {
65
+ token.eos = state.expectVariable;
66
+ }
67
+ return token;
68
+ };
69
+ var nextComment = function(stream, context) {
70
+ stream.eatWhile(/[^"]/);
71
+ return new Token("comment", stream.eat('"') ? context.parent : context, true);
72
+ };
73
+ var nextString = function(stream, context) {
74
+ stream.eatWhile(/[^']/);
75
+ return new Token("string", stream.eat("'") ? context.parent : context, false);
76
+ };
77
+ var nextSymbol = function(stream, context) {
78
+ stream.eatWhile(/[^']/);
79
+ return new Token("string.special", stream.eat("'") ? context.parent : context, false);
80
+ };
81
+ var nextTemporaries = function(stream, context) {
82
+ var token = new Token(null, context, false);
83
+ var aChar = stream.next();
84
+ if (aChar === "|") {
85
+ token.context = context.parent;
86
+ token.eos = true;
87
+ } else {
88
+ stream.eatWhile(/[^|]/);
89
+ token.name = "variable";
90
+ }
91
+ return token;
92
+ };
93
+ const smalltalk = {
94
+ name: "smalltalk",
95
+ startState: function() {
96
+ return new State();
97
+ },
98
+ token: function(stream, state) {
99
+ state.userIndent(stream.indentation(), stream.indentUnit);
100
+ if (stream.eatSpace()) {
101
+ return null;
102
+ }
103
+ var token = state.context.next(stream, state.context, state);
104
+ state.context = token.context;
105
+ state.expectVariable = token.eos;
106
+ return token.name;
107
+ },
108
+ blankLine: function(state, indentUnit) {
109
+ state.userIndent(0, indentUnit);
110
+ },
111
+ indent: function(state, textAfter, cx) {
112
+ var i = state.context.next === next && textAfter && textAfter.charAt(0) === "]" ? -1 : state.userIndentationDelta;
113
+ return (state.indentation + i) * cx.unit;
114
+ },
115
+ languageData: {
116
+ indentOnInput: /^\s*\]$/
117
+ }
118
+ };
119
+ export {
120
+ smalltalk
121
+ };
@@ -0,0 +1,69 @@
1
+ var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/;
2
+ var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/;
3
+ var isOperatorString = /^(OR|AND|NOT|TO)$/;
4
+ function isNumber(word) {
5
+ return parseFloat(word).toString() === word;
6
+ }
7
+ function tokenString(quote) {
8
+ return function(stream, state) {
9
+ var escaped = false, next;
10
+ while ((next = stream.next()) != null) {
11
+ if (next == quote && !escaped) break;
12
+ escaped = !escaped && next == "\\";
13
+ }
14
+ if (!escaped) state.tokenize = tokenBase;
15
+ return "string";
16
+ };
17
+ }
18
+ function tokenOperator(operator) {
19
+ return function(stream, state) {
20
+ if (operator == "|")
21
+ stream.eat(/\|/);
22
+ else if (operator == "&")
23
+ stream.eat(/\&/);
24
+ state.tokenize = tokenBase;
25
+ return "operator";
26
+ };
27
+ }
28
+ function tokenWord(ch) {
29
+ return function(stream, state) {
30
+ var word = ch;
31
+ while ((ch = stream.peek()) && ch.match(isStringChar) != null) {
32
+ word += stream.next();
33
+ }
34
+ state.tokenize = tokenBase;
35
+ if (isOperatorString.test(word))
36
+ return "operator";
37
+ else if (isNumber(word))
38
+ return "number";
39
+ else if (stream.peek() == ":")
40
+ return "propertyName";
41
+ else
42
+ return "string";
43
+ };
44
+ }
45
+ function tokenBase(stream, state) {
46
+ var ch = stream.next();
47
+ if (ch == '"')
48
+ state.tokenize = tokenString(ch);
49
+ else if (isOperatorChar.test(ch))
50
+ state.tokenize = tokenOperator(ch);
51
+ else if (isStringChar.test(ch))
52
+ state.tokenize = tokenWord(ch);
53
+ return state.tokenize != tokenBase ? state.tokenize(stream, state) : null;
54
+ }
55
+ const solr = {
56
+ name: "solr",
57
+ startState: function() {
58
+ return {
59
+ tokenize: tokenBase
60
+ };
61
+ },
62
+ token: function(stream, state) {
63
+ if (stream.eatSpace()) return null;
64
+ return state.tokenize(stream, state);
65
+ }
66
+ };
67
+ export {
68
+ solr
69
+ };
@@ -0,0 +1,249 @@
1
+ var curPunc;
2
+ function wordRegexp(words) {
3
+ return new RegExp("^(?:" + words.join("|") + ")$", "i");
4
+ }
5
+ var ops = wordRegexp([
6
+ "str",
7
+ "lang",
8
+ "langmatches",
9
+ "datatype",
10
+ "bound",
11
+ "sameterm",
12
+ "isiri",
13
+ "isuri",
14
+ "iri",
15
+ "uri",
16
+ "bnode",
17
+ "count",
18
+ "sum",
19
+ "min",
20
+ "max",
21
+ "avg",
22
+ "sample",
23
+ "group_concat",
24
+ "rand",
25
+ "abs",
26
+ "ceil",
27
+ "floor",
28
+ "round",
29
+ "concat",
30
+ "substr",
31
+ "strlen",
32
+ "replace",
33
+ "ucase",
34
+ "lcase",
35
+ "encode_for_uri",
36
+ "contains",
37
+ "strstarts",
38
+ "strends",
39
+ "strbefore",
40
+ "strafter",
41
+ "year",
42
+ "month",
43
+ "day",
44
+ "hours",
45
+ "minutes",
46
+ "seconds",
47
+ "timezone",
48
+ "tz",
49
+ "now",
50
+ "uuid",
51
+ "struuid",
52
+ "md5",
53
+ "sha1",
54
+ "sha256",
55
+ "sha384",
56
+ "sha512",
57
+ "coalesce",
58
+ "if",
59
+ "strlang",
60
+ "strdt",
61
+ "isnumeric",
62
+ "regex",
63
+ "exists",
64
+ "isblank",
65
+ "isliteral",
66
+ "a",
67
+ "bind"
68
+ ]);
69
+ var keywords = wordRegexp([
70
+ "base",
71
+ "prefix",
72
+ "select",
73
+ "distinct",
74
+ "reduced",
75
+ "construct",
76
+ "describe",
77
+ "ask",
78
+ "from",
79
+ "named",
80
+ "where",
81
+ "order",
82
+ "limit",
83
+ "offset",
84
+ "filter",
85
+ "optional",
86
+ "graph",
87
+ "by",
88
+ "asc",
89
+ "desc",
90
+ "as",
91
+ "having",
92
+ "undef",
93
+ "values",
94
+ "group",
95
+ "minus",
96
+ "in",
97
+ "not",
98
+ "service",
99
+ "silent",
100
+ "using",
101
+ "insert",
102
+ "delete",
103
+ "union",
104
+ "true",
105
+ "false",
106
+ "with",
107
+ "data",
108
+ "copy",
109
+ "to",
110
+ "move",
111
+ "add",
112
+ "create",
113
+ "drop",
114
+ "clear",
115
+ "load",
116
+ "into"
117
+ ]);
118
+ var operatorChars = /[*+\-<>=&|\^\/!\?]/;
119
+ var PN_CHARS = "[A-Za-z_\\-0-9]";
120
+ var PREFIX_START = new RegExp("[A-Za-z]");
121
+ var PREFIX_REMAINDER = new RegExp("((" + PN_CHARS + "|\\.)*(" + PN_CHARS + "))?:");
122
+ function tokenBase(stream, state) {
123
+ var ch = stream.next();
124
+ curPunc = null;
125
+ if (ch == "$" || ch == "?") {
126
+ if (ch == "?" && stream.match(/\s/, false)) {
127
+ return "operator";
128
+ }
129
+ stream.match(/^[A-Za-z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Za-z0-9_\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*/);
130
+ return "variableName.local";
131
+ } else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) {
132
+ stream.match(/^[^\s\u00a0>]*>?/);
133
+ return "atom";
134
+ } else if (ch == '"' || ch == "'") {
135
+ state.tokenize = tokenLiteral(ch);
136
+ return state.tokenize(stream, state);
137
+ } else if (/[{}\(\),\.;\[\]]/.test(ch)) {
138
+ curPunc = ch;
139
+ return "bracket";
140
+ } else if (ch == "#") {
141
+ stream.skipToEnd();
142
+ return "comment";
143
+ } else if (operatorChars.test(ch)) {
144
+ return "operator";
145
+ } else if (ch == ":") {
146
+ eatPnLocal(stream);
147
+ return "atom";
148
+ } else if (ch == "@") {
149
+ stream.eatWhile(/[a-z\d\-]/i);
150
+ return "meta";
151
+ } else if (PREFIX_START.test(ch) && stream.match(PREFIX_REMAINDER)) {
152
+ eatPnLocal(stream);
153
+ return "atom";
154
+ }
155
+ stream.eatWhile(/[_\w\d]/);
156
+ var word = stream.current();
157
+ if (ops.test(word))
158
+ return "builtin";
159
+ else if (keywords.test(word))
160
+ return "keyword";
161
+ else
162
+ return "variable";
163
+ }
164
+ function eatPnLocal(stream) {
165
+ stream.match(/(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/i);
166
+ }
167
+ function tokenLiteral(quote) {
168
+ return function(stream, state) {
169
+ var escaped = false, ch;
170
+ while ((ch = stream.next()) != null) {
171
+ if (ch == quote && !escaped) {
172
+ state.tokenize = tokenBase;
173
+ break;
174
+ }
175
+ escaped = !escaped && ch == "\\";
176
+ }
177
+ return "string";
178
+ };
179
+ }
180
+ function pushContext(state, type, col) {
181
+ state.context = { prev: state.context, indent: state.indent, col, type };
182
+ }
183
+ function popContext(state) {
184
+ state.indent = state.context.indent;
185
+ state.context = state.context.prev;
186
+ }
187
+ const sparql = {
188
+ name: "sparql",
189
+ startState: function() {
190
+ return {
191
+ tokenize: tokenBase,
192
+ context: null,
193
+ indent: 0,
194
+ col: 0
195
+ };
196
+ },
197
+ token: function(stream, state) {
198
+ if (stream.sol()) {
199
+ if (state.context && state.context.align == null) state.context.align = false;
200
+ state.indent = stream.indentation();
201
+ }
202
+ if (stream.eatSpace()) return null;
203
+ var style = state.tokenize(stream, state);
204
+ if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") {
205
+ state.context.align = true;
206
+ }
207
+ if (curPunc == "(") pushContext(state, ")", stream.column());
208
+ else if (curPunc == "[") pushContext(state, "]", stream.column());
209
+ else if (curPunc == "{") pushContext(state, "}", stream.column());
210
+ else if (/[\]\}\)]/.test(curPunc)) {
211
+ while (state.context && state.context.type == "pattern") popContext(state);
212
+ if (state.context && curPunc == state.context.type) {
213
+ popContext(state);
214
+ if (curPunc == "}" && state.context && state.context.type == "pattern")
215
+ popContext(state);
216
+ }
217
+ } else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state);
218
+ else if (/atom|string|variable/.test(style) && state.context) {
219
+ if (/[\}\]]/.test(state.context.type))
220
+ pushContext(state, "pattern", stream.column());
221
+ else if (state.context.type == "pattern" && !state.context.align) {
222
+ state.context.align = true;
223
+ state.context.col = stream.column();
224
+ }
225
+ }
226
+ return style;
227
+ },
228
+ indent: function(state, textAfter, cx) {
229
+ var firstChar = textAfter && textAfter.charAt(0);
230
+ var context = state.context;
231
+ if (/[\]\}]/.test(firstChar))
232
+ while (context && context.type == "pattern") context = context.prev;
233
+ var closing = context && firstChar == context.type;
234
+ if (!context)
235
+ return 0;
236
+ else if (context.type == "pattern")
237
+ return context.col;
238
+ else if (context.align)
239
+ return context.col + (closing ? 0 : 1);
240
+ else
241
+ return context.indent + (closing ? 0 : cx.unit);
242
+ },
243
+ languageData: {
244
+ commentTokens: { line: "#" }
245
+ }
246
+ };
247
+ export {
248
+ sparql
249
+ };