@valtzu/codemirror-lang-el 0.6.0 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/complete.cjs +15 -2
- package/dist/complete.js +15 -2
- package/dist/index.cjs +22 -9
- package/dist/index.js +22 -9
- package/dist/linter.cjs +14 -1
- package/dist/linter.js +14 -1
- package/dist/tooltip.cjs +14 -1
- package/dist/tooltip.js +14 -1
- package/package.json +1 -1
- package/.editorconfig +0 -3
- package/.github/workflows/publish.yml +0 -32
- package/.github/workflows/test.yml +0 -16
package/README.md
CHANGED
|
@@ -46,7 +46,7 @@ yarn add @valtzu/codemirror-lang-el
|
|
|
46
46
|
|
|
47
47
|
### Example
|
|
48
48
|
|
|
49
|
-
[Live demo](https://jsfiddle.net/
|
|
49
|
+
[Live demo](https://jsfiddle.net/turse2xq/)
|
|
50
50
|
|
|
51
51
|
```html
|
|
52
52
|
<div id="editor"></div>
|
|
@@ -78,7 +78,6 @@ yarn add @valtzu/codemirror-lang-el
|
|
|
78
78
|
import { expressionlanguage } from "@valtzu/codemirror-lang-el";
|
|
79
79
|
import { defaultKeymap } from "@codemirror/commands";
|
|
80
80
|
|
|
81
|
-
|
|
82
81
|
let editor = new EditorView({
|
|
83
82
|
extensions: [
|
|
84
83
|
basicSetup,
|
package/dist/complete.cjs
CHANGED
|
@@ -24,7 +24,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
function resolveTypes(state, node, config, matchExact) {
|
|
27
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
27
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
28
28
|
let types = new Set();
|
|
29
29
|
if (!node) {
|
|
30
30
|
return types;
|
|
@@ -61,6 +61,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
61
61
|
else if (node.name === 'Application' && node.firstChild) {
|
|
62
62
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
63
63
|
}
|
|
64
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
65
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
66
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
67
|
+
}
|
|
68
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
69
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
70
|
+
if (operator == '?:' || operator == '??') {
|
|
71
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
72
|
+
}
|
|
73
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
74
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
64
77
|
if (types.size === 0) {
|
|
65
78
|
types.add('any');
|
|
66
79
|
}
|
|
@@ -157,7 +170,7 @@ function expressionLanguageCompletion(context) {
|
|
|
157
170
|
if (prevNode.name == 'String') {
|
|
158
171
|
return null;
|
|
159
172
|
}
|
|
160
|
-
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
173
|
+
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call', 'Application'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
161
174
|
return completeMember(state, config, prevNode, isIdentifier(prevNode) || isMember(prevNode) ? prevNode.from : pos, pos);
|
|
162
175
|
}
|
|
163
176
|
if (['Expression', 'UnaryExpression', 'BinaryExpression', 'TernaryExpression'].includes(prevNode.name) && prevNode.lastChild && !((_c = prevNode.lastChild) === null || _c === void 0 ? void 0 : _c.type.isError)
|
package/dist/complete.js
CHANGED
|
@@ -20,7 +20,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
function resolveTypes(state, node, config, matchExact) {
|
|
23
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
23
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
24
24
|
let types = new Set();
|
|
25
25
|
if (!node) {
|
|
26
26
|
return types;
|
|
@@ -57,6 +57,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
57
57
|
else if (node.name === 'Application' && node.firstChild) {
|
|
58
58
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
59
59
|
}
|
|
60
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
61
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
62
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
63
|
+
}
|
|
64
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
65
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
66
|
+
if (operator == '?:' || operator == '??') {
|
|
67
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
68
|
+
}
|
|
69
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
70
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
60
73
|
if (types.size === 0) {
|
|
61
74
|
types.add('any');
|
|
62
75
|
}
|
|
@@ -153,7 +166,7 @@ function expressionLanguageCompletion(context) {
|
|
|
153
166
|
if (prevNode.name == 'String') {
|
|
154
167
|
return null;
|
|
155
168
|
}
|
|
156
|
-
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
169
|
+
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call', 'Application'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
157
170
|
return completeMember(state, config, prevNode, isIdentifier(prevNode) || isMember(prevNode) ? prevNode.from : pos, pos);
|
|
158
171
|
}
|
|
159
172
|
if (['Expression', 'UnaryExpression', 'BinaryExpression', 'TernaryExpression'].includes(prevNode.name) && prevNode.lastChild && !((_c = prevNode.lastChild) === null || _c === void 0 ? void 0 : _c.type.isError)
|
package/dist/index.cjs
CHANGED
|
@@ -12,20 +12,20 @@ var view = require('@codemirror/view');
|
|
|
12
12
|
|
|
13
13
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
14
14
|
const spec_word = {__proto__:null,true:80, false:82, null:84, starts:94, with:96, ends:98, contains:100, matches:102, not:104, in:106, and:108, or:110};
|
|
15
|
-
const spec_Operator = {__proto__:null,"!":113, "+":115, "-":117};
|
|
15
|
+
const spec_Operator = {__proto__:null,"?":93, "!":113, "+":115, "-":117};
|
|
16
16
|
const parser = lr.LRParser.deserialize({
|
|
17
17
|
version: 14,
|
|
18
|
-
states: "(pOVQPOOQ!QQPOOO!{QPO'#CdO$]QPO'#CmO$dQPO'#CnOVQPO'#CtOVQPO'#CvOOQO'#C|'#C|O$kQPO'#CcO$pQPO'#CcOOQO'#Ck'#CkOOQO'#Cl'#ClOOQO'#Cu'#CuO$uQPO,58xOVQPO,58|OVQPO,59
|
|
19
|
-
stateData: "+k~OoOS~O]VO^VOqQOsSOuUOxYOyYOzZO|RO!U[O!Y[O!Z[O![[O~OR]OS]
|
|
20
|
-
goto: "%]wPPxPP!Zxx!^!o!r#T#
|
|
21
|
-
nodeNames: "⚠ Expression ObjectAccess MemberOf NullSafeMemberOf Property ArrayAccess Call Function Arguments ObjectAccess Method Arguments Number String Boolean Null Object Array Variable TernaryExpression BinaryExpression OperatorKeyword
|
|
18
|
+
states: "(pOVQPOOQ!QQPOOO!{QPO'#CdO$]QPO'#CmO$dQPO'#CnOVQPO'#CtOVQPO'#CvOOQO'#C|'#C|O$kQPO'#CcO$pQPO'#CcOOQO'#Ck'#CkOOQO'#Cl'#ClOOQO'#Cu'#CuO$uQPO,58xOVQPO,58|OVQPO,59^OVQPO,59[O$zQPO'#CsOOQO'#Cs'#CsO%PQPO'#CsO%}QPO,59XOOQO,59X,59XO&UQPO'#DSO&cQPO,59YO&hQPO,59`O'OQPO,59bO'VQPO'#CeOOQO,58},58}O'VQPO'#ChO'^QPO'#CaOOQO1G.d1G.dOOQO1G.l1G.lO(nQPO1G.hO(uQPO1G.xO)]QPO1G.vOOQO,59_,59_OVQPO1G.sOVQPO'#CwO)dQPO,59nOOQO1G.t1G.tOOQO1G.|1G.|O)oQPO,59PO)tQPO,59SOOQO7+$S7+$SOVQPO7+$bO)yQPO7+$_O*TQPO,59cOOQO-E6u-E6uOOQO1G.k1G.kOOQO1G.n1G.nO*bQPO<<G|OVQPO'#CxO*xQPO<<GyOOQO<<Gy<<GyO+QQPO,59dOOQO-E6v-E6vOOQOAN=eAN=eOVQPO1G/OO+XQPO7+$j",
|
|
19
|
+
stateData: "+k~OoOS~O]VO^VOqQOsSOuUOxYOyYOzZO|RO!U[O!Y[O!Z[O![[O~OR]OS]Oe_Os^O!O`O!PaO!RaO!SbO!TbO!UcO!VbO!WbO!XbO~ORcXScXecXmcXscXuWX!OcX!PcX!RcX!ScX!TcX!UcX!VcX!WcX!XcX}cXrcXwcXtcX{cX~O{eO~PVOrvP~PVOujO~OulO~OqmO~O!QsO~O!VsO]gX^gXqgXsgXugXxgXygXzgX|gX!UgX!YgX!ZgX![gX~O}tO~P!QOwuOrvXtvX~P!QOrwO~Omha}harhawhatha{ha~P!QOtxO~P!QOtvP~PVORTXSTXeTXmTXsTXuZX!OTX!PTX!RTX!STX!TTX!UTX!VTX!WTX!XTX}TXrTXwTXtTX{TX~Or{O~P!QOmfi}firfiwfitfi{fi~P!QO}|O~P!QOwuOrvatva~Ot!QO~Ot!RO~Ow!TO{!VO~P!QOrkawkatka~P!QOmdy}dyrdywdytdy{dy~P!QOw!TO{!YO~O}!ZO~P!QOwlq{lq~P!QO^SeR]qR~",
|
|
20
|
+
goto: "%]wPPxPP!Zxx!^!o!r#T#WPPxxxxxxPx#Zx#jx#{$RPPP$XPPPPP%SoVORSTU^_`jltu|!T!ZRn]oWORSTU^_`jltu|!T!ZRkWoXORSTU^_`jltu|!T!ZRo]RkXk_Pdfhipqr}!O!S!W![oTORSTU^_`jltu|!T!ZQvfR!PvQ!U}R!X!UQPOQdRUfSjlQhTQiUQp^Qq_Qr`Q}tQ!OuQ!S|Q!W!TR![!ZQgSQyjRzl",
|
|
21
|
+
nodeNames: "⚠ Expression ObjectAccess MemberOf NullSafeMemberOf Property ArrayAccess Call Function Arguments ObjectAccess Method Arguments Number String Boolean Null Object Array Variable TernaryExpression Operator BinaryExpression OperatorKeyword UnaryExpression UnaryOperator Application",
|
|
22
22
|
maxTerm: 58,
|
|
23
23
|
skippedNodes: [0],
|
|
24
24
|
repeatNodeCount: 2,
|
|
25
|
-
tokenData: ",l~RqXY#YYZ#Y]^#Ypq#Yqr#krs$Quv#{vw%zwx&Sxy'wyz'|z{(R{|#{|}(Z}!O#{!O!P(`!P!Q#{!Q![(h![!]*}!^!_#s!_!`+S!`!a#s!a!b+Y!c!}+m!}#O,O#P#Q,T#Q#R#{#R#S+m#T#o+m#o#p,Y#p#q,_#q#r,g#r#s#{~#_So~XY#YYZ#Y]^#Ypq#Y~#
|
|
25
|
+
tokenData: ",l~RqXY#YYZ#Y]^#Ypq#Yqr#krs$Quv#{vw%zwx&Sxy'wyz'|z{(R{|#{|}(Z}!O#{!O!P(`!P!Q#{!Q![(h![!]*}!^!_#s!_!`+S!`!a#s!a!b+Y!c!}+m!}#O,O#P#Q,T#Q#R#{#R#S+m#T#o+m#o#p,Y#p#q,_#q#r,g#r#s#{~#_So~XY#YYZ#Y]^#Ypq#Y~#pPe~!_!`#s~#xPe~!_!`#{~$QOe~~$TXOr$Qrs$ps#O$Q#O#P$u#P;'S$Q;'S;=`%t<%l~$Q~O$Q~~$p~$uO^~~$xRO;'S$Q;'S;=`%R;=`O$Q~%UYOr$Qrs$ps#O$Q#O#P$u#P;'S$Q;'S;=`%t;=`<%l$Q<%l~$Q~O$Q~~$p~%wP;=`<%l$Q~&PPe~vw#{~&VXOw&Swx$px#O&S#O#P&r#P;'S&S;'S;=`'q<%l~&S~O&S~~$p~&uRO;'S&S;'S;=`'O;=`O&S~'RYOw&Swx$px#O&S#O#P&r#P;'S&S;'S;=`'q;=`<%l&S<%l~&S~O&S~~$p~'tP;=`<%l&S~'|Ou~~(ROt~~(WPe~z{#{~(`Ow~~(ePR~!O!P#{~(mT]~!O!P(|!Q![(h!g!h)|#R#S*w#X#Y)|~)PSO!O)]!P;'S)];'S;=`*q<%lO)]~)bR]~!Q![)k!g!h)|#X#Y)|~)pS]~!Q![)k!g!h)|#R#S*k#X#Y)|~*PR{|*Y}!O*Y!Q![*`~*]P!Q![*`~*eQ]~!Q![*`#R#S*Y~*nP!Q![)k~*tP;=`<%l)]~*zP!Q![(h~+SO}~~+VP!_!`#s~+_Re~!O!P+h![!]#{!a!b#{~+mOS~~+rSq~!Q![+m!c!}+m#R#S+m#T#o+m~,TOs~~,YOr~~,_O|~~,dPe~#p#q#{~,lO{~",
|
|
26
26
|
tokenizers: [0],
|
|
27
27
|
topRules: {"Expression":[0,1]},
|
|
28
|
-
specialized: [{term: 33, get: (value) => spec_word[value] || -1},{term:
|
|
28
|
+
specialized: [{term: 33, get: (value) => spec_word[value] || -1},{term: 21, get: (value) => spec_Operator[value] || -1}],
|
|
29
29
|
tokenPrec: 479
|
|
30
30
|
});
|
|
31
31
|
|
|
@@ -65,7 +65,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
67
|
function resolveTypes(state, node, config, matchExact) {
|
|
68
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
68
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
69
69
|
let types = new Set();
|
|
70
70
|
if (!node) {
|
|
71
71
|
return types;
|
|
@@ -102,6 +102,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
102
102
|
else if (node.name === 'Application' && node.firstChild) {
|
|
103
103
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
104
104
|
}
|
|
105
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
106
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
107
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
108
|
+
}
|
|
109
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
110
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
111
|
+
if (operator == '?:' || operator == '??') {
|
|
112
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
113
|
+
}
|
|
114
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
115
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
105
118
|
if (types.size === 0) {
|
|
106
119
|
types.add('any');
|
|
107
120
|
}
|
|
@@ -262,7 +275,7 @@ function expressionLanguageCompletion(context) {
|
|
|
262
275
|
if (prevNode.name == 'String') {
|
|
263
276
|
return null;
|
|
264
277
|
}
|
|
265
|
-
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
278
|
+
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call', 'Application'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
266
279
|
return completeMember(state, config, prevNode, isIdentifier(prevNode) || isMember(prevNode) ? prevNode.from : pos, pos);
|
|
267
280
|
}
|
|
268
281
|
if (['Expression', 'UnaryExpression', 'BinaryExpression', 'TernaryExpression'].includes(prevNode.name) && prevNode.lastChild && !((_c = prevNode.lastChild) === null || _c === void 0 ? void 0 : _c.type.isError)
|
package/dist/index.js
CHANGED
|
@@ -8,20 +8,20 @@ import { showTooltip, hoverTooltip, EditorView } from '@codemirror/view';
|
|
|
8
8
|
|
|
9
9
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
10
10
|
const spec_word = {__proto__:null,true:80, false:82, null:84, starts:94, with:96, ends:98, contains:100, matches:102, not:104, in:106, and:108, or:110};
|
|
11
|
-
const spec_Operator = {__proto__:null,"!":113, "+":115, "-":117};
|
|
11
|
+
const spec_Operator = {__proto__:null,"?":93, "!":113, "+":115, "-":117};
|
|
12
12
|
const parser = LRParser.deserialize({
|
|
13
13
|
version: 14,
|
|
14
|
-
states: "(pOVQPOOQ!QQPOOO!{QPO'#CdO$]QPO'#CmO$dQPO'#CnOVQPO'#CtOVQPO'#CvOOQO'#C|'#C|O$kQPO'#CcO$pQPO'#CcOOQO'#Ck'#CkOOQO'#Cl'#ClOOQO'#Cu'#CuO$uQPO,58xOVQPO,58|OVQPO,59
|
|
15
|
-
stateData: "+k~OoOS~O]VO^VOqQOsSOuUOxYOyYOzZO|RO!U[O!Y[O!Z[O![[O~OR]OS]
|
|
16
|
-
goto: "%]wPPxPP!Zxx!^!o!r#T#
|
|
17
|
-
nodeNames: "⚠ Expression ObjectAccess MemberOf NullSafeMemberOf Property ArrayAccess Call Function Arguments ObjectAccess Method Arguments Number String Boolean Null Object Array Variable TernaryExpression BinaryExpression OperatorKeyword
|
|
14
|
+
states: "(pOVQPOOQ!QQPOOO!{QPO'#CdO$]QPO'#CmO$dQPO'#CnOVQPO'#CtOVQPO'#CvOOQO'#C|'#C|O$kQPO'#CcO$pQPO'#CcOOQO'#Ck'#CkOOQO'#Cl'#ClOOQO'#Cu'#CuO$uQPO,58xOVQPO,58|OVQPO,59^OVQPO,59[O$zQPO'#CsOOQO'#Cs'#CsO%PQPO'#CsO%}QPO,59XOOQO,59X,59XO&UQPO'#DSO&cQPO,59YO&hQPO,59`O'OQPO,59bO'VQPO'#CeOOQO,58},58}O'VQPO'#ChO'^QPO'#CaOOQO1G.d1G.dOOQO1G.l1G.lO(nQPO1G.hO(uQPO1G.xO)]QPO1G.vOOQO,59_,59_OVQPO1G.sOVQPO'#CwO)dQPO,59nOOQO1G.t1G.tOOQO1G.|1G.|O)oQPO,59PO)tQPO,59SOOQO7+$S7+$SOVQPO7+$bO)yQPO7+$_O*TQPO,59cOOQO-E6u-E6uOOQO1G.k1G.kOOQO1G.n1G.nO*bQPO<<G|OVQPO'#CxO*xQPO<<GyOOQO<<Gy<<GyO+QQPO,59dOOQO-E6v-E6vOOQOAN=eAN=eOVQPO1G/OO+XQPO7+$j",
|
|
15
|
+
stateData: "+k~OoOS~O]VO^VOqQOsSOuUOxYOyYOzZO|RO!U[O!Y[O!Z[O![[O~OR]OS]Oe_Os^O!O`O!PaO!RaO!SbO!TbO!UcO!VbO!WbO!XbO~ORcXScXecXmcXscXuWX!OcX!PcX!RcX!ScX!TcX!UcX!VcX!WcX!XcX}cXrcXwcXtcX{cX~O{eO~PVOrvP~PVOujO~OulO~OqmO~O!QsO~O!VsO]gX^gXqgXsgXugXxgXygXzgX|gX!UgX!YgX!ZgX![gX~O}tO~P!QOwuOrvXtvX~P!QOrwO~Omha}harhawhatha{ha~P!QOtxO~P!QOtvP~PVORTXSTXeTXmTXsTXuZX!OTX!PTX!RTX!STX!TTX!UTX!VTX!WTX!XTX}TXrTXwTXtTX{TX~Or{O~P!QOmfi}firfiwfitfi{fi~P!QO}|O~P!QOwuOrvatva~Ot!QO~Ot!RO~Ow!TO{!VO~P!QOrkawkatka~P!QOmdy}dyrdywdytdy{dy~P!QOw!TO{!YO~O}!ZO~P!QOwlq{lq~P!QO^SeR]qR~",
|
|
16
|
+
goto: "%]wPPxPP!Zxx!^!o!r#T#WPPxxxxxxPx#Zx#jx#{$RPPP$XPPPPP%SoVORSTU^_`jltu|!T!ZRn]oWORSTU^_`jltu|!T!ZRkWoXORSTU^_`jltu|!T!ZRo]RkXk_Pdfhipqr}!O!S!W![oTORSTU^_`jltu|!T!ZQvfR!PvQ!U}R!X!UQPOQdRUfSjlQhTQiUQp^Qq_Qr`Q}tQ!OuQ!S|Q!W!TR![!ZQgSQyjRzl",
|
|
17
|
+
nodeNames: "⚠ Expression ObjectAccess MemberOf NullSafeMemberOf Property ArrayAccess Call Function Arguments ObjectAccess Method Arguments Number String Boolean Null Object Array Variable TernaryExpression Operator BinaryExpression OperatorKeyword UnaryExpression UnaryOperator Application",
|
|
18
18
|
maxTerm: 58,
|
|
19
19
|
skippedNodes: [0],
|
|
20
20
|
repeatNodeCount: 2,
|
|
21
|
-
tokenData: ",l~RqXY#YYZ#Y]^#Ypq#Yqr#krs$Quv#{vw%zwx&Sxy'wyz'|z{(R{|#{|}(Z}!O#{!O!P(`!P!Q#{!Q![(h![!]*}!^!_#s!_!`+S!`!a#s!a!b+Y!c!}+m!}#O,O#P#Q,T#Q#R#{#R#S+m#T#o+m#o#p,Y#p#q,_#q#r,g#r#s#{~#_So~XY#YYZ#Y]^#Ypq#Y~#
|
|
21
|
+
tokenData: ",l~RqXY#YYZ#Y]^#Ypq#Yqr#krs$Quv#{vw%zwx&Sxy'wyz'|z{(R{|#{|}(Z}!O#{!O!P(`!P!Q#{!Q![(h![!]*}!^!_#s!_!`+S!`!a#s!a!b+Y!c!}+m!}#O,O#P#Q,T#Q#R#{#R#S+m#T#o+m#o#p,Y#p#q,_#q#r,g#r#s#{~#_So~XY#YYZ#Y]^#Ypq#Y~#pPe~!_!`#s~#xPe~!_!`#{~$QOe~~$TXOr$Qrs$ps#O$Q#O#P$u#P;'S$Q;'S;=`%t<%l~$Q~O$Q~~$p~$uO^~~$xRO;'S$Q;'S;=`%R;=`O$Q~%UYOr$Qrs$ps#O$Q#O#P$u#P;'S$Q;'S;=`%t;=`<%l$Q<%l~$Q~O$Q~~$p~%wP;=`<%l$Q~&PPe~vw#{~&VXOw&Swx$px#O&S#O#P&r#P;'S&S;'S;=`'q<%l~&S~O&S~~$p~&uRO;'S&S;'S;=`'O;=`O&S~'RYOw&Swx$px#O&S#O#P&r#P;'S&S;'S;=`'q;=`<%l&S<%l~&S~O&S~~$p~'tP;=`<%l&S~'|Ou~~(ROt~~(WPe~z{#{~(`Ow~~(ePR~!O!P#{~(mT]~!O!P(|!Q![(h!g!h)|#R#S*w#X#Y)|~)PSO!O)]!P;'S)];'S;=`*q<%lO)]~)bR]~!Q![)k!g!h)|#X#Y)|~)pS]~!Q![)k!g!h)|#R#S*k#X#Y)|~*PR{|*Y}!O*Y!Q![*`~*]P!Q![*`~*eQ]~!Q![*`#R#S*Y~*nP!Q![)k~*tP;=`<%l)]~*zP!Q![(h~+SO}~~+VP!_!`#s~+_Re~!O!P+h![!]#{!a!b#{~+mOS~~+rSq~!Q![+m!c!}+m#R#S+m#T#o+m~,TOs~~,YOr~~,_O|~~,dPe~#p#q#{~,lO{~",
|
|
22
22
|
tokenizers: [0],
|
|
23
23
|
topRules: {"Expression":[0,1]},
|
|
24
|
-
specialized: [{term: 33, get: (value) => spec_word[value] || -1},{term:
|
|
24
|
+
specialized: [{term: 33, get: (value) => spec_word[value] || -1},{term: 21, get: (value) => spec_Operator[value] || -1}],
|
|
25
25
|
tokenPrec: 479
|
|
26
26
|
});
|
|
27
27
|
|
|
@@ -61,7 +61,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
61
61
|
}
|
|
62
62
|
};
|
|
63
63
|
function resolveTypes(state, node, config, matchExact) {
|
|
64
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
64
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
65
65
|
let types = new Set();
|
|
66
66
|
if (!node) {
|
|
67
67
|
return types;
|
|
@@ -98,6 +98,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
98
98
|
else if (node.name === 'Application' && node.firstChild) {
|
|
99
99
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
100
100
|
}
|
|
101
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
102
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
103
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
104
|
+
}
|
|
105
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
106
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
107
|
+
if (operator == '?:' || operator == '??') {
|
|
108
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
109
|
+
}
|
|
110
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
111
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
101
114
|
if (types.size === 0) {
|
|
102
115
|
types.add('any');
|
|
103
116
|
}
|
|
@@ -258,7 +271,7 @@ function expressionLanguageCompletion(context) {
|
|
|
258
271
|
if (prevNode.name == 'String') {
|
|
259
272
|
return null;
|
|
260
273
|
}
|
|
261
|
-
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
274
|
+
if (((_a = prevNode.parent) === null || _a === void 0 ? void 0 : _a.name) == 'ObjectAccess' && ['ObjectAccess', 'ArrayAccess', 'Variable', 'Call', 'Application'].includes(((_b = prevNode.parent.firstChild) === null || _b === void 0 ? void 0 : _b.name) || '')) {
|
|
262
275
|
return completeMember(state, config, prevNode, isIdentifier(prevNode) || isMember(prevNode) ? prevNode.from : pos, pos);
|
|
263
276
|
}
|
|
264
277
|
if (['Expression', 'UnaryExpression', 'BinaryExpression', 'TernaryExpression'].includes(prevNode.name) && prevNode.lastChild && !((_c = prevNode.lastChild) === null || _c === void 0 ? void 0 : _c.type.isError)
|
package/dist/linter.cjs
CHANGED
|
@@ -35,7 +35,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
function resolveTypes(state, node, config, matchExact) {
|
|
38
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
38
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
39
39
|
let types = new Set();
|
|
40
40
|
if (!node) {
|
|
41
41
|
return types;
|
|
@@ -72,6 +72,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
72
72
|
else if (node.name === 'Application' && node.firstChild) {
|
|
73
73
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
74
74
|
}
|
|
75
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
76
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
77
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
78
|
+
}
|
|
79
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
80
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
81
|
+
if (operator == '?:' || operator == '??') {
|
|
82
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
83
|
+
}
|
|
84
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
85
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
75
88
|
if (types.size === 0) {
|
|
76
89
|
types.add('any');
|
|
77
90
|
}
|
package/dist/linter.js
CHANGED
|
@@ -31,7 +31,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
function resolveTypes(state, node, config, matchExact) {
|
|
34
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
34
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
35
35
|
let types = new Set();
|
|
36
36
|
if (!node) {
|
|
37
37
|
return types;
|
|
@@ -68,6 +68,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
68
68
|
else if (node.name === 'Application' && node.firstChild) {
|
|
69
69
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
70
70
|
}
|
|
71
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
72
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
73
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
74
|
+
}
|
|
75
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
76
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
77
|
+
if (operator == '?:' || operator == '??') {
|
|
78
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
79
|
+
}
|
|
80
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
81
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
71
84
|
if (types.size === 0) {
|
|
72
85
|
types.add('any');
|
|
73
86
|
}
|
package/dist/tooltip.cjs
CHANGED
|
@@ -42,7 +42,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
function resolveTypes(state, node, config, matchExact) {
|
|
45
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
45
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
46
46
|
let types = new Set();
|
|
47
47
|
if (!node) {
|
|
48
48
|
return types;
|
|
@@ -79,6 +79,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
79
79
|
else if (node.name === 'Application' && node.firstChild) {
|
|
80
80
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
81
81
|
}
|
|
82
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
83
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
84
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
85
|
+
}
|
|
86
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
87
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
88
|
+
if (operator == '?:' || operator == '??') {
|
|
89
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
90
|
+
}
|
|
91
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
92
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
82
95
|
if (types.size === 0) {
|
|
83
96
|
types.add('any');
|
|
84
97
|
}
|
package/dist/tooltip.js
CHANGED
|
@@ -38,7 +38,7 @@ const resolveIdentifier = (nodeName, identifier, config) => {
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
function resolveTypes(state, node, config, matchExact) {
|
|
41
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
41
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
42
42
|
let types = new Set();
|
|
43
43
|
if (!node) {
|
|
44
44
|
return types;
|
|
@@ -75,6 +75,19 @@ function resolveTypes(state, node, config, matchExact) {
|
|
|
75
75
|
else if (node.name === 'Application' && node.firstChild) {
|
|
76
76
|
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
77
77
|
}
|
|
78
|
+
else if (node.name === 'TernaryExpression' && node.firstChild && node.firstChild.nextSibling && node.firstChild.nextSibling.nextSibling) {
|
|
79
|
+
resolveTypes(state, node.firstChild.nextSibling, config).forEach(x => types.add(x));
|
|
80
|
+
resolveTypes(state, node.firstChild.nextSibling.nextSibling, config).forEach(x => types.add(x));
|
|
81
|
+
}
|
|
82
|
+
else if (node.name === 'BinaryExpression' && ((_k = (_j = node.firstChild) === null || _j === void 0 ? void 0 : _j.nextSibling) === null || _k === void 0 ? void 0 : _k.name) == 'Operator' && node.lastChild) {
|
|
83
|
+
const operator = state.sliceDoc(node.firstChild.nextSibling.from, node.firstChild.nextSibling.to);
|
|
84
|
+
if (operator == '?:' || operator == '??') {
|
|
85
|
+
resolveTypes(state, node.firstChild, config).forEach(x => types.add(x));
|
|
86
|
+
}
|
|
87
|
+
if (operator == '?:' || operator == '??' || operator == '?') {
|
|
88
|
+
resolveTypes(state, node.lastChild, config).forEach(x => types.add(x));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
78
91
|
if (types.size === 0) {
|
|
79
92
|
types.add('any');
|
|
80
93
|
}
|
package/package.json
CHANGED
package/.editorconfig
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
name: Publish package to npm
|
|
2
|
-
on:
|
|
3
|
-
release:
|
|
4
|
-
types: [published]
|
|
5
|
-
jobs:
|
|
6
|
-
build:
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
environment: npm
|
|
9
|
-
permissions:
|
|
10
|
-
contents: write
|
|
11
|
-
packages: write
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@v3
|
|
14
|
-
# Setup .npmrc file to publish to GitHub Packages
|
|
15
|
-
- uses: actions/setup-node@v3
|
|
16
|
-
with:
|
|
17
|
-
node-version: '20.x'
|
|
18
|
-
registry-url: 'https://registry.npmjs.org'
|
|
19
|
-
- run: npm install
|
|
20
|
-
- run: npm run test
|
|
21
|
-
- name: Upload binaries to release
|
|
22
|
-
uses: svenstaro/upload-release-action@v2
|
|
23
|
-
with:
|
|
24
|
-
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
-
file: dist/index.*
|
|
26
|
-
tag: ${{ github.ref_name }}
|
|
27
|
-
overwrite: true
|
|
28
|
-
file_glob: true
|
|
29
|
-
- run: npm --no-git-tag-version version from-git
|
|
30
|
-
- run: npm publish
|
|
31
|
-
env:
|
|
32
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
name: Run tests
|
|
2
|
-
on:
|
|
3
|
-
push:
|
|
4
|
-
branches: [main]
|
|
5
|
-
pull_request:
|
|
6
|
-
types: [opened, synchronize, reopened]
|
|
7
|
-
jobs:
|
|
8
|
-
build:
|
|
9
|
-
runs-on: ubuntu-latest
|
|
10
|
-
steps:
|
|
11
|
-
- uses: actions/checkout@v3
|
|
12
|
-
- uses: actions/setup-node@v3
|
|
13
|
-
with:
|
|
14
|
-
node-version: '20.x'
|
|
15
|
-
- run: npm install
|
|
16
|
-
- run: npm run test
|