@abaplint/transpiler-cli 2.10.23 → 2.10.24
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/abap_transpile +1 -1
- package/build/bundle.js +505 -169
- package/package.json +9 -9
- package/schema.json +0 -161
package/build/bundle.js
CHANGED
|
@@ -4155,7 +4155,7 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
4155
4155
|
class FieldLength extends combi_1.Expression {
|
|
4156
4156
|
getRunnable() {
|
|
4157
4157
|
const normal = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.Plus)), (0, combi_1.altPrio)((0, combi_1.regex)(/^\d+$/), _1.SimpleFieldChain2));
|
|
4158
|
-
const length = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.altPrio)(normal, "*"), (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
4158
|
+
const length = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.optPrio)((0, combi_1.altPrio)(normal, "*")), (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
4159
4159
|
return length;
|
|
4160
4160
|
}
|
|
4161
4161
|
}
|
|
@@ -4201,9 +4201,10 @@ exports.FieldSub = void 0;
|
|
|
4201
4201
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
4202
4202
|
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
4203
4203
|
const table_body_1 = __webpack_require__(/*! ./table_body */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/table_body.js");
|
|
4204
|
+
const field_length_1 = __webpack_require__(/*! ./field_length */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/field_length.js");
|
|
4204
4205
|
class FieldSub extends combi_1.Expression {
|
|
4205
4206
|
getRunnable() {
|
|
4206
|
-
const ret = (0, combi_1.seq)((0, combi_1.regex)(/^\*?!?&?(\/\w+\/)?[a-zA-Z_%$\?][\w%$\$\*]*$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\w%$\$\*]+$/))), (0, combi_1.opt)(table_body_1.TableBody));
|
|
4207
|
+
const ret = (0, combi_1.seq)((0, combi_1.regex)(/^\*?!?&?(\/\w+\/)?[a-zA-Z_%$\?][\w%$\$\*]*$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^[\w%$\$\*]+$/))), (0, combi_1.opt)(field_length_1.FieldLength), (0, combi_1.opt)(table_body_1.TableBody));
|
|
4207
4208
|
return ret;
|
|
4208
4209
|
}
|
|
4209
4210
|
}
|
|
@@ -6844,7 +6845,7 @@ exports.SQLAliasField = void 0;
|
|
|
6844
6845
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
6845
6846
|
class SQLAliasField extends combi_1.Expression {
|
|
6846
6847
|
getRunnable() {
|
|
6847
|
-
return (0, combi_1.regex)(/^(\/\w+\/)?\w
|
|
6848
|
+
return (0, combi_1.regex)(/^(\/\w+\/)?\w+~(\/\w+\/)?\w+$/);
|
|
6848
6849
|
}
|
|
6849
6850
|
}
|
|
6850
6851
|
exports.SQLAliasField = SQLAliasField;
|
|
@@ -7222,7 +7223,7 @@ exports.SQLFieldName = void 0;
|
|
|
7222
7223
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
7223
7224
|
class SQLFieldName extends combi_1.Expression {
|
|
7224
7225
|
getRunnable() {
|
|
7225
|
-
return (0, combi_1.regex)(/^(?!(?:SINGLE|INTO|DISTINCT|AS|WHERE|FOR|HAVING|APPENDING|UP|FROM)$)(\/\w+\/)?(\w+~(\w+|\*)|\w+)$/i);
|
|
7226
|
+
return (0, combi_1.regex)(/^(?!(?:SINGLE|INTO|DISTINCT|AS|WHERE|FOR|HAVING|APPENDING|UP|FROM)$)(\/\w+\/)?(\w+~(\/\w+\/)?(\w+|\*)|\w+)$/i);
|
|
7226
7227
|
}
|
|
7227
7228
|
}
|
|
7228
7229
|
exports.SQLFieldName = SQLFieldName;
|
|
@@ -7367,7 +7368,7 @@ const integer_1 = __webpack_require__(/*! ./integer */ "./node_modules/@abaplint
|
|
|
7367
7368
|
const sql_function_input_1 = __webpack_require__(/*! ./sql_function_input */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function_input.js");
|
|
7368
7369
|
class SQLFunction extends combi_1.Expression {
|
|
7369
7370
|
getRunnable() {
|
|
7370
|
-
const castTypes = (0, combi_1.altPrio)((0, combi_1.seq)("CHAR", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.seq)("DEC", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, ",", integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), "FLTP", "
|
|
7371
|
+
const castTypes = (0, combi_1.altPrio)((0, combi_1.seq)("CHAR", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), (0, combi_1.seq)("DEC", (0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, ",", integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.seq)("NUMC", (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), integer_1.Integer, (0, combi_1.tok)(tokens_1.WParenRightW)))), "FLTP", "INT2", "INT8");
|
|
7371
7372
|
const commaParam = (0, combi_1.seq)(",", sql_function_input_1.SQLFunctionInput);
|
|
7372
7373
|
// note: the function names are not keywords, they are usually in lower case
|
|
7373
7374
|
const abs = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^abs$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
@@ -7384,7 +7385,12 @@ class SQLFunction extends combi_1.Expression {
|
|
|
7384
7385
|
const round = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^round$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7385
7386
|
const upper = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)((0, combi_1.regex)(/^upper$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7386
7387
|
const uuid = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)((0, combi_1.regex)(/^uuid$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7387
|
-
|
|
7388
|
+
const concat_with_space = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)((0, combi_1.regex)(/^concat_with_space$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7389
|
+
// dunno if the version for substring is correct
|
|
7390
|
+
const substring = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^substring$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7391
|
+
const ltrim = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^ltrim$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7392
|
+
const rtrim = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^rtrim$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7393
|
+
return (0, combi_1.altPrio)(uuid, abs, ceil, floor, cast, div, mod, coalesce, concat, replace, length, lower, upper, round, concat_with_space, ltrim, rtrim, substring);
|
|
7388
7394
|
}
|
|
7389
7395
|
}
|
|
7390
7396
|
exports.SQLFunction = SQLFunction;
|
|
@@ -8375,7 +8381,7 @@ class TypeTable extends combi_1.Expression {
|
|
|
8375
8381
|
const rangeLike = (0, combi_1.seq)("RANGE OF", field_chain_1.FieldChain, (0, combi_1.optPrio)(header), (0, combi_1.optPrio)(initial), (0, combi_1.optPrio)("VALUE IS INITIAL"));
|
|
8376
8382
|
// a maximum of 15 secondary table keys can be defined
|
|
8377
8383
|
// "WITH" is not allowed as a field name in keys
|
|
8378
|
-
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)))));
|
|
8384
|
+
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))), (0, combi_1.optPrio)("VALUE IS INITIAL")));
|
|
8379
8385
|
const occurs = (0, combi_1.seq)("OCCURS", (0, combi_1.altPrio)(_1.Integer, field_chain_1.FieldChain));
|
|
8380
8386
|
const derived = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("TABLE FOR", (0, combi_1.altPrio)("ACTION IMPORT", "ACTION RESULT", "CREATE", "EVENT", "REPORTED EARLY", "FAILED EARLY", "FAILED", "LOCK", "DETERMINATION", "READ RESULT", "UPDATE"), (0, combi_1.alt)(_1.TypeName, _1.EntityAssociation)));
|
|
8381
8387
|
const oldType = (0, combi_1.seq)((0, combi_1.opt)("REF TO"), _1.TypeName, (0, combi_1.alt)((0, combi_1.seq)(occurs, (0, combi_1.opt)(header)), header));
|
|
@@ -9117,7 +9123,7 @@ class Assign {
|
|
|
9117
9123
|
const decimals = (0, combi_1.seq)("DECIMALS", expressions_1.Source);
|
|
9118
9124
|
const casting = (0, combi_1.seq)("CASTING", (0, combi_1.opt)((0, combi_1.alt)(like, handle, (0, combi_1.per)(type, decimals))));
|
|
9119
9125
|
const obsoleteType = (0, combi_1.seq)("TYPE", expressions_1.Source, (0, combi_1.optPrio)(decimals));
|
|
9120
|
-
const ret = (0, combi_1.seq)("ASSIGN", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, "INCREMENT")), expressions_1.AssignSource, "TO", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType)), (0, combi_1.opt)(range), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v757, "ELSE UNASSIGN")));
|
|
9126
|
+
const ret = (0, combi_1.seq)("ASSIGN", (0, combi_1.opt)((0, combi_1.seq)(expressions_1.Target, "INCREMENT")), expressions_1.AssignSource, "TO", expressions_1.FSTarget, (0, combi_1.opt)((0, combi_1.altPrio)(casting, obsoleteType, decimals)), (0, combi_1.opt)(range), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v757, "ELSE UNASSIGN")));
|
|
9121
9127
|
return ret;
|
|
9122
9128
|
}
|
|
9123
9129
|
}
|
|
@@ -9597,7 +9603,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@a
|
|
|
9597
9603
|
class CallOLE {
|
|
9598
9604
|
getMatcher() {
|
|
9599
9605
|
const rc = (0, combi_1.seq)("=", expressions_1.Target);
|
|
9600
|
-
const ret = (0, combi_1.seq)("CALL METHOD OF", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(rc), (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)("
|
|
9606
|
+
const ret = (0, combi_1.seq)("CALL METHOD OF", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(rc), (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)("QUEUE-ONLY"), (0, combi_1.opt)(expressions_1.OLEExporting));
|
|
9601
9607
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
9602
9608
|
}
|
|
9603
9609
|
}
|
|
@@ -10275,10 +10281,12 @@ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@a
|
|
|
10275
10281
|
class Communication {
|
|
10276
10282
|
getMatcher() {
|
|
10277
10283
|
const length = (0, combi_1.seq)("LENGTH", expressions_1.Target);
|
|
10284
|
+
const returncode = (0, combi_1.seq)("RETURNCODE", expressions_1.Source);
|
|
10285
|
+
const buffer = (0, combi_1.seq)("BUFFER", expressions_1.Target);
|
|
10278
10286
|
const init = (0, combi_1.seq)("INIT ID", expressions_1.Source, "DESTINATION", expressions_1.Target);
|
|
10279
|
-
const allocate = (0, combi_1.seq)("ALLOCATE ID", expressions_1.Source);
|
|
10280
|
-
const send = (0, combi_1.seq)("SEND ID", expressions_1.Source,
|
|
10281
|
-
const deallocate = (0, combi_1.seq)("DEALLOCATE ID", expressions_1.Source);
|
|
10287
|
+
const allocate = (0, combi_1.seq)("ALLOCATE ID", expressions_1.Source, (0, combi_1.opt)(returncode));
|
|
10288
|
+
const send = (0, combi_1.seq)("SEND ID", expressions_1.Source, (0, combi_1.opt)((0, combi_1.per)(buffer, length)), (0, combi_1.opt)(returncode));
|
|
10289
|
+
const deallocate = (0, combi_1.seq)("DEALLOCATE ID", expressions_1.Source, (0, combi_1.opt)(returncode));
|
|
10282
10290
|
const accept = (0, combi_1.seq)("ACCEPT ID", expressions_1.Source);
|
|
10283
10291
|
const receive = (0, combi_1.seq)("RECEIVE ID", expressions_1.Source, "BUFFER", expressions_1.Source, (0, combi_1.opt)(length), "DATAINFO", expressions_1.Target, "STATUSINFO", expressions_1.Target, "RECEIVED", expressions_1.Target);
|
|
10284
10292
|
const ret = (0, combi_1.seq)("COMMUNICATION", (0, combi_1.alt)(init, allocate, send, deallocate, receive, accept));
|
|
@@ -10791,7 +10799,8 @@ class DeleteDatabase {
|
|
|
10791
10799
|
getMatcher() {
|
|
10792
10800
|
const where = (0, combi_1.seq)("WHERE", (0, combi_1.altPrio)(expressions_1.SQLCond, expressions_1.Dynamic));
|
|
10793
10801
|
const from = (0, combi_1.seq)("FROM", expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.opt)(where));
|
|
10794
|
-
const
|
|
10802
|
+
const fromSomething = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSourceSimple);
|
|
10803
|
+
const table = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.optPrio)(fromSomething));
|
|
10795
10804
|
const ret = (0, combi_1.seq)("DELETE", (0, combi_1.altPrio)(from, table));
|
|
10796
10805
|
return ret;
|
|
10797
10806
|
}
|
|
@@ -10867,13 +10876,13 @@ class DeleteInternal {
|
|
|
10867
10876
|
const index = (0, combi_1.seq)("INDEX", expressions_1.Source);
|
|
10868
10877
|
const keyName = (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic);
|
|
10869
10878
|
const using = (0, combi_1.seq)("USING KEY", keyName);
|
|
10870
|
-
const from = (0, combi_1.
|
|
10871
|
-
const fromTo = (0, combi_1.seq)(from, (0, combi_1.optPrio)((0, combi_1.seq)("TO", expressions_1.Source)));
|
|
10879
|
+
const from = (0, combi_1.seq)("FROM", expressions_1.Source);
|
|
10880
|
+
const fromTo = (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)((0, combi_1.seq)("TO", expressions_1.Source)));
|
|
10872
10881
|
const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, expressions_1.Dynamic));
|
|
10873
10882
|
const key = (0, combi_1.seq)("WITH TABLE KEY", (0, combi_1.opt)((0, combi_1.seq)(keyName, "COMPONENTS")), (0, combi_1.plus)(expressions_1.ComponentCompare));
|
|
10874
|
-
const table = (0, combi_1.seq)("TABLE", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), from, key));
|
|
10883
|
+
const table = (0, combi_1.seq)("TABLE", expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), (0, combi_1.seq)((0, combi_1.optPrio)(from), (0, combi_1.optPrio)(using)), key));
|
|
10875
10884
|
const other = (0, combi_1.seq)(expressions_1.Target, (0, combi_1.alt)((0, combi_1.per)(index, using), fromTo, key), (0, combi_1.opt)(where));
|
|
10876
|
-
const f = (0, combi_1.seq)(expressions_1.
|
|
10885
|
+
const f = (0, combi_1.seq)(expressions_1.SimpleFieldChain2, (0, combi_1.optPrio)(expressions_1.FieldOffset), (0, combi_1.optPrio)(expressions_1.FieldLength));
|
|
10877
10886
|
const adjacent = (0, combi_1.seq)("ADJACENT DUPLICATES FROM", expressions_1.Target, (0, combi_1.optPrio)(using), (0, combi_1.opt)((0, combi_1.seq)("COMPARING", (0, combi_1.altPrio)("ALL FIELDS", (0, combi_1.plus)((0, combi_1.altPrio)(f, expressions_1.Dynamic))))), (0, combi_1.optPrio)(using));
|
|
10878
10887
|
return (0, combi_1.seq)("DELETE", (0, combi_1.alt)(table, adjacent, other));
|
|
10879
10888
|
}
|
|
@@ -10901,7 +10910,7 @@ class DeleteMemory {
|
|
|
10901
10910
|
const memory = (0, combi_1.seq)("MEMORY ID", expressions_1.Source);
|
|
10902
10911
|
const id = (0, combi_1.seq)("ID", expressions_1.Source);
|
|
10903
10912
|
const client = (0, combi_1.seq)("CLIENT", expressions_1.Source);
|
|
10904
|
-
const shared = (0, combi_1.seq)("SHARED", (0, combi_1.altPrio)("MEMORY", "BUFFER"), expressions_1.Field, "(",
|
|
10913
|
+
const shared = (0, combi_1.seq)("SHARED", (0, combi_1.altPrio)("MEMORY", "BUFFER"), expressions_1.Field, "(", (0, combi_1.regex)(/^[\w%]+$/), ")", (0, combi_1.optPrio)(client), id);
|
|
10905
10914
|
const ret = (0, combi_1.seq)("DELETE FROM", (0, combi_1.alt)(memory, shared));
|
|
10906
10915
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
10907
10916
|
}
|
|
@@ -11911,11 +11920,11 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
|
|
|
11911
11920
|
// todo, cloud, split?
|
|
11912
11921
|
class Export {
|
|
11913
11922
|
getMatcher() {
|
|
11914
|
-
const from = (0, combi_1.seq)("FROM", expressions_1.Source);
|
|
11923
|
+
const from = (0, combi_1.seq)((0, combi_1.altPrio)("FROM", "="), expressions_1.Source);
|
|
11915
11924
|
const client = (0, combi_1.seq)("CLIENT", expressions_1.Source);
|
|
11916
11925
|
const id = (0, combi_1.seq)("ID", expressions_1.Source);
|
|
11917
11926
|
const using = (0, combi_1.seq)("USING", expressions_1.Source);
|
|
11918
|
-
const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w
|
|
11927
|
+
const cluster = (0, combi_1.seq)(expressions_1.NamespaceSimpleName, (0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.regex)(/^[\w$%\^~]{2}$/), (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
11919
11928
|
const buffer = (0, combi_1.seq)("DATA BUFFER", expressions_1.Target);
|
|
11920
11929
|
const memory = (0, combi_1.seq)("MEMORY", (0, combi_1.opt)((0, combi_1.seq)("ID", expressions_1.Source)));
|
|
11921
11930
|
const table = (0, combi_1.seq)("INTERNAL TABLE", expressions_1.Target);
|
|
@@ -11923,7 +11932,7 @@ class Export {
|
|
|
11923
11932
|
const database = (0, combi_1.seq)("DATABASE", cluster, (0, combi_1.per)(from, client, id, using));
|
|
11924
11933
|
const target = (0, combi_1.alt)(buffer, memory, database, table, shared);
|
|
11925
11934
|
const left = (0, combi_1.alt)(expressions_1.FieldSub, expressions_1.FieldSymbol);
|
|
11926
|
-
const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)(
|
|
11935
|
+
const source = (0, combi_1.alt)((0, combi_1.plus)((0, combi_1.altPrio)((0, combi_1.seq)(left, from), left)), expressions_1.Dynamic, expressions_1.Constant);
|
|
11927
11936
|
const compression = (0, combi_1.seq)("COMPRESSION", (0, combi_1.alt)("ON", "OFF"));
|
|
11928
11937
|
const hint = (0, combi_1.seq)("CODE PAGE HINT", expressions_1.Source);
|
|
11929
11938
|
return (0, combi_1.seq)("EXPORT", source, "TO", target, (0, combi_1.opt)(compression), (0, combi_1.opt)(hint));
|
|
@@ -12021,9 +12030,12 @@ exports.Field = void 0;
|
|
|
12021
12030
|
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
12022
12031
|
const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
12023
12032
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
12033
|
+
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
12024
12034
|
class Field {
|
|
12025
12035
|
getMatcher() {
|
|
12026
|
-
const
|
|
12036
|
+
const module = (0, combi_1.seq)("MODULE", expressions_1.FormName, (0, combi_1.opt)((0, combi_1.alt)("ON INPUT", "ON REQUEST")));
|
|
12037
|
+
const values = (0, combi_1.seq)("VALUES", (0, combi_1.tok)(tokens_1.WParenLeft), "BETWEEN", expressions_1.Constant, "AND", expressions_1.Constant, (0, combi_1.tok)(tokens_1.ParenRightW));
|
|
12038
|
+
const ret = (0, combi_1.seq)("FIELD", expressions_1.FieldChain, (0, combi_1.opt)((0, combi_1.alt)(module, values)));
|
|
12027
12039
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
12028
12040
|
}
|
|
12029
12041
|
}
|
|
@@ -12666,7 +12678,7 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
|
|
|
12666
12678
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
12667
12679
|
class GetProperty {
|
|
12668
12680
|
getMatcher() {
|
|
12669
|
-
const ret = (0, combi_1.seq)("GET PROPERTY OF", expressions_1.FieldSub, expressions_1.Source, "=", expressions_1.Source, (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)("QUEUEONLY"), (0, combi_1.opt)(expressions_1.OLEExporting));
|
|
12681
|
+
const ret = (0, combi_1.seq)("GET PROPERTY OF", expressions_1.FieldSub, (0, combi_1.alt)(expressions_1.Source, expressions_1.ConstantString), "=", expressions_1.Source, (0, combi_1.opt)("NO FLUSH"), (0, combi_1.opt)((0, combi_1.alt)("QUEUE-ONLY", "QUEUEONLY")), (0, combi_1.opt)(expressions_1.OLEExporting));
|
|
12670
12682
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
12671
12683
|
}
|
|
12672
12684
|
}
|
|
@@ -13264,6 +13276,7 @@ __exportStar(__webpack_require__(/*! ./set_locks */ "./node_modules/@abaplint/co
|
|
|
13264
13276
|
__exportStar(__webpack_require__(/*! ./enhancement */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/enhancement.js"), exports);
|
|
13265
13277
|
__exportStar(__webpack_require__(/*! ./end_enhancement */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/end_enhancement.js"), exports);
|
|
13266
13278
|
__exportStar(__webpack_require__(/*! ./form_definition */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/form_definition.js"), exports);
|
|
13279
|
+
__exportStar(__webpack_require__(/*! ./verification_message */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/verification_message.js"), exports);
|
|
13267
13280
|
//# sourceMappingURL=index.js.map
|
|
13268
13281
|
|
|
13269
13282
|
/***/ }),
|
|
@@ -13800,7 +13813,7 @@ class MethodDef {
|
|
|
13800
13813
|
const forfunction = (0, combi_1.seq)("FOR FUNCTION", expressions_1.TypeName, result);
|
|
13801
13814
|
const behavior = (0, combi_1.altPrio)((0, combi_1.seq)("VALIDATE ON SAVE IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("MODIFY IMPORTING", expressions_1.MethodParamName, modify), (0, combi_1.seq)("READ IMPORTING", expressions_1.MethodParamName, (0, combi_1.altPrio)(forRead, forfunction)), (0, combi_1.seq)("FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.NamespaceSimpleName, "FOR", expressions_1.NamespaceSimpleName, result), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR CREATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR UPDATE", expressions_1.TypeName, expressions_1.MethodParamName, "FOR DELETE", expressions_1.TypeName), (0, combi_1.seq)("BEHAVIOR IMPORTING", expressions_1.MethodParamName, "FOR READ", expressions_1.TypeName, result), (0, combi_1.seq)((0, combi_1.alt)("BEHAVIOR", "LOCK"), "IMPORTING", expressions_1.MethodParamName, "FOR LOCK", expressions_1.TypeName), (0, combi_1.seq)("DETERMINE", (0, combi_1.alt)("ON MODIFY", "ON SAVE"), "IMPORTING", expressions_1.MethodParamName, "FOR", expressions_1.TypeName), (0, combi_1.seq)("GLOBAL AUTHORIZATION IMPORTING REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("INSTANCE AUTHORIZATION IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result), (0, combi_1.seq)("INSTANCE FEATURES IMPORTING", expressions_1.MethodParamName, "REQUEST", expressions_1.MethodParamName, "FOR", expressions_1.TypeName, result));
|
|
13802
13815
|
// todo, this is only from version something
|
|
13803
|
-
const amdp = (0, combi_1.seq)("AMDP OPTIONS CDS SESSION CLIENT CURRENT", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
|
|
13816
|
+
const amdp = (0, combi_1.seq)("AMDP OPTIONS", (0, combi_1.optPrio)("READ-ONLY"), "CDS SESSION CLIENT CURRENT", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));
|
|
13804
13817
|
const ret = (0, combi_1.seq)((0, combi_1.altPrio)("CLASS-METHODS", "METHODS"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), (0, combi_1.optPrio)(def), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)("FOR", (0, combi_1.alt)(tableFunction, ddl, behavior)), amdp, "NOT AT END OF MODE", (0, combi_1.optPrio)(expressions_1.Redefinition)));
|
|
13805
13818
|
return ret;
|
|
13806
13819
|
}
|
|
@@ -13918,9 +13931,9 @@ class ModifyInternal {
|
|
|
13918
13931
|
const using = (0, combi_1.seq)("USING KEY", expressions_1.SimpleName);
|
|
13919
13932
|
const additions = (0, combi_1.per)(where, assigning, using);
|
|
13920
13933
|
const target = (0, combi_1.alt)(expressions_1.Target, expressions_1.Dynamic);
|
|
13921
|
-
const options = (0, combi_1.alt)((0, combi_1.per)(index, transporting), (0, combi_1.seq)(from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))), (0, combi_1.seq)((0, combi_1.per)(index, transporting), from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))));
|
|
13934
|
+
const options = (0, combi_1.alt)((0, combi_1.per)(index, transporting), (0, combi_1.seq)(from, (0, combi_1.opt)((0, combi_1.per)(index, transporting, using))), (0, combi_1.seq)((0, combi_1.per)(index, transporting), from, (0, combi_1.opt)((0, combi_1.per)(index, transporting))));
|
|
13922
13935
|
const long = (0, combi_1.seq)("MODIFY", (0, combi_1.opt)("TABLE"), target, (0, combi_1.opt)(options), (0, combi_1.opt)(additions));
|
|
13923
|
-
const simple = (0, combi_1.seq)("MODIFY TABLE", target,
|
|
13936
|
+
const simple = (0, combi_1.seq)("MODIFY TABLE", target, (0, combi_1.per)(from, using));
|
|
13924
13937
|
return (0, combi_1.alt)(long, simple);
|
|
13925
13938
|
}
|
|
13926
13939
|
}
|
|
@@ -13946,7 +13959,7 @@ class ModifyLine {
|
|
|
13946
13959
|
getMatcher() {
|
|
13947
13960
|
const onOff = (0, combi_1.alt)("ON", "OFF");
|
|
13948
13961
|
const eq = (0, combi_1.seq)("=", expressions_1.Source);
|
|
13949
|
-
const form = (0, combi_1.seq)((0, combi_1.alt)("INVERSE", "INPUT", "COLOR"), (0, combi_1.alt)(eq, onOff));
|
|
13962
|
+
const form = (0, combi_1.seq)((0, combi_1.alt)("INVERSE", "INPUT", "COLOR", "HOTSPOT"), (0, combi_1.opt)((0, combi_1.alt)(eq, onOff)));
|
|
13950
13963
|
const from = (0, combi_1.seq)("FROM", expressions_1.Source);
|
|
13951
13964
|
const value = (0, combi_1.seq)("FIELD VALUE", (0, combi_1.plus)((0, combi_1.seq)(expressions_1.Source, (0, combi_1.optPrio)(from))));
|
|
13952
13965
|
const format = (0, combi_1.seq)("FIELD FORMAT", expressions_1.Source, (0, combi_1.opt)(form));
|
|
@@ -14006,7 +14019,8 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
|
|
|
14006
14019
|
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
14007
14020
|
class Module {
|
|
14008
14021
|
getMatcher() {
|
|
14009
|
-
const
|
|
14022
|
+
const sw = (0, combi_1.seq)("SWITCH", expressions_1.NamespaceSimpleName);
|
|
14023
|
+
const ret = (0, combi_1.seq)("MODULE", expressions_1.FormName, (0, combi_1.opt)((0, combi_1.alt)("INPUT", "OUTPUT", "ON CHAIN-REQUEST", "ON CHAIN-INPUT", "AT EXIT-COMMAND", sw)));
|
|
14010
14024
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
14011
14025
|
}
|
|
14012
14026
|
}
|
|
@@ -14343,7 +14357,7 @@ class Parameter {
|
|
|
14343
14357
|
const type = (0, combi_1.seq)((0, combi_1.altPrio)("TYPE", "LIKE"), (0, combi_1.altPrio)(expressions_1.TypeName, expressions_1.Dynamic));
|
|
14344
14358
|
const memory = (0, combi_1.seq)("MEMORY ID", expressions_1.SimpleSource1);
|
|
14345
14359
|
const listbox = (0, combi_1.str)("AS LISTBOX");
|
|
14346
|
-
const cmd = (0, combi_1.seq)("USER-COMMAND", (0, combi_1.regex)(
|
|
14360
|
+
const cmd = (0, combi_1.seq)("USER-COMMAND", (0, combi_1.regex)(/^[\w\?\/]+$/));
|
|
14347
14361
|
const modif = (0, combi_1.seq)("MODIF ID", expressions_1.Modif);
|
|
14348
14362
|
const visible = (0, combi_1.seq)("VISIBLE LENGTH", expressions_1.Constant);
|
|
14349
14363
|
const length = (0, combi_1.seq)("LENGTH", expressions_1.Constant);
|
|
@@ -15290,7 +15304,8 @@ class ScrollList {
|
|
|
15290
15304
|
const line = (0, combi_1.seq)("LINE", expressions_1.Source);
|
|
15291
15305
|
const column = (0, combi_1.seq)("TO COLUMN", expressions_1.Source);
|
|
15292
15306
|
const to = (0, combi_1.seq)("TO", (0, combi_1.alt)("FIRST PAGE", "LAST PAGE", (0, combi_1.seq)("PAGE", expressions_1.Source)));
|
|
15293
|
-
const
|
|
15307
|
+
const pages = (0, combi_1.seq)(expressions_1.Source, "PAGES");
|
|
15308
|
+
const ret = (0, combi_1.seq)("SCROLL LIST", (0, combi_1.per)(index, (0, combi_1.seq)((0, combi_1.alt)(to, "BACKWARD", "FORWARD"), (0, combi_1.opt)(pages)), (0, combi_1.seq)((0, combi_1.alt)("LEFT", "RIGHT"), (0, combi_1.opt)((0, combi_1.seq)("BY", expressions_1.Source, "PLACES"))), column, line));
|
|
15294
15309
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
15295
15310
|
}
|
|
15296
15311
|
}
|
|
@@ -15422,7 +15437,7 @@ class SelectionScreen {
|
|
|
15422
15437
|
const exclude = (0, combi_1.seq)("EXCLUDE", (0, combi_1.alt)("IDS", "PARAMETERS"), (0, combi_1.regex)(/^\w+$/));
|
|
15423
15438
|
const beginVersion = (0, combi_1.seq)("BEGIN OF VERSION", (0, combi_1.regex)(/^\w+$/), expressions_1.TextElement);
|
|
15424
15439
|
const endVersion = (0, combi_1.seq)("END OF VERSION", (0, combi_1.regex)(/^\w+$/));
|
|
15425
|
-
const ret = (0, combi_1.seq)("SELECTION-SCREEN", (0, combi_1.altPrio)(comment, func, skip, pos, incl, iso, push, tab, uline, beginBlock, tabbed, endBlock, beginLine, endLine, param, beginScreen, endScreen, exclude, beginVersion, endVersion));
|
|
15440
|
+
const ret = (0, combi_1.seq)("SELECTION-SCREEN", (0, combi_1.altPrio)(comment, func, skip, pos, incl, iso, push, tab, uline, beginBlock, tabbed, endBlock, beginLine, endLine, param, beginScreen, endScreen, exclude, beginVersion, endVersion, def));
|
|
15426
15441
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
15427
15442
|
}
|
|
15428
15443
|
}
|
|
@@ -15452,7 +15467,7 @@ class SelectOption {
|
|
|
15452
15467
|
const option = (0, combi_1.seq)("OPTION", (0, combi_1.alt)("CP", expressions_1.Field));
|
|
15453
15468
|
const sign = (0, combi_1.seq)("SIGN", expressions_1.Field);
|
|
15454
15469
|
const memory = (0, combi_1.seq)("MEMORY ID", expressions_1.SimpleSource1);
|
|
15455
|
-
const match = (0, combi_1.seq)("MATCHCODE OBJECT", expressions_1.
|
|
15470
|
+
const match = (0, combi_1.seq)("MATCHCODE OBJECT", expressions_1.SimpleFieldChain);
|
|
15456
15471
|
const modif = (0, combi_1.seq)("MODIF ID", expressions_1.Modif);
|
|
15457
15472
|
const visible = (0, combi_1.seq)("VISIBLE LENGTH", expressions_1.Source);
|
|
15458
15473
|
const options = (0, combi_1.per)(def, option, sign, memory, match, visible, modif, "NO DATABASE SELECTION", "LOWER CASE", "NO-EXTENSION", "NO INTERVALS", "NO-DISPLAY", "OBLIGATORY");
|
|
@@ -16219,7 +16234,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@a
|
|
|
16219
16234
|
class Submit {
|
|
16220
16235
|
getMatcher() {
|
|
16221
16236
|
const sign = (0, combi_1.seq)("SIGN", expressions_1.Source);
|
|
16222
|
-
const eq = (0, combi_1.alt)("=", "EQ", "IN", "NE", "CP", "GE", "LE", "INCL");
|
|
16237
|
+
const eq = (0, combi_1.alt)("=", "EQ", "IN", "NE", "CP", "GE", "LE", "INCL", "GT", "LT");
|
|
16223
16238
|
const compare = (0, combi_1.seq)(eq, expressions_1.Source);
|
|
16224
16239
|
const between = (0, combi_1.seq)("BETWEEN", expressions_1.Source, "AND", expressions_1.Source);
|
|
16225
16240
|
const selectionTable = (0, combi_1.seq)("WITH SELECTION-TABLE", expressions_1.Source);
|
|
@@ -17018,6 +17033,31 @@ exports.UpdateDatabase = UpdateDatabase;
|
|
|
17018
17033
|
|
|
17019
17034
|
/***/ }),
|
|
17020
17035
|
|
|
17036
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/verification_message.js":
|
|
17037
|
+
/*!****************************************************************************************************!*\
|
|
17038
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/verification_message.js ***!
|
|
17039
|
+
\****************************************************************************************************/
|
|
17040
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
17041
|
+
|
|
17042
|
+
"use strict";
|
|
17043
|
+
|
|
17044
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
17045
|
+
exports.VerificationMessage = void 0;
|
|
17046
|
+
const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
17047
|
+
const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
|
|
17048
|
+
const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
17049
|
+
class VerificationMessage {
|
|
17050
|
+
getMatcher() {
|
|
17051
|
+
const priority = (0, combi_1.seq)("PRIORITY", expressions_1.Source);
|
|
17052
|
+
const ret = (0, combi_1.seq)("VERIFICATION-MESSAGE", expressions_1.Source, expressions_1.Source, (0, combi_1.opt)(priority));
|
|
17053
|
+
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
17054
|
+
}
|
|
17055
|
+
}
|
|
17056
|
+
exports.VerificationMessage = VerificationMessage;
|
|
17057
|
+
//# sourceMappingURL=verification_message.js.map
|
|
17058
|
+
|
|
17059
|
+
/***/ }),
|
|
17060
|
+
|
|
17021
17061
|
/***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js":
|
|
17022
17062
|
/*!************************************************************************************!*\
|
|
17023
17063
|
!*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js ***!
|
|
@@ -18121,15 +18161,11 @@ exports.Do = Do;
|
|
|
18121
18161
|
|
|
18122
18162
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18123
18163
|
exports.DynproLogic = void 0;
|
|
18124
|
-
const
|
|
18164
|
+
const Structures = __webpack_require__(/*! ./ */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js");
|
|
18125
18165
|
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18126
|
-
const chain_1 = __webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js");
|
|
18127
18166
|
class DynproLogic {
|
|
18128
18167
|
getMatcher() {
|
|
18129
|
-
|
|
18130
|
-
const pbo = (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sta)(Statements.Field), (0, _combi_1.sta)(Statements.CallSubscreen)));
|
|
18131
|
-
const pov = (0, _combi_1.star)((0, _combi_1.sta)(Statements.Field));
|
|
18132
|
-
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessBeforeOutput), pbo, (0, _combi_1.sta)(Statements.ProcessAfterInput), pai, (0, _combi_1.opt)((0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessOnValueRequest), pov)));
|
|
18168
|
+
return (0, _combi_1.seq)((0, _combi_1.sub)(Structures.ProcessBeforeOutput), (0, _combi_1.sub)(Structures.ProcessAfterInput), (0, _combi_1.opt)((0, _combi_1.sub)(Structures.ProcessOnValueRequest)));
|
|
18133
18169
|
}
|
|
18134
18170
|
}
|
|
18135
18171
|
exports.DynproLogic = DynproLogic;
|
|
@@ -18360,10 +18396,10 @@ __exportStar(__webpack_require__(/*! ./case_type */ "./node_modules/@abaplint/co
|
|
|
18360
18396
|
__exportStar(__webpack_require__(/*! ./case */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/case.js"), exports);
|
|
18361
18397
|
__exportStar(__webpack_require__(/*! ./catch_system_exceptions */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch_system_exceptions.js"), exports);
|
|
18362
18398
|
__exportStar(__webpack_require__(/*! ./catch */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/catch.js"), exports);
|
|
18399
|
+
__exportStar(__webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js"), exports);
|
|
18363
18400
|
__exportStar(__webpack_require__(/*! ./class_data */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_data.js"), exports);
|
|
18364
18401
|
__exportStar(__webpack_require__(/*! ./class_definition */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_definition.js"), exports);
|
|
18365
18402
|
__exportStar(__webpack_require__(/*! ./class_global */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_global.js"), exports);
|
|
18366
|
-
__exportStar(__webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js"), exports);
|
|
18367
18403
|
__exportStar(__webpack_require__(/*! ./class_implementation */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/class_implementation.js"), exports);
|
|
18368
18404
|
__exportStar(__webpack_require__(/*! ./cleanup */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/cleanup.js"), exports);
|
|
18369
18405
|
__exportStar(__webpack_require__(/*! ./constants */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/constants.js"), exports);
|
|
@@ -18388,6 +18424,9 @@ __exportStar(__webpack_require__(/*! ./module */ "./node_modules/@abaplint/core/
|
|
|
18388
18424
|
__exportStar(__webpack_require__(/*! ./normal */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/normal.js"), exports);
|
|
18389
18425
|
__exportStar(__webpack_require__(/*! ./on_change */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/on_change.js"), exports);
|
|
18390
18426
|
__exportStar(__webpack_require__(/*! ./private_section */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/private_section.js"), exports);
|
|
18427
|
+
__exportStar(__webpack_require__(/*! ./process_after_input */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_after_input.js"), exports);
|
|
18428
|
+
__exportStar(__webpack_require__(/*! ./process_before_output */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_before_output.js"), exports);
|
|
18429
|
+
__exportStar(__webpack_require__(/*! ./process_on_value_request */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_on_value_request.js"), exports);
|
|
18391
18430
|
__exportStar(__webpack_require__(/*! ./protected_section */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js"), exports);
|
|
18392
18431
|
__exportStar(__webpack_require__(/*! ./provide */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/provide.js"), exports);
|
|
18393
18432
|
__exportStar(__webpack_require__(/*! ./public_section */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/public_section.js"), exports);
|
|
@@ -18620,6 +18659,76 @@ exports.PrivateSection = PrivateSection;
|
|
|
18620
18659
|
|
|
18621
18660
|
/***/ }),
|
|
18622
18661
|
|
|
18662
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_after_input.js":
|
|
18663
|
+
/*!***************************************************************************************************!*\
|
|
18664
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_after_input.js ***!
|
|
18665
|
+
\***************************************************************************************************/
|
|
18666
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18667
|
+
|
|
18668
|
+
"use strict";
|
|
18669
|
+
|
|
18670
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18671
|
+
exports.ProcessAfterInput = void 0;
|
|
18672
|
+
const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
18673
|
+
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18674
|
+
const chain_1 = __webpack_require__(/*! ./chain */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/chain.js");
|
|
18675
|
+
class ProcessAfterInput {
|
|
18676
|
+
getMatcher() {
|
|
18677
|
+
const pai = (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sta)(Statements.Field), (0, _combi_1.sta)(Statements.CallSubscreen), (0, _combi_1.sub)(chain_1.Chain)));
|
|
18678
|
+
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessAfterInput), pai);
|
|
18679
|
+
}
|
|
18680
|
+
}
|
|
18681
|
+
exports.ProcessAfterInput = ProcessAfterInput;
|
|
18682
|
+
//# sourceMappingURL=process_after_input.js.map
|
|
18683
|
+
|
|
18684
|
+
/***/ }),
|
|
18685
|
+
|
|
18686
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_before_output.js":
|
|
18687
|
+
/*!*****************************************************************************************************!*\
|
|
18688
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_before_output.js ***!
|
|
18689
|
+
\*****************************************************************************************************/
|
|
18690
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18691
|
+
|
|
18692
|
+
"use strict";
|
|
18693
|
+
|
|
18694
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18695
|
+
exports.ProcessBeforeOutput = void 0;
|
|
18696
|
+
const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
18697
|
+
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18698
|
+
class ProcessBeforeOutput {
|
|
18699
|
+
getMatcher() {
|
|
18700
|
+
const pbo = (0, _combi_1.star)((0, _combi_1.alt)((0, _combi_1.sta)(Statements.Module), (0, _combi_1.sta)(Statements.Field), (0, _combi_1.sta)(Statements.CallSubscreen)));
|
|
18701
|
+
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessBeforeOutput), pbo);
|
|
18702
|
+
}
|
|
18703
|
+
}
|
|
18704
|
+
exports.ProcessBeforeOutput = ProcessBeforeOutput;
|
|
18705
|
+
//# sourceMappingURL=process_before_output.js.map
|
|
18706
|
+
|
|
18707
|
+
/***/ }),
|
|
18708
|
+
|
|
18709
|
+
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_on_value_request.js":
|
|
18710
|
+
/*!********************************************************************************************************!*\
|
|
18711
|
+
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/process_on_value_request.js ***!
|
|
18712
|
+
\********************************************************************************************************/
|
|
18713
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18714
|
+
|
|
18715
|
+
"use strict";
|
|
18716
|
+
|
|
18717
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18718
|
+
exports.ProcessOnValueRequest = void 0;
|
|
18719
|
+
const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
|
|
18720
|
+
const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
|
|
18721
|
+
class ProcessOnValueRequest {
|
|
18722
|
+
getMatcher() {
|
|
18723
|
+
const pov = (0, _combi_1.star)((0, _combi_1.sta)(Statements.Field));
|
|
18724
|
+
return (0, _combi_1.seq)((0, _combi_1.sta)(Statements.ProcessOnValueRequest), pov);
|
|
18725
|
+
}
|
|
18726
|
+
}
|
|
18727
|
+
exports.ProcessOnValueRequest = ProcessOnValueRequest;
|
|
18728
|
+
//# sourceMappingURL=process_on_value_request.js.map
|
|
18729
|
+
|
|
18730
|
+
/***/ }),
|
|
18731
|
+
|
|
18623
18732
|
/***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js":
|
|
18624
18733
|
/*!*************************************************************************************************!*\
|
|
18625
18734
|
!*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/protected_section.js ***!
|
|
@@ -22133,6 +22242,9 @@ class TypeUtils {
|
|
|
22133
22242
|
}
|
|
22134
22243
|
return true;
|
|
22135
22244
|
}
|
|
22245
|
+
else if (target instanceof basic_1.SimpleType) {
|
|
22246
|
+
return this.isCharLikeStrict(source);
|
|
22247
|
+
}
|
|
22136
22248
|
else if (target instanceof basic_1.CLikeType) {
|
|
22137
22249
|
return this.isCharLikeStrict(source);
|
|
22138
22250
|
}
|
|
@@ -26280,10 +26392,55 @@ class Select {
|
|
|
26280
26392
|
for (const s of node.findDirectExpressions(Expressions.SQLOrderBy)) {
|
|
26281
26393
|
new sql_order_by_1.SQLOrderBy().runSyntax(s, input);
|
|
26282
26394
|
}
|
|
26395
|
+
if (this.isStrictMode(node)) {
|
|
26396
|
+
this.strictModeChecks(node, input);
|
|
26397
|
+
}
|
|
26283
26398
|
if (input.scope.getType() === _scope_type_1.ScopeType.OpenSQL) {
|
|
26284
26399
|
input.scope.pop(node.getLastToken().getEnd());
|
|
26285
26400
|
}
|
|
26286
26401
|
}
|
|
26402
|
+
// there are multiple rules, but gotta start somewhere
|
|
26403
|
+
isStrictMode(node) {
|
|
26404
|
+
const into = node.findDirectExpressionsMulti([Expressions.SQLIntoList, Expressions.SQLIntoStructure, Expressions.SQLIntoTable])[0];
|
|
26405
|
+
const where = node.findDirectExpression(Expressions.SQLCond);
|
|
26406
|
+
// INTO is after WHERE
|
|
26407
|
+
if (into && where && into.getFirstToken().getStart().isAfter(where.getFirstToken().getStart())) {
|
|
26408
|
+
return true;
|
|
26409
|
+
}
|
|
26410
|
+
// FIELDS is used
|
|
26411
|
+
if (node.findFirstExpression(Expressions.SQLFields)) {
|
|
26412
|
+
return true;
|
|
26413
|
+
}
|
|
26414
|
+
// any field is escaped with @
|
|
26415
|
+
for (const source of node.findAllExpressions(Expressions.SQLSource)) {
|
|
26416
|
+
if (source.getFirstToken().getStr() === "@") {
|
|
26417
|
+
return true;
|
|
26418
|
+
}
|
|
26419
|
+
}
|
|
26420
|
+
// comma used in FROM
|
|
26421
|
+
const fieldList = node.findFirstExpression(Expressions.SQLFieldList);
|
|
26422
|
+
if (fieldList && fieldList.findDirectTokenByText(",")) {
|
|
26423
|
+
return true;
|
|
26424
|
+
}
|
|
26425
|
+
return false;
|
|
26426
|
+
}
|
|
26427
|
+
strictModeChecks(node, input) {
|
|
26428
|
+
const sources = node.findAllExpressions(Expressions.SQLSource);
|
|
26429
|
+
for (const source of sources) {
|
|
26430
|
+
const first = source.getFirstChild();
|
|
26431
|
+
if ((first === null || first === void 0 ? void 0 : first.get()) instanceof Expressions.SQLAliasField) {
|
|
26432
|
+
continue;
|
|
26433
|
+
}
|
|
26434
|
+
else if ((first === null || first === void 0 ? void 0 : first.getFirstToken().getStr()) === "@") {
|
|
26435
|
+
continue;
|
|
26436
|
+
}
|
|
26437
|
+
else if ((first === null || first === void 0 ? void 0 : first.getChildren()[0].get()) instanceof Expressions.Constant) {
|
|
26438
|
+
continue;
|
|
26439
|
+
}
|
|
26440
|
+
const message = `SELECT: "${source.concatTokens()}" must be escaped with @ in strict mode`;
|
|
26441
|
+
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
26442
|
+
}
|
|
26443
|
+
}
|
|
26287
26444
|
handleInto(node, input, fields, dbSources) {
|
|
26288
26445
|
const intoTable = node.findDirectExpression(Expressions.SQLIntoTable);
|
|
26289
26446
|
if (intoTable) {
|
|
@@ -26584,9 +26741,10 @@ class Source {
|
|
|
26584
26741
|
if (foundType === undefined && s) {
|
|
26585
26742
|
return new basic_1.DataReference(s);
|
|
26586
26743
|
}
|
|
26587
|
-
else {
|
|
26588
|
-
return foundType;
|
|
26744
|
+
else if (foundType) {
|
|
26745
|
+
return new basic_1.DataReference(foundType);
|
|
26589
26746
|
}
|
|
26747
|
+
return undefined;
|
|
26590
26748
|
}
|
|
26591
26749
|
case "FILTER":
|
|
26592
26750
|
{
|
|
@@ -30874,12 +31032,11 @@ class Loop {
|
|
|
30874
31032
|
const message = "No source type determined";
|
|
30875
31033
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30876
31034
|
}
|
|
30877
|
-
return;
|
|
30878
31035
|
}
|
|
30879
31036
|
else if (sourceType instanceof basic_1.UnknownType) {
|
|
30880
31037
|
const message = "Loop, not a table type, " + sourceType.getError();
|
|
30881
31038
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30882
|
-
|
|
31039
|
+
sourceType = new basic_1.VoidType("Loop, not a table type");
|
|
30883
31040
|
}
|
|
30884
31041
|
else if (sourceType instanceof basic_1.TableType
|
|
30885
31042
|
&& target === undefined
|
|
@@ -30887,7 +31044,6 @@ class Loop {
|
|
|
30887
31044
|
&& node.getChildren().length === 4) {
|
|
30888
31045
|
const message = "Loop, no header line";
|
|
30889
31046
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30890
|
-
return;
|
|
30891
31047
|
}
|
|
30892
31048
|
else if (!(sourceType instanceof basic_1.TableType)
|
|
30893
31049
|
&& !(sourceType instanceof basic_1.AnyType)
|
|
@@ -30896,14 +31052,12 @@ class Loop {
|
|
|
30896
31052
|
&& concat.startsWith("LOOP AT GROUP ") === false) {
|
|
30897
31053
|
const message = "Loop, not a table type";
|
|
30898
31054
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30899
|
-
return;
|
|
30900
31055
|
}
|
|
30901
31056
|
else if (loopTarget === undefined
|
|
30902
31057
|
&& sourceType instanceof basic_1.TableType
|
|
30903
31058
|
&& sourceType.isWithHeader() === false) {
|
|
30904
31059
|
const message = "Loop, no header";
|
|
30905
31060
|
input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
|
|
30906
|
-
return;
|
|
30907
31061
|
}
|
|
30908
31062
|
const targetConcat = loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.concatTokens().toUpperCase();
|
|
30909
31063
|
if (sourceType instanceof basic_1.TableType) {
|
|
@@ -32111,6 +32265,7 @@ const Expressions = __webpack_require__(/*! ../../2_statements/expressions */ ".
|
|
|
32111
32265
|
const select_1 = __webpack_require__(/*! ../expressions/select */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/select.js");
|
|
32112
32266
|
class Select {
|
|
32113
32267
|
runSyntax(node, input) {
|
|
32268
|
+
// for UNION statements there are multiple select parts
|
|
32114
32269
|
const selects = node.findDirectExpressions(Expressions.Select);
|
|
32115
32270
|
for (let i = 0; i < selects.length; i++) {
|
|
32116
32271
|
const last = i === selects.length - 1;
|
|
@@ -34694,6 +34849,7 @@ exports.DECLARATION_STUFF = [
|
|
|
34694
34849
|
Statements.Parameter,
|
|
34695
34850
|
Statements.SelectionScreen,
|
|
34696
34851
|
Statements.ConstantBegin,
|
|
34852
|
+
Statements.Define,
|
|
34697
34853
|
];
|
|
34698
34854
|
//# sourceMappingURL=selection_events.js.map
|
|
34699
34855
|
|
|
@@ -39150,6 +39306,13 @@ class CDSDetermineTypes {
|
|
|
39150
39306
|
continue;
|
|
39151
39307
|
}
|
|
39152
39308
|
if ((source === null || source === void 0 ? void 0 : source.name) === undefined) {
|
|
39309
|
+
if (prefixUpper.startsWith("_")) {
|
|
39310
|
+
components.push({
|
|
39311
|
+
name: f.name,
|
|
39312
|
+
type: new basic_1.VoidType("DDLS:association"),
|
|
39313
|
+
});
|
|
39314
|
+
continue;
|
|
39315
|
+
}
|
|
39153
39316
|
components.push({
|
|
39154
39317
|
name: f.name,
|
|
39155
39318
|
type: new basic_1.UnknownType("CDS parser error, unknown source, " + ddlsName),
|
|
@@ -39413,6 +39576,9 @@ class CDSParser {
|
|
|
39413
39576
|
if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
|
|
39414
39577
|
res = combi_1.Combi.run(new Expressions.CDSDefineCustom(), tokens, version_1.defaultVersion);
|
|
39415
39578
|
}
|
|
39579
|
+
if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
|
|
39580
|
+
res = combi_1.Combi.run(new Expressions.CDSDefineTableFunction(), tokens, version_1.defaultVersion);
|
|
39581
|
+
}
|
|
39416
39582
|
if (res === undefined || !(res[0] instanceof nodes_1.ExpressionNode)) {
|
|
39417
39583
|
res = combi_1.Combi.run(new Expressions.CDSExtendView(), tokens, version_1.defaultVersion);
|
|
39418
39584
|
}
|
|
@@ -39488,7 +39654,8 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39488
39654
|
const cds_annotation_array_1 = __webpack_require__(/*! ./cds_annotation_array */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_annotation_array.js");
|
|
39489
39655
|
class CDSAnnotation extends combi_1.Expression {
|
|
39490
39656
|
getRunnable() {
|
|
39491
|
-
|
|
39657
|
+
const nameWithSlash = (0, combi_1.seq)((0, combi_1.regex)(/^\w+$/), (0, combi_1.star)((0, combi_1.seq)("/", (0, combi_1.regex)(/^\w+$/))));
|
|
39658
|
+
return (0, combi_1.seq)((0, combi_1.regex)(/^@\w+$/), (0, combi_1.star)((0, combi_1.seq)(".", nameWithSlash)), (0, combi_1.opt)(":"), (0, combi_1.opt)((0, combi_1.alt)(cds_annotation_array_1.CDSAnnotationArray, _1.CDSAnnotationObject, _1.CDSAnnotationSimple)));
|
|
39492
39659
|
}
|
|
39493
39660
|
}
|
|
39494
39661
|
exports.CDSAnnotation = CDSAnnotation;
|
|
@@ -39585,14 +39752,14 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39585
39752
|
const cds_integer_1 = __webpack_require__(/*! ./cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js");
|
|
39586
39753
|
class CDSArithmetics extends combi_1.Expression {
|
|
39587
39754
|
getRunnable() {
|
|
39588
|
-
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.
|
|
39589
|
-
const val = (0, combi_1.
|
|
39755
|
+
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
39756
|
+
const val = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, _1.CDSFunction, _1.CDSCase, _1.CDSCast, _1.CDSString, name);
|
|
39590
39757
|
const operator = (0, combi_1.altPrio)("+", "-", "*", "/");
|
|
39591
39758
|
const operatorValue = (0, combi_1.seq)(operator, val);
|
|
39592
|
-
const paren = (0, combi_1.seq)("(", val, (0, combi_1.
|
|
39593
|
-
const noParen = (0, combi_1.seq)(val, (0, combi_1.
|
|
39759
|
+
const paren = (0, combi_1.seq)("(", val, (0, combi_1.plusPrio)(operatorValue), ")");
|
|
39760
|
+
const noParen = (0, combi_1.seq)(val, (0, combi_1.plusPrio)(operatorValue));
|
|
39594
39761
|
// todo: this is pretty bad, it needs a rewrite
|
|
39595
|
-
return (0, combi_1.altPrio)((0, combi_1.seq)(paren, (0, combi_1.
|
|
39762
|
+
return (0, combi_1.altPrio)((0, combi_1.seq)(paren, (0, combi_1.starPrio)(operatorValue)), noParen);
|
|
39596
39763
|
}
|
|
39597
39764
|
}
|
|
39598
39765
|
exports.CDSArithmetics = CDSArithmetics;
|
|
@@ -39658,7 +39825,7 @@ exports.CDSCardinality = void 0;
|
|
|
39658
39825
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
39659
39826
|
class CDSCardinality extends combi_1.Expression {
|
|
39660
39827
|
getRunnable() {
|
|
39661
|
-
const cardinality = (0, combi_1.seq)("[", (0, combi_1.alt)("0", "1"), (0, combi_1.opt)((0, combi_1.seq)(".", ".", (0, combi_1.alt)("0", "1", "*"))), "]");
|
|
39828
|
+
const cardinality = (0, combi_1.seq)("[", (0, combi_1.alt)("0", "1", "*"), (0, combi_1.opt)((0, combi_1.seq)(".", ".", (0, combi_1.alt)("0", "1", "*"))), "]");
|
|
39662
39829
|
return cardinality;
|
|
39663
39830
|
}
|
|
39664
39831
|
}
|
|
@@ -39682,10 +39849,11 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39682
39849
|
class CDSCase extends combi_1.Expression {
|
|
39683
39850
|
getRunnable() {
|
|
39684
39851
|
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
39685
|
-
const value = (0, combi_1.
|
|
39686
|
-
const
|
|
39687
|
-
const
|
|
39688
|
-
|
|
39852
|
+
const value = (0, combi_1.altPrio)(_1.CDSFunction, _1.CDSString, CDSCase, _1.CDSCast, _1.CDSArithmetics, name);
|
|
39853
|
+
const thenValue = (0, combi_1.altPrio)((0, combi_1.seq)("(", value, ")"), value);
|
|
39854
|
+
const simple = (0, combi_1.seq)((0, combi_1.altPrio)(_1.CDSFunction, name), (0, combi_1.plusPrio)((0, combi_1.seq)("WHEN", value, "THEN", thenValue)));
|
|
39855
|
+
const complex = (0, combi_1.plusPrio)((0, combi_1.seq)("WHEN", _1.CDSCondition, "THEN", thenValue));
|
|
39856
|
+
return (0, combi_1.seq)("CASE", (0, combi_1.altPrio)(complex, simple), (0, combi_1.optPrio)((0, combi_1.seq)("ELSE", value)), "END");
|
|
39689
39857
|
}
|
|
39690
39858
|
}
|
|
39691
39859
|
exports.CDSCase = CDSCase;
|
|
@@ -39707,8 +39875,8 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
39707
39875
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
39708
39876
|
class CDSCast extends combi_1.Expression {
|
|
39709
39877
|
getRunnable() {
|
|
39710
|
-
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.
|
|
39711
|
-
return (0, combi_1.seq)("CAST", "(", (0, combi_1.
|
|
39878
|
+
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
39879
|
+
return (0, combi_1.seq)("CAST", "(", (0, combi_1.altPrio)(_1.CDSFunction, _1.CDSCase, _1.CDSAggregate, CDSCast, _1.CDSString, _1.CDSArithmetics, name), "AS", _1.CDSType, (0, combi_1.optPrio)((0, combi_1.seq)("PRESERVING", "TYPE")), ")");
|
|
39712
39880
|
}
|
|
39713
39881
|
}
|
|
39714
39882
|
exports.CDSCast = CDSCast;
|
|
@@ -39754,13 +39922,15 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39754
39922
|
const cds_integer_1 = __webpack_require__(/*! ./cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js");
|
|
39755
39923
|
class CDSCondition extends combi_1.Expression {
|
|
39756
39924
|
getRunnable() {
|
|
39757
|
-
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", (0, combi_1.
|
|
39758
|
-
const left = (0, combi_1.
|
|
39759
|
-
const
|
|
39760
|
-
const
|
|
39761
|
-
const
|
|
39925
|
+
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", (0, combi_1.altPrio)(_1.CDSString, _1.CDSName))));
|
|
39926
|
+
const left = (0, combi_1.altPrio)(_1.CDSString, _1.CDSFunction, _1.CDSAggregate, name);
|
|
39927
|
+
const operators = (0, combi_1.altPrio)("=", (0, combi_1.seq)("!", "="), (0, combi_1.seq)("<", ">"), (0, combi_1.seq)(">", "="), (0, combi_1.seq)("<", "="), "<", ">", "LIKE", "NOT LIKE");
|
|
39928
|
+
const compare = (0, combi_1.seq)(operators, (0, combi_1.altPrio)(left, cds_integer_1.CDSInteger));
|
|
39929
|
+
const is = (0, combi_1.seq)("IS", (0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)("INITIAL", "NULL"));
|
|
39930
|
+
const between = (0, combi_1.seq)("BETWEEN", left, "AND", left);
|
|
39931
|
+
const condition = (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), left, (0, combi_1.altPrio)(compare, is, between));
|
|
39762
39932
|
const paren = (0, combi_1.seq)("(", CDSCondition, ")");
|
|
39763
|
-
return (0, combi_1.seq)((0, combi_1.
|
|
39933
|
+
return (0, combi_1.seq)((0, combi_1.altPrio)(condition, paren), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.altPrio)("AND", "OR"), (0, combi_1.altPrio)(condition, paren))));
|
|
39764
39934
|
}
|
|
39765
39935
|
}
|
|
39766
39936
|
exports.CDSCondition = CDSCondition;
|
|
@@ -39840,6 +40010,30 @@ exports.CDSDefineProjection = CDSDefineProjection;
|
|
|
39840
40010
|
|
|
39841
40011
|
/***/ }),
|
|
39842
40012
|
|
|
40013
|
+
/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js":
|
|
40014
|
+
/*!********************************************************************************************!*\
|
|
40015
|
+
!*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js ***!
|
|
40016
|
+
\********************************************************************************************/
|
|
40017
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
40018
|
+
|
|
40019
|
+
"use strict";
|
|
40020
|
+
|
|
40021
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
40022
|
+
exports.CDSDefineTableFunction = void 0;
|
|
40023
|
+
const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
|
|
40024
|
+
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40025
|
+
const cds_name_1 = __webpack_require__(/*! ./cds_name */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_name.js");
|
|
40026
|
+
class CDSDefineTableFunction extends combi_1.Expression {
|
|
40027
|
+
getRunnable() {
|
|
40028
|
+
const methodName = (0, combi_1.seq)(cds_name_1.CDSName, "=", ">", cds_name_1.CDSName);
|
|
40029
|
+
return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("DEFINE TABLE FUNCTION"), cds_name_1.CDSName, (0, combi_1.optPrio)(_1.CDSWithParameters), (0, combi_1.str)("RETURNS {"), (0, combi_1.plus)((0, combi_1.seq)((0, combi_1.optPrio)("KEY"), cds_name_1.CDSName, ":", _1.CDSType, ";")), (0, combi_1.str)("} IMPLEMENTED BY METHOD"), methodName, (0, combi_1.opt)(";"));
|
|
40030
|
+
}
|
|
40031
|
+
}
|
|
40032
|
+
exports.CDSDefineTableFunction = CDSDefineTableFunction;
|
|
40033
|
+
//# sourceMappingURL=cds_define_table_function.js.map
|
|
40034
|
+
|
|
40035
|
+
/***/ }),
|
|
40036
|
+
|
|
39843
40037
|
/***/ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js":
|
|
39844
40038
|
/*!**********************************************************************************!*\
|
|
39845
40039
|
!*** ./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js ***!
|
|
@@ -39882,7 +40076,7 @@ const cds_as_1 = __webpack_require__(/*! ./cds_as */ "./node_modules/@abaplint/c
|
|
|
39882
40076
|
const cds_cast_1 = __webpack_require__(/*! ./cds_cast */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_cast.js");
|
|
39883
40077
|
class CDSElement extends combi_1.Expression {
|
|
39884
40078
|
getRunnable() {
|
|
39885
|
-
return (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), (0, combi_1.altPrio)(_1.CDSAggregate, _1.CDSString, _1.CDSArithmetics, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)(_1.CDSName, ": REDIRECTED TO", (0, combi_1.opt)((0, combi_1.alt)("PARENT", "COMPOSITION CHILD")), _1.CDSName), _1.CDSPrefixedName,
|
|
40079
|
+
return (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), (0, combi_1.optPrio)("KEY"), (0, combi_1.altPrio)(_1.CDSAggregate, _1.CDSString, _1.CDSArithmetics, _1.CDSFunction, cds_cast_1.CDSCast, _1.CDSCase, (0, combi_1.seq)("(", _1.CDSCase, ")"), (0, combi_1.seq)(_1.CDSName, ": REDIRECTED TO", (0, combi_1.opt)((0, combi_1.alt)("PARENT", "COMPOSITION CHILD")), _1.CDSName), _1.CDSPrefixedName, _1.CDSInteger), (0, combi_1.opt)(cds_as_1.CDSAs));
|
|
39886
40080
|
}
|
|
39887
40081
|
}
|
|
39888
40082
|
exports.CDSElement = CDSElement;
|
|
@@ -39958,6 +40152,13 @@ class CDSFunction extends combi_1.Expression {
|
|
|
39958
40152
|
const abap_system_timezone = (0, combi_1.seq)("ABAP_SYSTEM_TIMEZONE", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39959
40153
|
const abap_user_timezone = (0, combi_1.seq)("ABAP_USER_TIMEZONE", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39960
40154
|
const mod = (0, combi_1.seq)("MOD", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40155
|
+
const replace = (0, combi_1.seq)("REPLACE", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40156
|
+
const lpad = (0, combi_1.seq)("LPAD", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40157
|
+
const rpad = (0, combi_1.seq)("RPAD", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40158
|
+
const instr = (0, combi_1.seq)("INSTR", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40159
|
+
const length = (0, combi_1.seq)("LENGTH", "(", _1.CDSFunctionInput, ")");
|
|
40160
|
+
const ltrim = (0, combi_1.seq)("LTRIM", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
40161
|
+
const rtrim = (0, combi_1.seq)("RTRIM", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39961
40162
|
const left = (0, combi_1.seq)("LEFT", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39962
40163
|
const right = (0, combi_1.seq)("RIGHT", "(", _1.CDSFunctionInput, ",", _1.CDSFunctionInput, ")");
|
|
39963
40164
|
const conversionInput = (0, combi_1.seq)(_1.CDSName, "=", ">", _1.CDSFunctionInput);
|
|
@@ -39965,7 +40166,7 @@ class CDSFunction extends combi_1.Expression {
|
|
|
39965
40166
|
const unitConversion = (0, combi_1.seq)("UNIT_CONVERSION", "(", conversionInputs, ")");
|
|
39966
40167
|
const currencyConversion = (0, combi_1.seq)("CURRENCY_CONVERSION", "(", conversionInputs, ")");
|
|
39967
40168
|
const decimalShift = (0, combi_1.seq)("DECIMAL_SHIFT", "(", conversionInputs, ")");
|
|
39968
|
-
return (0, combi_1.altPrio)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, upper, lower, abs, ceil, floor, round, div, division, concat_with_space, dats_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, abap_system_timezone, abap_user_timezone, bintohex, hextobin, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp, mod, left, right, unitConversion, currencyConversion, decimalShift);
|
|
40169
|
+
return (0, combi_1.altPrio)(substring, coalesce, tstmp_to_dats, concat, tstmp_to_tims, upper, lower, abs, ceil, floor, round, div, division, concat_with_space, dats_is_valid, dats_days_between, tstmp_add_seconds, tstmp_seconds_between, tstmp_current_utctimestamp, tstmp_is_valid, abap_system_timezone, abap_user_timezone, bintohex, hextobin, dats_add_days, dats_add_months, tstmp_to_dst, dats_tims_to_tstmp, mod, left, right, lpad, rpad, instr, length, ltrim, rtrim, replace, unitConversion, currencyConversion, decimalShift);
|
|
39969
40170
|
}
|
|
39970
40171
|
}
|
|
39971
40172
|
exports.CDSFunction = CDSFunction;
|
|
@@ -39988,7 +40189,7 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
39988
40189
|
class CDSFunctionInput extends combi_1.Expression {
|
|
39989
40190
|
getRunnable() {
|
|
39990
40191
|
const qualified = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)(_1.CDSParameters), (0, combi_1.starPrio)((0, combi_1.seq)(".", _1.CDSName, (0, combi_1.opt)(_1.CDSParameters))));
|
|
39991
|
-
const input = (0, combi_1.altPrio)(_1.CDSCast, _1.CDSFunction, _1.CDSArithmetics, _1.CDSCase, _1.CDSString, qualified,
|
|
40192
|
+
const input = (0, combi_1.altPrio)(_1.CDSCast, _1.CDSFunction, _1.CDSArithmetics, _1.CDSCase, _1.CDSString, qualified, _1.CDSInteger);
|
|
39992
40193
|
return input;
|
|
39993
40194
|
}
|
|
39994
40195
|
}
|
|
@@ -40055,7 +40256,7 @@ exports.CDSInteger = void 0;
|
|
|
40055
40256
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40056
40257
|
class CDSInteger extends combi_1.Expression {
|
|
40057
40258
|
getRunnable() {
|
|
40058
|
-
return (0, combi_1.regex)(/^\d+$/);
|
|
40259
|
+
return (0, combi_1.seq)((0, combi_1.opt)("-"), (0, combi_1.regex)(/^\d+$/));
|
|
40059
40260
|
}
|
|
40060
40261
|
}
|
|
40061
40262
|
exports.CDSInteger = CDSInteger;
|
|
@@ -40078,7 +40279,9 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
40078
40279
|
const cds_condition_1 = __webpack_require__(/*! ./cds_condition */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_condition.js");
|
|
40079
40280
|
class CDSJoin extends combi_1.Expression {
|
|
40080
40281
|
getRunnable() {
|
|
40081
|
-
|
|
40282
|
+
const cond = (0, combi_1.seq)(_1.CDSSource, "ON", cds_condition_1.CDSCondition);
|
|
40283
|
+
const foo = (0, combi_1.altPrio)((0, combi_1.seq)("(", cond, ")"), cond);
|
|
40284
|
+
return (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("LEFT OUTER TO ONE", "LEFT OUTER", "INNER")), "JOIN", foo);
|
|
40082
40285
|
}
|
|
40083
40286
|
}
|
|
40084
40287
|
exports.CDSJoin = CDSJoin;
|
|
@@ -40100,7 +40303,7 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
40100
40303
|
class CDSName extends combi_1.Expression {
|
|
40101
40304
|
getRunnable() {
|
|
40102
40305
|
const pre = (0, combi_1.seq)("/", (0, combi_1.regex)(/^[\w_]+$/), "/");
|
|
40103
|
-
return (0, combi_1.seq)((0, combi_1.
|
|
40306
|
+
return (0, combi_1.seq)((0, combi_1.optPrio)(":"), (0, combi_1.optPrio)(pre), (0, combi_1.regex)(/^\$?#?[\w_]+$/));
|
|
40104
40307
|
}
|
|
40105
40308
|
}
|
|
40106
40309
|
exports.CDSName = CDSName;
|
|
@@ -40242,8 +40445,9 @@ class CDSSelect extends combi_1.Expression {
|
|
|
40242
40445
|
getRunnable() {
|
|
40243
40446
|
const fields = (0, combi_1.seq)((0, combi_1.star)((0, combi_1.seq)(_1.CDSElement, ",")), _1.CDSElement);
|
|
40244
40447
|
const distinct = (0, combi_1.str)("DISTINCT");
|
|
40245
|
-
const
|
|
40246
|
-
|
|
40448
|
+
const elementList = (0, combi_1.seq)(_1.CDSElement, (0, combi_1.starPrio)((0, combi_1.seq)(",", _1.CDSElement)));
|
|
40449
|
+
const elements = (0, combi_1.seq)((0, combi_1.str)("{"), (0, combi_1.altPrio)("*", elementList), (0, combi_1.str)("}"));
|
|
40450
|
+
return (0, combi_1.seq)("SELECT", (0, combi_1.optPrio)(distinct), (0, combi_1.opt)((0, combi_1.alt)("*", fields)), "FROM", _1.CDSSource, (0, combi_1.star)(cds_join_1.CDSJoin), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.star)(cds_association_1.CDSAssociation), (0, combi_1.star)(_1.CDSComposition), (0, combi_1.opt)(elements), (0, combi_1.optPrio)(_1.CDSWhere), (0, combi_1.optPrio)(_1.CDSGroupBy), (0, combi_1.optPrio)(_1.CDSHaving), (0, combi_1.optPrio)((0, combi_1.seq)("UNION", (0, combi_1.optPrio)("ALL"), CDSSelect)));
|
|
40247
40451
|
}
|
|
40248
40452
|
}
|
|
40249
40453
|
exports.CDSSelect = CDSSelect;
|
|
@@ -40265,7 +40469,7 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
40265
40469
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40266
40470
|
class CDSSource extends combi_1.Expression {
|
|
40267
40471
|
getRunnable() {
|
|
40268
|
-
return (0, combi_1.seq)(_1.CDSName, (0, combi_1.
|
|
40472
|
+
return (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)(_1.CDSParametersSelect), (0, combi_1.optPrio)(_1.CDSAs));
|
|
40269
40473
|
}
|
|
40270
40474
|
}
|
|
40271
40475
|
exports.CDSSource = CDSSource;
|
|
@@ -40354,7 +40558,7 @@ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src
|
|
|
40354
40558
|
const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
|
|
40355
40559
|
class CDSWithParameters extends combi_1.Expression {
|
|
40356
40560
|
getRunnable() {
|
|
40357
|
-
const param = (0, combi_1.seq)(_1.CDSName, ":", _1.CDSType);
|
|
40561
|
+
const param = (0, combi_1.seq)((0, combi_1.starPrio)(_1.CDSAnnotation), _1.CDSName, ":", _1.CDSType);
|
|
40358
40562
|
return (0, combi_1.seq)("WITH PARAMETERS", param, (0, combi_1.star)((0, combi_1.seq)(",", param)));
|
|
40359
40563
|
}
|
|
40360
40564
|
}
|
|
@@ -40403,11 +40607,12 @@ __exportStar(__webpack_require__(/*! ./cds_condition */ "./node_modules/@abaplin
|
|
|
40403
40607
|
__exportStar(__webpack_require__(/*! ./cds_define_abstract */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_abstract.js"), exports);
|
|
40404
40608
|
__exportStar(__webpack_require__(/*! ./cds_define_custom */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_custom.js"), exports);
|
|
40405
40609
|
__exportStar(__webpack_require__(/*! ./cds_define_projection */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_projection.js"), exports);
|
|
40610
|
+
__exportStar(__webpack_require__(/*! ./cds_define_table_function */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_table_function.js"), exports);
|
|
40406
40611
|
__exportStar(__webpack_require__(/*! ./cds_define_view */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_define_view.js"), exports);
|
|
40407
40612
|
__exportStar(__webpack_require__(/*! ./cds_element */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_element.js"), exports);
|
|
40408
40613
|
__exportStar(__webpack_require__(/*! ./cds_extend_view */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_extend_view.js"), exports);
|
|
40409
|
-
__exportStar(__webpack_require__(/*! ./cds_function */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js"), exports);
|
|
40410
40614
|
__exportStar(__webpack_require__(/*! ./cds_function_input */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_function_input.js"), exports);
|
|
40615
|
+
__exportStar(__webpack_require__(/*! ./cds_function */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_function.js"), exports);
|
|
40411
40616
|
__exportStar(__webpack_require__(/*! ./cds_group_by */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_group_by.js"), exports);
|
|
40412
40617
|
__exportStar(__webpack_require__(/*! ./cds_having */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_having.js"), exports);
|
|
40413
40618
|
__exportStar(__webpack_require__(/*! ./cds_integer */ "./node_modules/@abaplint/core/build/src/cds/expressions/cds_integer.js"), exports);
|
|
@@ -43005,17 +43210,48 @@ const syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ "./node_modu
|
|
|
43005
43210
|
const _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ "./node_modules/@abaplint/core/build/src/objects/_abap_object.js");
|
|
43006
43211
|
const dump_scope_1 = __webpack_require__(/*! ./dump_scope */ "./node_modules/@abaplint/core/build/src/lsp/dump_scope.js");
|
|
43007
43212
|
const virtual_position_1 = __webpack_require__(/*! ../virtual_position */ "./node_modules/@abaplint/core/build/src/virtual_position.js");
|
|
43213
|
+
const objects_1 = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
43214
|
+
const cds_lexer_1 = __webpack_require__(/*! ../cds/cds_lexer */ "./node_modules/@abaplint/core/build/src/cds/cds_lexer.js");
|
|
43008
43215
|
class Help {
|
|
43009
43216
|
static find(reg, textDocument, position) {
|
|
43010
|
-
const
|
|
43217
|
+
const abapFile = _lsp_utils_1.LSPUtils.getABAPFile(reg, textDocument.uri);
|
|
43218
|
+
if (abapFile !== undefined) {
|
|
43219
|
+
return this.dumpABAP(abapFile, reg, textDocument, position);
|
|
43220
|
+
}
|
|
43221
|
+
const file = reg.getFileByName(textDocument.uri);
|
|
43011
43222
|
if (file === undefined) {
|
|
43012
|
-
return "
|
|
43223
|
+
return "File not found: " + textDocument.uri;
|
|
43013
43224
|
}
|
|
43014
|
-
|
|
43015
|
-
|
|
43225
|
+
const obj = reg.findObjectForFile(file);
|
|
43226
|
+
if (obj instanceof objects_1.DataDefinition) {
|
|
43227
|
+
return this.dumpDDLS(obj, reg);
|
|
43016
43228
|
}
|
|
43229
|
+
return "Unhandled object type: " + obj.getType();
|
|
43017
43230
|
}
|
|
43018
43231
|
/////////////////////////////////////////////////
|
|
43232
|
+
static dumpDDLS(obj, reg) {
|
|
43233
|
+
let content = "";
|
|
43234
|
+
content += "<h1>" + obj.getType() + " " + obj.getName() + "</h1>\n";
|
|
43235
|
+
content += obj.getDescription() + "\n";
|
|
43236
|
+
content += obj.getParsingIssues().map(i => i.getMessage()).join("<br>\n");
|
|
43237
|
+
content += `<hr>\n`;
|
|
43238
|
+
const parsed = obj.getParsedData();
|
|
43239
|
+
parsed === null || parsed === void 0 ? true : delete parsed.tree;
|
|
43240
|
+
content += `<pre>` + JSON.stringify(parsed, null, 2) + "</pre>\n";
|
|
43241
|
+
content += `<hr>\n`;
|
|
43242
|
+
content += `<pre>` + obj.parseType(reg).toText(0) + "</pre>\n";
|
|
43243
|
+
content += `<hr>\n`;
|
|
43244
|
+
const file = obj.findSourceFile();
|
|
43245
|
+
if (file) {
|
|
43246
|
+
const tokens = cds_lexer_1.CDSLexer.run(file);
|
|
43247
|
+
content += `<h3>Tokens</h3>\n<pre>\n`;
|
|
43248
|
+
for (const t of tokens) {
|
|
43249
|
+
content += JSON.stringify(t) + "\n";
|
|
43250
|
+
}
|
|
43251
|
+
content += `</pre>\n`;
|
|
43252
|
+
}
|
|
43253
|
+
return content;
|
|
43254
|
+
}
|
|
43019
43255
|
static dumpABAP(file, reg, textDocument, position) {
|
|
43020
43256
|
let content = "";
|
|
43021
43257
|
content = `
|
|
@@ -44402,7 +44638,10 @@ class ABAPObject extends _abstract_object_1.AbstractObject {
|
|
|
44402
44638
|
}
|
|
44403
44639
|
// uri fallback,
|
|
44404
44640
|
for (const file of this.getABAPFiles()) {
|
|
44405
|
-
if (file.getFilename().
|
|
44641
|
+
if (file.getFilename().includes(".prog.screen_")) {
|
|
44642
|
+
continue;
|
|
44643
|
+
}
|
|
44644
|
+
else if (file.getFilename().endsWith(".abap")) {
|
|
44406
44645
|
return file;
|
|
44407
44646
|
}
|
|
44408
44647
|
}
|
|
@@ -47163,13 +47402,13 @@ class FunctionGroup extends _abap_object_1.ABAPObject {
|
|
|
47163
47402
|
if (namespaced) {
|
|
47164
47403
|
search = search.replace(/\//g, "#");
|
|
47165
47404
|
}
|
|
47166
|
-
if ((i.startsWith("L") || namespaced) && f.getFilename().includes(search.toLowerCase())) {
|
|
47405
|
+
if ((i.startsWith("L") || namespaced) && f.getFilename().includes(search.toLowerCase() + ".")) {
|
|
47167
47406
|
ret.push({ file: f, name: i });
|
|
47168
47407
|
}
|
|
47169
47408
|
// fix for URL encoded? Uris
|
|
47170
47409
|
if (namespaced) {
|
|
47171
47410
|
search = i.replace(/\//g, "%23");
|
|
47172
|
-
if (f.getFilename().includes(search.toLowerCase())) {
|
|
47411
|
+
if (f.getFilename().includes(search.toLowerCase() + ".")) {
|
|
47173
47412
|
ret.push({ file: f, name: i });
|
|
47174
47413
|
}
|
|
47175
47414
|
}
|
|
@@ -51375,6 +51614,9 @@ class TableType extends _abstract_object_1.AbstractObject {
|
|
|
51375
51614
|
return;
|
|
51376
51615
|
}
|
|
51377
51616
|
const values = parsed.abapGit["asx:abap"]["asx:values"];
|
|
51617
|
+
if (values === undefined) {
|
|
51618
|
+
return;
|
|
51619
|
+
}
|
|
51378
51620
|
const dd40v = values.DD40V;
|
|
51379
51621
|
this.parsedXML.rowtype = dd40v.ROWTYPE ? dd40v.ROWTYPE : "";
|
|
51380
51622
|
this.parsedXML.rowkind = dd40v.ROWKIND ? dd40v.ROWKIND : "";
|
|
@@ -52184,6 +52426,7 @@ class Indent {
|
|
|
52184
52426
|
|| type instanceof Statements.EndModule
|
|
52185
52427
|
|| type instanceof Statements.EndSelect
|
|
52186
52428
|
|| type instanceof Statements.EndMethod
|
|
52429
|
+
|| type instanceof Statements.EndChain
|
|
52187
52430
|
|| type instanceof Statements.EndAt
|
|
52188
52431
|
|| type instanceof Statements.Else
|
|
52189
52432
|
|| type instanceof Statements.EndExec
|
|
@@ -52292,6 +52535,7 @@ class Indent {
|
|
|
52292
52535
|
|| type instanceof Statements.Else
|
|
52293
52536
|
|| type instanceof Statements.ElseIf
|
|
52294
52537
|
|| type instanceof Statements.MethodImplementation
|
|
52538
|
+
|| type instanceof Statements.Chain
|
|
52295
52539
|
|| type instanceof Statements.TestInjection
|
|
52296
52540
|
|| type instanceof Statements.TestSeam
|
|
52297
52541
|
|| (this.options.selectionScreenBlockIndentation === true
|
|
@@ -52497,7 +52741,7 @@ class Registry {
|
|
|
52497
52741
|
}
|
|
52498
52742
|
static abaplintVersion() {
|
|
52499
52743
|
// magic, see build script "version.sh"
|
|
52500
|
-
return "2.113.
|
|
52744
|
+
return "2.113.99";
|
|
52501
52745
|
}
|
|
52502
52746
|
getDDICReferences() {
|
|
52503
52747
|
return this.ddicReferences;
|
|
@@ -54639,6 +54883,7 @@ const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/c
|
|
|
54639
54883
|
const version_1 = __webpack_require__(/*! ../version */ "./node_modules/@abaplint/core/build/src/version.js");
|
|
54640
54884
|
const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
|
|
54641
54885
|
const objects_1 = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
|
|
54886
|
+
const expressions_1 = __webpack_require__(/*! ../cds/expressions */ "./node_modules/@abaplint/core/build/src/cds/expressions/index.js");
|
|
54642
54887
|
class CDSLegacyViewConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
54643
54888
|
}
|
|
54644
54889
|
exports.CDSLegacyViewConf = CDSLegacyViewConf;
|
|
@@ -54675,19 +54920,17 @@ v755 and up`,
|
|
|
54675
54920
|
&& this.reg.getConfig().getVersion() !== version_1.Version.Cloud) {
|
|
54676
54921
|
return [];
|
|
54677
54922
|
}
|
|
54678
|
-
if (o.getType() !== "DDLS") {
|
|
54923
|
+
if (o.getType() !== "DDLS" || !(o instanceof objects_1.DataDefinition)) {
|
|
54679
54924
|
return [];
|
|
54680
54925
|
}
|
|
54681
|
-
|
|
54682
|
-
|
|
54683
|
-
|
|
54684
|
-
|
|
54685
|
-
|
|
54686
|
-
|
|
54687
|
-
|
|
54688
|
-
|
|
54689
|
-
issues.push(issue_1.Issue.atRow(file, 1, "CDS Legacy View", this.getMetadata().key, this.getConfig().severity));
|
|
54690
|
-
}
|
|
54926
|
+
const tree = o.getTree();
|
|
54927
|
+
if (tree === undefined) {
|
|
54928
|
+
return []; // parser error
|
|
54929
|
+
}
|
|
54930
|
+
if (tree.get() instanceof expressions_1.CDSDefineView && tree.findDirectTokenByText("ENTITY") === undefined) {
|
|
54931
|
+
const file = o.findSourceFile();
|
|
54932
|
+
if (file) {
|
|
54933
|
+
issues.push(issue_1.Issue.atRow(file, 1, "CDS Legacy View", this.getMetadata().key, this.getConfig().severity));
|
|
54691
54934
|
}
|
|
54692
54935
|
}
|
|
54693
54936
|
return issues;
|
|
@@ -54744,7 +54987,9 @@ class CDSParserError {
|
|
|
54744
54987
|
const hasError = object.hasParserError();
|
|
54745
54988
|
const file = object.findSourceFile();
|
|
54746
54989
|
if (hasError === true && file) {
|
|
54747
|
-
|
|
54990
|
+
const empty = file.getRaw().length === 0 ? ", empty file" : "";
|
|
54991
|
+
const message = "CDS Parser error" + empty;
|
|
54992
|
+
issues.push(issue_1.Issue.atRow(file, 1, message, this.getMetadata().key, this.getConfig().severity));
|
|
54748
54993
|
}
|
|
54749
54994
|
}
|
|
54750
54995
|
return issues;
|
|
@@ -57984,6 +58229,10 @@ Make sure to test the downported code, it might not always be completely correct
|
|
|
57984
58229
|
if (found) {
|
|
57985
58230
|
return found;
|
|
57986
58231
|
}
|
|
58232
|
+
found = this.downportSQLMoveInto(low, high, lowFile, highSyntax);
|
|
58233
|
+
if (found) {
|
|
58234
|
+
return found;
|
|
58235
|
+
}
|
|
57987
58236
|
found = this.downportSQLExtras(low, high, lowFile, highSyntax);
|
|
57988
58237
|
if (found) {
|
|
57989
58238
|
return found;
|
|
@@ -58117,6 +58366,39 @@ Make sure to test the downported code, it might not always be completely correct
|
|
|
58117
58366
|
return undefined;
|
|
58118
58367
|
}
|
|
58119
58368
|
//////////////////////////////////////////
|
|
58369
|
+
/** move INTO from after WHERE to after FROM */
|
|
58370
|
+
downportSQLMoveInto(low, high, lowFile, _highSyntax) {
|
|
58371
|
+
var _a;
|
|
58372
|
+
if (!(low.get() instanceof _statement_1.Unknown)) {
|
|
58373
|
+
return undefined;
|
|
58374
|
+
}
|
|
58375
|
+
// note: SQLCond is also used in JOIN(FROM) conditions
|
|
58376
|
+
const where = (_a = high.findFirstExpression(Expressions.Select)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.SQLCond);
|
|
58377
|
+
if (where === undefined) {
|
|
58378
|
+
return undefined;
|
|
58379
|
+
}
|
|
58380
|
+
let into = high.findFirstExpression(Expressions.SQLIntoList);
|
|
58381
|
+
if (into === undefined) {
|
|
58382
|
+
into = high.findFirstExpression(Expressions.SQLIntoStructure);
|
|
58383
|
+
}
|
|
58384
|
+
if (into === undefined) {
|
|
58385
|
+
into = high.findFirstExpression(Expressions.SQLIntoTable);
|
|
58386
|
+
}
|
|
58387
|
+
if (into === undefined) {
|
|
58388
|
+
return undefined;
|
|
58389
|
+
}
|
|
58390
|
+
if (where.getLastToken().getEnd().isBefore(into.getFirstToken().getStart()) === false) {
|
|
58391
|
+
return undefined;
|
|
58392
|
+
}
|
|
58393
|
+
const from = high.findFirstExpression(Expressions.SQLFrom);
|
|
58394
|
+
if (from === undefined) {
|
|
58395
|
+
return undefined;
|
|
58396
|
+
}
|
|
58397
|
+
const fix1 = edit_helper_1.EditHelper.insertAt(lowFile, from.getLastToken().getEnd(), ` ` + into.concatTokens());
|
|
58398
|
+
const fix2 = edit_helper_1.EditHelper.deleteRange(lowFile, into.getFirstToken().getStart(), into.getLastToken().getEnd());
|
|
58399
|
+
const fix = edit_helper_1.EditHelper.merge(fix2, fix1);
|
|
58400
|
+
return issue_1.Issue.atToken(lowFile, low.getFirstToken(), "SQL, move INTO", this.getMetadata().key, this.conf.severity, fix);
|
|
58401
|
+
}
|
|
58120
58402
|
/** removes @'s and commas */
|
|
58121
58403
|
downportSQLExtras(low, high, lowFile, highSyntax) {
|
|
58122
58404
|
if (!(low.get() instanceof _statement_1.Unknown)) {
|
|
@@ -61942,7 +62224,7 @@ DATA lt_bar TYPE STANDARD TABLE OF ty.`,
|
|
|
61942
62224
|
runParsed(file) {
|
|
61943
62225
|
const issues = [];
|
|
61944
62226
|
for (const statement of file.getStatements()) {
|
|
61945
|
-
if (!(statement.get() instanceof Statements.Data)) {
|
|
62227
|
+
if (!(statement.get() instanceof Statements.Data || statement.get() instanceof Statements.Type)) {
|
|
61946
62228
|
continue;
|
|
61947
62229
|
}
|
|
61948
62230
|
const tt = statement.findFirstExpression(Expressions.TypeTable);
|
|
@@ -64893,7 +65175,7 @@ class LocalTestclassConsistency extends _abap_rule_1.ABAPRule {
|
|
|
64893
65175
|
this.conf = conf;
|
|
64894
65176
|
}
|
|
64895
65177
|
runParsed(file, obj) {
|
|
64896
|
-
var _a;
|
|
65178
|
+
var _a, _b, _c;
|
|
64897
65179
|
const issues = [];
|
|
64898
65180
|
if (this.reg.getConfig().getVersion() === version_1.Version.v700) {
|
|
64899
65181
|
// 700 does not have testclass includes
|
|
@@ -64919,6 +65201,16 @@ class LocalTestclassConsistency extends _abap_rule_1.ABAPRule {
|
|
|
64919
65201
|
issues.push(issue);
|
|
64920
65202
|
}
|
|
64921
65203
|
}
|
|
65204
|
+
if (file.getFilename() === ((_b = obj.getMainABAPFile()) === null || _b === void 0 ? void 0 : _b.getFilename())
|
|
65205
|
+
&& obj.getTestclassFile() === undefined
|
|
65206
|
+
&& ((_c = obj.getXML()) === null || _c === void 0 ? void 0 : _c.includes("<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>")) === true) {
|
|
65207
|
+
const id = obj.getIdentifier();
|
|
65208
|
+
if (id) {
|
|
65209
|
+
const message = "Has <WITH_UNIT_TESTS> set in XML, but no testclasses";
|
|
65210
|
+
const issue = issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.conf.severity);
|
|
65211
|
+
issues.push(issue);
|
|
65212
|
+
}
|
|
65213
|
+
}
|
|
64922
65214
|
return issues;
|
|
64923
65215
|
}
|
|
64924
65216
|
}
|
|
@@ -76000,6 +76292,26 @@ class VirtualPosition extends position_1.Position {
|
|
|
76000
76292
|
const casted = p;
|
|
76001
76293
|
return super.equals(this) && this.vrow === casted.vrow && this.vcol === casted.vcol;
|
|
76002
76294
|
}
|
|
76295
|
+
isAfter(p) {
|
|
76296
|
+
if (p instanceof VirtualPosition) {
|
|
76297
|
+
if (this.getRow() > p.getRow()) {
|
|
76298
|
+
return true;
|
|
76299
|
+
}
|
|
76300
|
+
if (this.getRow() === p.getRow() && this.getCol() > p.getCol()) {
|
|
76301
|
+
return true;
|
|
76302
|
+
}
|
|
76303
|
+
if (this.getRow() === p.getRow() && this.getCol() === p.getCol() && this.vrow > p.vrow) {
|
|
76304
|
+
return true;
|
|
76305
|
+
}
|
|
76306
|
+
if (this.getRow() === p.getRow() && this.getCol() === p.getCol() && this.vrow === p.vrow && this.vcol > p.vcol) {
|
|
76307
|
+
return true;
|
|
76308
|
+
}
|
|
76309
|
+
return false;
|
|
76310
|
+
}
|
|
76311
|
+
else {
|
|
76312
|
+
return super.isAfter(p);
|
|
76313
|
+
}
|
|
76314
|
+
}
|
|
76003
76315
|
}
|
|
76004
76316
|
exports.VirtualPosition = VirtualPosition;
|
|
76005
76317
|
//# sourceMappingURL=virtual_position.js.map
|
|
@@ -82139,7 +82451,7 @@ class DeleteInternalTranspiler {
|
|
|
82139
82451
|
if (node.findDirectTokenByText("ADJACENT")) {
|
|
82140
82452
|
extra.push("adjacent: true");
|
|
82141
82453
|
if (node.findDirectTokenByText("COMPARING") && !concat.includes("COMPARING ALL FIELDS")) {
|
|
82142
|
-
const comparing = node.findAllExpressions(abaplint.Expressions.
|
|
82454
|
+
const comparing = node.findAllExpressions(abaplint.Expressions.SimpleFieldChain2);
|
|
82143
82455
|
if (comparing) {
|
|
82144
82456
|
const compareFields = comparing.map(i => "'" + i.getFirstToken().getStr() + "'").join(",");
|
|
82145
82457
|
extra.push("comparing: [" + compareFields + "]");
|
|
@@ -93406,10 +93718,10 @@ if (typeof Object.create === 'function') {
|
|
|
93406
93718
|
module.exports = minimatch
|
|
93407
93719
|
minimatch.Minimatch = Minimatch
|
|
93408
93720
|
|
|
93409
|
-
var path = {
|
|
93410
|
-
|
|
93411
|
-
|
|
93412
|
-
|
|
93721
|
+
var path = (function () { try { return __webpack_require__(/*! path */ "path") } catch (e) {}}()) || {
|
|
93722
|
+
sep: '/'
|
|
93723
|
+
}
|
|
93724
|
+
minimatch.sep = path.sep
|
|
93413
93725
|
|
|
93414
93726
|
var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
|
|
93415
93727
|
var expand = __webpack_require__(/*! brace-expansion */ "./node_modules/brace-expansion/index.js")
|
|
@@ -93461,43 +93773,64 @@ function filter (pattern, options) {
|
|
|
93461
93773
|
}
|
|
93462
93774
|
|
|
93463
93775
|
function ext (a, b) {
|
|
93464
|
-
a = a || {}
|
|
93465
93776
|
b = b || {}
|
|
93466
93777
|
var t = {}
|
|
93467
|
-
Object.keys(b).forEach(function (k) {
|
|
93468
|
-
t[k] = b[k]
|
|
93469
|
-
})
|
|
93470
93778
|
Object.keys(a).forEach(function (k) {
|
|
93471
93779
|
t[k] = a[k]
|
|
93472
93780
|
})
|
|
93781
|
+
Object.keys(b).forEach(function (k) {
|
|
93782
|
+
t[k] = b[k]
|
|
93783
|
+
})
|
|
93473
93784
|
return t
|
|
93474
93785
|
}
|
|
93475
93786
|
|
|
93476
93787
|
minimatch.defaults = function (def) {
|
|
93477
|
-
if (!def || !Object.keys(def).length)
|
|
93788
|
+
if (!def || typeof def !== 'object' || !Object.keys(def).length) {
|
|
93789
|
+
return minimatch
|
|
93790
|
+
}
|
|
93478
93791
|
|
|
93479
93792
|
var orig = minimatch
|
|
93480
93793
|
|
|
93481
93794
|
var m = function minimatch (p, pattern, options) {
|
|
93482
|
-
return orig
|
|
93795
|
+
return orig(p, pattern, ext(def, options))
|
|
93483
93796
|
}
|
|
93484
93797
|
|
|
93485
93798
|
m.Minimatch = function Minimatch (pattern, options) {
|
|
93486
93799
|
return new orig.Minimatch(pattern, ext(def, options))
|
|
93487
93800
|
}
|
|
93801
|
+
m.Minimatch.defaults = function defaults (options) {
|
|
93802
|
+
return orig.defaults(ext(def, options)).Minimatch
|
|
93803
|
+
}
|
|
93804
|
+
|
|
93805
|
+
m.filter = function filter (pattern, options) {
|
|
93806
|
+
return orig.filter(pattern, ext(def, options))
|
|
93807
|
+
}
|
|
93808
|
+
|
|
93809
|
+
m.defaults = function defaults (options) {
|
|
93810
|
+
return orig.defaults(ext(def, options))
|
|
93811
|
+
}
|
|
93812
|
+
|
|
93813
|
+
m.makeRe = function makeRe (pattern, options) {
|
|
93814
|
+
return orig.makeRe(pattern, ext(def, options))
|
|
93815
|
+
}
|
|
93816
|
+
|
|
93817
|
+
m.braceExpand = function braceExpand (pattern, options) {
|
|
93818
|
+
return orig.braceExpand(pattern, ext(def, options))
|
|
93819
|
+
}
|
|
93820
|
+
|
|
93821
|
+
m.match = function (list, pattern, options) {
|
|
93822
|
+
return orig.match(list, pattern, ext(def, options))
|
|
93823
|
+
}
|
|
93488
93824
|
|
|
93489
93825
|
return m
|
|
93490
93826
|
}
|
|
93491
93827
|
|
|
93492
93828
|
Minimatch.defaults = function (def) {
|
|
93493
|
-
if (!def || !Object.keys(def).length) return Minimatch
|
|
93494
93829
|
return minimatch.defaults(def).Minimatch
|
|
93495
93830
|
}
|
|
93496
93831
|
|
|
93497
93832
|
function minimatch (p, pattern, options) {
|
|
93498
|
-
|
|
93499
|
-
throw new TypeError('glob pattern string required')
|
|
93500
|
-
}
|
|
93833
|
+
assertValidPattern(pattern)
|
|
93501
93834
|
|
|
93502
93835
|
if (!options) options = {}
|
|
93503
93836
|
|
|
@@ -93506,9 +93839,6 @@ function minimatch (p, pattern, options) {
|
|
|
93506
93839
|
return false
|
|
93507
93840
|
}
|
|
93508
93841
|
|
|
93509
|
-
// "" only matches ""
|
|
93510
|
-
if (pattern.trim() === '') return p === ''
|
|
93511
|
-
|
|
93512
93842
|
return new Minimatch(pattern, options).match(p)
|
|
93513
93843
|
}
|
|
93514
93844
|
|
|
@@ -93517,15 +93847,14 @@ function Minimatch (pattern, options) {
|
|
|
93517
93847
|
return new Minimatch(pattern, options)
|
|
93518
93848
|
}
|
|
93519
93849
|
|
|
93520
|
-
|
|
93521
|
-
throw new TypeError('glob pattern string required')
|
|
93522
|
-
}
|
|
93850
|
+
assertValidPattern(pattern)
|
|
93523
93851
|
|
|
93524
93852
|
if (!options) options = {}
|
|
93853
|
+
|
|
93525
93854
|
pattern = pattern.trim()
|
|
93526
93855
|
|
|
93527
93856
|
// windows support: need to use /, not \
|
|
93528
|
-
if (path.sep !== '/') {
|
|
93857
|
+
if (!options.allowWindowsEscape && path.sep !== '/') {
|
|
93529
93858
|
pattern = pattern.split(path.sep).join('/')
|
|
93530
93859
|
}
|
|
93531
93860
|
|
|
@@ -93536,6 +93865,7 @@ function Minimatch (pattern, options) {
|
|
|
93536
93865
|
this.negate = false
|
|
93537
93866
|
this.comment = false
|
|
93538
93867
|
this.empty = false
|
|
93868
|
+
this.partial = !!options.partial
|
|
93539
93869
|
|
|
93540
93870
|
// make the set of regexps etc.
|
|
93541
93871
|
this.make()
|
|
@@ -93545,9 +93875,6 @@ Minimatch.prototype.debug = function () {}
|
|
|
93545
93875
|
|
|
93546
93876
|
Minimatch.prototype.make = make
|
|
93547
93877
|
function make () {
|
|
93548
|
-
// don't do it more than once.
|
|
93549
|
-
if (this._made) return
|
|
93550
|
-
|
|
93551
93878
|
var pattern = this.pattern
|
|
93552
93879
|
var options = this.options
|
|
93553
93880
|
|
|
@@ -93567,7 +93894,7 @@ function make () {
|
|
|
93567
93894
|
// step 2: expand braces
|
|
93568
93895
|
var set = this.globSet = this.braceExpand()
|
|
93569
93896
|
|
|
93570
|
-
if (options.debug) this.debug = console.error
|
|
93897
|
+
if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) }
|
|
93571
93898
|
|
|
93572
93899
|
this.debug(this.pattern, set)
|
|
93573
93900
|
|
|
@@ -93647,12 +93974,11 @@ function braceExpand (pattern, options) {
|
|
|
93647
93974
|
pattern = typeof pattern === 'undefined'
|
|
93648
93975
|
? this.pattern : pattern
|
|
93649
93976
|
|
|
93650
|
-
|
|
93651
|
-
throw new TypeError('undefined pattern')
|
|
93652
|
-
}
|
|
93977
|
+
assertValidPattern(pattern)
|
|
93653
93978
|
|
|
93654
|
-
|
|
93655
|
-
|
|
93979
|
+
// Thanks to Yeting Li <https://github.com/yetingli> for
|
|
93980
|
+
// improving this regexp to avoid a ReDOS vulnerability.
|
|
93981
|
+
if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
|
|
93656
93982
|
// shortcut. no need to expand.
|
|
93657
93983
|
return [pattern]
|
|
93658
93984
|
}
|
|
@@ -93660,6 +93986,17 @@ function braceExpand (pattern, options) {
|
|
|
93660
93986
|
return expand(pattern)
|
|
93661
93987
|
}
|
|
93662
93988
|
|
|
93989
|
+
var MAX_PATTERN_LENGTH = 1024 * 64
|
|
93990
|
+
var assertValidPattern = function (pattern) {
|
|
93991
|
+
if (typeof pattern !== 'string') {
|
|
93992
|
+
throw new TypeError('invalid pattern')
|
|
93993
|
+
}
|
|
93994
|
+
|
|
93995
|
+
if (pattern.length > MAX_PATTERN_LENGTH) {
|
|
93996
|
+
throw new TypeError('pattern is too long')
|
|
93997
|
+
}
|
|
93998
|
+
}
|
|
93999
|
+
|
|
93663
94000
|
// parse a component of the expanded set.
|
|
93664
94001
|
// At this point, no pattern may contain "/" in it
|
|
93665
94002
|
// so we're going to return a 2d array, where each entry is the full
|
|
@@ -93674,14 +94011,17 @@ function braceExpand (pattern, options) {
|
|
|
93674
94011
|
Minimatch.prototype.parse = parse
|
|
93675
94012
|
var SUBPARSE = {}
|
|
93676
94013
|
function parse (pattern, isSub) {
|
|
93677
|
-
|
|
93678
|
-
throw new TypeError('pattern is too long')
|
|
93679
|
-
}
|
|
94014
|
+
assertValidPattern(pattern)
|
|
93680
94015
|
|
|
93681
94016
|
var options = this.options
|
|
93682
94017
|
|
|
93683
94018
|
// shortcuts
|
|
93684
|
-
if (
|
|
94019
|
+
if (pattern === '**') {
|
|
94020
|
+
if (!options.noglobstar)
|
|
94021
|
+
return GLOBSTAR
|
|
94022
|
+
else
|
|
94023
|
+
pattern = '*'
|
|
94024
|
+
}
|
|
93685
94025
|
if (pattern === '') return ''
|
|
93686
94026
|
|
|
93687
94027
|
var re = ''
|
|
@@ -93737,10 +94077,12 @@ function parse (pattern, isSub) {
|
|
|
93737
94077
|
}
|
|
93738
94078
|
|
|
93739
94079
|
switch (c) {
|
|
93740
|
-
|
|
94080
|
+
/* istanbul ignore next */
|
|
94081
|
+
case '/': {
|
|
93741
94082
|
// completely not allowed, even escaped.
|
|
93742
94083
|
// Should already be path-split by now.
|
|
93743
94084
|
return false
|
|
94085
|
+
}
|
|
93744
94086
|
|
|
93745
94087
|
case '\\':
|
|
93746
94088
|
clearStateChar()
|
|
@@ -93859,25 +94201,23 @@ function parse (pattern, isSub) {
|
|
|
93859
94201
|
|
|
93860
94202
|
// handle the case where we left a class open.
|
|
93861
94203
|
// "[z-a]" is valid, equivalent to "\[z-a\]"
|
|
93862
|
-
|
|
93863
|
-
|
|
93864
|
-
|
|
93865
|
-
|
|
93866
|
-
|
|
93867
|
-
|
|
93868
|
-
|
|
93869
|
-
|
|
93870
|
-
|
|
93871
|
-
|
|
93872
|
-
|
|
93873
|
-
|
|
93874
|
-
|
|
93875
|
-
|
|
93876
|
-
|
|
93877
|
-
|
|
93878
|
-
|
|
93879
|
-
continue
|
|
93880
|
-
}
|
|
94204
|
+
// split where the last [ was, make sure we don't have
|
|
94205
|
+
// an invalid re. if so, re-walk the contents of the
|
|
94206
|
+
// would-be class to re-translate any characters that
|
|
94207
|
+
// were passed through as-is
|
|
94208
|
+
// TODO: It would probably be faster to determine this
|
|
94209
|
+
// without a try/catch and a new RegExp, but it's tricky
|
|
94210
|
+
// to do safely. For now, this is safe and works.
|
|
94211
|
+
var cs = pattern.substring(classStart + 1, i)
|
|
94212
|
+
try {
|
|
94213
|
+
RegExp('[' + cs + ']')
|
|
94214
|
+
} catch (er) {
|
|
94215
|
+
// not a valid class!
|
|
94216
|
+
var sp = this.parse(cs, SUBPARSE)
|
|
94217
|
+
re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
|
|
94218
|
+
hasMagic = hasMagic || sp[1]
|
|
94219
|
+
inClass = false
|
|
94220
|
+
continue
|
|
93881
94221
|
}
|
|
93882
94222
|
|
|
93883
94223
|
// finish up the class.
|
|
@@ -93961,9 +94301,7 @@ function parse (pattern, isSub) {
|
|
|
93961
94301
|
// something that could conceivably capture a dot
|
|
93962
94302
|
var addPatternStart = false
|
|
93963
94303
|
switch (re.charAt(0)) {
|
|
93964
|
-
case '.':
|
|
93965
|
-
case '[':
|
|
93966
|
-
case '(': addPatternStart = true
|
|
94304
|
+
case '[': case '.': case '(': addPatternStart = true
|
|
93967
94305
|
}
|
|
93968
94306
|
|
|
93969
94307
|
// Hack to work around lack of negative lookbehind in JS
|
|
@@ -94025,7 +94363,7 @@ function parse (pattern, isSub) {
|
|
|
94025
94363
|
var flags = options.nocase ? 'i' : ''
|
|
94026
94364
|
try {
|
|
94027
94365
|
var regExp = new RegExp('^' + re + '$', flags)
|
|
94028
|
-
} catch (er) {
|
|
94366
|
+
} catch (er) /* istanbul ignore next - should be impossible */ {
|
|
94029
94367
|
// If it was an invalid regular expression, then it can't match
|
|
94030
94368
|
// anything. This trick looks for a character after the end of
|
|
94031
94369
|
// the string, which is of course impossible, except in multi-line
|
|
@@ -94083,7 +94421,7 @@ function makeRe () {
|
|
|
94083
94421
|
|
|
94084
94422
|
try {
|
|
94085
94423
|
this.regexp = new RegExp(re, flags)
|
|
94086
|
-
} catch (ex) {
|
|
94424
|
+
} catch (ex) /* istanbul ignore next - should be impossible */ {
|
|
94087
94425
|
this.regexp = false
|
|
94088
94426
|
}
|
|
94089
94427
|
return this.regexp
|
|
@@ -94101,8 +94439,8 @@ minimatch.match = function (list, pattern, options) {
|
|
|
94101
94439
|
return list
|
|
94102
94440
|
}
|
|
94103
94441
|
|
|
94104
|
-
Minimatch.prototype.match = match
|
|
94105
|
-
|
|
94442
|
+
Minimatch.prototype.match = function match (f, partial) {
|
|
94443
|
+
if (typeof partial === 'undefined') partial = this.partial
|
|
94106
94444
|
this.debug('match', f, this.pattern)
|
|
94107
94445
|
// short-circuit in the case of busted things.
|
|
94108
94446
|
// comments, etc.
|
|
@@ -94184,6 +94522,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94184
94522
|
|
|
94185
94523
|
// should be impossible.
|
|
94186
94524
|
// some invalid regexp stuff in the set.
|
|
94525
|
+
/* istanbul ignore if */
|
|
94187
94526
|
if (p === false) return false
|
|
94188
94527
|
|
|
94189
94528
|
if (p === GLOBSTAR) {
|
|
@@ -94257,6 +94596,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94257
94596
|
// no match was found.
|
|
94258
94597
|
// However, in partial mode, we can't say this is necessarily over.
|
|
94259
94598
|
// If there's more *pattern* left, then
|
|
94599
|
+
/* istanbul ignore if */
|
|
94260
94600
|
if (partial) {
|
|
94261
94601
|
// ran out of file
|
|
94262
94602
|
this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
|
|
@@ -94270,11 +94610,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94270
94610
|
// patterns with magic have been turned into regexps.
|
|
94271
94611
|
var hit
|
|
94272
94612
|
if (typeof p === 'string') {
|
|
94273
|
-
|
|
94274
|
-
hit = f.toLowerCase() === p.toLowerCase()
|
|
94275
|
-
} else {
|
|
94276
|
-
hit = f === p
|
|
94277
|
-
}
|
|
94613
|
+
hit = f === p
|
|
94278
94614
|
this.debug('string match', p, f, hit)
|
|
94279
94615
|
} else {
|
|
94280
94616
|
hit = f.match(p)
|
|
@@ -94305,16 +94641,16 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) {
|
|
|
94305
94641
|
// this is ok if we're doing the match as part of
|
|
94306
94642
|
// a glob fs traversal.
|
|
94307
94643
|
return partial
|
|
94308
|
-
} else if (pi === pl) {
|
|
94644
|
+
} else /* istanbul ignore else */ if (pi === pl) {
|
|
94309
94645
|
// ran out of pattern, still have file left.
|
|
94310
94646
|
// this is only acceptable if we're on the very last
|
|
94311
94647
|
// empty segment of a file with a trailing slash.
|
|
94312
94648
|
// a/* should match a/b/
|
|
94313
|
-
|
|
94314
|
-
return emptyFileEnd
|
|
94649
|
+
return (fi === fl - 1) && (file[fi] === '')
|
|
94315
94650
|
}
|
|
94316
94651
|
|
|
94317
94652
|
// should be unreachable.
|
|
94653
|
+
/* istanbul ignore next */
|
|
94318
94654
|
throw new Error('wtf?')
|
|
94319
94655
|
}
|
|
94320
94656
|
|