@actions/expressions 0.2.0

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +95 -0
  3. package/dist/ast.d.ts +66 -0
  4. package/dist/ast.d.ts.map +1 -0
  5. package/dist/ast.js +87 -0
  6. package/dist/ast.js.map +1 -0
  7. package/dist/completion/descriptionDictionary.d.ts +15 -0
  8. package/dist/completion/descriptionDictionary.d.ts.map +1 -0
  9. package/dist/completion/descriptionDictionary.js +33 -0
  10. package/dist/completion/descriptionDictionary.js.map +1 -0
  11. package/dist/completion.d.ts +26 -0
  12. package/dist/completion.d.ts.map +1 -0
  13. package/dist/completion.js +124 -0
  14. package/dist/completion.js.map +1 -0
  15. package/dist/data/array.d.ts +13 -0
  16. package/dist/data/array.d.ts.map +1 -0
  17. package/dist/data/array.js +27 -0
  18. package/dist/data/array.js.map +1 -0
  19. package/dist/data/boolean.d.ts +10 -0
  20. package/dist/data/boolean.d.ts.map +1 -0
  21. package/dist/data/boolean.js +21 -0
  22. package/dist/data/boolean.js.map +1 -0
  23. package/dist/data/dictionary.d.ts +17 -0
  24. package/dist/data/dictionary.d.ts.map +1 -0
  25. package/dist/data/dictionary.js +48 -0
  26. package/dist/data/dictionary.js.map +1 -0
  27. package/dist/data/expressiondata.d.ts +28 -0
  28. package/dist/data/expressiondata.d.ts.map +1 -0
  29. package/dist/data/expressiondata.js +28 -0
  30. package/dist/data/expressiondata.js.map +1 -0
  31. package/dist/data/index.d.ts +10 -0
  32. package/dist/data/index.d.ts.map +1 -0
  33. package/dist/data/index.js +10 -0
  34. package/dist/data/index.js.map +1 -0
  35. package/dist/data/null.d.ts +8 -0
  36. package/dist/data/null.d.ts.map +1 -0
  37. package/dist/data/null.js +14 -0
  38. package/dist/data/null.js.map +1 -0
  39. package/dist/data/number.d.ts +10 -0
  40. package/dist/data/number.d.ts.map +1 -0
  41. package/dist/data/number.js +20 -0
  42. package/dist/data/number.js.map +1 -0
  43. package/dist/data/replacer.d.ts +7 -0
  44. package/dist/data/replacer.d.ts.map +1 -0
  45. package/dist/data/replacer.js +38 -0
  46. package/dist/data/replacer.js.map +1 -0
  47. package/dist/data/reviver.d.ts +8 -0
  48. package/dist/data/reviver.d.ts.map +1 -0
  49. package/dist/data/reviver.js +37 -0
  50. package/dist/data/reviver.js.map +1 -0
  51. package/dist/data/string.d.ts +10 -0
  52. package/dist/data/string.d.ts.map +1 -0
  53. package/dist/data/string.js +15 -0
  54. package/dist/data/string.js.map +1 -0
  55. package/dist/errors.d.ts +23 -0
  56. package/dist/errors.d.ts.map +1 -0
  57. package/dist/errors.js +50 -0
  58. package/dist/errors.js.map +1 -0
  59. package/dist/evaluator.d.ts +26 -0
  60. package/dist/evaluator.d.ts.map +1 -0
  61. package/dist/evaluator.js +191 -0
  62. package/dist/evaluator.js.map +1 -0
  63. package/dist/filtered_array.d.ts +4 -0
  64. package/dist/filtered_array.d.ts.map +1 -0
  65. package/dist/filtered_array.js +4 -0
  66. package/dist/filtered_array.js.map +1 -0
  67. package/dist/funcs/contains.d.ts +3 -0
  68. package/dist/funcs/contains.d.ts.map +1 -0
  69. package/dist/funcs/contains.js +32 -0
  70. package/dist/funcs/contains.js.map +1 -0
  71. package/dist/funcs/endswith.d.ts +3 -0
  72. package/dist/funcs/endswith.d.ts.map +1 -0
  73. package/dist/funcs/endswith.js +22 -0
  74. package/dist/funcs/endswith.js.map +1 -0
  75. package/dist/funcs/format.d.ts +3 -0
  76. package/dist/funcs/format.d.ts.map +1 -0
  77. package/dist/funcs/format.js +95 -0
  78. package/dist/funcs/format.js.map +1 -0
  79. package/dist/funcs/fromjson.d.ts +3 -0
  80. package/dist/funcs/fromjson.d.ts.map +1 -0
  81. package/dist/funcs/fromjson.js +22 -0
  82. package/dist/funcs/fromjson.js.map +1 -0
  83. package/dist/funcs/info.d.ts +11 -0
  84. package/dist/funcs/info.d.ts.map +1 -0
  85. package/dist/funcs/info.js +2 -0
  86. package/dist/funcs/info.js.map +1 -0
  87. package/dist/funcs/join.d.ts +3 -0
  88. package/dist/funcs/join.d.ts.map +1 -0
  89. package/dist/funcs/join.js +28 -0
  90. package/dist/funcs/join.js.map +1 -0
  91. package/dist/funcs/startswith.d.ts +3 -0
  92. package/dist/funcs/startswith.d.ts.map +1 -0
  93. package/dist/funcs/startswith.js +22 -0
  94. package/dist/funcs/startswith.js.map +1 -0
  95. package/dist/funcs/tojson.d.ts +3 -0
  96. package/dist/funcs/tojson.d.ts.map +1 -0
  97. package/dist/funcs/tojson.js +12 -0
  98. package/dist/funcs/tojson.js.map +1 -0
  99. package/dist/funcs.d.ts +12 -0
  100. package/dist/funcs.d.ts.map +1 -0
  101. package/dist/funcs.js +43 -0
  102. package/dist/funcs.js.map +1 -0
  103. package/dist/idxHelper.d.ts +8 -0
  104. package/dist/idxHelper.d.ts.map +1 -0
  105. package/dist/idxHelper.js +19 -0
  106. package/dist/idxHelper.js.map +1 -0
  107. package/dist/index.d.ts +10 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +10 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/lexer.d.ts +68 -0
  112. package/dist/lexer.d.ts.map +1 -0
  113. package/dist/lexer.js +324 -0
  114. package/dist/lexer.js.map +1 -0
  115. package/dist/parser.d.ts +40 -0
  116. package/dist/parser.d.ts.map +1 -0
  117. package/dist/parser.js +284 -0
  118. package/dist/parser.js.map +1 -0
  119. package/dist/result.d.ts +9 -0
  120. package/dist/result.d.ts.map +1 -0
  121. package/dist/result.js +190 -0
  122. package/dist/result.js.map +1 -0
  123. package/package.json +64 -0
