@apexdevtools/apex-parser 5.0.0-beta.2 → 5.0.0-beta.3

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 (43) hide show
  1. package/CHANGELOG.md +5 -2
  2. package/{lib → dist/src}/ApexErrorListener.d.ts +1 -1
  3. package/{lib → dist/src}/ApexErrorListener.js +8 -11
  4. package/dist/src/ApexErrorListener.js.map +1 -0
  5. package/{lib → dist/src}/ApexParserFactory.d.ts +4 -4
  6. package/{lib → dist/src}/ApexParserFactory.js +14 -23
  7. package/dist/src/ApexParserFactory.js.map +1 -0
  8. package/{lib → dist/src}/CaseInsensitiveInputStream.js +2 -6
  9. package/dist/src/CaseInsensitiveInputStream.js.map +1 -0
  10. package/{lib → dist/src}/Check.js +30 -37
  11. package/dist/src/Check.js.map +1 -0
  12. package/dist/src/antlr/ApexLexer.js +1573 -0
  13. package/{lib → dist/src}/antlr/ApexLexer.js.map +1 -1
  14. package/{lib → dist/src}/antlr/ApexParser.js +1935 -2125
  15. package/dist/src/antlr/ApexParser.js.map +1 -0
  16. package/dist/src/antlr/ApexParserListener.js +1893 -0
  17. package/dist/src/antlr/ApexParserListener.js.map +1 -0
  18. package/dist/src/antlr/ApexParserVisitor.js +1136 -0
  19. package/dist/src/antlr/ApexParserVisitor.js.map +1 -0
  20. package/dist/src/index.d.ts +9 -0
  21. package/dist/src/index.js +37 -0
  22. package/dist/src/index.js.map +1 -0
  23. package/package.json +27 -15
  24. package/patches/antlr4+4.13.2.patch +717 -0
  25. package/lib/ApexErrorListener.js.map +0 -1
  26. package/lib/ApexParserFactory.js.map +0 -1
  27. package/lib/CaseInsensitiveInputStream.js.map +0 -1
  28. package/lib/Check.js.map +0 -1
  29. package/lib/antlr/ApexLexer.js +0 -1575
  30. package/lib/antlr/ApexParser.js.map +0 -1
  31. package/lib/antlr/ApexParserListener.js +0 -12
  32. package/lib/antlr/ApexParserListener.js.map +0 -1
  33. package/lib/antlr/ApexParserVisitor.js +0 -15
  34. package/lib/antlr/ApexParserVisitor.js.map +0 -1
  35. package/lib/index.d.ts +0 -9
  36. package/lib/index.js +0 -58
  37. package/lib/index.js.map +0 -1
  38. /package/{lib → dist/src}/CaseInsensitiveInputStream.d.ts +0 -0
  39. /package/{lib → dist/src}/Check.d.ts +0 -0
  40. /package/{lib → dist/src}/antlr/ApexLexer.d.ts +0 -0
  41. /package/{lib → dist/src}/antlr/ApexParser.d.ts +0 -0
  42. /package/{lib → dist/src}/antlr/ApexParserListener.d.ts +0 -0
  43. /package/{lib → dist/src}/antlr/ApexParserVisitor.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -36,14 +36,17 @@
36
36
  - A rule `expr*` generates `expr_list()` and `expr(number)`.
37
37
  - By contrast Java would have overloads of `expr()`/`expr(int)` returning list or value.
38
38
 
39
+ - **(BREAKING)** Updated to ES Module format. Node 20/22, TypeScript 5.9 support `require(esm)`.
40
+ - Increased min node version to 20.
41
+ - `antlr4` has been temporarily patched to fix module resolution of the type declaration files.
42
+ - TS ESM projects not using `"module": "node20"` or above may produce type errors (without `skipLibCheck`).
43
+
39
44
  - **(BREAKING)** Re-exported antlr classes `CommonTokenStream` and `ParseTreeWalker` removed.
40
45
  - Added type aliases like `ApexTokenStream`, `ApexParseTree`, and more to use with listener/visitor/walker.
41
46
  - For the walker, use `ApexParseTreeWalker.DEFAULT`. Same instance but typed for `ApexParserListener` and `ApexParseTree`.
42
47
  - It should no longer be required to depend on `antlr4` package directly.
43
48
  - Can still add the package as a dependency, but remember to match the version `apex-parser` uses.
44
49
 
