@abaplint/cli 2.113.247 → 2.114.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/build/cli.js +245 -52
- package/package.json +2 -2
package/build/cli.js
CHANGED
|
@@ -20677,33 +20677,21 @@ exports.Identifier = Identifier;
|
|
|
20677
20677
|
/*!************************************************************************************************!*\
|
|
20678
20678
|
!*** ./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information.js ***!
|
|
20679
20679
|
\************************************************************************************************/
|
|
20680
|
-
/***/ ((__unused_webpack_module, exports
|
|
20680
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
20681
20681
|
|
|
20682
20682
|
"use strict";
|
|
20683
20683
|
|
|
20684
20684
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20685
20685
|
exports.ABAPFileInformation = void 0;
|
|
20686
|
-
const Structures = __webpack_require__(/*! ../3_structures/structures */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js");
|
|
20687
|
-
const Expressions = __webpack_require__(/*! ../2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
20688
|
-
const Statements = __webpack_require__(/*! ../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
20689
|
-
const _abap_file_information_1 = __webpack_require__(/*! ./_abap_file_information */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js");
|
|
20690
|
-
const _identifier_1 = __webpack_require__(/*! ./_identifier */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js");
|
|
20691
|
-
const Tokens = __webpack_require__(/*! ../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
20692
|
-
const visibility_1 = __webpack_require__(/*! ./visibility */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js");
|
|
20693
20686
|
class ABAPFileInformation {
|
|
20694
|
-
constructor(
|
|
20695
|
-
this.
|
|
20696
|
-
this.implementations = [];
|
|
20697
|
-
this.interfaces = [];
|
|
20698
|
-
this.classes = [];
|
|
20699
|
-
this.filename = filename;
|
|
20700
|
-
this.parse(structure);
|
|
20687
|
+
constructor(parsed) {
|
|
20688
|
+
this.parsed = parsed;
|
|
20701
20689
|
}
|
|
20702
20690
|
listClassImplementations() {
|
|
20703
|
-
return this.implementations;
|
|
20691
|
+
return this.parsed.implementations;
|
|
20704
20692
|
}
|
|
20705
20693
|
listInterfaceDefinitions() {
|
|
20706
|
-
return this.interfaces;
|
|
20694
|
+
return this.parsed.interfaces;
|
|
20707
20695
|
}
|
|
20708
20696
|
getInterfaceDefinitionByName(name) {
|
|
20709
20697
|
const upper = name.toUpperCase();
|
|
@@ -20715,7 +20703,7 @@ class ABAPFileInformation {
|
|
|
20715
20703
|
return undefined;
|
|
20716
20704
|
}
|
|
20717
20705
|
listClassDefinitions() {
|
|
20718
|
-
return this.classes;
|
|
20706
|
+
return this.parsed.classes;
|
|
20719
20707
|
}
|
|
20720
20708
|
getClassDefinitionByName(name) {
|
|
20721
20709
|
const upper = name.toUpperCase();
|
|
@@ -20736,16 +20724,54 @@ class ABAPFileInformation {
|
|
|
20736
20724
|
return undefined;
|
|
20737
20725
|
}
|
|
20738
20726
|
listFormDefinitions() {
|
|
20739
|
-
return this.forms;
|
|
20727
|
+
return this.parsed.forms;
|
|
20728
|
+
}
|
|
20729
|
+
}
|
|
20730
|
+
exports.ABAPFileInformation = ABAPFileInformation;
|
|
20731
|
+
//# sourceMappingURL=abap_file_information.js.map
|
|
20732
|
+
|
|
20733
|
+
/***/ }),
|
|
20734
|
+
|
|
20735
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information_parser.js":
|
|
20736
|
+
/*!*******************************************************************************************************!*\
|
|
20737
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information_parser.js ***!
|
|
20738
|
+
\*******************************************************************************************************/
|
|
20739
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
20740
|
+
|
|
20741
|
+
"use strict";
|
|
20742
|
+
|
|
20743
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20744
|
+
exports.ABAPFileInformationParser = void 0;
|
|
20745
|
+
const Structures = __webpack_require__(/*! ../3_structures/structures */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js");
|
|
20746
|
+
const Expressions = __webpack_require__(/*! ../2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
20747
|
+
const Statements = __webpack_require__(/*! ../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
20748
|
+
const _identifier_1 = __webpack_require__(/*! ./_identifier */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/_identifier.js");
|
|
20749
|
+
const Tokens = __webpack_require__(/*! ../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
20750
|
+
const visibility_1 = __webpack_require__(/*! ./visibility */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js");
|
|
20751
|
+
const _abap_file_information_1 = __webpack_require__(/*! ./_abap_file_information */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/_abap_file_information.js");
|
|
20752
|
+
class ABAPFileInformationParser {
|
|
20753
|
+
constructor(filename) {
|
|
20754
|
+
this.filename = filename;
|
|
20740
20755
|
}
|
|
20741
|
-
///////////////////////
|
|
20742
20756
|
parse(structure) {
|
|
20743
|
-
|
|
20757
|
+
const result = {
|
|
20758
|
+
interfaces: [],
|
|
20759
|
+
classes: [],
|
|
20760
|
+
forms: [],
|
|
20761
|
+
implementations: [],
|
|
20762
|
+
};
|
|
20744
20763
|
if (structure === undefined) {
|
|
20745
|
-
return;
|
|
20764
|
+
return result;
|
|
20746
20765
|
}
|
|
20747
|
-
this.parseClasses(structure);
|
|
20748
|
-
this.parseInterfaces(structure);
|
|
20766
|
+
result.classes = this.parseClasses(structure);
|
|
20767
|
+
result.interfaces = this.parseInterfaces(structure);
|
|
20768
|
+
result.implementations = this.parseClassImplementations(structure);
|
|
20769
|
+
result.forms = this.parseForms(structure);
|
|
20770
|
+
return result;
|
|
20771
|
+
}
|
|
20772
|
+
parseClassImplementations(structure) {
|
|
20773
|
+
var _a;
|
|
20774
|
+
const implementations = [];
|
|
20749
20775
|
for (const found of structure.findAllStructures(Structures.ClassImplementation)) {
|
|
20750
20776
|
const methods = [];
|
|
20751
20777
|
for (const method of found.findAllStructures(Structures.Method)) {
|
|
@@ -20755,24 +20781,30 @@ class ABAPFileInformation {
|
|
|
20755
20781
|
}
|
|
20756
20782
|
}
|
|
20757
20783
|
const name = found.findFirstStatement(Statements.ClassImplementation).findFirstExpression(Expressions.ClassName).getFirstToken();
|
|
20758
|
-
|
|
20784
|
+
implementations.push({
|
|
20759
20785
|
name: name.getStr(),
|
|
20760
20786
|
identifier: new _identifier_1.Identifier(name, this.filename),
|
|
20761
20787
|
methods,
|
|
20762
20788
|
});
|
|
20763
20789
|
}
|
|
20790
|
+
return implementations;
|
|
20791
|
+
}
|
|
20792
|
+
parseForms(structure) {
|
|
20793
|
+
const forms = [];
|
|
20764
20794
|
for (const statement of structure.findAllStructures(Structures.Form)) {
|
|
20765
20795
|
// FORMs can contain a dash in the name
|
|
20766
20796
|
const pos = statement.findFirstExpression(Expressions.FormName).getFirstToken().getStart();
|
|
20767
20797
|
const name = statement.findFirstExpression(Expressions.FormName).concatTokens();
|
|
20768
20798
|
const nameToken = new Tokens.Identifier(pos, name);
|
|
20769
|
-
|
|
20799
|
+
forms.push({
|
|
20770
20800
|
name: nameToken.getStr(),
|
|
20771
20801
|
identifier: new _identifier_1.Identifier(nameToken, this.filename),
|
|
20772
20802
|
});
|
|
20773
20803
|
}
|
|
20804
|
+
return forms;
|
|
20774
20805
|
}
|
|
20775
20806
|
parseInterfaces(structure) {
|
|
20807
|
+
const interfaces = [];
|
|
20776
20808
|
for (const found of structure.findDirectStructures(Structures.Interface)) {
|
|
20777
20809
|
const i = found.findFirstStatement(Statements.Interface);
|
|
20778
20810
|
if (i === undefined) {
|
|
@@ -20784,7 +20816,7 @@ class ABAPFileInformation {
|
|
|
20784
20816
|
const aliases = this.parseAliases(found, visibility_1.Visibility.Public);
|
|
20785
20817
|
const constants = this.parseConstants(found, visibility_1.Visibility.Public);
|
|
20786
20818
|
const g = i.findDirectExpression(Expressions.ClassGlobal);
|
|
20787
|
-
|
|
20819
|
+
interfaces.push({
|
|
20788
20820
|
name: interfaceName.getStr(),
|
|
20789
20821
|
identifier: new _identifier_1.Identifier(interfaceName, this.filename),
|
|
20790
20822
|
isLocal: g === undefined,
|
|
@@ -20796,9 +20828,11 @@ class ABAPFileInformation {
|
|
|
20796
20828
|
attributes,
|
|
20797
20829
|
});
|
|
20798
20830
|
}
|
|
20831
|
+
return interfaces;
|
|
20799
20832
|
}
|
|
20800
20833
|
parseClasses(structure) {
|
|
20801
20834
|
var _a;
|
|
20835
|
+
const classes = [];
|
|
20802
20836
|
for (const found of structure.findAllStructures(Structures.ClassDefinition)) {
|
|
20803
20837
|
const className = found.findFirstStatement(Statements.ClassDefinition).findFirstExpression(Expressions.ClassName).getFirstToken();
|
|
20804
20838
|
const methods = this.parseMethodDefinition(found.findFirstStructure(Structures.PublicSection), visibility_1.Visibility.Public);
|
|
@@ -20837,7 +20871,7 @@ class ABAPFileInformation {
|
|
|
20837
20871
|
else if (concat.includes("DURATION MEDIUM")) {
|
|
20838
20872
|
duration = _abap_file_information_1.Duration.medium;
|
|
20839
20873
|
}
|
|
20840
|
-
|
|
20874
|
+
classes.push({
|
|
20841
20875
|
name: className.getStr(),
|
|
20842
20876
|
identifier: new _identifier_1.Identifier(className, this.filename),
|
|
20843
20877
|
isLocal: containsGlobal === undefined,
|
|
@@ -20856,6 +20890,7 @@ class ABAPFileInformation {
|
|
|
20856
20890
|
constants,
|
|
20857
20891
|
});
|
|
20858
20892
|
}
|
|
20893
|
+
return classes;
|
|
20859
20894
|
}
|
|
20860
20895
|
///////////////////
|
|
20861
20896
|
getImplementing(input) {
|
|
@@ -21054,8 +21089,8 @@ class ABAPFileInformation {
|
|
|
21054
21089
|
return ret;
|
|
21055
21090
|
}
|
|
21056
21091
|
}
|
|
21057
|
-
exports.
|
|
21058
|
-
//# sourceMappingURL=
|
|
21092
|
+
exports.ABAPFileInformationParser = ABAPFileInformationParser;
|
|
21093
|
+
//# sourceMappingURL=abap_file_information_parser.js.map
|
|
21059
21094
|
|
|
21060
21095
|
/***/ }),
|
|
21061
21096
|
|
|
@@ -28026,7 +28061,7 @@ const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modu
|
|
|
28026
28061
|
const isSimple = /^\w+$/;
|
|
28027
28062
|
class Select {
|
|
28028
28063
|
static runSyntax(node, input, skipImplicitInto = false) {
|
|
28029
|
-
var _a
|
|
28064
|
+
var _a;
|
|
28030
28065
|
const token = node.getFirstToken();
|
|
28031
28066
|
let from = node.findDirectExpression(Expressions.SQLFrom);
|
|
28032
28067
|
if (from === undefined) {
|
|
@@ -28047,10 +28082,8 @@ class Select {
|
|
|
28047
28082
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
28048
28083
|
return;
|
|
28049
28084
|
}
|
|
28050
|
-
const isSingle = ((_a = node.getChildren()[1]) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase()) === "SINGLE"
|
|
28051
|
-
|| node.get() instanceof Expressions.SelectLoop;
|
|
28052
28085
|
this.checkFields(fields, dbSources, input, node);
|
|
28053
|
-
this.handleInto(node, input, fields, dbSources
|
|
28086
|
+
const intoExpression = this.handleInto(node, input, fields, dbSources);
|
|
28054
28087
|
const fae = node.findDirectExpression(Expressions.SQLForAllEntries);
|
|
28055
28088
|
if (fae) {
|
|
28056
28089
|
input.scope.push(_scope_type_1.ScopeType.OpenSQL, "SELECT", token.getStart(), input.filename);
|
|
@@ -28064,7 +28097,7 @@ class Select {
|
|
|
28064
28097
|
&& node.findDirectExpression(Expressions.SQLIntoTable) === undefined
|
|
28065
28098
|
&& node.findDirectExpression(Expressions.SQLIntoList) === undefined
|
|
28066
28099
|
&& node.findDirectExpression(Expressions.SQLIntoStructure) === undefined) {
|
|
28067
|
-
const fields = (
|
|
28100
|
+
const fields = (_a = node.findFirstExpression(Expressions.SQLAggregation)) === null || _a === void 0 ? void 0 : _a.concatTokens();
|
|
28068
28101
|
const c = new RegExp(/^count\(\s*\*\s*\)$/, "i");
|
|
28069
28102
|
if (fields === undefined || c.test(fields) === false) {
|
|
28070
28103
|
const nameToken = from === null || from === void 0 ? void 0 : from.findDirectExpression(Expressions.SQLFromSource);
|
|
@@ -28098,8 +28131,18 @@ class Select {
|
|
|
28098
28131
|
for (const s of node.findAllExpressions(Expressions.SQLCompare)) {
|
|
28099
28132
|
sql_compare_1.SQLCompare.runSyntax(s, input, dbSources);
|
|
28100
28133
|
}
|
|
28101
|
-
|
|
28102
|
-
|
|
28134
|
+
const orderBy = node.findDirectExpression(Expressions.SQLOrderBy);
|
|
28135
|
+
if (orderBy) {
|
|
28136
|
+
sql_order_by_1.SQLOrderBy.runSyntax(orderBy, input);
|
|
28137
|
+
const where = node.findDirectExpression(Expressions.SQLCond);
|
|
28138
|
+
if (intoExpression
|
|
28139
|
+
&& where
|
|
28140
|
+
&& intoExpression.getFirstToken().getStart().isBefore(orderBy.getFirstToken().getStart())
|
|
28141
|
+
&& where.getFirstToken().getStart().isBefore(orderBy.getFirstToken().getStart())
|
|
28142
|
+
&& where.getFirstToken().getStart().isBefore(intoExpression.getFirstToken().getStart())) {
|
|
28143
|
+
const message = `ORDER BY must be before INTO, after WHERE`;
|
|
28144
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, orderBy.getFirstToken(), message));
|
|
28145
|
+
}
|
|
28103
28146
|
}
|
|
28104
28147
|
if (this.isStrictMode(node)) {
|
|
28105
28148
|
this.strictModeChecks(node, input);
|
|
@@ -28150,13 +28193,14 @@ class Select {
|
|
|
28150
28193
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
28151
28194
|
}
|
|
28152
28195
|
}
|
|
28153
|
-
static handleInto(node, input, fields, dbSources
|
|
28196
|
+
static handleInto(node, input, fields, dbSources) {
|
|
28154
28197
|
const intoTable = node.findDirectExpression(Expressions.SQLIntoTable);
|
|
28155
28198
|
if (intoTable) {
|
|
28156
28199
|
const inline = intoTable.findFirstExpression(Expressions.InlineData);
|
|
28157
28200
|
if (inline) {
|
|
28158
28201
|
inline_data_1.InlineData.runSyntax(inline, input, this.buildTableType(fields, dbSources, input.scope));
|
|
28159
28202
|
}
|
|
28203
|
+
return intoTable;
|
|
28160
28204
|
}
|
|
28161
28205
|
const intoStructure = node.findDirectExpression(Expressions.SQLIntoStructure);
|
|
28162
28206
|
if (intoStructure) {
|
|
@@ -28170,6 +28214,7 @@ class Select {
|
|
|
28170
28214
|
inline_data_1.InlineData.runSyntax(inline, input, basic_1.VoidType.get("SELECT_todo1"));
|
|
28171
28215
|
}
|
|
28172
28216
|
}
|
|
28217
|
+
return intoStructure;
|
|
28173
28218
|
}
|
|
28174
28219
|
const intoList = node.findDirectExpression(Expressions.SQLIntoList);
|
|
28175
28220
|
if (intoList) {
|
|
@@ -28209,7 +28254,9 @@ class Select {
|
|
|
28209
28254
|
inline_data_1.InlineData.runSyntax(inline, input, type);
|
|
28210
28255
|
}
|
|
28211
28256
|
}
|
|
28257
|
+
return intoList;
|
|
28212
28258
|
}
|
|
28259
|
+
return undefined;
|
|
28213
28260
|
}
|
|
28214
28261
|
static checkFields(fields, dbSources, input, node) {
|
|
28215
28262
|
if (dbSources.length > 1) {
|
|
@@ -36617,12 +36664,12 @@ class ABAPFile extends _abstract_file_1.AbstractFile {
|
|
|
36617
36664
|
getRaw() {
|
|
36618
36665
|
return this.file.getRaw();
|
|
36619
36666
|
}
|
|
36620
|
-
getInfo() {
|
|
36621
|
-
return this.info;
|
|
36622
|
-
}
|
|
36623
36667
|
getRawRows() {
|
|
36624
36668
|
return this.file.getRawRows();
|
|
36625
36669
|
}
|
|
36670
|
+
getInfo() {
|
|
36671
|
+
return this.info;
|
|
36672
|
+
}
|
|
36626
36673
|
getStructure() {
|
|
36627
36674
|
return this.structure;
|
|
36628
36675
|
}
|
|
@@ -36659,12 +36706,13 @@ exports.ABAPFile = ABAPFile;
|
|
|
36659
36706
|
|
|
36660
36707
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36661
36708
|
exports.ABAPParser = void 0;
|
|
36662
|
-
const
|
|
36709
|
+
const abap_file_1 = __webpack_require__(/*! ./abap_file */ "./node_modules/@abaplint/core/build/src/abap/abap_file.js");
|
|
36710
|
+
const abap_file_information_1 = __webpack_require__(/*! ./4_file_information/abap_file_information */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information.js");
|
|
36711
|
+
const abap_file_information_parser_1 = __webpack_require__(/*! ./4_file_information/abap_file_information_parser */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/abap_file_information_parser.js");
|
|
36663
36712
|
const lexer_1 = __webpack_require__(/*! ./1_lexer/lexer */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/lexer.js");
|
|
36664
36713
|
const statement_parser_1 = __webpack_require__(/*! ./2_statements/statement_parser */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statement_parser.js");
|
|
36665
36714
|
const structure_parser_1 = __webpack_require__(/*! ./3_structures/structure_parser */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structure_parser.js");
|
|
36666
|
-
const
|
|
36667
|
-
const abap_file_1 = __webpack_require__(/*! ./abap_file */ "./node_modules/@abaplint/core/build/src/abap/abap_file.js");
|
|
36715
|
+
const version_1 = __webpack_require__(/*! ../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
36668
36716
|
class ABAPParser {
|
|
36669
36717
|
constructor(version, globalMacros, reg) {
|
|
36670
36718
|
this.version = version ? version : version_1.defaultVersion;
|
|
@@ -36689,7 +36737,9 @@ class ABAPParser {
|
|
|
36689
36737
|
for (const f of statementResult) {
|
|
36690
36738
|
const result = structure_parser_1.StructureParser.run(f);
|
|
36691
36739
|
// 4: file information
|
|
36692
|
-
const
|
|
36740
|
+
const parser = new abap_file_information_parser_1.ABAPFileInformationParser(f.file.getFilename());
|
|
36741
|
+
const parsed = parser.parse(result.node);
|
|
36742
|
+
const info = new abap_file_information_1.ABAPFileInformation(parsed);
|
|
36693
36743
|
output.push(new abap_file_1.ABAPFile(f.file, f.tokens, f.statements, result.node, info));
|
|
36694
36744
|
issues.push(...result.issues);
|
|
36695
36745
|
}
|
|
@@ -48878,6 +48928,37 @@ exports.EcattTestScript = EcattTestScript;
|
|
|
48878
48928
|
|
|
48879
48929
|
/***/ }),
|
|
48880
48930
|
|
|
48931
|
+
/***/ "./node_modules/@abaplint/core/build/src/objects/email_template.js":
|
|
48932
|
+
/*!*************************************************************************!*\
|
|
48933
|
+
!*** ./node_modules/@abaplint/core/build/src/objects/email_template.js ***!
|
|
48934
|
+
\*************************************************************************/
|
|
48935
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
48936
|
+
|
|
48937
|
+
"use strict";
|
|
48938
|
+
|
|
48939
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
48940
|
+
exports.EmailTemplate = void 0;
|
|
48941
|
+
const _abstract_object_1 = __webpack_require__(/*! ./_abstract_object */ "./node_modules/@abaplint/core/build/src/objects/_abstract_object.js");
|
|
48942
|
+
class EmailTemplate extends _abstract_object_1.AbstractObject {
|
|
48943
|
+
getType() {
|
|
48944
|
+
return "SMTG";
|
|
48945
|
+
}
|
|
48946
|
+
getAllowedNaming() {
|
|
48947
|
+
return {
|
|
48948
|
+
maxLength: 60, // todo
|
|
48949
|
+
allowNamespace: true,
|
|
48950
|
+
};
|
|
48951
|
+
}
|
|
48952
|
+
getDescription() {
|
|
48953
|
+
// todo
|
|
48954
|
+
return undefined;
|
|
48955
|
+
}
|
|
48956
|
+
}
|
|
48957
|
+
exports.EmailTemplate = EmailTemplate;
|
|
48958
|
+
//# sourceMappingURL=email_template.js.map
|
|
48959
|
+
|
|
48960
|
+
/***/ }),
|
|
48961
|
+
|
|
48881
48962
|
/***/ "./node_modules/@abaplint/core/build/src/objects/enhancement_implementation.js":
|
|
48882
48963
|
/*!*************************************************************************************!*\
|
|
48883
48964
|
!*** ./node_modules/@abaplint/core/build/src/objects/enhancement_implementation.js ***!
|
|
@@ -49311,6 +49392,8 @@ class FunctionGroup extends _abap_object_1.ABAPObject {
|
|
|
49311
49392
|
super.setDirty();
|
|
49312
49393
|
this.includes = undefined;
|
|
49313
49394
|
this.modules = undefined;
|
|
49395
|
+
this.description = undefined;
|
|
49396
|
+
this.dynpros = undefined;
|
|
49314
49397
|
}
|
|
49315
49398
|
getAllowedNaming() {
|
|
49316
49399
|
return {
|
|
@@ -50167,7 +50250,6 @@ __exportStar(__webpack_require__(/*! ./behavior_definition */ "./node_modules/@a
|
|
|
50167
50250
|
__exportStar(__webpack_require__(/*! ./brf_plus_system_application */ "./node_modules/@abaplint/core/build/src/objects/brf_plus_system_application.js"), exports);
|
|
50168
50251
|
__exportStar(__webpack_require__(/*! ./bsp_application */ "./node_modules/@abaplint/core/build/src/objects/bsp_application.js"), exports);
|
|
50169
50252
|
__exportStar(__webpack_require__(/*! ./business_add_in_implementation */ "./node_modules/@abaplint/core/build/src/objects/business_add_in_implementation.js"), exports);
|
|
50170
|
-
__exportStar(__webpack_require__(/*! ./cds_entity_buffer */ "./node_modules/@abaplint/core/build/src/objects/cds_entity_buffer.js"), exports);
|
|
50171
50253
|
__exportStar(__webpack_require__(/*! ./business_catalog_app_assignment */ "./node_modules/@abaplint/core/build/src/objects/business_catalog_app_assignment.js"), exports);
|
|
50172
50254
|
__exportStar(__webpack_require__(/*! ./business_catalog */ "./node_modules/@abaplint/core/build/src/objects/business_catalog.js"), exports);
|
|
50173
50255
|
__exportStar(__webpack_require__(/*! ./business_configuration_maintenance_object */ "./node_modules/@abaplint/core/build/src/objects/business_configuration_maintenance_object.js"), exports);
|
|
@@ -50176,6 +50258,7 @@ __exportStar(__webpack_require__(/*! ./business_function_assignment */ "./node_m
|
|
|
50176
50258
|
__exportStar(__webpack_require__(/*! ./business_function_set_assignment */ "./node_modules/@abaplint/core/build/src/objects/business_function_set_assignment.js"), exports);
|
|
50177
50259
|
__exportStar(__webpack_require__(/*! ./business_object_model */ "./node_modules/@abaplint/core/build/src/objects/business_object_model.js"), exports);
|
|
50178
50260
|
__exportStar(__webpack_require__(/*! ./business_object_type */ "./node_modules/@abaplint/core/build/src/objects/business_object_type.js"), exports);
|
|
50261
|
+
__exportStar(__webpack_require__(/*! ./cds_entity_buffer */ "./node_modules/@abaplint/core/build/src/objects/cds_entity_buffer.js"), exports);
|
|
50179
50262
|
__exportStar(__webpack_require__(/*! ./cds_metadata_extension */ "./node_modules/@abaplint/core/build/src/objects/cds_metadata_extension.js"), exports);
|
|
50180
50263
|
__exportStar(__webpack_require__(/*! ./cds_type */ "./node_modules/@abaplint/core/build/src/objects/cds_type.js"), exports);
|
|
50181
50264
|
__exportStar(__webpack_require__(/*! ./change_document */ "./node_modules/@abaplint/core/build/src/objects/change_document.js"), exports);
|
|
@@ -50201,6 +50284,7 @@ __exportStar(__webpack_require__(/*! ./domain */ "./node_modules/@abaplint/core/
|
|
|
50201
50284
|
__exportStar(__webpack_require__(/*! ./ecatt_test_configuration */ "./node_modules/@abaplint/core/build/src/objects/ecatt_test_configuration.js"), exports);
|
|
50202
50285
|
__exportStar(__webpack_require__(/*! ./ecatt_test_data_container */ "./node_modules/@abaplint/core/build/src/objects/ecatt_test_data_container.js"), exports);
|
|
50203
50286
|
__exportStar(__webpack_require__(/*! ./ecatt_test_script */ "./node_modules/@abaplint/core/build/src/objects/ecatt_test_script.js"), exports);
|
|
50287
|
+
__exportStar(__webpack_require__(/*! ./email_template */ "./node_modules/@abaplint/core/build/src/objects/email_template.js"), exports);
|
|
50204
50288
|
__exportStar(__webpack_require__(/*! ./enhancement_implementation */ "./node_modules/@abaplint/core/build/src/objects/enhancement_implementation.js"), exports);
|
|
50205
50289
|
__exportStar(__webpack_require__(/*! ./enhancement_spot */ "./node_modules/@abaplint/core/build/src/objects/enhancement_spot.js"), exports);
|
|
50206
50290
|
__exportStar(__webpack_require__(/*! ./entity_type */ "./node_modules/@abaplint/core/build/src/objects/entity_type.js"), exports);
|
|
@@ -53256,6 +53340,13 @@ class Table extends _abstract_object_1.AbstractObject {
|
|
|
53256
53340
|
}
|
|
53257
53341
|
return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.description;
|
|
53258
53342
|
}
|
|
53343
|
+
getSecondaryIndexes() {
|
|
53344
|
+
var _a;
|
|
53345
|
+
if (this.parsedData === undefined) {
|
|
53346
|
+
this.parseXML();
|
|
53347
|
+
}
|
|
53348
|
+
return (_a = this.parsedData) === null || _a === void 0 ? void 0 : _a.secondaryIndexes;
|
|
53349
|
+
}
|
|
53259
53350
|
getAllowedNaming() {
|
|
53260
53351
|
let length = 30;
|
|
53261
53352
|
const regex = /^((\/[A-Z_\d]{3,8}\/)|[a-zA-Z0-9]{3}|CI_)\w+$/;
|
|
@@ -53483,7 +53574,7 @@ class Table extends _abstract_object_1.AbstractObject {
|
|
|
53483
53574
|
}
|
|
53484
53575
|
///////////////
|
|
53485
53576
|
parseXML() {
|
|
53486
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
53577
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
53487
53578
|
const parsed = super.parseRaw2();
|
|
53488
53579
|
if (parsed === undefined) {
|
|
53489
53580
|
return;
|
|
@@ -53522,6 +53613,25 @@ class Table extends _abstract_object_1.AbstractObject {
|
|
|
53522
53613
|
DDTEXT: field.DDTEXT,
|
|
53523
53614
|
});
|
|
53524
53615
|
}
|
|
53616
|
+
// secondary indexes
|
|
53617
|
+
const indexes = (_m = parsed.abapGit["asx:abap"]["asx:values"]) === null || _m === void 0 ? void 0 : _m.DD12V;
|
|
53618
|
+
;
|
|
53619
|
+
this.parsedData.secondaryIndexes = [];
|
|
53620
|
+
for (const index of (0, xml_utils_1.xmlToArray)(indexes === null || indexes === void 0 ? void 0 : indexes.DD12V)) {
|
|
53621
|
+
const indexName = index.INDEXNAME;
|
|
53622
|
+
const indexFields = [];
|
|
53623
|
+
const indexFieldsXml = (_o = parsed.abapGit["asx:abap"]["asx:values"]) === null || _o === void 0 ? void 0 : _o.DD17V;
|
|
53624
|
+
for (const indexField of (0, xml_utils_1.xmlToArray)(indexFieldsXml === null || indexFieldsXml === void 0 ? void 0 : indexFieldsXml.DD17V)) {
|
|
53625
|
+
if (indexField.INDEXNAME === indexName) {
|
|
53626
|
+
// assumption: fields are listed by POSITION in the xml
|
|
53627
|
+
indexFields.push(indexField.FIELDNAME);
|
|
53628
|
+
}
|
|
53629
|
+
}
|
|
53630
|
+
this.parsedData.secondaryIndexes.push({
|
|
53631
|
+
name: indexName,
|
|
53632
|
+
fields: indexFields,
|
|
53633
|
+
});
|
|
53634
|
+
}
|
|
53525
53635
|
}
|
|
53526
53636
|
}
|
|
53527
53637
|
exports.Table = Table;
|
|
@@ -54879,7 +54989,7 @@ class Registry {
|
|
|
54879
54989
|
}
|
|
54880
54990
|
static abaplintVersion() {
|
|
54881
54991
|
// magic, see build script "version.sh"
|
|
54882
|
-
return "2.
|
|
54992
|
+
return "2.114.1";
|
|
54883
54993
|
}
|
|
54884
54994
|
getDDICReferences() {
|
|
54885
54995
|
return this.ddicReferences;
|
|
@@ -57792,6 +57902,10 @@ const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/c
|
|
|
57792
57902
|
const objects_1 = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
57793
57903
|
const severity_1 = __webpack_require__(/*! ../severity */ "./node_modules/@abaplint/core/build/src/severity.js");
|
|
57794
57904
|
class CheckIncludeConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
57905
|
+
constructor() {
|
|
57906
|
+
super(...arguments);
|
|
57907
|
+
this.allowUnused = false;
|
|
57908
|
+
}
|
|
57795
57909
|
}
|
|
57796
57910
|
exports.CheckIncludeConf = CheckIncludeConf;
|
|
57797
57911
|
class CheckInclude {
|
|
@@ -57819,7 +57933,7 @@ class CheckInclude {
|
|
|
57819
57933
|
}
|
|
57820
57934
|
initialize(reg) {
|
|
57821
57935
|
this.reg = reg;
|
|
57822
|
-
this.graph = new include_graph_1.IncludeGraph(this.reg, this.getConfig().severity || severity_1.Severity.Error);
|
|
57936
|
+
this.graph = new include_graph_1.IncludeGraph(this.reg, this.getConfig().severity || severity_1.Severity.Error, this.getConfig().allowUnused || false);
|
|
57823
57937
|
return this;
|
|
57824
57938
|
}
|
|
57825
57939
|
run(obj) {
|
|
@@ -65785,8 +65899,7 @@ https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapstart-of-selectio
|
|
|
65785
65899
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
65786
65900
|
badExample: `REPORT zfoo.
|
|
65787
65901
|
WRITE 'hello'.`,
|
|
65788
|
-
goodExample: `
|
|
65789
|
-
START-OF-SELECTION.
|
|
65902
|
+
goodExample: `START-OF-SELECTION.
|
|
65790
65903
|
WRITE 'hello'.`,
|
|
65791
65904
|
};
|
|
65792
65905
|
}
|
|
@@ -66239,6 +66352,7 @@ __exportStar(__webpack_require__(/*! ./implement_methods */ "./node_modules/@aba
|
|
|
66239
66352
|
__exportStar(__webpack_require__(/*! ./implicit_start_of_selection */ "./node_modules/@abaplint/core/build/src/rules/implicit_start_of_selection.js"), exports);
|
|
66240
66353
|
__exportStar(__webpack_require__(/*! ./in_statement_indentation */ "./node_modules/@abaplint/core/build/src/rules/in_statement_indentation.js"), exports);
|
|
66241
66354
|
__exportStar(__webpack_require__(/*! ./indentation */ "./node_modules/@abaplint/core/build/src/rules/indentation.js"), exports);
|
|
66355
|
+
__exportStar(__webpack_require__(/*! ./index_completely_contained */ "./node_modules/@abaplint/core/build/src/rules/index_completely_contained.js"), exports);
|
|
66242
66356
|
__exportStar(__webpack_require__(/*! ./inline_data_old_versions */ "./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js"), exports);
|
|
66243
66357
|
__exportStar(__webpack_require__(/*! ./intf_referencing_clas */ "./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js"), exports);
|
|
66244
66358
|
__exportStar(__webpack_require__(/*! ./invalid_table_index */ "./node_modules/@abaplint/core/build/src/rules/invalid_table_index.js"), exports);
|
|
@@ -66345,6 +66459,83 @@ __exportStar(__webpack_require__(/*! ./xml_consistency */ "./node_modules/@abapl
|
|
|
66345
66459
|
|
|
66346
66460
|
/***/ }),
|
|
66347
66461
|
|
|
66462
|
+
/***/ "./node_modules/@abaplint/core/build/src/rules/index_completely_contained.js":
|
|
66463
|
+
/*!***********************************************************************************!*\
|
|
66464
|
+
!*** ./node_modules/@abaplint/core/build/src/rules/index_completely_contained.js ***!
|
|
66465
|
+
\***********************************************************************************/
|
|
66466
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
66467
|
+
|
|
66468
|
+
"use strict";
|
|
66469
|
+
|
|
66470
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
66471
|
+
exports.IndexCompletelyContained = exports.IndexCompletelyContainedConf = void 0;
|
|
66472
|
+
const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
|
|
66473
|
+
const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/core/build/src/rules/_irule.js");
|
|
66474
|
+
const issue_1 = __webpack_require__(/*! ../issue */ "./node_modules/@abaplint/core/build/src/issue.js");
|
|
66475
|
+
const position_1 = __webpack_require__(/*! ../position */ "./node_modules/@abaplint/core/build/src/position.js");
|
|
66476
|
+
const Objects = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
66477
|
+
class IndexCompletelyContainedConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
66478
|
+
}
|
|
66479
|
+
exports.IndexCompletelyContainedConf = IndexCompletelyContainedConf;
|
|
66480
|
+
class IndexCompletelyContained {
|
|
66481
|
+
constructor() {
|
|
66482
|
+
this.conf = new IndexCompletelyContainedConf();
|
|
66483
|
+
}
|
|
66484
|
+
getMetadata() {
|
|
66485
|
+
return {
|
|
66486
|
+
key: "index_completely_contained",
|
|
66487
|
+
title: "Check if database table indexes are completely contained",
|
|
66488
|
+
shortDescription: `If indexes are completely contained in other indexes, they can be removed to improve performance.`,
|
|
66489
|
+
tags: [_irule_1.RuleTag.Performance, _irule_1.RuleTag.SingleFile],
|
|
66490
|
+
};
|
|
66491
|
+
}
|
|
66492
|
+
initialize() {
|
|
66493
|
+
return this;
|
|
66494
|
+
}
|
|
66495
|
+
getConfig() {
|
|
66496
|
+
return this.conf;
|
|
66497
|
+
}
|
|
66498
|
+
setConfig(conf) {
|
|
66499
|
+
this.conf = conf;
|
|
66500
|
+
}
|
|
66501
|
+
run(obj) {
|
|
66502
|
+
if (!(obj instanceof Objects.Table)) {
|
|
66503
|
+
return [];
|
|
66504
|
+
}
|
|
66505
|
+
const indexes = obj.getSecondaryIndexes();
|
|
66506
|
+
if (indexes === undefined || indexes.length === 0) {
|
|
66507
|
+
return [];
|
|
66508
|
+
}
|
|
66509
|
+
const issues = [];
|
|
66510
|
+
for (let i = 0; i < indexes.length; i++) {
|
|
66511
|
+
const indexA = indexes[i];
|
|
66512
|
+
for (let j = 0; j < indexes.length; j++) {
|
|
66513
|
+
if (i === j) {
|
|
66514
|
+
continue;
|
|
66515
|
+
}
|
|
66516
|
+
const indexB = indexes[j];
|
|
66517
|
+
let contained = true;
|
|
66518
|
+
for (const field of indexA.fields) {
|
|
66519
|
+
if (indexB.fields.indexOf(field) === -1) {
|
|
66520
|
+
contained = false;
|
|
66521
|
+
break;
|
|
66522
|
+
}
|
|
66523
|
+
}
|
|
66524
|
+
if (contained) {
|
|
66525
|
+
const position = new position_1.Position(1, 1);
|
|
66526
|
+
const message = `Index "${indexA.name}" is completely contained in index "${indexB.name}"`;
|
|
66527
|
+
issues.push(issue_1.Issue.atPosition(obj.getFiles()[0], position, message, this.getMetadata().key, this.conf.severity));
|
|
66528
|
+
}
|
|
66529
|
+
}
|
|
66530
|
+
}
|
|
66531
|
+
return issues;
|
|
66532
|
+
}
|
|
66533
|
+
}
|
|
66534
|
+
exports.IndexCompletelyContained = IndexCompletelyContained;
|
|
66535
|
+
//# sourceMappingURL=index_completely_contained.js.map
|
|
66536
|
+
|
|
66537
|
+
/***/ }),
|
|
66538
|
+
|
|
66348
66539
|
/***/ "./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js":
|
|
66349
66540
|
/*!*********************************************************************************!*\
|
|
66350
66541
|
!*** ./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js ***!
|
|
@@ -78517,11 +78708,12 @@ class Graph {
|
|
|
78517
78708
|
}
|
|
78518
78709
|
}
|
|
78519
78710
|
class IncludeGraph {
|
|
78520
|
-
constructor(reg, severity = severity_1.Severity.Error) {
|
|
78711
|
+
constructor(reg, severity = severity_1.Severity.Error, allowUnused = false) {
|
|
78521
78712
|
this.reg = reg;
|
|
78522
78713
|
this.issues = [];
|
|
78523
78714
|
this.graph = new Graph();
|
|
78524
78715
|
this.severity = severity;
|
|
78716
|
+
this.allowUnused = allowUnused;
|
|
78525
78717
|
this.build();
|
|
78526
78718
|
}
|
|
78527
78719
|
listMainForInclude(filename) {
|
|
@@ -78545,6 +78737,7 @@ class IncludeGraph {
|
|
|
78545
78737
|
}
|
|
78546
78738
|
const v = this.graph.findVertexByFilename(file.getFilename());
|
|
78547
78739
|
if (v !== undefined
|
|
78740
|
+
&& this.allowUnused === false
|
|
78548
78741
|
&& v.include === true
|
|
78549
78742
|
&& this.listMainForInclude(v.filename).length === 0) {
|
|
78550
78743
|
const f = this.reg.getFileByName(v.filename);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.114.1",
|
|
4
4
|
"description": "abaplint - Command Line Interface",
|
|
5
5
|
"funding": "https://github.com/sponsors/larshp",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://abaplint.org",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@abaplint/core": "^2.
|
|
41
|
+
"@abaplint/core": "^2.114.1",
|
|
42
42
|
"@types/chai": "^4.3.20",
|
|
43
43
|
"@types/minimist": "^1.2.5",
|
|
44
44
|
"@types/mocha": "^10.0.10",
|