@apexdevtools/apex-parser 4.4.1 → 5.0.0-beta.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/CHANGELOG.md +112 -0
- package/README.md +98 -42
- package/lib/ApexErrorListener.d.ts +25 -0
- package/lib/ApexErrorListener.js +64 -0
- package/lib/ApexErrorListener.js.map +1 -0
- package/lib/ApexParserFactory.d.ts +69 -0
- package/lib/ApexParserFactory.js +125 -0
- package/lib/ApexParserFactory.js.map +1 -0
- package/lib/CaseInsensitiveInputStream.d.ts +11 -13
- package/lib/CaseInsensitiveInputStream.js +22 -28
- package/lib/CaseInsensitiveInputStream.js.map +1 -1
- package/lib/Check.d.ts +36 -0
- package/lib/Check.js +212 -0
- package/lib/Check.js.map +1 -0
- package/lib/{ApexLexer.d.ts → antlr/ApexLexer.d.ts} +11 -18
- package/lib/antlr/ApexLexer.js +1575 -0
- package/lib/antlr/ApexLexer.js.map +1 -0
- package/lib/{ApexParser.d.ts → antlr/ApexParser.d.ts} +1344 -1304
- package/lib/antlr/ApexParser.js +20976 -0
- package/lib/antlr/ApexParser.js.map +1 -0
- package/lib/{ApexParserListener.d.ts → antlr/ApexParserListener.d.ts} +708 -686
- package/lib/antlr/ApexParserListener.js +12 -0
- package/lib/antlr/ApexParserListener.js.map +1 -0
- package/lib/{ApexParserVisitor.d.ts → antlr/ApexParserVisitor.d.ts} +420 -406
- package/lib/antlr/ApexParserVisitor.js +15 -0
- package/lib/antlr/ApexParserVisitor.js.map +1 -0
- package/lib/index.d.ts +8 -24
- package/lib/index.js +13 -140
- package/lib/index.js.map +1 -1
- package/package.json +30 -27
- package/lib/ApexLexer.js +0 -1704
- package/lib/ApexLexer.js.map +0 -1
- package/lib/ApexParser.js +0 -19514
- package/lib/ApexParser.js.map +0 -1
- package/lib/ApexParserListener.js +0 -4
- package/lib/ApexParserListener.js.map +0 -1
- package/lib/ApexParserVisitor.js +0 -4
- package/lib/ApexParserVisitor.js.map +0 -1
- package/lib/ThrowingErrorListener.d.ts +0 -10
- package/lib/ThrowingErrorListener.js +0 -18
- package/lib/ThrowingErrorListener.js.map +0 -1
- package/lib/__tests__/ApexLexerTest.d.ts +0 -1
- package/lib/__tests__/ApexLexerTest.js +0 -48
- package/lib/__tests__/ApexLexerTest.js.map +0 -1
- package/lib/__tests__/ApexListenerTest.d.ts +0 -1
- package/lib/__tests__/ApexListenerTest.js +0 -41
- package/lib/__tests__/ApexListenerTest.js.map +0 -1
- package/lib/__tests__/ApexParserTest.d.ts +0 -1
- package/lib/__tests__/ApexParserTest.js +0 -199
- package/lib/__tests__/ApexParserTest.js.map +0 -1
- package/lib/__tests__/ApexTriggerTest.d.ts +0 -1
- package/lib/__tests__/ApexTriggerTest.js +0 -66
- package/lib/__tests__/ApexTriggerTest.js.map +0 -1
- package/lib/__tests__/ApexVisitorTest.d.ts +0 -1
- package/lib/__tests__/ApexVisitorTest.js +0 -46
- package/lib/__tests__/ApexVisitorTest.js.map +0 -1
- package/lib/__tests__/SOQLParserTest.d.ts +0 -1
- package/lib/__tests__/SOQLParserTest.js +0 -121
- package/lib/__tests__/SOQLParserTest.js.map +0 -1
- package/lib/__tests__/SOSLParserTest.d.ts +0 -1
- package/lib/__tests__/SOSLParserTest.js +0 -101
- package/lib/__tests__/SOSLParserTest.js.map +0 -1
- package/lib/__tests__/SyntaxErrorCounter.d.ts +0 -10
- package/lib/__tests__/SyntaxErrorCounter.js +0 -52
- package/lib/__tests__/SyntaxErrorCounter.js.map +0 -1
- package/lib/__tests__/system/SampleParseSys.d.ts +0 -1
- package/lib/__tests__/system/SampleParseSys.js +0 -75
- package/lib/__tests__/system/SampleParseSys.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Generated from ApexParser.g4 by ANTLR 4.13.2
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const antlr4_1 = require("antlr4");
|
|
5
|
+
/**
|
|
6
|
+
* This interface defines a complete generic visitor for a parse tree produced
|
|
7
|
+
* by `ApexParser`.
|
|
8
|
+
*
|
|
9
|
+
* @param <Result> The return type of the visit operation. Use `void` for
|
|
10
|
+
* operations with no return type.
|
|
11
|
+
*/
|
|
12
|
+
class ApexParserVisitor extends antlr4_1.ParseTreeVisitor {
|
|
13
|
+
}
|
|
14
|
+
exports.default = ApexParserVisitor;
|
|
15
|
+
//# sourceMappingURL=ApexParserVisitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApexParserVisitor.js","sourceRoot":"","sources":["../../src/antlr/ApexParserVisitor.ts"],"names":[],"mappings":";AAAA,+CAA+C;;AAE/C,mCAAwC;AA2LxC;;;;;;GAMG;AACH,MAAqB,iBAA0B,SAAQ,yBAAwB;CAqmC9E;AArmCD,oCAqmCC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
1
|
+
export * from "./ApexErrorListener";
|
|
2
|
+
export * from "./ApexParserFactory";
|
|
3
3
|
export * from "./CaseInsensitiveInputStream";
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./
|
|
6
|
-
export
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
|
|
10
|
-
path: string;
|
|
11
|
-
error: string;
|
|
12
|
-
}
|
|
13
|
-
interface CheckResult {
|
|
14
|
-
status: number;
|
|
15
|
-
errors: ParseCheckError[];
|
|
16
|
-
}
|
|
17
|
-
interface ProjectCheckResult {
|
|
18
|
-
name: string;
|
|
19
|
-
path: string;
|
|
20
|
-
pkg?: string;
|
|
21
|
-
status: number;
|
|
22
|
-
errors: ParseCheckError[];
|
|
23
|
-
}
|
|
24
|
-
export declare function check(pathStr?: string): Promise<CheckResult>;
|
|
25
|
-
export declare function checkProject(pathStr?: string): Promise<ProjectCheckResult[]>;
|
|
4
|
+
export * from "./Check";
|
|
5
|
+
export * from "./antlr/ApexParser";
|
|
6
|
+
export { default as ApexLexer } from "./antlr/ApexLexer";
|
|
7
|
+
export { default as ApexParser } from "./antlr/ApexParser";
|
|
8
|
+
export { default as ApexParserListener } from "./antlr/ApexParserListener";
|
|
9
|
+
export { default as ApexParserVisitor } from "./antlr/ApexParserVisitor";
|
package/lib/index.js
CHANGED
|
@@ -40,146 +40,19 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
40
40
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
41
41
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
42
42
|
};
|
|
43
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
44
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
45
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
46
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
47
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
48
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
49
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const ApexLexer_1 = require("./ApexLexer");
|
|
57
|
-
const ApexParser_1 = require("./ApexParser");
|
|
58
|
-
const CaseInsensitiveInputStream_1 = require("./CaseInsensitiveInputStream");
|
|
59
|
-
const antlr4ts_1 = require("antlr4ts");
|
|
60
|
-
const ThrowingErrorListener_1 = require("./ThrowingErrorListener");
|
|
61
|
-
const fs_1 = require("fs");
|
|
62
|
-
__exportStar(require("./ApexLexer"), exports);
|
|
63
|
-
__exportStar(require("./ApexParser"), exports);
|
|
44
|
+
exports.ApexParserVisitor = exports.ApexParserListener = exports.ApexParser = exports.ApexLexer = void 0;
|
|
45
|
+
__exportStar(require("./ApexErrorListener"), exports);
|
|
46
|
+
__exportStar(require("./ApexParserFactory"), exports);
|
|
64
47
|
__exportStar(require("./CaseInsensitiveInputStream"), exports);
|
|
65
|
-
__exportStar(require("./
|
|
66
|
-
__exportStar(require("./
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
function
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const result = {
|
|
76
|
-
status: 0,
|
|
77
|
-
errors: []
|
|
78
|
-
};
|
|
79
|
-
if (!(0, fs_1.existsSync)(path)) {
|
|
80
|
-
console.log(`Path does not exist, aborting: ${path}`);
|
|
81
|
-
result.status = 2;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
try {
|
|
85
|
-
yield parseFiles(path);
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
console.log(`Error processing: ${path}`);
|
|
89
|
-
console.log(err);
|
|
90
|
-
result.status = 1;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
process.exitCode = result.status;
|
|
94
|
-
return result;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
exports.check = check;
|
|
98
|
-
function checkProject(pathStr) {
|
|
99
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
-
const path = (0, path_1.resolve)(pathStr || process.argv[1] || process.cwd());
|
|
101
|
-
const name = (0, path_1.basename)(path);
|
|
102
|
-
const project = findProjectFile(path, 1);
|
|
103
|
-
const packages = getProjectPackages(project);
|
|
104
|
-
if (packages.length == 0) {
|
|
105
|
-
console.log(`[${name}]: No valid SFDX project, checking all cls & trigger files`);
|
|
106
|
-
const result = yield check(path);
|
|
107
|
-
return [Object.assign({ name, path: "." }, result)];
|
|
108
|
-
}
|
|
109
|
-
const projectDir = (0, path_1.dirname)(project);
|
|
110
|
-
const projectResult = yield Promise.all(packages
|
|
111
|
-
.map((pkg) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
console.log(`[${name}]: Checking package "${pkg}"`);
|
|
113
|
-
const pkgPath = (0, path_1.resolve)(projectDir, pkg);
|
|
114
|
-
const result = yield check(pkgPath);
|
|
115
|
-
return Object.assign({ name,
|
|
116
|
-
pkg, path: (0, path_1.relative)(path, pkgPath) }, result);
|
|
117
|
-
})));
|
|
118
|
-
process.exitCode = Math.max(...projectResult.map(r => r.status));
|
|
119
|
-
return projectResult;
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
exports.checkProject = checkProject;
|
|
123
|
-
function parseFiles(path) {
|
|
124
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
125
|
-
const files = yield dir.promiseFiles(path);
|
|
126
|
-
const classErrors = parseByType(path, files, ".cls", (parser) => { parser.compilationUnit(); });
|
|
127
|
-
const triggerErrors = parseByType(path, files, ".trigger", (parser) => { parser.triggerUnit(); });
|
|
128
|
-
return classErrors.concat(triggerErrors);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
function parseByType(rootPath, files, endsWith, operation) {
|
|
132
|
-
let parsedCount = 0;
|
|
133
|
-
const errors = [];
|
|
134
|
-
files.filter(name => name.endsWith(endsWith)).forEach(file => {
|
|
135
|
-
if ((0, fs_1.lstatSync)(file).isFile()) {
|
|
136
|
-
const content = (0, fs_1.readFileSync)(file);
|
|
137
|
-
const lexer = new ApexLexer_1.ApexLexer(new CaseInsensitiveInputStream_1.CaseInsensitiveInputStream(antlr4ts_1.CharStreams.fromString(content.toString())));
|
|
138
|
-
const tokens = new antlr4ts_1.CommonTokenStream(lexer);
|
|
139
|
-
const parser = new ApexParser_1.ApexParser(tokens);
|
|
140
|
-
parser.removeErrorListeners();
|
|
141
|
-
parser.addErrorListener(new ThrowingErrorListener_1.ThrowingErrorListener());
|
|
142
|
-
try {
|
|
143
|
-
operation(parser);
|
|
144
|
-
}
|
|
145
|
-
catch (err) {
|
|
146
|
-
console.log(`Error parsing: ${file}`);
|
|
147
|
-
console.log(err);
|
|
148
|
-
errors.push({
|
|
149
|
-
path: (0, path_1.relative)(rootPath, file),
|
|
150
|
-
error: JSON.stringify(err)
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
parsedCount += 1;
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
console.log(`Parsed ${parsedCount} '${endsWith}' files in: ${rootPath}`);
|
|
157
|
-
return errors;
|
|
158
|
-
}
|
|
159
|
-
function findProjectFile(wd, depth) {
|
|
160
|
-
const proj = "sfdx-project.json";
|
|
161
|
-
const files = (0, fs_1.readdirSync)(wd).filter(i => !(/(^|\/)\.[^\/\.]/g).test(i));
|
|
162
|
-
if (files.includes(proj)) {
|
|
163
|
-
return (0, path_1.resolve)(wd, proj);
|
|
164
|
-
}
|
|
165
|
-
if (depth) {
|
|
166
|
-
const dirs = files.map(f => (0, path_1.resolve)(wd, f)).filter(f => (0, fs_1.lstatSync)(f).isDirectory());
|
|
167
|
-
const newDepth = depth - 1;
|
|
168
|
-
for (const d of dirs) {
|
|
169
|
-
const p = findProjectFile(d, newDepth);
|
|
170
|
-
if (p) {
|
|
171
|
-
return p;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return undefined;
|
|
176
|
-
}
|
|
177
|
-
function getProjectPackages(projectFilePath) {
|
|
178
|
-
if (!projectFilePath) {
|
|
179
|
-
return [];
|
|
180
|
-
}
|
|
181
|
-
const config = JSON.parse((0, fs_1.readFileSync)(projectFilePath, { encoding: "utf8" }));
|
|
182
|
-
const packages = config.packageDirectories || [];
|
|
183
|
-
return packages.flatMap((p) => p.path ? p.path.replace(/\\/g, "/") : []);
|
|
184
|
-
}
|
|
48
|
+
__exportStar(require("./Check"), exports);
|
|
49
|
+
__exportStar(require("./antlr/ApexParser"), exports); // RuleContext types
|
|
50
|
+
var ApexLexer_1 = require("./antlr/ApexLexer");
|
|
51
|
+
Object.defineProperty(exports, "ApexLexer", { enumerable: true, get: function () { return ApexLexer_1.default; } });
|
|
52
|
+
var ApexParser_1 = require("./antlr/ApexParser");
|
|
53
|
+
Object.defineProperty(exports, "ApexParser", { enumerable: true, get: function () { return ApexParser_1.default; } });
|
|
54
|
+
var ApexParserListener_1 = require("./antlr/ApexParserListener");
|
|
55
|
+
Object.defineProperty(exports, "ApexParserListener", { enumerable: true, get: function () { return ApexParserListener_1.default; } });
|
|
56
|
+
var ApexParserVisitor_1 = require("./antlr/ApexParserVisitor");
|
|
57
|
+
Object.defineProperty(exports, "ApexParserVisitor", { enumerable: true, get: function () { return ApexParserVisitor_1.default; } });
|
|
185
58
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BE;;;;;;;;;;;;;;;;;AAEF,sDAAoC;AACpC,sDAAoC;AACpC,+DAA6C;AAC7C,0CAAwB;AACxB,qDAAmC,CAAC,oBAAoB;AACxD,+CAAyD;AAAhD,sGAAA,OAAO,OAAa;AAC7B,iDAA2D;AAAlD,wGAAA,OAAO,OAAc;AAC9B,iEAA2E;AAAlE,wHAAA,OAAO,OAAsB;AACtC,+DAAyE;AAAhE,sHAAA,OAAO,OAAqB"}
|
package/package.json
CHANGED
|
@@ -1,44 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apexdevtools/apex-parser",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-beta.2",
|
|
4
|
+
"description": "Javascript parser for Salesforce Apex Language",
|
|
4
5
|
"author": "Apex Dev Tools Team <apexdevtools@gmail.com> (https://github.com/apex-dev-tools)",
|
|
5
6
|
"bugs": "https://github.com/apex-dev-tools/apex-parser/issues",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
7
|
+
"homepage": "https://github.com/apex-dev-tools/apex-parser",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/apex-dev-tools/apex-parser.git"
|
|
11
|
+
},
|
|
8
12
|
"license": "BSD-3-Clause",
|
|
13
|
+
"main": "lib/index.js",
|
|
9
14
|
"scripts": {
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"build": "npm run clean && npm run antlr4ts && cp ../*.md . && tsc",
|
|
15
|
+
"antlr": "mvn exec:exec",
|
|
16
|
+
"build": "npm run clean && npm run antlr && tsc",
|
|
17
|
+
"build:test": "npm run build && npm test",
|
|
14
18
|
"check": "node -e 'require(\"./lib/index.js\").check()'",
|
|
15
19
|
"clean": "rm -rf lib",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
20
|
+
"init": "npm ci && npm run antlr",
|
|
21
|
+
"lint": "eslint --cache --cache-location .eslintcache ./src --fix",
|
|
22
|
+
"prepack": "cp ../*.md .",
|
|
23
|
+
"test": "jest --config jestconfig.json",
|
|
24
|
+
"test:samples": "jest --config sys.jestconfig.json",
|
|
25
|
+
"test:snapshot": "npm run test:samples -- --updateSnapshot"
|
|
19
26
|
},
|
|
20
27
|
"files": [
|
|
21
|
-
"lib
|
|
28
|
+
"lib/*.*",
|
|
29
|
+
"lib/antlr",
|
|
30
|
+
"CHANGELOG.md"
|
|
22
31
|
],
|
|
23
32
|
"dependencies": {
|
|
24
|
-
"
|
|
25
|
-
"node-dir": "^0.1.17"
|
|
33
|
+
"antlr4": "4.13.2"
|
|
26
34
|
},
|
|
27
35
|
"devDependencies": {
|
|
28
|
-
"@types/jest": "^
|
|
29
|
-
"@types/node": "^
|
|
30
|
-
"@
|
|
31
|
-
"@typescript-eslint/
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"jest": "^27.0.6",
|
|
36
|
-
"shx": "^0.3.4",
|
|
37
|
-
"typescript": "^4.3.5"
|
|
36
|
+
"@types/jest": "^29.5.14",
|
|
37
|
+
"@types/node": "^22.15.17",
|
|
38
|
+
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
|
39
|
+
"@typescript-eslint/parser": "^7.18.0",
|
|
40
|
+
"eslint": "^8.57.1",
|
|
41
|
+
"jest": "^29.7.0",
|
|
42
|
+
"typescript": "^4.9.5"
|
|
38
43
|
},
|
|
39
44
|
"engines": {
|
|
40
|
-
"node": ">=
|
|
41
|
-
}
|
|
42
|
-
"homepage": "https://github.com/apex-dev-tools/apex-parser",
|
|
43
|
-
"repository": "apex-dev-tools/apex-parser"
|
|
45
|
+
"node": ">=16.0.0"
|
|
46
|
+
}
|
|
44
47
|
}
|