45
- - **(BREAKING)** Updated output to `ES2020` and increased min node version to 16.
46
-
47
50
  - `CaseInsensitiveInputStream` (deprecated) type now extends `CharStream` and can be constructed from `string`.
48
51
  - Constructor passing in `CharStream` retained to match Java version.
49
52
 
@@ -1,4 +1,4 @@
1
- import { ErrorListener, RecognitionException, Recognizer, Token } from "antlr4";
1
+ import { ErrorListener, type RecognitionException, type Recognizer, type Token } from "antlr4";
2
2
  /**
3
3
  * Base `ErrorListener` for Apex parsers.
4
4
  *
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ThrowingErrorListener = exports.ApexSyntaxError = exports.ApexErrorListener = void 0;
4
1
  /*
5
2
  [The "BSD licence"]
6
3
  Copyright (c) 2025 Kevin Jones, Certinia Inc.
@@ -28,19 +25,21 @@ exports.ThrowingErrorListener = exports.ApexSyntaxError = exports.ApexErrorListe
28
25
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29
26
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
27
  */
31
- const antlr4_1 = require("antlr4");
28
+ import { ErrorListener, } from "antlr4";
32
29
  /**
33
30
  * Base `ErrorListener` for Apex parsers.
34
31
  *
35
32
  * Implement `apexSyntaxError()` to set behaviour.
36
33
  */
