@abaplint/transpiler-cli 2.8.7 → 2.8.9
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/bundle.js +183 -20
- package/package.json +5 -5
package/build/bundle.js
CHANGED
|
@@ -10045,9 +10045,9 @@ class Concatenate {
|
|
|
10045
10045
|
getMatcher() {
|
|
10046
10046
|
const mode = (0, combi_1.seq)("IN", (0, combi_1.altPrio)("BYTE", "CHARACTER"), "MODE");
|
|
10047
10047
|
const blanks = (0, combi_1.str)("RESPECTING BLANKS");
|
|
10048
|
-
const sep = (0, combi_1.seq)("SEPARATED BY", expressions_1.
|
|
10048
|
+
const sep = (0, combi_1.seq)("SEPARATED BY", expressions_1.SimpleSource3);
|
|
10049
10049
|
const options = (0, combi_1.per)(mode, blanks, sep);
|
|
10050
|
-
const sourc = (0, combi_1.seq)(expressions_1.
|
|
10050
|
+
const sourc = (0, combi_1.seq)(expressions_1.SimpleSource3, (0, combi_1.plus)(expressions_1.SimpleSource3));
|
|
10051
10051
|
const lines = (0, combi_1.seq)("LINES OF", expressions_1.Source);
|
|
10052
10052
|
return (0, combi_1.seq)("CONCATENATE", (0, combi_1.altPrio)(lines, sourc), "INTO", expressions_1.Target, (0, combi_1.optPrio)(options));
|
|
10053
10053
|
}
|
|
@@ -21077,6 +21077,7 @@ class Procedural {
|
|
|
21077
21077
|
throw new Error("Function module definition \"" + name + "\" not found");
|
|
21078
21078
|
}
|
|
21079
21079
|
const ddic = new ddic_1.DDIC(this.reg);
|
|
21080
|
+
const allNames = new Set();
|
|
21080
21081
|
for (const param of definition.getParameters()) {
|
|
21081
21082
|
let found = undefined;
|
|
21082
21083
|
if (param.type === undefined || param.type === "") {
|
|
@@ -21153,8 +21154,16 @@ class Procedural {
|
|
|
21153
21154
|
if (found instanceof basic_1.UnknownType && new ddic_1.DDIC(this.reg).inErrorNamespace(param.type) === false) {
|
|
21154
21155
|
found = new basic_1.VoidType(param.type);
|
|
21155
21156
|
}
|
|
21156
|
-
|
|
21157
|
-
|
|
21157
|
+
if (allNames.has(param.name.toUpperCase())) {
|
|
21158
|
+
// yea, IMPORTING and EXPORTING can have the same name
|
|
21159
|
+
// workaround to avoid false postivies, can be improved
|
|
21160
|
+
continue;
|
|
21161
|
+
}
|
|
21162
|
+
else {
|
|
21163
|
+
const type = new _typed_identifier_1.TypedIdentifier(nameToken, filename, found);
|
|
21164
|
+
this.scope.addNamedIdentifier(param.name, type);
|
|
21165
|
+
allNames.add(param.name.toUpperCase());
|
|
21166
|
+
}
|
|
21158
21167
|
}
|
|
21159
21168
|
}
|
|
21160
21169
|
}
|
|
@@ -25808,6 +25817,8 @@ class Source {
|
|
|
25808
25817
|
if (writeReference) {
|
|
25809
25818
|
type.push(_reference_1.ReferenceType.DataWriteReference);
|
|
25810
25819
|
}
|
|
25820
|
+
let hexExpected = false;
|
|
25821
|
+
let hexNext = false;
|
|
25811
25822
|
while (children.length >= 0) {
|
|
25812
25823
|
if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.MethodCallChain) {
|
|
25813
25824
|
context = new method_call_chain_1.MethodCallChain().runSyntax(first, scope, filename, targetType);
|
|
@@ -25839,10 +25850,29 @@ class Source {
|
|
|
25839
25850
|
if (first.concatTokens() === "**") {
|
|
25840
25851
|
context = new basic_1.FloatType();
|
|
25841
25852
|
}
|
|
25853
|
+
const operator = first.concatTokens().toUpperCase();
|
|
25854
|
+
if (operator === "BIT-OR" || operator === "BIT-AND" || operator === "BIT-XOR") {
|
|
25855
|
+
hexExpected = true;
|
|
25856
|
+
hexNext = true;
|
|
25857
|
+
}
|
|
25842
25858
|
}
|
|
25843
25859
|
else if (first instanceof nodes_1.ExpressionNode && first.get() instanceof Expressions.AttributeChain) {
|
|
25844
25860
|
context = new attribute_chain_1.AttributeChain().runSyntax(context, first, scope, filename, type);
|
|
25845
25861
|
}
|
|
25862
|
+
if (hexExpected === true) {
|
|
25863
|
+
if (!(context instanceof basic_1.VoidType)
|
|
25864
|
+
&& !(context instanceof basic_1.XStringType)
|
|
25865
|
+
&& !(context instanceof basic_1.HexType)
|
|
25866
|
+
&& !(context instanceof basic_1.XGenericType)
|
|
25867
|
+
&& !(context instanceof basic_1.XSequenceType)
|
|
25868
|
+
&& !(context instanceof unknown_type_1.UnknownType)) {
|
|
25869
|
+
throw new Error("Operator only valid for XSTRING or HEX");
|
|
25870
|
+
}
|
|
25871
|
+
if (hexNext === false) {
|
|
25872
|
+
hexExpected = false;
|
|
25873
|
+
}
|
|
25874
|
+
hexNext = false;
|
|
25875
|
+
}
|
|
25846
25876
|
first = children.shift();
|
|
25847
25877
|
if (first === undefined) {
|
|
25848
25878
|
break;
|
|
@@ -27232,8 +27262,15 @@ class Append {
|
|
|
27232
27262
|
else if (targetType instanceof basic_1.VoidType) {
|
|
27233
27263
|
rowType = targetType;
|
|
27234
27264
|
}
|
|
27235
|
-
|
|
27265
|
+
let sourceType = new source_1.Source().runSyntax(source, scope, filename, rowType);
|
|
27236
27266
|
if (node.findDirectTokenByText("LINES")) {
|
|
27267
|
+
// hmm, checking only the row types are compatible will not check the table type, e.g. sorted or hashed
|
|
27268
|
+
if (sourceType instanceof basic_1.TableType) {
|
|
27269
|
+
sourceType = sourceType.getRowType();
|
|
27270
|
+
}
|
|
27271
|
+
if (targetType instanceof basic_1.TableType) {
|
|
27272
|
+
targetType = targetType.getRowType();
|
|
27273
|
+
}
|
|
27237
27274
|
if (new _type_utils_1.TypeUtils(scope).isAssignable(sourceType, targetType) === false) {
|
|
27238
27275
|
throw new Error("Incompatible types");
|
|
27239
27276
|
}
|
|
@@ -28045,7 +28082,7 @@ const _type_utils_1 = __webpack_require__(/*! ../_type_utils */ "./node_modules/
|
|
|
28045
28082
|
class Concatenate {
|
|
28046
28083
|
runSyntax(node, scope, filename) {
|
|
28047
28084
|
const byteMode = node.findDirectTokenByText("BYTE") !== undefined;
|
|
28048
|
-
|
|
28085
|
+
const linesMode = node.findDirectTokenByText("LINES") !== undefined;
|
|
28049
28086
|
const target = node.findFirstExpression(Expressions.Target);
|
|
28050
28087
|
const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);
|
|
28051
28088
|
if (inline) {
|
|
@@ -28063,18 +28100,21 @@ class Concatenate {
|
|
|
28063
28100
|
throw new Error("Target type not compatible");
|
|
28064
28101
|
}
|
|
28065
28102
|
}
|
|
28066
|
-
|
|
28067
|
-
const
|
|
28068
|
-
|
|
28103
|
+
if (linesMode) {
|
|
28104
|
+
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
28105
|
+
const type = new source_1.Source().runSyntax(s, scope, filename);
|
|
28069
28106
|
if (!(type instanceof basic_1.UnknownType) && !(type instanceof basic_1.VoidType) && !(type instanceof basic_1.TableType)) {
|
|
28070
28107
|
throw new Error("Source must be an internal table");
|
|
28071
28108
|
}
|
|
28072
|
-
linesMode = false;
|
|
28073
|
-
continue;
|
|
28074
28109
|
}
|
|
28075
|
-
|
|
28076
|
-
|
|
28077
|
-
|
|
28110
|
+
}
|
|
28111
|
+
else {
|
|
28112
|
+
for (const s of node.findDirectExpressions(Expressions.SimpleSource3)) {
|
|
28113
|
+
const type = new source_1.Source().runSyntax(s, scope, filename);
|
|
28114
|
+
const compatible = byteMode ? new _type_utils_1.TypeUtils(scope).isHexLike(type) : new _type_utils_1.TypeUtils(scope).isCharLikeStrict(type);
|
|
28115
|
+
if (compatible === false) {
|
|
28116
|
+
throw new Error("Source type not compatible");
|
|
28117
|
+
}
|
|
28078
28118
|
}
|
|
28079
28119
|
}
|
|
28080
28120
|
}
|
|
@@ -29987,7 +30027,8 @@ class ModifyInternal {
|
|
|
29987
30027
|
new source_1.Source().runSyntax(s, scope, filename);
|
|
29988
30028
|
}
|
|
29989
30029
|
// there is only one
|
|
29990
|
-
const
|
|
30030
|
+
const target = node.findFirstExpression(Expressions.Target);
|
|
30031
|
+
const targetExpression = target;
|
|
29991
30032
|
if (targetExpression) {
|
|
29992
30033
|
// it might be a dynamic target
|
|
29993
30034
|
const targetType = new target_1.Target().runSyntax(targetExpression, scope, filename);
|
|
@@ -30004,13 +30045,19 @@ class ModifyInternal {
|
|
|
30004
30045
|
throw new Error("Table does not have header line");
|
|
30005
30046
|
}
|
|
30006
30047
|
}
|
|
30048
|
+
else if (targetType instanceof basic_1.StructureType) {
|
|
30049
|
+
// it might originate from a TABLES statement
|
|
30050
|
+
if (target.concatTokens().toUpperCase() !== targetType.getDDICName()) {
|
|
30051
|
+
throw new Error("Not an internal table");
|
|
30052
|
+
}
|
|
30053
|
+
}
|
|
30007
30054
|
else {
|
|
30008
30055
|
throw new Error("Not an internal table");
|
|
30009
30056
|
}
|
|
30010
30057
|
}
|
|
30011
|
-
const
|
|
30012
|
-
if (
|
|
30013
|
-
new fstarget_1.FSTarget().runSyntax(
|
|
30058
|
+
const fstarget = node.findDirectExpression(Expressions.FSTarget);
|
|
30059
|
+
if (fstarget) {
|
|
30060
|
+
new fstarget_1.FSTarget().runSyntax(fstarget, scope, filename, undefined);
|
|
30014
30061
|
}
|
|
30015
30062
|
for (const t of node.findDirectExpressions(Expressions.ComponentCond)) {
|
|
30016
30063
|
new component_cond_1.ComponentCond().runSyntax(t, scope, filename);
|
|
@@ -50277,7 +50324,7 @@ class Registry {
|
|
|
50277
50324
|
}
|
|
50278
50325
|
static abaplintVersion() {
|
|
50279
50326
|
// magic, see build script "version.sh"
|
|
50280
|
-
return "2.
|
|
50327
|
+
return "2.106.1";
|
|
50281
50328
|
}
|
|
50282
50329
|
getDDICReferences() {
|
|
50283
50330
|
return this.ddicReferences;
|
|
@@ -59539,6 +59586,18 @@ class IdenticalConditions extends _abap_rule_1.ABAPRule {
|
|
|
59539
59586
|
|
|
59540
59587
|
Prerequsites: code is pretty printed with identical cAsE`,
|
|
59541
59588
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
59589
|
+
badExample: `IF foo = bar OR 1 = a OR foo = bar.
|
|
59590
|
+
ENDIF.
|
|
59591
|
+
CASE bar.
|
|
59592
|
+
WHEN '1'.
|
|
59593
|
+
WHEN 'A' OR '1'.
|
|
59594
|
+
ENDCASE.`,
|
|
59595
|
+
goodExample: `IF foo = bar OR 1 = a.
|
|
59596
|
+
ENDIF.
|
|
59597
|
+
CASE bar.
|
|
59598
|
+
WHEN '1'.
|
|
59599
|
+
WHEN 'A'.
|
|
59600
|
+
ENDCASE.`,
|
|
59542
59601
|
};
|
|
59543
59602
|
}
|
|
59544
59603
|
getConfig() {
|
|
@@ -60694,6 +60753,7 @@ __exportStar(__webpack_require__(/*! ./in_statement_indentation */ "./node_modul
|
|
|
60694
60753
|
__exportStar(__webpack_require__(/*! ./indentation */ "./node_modules/@abaplint/core/build/src/rules/indentation.js"), exports);
|
|
60695
60754
|
__exportStar(__webpack_require__(/*! ./inline_data_old_versions */ "./node_modules/@abaplint/core/build/src/rules/inline_data_old_versions.js"), exports);
|
|
60696
60755
|
__exportStar(__webpack_require__(/*! ./intf_referencing_clas */ "./node_modules/@abaplint/core/build/src/rules/intf_referencing_clas.js"), exports);
|
|
60756
|
+
__exportStar(__webpack_require__(/*! ./invalid_table_index */ "./node_modules/@abaplint/core/build/src/rules/invalid_table_index.js"), exports);
|
|
60697
60757
|
__exportStar(__webpack_require__(/*! ./keep_single_parameter_on_one_line */ "./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js"), exports);
|
|
60698
60758
|
__exportStar(__webpack_require__(/*! ./keyword_case */ "./node_modules/@abaplint/core/build/src/rules/keyword_case.js"), exports);
|
|
60699
60759
|
__exportStar(__webpack_require__(/*! ./line_break_multiple_parameters */ "./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js"), exports);
|
|
@@ -60958,6 +61018,89 @@ exports.IntfReferencingClas = IntfReferencingClas;
|
|
|
60958
61018
|
|
|
60959
61019
|
/***/ }),
|
|
60960
61020
|
|
|
61021
|
+
/***/ "./node_modules/@abaplint/core/build/src/rules/invalid_table_index.js":
|
|
61022
|
+
/*!****************************************************************************!*\
|
|
61023
|
+
!*** ./node_modules/@abaplint/core/build/src/rules/invalid_table_index.js ***!
|
|
61024
|
+
\****************************************************************************/
|
|
61025
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
61026
|
+
|
|
61027
|
+
"use strict";
|
|
61028
|
+
|
|
61029
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
61030
|
+
exports.InvalidTableIndex = exports.InvalidTableIndexConf = void 0;
|
|
61031
|
+
const issue_1 = __webpack_require__(/*! ../issue */ "./node_modules/@abaplint/core/build/src/issue.js");
|
|
61032
|
+
const Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
61033
|
+
const _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ "./node_modules/@abaplint/core/build/src/rules/_abap_rule.js");
|
|
61034
|
+
const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
|
|
61035
|
+
const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/core/build/src/rules/_irule.js");
|
|
61036
|
+
const edit_helper_1 = __webpack_require__(/*! ../edit_helper */ "./node_modules/@abaplint/core/build/src/edit_helper.js");
|
|
61037
|
+
const statements_1 = __webpack_require__(/*! ../abap/2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
61038
|
+
class InvalidTableIndexConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
61039
|
+
}
|
|
61040
|
+
exports.InvalidTableIndexConf = InvalidTableIndexConf;
|
|
61041
|
+
class InvalidTableIndex extends _abap_rule_1.ABAPRule {
|
|
61042
|
+
constructor() {
|
|
61043
|
+
super(...arguments);
|
|
61044
|
+
this.conf = new InvalidTableIndexConf();
|
|
61045
|
+
}
|
|
61046
|
+
getMetadata() {
|
|
61047
|
+
return {
|
|
61048
|
+
key: "invalid_table_index",
|
|
61049
|
+
title: "Invalid Table Index",
|
|
61050
|
+
shortDescription: `Issues error for constant table index zero, as ABAP starts from 1`,
|
|
61051
|
+
tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],
|
|
61052
|
+
badExample: `DATA(first) = table[ 0 ].
|
|
61053
|
+
READ TABLE gt_stack ASSIGNING <ls_stack> INDEX 0.`,
|
|
61054
|
+
goodExample: `DATA(first) = table[ 1 ].
|
|
61055
|
+
READ TABLE gt_stack ASSIGNING <ls_stack> INDEX 1.`,
|
|
61056
|
+
};
|
|
61057
|
+
}
|
|
61058
|
+
getConfig() {
|
|
61059
|
+
return this.conf;
|
|
61060
|
+
}
|
|
61061
|
+
setConfig(conf) {
|
|
61062
|
+
this.conf = conf;
|
|
61063
|
+
}
|
|
61064
|
+
runParsed(file) {
|
|
61065
|
+
var _a, _b, _c, _d, _e, _f;
|
|
61066
|
+
const issues = [];
|
|
61067
|
+
const stru = file.getStructure();
|
|
61068
|
+
if (stru === undefined) {
|
|
61069
|
+
return issues; // parser error
|
|
61070
|
+
}
|
|
61071
|
+
const expr = stru.findAllExpressionsRecursive(Expressions.TableExpression);
|
|
61072
|
+
for (const e of expr) {
|
|
61073
|
+
const token = (_c = (_b = (_a = e.findDirectExpression(Expressions.Source)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Constant)) === null || _b === void 0 ? void 0 : _b.findFirstExpression(Expressions.Integer)) === null || _c === void 0 ? void 0 : _c.getFirstToken();
|
|
61074
|
+
if (token === undefined) {
|
|
61075
|
+
continue;
|
|
61076
|
+
}
|
|
61077
|
+
if (token.getStr() === "0") {
|
|
61078
|
+
const message = "Table index starts from 1";
|
|
61079
|
+
const fix = edit_helper_1.EditHelper.replaceToken(file, token, "1");
|
|
61080
|
+
const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity, fix);
|
|
61081
|
+
issues.push(issue);
|
|
61082
|
+
}
|
|
61083
|
+
}
|
|
61084
|
+
for (const rt of stru.findAllStatements(statements_1.ReadTable)) {
|
|
61085
|
+
const token = (_f = (_e = (_d = rt.findExpressionAfterToken("INDEX")) === null || _d === void 0 ? void 0 : _d.findDirectExpression(Expressions.Constant)) === null || _e === void 0 ? void 0 : _e.findFirstExpression(Expressions.Integer)) === null || _f === void 0 ? void 0 : _f.getFirstToken();
|
|
61086
|
+
if (token === undefined) {
|
|
61087
|
+
continue;
|
|
61088
|
+
}
|
|
61089
|
+
if (token.getStr() === "0") {
|
|
61090
|
+
const message = "Table index starts from 1";
|
|
61091
|
+
const fix = edit_helper_1.EditHelper.replaceToken(file, token, "1");
|
|
61092
|
+
const issue = issue_1.Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity, fix);
|
|
61093
|
+
issues.push(issue);
|
|
61094
|
+
}
|
|
61095
|
+
}
|
|
61096
|
+
return issues;
|
|
61097
|
+
}
|
|
61098
|
+
}
|
|
61099
|
+
exports.InvalidTableIndex = InvalidTableIndex;
|
|
61100
|
+
//# sourceMappingURL=invalid_table_index.js.map
|
|
61101
|
+
|
|
61102
|
+
/***/ }),
|
|
61103
|
+
|
|
60961
61104
|
/***/ "./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js":
|
|
60962
61105
|
/*!******************************************************************************************!*\
|
|
60963
61106
|
!*** ./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js ***!
|
|
@@ -68016,6 +68159,24 @@ class SlowParameterPassing {
|
|
|
68016
68159
|
shortDescription: `Detects slow pass by value passing for methods where parameter is not changed`,
|
|
68017
68160
|
extendedInformation: `Method parameters defined in interfaces is not checked`,
|
|
68018
68161
|
tags: [_irule_1.RuleTag.Performance],
|
|
68162
|
+
badExample: `CLASS lcl DEFINITION.
|
|
68163
|
+
PUBLIC SECTION.
|
|
68164
|
+
METHODS bar IMPORTING VALUE(sdf) TYPE string.
|
|
68165
|
+
ENDCLASS.
|
|
68166
|
+
CLASS lcl IMPLEMENTATION.
|
|
68167
|
+
METHOD bar.
|
|
68168
|
+
WRITE sdf.
|
|
68169
|
+
ENDMETHOD.
|
|
68170
|
+
ENDCLASS.`,
|
|
68171
|
+
goodExample: `CLASS lcl DEFINITION.
|
|
68172
|
+
PUBLIC SECTION.
|
|
68173
|
+
METHODS bar IMPORTING sdf TYPE string.
|
|
68174
|
+
ENDCLASS.
|
|
68175
|
+
CLASS lcl IMPLEMENTATION.
|
|
68176
|
+
METHOD bar.
|
|
68177
|
+
WRITE sdf.
|
|
68178
|
+
ENDMETHOD.
|
|
68179
|
+
ENDCLASS.`,
|
|
68019
68180
|
};
|
|
68020
68181
|
}
|
|
68021
68182
|
getConfig() {
|
|
@@ -68720,6 +68881,8 @@ Also see separate rule sql_escape_host_variables
|
|
|
68720
68881
|
|
|
68721
68882
|
Activates from v750 and up`,
|
|
68722
68883
|
tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Quickfix],
|
|
68884
|
+
badExample: `SELECT * FROM ztabl INTO TABLE @rt_content WHERE type = @iv_type ORDER BY PRIMARY KEY.`,
|
|
68885
|
+
goodExample: `SELECT * FROM ztabl WHERE type = @iv_type ORDER BY PRIMARY KEY INTO TABLE @rt_content.`,
|
|
68723
68886
|
};
|
|
68724
68887
|
}
|
|
68725
68888
|
getConfig() {
|
|
@@ -78101,7 +78264,7 @@ class ConcatenateTranspiler {
|
|
|
78101
78264
|
transpile(node, traversal) {
|
|
78102
78265
|
const concat = node.concatTokens().toUpperCase();
|
|
78103
78266
|
const slist = [];
|
|
78104
|
-
for (const s of node.findDirectExpressions(abaplint.Expressions.Source)) {
|
|
78267
|
+
for (const s of node.findDirectExpressions(abaplint.Expressions.Source).concat(node.findDirectExpressions(abaplint.Expressions.SimpleSource3))) {
|
|
78105
78268
|
slist.push(traversal.traverse(s));
|
|
78106
78269
|
}
|
|
78107
78270
|
let extra = "";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler-cli",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.9",
|
|
4
4
|
"description": "Transpiler - Command Line Interface",
|
|
5
5
|
"funding": "https://github.com/sponsors/larshp",
|
|
6
6
|
"bin": {
|
|
@@ -26,15 +26,15 @@
|
|
|
26
26
|
"author": "abaplint",
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@abaplint/transpiler": "^2.8.
|
|
29
|
+
"@abaplint/transpiler": "^2.8.9",
|
|
30
30
|
"@types/glob": "^8.1.0",
|
|
31
31
|
"glob": "=7.2.0",
|
|
32
32
|
"@types/progress": "^2.0.7",
|
|
33
|
-
"@types/node": "^20.11.
|
|
34
|
-
"@abaplint/core": "^2.
|
|
33
|
+
"@types/node": "^20.11.25",
|
|
34
|
+
"@abaplint/core": "^2.106.1",
|
|
35
35
|
"progress": "^2.0.3",
|
|
36
36
|
"webpack": "^5.90.3",
|
|
37
37
|
"webpack-cli": "^5.1.4",
|
|
38
|
-
"typescript": "^5.
|
|
38
|
+
"typescript": "^5.4.2"
|
|
39
39
|
}
|
|
40
40
|
}
|