@apexdevtools/apex-parser 4.2.0 → 4.3.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/README.md +2 -2
- package/lib/ApexLexer.d.ts +135 -134
- package/lib/ApexLexer.js +1369 -1361
- package/lib/ApexLexer.js.map +1 -1
- package/lib/ApexParser.d.ts +146 -137
- package/lib/ApexParser.js +1775 -1637
- package/lib/ApexParser.js.map +1 -1
- package/lib/__tests__/ApexLexerTest.js +19 -10
- package/lib/__tests__/ApexLexerTest.js.map +1 -1
- package/lib/__tests__/SOQLParserTest.js +22 -0
- package/lib/__tests__/SOQLParserTest.js.map +1 -1
- package/lib/__tests__/SOSLParserTest.js +35 -0
- package/lib/__tests__/SOSLParserTest.js.map +1 -1
- package/lib/__tests__/SyntaxErrorCounter.d.ts +4 -2
- package/lib/__tests__/SyntaxErrorCounter.js +10 -1
- package/lib/__tests__/SyntaxErrorCounter.js.map +1 -1
- package/package.json +1 -1
- package/CHANGELOG.md +0 -48
|
@@ -13,27 +13,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
3. The name of the author may not be used to endorse or promote products
|
|
14
14
|
derived from this software without specific prior written permission.
|
|
15
15
|
*/
|
|
16
|
-
const ApexLexer_1 = require("../ApexLexer");
|
|
17
|
-
const CaseInsensitiveInputStream_1 = require("../CaseInsensitiveInputStream");
|
|
18
16
|
const antlr4ts_1 = require("antlr4ts");
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
const SyntaxErrorCounter_1 = require("./SyntaxErrorCounter");
|
|
18
|
+
test("Lexer generates tokens", () => {
|
|
19
|
+
const [lexer, errorCounter] = (0, SyntaxErrorCounter_1.createLexer)("public class Hello {}", false);
|
|
21
20
|
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
22
21
|
expect(tokens.getNumberOfOnChannelTokens()).toBe(6);
|
|
22
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
23
23
|
});
|
|
24
|
-
test(
|
|
25
|
-
const lexer =
|
|
24
|
+
test("Case insensitivity", () => {
|
|
25
|
+
const [lexer, errorCounter] = (0, SyntaxErrorCounter_1.createLexer)("public");
|
|
26
26
|
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
27
27
|
expect(tokens.getNumberOfOnChannelTokens()).toBe(2);
|
|
28
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
28
29
|
});
|
|
29
|
-
test(
|
|
30
|
-
const lexer =
|
|
30
|
+
test("Case insensitivity (upper case)", () => {
|
|
31
|
+
const [lexer, errorCounter] = (0, SyntaxErrorCounter_1.createLexer)("PUBLIC");
|
|
31
32
|
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
32
33
|
expect(tokens.getNumberOfOnChannelTokens()).toBe(2);
|
|
34
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
33
35
|
});
|
|
34
|
-
test(
|
|
35
|
-
const lexer =
|
|
36
|
+
test("Case insensitivity (mixed case)", () => {
|
|
37
|
+
const [lexer, errorCounter] = (0, SyntaxErrorCounter_1.createLexer)("PuBliC");
|
|
36
38
|
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
37
39
|
expect(tokens.getNumberOfOnChannelTokens()).toBe(2);
|
|
40
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
41
|
+
});
|
|
42
|
+
test("Lexer unicode escapes", () => {
|
|
43
|
+
const [lexer, errorCounter] = (0, SyntaxErrorCounter_1.createLexer)("'Fran\\u00E7ois'", false);
|
|
44
|
+
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
45
|
+
expect(tokens.getNumberOfOnChannelTokens()).toBe(2);
|
|
46
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
38
47
|
});
|
|
39
48
|
//# sourceMappingURL=ApexLexerTest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApexLexerTest.js","sourceRoot":"","sources":["../../src/__tests__/ApexLexerTest.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;GAYG;AACH,
|
|
1
|
+
{"version":3,"file":"ApexLexerTest.js","sourceRoot":"","sources":["../../src/__tests__/ApexLexerTest.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;GAYG;AACH,uCAA6C;AAC7C,6DAAmD;AAEnD,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,IAAA,gCAAW,EAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,IAAA,gCAAW,EAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACzC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,IAAA,gCAAW,EAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACzC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,IAAA,gCAAW,EAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IAC/B,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,IAAA,gCAAW,EAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
|
@@ -90,4 +90,26 @@ test("Grouping function", () => {
|
|
|
90
90
|
expect(context).toBeInstanceOf(ApexParser_1.QueryContext);
|
|
91
91
|
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
92
92
|
});
|
|
93
|
+
test("Convert Currency function", () => {
|
|
94
|
+
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)('[ SELECT convertCurrency(Amount) FROM Opportunity ]');
|
|
95
|
+
const context = parser.soqlLiteral();
|
|
96
|
+
expect(context).toBeInstanceOf(ApexParser_1.SoqlLiteralContext);
|
|
97
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
98
|
+
});
|
|
99
|
+
test("Convert Currency with format", () => {
|
|
100
|
+
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)(`[
|
|
101
|
+
SELECT Amount, FORMAT(amount) Amt, convertCurrency(amount) convertedAmount,
|
|
102
|
+
FORMAT(convertCurrency(amount)) convertedCurrency
|
|
103
|
+
FROM Opportunity where id = '006R00000024gDtIAI'
|
|
104
|
+
]`);
|
|
105
|
+
const context = parser.soqlLiteral();
|
|
106
|
+
expect(context).toBeInstanceOf(ApexParser_1.SoqlLiteralContext);
|
|
107
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
108
|
+
});
|
|
109
|
+
test("Format function with aggregate", () => {
|
|
110
|
+
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)('[ SELECT FORMAT(MIN(closedate)) Amt FROM opportunity ]');
|
|
111
|
+
const context = parser.soqlLiteral();
|
|
112
|
+
expect(context).toBeInstanceOf(ApexParser_1.SoqlLiteralContext);
|
|
113
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
114
|
+
});
|
|
93
115
|
//# sourceMappingURL=SOQLParserTest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SOQLParserTest.js","sourceRoot":"","sources":["../../src/__tests__/SOQLParserTest.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;GAYG;AACH,
|
|
1
|
+
{"version":3,"file":"SOQLParserTest.js","sourceRoot":"","sources":["../../src/__tests__/SOQLParserTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,4 +63,39 @@ test('testToLabel', () => {
|
|
|
63
63
|
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
64
64
|
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
65
65
|
});
|
|
66
|
+
test('testToLabelWithAlias', () => {
|
|
67
|
+
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[FIND :searchTerm IN ALL FIELDS RETURNING Account(Id, toLabel(Name) AliasName) LIMIT 10]");
|
|
68
|
+
const context = parser.soslLiteral();
|
|
69
|
+
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
70
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
71
|
+
});
|
|
72
|
+
test('testConvertCurrency', () => {
|
|
73
|
+
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)(`[
|
|
74
|
+
FIND 'test' RETURNING Opportunity(
|
|
75
|
+
Name,
|
|
76
|
+
convertCurrency(Amount),
|
|
77
|
+
convertCurrency(Amount) AliasCurrency
|
|
78
|
+
)
|
|
79
|
+
]`);
|
|
80
|
+
const context = parser.soslLiteral();
|
|
81
|
+
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
82
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
83
|
+
});
|
|
84
|
+
test('testConvertCurrencyWithFormat', () => {
|
|
85
|
+
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)(`[
|
|
86
|
+
FIND 'Acme' RETURNING Account(
|
|
87
|
+
AnnualRevenue,
|
|
88
|
+
FORMAT(convertCurrency(AnnualRevenue)) convertedCurrency
|
|
89
|
+
)
|
|
90
|
+
]`);
|
|
91
|
+
const context = parser.soslLiteral();
|
|
92
|
+
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
93
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
94
|
+
});
|
|
95
|
+
test('testFormatWithAggregate', () => {
|
|
96
|
+
const [parser, errorCounter] = (0, SyntaxErrorCounter_1.createParser)("[ FIND 'Acme' RETURNING Account(AnnualRevenue, FORMAT(MIN(CloseDate))) ]");
|
|
97
|
+
const context = parser.soslLiteral();
|
|
98
|
+
expect(context).toBeInstanceOf(ApexParser_1.SoslLiteralContext);
|
|
99
|
+
expect(errorCounter.getNumErrors()).toEqual(0);
|
|
100
|
+
});
|
|
66
101
|
//# sourceMappingURL=SOSLParserTest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SOSLParserTest.js","sourceRoot":"","sources":["../../src/__tests__/SOSLParserTest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SOSLParserTest.js","sourceRoot":"","sources":["../../src/__tests__/SOSLParserTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ANTLRErrorListener, RecognitionException, Recognizer, Token } from "antlr4ts";
|
|
2
|
+
import { ApexLexer } from "../ApexLexer";
|
|
2
3
|
import { ApexParser } from "../ApexParser";
|
|
3
|
-
export declare class SyntaxErrorCounter implements ANTLRErrorListener<
|
|
4
|
+
export declare class SyntaxErrorCounter<T = Token> implements ANTLRErrorListener<T> {
|
|
4
5
|
numErrors: number;
|
|
5
|
-
syntaxError(recognizer: Recognizer<
|
|
6
|
+
syntaxError(recognizer: Recognizer<T, any>, offendingSymbol: T, line: number, charPositionInLine: number, msg: string, e: RecognitionException | undefined): any;
|
|
6
7
|
getNumErrors(): number;
|
|
7
8
|
}
|
|
9
|
+
export declare function createLexer(input: string, caseInsensitive?: boolean): [ApexLexer, SyntaxErrorCounter<number>];
|
|
8
10
|
export declare function createParser(input: string): [ApexParser, SyntaxErrorCounter];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createParser = exports.SyntaxErrorCounter = void 0;
|
|
3
|
+
exports.createParser = exports.createLexer = exports.SyntaxErrorCounter = void 0;
|
|
4
4
|
/*
|
|
5
5
|
Copyright (c) 2021 Kevin Jones, All rights reserved.
|
|
6
6
|
Redistribution and use in source and binary forms, with or without
|
|
@@ -30,6 +30,15 @@ class SyntaxErrorCounter {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
exports.SyntaxErrorCounter = SyntaxErrorCounter;
|
|
33
|
+
function createLexer(input, caseInsensitive = true) {
|
|
34
|
+
const stream = antlr4ts_1.CharStreams.fromString(input);
|
|
35
|
+
const lexer = new ApexLexer_1.ApexLexer(caseInsensitive ? new CaseInsensitiveInputStream_1.CaseInsensitiveInputStream(stream) : stream);
|
|
36
|
+
lexer.removeErrorListeners();
|
|
37
|
+
const errorCounter = new SyntaxErrorCounter();
|
|
38
|
+
lexer.addErrorListener(errorCounter);
|
|
39
|
+
return [lexer, errorCounter];
|
|
40
|
+
}
|
|
41
|
+
exports.createLexer = createLexer;
|
|
33
42
|
function createParser(input) {
|
|
34
43
|
const lexer = new ApexLexer_1.ApexLexer(new CaseInsensitiveInputStream_1.CaseInsensitiveInputStream(antlr4ts_1.CharStreams.fromString(input)));
|
|
35
44
|
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyntaxErrorCounter.js","sourceRoot":"","sources":["../../src/__tests__/SyntaxErrorCounter.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,
|
|
1
|
+
{"version":3,"file":"SyntaxErrorCounter.js","sourceRoot":"","sources":["../../src/__tests__/SyntaxErrorCounter.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,uCAOkB;AAClB,4CAAyC;AACzC,8CAA2C;AAC3C,8EAA2E;AAE3E,MAAa,kBAAkB;IAA/B;QACI,cAAS,GAAG,CAAC,CAAC;IAgBlB,CAAC;IAdG,WAAW,CACP,UAA8B,EAC9B,eAAkB,EAClB,IAAY,EACZ,kBAA0B,EAC1B,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CACJ;AAjBD,gDAiBC;AAED,SAAgB,WAAW,CACvB,KAAa,EACb,kBAA2B,IAAI;IAE/B,MAAM,MAAM,GAAG,sBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,qBAAS,CACvB,eAAe,CAAC,CAAC,CAAC,IAAI,uDAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CACpE,CAAC;IAEF,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAU,CAAC;IACtD,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAErC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjC,CAAC;AAdD,kCAcC;AAED,SAAgB,YAAY,CAAC,KAAa;IACtC,MAAM,KAAK,GAAG,IAAI,qBAAS,CACvB,IAAI,uDAA0B,CAAC,sBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,4BAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC9C,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEtC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAClC,CAAC;AAZD,oCAYC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apexdevtools/apex-parser",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.1",
|
|
4
4
|
"author": "Apex Dev Tools Team <apexdevtools@gmail.com> (https://github.com/apex-dev-tools)",
|
|
5
5
|
"bugs": "https://github.com/apex-dev-tools/apex-parser/issues",
|
|
6
6
|
"description": "Javascript parser for Salesforce Apex Language",
|
package/CHANGELOG.md
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# apex-parser - Changelog
|
|
2
|
-
|
|
3
|
-
## 4.2.0 - 2024-09-02
|
|
4
|
-
|
|
5
|
-
- Add support for multiple nested SOQL sub queries
|
|
6
|
-
- Add support for `GROUPING` in SOQL query
|
|
7
|
-
- Add support for `toLabel` in SOSL query
|
|
8
|
-
|
|
9
|
-
## 4.1.0 - 2024-05-12
|
|
10
|
-
|
|
11
|
-
- Allow WITH USER_MODE or SYSTEM_MODE on SOSL queries
|
|
12
|
-
|
|
13
|
-
## 4.0.0 - 2024-03-28
|
|
14
|
-
|
|
15
|
-
- Correct trigger body parsing to allow member declarations
|
|
16
|
-
- Add support for TYPEOF in SOQL subqueries
|
|
17
|
-
- Change com.nawforce.apexparser packages to io.github.apexdevtools.apexparser
|
|
18
|
-
|
|
19
|
-
## 3.6.0 - 2024-02-15
|
|
20
|
-
|
|
21
|
-
- Add null coalesce operator and expression
|
|
22
|
-
|
|
23
|
-
## 3.5.0 - 2023-10-15
|
|
24
|
-
|
|
25
|
-
- Correct do-while to require block rather than statement
|
|
26
|
-
|
|
27
|
-
## 3.4.0 - 2023-08-22
|
|
28
|
-
|
|
29
|
-
- Support +/- sequences on numeric literals in switch 'when' expressions
|
|
30
|
-
|
|
31
|
-
## 3.3.0 - 2023-04-30
|
|
32
|
-
|
|
33
|
-
- Update to ANTLR 4.9.1
|
|
34
|
-
|
|
35
|
-
## 3.2.0 - 2023-01-24
|
|
36
|
-
|
|
37
|
-
- Adds user/system mode on DML and within SOQL queries
|
|
38
|
-
|
|
39
|
-
## 3.1.0 - 2022-11-17
|
|
40
|
-
|
|
41
|
-
- Adds DISTANCE and GEOLOCATION literals for SOQL.
|
|
42
|
-
- Removes support for modulus operator to match apex.
|
|
43
|
-
- Use of `void.class` no longer causes syntax error.
|
|
44
|
-
- Now supports newer Date literals from API 55.
|
|
45
|
-
|
|
46
|
-
## 3.0.0 - 2022-06-14
|
|
47
|
-
|
|
48
|
-
- Initial github release.
|