@abaplint/core 2.106.2 → 2.106.4
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/abaplint.d.ts +1 -0
- package/build/src/abap/2_statements/expressions/type_table.js +3 -3
- package/build/src/abap/2_statements/statements/return.js +3 -1
- package/build/src/abap/5_syntax/_type_utils.js +9 -1
- package/build/src/abap/5_syntax/expressions/component_compare_simple.js +5 -1
- package/build/src/abap/5_syntax/expressions/method_parameters.js +3 -0
- package/build/src/abap/5_syntax/expressions/value_body.js +9 -0
- package/build/src/abap/5_syntax/statements/do.js +12 -2
- package/build/src/abap/5_syntax/statements/insert_internal.js +15 -4
- package/build/src/abap/5_syntax/statements/read_table.js +7 -1
- package/build/src/registry.js +1 -1
- package/build/src/rules/begin_end_names.js +5 -0
- package/build/src/rules/no_prefixes.js +6 -6
- package/build/src/rules/unnecessary_pragma.js +7 -3
- package/build/src/rules/whitespace_end.js +23 -13
- package/build/src/version.js +2 -1
- package/package.json +6 -6
package/build/abaplint.d.ts
CHANGED
|
@@ -11,10 +11,10 @@ class TypeTable extends combi_1.Expression {
|
|
|
11
11
|
const header = "WITH HEADER LINE";
|
|
12
12
|
const initial = (0, combi_1.seq)("INITIAL SIZE", _1.Constant);
|
|
13
13
|
const generic = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)("STANDARD", "HASHED", "INDEX", "SORTED", "ANY")), "TABLE");
|
|
14
|
-
const normal1 = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)("STANDARD", "HASHED", "INDEX", "SORTED", "ANY")), "TABLE OF", (0, combi_1.
|
|
14
|
+
const normal1 = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)("STANDARD", "HASHED", "INDEX", "SORTED", "ANY")), "TABLE OF", (0, combi_1.optPrio)("REF TO"), _1.TypeName);
|
|
15
15
|
const likeType = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.alt)("STANDARD", "HASHED", "INDEX", "SORTED", "ANY")), "TABLE OF", (0, combi_1.optPrio)("REF TO"), (0, combi_1.opt)(field_chain_1.FieldChain), (0, combi_1.opt)((0, combi_1.per)(header, initial, (0, combi_1.plusPrio)(type_table_key_1.TypeTableKey))));
|
|
16
|
-
const rangeType = (0, combi_1.seq)("RANGE OF", _1.TypeName, (0, combi_1.
|
|
17
|
-
const rangeLike = (0, combi_1.seq)("RANGE OF", _1.SimpleFieldChain, (0, combi_1.
|
|
16
|
+
const rangeType = (0, combi_1.seq)("RANGE OF", _1.TypeName, (0, combi_1.optPrio)(header), (0, combi_1.optPrio)(initial));
|
|
17
|
+
const rangeLike = (0, combi_1.seq)("RANGE OF", _1.SimpleFieldChain, (0, combi_1.optPrio)(header), (0, combi_1.optPrio)(initial));
|
|
18
18
|
// a maximum of 15 secondary table keys can be defined
|
|
19
19
|
// "WITH" is not allowed as a field name in keys
|
|
20
20
|
const typetable = (0, combi_1.alt)(generic, (0, combi_1.seq)(normal1, (0, combi_1.alt)((0, combi_1.opt)((0, combi_1.per)(header, initial, (0, combi_1.plusPrio)(type_table_key_1.TypeTableKey))), (0, combi_1.seq)((0, combi_1.plus)(type_table_key_1.TypeTableKey), (0, combi_1.optPrio)(initial)))));
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Return = void 0;
|
|
4
4
|
const combi_1 = require("../combi");
|
|
5
|
+
const version_1 = require("../../../version");
|
|
6
|
+
const expressions_1 = require("../expressions");
|
|
5
7
|
class Return {
|
|
6
8
|
getMatcher() {
|
|
7
|
-
return (0, combi_1.str)("RETURN");
|
|
9
|
+
return (0, combi_1.seq)((0, combi_1.str)("RETURN"), (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Version.v758, expressions_1.Source)));
|
|
8
10
|
}
|
|
9
11
|
}
|
|
10
12
|
exports.Return = Return;
|
|
@@ -117,6 +117,10 @@ class TypeUtils {
|
|
|
117
117
|
if (tname === sname) {
|
|
118
118
|
return true;
|
|
119
119
|
}
|
|
120
|
+
/*
|
|
121
|
+
console.dir(sid);
|
|
122
|
+
console.dir(tid);
|
|
123
|
+
*/
|
|
120
124
|
if (!(sid instanceof types_1.ClassDefinition || sid instanceof types_1.InterfaceDefinition)) {
|
|
121
125
|
const found = this.scope.findObjectDefinition(sid.getName());
|
|
122
126
|
if (found) {
|
|
@@ -336,7 +340,11 @@ class TypeUtils {
|
|
|
336
340
|
}
|
|
337
341
|
}
|
|
338
342
|
else if (source instanceof basic_1.GenericObjectReferenceType) {
|
|
339
|
-
if (target instanceof basic_1.ObjectReferenceType
|
|
343
|
+
if (target instanceof basic_1.ObjectReferenceType
|
|
344
|
+
|| target instanceof basic_1.StringType
|
|
345
|
+
|| target instanceof basic_1.CharacterType
|
|
346
|
+
|| target instanceof basic_1.TableType
|
|
347
|
+
|| target instanceof basic_1.CLikeType) {
|
|
340
348
|
return false;
|
|
341
349
|
}
|
|
342
350
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ComponentCompareSimple = void 0;
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const nodes_1 = require("../../nodes");
|
|
6
|
+
const _type_utils_1 = require("../_type_utils");
|
|
6
7
|
const component_chain_1 = require("./component_chain");
|
|
7
8
|
const source_1 = require("./source");
|
|
8
9
|
class ComponentCompareSimple {
|
|
@@ -17,7 +18,10 @@ class ComponentCompareSimple {
|
|
|
17
18
|
targetType = undefined;
|
|
18
19
|
}
|
|
19
20
|
else if (c.get() instanceof Expressions.Source) {
|
|
20
|
-
new source_1.Source().runSyntax(c, scope, filename, targetType);
|
|
21
|
+
const sourceType = new source_1.Source().runSyntax(c, scope, filename, targetType);
|
|
22
|
+
if (targetType && new _type_utils_1.TypeUtils(scope).isAssignable(sourceType, targetType) === false) {
|
|
23
|
+
throw new Error("ComponentCompareSimple, incompatible types");
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
else {
|
|
23
27
|
throw "ComponentCompareSimple, unexpected node";
|
|
@@ -98,6 +98,9 @@ class MethodParameters {
|
|
|
98
98
|
checkChanging(node, scope, method, filename) {
|
|
99
99
|
var _a;
|
|
100
100
|
for (const item of this.parameterListT(node, scope, filename)) {
|
|
101
|
+
if (item.target.findFirstExpression(Expressions.InlineData) !== undefined) {
|
|
102
|
+
throw new Error("CHANGING cannot be inlined");
|
|
103
|
+
}
|
|
101
104
|
let parameterType = undefined;
|
|
102
105
|
if (method instanceof basic_1.VoidType) {
|
|
103
106
|
parameterType = method;
|
|
@@ -9,6 +9,7 @@ const field_assignment_1 = require("./field_assignment");
|
|
|
9
9
|
const basic_1 = require("../../types/basic");
|
|
10
10
|
class ValueBody {
|
|
11
11
|
runSyntax(node, scope, filename, targetType) {
|
|
12
|
+
var _a;
|
|
12
13
|
if (node === undefined) {
|
|
13
14
|
return targetType;
|
|
14
15
|
}
|
|
@@ -24,8 +25,16 @@ class ValueBody {
|
|
|
24
25
|
forScopes++;
|
|
25
26
|
}
|
|
26
27
|
}
|
|
28
|
+
const fields = new Set();
|
|
27
29
|
for (const s of node.findDirectExpressions(Expressions.FieldAssignment)) {
|
|
28
30
|
new field_assignment_1.FieldAssignment().runSyntax(s, scope, filename, targetType);
|
|
31
|
+
const fieldname = (_a = s.findDirectExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
|
|
32
|
+
if (fieldname) {
|
|
33
|
+
if (fields.has(fieldname)) {
|
|
34
|
+
throw new Error("Duplicate field assignment");
|
|
35
|
+
}
|
|
36
|
+
fields.add(fieldname);
|
|
37
|
+
}
|
|
29
38
|
}
|
|
30
39
|
let type = undefined; // todo, this is only correct if there is a single source in the body
|
|
31
40
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
@@ -3,11 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Do = void 0;
|
|
4
4
|
const Expressions = require("../../2_statements/expressions");
|
|
5
5
|
const source_1 = require("../expressions/source");
|
|
6
|
+
const target_1 = require("../expressions/target");
|
|
7
|
+
const _type_utils_1 = require("../_type_utils");
|
|
8
|
+
const basic_1 = require("../../types/basic");
|
|
6
9
|
class Do {
|
|
7
10
|
runSyntax(node, scope, filename) {
|
|
8
|
-
|
|
11
|
+
const afterDo = node.findExpressionAfterToken("DO");
|
|
9
12
|
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
10
|
-
new source_1.Source().runSyntax(s, scope, filename);
|
|
13
|
+
const type = new source_1.Source().runSyntax(s, scope, filename);
|
|
14
|
+
if (s === afterDo
|
|
15
|
+
&& new _type_utils_1.TypeUtils(scope).isAssignable(type, basic_1.IntegerType.get()) === false) {
|
|
16
|
+
throw new Error("DO TIMES must be numeric");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
20
|
+
new target_1.Target().runSyntax(t, scope, filename);
|
|
11
21
|
}
|
|
12
22
|
}
|
|
13
23
|
}
|
|
@@ -16,7 +16,13 @@ class InsertInternal {
|
|
|
16
16
|
if (t) {
|
|
17
17
|
targetType = new target_1.Target().runSyntax(t, scope, filename);
|
|
18
18
|
}
|
|
19
|
-
if (targetType instanceof basic_1.TableType
|
|
19
|
+
if (!(targetType instanceof basic_1.TableType)
|
|
20
|
+
&& !(targetType instanceof basic_1.VoidType)
|
|
21
|
+
&& !(targetType instanceof basic_1.AnyType)
|
|
22
|
+
&& !(targetType instanceof basic_1.UnknownType)) {
|
|
23
|
+
throw new Error("INSERT target must be a table");
|
|
24
|
+
}
|
|
25
|
+
else if (targetType instanceof basic_1.TableType
|
|
20
26
|
&& node.findDirectTokenByText("LINES") === undefined) {
|
|
21
27
|
targetType = targetType.getRowType();
|
|
22
28
|
}
|
|
@@ -35,9 +41,14 @@ class InsertInternal {
|
|
|
35
41
|
new fstarget_1.FSTarget().runSyntax(afterAssigning, scope, filename, sourceType);
|
|
36
42
|
}
|
|
37
43
|
}
|
|
38
|
-
if (node.findDirectTokenByText("INITIAL") === undefined
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
if (node.findDirectTokenByText("INITIAL") === undefined) {
|
|
45
|
+
if (new _type_utils_1.TypeUtils(scope).isAssignableStrict(sourceType, targetType) === false) {
|
|
46
|
+
throw new Error("Types not compatible");
|
|
47
|
+
}
|
|
48
|
+
else if (sourceType instanceof basic_1.CharacterType && targetType instanceof basic_1.StringType) {
|
|
49
|
+
// yea, well, INSERT doesnt convert the values automatically, like everything else?
|
|
50
|
+
throw new Error("Types not compatible");
|
|
51
|
+
}
|
|
41
52
|
}
|
|
42
53
|
const afterInto = node.findExpressionAfterToken("INTO");
|
|
43
54
|
if ((afterInto === null || afterInto === void 0 ? void 0 : afterInto.get()) instanceof Expressions.Target && sourceType) {
|
|
@@ -46,11 +46,17 @@ class ReadTable {
|
|
|
46
46
|
throw new Error("READ TABLE, FROM must be compatible");
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
const afterKey = node.findExpressionAfterToken("KEY");
|
|
49
50
|
for (const s of sources) {
|
|
50
51
|
if (s === firstSource || s === indexSource || s === fromSource) {
|
|
51
52
|
continue;
|
|
52
53
|
}
|
|
53
|
-
new source_1.Source().runSyntax(s, scope, filename);
|
|
54
|
+
const type = new source_1.Source().runSyntax(s, scope, filename);
|
|
55
|
+
if (s === afterKey) {
|
|
56
|
+
if (type instanceof basic_1.StringType || type instanceof basic_1.TableType || type instanceof basic_1.ObjectReferenceType) {
|
|
57
|
+
throw new Error("Key cannot be string or table or reference");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
54
60
|
}
|
|
55
61
|
const target = node.findDirectExpression(Expressions.ReadTableTarget);
|
|
56
62
|
if (target) {
|
package/build/src/registry.js
CHANGED
|
@@ -7,6 +7,7 @@ const _basic_rule_config_1 = require("./_basic_rule_config");
|
|
|
7
7
|
const Structures = require("../abap/3_structures/structures");
|
|
8
8
|
const Expressions = require("../abap/2_statements/expressions");
|
|
9
9
|
const Statements = require("../abap/2_statements/statements");
|
|
10
|
+
const _statement_1 = require("../abap/2_statements/statements/_statement");
|
|
10
11
|
const _irule_1 = require("./_irule");
|
|
11
12
|
const edit_helper_1 = require("../edit_helper");
|
|
12
13
|
class BeginEndNamesConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
@@ -43,6 +44,10 @@ class BeginEndNames extends _abap_rule_1.ABAPRule {
|
|
|
43
44
|
if (struc === undefined) {
|
|
44
45
|
return [];
|
|
45
46
|
}
|
|
47
|
+
const containsUnknown = file.getStatements().some(s => s.get() instanceof _statement_1.Unknown);
|
|
48
|
+
if (containsUnknown === true) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
46
51
|
output.push(...this.test(struc, Structures.Data, Statements.DataBegin, Statements.DataEnd, file));
|
|
47
52
|
output.push(...this.test(struc, Structures.ClassData, Statements.ClassDataBegin, Statements.ClassDataEnd, file));
|
|
48
53
|
output.push(...this.test(struc, Structures.Constants, Statements.ConstantBegin, Statements.ConstantEnd, file));
|
|
@@ -11,17 +11,17 @@ class NoPrefixesConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
13
13
|
/** DATA, CLASS-DATA, DATA BEGIN OF, CLASS-DATA BEGIN OF, FINAL(), DATA(), case insensitive regex */
|
|
14
|
-
this.data = "^[
|
|
14
|
+
this.data = "^[LGM].?_";
|
|
15
15
|
/** STATICS, STATICS BEGIN OF, case insensitive regex */
|
|
16
|
-
this.statics = "";
|
|
16
|
+
this.statics = "^S.?_";
|
|
17
17
|
/** FIELD-SYMBOLS and inline FIELD-SYMBOLS(), case insensitive regex */
|
|
18
|
-
this.fieldSymbols = "^<
|
|
18
|
+
this.fieldSymbols = "^<[LGM].?_";
|
|
19
19
|
/** CONSTANTS, CONSTANTS BEGIN OF, case insensitive regex */
|
|
20
|
-
this.constants = "^[
|
|
20
|
+
this.constants = "^[LGM]?C.?_";
|
|
21
21
|
/** TYPES, ENUM, MESH, case insensitive regex */
|
|
22
|
-
this.types = "^
|
|
22
|
+
this.types = "^TY_";
|
|
23
23
|
/** importing, exporting, returning and changing parameters, case insensitive regex */
|
|
24
|
-
this.methodParameters = "^[
|
|
24
|
+
this.methodParameters = "^[ICER].?_";
|
|
25
25
|
// todo, public localClass: string = "";
|
|
26
26
|
// todo, public localInterface: string = "";
|
|
27
27
|
// todo, public functionModuleParameters: string = "";
|
|
@@ -8,6 +8,7 @@ const _abap_rule_1 = require("./_abap_rule");
|
|
|
8
8
|
const _basic_rule_config_1 = require("./_basic_rule_config");
|
|
9
9
|
const _statement_1 = require("../abap/2_statements/statements/_statement");
|
|
10
10
|
const _irule_1 = require("./_irule");
|
|
11
|
+
const edit_helper_1 = require("../edit_helper");
|
|
11
12
|
class UnnecessaryPragmaConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
12
13
|
constructor() {
|
|
13
14
|
super(...arguments);
|
|
@@ -122,7 +123,8 @@ DATA: BEGIN OF blah ##NEEDED,
|
|
|
122
123
|
if (statement.findFirstExpression(Expressions.ConstantString) === undefined
|
|
123
124
|
&& statement.findFirstExpression(Expressions.StringTemplate) === undefined) {
|
|
124
125
|
const message = "There is no text, NO_TEXT can be removed";
|
|
125
|
-
|
|
126
|
+
const fix = edit_helper_1.EditHelper.deleteToken(file, p);
|
|
127
|
+
return [issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.getConfig().severity, fix)];
|
|
126
128
|
}
|
|
127
129
|
return [];
|
|
128
130
|
}
|
|
@@ -134,7 +136,8 @@ DATA: BEGIN OF blah ##NEEDED,
|
|
|
134
136
|
const concat = next.concatTokens().toUpperCase();
|
|
135
137
|
if (concat.includes(" SY-SUBRC")) {
|
|
136
138
|
const message = "SUBRC_OK can be removed as sy-subrc is checked";
|
|
137
|
-
|
|
139
|
+
const fix = edit_helper_1.EditHelper.deleteToken(file, p);
|
|
140
|
+
return [issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.getConfig().severity, fix)];
|
|
138
141
|
}
|
|
139
142
|
return [];
|
|
140
143
|
}
|
|
@@ -161,7 +164,8 @@ DATA: BEGIN OF blah ##NEEDED,
|
|
|
161
164
|
&& !(statement.get() instanceof Statements.MethodDef)
|
|
162
165
|
&& statement.findFirstExpression(Expressions.InlineFS) === undefined) {
|
|
163
166
|
const message = "There is no data definition, NEEDED can be removed";
|
|
164
|
-
|
|
167
|
+
const fix = edit_helper_1.EditHelper.deleteToken(file, p);
|
|
168
|
+
return [issue_1.Issue.atToken(file, p, message, this.getMetadata().key, this.getConfig().severity, fix)];
|
|
165
169
|
}
|
|
166
170
|
return [];
|
|
167
171
|
}
|
|
@@ -3,16 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WhitespaceEnd = exports.WhitespaceEndConf = void 0;
|
|
4
4
|
const issue_1 = require("../issue");
|
|
5
5
|
const position_1 = require("../position");
|
|
6
|
-
const _abap_rule_1 = require("./_abap_rule");
|
|
7
6
|
const _basic_rule_config_1 = require("./_basic_rule_config");
|
|
8
7
|
const edit_helper_1 = require("../edit_helper");
|
|
9
8
|
const _irule_1 = require("./_irule");
|
|
9
|
+
const objects_1 = require("../objects");
|
|
10
10
|
class WhitespaceEndConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
11
11
|
}
|
|
12
12
|
exports.WhitespaceEndConf = WhitespaceEndConf;
|
|
13
|
-
class WhitespaceEnd
|
|
13
|
+
class WhitespaceEnd {
|
|
14
14
|
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
15
|
this.conf = new WhitespaceEndConf();
|
|
17
16
|
}
|
|
18
17
|
getMetadata() {
|
|
@@ -20,7 +19,10 @@ class WhitespaceEnd extends _abap_rule_1.ABAPRule {
|
|
|
20
19
|
key: "whitespace_end",
|
|
21
20
|
title: "Whitespace at end of line",
|
|
22
21
|
shortDescription: `Checks for redundant whitespace at the end of each line.`,
|
|
22
|
+
extendedInformation: `SMIM and W3MI files are not checked.`,
|
|
23
23
|
tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],
|
|
24
|
+
badExample: `WRITE 'hello'. `,
|
|
25
|
+
goodExample: `WRITE 'hello'.`,
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
getMessage() {
|
|
@@ -32,17 +34,25 @@ class WhitespaceEnd extends _abap_rule_1.ABAPRule {
|
|
|
32
34
|
setConfig(conf) {
|
|
33
35
|
this.conf = conf;
|
|
34
36
|
}
|
|
35
|
-
|
|
37
|
+
initialize(_reg) {
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
run(obj) {
|
|
36
41
|
const issues = [];
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
for (const file of obj.getFiles()) {
|
|
43
|
+
if (obj instanceof objects_1.MIMEObject || obj instanceof objects_1.WebMIME) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const rows = file.getRawRows();
|
|
47
|
+
for (let i = 0; i < rows.length; i++) {
|
|
48
|
+
if (rows[i].endsWith(" ") || rows[i].endsWith(" \r")) {
|
|
49
|
+
const match = / +\r?$/.exec(rows[i]);
|
|
50
|
+
const start = new position_1.Position(i + 1, match.index + 1);
|
|
51
|
+
const end = new position_1.Position(i + 1, rows[i].length + 1);
|
|
52
|
+
const fix = edit_helper_1.EditHelper.deleteRange(file, start, end);
|
|
53
|
+
const issue = issue_1.Issue.atRange(file, start, end, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);
|
|
54
|
+
issues.push(issue);
|
|
55
|
+
}
|
|
46
56
|
}
|
|
47
57
|
}
|
|
48
58
|
return issues;
|
package/build/src/version.js
CHANGED
|
@@ -17,9 +17,10 @@ var Version;
|
|
|
17
17
|
Version["v755"] = "v755";
|
|
18
18
|
Version["v756"] = "v756";
|
|
19
19
|
Version["v757"] = "v757";
|
|
20
|
+
Version["v758"] = "v758";
|
|
20
21
|
Version["Cloud"] = "Cloud";
|
|
21
22
|
})(Version || (exports.Version = Version = {}));
|
|
22
|
-
exports.defaultVersion = Version.
|
|
23
|
+
exports.defaultVersion = Version.v758;
|
|
23
24
|
function getPreviousVersion(v) {
|
|
24
25
|
if (v === Version.OpenABAP) {
|
|
25
26
|
return Version.v702;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/core",
|
|
3
|
-
"version": "2.106.
|
|
3
|
+
"version": "2.106.4",
|
|
4
4
|
"description": "abaplint - Core API",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/abaplint.d.ts",
|
|
@@ -50,20 +50,20 @@
|
|
|
50
50
|
},
|
|
51
51
|
"homepage": "https://abaplint.org",
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@microsoft/api-extractor": "^7.
|
|
54
|
-
"@types/chai": "^4.3.
|
|
53
|
+
"@microsoft/api-extractor": "^7.43.0",
|
|
54
|
+
"@types/chai": "^4.3.14",
|
|
55
55
|
"@types/mocha": "^10.0.6",
|
|
56
|
-
"@types/node": "^20.11.
|
|
56
|
+
"@types/node": "^20.11.30",
|
|
57
57
|
"chai": "^4.4.1",
|
|
58
58
|
"eslint": "^8.57.0",
|
|
59
59
|
"mocha": "^10.3.0",
|
|
60
60
|
"c8": "^9.1.0",
|
|
61
61
|
"source-map-support": "^0.5.21",
|
|
62
62
|
"ts-json-schema-generator": "^1.5.0",
|
|
63
|
-
"typescript": "^5.4.
|
|
63
|
+
"typescript": "^5.4.3"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"fast-xml-parser": "^4.3.
|
|
66
|
+
"fast-xml-parser": "^4.3.6",
|
|
67
67
|
"json5": "^2.2.3",
|
|
68
68
|
"vscode-languageserver-types": "^3.17.5"
|
|
69
69
|
}
|