package/dist/parser.js ADDED
@@ -0,0 +1,284 @@
1
+ import { Binary, ContextAccess, FunctionCall, Grouping, IndexAccess, Literal, Logical, Star, Unary } from "./ast";
2
+ import * as data from "./data";
3
+ import { ErrorType, ExpressionError, MAX_PARSER_DEPTH } from "./errors";
4
+ import { validateFunction } from "./funcs";
5
+ import { TokenType } from "./lexer";
6
+ export class Parser {
7
+ /**
8
+ * Constructs a new parser for the given tokens
9
+ *
10
+ * @param tokens Tokens to build a parse tree from
11
+ * @param extensionContexts Available context names
12
+ * @param extensionFunctions Available functions (beyond the built-in ones)
13
+ */
14
+ constructor(tokens, extensionContexts, extensionFunctions) {
15
+ this.tokens = tokens;
16
+ this.offset = 0;
17
+ this.depth = 0;
18
+ this.extContexts = new Map();
19
+ this.extFuncs = new Map();
20
+ for (const contextName of extensionContexts) {
21
+ this.extContexts.set(contextName.toLowerCase(), true);
22
+ }
23
+ for (const { name, func } of extensionFunctions.map(x => ({
24
+ name: x.name,
25
+ func: x
26
+ }))) {
27
+ this.extFuncs.set(name.toLowerCase(), func);
28
+ }
29
+ this.context = {
30
+ allowUnknownKeywords: false,
31
+ extensionContexts: this.extContexts,
32
+ extensionFunctions: this.extFuncs
33
+ };
34
+ }
35
+ parse() {
36
+ // eslint-disable-next-line prefer-const
37
+ let result;
38
+ // No tokens
39
+ if (this.atEnd()) {
40
+ return result;
41
+ }
42
+ result = this.expression();
43
+ if (!this.atEnd()) {
44
+ throw this.buildError(ErrorType.ErrorUnexpectedSymbol, this.peek());
45
+ }
46
+ return result;
47
+ }
48
+ expression() {
49
+ this.incrDepth();
50
+ try {
51
+ return this.logicalOr();
52
+ }
53
+ finally {
54
+ this.decrDepth();
55
+ }
56
+ }
57
+ logicalOr() {
58
+ // && is higher precedence than ||
59
+ let expr = this.logicalAnd();
60
+ if (this.check(TokenType.OR)) {
61
+ // Track depth
62
+ this.incrDepth();
63
+ try {
64
+ const logical = new Logical(this.peek(), [expr]);
65
+ expr = logical;
66
+ while (this.match(TokenType.OR)) {
67
+ const right = this.logicalAnd();
68
+ logical.args.push(right);
69
+ }
70
+ }
71
+ finally {
72
+ this.decrDepth();
73
+ }
74
+ }
75
+ return expr;
76
+ }
77
+ logicalAnd() {
78
+ // == and != are higher precedence than &&
79
+ let expr = this.equality();
80
+ if (this.check(TokenType.AND)) {
81
+ // Track depth
82
+ this.incrDepth();
83
+ try {
84
+ const logical = new Logical(this.peek(), [expr]);
85
+ expr = logical;
86
+ while (this.match(TokenType.AND)) {
87
+ const right = this.equality();
88
+ logical.args.push(right);
89
+ }
90
+ }
91
+ finally {
92
+ this.decrDepth();
93
+ }
94
+ }
95
+ return expr;
96
+ }
97
+ equality() {
98
+ // >, >=, <, <= are higher precedence than == and !=
99
+ let expr = this.comparison();
100
+ while (this.match(TokenType.BANG_EQUAL, TokenType.EQUAL_EQUAL)) {
101
+ const operator = this.previous();
102
+ const right = this.comparison();
103
+ expr = new Binary(expr, operator, right);
104
+ }
105
+ return expr;
106
+ }
107
+ comparison() {
108
+ // ! is higher precedence than >, >=, <, <=
109
+ let expr = this.unary();
110
+ while (this.match(TokenType.GREATER, TokenType.GREATER_EQUAL, TokenType.LESS, TokenType.LESS_EQUAL)) {
111
+ const operator = this.previous();
112
+ const right = this.unary();
113
+ expr = new Binary(expr, operator, right);
114
+ }
115
+ return expr;
116
+ }
117
+ unary() {
118
+ if (this.match(TokenType.BANG)) {
119
+ // Track depth
120
+ this.incrDepth();
121
+ const operator = this.previous();
122
+ const unary = this.unary();
123
+ try {
124
+ return new Unary(operator, unary);
125
+ }
126
+ finally {
127
+ this.decrDepth();
128
+ }
129
+ }
130
+ return this.index();
131
+ }
132
+ index() {
133
+ let expr = this.call();
134
+ let depthIncreased = 0;
135
+ if (expr instanceof Grouping || expr instanceof FunctionCall || expr instanceof ContextAccess) {
136
+ let cont = true;
137
+ while (cont) {
138
+ switch (true) {
139
+ case this.match(TokenType.LEFT_BRACKET): {
140
+ let indexExpr;
141
+ if (this.match(TokenType.STAR)) {
142
+ indexExpr = new Star();
143
+ }
144
+ else {
145
+ indexExpr = this.expression();
146
+ }
147
+ this.consume(TokenType.RIGHT_BRACKET, ErrorType.ErrorUnexpectedSymbol);
148
+ // Track depth
149
+ this.incrDepth();
150
+ depthIncreased++;
151
+ expr = new IndexAccess(expr, indexExpr);
152
+ break;
153
+ }
154
+ case this.match(TokenType.DOT):
155
+ // Track depth
156
+ this.incrDepth();
157
+ depthIncreased++;
158
+ if (this.match(TokenType.IDENTIFIER)) {
159
+ const property = this.previous();
160
+ expr = new IndexAccess(expr, new Literal(new data.StringData(property.lexeme), property));
161
+ }
162
+ else if (this.match(TokenType.STAR)) {
163
+ expr = new IndexAccess(expr, new Star());
164
+ }
165
+ else {
166
+ throw this.buildError(ErrorType.ErrorUnexpectedSymbol, this.peek());
167
+ }
168
+ break;
169
+ default:
170
+ cont = false;
171
+ }
172
+ }
173
+ }
174
+ for (let i = 0; i < depthIncreased; i++) {
175
+ this.decrDepth();
176
+ }
177
+ return expr;
178
+ }
179
+ call() {
180
+ if (!this.check(TokenType.IDENTIFIER)) {
181
+ return this.primary();
182
+ }
183
+ const identifier = this.next();
184
+ if (!this.match(TokenType.LEFT_PAREN)) {
185
+ if (!this.extContexts.has(identifier.lexeme.toLowerCase())) {
186
+ throw this.buildError(ErrorType.ErrorUnrecognizedContext, identifier);
187
+ }
188
+ return new ContextAccess(identifier);
189
+ }
190
+ // Function call
191
+ const args = [];
192
+ // Arguments
193
+ while (!this.match(TokenType.RIGHT_PAREN)) {
194
+ const aexp = this.expression();
195
+ args.push(aexp);
196
+ if (!this.check(TokenType.RIGHT_PAREN)) {
197
+ this.consume(TokenType.COMMA, ErrorType.ErrorUnexpectedSymbol);
198
+ }
199
+ }
200
+ validateFunction(this.context, identifier, args.length);
201
+ return new FunctionCall(identifier, args);
202
+ }
203
+ primary() {
204
+ switch (true) {
205
+ case this.match(TokenType.FALSE):
206
+ return new Literal(new data.BooleanData(false), this.previous());
207
+ case this.match(TokenType.TRUE):
208
+ return new Literal(new data.BooleanData(true), this.previous());
209
+ case this.match(TokenType.NULL):
210
+ return new Literal(new data.Null(), this.previous());
211
+ case this.match(TokenType.NUMBER):
212
+ return new Literal(new data.NumberData(this.previous().value), this.previous());
213
+ case this.match(TokenType.STRING):
214
+ return new Literal(new data.StringData(this.previous().value), this.previous());
215
+ case this.match(TokenType.LEFT_PAREN): {
216
+ const expr = this.expression();
217
+ if (this.atEnd()) {
218
+ throw this.buildError(ErrorType.ErrorUnexpectedEndOfExpression, this.previous()); // Back up to get the last token before the EOF
219
+ }
220
+ this.consume(TokenType.RIGHT_PAREN, ErrorType.ErrorUnexpectedSymbol);
221
+ return new Grouping(expr);
222
+ }
223
+ case this.atEnd():
224
+ throw this.buildError(ErrorType.ErrorUnexpectedEndOfExpression, this.previous()); // Back up to get the last token before the EOF
225
+ }
226
+ throw this.buildError(ErrorType.ErrorUnexpectedSymbol, this.peek());
227
+ }
228
+ // match consumes the next token if it matches any of the given types
229
+ match(...tokenTypes) {
230
+ for (const tokenType of tokenTypes) {
231
+ if (this.check(tokenType)) {
232
+ this.next();
233
+ return true;
234
+ }
235
+ }
236
+ return false;
237
+ }
238
+ // check peeks whether the next token is of the given type
239
+ check(tokenType) {
240
+ if (this.atEnd()) {
241
+ return false;
242
+ }
243
+ return this.peek().type == tokenType;
244
+ }
245
+ // atEnd peeks whether the next token is EOF
246
+ atEnd() {
247
+ return this.peek().type == TokenType.EOF;
248
+ }
249
+ next() {
250
+ if (!this.atEnd()) {
251
+ this.offset++;
252
+ }
253
+ return this.previous();
254
+ }
255
+ peek() {
256
+ return this.tokens[this.offset];
257
+ }
258
+ // previous returns the previous token
259
+ previous() {
260
+ return this.tokens[this.offset - 1];
261
+ }
262
+ // consume attempts to consume the next token if it matches the given type. It returns an error of
263
+ // the given ParseErrorKind otherwise.
264
+ consume(tokenType, errorType) {
265
+ if (this.check(tokenType)) {
266
+ this.next();
267
+ return;
268
+ }
269
+ throw this.buildError(errorType, this.peek());
270
+ }
271
+ incrDepth() {
272
+ this.depth++;
273
+ if (this.depth > MAX_PARSER_DEPTH) {
274
+ throw this.buildError(ErrorType.ErrorExceededMaxDepth, this.peek());
275
+ }
276
+ }
277
+ decrDepth() {
278
+ this.depth--;
279
+ }
280
+ buildError(errType, token) {
281
+ return new ExpressionError(errType, token);
282
+ }
283
+ }
284
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import * as data from "./data";
2
+ export declare function falsy(d: data.ExpressionData): boolean;
3
+ export declare function truthy(d: data.ExpressionData): boolean;
4
+ export declare function coerceTypes(li: data.ExpressionData, ri: data.ExpressionData): [data.ExpressionData, data.ExpressionData];
5
+ export declare function equals(lhs: data.ExpressionData, rhs: data.ExpressionData): boolean;
6
+ export declare function greaterThan(lhs: data.ExpressionData, rhs: data.ExpressionData): boolean;
7
+ export declare function lessThan(lhs: data.ExpressionData, rhs: data.ExpressionData): boolean;
8
+ export declare function toUpperSpecial(s: string): string;
9
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAiBrD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAEtD;AAID,wBAAgB,WAAW,CACzB,EAAE,EAAE,IAAI,CAAC,cAAc,EACvB,EAAE,EAAE,IAAI,CAAC,cAAc,GACtB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CA4C5C;AAID,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CA6ClF;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAqCvF;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAqCpF;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBhD"}
package/dist/result.js ADDED
@@ -0,0 +1,190 @@
1
+ import * as data from "./data";
2
+ export function falsy(d) {
3
+ switch (d.kind) {
4
+ case data.Kind.Null:
5
+ return true;
6
+ case data.Kind.Boolean:
7
+ return !d.value;
8
+ case data.Kind.Number: {
9
+ const dv = d.value;
10
+ return dv === 0 || isNaN(dv);
11
+ }
12
+ case data.Kind.String:
13
+ return d.value.length === 0;
14
+ }
15
+ return false;
16
+ }
17
+ export function truthy(d) {
18
+ return !falsy(d);
19
+ }
20
+ // Similar to the Javascript abstract equality comparison algorithm http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3.
21
+ // Except objects are not coerced to primitives.
22
+ export function coerceTypes(li, ri) {
23
+ let lv = li;
24
+ let rv = ri;
25
+ // Do nothing, same kind
26
+ if (li.kind === ri.kind) {
27
+ return [lv, rv];
28
+ }
29
+ switch (li.kind) {
30
+ // Number, String
31
+ case data.Kind.Number:
32
+ if (ri.kind === data.Kind.String) {
33
+ rv = new data.NumberData(ri.number());
34
+ return [lv, rv];
35
+ }
36
+ break;
37
+ // String, Number
38
+ case data.Kind.String:
39
+ if (ri.kind === data.Kind.Number) {
40
+ lv = new data.NumberData(li.number());
41
+ return [lv, rv];
42
+ }
43
+ break;
44
+ // Boolean|Null, Any
45
+ case data.Kind.Null:
46
+ case data.Kind.Boolean:
47
+ lv = new data.NumberData(li.number());
48
+ return coerceTypes(lv, rv);
49
+ }
50
+ // Any, Boolean|Null
51
+ switch (ri.kind) {
52
+ case data.Kind.Null:
53
+ case data.Kind.Boolean:
54
+ rv = new data.NumberData(ri.number());
55
+ return coerceTypes(lv, rv);
56
+ }
57
+ return [lv, rv];
58
+ }
59
+ // Similar to the Javascript abstract equality comparison algorithm http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3.
60
+ // Except string comparison is OrdinalIgnoreCase, and objects are not coerced to primitives.
61
+ export function equals(lhs, rhs) {
62
+ const [lv, rv] = coerceTypes(lhs, rhs);
63
+ if (lv.kind != rv.kind) {
64
+ return false;
65
+ }
66
+ switch (lv.kind) {
67
+ // Null, Null
68
+ case data.Kind.Null:
69
+ return true;
70
+ // Number, Number
71
+ case data.Kind.Number: {
72
+ const ld = lv.value;
73
+ const rd = rv.value;
74
+ if (isNaN(ld) || isNaN(rd)) {
75
+ return false;
76
+ }
77
+ return ld == rd;
78
+ }
79
+ // String, String
80
+ case data.Kind.String: {
81
+ const ls = lv.value;
82
+ const rs = rv.value;
83
+ return toUpperSpecial(ls) === toUpperSpecial(rs);
84
+ }
85
+ // Boolean, Boolean
86
+ case data.Kind.Boolean: {
87
+ const lb = lv.value;
88
+ const rb = rv.value;
89
+ return lb == rb;
90
+ }
91
+ // Object, Object
92
+ case data.Kind.Dictionary:
93
+ case data.Kind.Array:
94
+ // Check reference equality
95
+ return lv === rv;
96
+ }
97
+ return false;
98
+ }
99
+ // Similar to the Javascript abstract equality comparison algorithm http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3.
100
+ // Except string comparison is OrdinalIgnoreCase, and objects are not coerced to primitives.
101
+ export function greaterThan(lhs, rhs) {
102
+ const [lv, rv] = coerceTypes(lhs, rhs);
103
+ if (lv.kind != rv.kind) {
104
+ return false;
105
+ }
106
+ switch (lv.kind) {
107
+ // Number, Number
108
+ case data.Kind.Number: {
109
+ const lf = lv.value;
110
+ const rf = rv.value;
111
+ if (isNaN(lf) || isNaN(rf)) {
112
+ return false;
113
+ }
114
+ return lf > rf;
115
+ }
116
+ // String, String
117
+ case data.Kind.String: {
118
+ let ls = lv.value;
119
+ let rs = rv.value;
120
+ ls = toUpperSpecial(ls);
121
+ rs = toUpperSpecial(rs);
122
+ return ls > rs;
123
+ }
124
+ // Boolean, Boolean
125
+ case data.Kind.Boolean: {
126
+ const lb = lv.value;
127
+ const rb = rv.value;
128
+ return lb && !rb;
129
+ }
130
+ }
131
+ return false;
132
+ }
133
+ // Similar to the Javascript abstract equality comparison algorithm http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3.
134
+ // Except string comparison is OrdinalIgnoreCase, and objects are not coerced to primitives.
135
+ export function lessThan(lhs, rhs) {
136
+ const [lv, rv] = coerceTypes(lhs, rhs);
137
+ if (lv.kind != rv.kind) {
138
+ return false;
139
+ }
140
+ switch (lv.kind) {
141
+ // Number, Number
142
+ case data.Kind.Number: {
143
+ const lf = lv.value;
144
+ const rf = rv.value;
145
+ if (isNaN(lf) || isNaN(rf)) {
146
+ return false;
147
+ }
148
+ return lf < rf;
149
+ }
150
+ // String, String
151
+ case data.Kind.String: {
152
+ let ls = lv.value;
153
+ let rs = rv.value;
154
+ ls = toUpperSpecial(ls);
155
+ rs = toUpperSpecial(rs);
156
+ return ls < rs;
157
+ }
158
+ // Boolean, Boolean
159
+ case data.Kind.Boolean: {
160
+ const lb = lv.value;
161
+ const rb = rv.value;
162
+ return !lb && rb;
163
+ }
164
+ }
165
+ return false;
166
+ }
167
+ // Do not toUpper the small-dotless-ı
168
+ export function toUpperSpecial(s) {
169
+ const sb = [];
170
+ let i = 0;
171
+ const len = s.length;
172
+ let found = s.indexOf("ı");
173
+ while (i < len) {
174
+ if (i < found) {
175
+ sb.push(s.substring(i, found).toUpperCase()); // Append upper segment
176
+ i = found;
177
+ }
178
+ else if (i == found) {
179
+ sb.push(s.substring(i, i + 1));
180
+ i += 1;
181
+ found = s.indexOf("ı", i);
182
+ }
183
+ else {
184
+ sb.push(s.substring(i).toUpperCase()); // Append upper remaining
185
+ break;
186
+ }
187
+ }
188
+ return sb.join("");
189
+ }
190
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,MAAM,UAAU,KAAK,CAAC,CAAsB;IAC1C,QAAQ,CAAC,CAAC,IAAI,EAAE;QACd,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;YACjB,OAAO,IAAI,CAAC;QAEd,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YACpB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAElB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;YACnB,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;SAC9B;QACD,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;YACnB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KAC/B;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAsB;IAC3C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,+HAA+H;AAC/H,gDAAgD;AAChD,MAAM,UAAU,WAAW,CACzB,EAAuB,EACvB,EAAuB;IAEvB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;IAEZ,wBAAwB;IACxB,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;QACvB,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACjB;IAED,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChC,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;aACjB;YAED,MAAM;QAER,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChC,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;aACjB;YAED,MAAM;QAER,oBAAoB;QACpB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YACpB,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAC9B;IAED,oBAAoB;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YACpB,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,+HAA+H;AAC/H,4FAA4F;AAC5F,MAAM,UAAU,MAAM,CAAC,GAAwB,EAAE,GAAwB;IACvE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEvC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE;QACtB,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,aAAa;QACb,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;YACjB,OAAO,IAAI,CAAC;QAEd,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,GAAI,EAAsB,CAAC,KAAK,CAAC;YACzC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YAED,OAAO,EAAE,IAAI,EAAE,CAAC;SACjB;QAED,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,GAAI,EAAsB,CAAC,KAAK,CAAC;YACzC,OAAO,cAAc,CAAC,EAAE,CAAC,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC;SAClD;QAED,mBAAmB;QACnB,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,GAAI,EAAuB,CAAC,KAAK,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,CAAC;SACjB;QAED,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC1B,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK;YAClB,2BAA2B;YAC3B,OAAO,EAAE,KAAK,EAAE,CAAC;KACpB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+HAA+H;AAC/H,4FAA4F;AAC5F,MAAM,UAAU,WAAW,CAAC,GAAwB,EAAE,GAAwB;IAC5E,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEvC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE;QACtB,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,GAAI,EAAsB,CAAC,KAAK,CAAC;YACzC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YAED,OAAO,EAAE,GAAG,EAAE,CAAC;SAChB;QAED,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YAClB,IAAI,EAAE,GAAI,EAAsB,CAAC,KAAK,CAAC;YACvC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,OAAO,EAAE,GAAG,EAAE,CAAC;SAChB;QAED,mBAAmB;QACnB,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,GAAI,EAAuB,CAAC,KAAK,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;SAClB;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+HAA+H;AAC/H,4FAA4F;AAC5F,MAAM,UAAU,QAAQ,CAAC,GAAwB,EAAE,GAAwB;IACzE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEvC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE;QACtB,OAAO,KAAK,CAAC;KACd;IAED,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,GAAI,EAAsB,CAAC,KAAK,CAAC;YACzC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YAED,OAAO,EAAE,GAAG,EAAE,CAAC;SAChB;QAED,iBAAiB;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YAClB,IAAI,EAAE,GAAI,EAAsB,CAAC,KAAK,CAAC;YACvC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,OAAO,EAAE,GAAG,EAAE,CAAC;SAChB;QAED,mBAAmB;QACnB,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,GAAI,EAAuB,CAAC,KAAK,CAAC;YAC1C,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;SAClB;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,MAAM,EAAE,GAAa,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,GAAG,EAAE;QACd,IAAI,CAAC,GAAG,KAAK,EAAE;YACb,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,uBAAuB;YACrE,CAAC,GAAG,KAAK,CAAC;SACX;aAAM,IAAI,CAAC,IAAI,KAAK,EAAE;YACrB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,IAAI,CAAC,CAAC;YACP,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC3B;aAAM;YACL,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,yBAAyB;YAChE,MAAM;SACP;KACF;IAED,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@actions/expressions",
3
+ "version": "0.2.0",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "source": "./src/index.ts",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./*": {
15
+ "import": "./dist/*.js"
16
+ }
17
+ },
18
+ "typesVersions": {
19
+ "*": {
20
+ ".": [
21
+ "dist/index.d.ts"
22
+ ],
23
+ "*": [
24
+ "dist/*.d.ts"
25
+ ]
26
+ }
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/actions/languageservices"
31
+ },
32
+ "scripts": {
33
+ "build": "tsc --build tsconfig.build.json",
34
+ "clean": "rimraf dist",
35
+ "format": "prettier --write '**/*.ts'",
36
+ "format-check": "prettier --check '**/*.ts'",
37
+ "lint": "eslint 'src/**/*.ts'",
38
+ "lint-fix": "eslint --fix 'src/**/*.ts'",
39
+ "prepublishOnly": "npm run build && npm run test",
40
+ "test": "NODE_OPTIONS=\"--experimental-vm-modules\" jest",
41
+ "test-watch": "NODE_OPTIONS=\"--experimental-vm-modules\" jest --watch",
42
+ "watch": "tsc --build tsconfig.build.json --watch"
43
+ },
44
+ "engines": {
45
+ "node": ">= 16.15"
46
+ },
47
+ "files": [
48
+ "dist/**/*"
49
+ ],
50
+ "devDependencies": {
51
+ "@types/jest": "^29.0.3",
52
+ "@typescript-eslint/eslint-plugin": "^5.56.0",
53
+ "@typescript-eslint/parser": "^5.56.0",
54
+ "eslint": "^8.36.0",
55
+ "eslint-config-prettier": "^8.8.0",
56
+ "eslint-plugin-prettier": "^4.2.1",
57
+ "jest": "^29.0.3",
58
+ "prettier": "^2.8.3",
59
+ "rimraf": "^3.0.2",
60
+ "ts-jest": "^29.0.3",
61
+ "typescript": "^4.7.4"
62
+ },
63
+ "gitHead": "b79d0e8e4706e94ce93ca367f47bc4207c8dedfa"
64
+ }