37
- class ApexErrorListener extends antlr4_1.ErrorListener {
34
+ export class ApexErrorListener extends ErrorListener {
38
35
  syntaxError(recognizer, offendingSymbol, line, column, msg, e) {
39
36
  this.apexSyntaxError(line, column, msg);
40
37
  }
41
38
  }
42
- exports.ApexErrorListener = ApexErrorListener;
43
- class ApexSyntaxError extends Error {
39
+ export class ApexSyntaxError extends Error {
40
+ line;
41
+ column;
42
+ message;
44
43
  constructor(line, column, message) {
45
44
  super(message);
46
45
  this.line = line;
@@ -48,17 +47,15 @@ class ApexSyntaxError extends Error {
48
47
  this.name = this.constructor.name;
49
48
  }
50
49
  }
51
- exports.ApexSyntaxError = ApexSyntaxError;
52
50
  /**
53
51
  * `ApexErrorListener` that throws an `ApexSyntaxError` on first reported error.
54
52
  *
55
53
  * Use ThrowingErrorListener.INSTANCE to share across parsers.
56
54
  */
57
- class ThrowingErrorListener extends ApexErrorListener {
55
+ export class ThrowingErrorListener extends ApexErrorListener {
56
+ static INSTANCE = new ThrowingErrorListener();
58
57
  apexSyntaxError(line, column, msg) {
59
58
  throw new ApexSyntaxError(line, column, msg);
60
59
  }
61
60
  }
62
- exports.ThrowingErrorListener = ThrowingErrorListener;
63
- ThrowingErrorListener.INSTANCE = new ThrowingErrorListener();
64
61
  //# sourceMappingURL=ApexErrorListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApexErrorListener.js","sourceRoot":"","sources":["../../src/ApexErrorListener.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BE;AACF,OAAO,EACL,aAAa,GAId,MAAM,QAAQ,CAAC;AAEhB;;;;GAIG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,aAAoB;IAGlE,WAAW,CACT,UAA6B,EAC7B,eAAsB,EACtB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,CAAmC;QAEnC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,IAAI,CAAS;IACb,MAAM,CAAS;IACf,OAAO,CAAU;IAEjB,YAAY,IAAY,EAAE,MAAc,EAAE,OAAe;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IAC1D,MAAM,CAAU,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAEvD,eAAe,CAAC,IAAY,EAAE,MAAc,EAAE,GAAW;QACvD,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { CommonTokenStream, ErrorNode, ParserRuleContext, ParseTree, ParseTreeListener, ParseTreeVisitor, ParseTreeWalker, RuleNode, TerminalNode, Token } from "antlr4";
2
- import ApexParserListener from "./antlr/ApexParserListener";
3
- import ApexParserVisitor from "./antlr/ApexParserVisitor";
4
- import ApexLexer from "./antlr/ApexLexer";
5
- import ApexParser from "./antlr/ApexParser";
2
+ import type ApexParserListener from "./antlr/ApexParserListener.js";
3
+ import type ApexParserVisitor from "./antlr/ApexParserVisitor.js";
4
+ import ApexLexer from "./antlr/ApexLexer.js";
5
+ import ApexParser from "./antlr/ApexParser.js";
6
6
  export type ApexParserRuleContext = ParserRuleContext;
7
7
  export type ApexErrorNode = ErrorNode;
8
8
  export type ApexParseTree = ParseTree;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /*
3
2
  [The "BSD licence"]
4
3
  Copyright (c) 2025 Kevin Jones, Certinia Inc.
@@ -26,41 +25,37 @@
26
25
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
26
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
27
  */
29
- var _a, _b;
30
- Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.ApexParseTreeWalker = exports.ApexParserBaseListener = exports.ApexParserBaseVisitor = exports.ApexParserFactory = void 0;
32
- const antlr4_1 = require("antlr4");
33
- const ApexLexer_1 = require("./antlr/ApexLexer");
34
- const ApexParser_1 = require("./antlr/ApexParser");
35
- const ApexErrorListener_1 = require("./ApexErrorListener");
28
+ import { CharStreams, CommonTokenStream, ParseTreeListener, ParseTreeVisitor, ParseTreeWalker, } from "antlr4";
29
+ import ApexLexer from "./antlr/ApexLexer.js";
30
+ import ApexParser from "./antlr/ApexParser.js";
31
+ import { ThrowingErrorListener } from "./ApexErrorListener.js";
36
32
  /**
37
33
  * A factory for `ApexParser` and its components. Abstracts interaction
38
34
  * with core ANTLR types like `CommonTokenStream`.
39
35
  */
40
- class ApexParserFactory {
36
+ export class ApexParserFactory {
41
37
  constructor() { }
42
38
  static createParser(source, throwOnFirstError = false) {
43
- const parser = new ApexParser_1.default(typeof source === "string"
44
- ? new antlr4_1.CommonTokenStream(this.createLexer(source))
39
+ const parser = new ApexParser(typeof source === "string"
40
+ ? new CommonTokenStream(this.createLexer(source))
45
41
  : source);
46
42
  // always remove default console listener
47
43
  parser.removeErrorListeners();
48
44
  if (throwOnFirstError) {
49
- parser.addErrorListener(ApexErrorListener_1.ThrowingErrorListener.INSTANCE);
45
+ parser.addErrorListener(ThrowingErrorListener.INSTANCE);
50
46
  }
51
47
  return parser;
52
48
  }
53
49
  static createTokenStream(source) {
54
- return new antlr4_1.CommonTokenStream(typeof source === "string" ? this.createLexer(source) : source);
50
+ return new CommonTokenStream(typeof source === "string" ? this.createLexer(source) : source);
55
51
  }
56
52
  static createLexer(source) {
57
- const lexer = new ApexLexer_1.default(antlr4_1.CharStreams.fromString(source));
53
+ const lexer = new ApexLexer(CharStreams.fromString(source));
58
54
  // always remove default console listener
59
55
  lexer.removeErrorListeners();
60
56
  return lexer;
61
57
  }
62
58
  }
63
- exports.ApexParserFactory = ApexParserFactory;
64
59
  /**
65
60
  * A base visitor for an Apex parse tree produced by `ApexParser`. Extend this
66
61
  * class to define a subset of visitor operations.
@@ -73,7 +68,7 @@ exports.ApexParserFactory = ApexParserFactory;
73
68
  * visitCompilationUnit = (ctx: CompilationUnitContext) => { return result; }
74
69
  * visitCompilationUnit(ctx: CompilationUnitContext) { return result; }
75
70
  */
76
- class ApexParserBaseVisitor extends antlr4_1.ParseTreeVisitor {
71
+ export class ApexParserBaseVisitor extends ParseTreeVisitor {
77
72
  visit(tree) {
78
73
  return super.visit(tree);
79
74
  }
@@ -87,7 +82,6 @@ class ApexParserBaseVisitor extends antlr4_1.ParseTreeVisitor {
87
82
  return super.visitErrorNode(node);
88
83
  }
89
84
  }
90
- exports.ApexParserBaseVisitor = ApexParserBaseVisitor;
91
85
  /**
92
86
  * A base listener for an Apex parse tree produced by `ApexParser`. Extend this
93
87
  * class to define a subset of listener operations.
@@ -98,13 +92,12 @@ exports.ApexParserBaseVisitor = ApexParserBaseVisitor;
98
92
  * enterCompilationUnit = (ctx: CompilationUnitContext) => {}
99
93
  * enterCompilationUnit(ctx: CompilationUnitContext) {}
100
94
  */
101
- class ApexParserBaseListener extends antlr4_1.ParseTreeListener {
95
+ export class ApexParserBaseListener extends ParseTreeListener {
102
96
  visitTerminal(node) { }
103
97
  visitErrorNode(node) { }
104
98
  enterEveryRule(ctx) { }
105
99
  exitEveryRule(ctx) { }
106
100
  }
107
- exports.ApexParserBaseListener = ApexParserBaseListener;
108
101
  /**
109
102
  * Walker for a parse tree starting at the root and going down recursively
110
103
  * with depth-first search.
@@ -114,12 +107,10 @@ exports.ApexParserBaseListener = ApexParserBaseListener;
114
107
  * const listener = new MyListener(); // extends ApexParseTreeListener
115
108
  * ApexParseTreeWalker.DEFAULT.walk(listener, parser.compilationUnit());
116
109
  */
117
- class ApexParseTreeWalker extends (_b = antlr4_1.ParseTreeWalker) {
110
+ export class ApexParseTreeWalker extends ParseTreeWalker {
111
+ static DEFAULT = super.DEFAULT;
118
112
  walk(listener, t) {
119
113
  super.walk(listener, t);
120
114
  }
121
115
  }
122
- exports.ApexParseTreeWalker = ApexParseTreeWalker;
123
- _a = ApexParseTreeWalker;
124
- ApexParseTreeWalker.DEFAULT = Reflect.get(_b, "DEFAULT", _a);
125
116
  //# sourceMappingURL=ApexParserFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApexParserFactory.js","sourceRoot":"","sources":["../../src/ApexParserFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BE;AAEF,OAAO,EACL,WAAW,EACX,iBAAiB,EAIjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAIhB,MAAM,QAAQ,CAAC;AAGhB,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAU/D;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B,gBAAuB,CAAC;IAExB,MAAM,CAAC,YAAY,CACjB,MAAgC,EAChC,oBAA6B,KAAK;QAElC,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,OAAO,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC,CAAC,MAAM,CACX,CAAC;QAEF,yCAAyC;QACzC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC9B,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,MAA0B;QACjD,OAAO,IAAI,iBAAiB,CAC1B,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAE5D,yCAAyC;QACzC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,qBACX,SAAQ,gBAAwB;IAGhC,KAAK,CAAC,IAAmB;QACvB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,IAAkB;QAC9B,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,IAAsB;QAClC,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,IAAmB;QAChC,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,sBACX,SAAQ,iBAAiB;IAGzB,aAAa,CAAC,IAAsB,IAAS,CAAC;IAC9C,cAAc,CAAC,IAAmB,IAAS,CAAC;IAC5C,cAAc,CAAC,GAA0B,IAAS,CAAC;IACnD,aAAa,CAAC,GAA0B,IAAS,CAAC;CACnD;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAA8B,CAAC;IAEtD,IAAI,CAA+B,QAAW,EAAE,CAAgB;QAC9D,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /*
3
2
  [The "BSD licence"]
4
3
  Copyright (c) 2019 Kevin Jones
@@ -26,16 +25,14 @@
26
25
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
26
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
27
  */
29
- Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.CaseInsensitiveInputStream = void 0;
31
- const antlr4_1 = require("antlr4");
28
+ import { CharStream } from "antlr4";
32
29
  /**
33
30
  * Converts char stream to lower case for case insensitive usage.
34
31
  *
35
32
  * @deprecated since 5.0.0. ApexLexer is generated with ANTLR 4.10
36
33
  * `caseInsensitive` option enabled.
37
34
  */
38
- class CaseInsensitiveInputStream extends antlr4_1.CharStream {
35
+ export class CaseInsensitiveInputStream extends CharStream {
39
36
  constructor(data, decodeToUnicodeCodePoints = true) {
40
37
  // Default to unicode code points
41
38
  // CharStreams.fromString is always `new CharStream(data, true)`
@@ -64,5 +61,4 @@ class CaseInsensitiveInputStream extends antlr4_1.CharStream {
64
61
  }
65
62
  }
66
63
  }
67
- exports.CaseInsensitiveInputStream = CaseInsensitiveInputStream;
68
64
  //# sourceMappingURL=CaseInsensitiveInputStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaseInsensitiveInputStream.js","sourceRoot":"","sources":["../../src/CaseInsensitiveInputStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BE;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,UAAU;IAGxD,YACE,IAAyB,EACzB,4BAAqC,IAAI;QAEzC,iCAAiC;QACjC,gEAAgE;QAChE,mEAAmE;QACnE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,EAAE,CAAC,CAAS;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,EAAE,CAAC,MAAc;QACf,+BAA+B;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,gDAAgD;IACxC,OAAO,CAAC,CAAS;QACvB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /*
3
2
  [The "BSD licence"]
4
3
  Copyright (c) 2020 Kevin Jones
@@ -26,13 +25,11 @@
26
25
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
26
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
27
  */
29
- Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.checkProject = exports.check = void 0;
31
- const promises_1 = require("node:fs/promises");
32
- const node_fs_1 = require("node:fs");
33
- const node_path_1 = require("node:path");
34
- const ApexErrorListener_1 = require("./ApexErrorListener");
35
- const ApexParserFactory_1 = require("./ApexParserFactory");
28
+ import { readdir } from "node:fs/promises";
29
+ import { readdirSync, readFileSync, lstatSync, existsSync } from "node:fs";
30
+ import { basename, dirname, extname, resolve, relative, join } from "node:path";
31
+ import { ApexErrorListener } from "./ApexErrorListener.js";
32
+ import { ApexParserFactory } from "./ApexParserFactory.js";
36
33
  /**
37
34
  * Check Apex files in a path for syntax errors.
38
35
  *
@@ -43,8 +40,8 @@ const ApexParserFactory_1 = require("./ApexParserFactory");
43
40
  * @returns Result with status (0 ok, 1 error, 2 missing path) and syntax
44
41
  * errors.
45
42
  */
46
- async function check(pathStr, fileExt) {
47
- const path = (0, node_path_1.resolve)(pathStr || process.argv[1] || process.cwd());
43
+ export async function check(pathStr, fileExt) {
44
+ const path = resolve(pathStr || process.argv[1] || process.cwd());
48
45
  const ext = fileExt || process.argv[2];
49
46
  const extensions = ext ? ext.split(",") : [".cls", ".trigger", ".apex"];
50
47
  const result = {
@@ -52,7 +49,7 @@ async function check(pathStr, fileExt) {
52
49
  extensions,
53
50
  errors: [],
54
51
  };
55
- if (!(0, node_fs_1.existsSync)(path)) {
52
+ if (!existsSync(path)) {
56
53
  console.error(`Path does not exist, aborting: ${path}`);
57
54
  result.status = 2;
58
55
  }
@@ -69,7 +66,6 @@ async function check(pathStr, fileExt) {
69
66
  process.exitCode = result.status;
70
67
  return result;
71
68
  }
72
- exports.check = check;
73
69
  /**
74
70
  * Check an Apex sfdx-project for syntax errors.
75
71
  *
@@ -78,13 +74,12 @@ exports.check = check;
78
74
  * @returns Result for each package with status (0 ok, 1 error, 2 missing path)
79
75
  * and syntax errors.
80
76
  */
81
- async function checkProject(pathStr) {
82
- const path = (0, node_path_1.resolve)(pathStr || process.argv[1] || process.cwd());
77
+ export async function checkProject(pathStr) {
78
+ const path = resolve(pathStr || process.argv[1] || process.cwd());
83
79
  const ext = ".cls,.trigger";
84
- const name = (0, node_path_1.basename)(path);
80
+ const name = basename(path);
85
81
  const project = findProjectFile(path, 1);
86
- const packages = getProjectPackages(project);
87
- if (packages.length == 0) {
82
+ if (!project) {
88
83
  console.error(`[${name}]: No valid SFDX project, checking all cls & trigger files`);
89
84
  const result = await check(path, ext);
90
85
  return [
@@ -95,26 +90,27 @@ async function checkProject(pathStr) {
95
90
  },
96
91
  ];
97
92
  }
98
- const projectDir = (0, node_path_1.dirname)(project);
93
+ const packages = getProjectPackages(project);
94
+ const projectDir = dirname(project);
99
95
  const projectResult = await Promise.all(packages.map(async (pkg) => {
100
96
  console.log(`[${name}]: Checking package "${pkg}"`);
101
- const pkgPath = (0, node_path_1.resolve)(projectDir, pkg);
97
+ const pkgPath = resolve(projectDir, pkg);
102
98
  const result = await check(pkgPath, ext);
103
99
  return {
104
100
  name,
105
101
  pkg,
106
- path: (0, node_path_1.relative)(path, pkgPath),
102
+ path: relative(path, pkgPath),
107
103
  ...result,
108
104
  };
109
105
  }));
110
106
  process.exitCode = Math.max(...projectResult.map(r => r.status));
111
107
  return projectResult;
112
108
  }
113
- exports.checkProject = checkProject;
114
- class CheckApexErrorListener extends ApexErrorListener_1.ApexErrorListener {
109
+ class CheckApexErrorListener extends ApexErrorListener {
110
+ path;
111
+ errors = [];
115
112
  constructor(relativePath) {
116
113
  super();
117
- this.errors = [];
118
114
  this.path = relativePath;
119
115
  }
120
116
  apexSyntaxError(line, column, message) {
@@ -147,13 +143,13 @@ async function parseFiles(path, extensions) {
147
143
  return extensions.flatMap(ext => parseByType(path, files, ext, parsers[ext]));
148
144
  }
149
145
  async function getPathsInDir(path, ext) {
150
- const dirent = await (0, promises_1.readdir)(path, {
146
+ const dirent = await readdir(path, {
151
147
  withFileTypes: true,
152
148
  recursive: true,
153
149
  });
154
150
  return dirent.reduce((files, ent) => {
155
- if (ent.isFile() && ext.includes((0, node_path_1.extname)(ent.name))) {
156
- files.push((0, node_path_1.join)(ent.parentPath, ent.name));
151
+ if (ent.isFile() && ext.includes(extname(ent.name))) {
152
+ files.push(join(ent.parentPath, ent.name));
157
153
  }
158
154
  return files;
159
155
  }, []);
@@ -164,9 +160,9 @@ function parseByType(rootPath, files, endsWith, operation) {
164
160
  files
165
161
  .filter(name => name.endsWith(endsWith))
166
162
  .forEach(file => {
167
- if ((0, node_fs_1.lstatSync)(file).isFile()) {
168
- const parser = ApexParserFactory_1.ApexParserFactory.createParser((0, node_fs_1.readFileSync)(file).toString());
169
- const relativePath = (0, node_path_1.relative)(rootPath, file);
163
+ if (lstatSync(file).isFile()) {
164
+ const parser = ApexParserFactory.createParser(readFileSync(file).toString());
165
+ const relativePath = relative(rootPath, file);
170
166
  const listener = new CheckApexErrorListener(relativePath);
171
167
  parser.addErrorListener(listener);
172
168
  operation(parser);
@@ -183,14 +179,14 @@ function parseByType(rootPath, files, endsWith, operation) {
183
179
  }
184
180
  function findProjectFile(wd, depth) {
185
181
  const proj = "sfdx-project.json";
186
- const files = (0, node_fs_1.readdirSync)(wd).filter(i => !/(^|\/)\.[^/.]/g.test(i));
182
+ const files = readdirSync(wd).filter(i => !/(^|\/)\.[^/.]/g.test(i));
187
183
  if (files.includes(proj)) {
188
- return (0, node_path_1.resolve)(wd, proj);
184
+ return resolve(wd, proj);
189
185
  }
190
186
  if (depth) {
191
187
  const dirs = files
192
- .map(f => (0, node_path_1.resolve)(wd, f))
193
- .filter(f => (0, node_fs_1.lstatSync)(f).isDirectory());
188
+ .map(f => resolve(wd, f))
189
+ .filter(f => lstatSync(f).isDirectory());
194
190
  const newDepth = depth - 1;
195
191
  for (const d of dirs) {
196
192
  const p = findProjectFile(d, newDepth);
@@ -202,10 +198,7 @@ function findProjectFile(wd, depth) {
202
198
  return undefined;
203
199
  }
204
200
  function getProjectPackages(projectFilePath) {
205
- if (!projectFilePath) {
206
- return [];
207
- }
208
- const config = JSON.parse((0, node_fs_1.readFileSync)(projectFilePath, { encoding: "utf8" }));
201
+ const config = JSON.parse(readFileSync(projectFilePath, { encoding: "utf8" }));
209
202
  const packages = config.packageDirectories || [];
210
203
  return packages.flatMap(p => (p.path ? p.path.replace(/\\/g, "/") : []));
211
204
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Check.js","sourceRoot":"","sources":["../../src/Check.ts"],"names":[],"mappings":"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"}