@abaplint/cli 2.119.29 → 2.119.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cli.js +517 -142
- package/package.json +2 -2
package/build/cli.js
CHANGED
|
@@ -1541,6 +1541,179 @@ exports.WStaticArrowW = WStaticArrowW;
|
|
|
1541
1541
|
|
|
1542
1542
|
/***/ },
|
|
1543
1543
|
|
|
1544
|
+
/***/ "../core/build/src/abap/2_statements/_select_reclassify.js"
|
|
1545
|
+
/*!*****************************************************************!*\
|
|
1546
|
+
!*** ../core/build/src/abap/2_statements/_select_reclassify.js ***!
|
|
1547
|
+
\*****************************************************************/
|
|
1548
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
1549
|
+
|
|
1550
|
+
"use strict";
|
|
1551
|
+
|
|
1552
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
1553
|
+
if (k2 === undefined) k2 = k;
|
|
1554
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
1555
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
1556
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
1557
|
+
}
|
|
1558
|
+
Object.defineProperty(o, k2, desc);
|
|
1559
|
+
}) : (function(o, m, k, k2) {
|
|
1560
|
+
if (k2 === undefined) k2 = k;
|
|
1561
|
+
o[k2] = m[k];
|
|
1562
|
+
}));
|
|
1563
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
1564
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
1565
|
+
}) : function(o, v) {
|
|
1566
|
+
o["default"] = v;
|
|
1567
|
+
});
|
|
1568
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
1569
|
+
var ownKeys = function(o) {
|
|
1570
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
1571
|
+
var ar = [];
|
|
1572
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
1573
|
+
return ar;
|
|
1574
|
+
};
|
|
1575
|
+
return ownKeys(o);
|
|
1576
|
+
};
|
|
1577
|
+
return function (mod) {
|
|
1578
|
+
if (mod && mod.__esModule) return mod;
|
|
1579
|
+
var result = {};
|
|
1580
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
1581
|
+
__setModuleDefault(result, mod);
|
|
1582
|
+
return result;
|
|
1583
|
+
};
|
|
1584
|
+
})();
|
|
1585
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1586
|
+
exports.reclassifySelect = reclassifySelect;
|
|
1587
|
+
const Statements = __importStar(__webpack_require__(/*! ./statements */ "../core/build/src/abap/2_statements/statements/index.js"));
|
|
1588
|
+
const Expressions = __importStar(__webpack_require__(/*! ./expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
|
|
1589
|
+
const nodes_1 = __webpack_require__(/*! ../nodes */ "../core/build/src/abap/nodes/index.js");
|
|
1590
|
+
const nodes_2 = __webpack_require__(/*! ../nodes */ "../core/build/src/abap/nodes/index.js");
|
|
1591
|
+
const expression_node_1 = __webpack_require__(/*! ../nodes/expression_node */ "../core/build/src/abap/nodes/expression_node.js");
|
|
1592
|
+
function containsAggregation(children) {
|
|
1593
|
+
for (const child of children) {
|
|
1594
|
+
if (!(child instanceof expression_node_1.ExpressionNode)) {
|
|
1595
|
+
continue;
|
|
1596
|
+
}
|
|
1597
|
+
if (child.get() instanceof Expressions.SQLAggregation) {
|
|
1598
|
+
return true;
|
|
1599
|
+
}
|
|
1600
|
+
if (child.get() instanceof Expressions.SQLSetOpGroup) {
|
|
1601
|
+
continue;
|
|
1602
|
+
}
|
|
1603
|
+
if (containsAggregation(child.getChildren())) {
|
|
1604
|
+
return true;
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
return false;
|
|
1608
|
+
}
|
|
1609
|
+
function isCountAllPattern(children) {
|
|
1610
|
+
for (const child of children) {
|
|
1611
|
+
if (!(child instanceof expression_node_1.ExpressionNode)) {
|
|
1612
|
+
continue;
|
|
1613
|
+
}
|
|
1614
|
+
const e = child.get();
|
|
1615
|
+
if (e instanceof Expressions.SQLGroupBy ||
|
|
1616
|
+
e instanceof Expressions.SQLHaving ||
|
|
1617
|
+
e instanceof Expressions.SQLOrderBy) {
|
|
1618
|
+
return false;
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
return containsAggregation(children);
|
|
1622
|
+
}
|
|
1623
|
+
function scanForExprTypes(children, found, targets) {
|
|
1624
|
+
for (const child of children) {
|
|
1625
|
+
if (found.size === targets.length) {
|
|
1626
|
+
return;
|
|
1627
|
+
}
|
|
1628
|
+
if (!(child instanceof expression_node_1.ExpressionNode)) {
|
|
1629
|
+
continue;
|
|
1630
|
+
}
|
|
1631
|
+
const e = child.get();
|
|
1632
|
+
if (e instanceof Expressions.SQLSetOpGroup) {
|
|
1633
|
+
continue;
|
|
1634
|
+
}
|
|
1635
|
+
for (const t of targets) {
|
|
1636
|
+
if (e instanceof t) {
|
|
1637
|
+
found.add(t);
|
|
1638
|
+
break;
|
|
1639
|
+
}
|
|
1640
|
+
}
|
|
1641
|
+
scanForExprTypes(child.getChildren(), found, targets);
|
|
1642
|
+
}
|
|
1643
|
+
}
|
|
1644
|
+
function isSelectLoop(node) {
|
|
1645
|
+
const selectExpr = node.findDirectExpression(Expressions.Select);
|
|
1646
|
+
const top = selectExpr ? selectExpr.getChildren() : [];
|
|
1647
|
+
if (top.some(c => c instanceof nodes_2.TokenNode && c.get().getStr().toUpperCase() === "SINGLE")) {
|
|
1648
|
+
return false;
|
|
1649
|
+
}
|
|
1650
|
+
const targets = [
|
|
1651
|
+
Expressions.SQLSetOp, Expressions.SQLPackageSize, Expressions.SQLIntoTable,
|
|
1652
|
+
Expressions.SQLIntoStructure, Expressions.SQLIntoList, Expressions.SQLGroupBy,
|
|
1653
|
+
];
|
|
1654
|
+
const found = new Set();
|
|
1655
|
+
scanForExprTypes(top, found, targets);
|
|
1656
|
+
const has = (t) => found.has(t);
|
|
1657
|
+
if (has(Expressions.SQLPackageSize)) {
|
|
1658
|
+
return true;
|
|
1659
|
+
}
|
|
1660
|
+
if (has(Expressions.SQLIntoTable)) {
|
|
1661
|
+
return false;
|
|
1662
|
+
}
|
|
1663
|
+
const hasInto = has(Expressions.SQLIntoTable) || has(Expressions.SQLIntoStructure) || has(Expressions.SQLIntoList);
|
|
1664
|
+
if (!hasInto && isCountAllPattern(top)) {
|
|
1665
|
+
return false;
|
|
1666
|
+
}
|
|
1667
|
+
if (has(Expressions.SQLSetOp)) {
|
|
1668
|
+
return true;
|
|
1669
|
+
}
|
|
1670
|
+
if (!has(Expressions.SQLGroupBy) && containsAggregation(top)) {
|
|
1671
|
+
return false;
|
|
1672
|
+
}
|
|
1673
|
+
return true;
|
|
1674
|
+
}
|
|
1675
|
+
function isWithLoop(node) {
|
|
1676
|
+
const selectExpr = node.findDirectExpression(Expressions.Select);
|
|
1677
|
+
if (!selectExpr) {
|
|
1678
|
+
return true;
|
|
1679
|
+
}
|
|
1680
|
+
const targets = [Expressions.SQLPackageSize, Expressions.SQLIntoTable];
|
|
1681
|
+
const found = new Set();
|
|
1682
|
+
scanForExprTypes(selectExpr.getChildren(), found, targets);
|
|
1683
|
+
if (found.has(Expressions.SQLPackageSize)) {
|
|
1684
|
+
return true;
|
|
1685
|
+
}
|
|
1686
|
+
if (found.has(Expressions.SQLIntoTable)) {
|
|
1687
|
+
return false;
|
|
1688
|
+
}
|
|
1689
|
+
return true;
|
|
1690
|
+
}
|
|
1691
|
+
function reclassifySelect(node, stmt, pragmas) {
|
|
1692
|
+
const children = [...node.getChildren()];
|
|
1693
|
+
if (stmt instanceof Statements.Select || stmt instanceof Statements.SelectLoop) {
|
|
1694
|
+
const loop = isSelectLoop(node);
|
|
1695
|
+
if (loop && stmt instanceof Statements.Select) {
|
|
1696
|
+
return new nodes_1.StatementNode(new Statements.SelectLoop(), node.getColon(), pragmas).setChildren(children);
|
|
1697
|
+
}
|
|
1698
|
+
else if (!loop && stmt instanceof Statements.SelectLoop) {
|
|
1699
|
+
return new nodes_1.StatementNode(new Statements.Select(), node.getColon(), pragmas).setChildren(children);
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1702
|
+
else if (stmt instanceof Statements.With || stmt instanceof Statements.WithLoop) {
|
|
1703
|
+
const loop = isWithLoop(node);
|
|
1704
|
+
if (loop && stmt instanceof Statements.With) {
|
|
1705
|
+
return new nodes_1.StatementNode(new Statements.WithLoop(), node.getColon(), pragmas).setChildren(children);
|
|
1706
|
+
}
|
|
1707
|
+
else if (!loop && stmt instanceof Statements.WithLoop) {
|
|
1708
|
+
return new nodes_1.StatementNode(new Statements.With(), node.getColon(), pragmas).setChildren(children);
|
|
1709
|
+
}
|
|
1710
|
+
}
|
|
1711
|
+
return node;
|
|
1712
|
+
}
|
|
1713
|
+
//# sourceMappingURL=_select_reclassify.js.map
|
|
1714
|
+
|
|
1715
|
+
/***/ },
|
|
1716
|
+
|
|
1544
1717
|
/***/ "../core/build/src/abap/2_statements/combi.js"
|
|
1545
1718
|
/*!****************************************************!*\
|
|
1546
1719
|
!*** ../core/build/src/abap/2_statements/combi.js ***!
|
|
@@ -1601,6 +1774,7 @@ exports.ver = ver;
|
|
|
1601
1774
|
exports.verNot = verNot;
|
|
1602
1775
|
exports.failCombinator = failCombinator;
|
|
1603
1776
|
exports.failStar = failStar;
|
|
1777
|
+
exports.stopBefore = stopBefore;
|
|
1604
1778
|
const Tokens = __importStar(__webpack_require__(/*! ../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js"));
|
|
1605
1779
|
const nodes_1 = __webpack_require__(/*! ../nodes */ "../core/build/src/abap/nodes/index.js");
|
|
1606
1780
|
const version_1 = __webpack_require__(/*! ../../version */ "../core/build/src/version.js");
|
|
@@ -2493,6 +2667,36 @@ function failCombinator() {
|
|
|
2493
2667
|
function failStar() {
|
|
2494
2668
|
return new FailStar();
|
|
2495
2669
|
}
|
|
2670
|
+
// Passes through results where the next two tokens do NOT match t1 followed by t2.
|
|
2671
|
+
class StopBefore2 {
|
|
2672
|
+
constructor(t1, t2) {
|
|
2673
|
+
this.t1 = t1.toUpperCase();
|
|
2674
|
+
this.t2 = t2.toUpperCase();
|
|
2675
|
+
}
|
|
2676
|
+
listKeywords() { return []; }
|
|
2677
|
+
getUsing() { return []; }
|
|
2678
|
+
run(r) {
|
|
2679
|
+
var _a;
|
|
2680
|
+
const result = [];
|
|
2681
|
+
for (const input of r) {
|
|
2682
|
+
const next = input.peek();
|
|
2683
|
+
if (next === undefined) {
|
|
2684
|
+
continue;
|
|
2685
|
+
}
|
|
2686
|
+
if (next.getUpperStr() === this.t1 && ((_a = input.peekAt(1)) === null || _a === void 0 ? void 0 : _a.getUpperStr()) === this.t2) {
|
|
2687
|
+
continue;
|
|
2688
|
+
}
|
|
2689
|
+
result.push(input);
|
|
2690
|
+
}
|
|
2691
|
+
return result;
|
|
2692
|
+
}
|
|
2693
|
+
railroad() { return "Railroad.Terminal('stopBefore(" + this.t1 + " " + this.t2 + ")')"; }
|
|
2694
|
+
toStr() { return "stopBefore(" + this.t1 + "," + this.t2 + ")"; }
|
|
2695
|
+
first() { return [""]; }
|
|
2696
|
+
}
|
|
2697
|
+
function stopBefore(t1, t2) {
|
|
2698
|
+
return new StopBefore2(t1, t2);
|
|
2699
|
+
}
|
|
2496
2700
|
//# sourceMappingURL=combi.js.map
|
|
2497
2701
|
|
|
2498
2702
|
/***/ },
|
|
@@ -2769,6 +2973,59 @@ exports.ExpandMacros = ExpandMacros;
|
|
|
2769
2973
|
|
|
2770
2974
|
/***/ },
|
|
2771
2975
|
|
|
2976
|
+
/***/ "../core/build/src/abap/2_statements/expressions/_select_core.js"
|
|
2977
|
+
/*!***********************************************************************!*\
|
|
2978
|
+
!*** ../core/build/src/abap/2_statements/expressions/_select_core.js ***!
|
|
2979
|
+
\***********************************************************************/
|
|
2980
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
2981
|
+
|
|
2982
|
+
"use strict";
|
|
2983
|
+
|
|
2984
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2985
|
+
exports.buildSelectCore = buildSelectCore;
|
|
2986
|
+
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
2987
|
+
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
2988
|
+
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
2989
|
+
const sql_group_by_1 = __webpack_require__(/*! ./sql_group_by */ "../core/build/src/abap/2_statements/expressions/sql_group_by.js");
|
|
2990
|
+
const sql_into_structure_1 = __webpack_require__(/*! ./sql_into_structure */ "../core/build/src/abap/2_statements/expressions/sql_into_structure.js");
|
|
2991
|
+
const sql_up_to_1 = __webpack_require__(/*! ./sql_up_to */ "../core/build/src/abap/2_statements/expressions/sql_up_to.js");
|
|
2992
|
+
function buildSelectCore(into, allowOrderBy = true) {
|
|
2993
|
+
const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
|
|
2994
|
+
const offset = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("OFFSET", _1.SQLSource));
|
|
2995
|
+
const sqlFields = (0, combi_1.ver)(version_1.Version.v750, _1.SQLFields, version_1.Version.OpenABAP);
|
|
2996
|
+
const privileged = (0, combi_1.ver)(version_1.Version.v758, _1.SQLPrivilegedAccess);
|
|
2997
|
+
const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
|
|
2998
|
+
const client = (0, combi_1.optPrio)(_1.SQLClient);
|
|
2999
|
+
const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
|
|
3000
|
+
const fae = (0, combi_1.optPrio)(_1.SQLForAllEntries);
|
|
3001
|
+
const whereClause = (0, combi_1.optPrio)(where);
|
|
3002
|
+
const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(sql_group_by_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
|
|
3003
|
+
const orderUpOff = allowOrderBy
|
|
3004
|
+
? [(0, combi_1.optPrio)((0, combi_1.seq)(_1.SQLOrderBy, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), (0, combi_1.optPrio)(offset)))]
|
|
3005
|
+
: [];
|
|
3006
|
+
const trailingOpts = (0, combi_1.seq)((0, combi_1.optPrio)(_1.DatabaseConnection), (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
|
|
3007
|
+
const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
|
|
3008
|
+
const intoAny = into ? (0, combi_1.altPrio)(into, intoSingle) : intoSingle;
|
|
3009
|
+
const intoForPackSize = _1.SQLIntoTable;
|
|
3010
|
+
if (!into) {
|
|
3011
|
+
const afterFromNoInto = (0, combi_1.seq)(_1.SQLFrom, client, byp, (0, combi_1.altPrio)((0, combi_1.seq)(sqlFields, fae, whereClause, groupHaving, ...orderUpOff, trailingOpts), (0, combi_1.seq)(fae, whereClause, groupHaving, ...orderUpOff, trailingOpts)));
|
|
3012
|
+
const singleBody = (0, combi_1.seq)(_1.SQLFrom, client, byp, whereClause, groupHaving, trailingOpts);
|
|
3013
|
+
return (0, combi_1.seq)("SELECT", (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", (0, combi_1.optPrio)("FOR UPDATE"), fieldList, singleBody), (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, byp, afterFromNoInto)));
|
|
3014
|
+
}
|
|
3015
|
+
const fromPackSize = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLPackageSize), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(_1.DatabaseConnection));
|
|
3016
|
+
const trailingInto = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(_1.SQLOrderBy), (0, combi_1.optPrio)(_1.SQLOptions))), (0, combi_1.optPrio)((0, combi_1.seq)(intoSingle, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.optPrio)(_1.SQLOptions))));
|
|
3017
|
+
const afterFromWithInto = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLFrom), client, byp, fromPackSize, (0, combi_1.altPrio)((0, combi_1.seq)(sqlFields, fae, whereClause, groupHaving, ...orderUpOff, trailingOpts, trailingInto), (0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, fae, whereClause, groupHaving, ...orderUpOff, trailingOpts, (0, combi_1.optPrio)(_1.SQLOptions)), (0, combi_1.seq)(intoSingle, byp, fae, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, whereClause, groupHaving, ...orderUpOff, trailingOpts, (0, combi_1.optPrio)(_1.SQLOptions)), (0, combi_1.seq)(fae, whereClause, groupHaving, ...orderUpOff, trailingOpts, trailingInto)));
|
|
3018
|
+
const selectTableIntoThenFrom = (0, combi_1.seq)(intoForPackSize, (0, combi_1.optPrio)(_1.SQLPackageSize), (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), afterFromWithInto);
|
|
3019
|
+
const selectOtherIntoThenFrom = (0, combi_1.seq)(intoAny, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, afterFromWithInto);
|
|
3020
|
+
const nonSingleBody = (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), byp, (0, combi_1.altPrio)(selectTableIntoThenFrom, selectOtherIntoThenFrom, afterFromWithInto));
|
|
3021
|
+
const singleAfterFrom = (0, combi_1.seq)(_1.SQLFrom, client, byp, (0, combi_1.altPrio)((0, combi_1.seq)(sqlFields, whereClause, groupHaving, trailingOpts, (0, combi_1.optPrio)(intoSingle)), (0, combi_1.seq)(intoSingle, byp, whereClause, groupHaving, trailingOpts), (0, combi_1.seq)(whereClause, groupHaving, trailingOpts, (0, combi_1.optPrio)(intoSingle))));
|
|
3022
|
+
const singleIntoBeforeFrom = (0, combi_1.seq)(intoSingle, _1.SQLFrom, client, byp, whereClause, groupHaving, trailingOpts);
|
|
3023
|
+
return (0, combi_1.seq)("SELECT", (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", (0, combi_1.optPrio)("FOR UPDATE"), fieldList, byp, (0, combi_1.altPrio)(singleIntoBeforeFrom, singleAfterFrom)), nonSingleBody));
|
|
3024
|
+
}
|
|
3025
|
+
//# sourceMappingURL=_select_core.js.map
|
|
3026
|
+
|
|
3027
|
+
/***/ },
|
|
3028
|
+
|
|
2772
3029
|
/***/ "../core/build/src/abap/2_statements/expressions/abstract.js"
|
|
2773
3030
|
/*!*******************************************************************!*\
|
|
2774
3031
|
!*** ../core/build/src/abap/2_statements/expressions/abstract.js ***!
|
|
@@ -4884,7 +5141,7 @@ __exportStar(__webpack_require__(/*! ./redefinition */ "../core/build/src/abap/2
|
|
|
4884
5141
|
__exportStar(__webpack_require__(/*! ./reduce_body */ "../core/build/src/abap/2_statements/expressions/reduce_body.js"), exports);
|
|
4885
5142
|
__exportStar(__webpack_require__(/*! ./reduce_next */ "../core/build/src/abap/2_statements/expressions/reduce_next.js"), exports);
|
|
4886
5143
|
__exportStar(__webpack_require__(/*! ./report_name */ "../core/build/src/abap/2_statements/expressions/report_name.js"), exports);
|
|
4887
|
-
__exportStar(__webpack_require__(/*! ./
|
|
5144
|
+
__exportStar(__webpack_require__(/*! ./select_cte */ "../core/build/src/abap/2_statements/expressions/select_cte.js"), exports);
|
|
4888
5145
|
__exportStar(__webpack_require__(/*! ./select */ "../core/build/src/abap/2_statements/expressions/select.js"), exports);
|
|
4889
5146
|
__exportStar(__webpack_require__(/*! ./simple_field_chain */ "../core/build/src/abap/2_statements/expressions/simple_field_chain.js"), exports);
|
|
4890
5147
|
__exportStar(__webpack_require__(/*! ./simple_field_chain2 */ "../core/build/src/abap/2_statements/expressions/simple_field_chain2.js"), exports);
|
|
@@ -4928,9 +5185,11 @@ __exportStar(__webpack_require__(/*! ./sql_hints */ "../core/build/src/abap/2_st
|
|
|
4928
5185
|
__exportStar(__webpack_require__(/*! ./sql_in */ "../core/build/src/abap/2_statements/expressions/sql_in.js"), exports);
|
|
4929
5186
|
__exportStar(__webpack_require__(/*! ./sql_into_list */ "../core/build/src/abap/2_statements/expressions/sql_into_list.js"), exports);
|
|
4930
5187
|
__exportStar(__webpack_require__(/*! ./sql_into_structure */ "../core/build/src/abap/2_statements/expressions/sql_into_structure.js"), exports);
|
|
5188
|
+
__exportStar(__webpack_require__(/*! ./sql_field_list_loop_greedy */ "../core/build/src/abap/2_statements/expressions/sql_field_list_loop_greedy.js"), exports);
|
|
4931
5189
|
__exportStar(__webpack_require__(/*! ./sql_into_table */ "../core/build/src/abap/2_statements/expressions/sql_into_table.js"), exports);
|
|
4932
5190
|
__exportStar(__webpack_require__(/*! ./sql_join */ "../core/build/src/abap/2_statements/expressions/sql_join.js"), exports);
|
|
4933
5191
|
__exportStar(__webpack_require__(/*! ./sql_options */ "../core/build/src/abap/2_statements/expressions/sql_options.js"), exports);
|
|
5192
|
+
__exportStar(__webpack_require__(/*! ./sql_package_size */ "../core/build/src/abap/2_statements/expressions/sql_package_size.js"), exports);
|
|
4934
5193
|
__exportStar(__webpack_require__(/*! ./sql_order_by */ "../core/build/src/abap/2_statements/expressions/sql_order_by.js"), exports);
|
|
4935
5194
|
__exportStar(__webpack_require__(/*! ./sql_over */ "../core/build/src/abap/2_statements/expressions/sql_over.js"), exports);
|
|
4936
5195
|
__exportStar(__webpack_require__(/*! ./sql_over */ "../core/build/src/abap/2_statements/expressions/sql_over.js"), exports);
|
|
@@ -6610,13 +6869,13 @@ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_st
|
|
|
6610
6869
|
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
6611
6870
|
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
6612
6871
|
const sql_into_structure_1 = __webpack_require__(/*! ./sql_into_structure */ "../core/build/src/abap/2_statements/expressions/sql_into_structure.js");
|
|
6613
|
-
const
|
|
6872
|
+
const _select_core_1 = __webpack_require__(/*! ./_select_core */ "../core/build/src/abap/2_statements/expressions/_select_core.js");
|
|
6614
6873
|
class Select extends combi_1.Expression {
|
|
6615
6874
|
getRunnable() {
|
|
6616
6875
|
const into = (0, combi_1.altPrio)(_1.SQLIntoTable, sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
|
|
6617
|
-
const standalone = (0,
|
|
6876
|
+
const standalone = (0, _select_core_1.buildSelectCore)(into);
|
|
6618
6877
|
const unionTail = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.plusPrio)(_1.SQLSetOp), version_1.Version.OpenABAP);
|
|
6619
|
-
const chained = (0, combi_1.seq)((0,
|
|
6878
|
+
const chained = (0, combi_1.seq)((0, _select_core_1.buildSelectCore)(undefined, false), unionTail, (0, combi_1.optPrio)(_1.SQLOrderBy), (0, combi_1.optPrio)(into));
|
|
6620
6879
|
return (0, combi_1.altPrio)(chained, standalone);
|
|
6621
6880
|
}
|
|
6622
6881
|
}
|
|
@@ -6625,86 +6884,48 @@ exports.Select = Select;
|
|
|
6625
6884
|
|
|
6626
6885
|
/***/ },
|
|
6627
6886
|
|
|
6628
|
-
/***/ "../core/build/src/abap/2_statements/expressions/
|
|
6629
|
-
|
|
6630
|
-
!*** ../core/build/src/abap/2_statements/expressions/
|
|
6631
|
-
|
|
6632
|
-
(__unused_webpack_module, exports, __webpack_require__) {
|
|
6633
|
-
|
|
6634
|
-
"use strict";
|
|
6635
|
-
|
|
6636
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6637
|
-
exports.buildSelectCore = buildSelectCore;
|
|
6638
|
-
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
6639
|
-
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
6640
|
-
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
6641
|
-
const sql_group_by_1 = __webpack_require__(/*! ./sql_group_by */ "../core/build/src/abap/2_statements/expressions/sql_group_by.js");
|
|
6642
|
-
const sql_into_structure_1 = __webpack_require__(/*! ./sql_into_structure */ "../core/build/src/abap/2_statements/expressions/sql_into_structure.js");
|
|
6643
|
-
const sql_up_to_1 = __webpack_require__(/*! ./sql_up_to */ "../core/build/src/abap/2_statements/expressions/sql_up_to.js");
|
|
6644
|
-
function buildSelectCore(into, allowOrderBy = true) {
|
|
6645
|
-
const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
|
|
6646
|
-
const offset = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("OFFSET", _1.SQLSource));
|
|
6647
|
-
const bypass = (0, combi_1.str)("BYPASSING BUFFER");
|
|
6648
|
-
const fields = (0, combi_1.ver)(version_1.Version.v750, _1.SQLFields, version_1.Version.OpenABAP);
|
|
6649
|
-
const privileged = (0, combi_1.ver)(version_1.Version.v758, _1.SQLPrivilegedAccess);
|
|
6650
|
-
const orderByItems = allowOrderBy ? [_1.SQLOrderBy, sql_up_to_1.SQLUpTo, offset] : [];
|
|
6651
|
-
const permItems = [_1.SQLFrom, ...(into ? [into] : []), _1.SQLForAllEntries, where,
|
|
6652
|
-
...orderByItems, _1.SQLClient, _1.SQLHaving,
|
|
6653
|
-
bypass, sql_group_by_1.SQLGroupBy, fields, _1.DatabaseConnection, _1.SQLHints, privileged, _1.SQLOptions];
|
|
6654
|
-
const perm = (0, combi_1.per)(permItems[0], permItems[1], ...permItems.slice(2));
|
|
6655
|
-
const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
|
|
6656
|
-
const permSingleItems = [_1.SQLFrom, ...(into ? [intoSingle] : []), where, _1.SQLClient,
|
|
6657
|
-
bypass, sql_group_by_1.SQLGroupBy, _1.SQLHaving, fields, _1.DatabaseConnection, _1.SQLHints, privileged, _1.SQLOptions];
|
|
6658
|
-
const permSingle = (0, combi_1.per)(permSingleItems[0], permSingleItems[1], ...permSingleItems.slice(2));
|
|
6659
|
-
const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
|
|
6660
|
-
const single = (0, combi_1.seq)("SINGLE", (0, combi_1.optPrio)("FOR UPDATE"), fieldList, permSingle);
|
|
6661
|
-
const other = (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, perm);
|
|
6662
|
-
return (0, combi_1.seq)("SELECT", (0, combi_1.altPrio)(single, other));
|
|
6663
|
-
}
|
|
6664
|
-
//# sourceMappingURL=select_core.js.map
|
|
6665
|
-
|
|
6666
|
-
/***/ },
|
|
6667
|
-
|
|
6668
|
-
/***/ "../core/build/src/abap/2_statements/expressions/select_loop.js"
|
|
6669
|
-
/*!**********************************************************************!*\
|
|
6670
|
-
!*** ../core/build/src/abap/2_statements/expressions/select_loop.js ***!
|
|
6671
|
-
\**********************************************************************/
|
|
6887
|
+
/***/ "../core/build/src/abap/2_statements/expressions/select_cte.js"
|
|
6888
|
+
/*!*********************************************************************!*\
|
|
6889
|
+
!*** ../core/build/src/abap/2_statements/expressions/select_cte.js ***!
|
|
6890
|
+
\*********************************************************************/
|
|
6672
6891
|
(__unused_webpack_module, exports, __webpack_require__) {
|
|
6673
6892
|
|
|
6674
6893
|
"use strict";
|
|
6675
6894
|
|
|
6676
6895
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6677
|
-
exports.
|
|
6896
|
+
exports.SelectCTE = void 0;
|
|
6678
6897
|
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
6679
6898
|
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
6680
|
-
const sql_order_by_1 = __webpack_require__(/*! ./sql_order_by */ "../core/build/src/abap/2_statements/expressions/sql_order_by.js");
|
|
6681
|
-
const sql_having_1 = __webpack_require__(/*! ./sql_having */ "../core/build/src/abap/2_statements/expressions/sql_having.js");
|
|
6682
|
-
const sql_into_structure_1 = __webpack_require__(/*! ./sql_into_structure */ "../core/build/src/abap/2_statements/expressions/sql_into_structure.js");
|
|
6683
|
-
const sql_hints_1 = __webpack_require__(/*! ./sql_hints */ "../core/build/src/abap/2_statements/expressions/sql_hints.js");
|
|
6684
|
-
const sql_field_list_loop_1 = __webpack_require__(/*! ./sql_field_list_loop */ "../core/build/src/abap/2_statements/expressions/sql_field_list_loop.js");
|
|
6685
|
-
const sql_up_to_1 = __webpack_require__(/*! ./sql_up_to */ "../core/build/src/abap/2_statements/expressions/sql_up_to.js");
|
|
6686
6899
|
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
6900
|
+
const sql_field_list_loop_greedy_1 = __webpack_require__(/*! ./sql_field_list_loop_greedy */ "../core/build/src/abap/2_statements/expressions/sql_field_list_loop_greedy.js");
|
|
6687
6901
|
const sql_fields_loop_1 = __webpack_require__(/*! ./sql_fields_loop */ "../core/build/src/abap/2_statements/expressions/sql_fields_loop.js");
|
|
6688
|
-
|
|
6689
|
-
|
|
6902
|
+
const sql_up_to_1 = __webpack_require__(/*! ./sql_up_to */ "../core/build/src/abap/2_statements/expressions/sql_up_to.js");
|
|
6903
|
+
const sql_source_1 = __webpack_require__(/*! ./sql_source */ "../core/build/src/abap/2_statements/expressions/sql_source.js");
|
|
6904
|
+
const sql_set_op_group_1 = __webpack_require__(/*! ./sql_set_op_group */ "../core/build/src/abap/2_statements/expressions/sql_set_op_group.js");
|
|
6905
|
+
class SelectCTE extends combi_1.Expression {
|
|
6690
6906
|
getRunnable() {
|
|
6691
6907
|
const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
|
|
6692
6908
|
const bypass = "BYPASSING BUFFER";
|
|
6693
|
-
const pack = (0, combi_1.seq)("PACKAGE SIZE", _1.SQLSource);
|
|
6694
6909
|
const privileged = (0, combi_1.ver)(version_1.Version.v758, _1.SQLPrivilegedAccess);
|
|
6695
|
-
const
|
|
6696
|
-
const
|
|
6697
|
-
const
|
|
6698
|
-
const
|
|
6699
|
-
const
|
|
6700
|
-
const
|
|
6701
|
-
const
|
|
6702
|
-
const
|
|
6703
|
-
|
|
6910
|
+
const offset = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("OFFSET", sql_source_1.SQLSource));
|
|
6911
|
+
const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
|
|
6912
|
+
const tail = (0, combi_1.seq)(groupHaving, (0, combi_1.optPrio)((0, combi_1.seq)(_1.SQLOrderBy, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), (0, combi_1.optPrio)(offset))), (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions), (0, combi_1.optPrio)(_1.DatabaseConnection));
|
|
6913
|
+
const sqlStyle = (0, combi_1.seq)(_1.SQLFrom, (0, combi_1.optPrio)(_1.SQLClient), (0, combi_1.optPrio)(bypass), (0, combi_1.ver)(version_1.Version.v750, sql_fields_loop_1.SQLFieldsLoop, version_1.Version.OpenABAP), (0, combi_1.optPrio)(_1.SQLForAllEntries), (0, combi_1.optPrio)(where), tail);
|
|
6914
|
+
const abapStyle = (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), sql_field_list_loop_greedy_1.SQLFieldListLoopGreedy, _1.SQLFrom, (0, combi_1.optPrio)(_1.SQLClient), (0, combi_1.optPrio)(bypass), (0, combi_1.optPrio)(_1.SQLForAllEntries), (0, combi_1.optPrio)(where), tail);
|
|
6915
|
+
const union = (0, combi_1.seq)("UNION", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")));
|
|
6916
|
+
const intersectExcept = (0, combi_1.altPrio)((0, combi_1.seq)("INTERSECT", (0, combi_1.optPrio)("DISTINCT")), (0, combi_1.seq)("EXCEPT", (0, combi_1.optPrio)("DISTINCT")));
|
|
6917
|
+
const setOp = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v750, union, version_1.Version.OpenABAP), (0, combi_1.ver)(version_1.Version.v756, intersectExcept));
|
|
6918
|
+
const operandSql = (0, combi_1.seq)(_1.SQLFrom, (0, combi_1.optPrio)(_1.SQLClient), (0, combi_1.optPrio)(bypass), (0, combi_1.ver)(version_1.Version.v750, sql_fields_loop_1.SQLFieldsLoop, version_1.Version.OpenABAP), (0, combi_1.optPrio)(_1.SQLForAllEntries), (0, combi_1.optPrio)(where), groupHaving);
|
|
6919
|
+
const operandAbap = (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), sql_field_list_loop_greedy_1.SQLFieldListLoopGreedy, _1.SQLFrom, (0, combi_1.optPrio)(_1.SQLClient), (0, combi_1.optPrio)(bypass), (0, combi_1.optPrio)(_1.SQLForAllEntries), (0, combi_1.optPrio)(where), groupHaving);
|
|
6920
|
+
const operandCore = (0, combi_1.altPrio)(operandSql, operandAbap);
|
|
6921
|
+
const unionOperand = (0, combi_1.altPrio)(sql_set_op_group_1.SQLSetOpGroup, (0, combi_1.seq)("SELECT", operandCore));
|
|
6922
|
+
const unionTail = (0, combi_1.starPrio)((0, combi_1.seq)(setOp, unionOperand));
|
|
6923
|
+
const selectBody = (0, combi_1.seq)("SELECT", (0, combi_1.altPrio)(sqlStyle, abapStyle));
|
|
6924
|
+
return (0, combi_1.seq)(selectBody, unionTail);
|
|
6704
6925
|
}
|
|
6705
6926
|
}
|
|
6706
|
-
exports.
|
|
6707
|
-
//# sourceMappingURL=
|
|
6927
|
+
exports.SelectCTE = SelectCTE;
|
|
6928
|
+
//# sourceMappingURL=select_cte.js.map
|
|
6708
6929
|
|
|
6709
6930
|
/***/ },
|
|
6710
6931
|
|
|
@@ -7297,12 +7518,12 @@ class SQLCompare extends combi_1.Expression {
|
|
|
7297
7518
|
const between = (0, combi_1.seq)("BETWEEN", _1.SQLSource, "AND", _1.SQLSource);
|
|
7298
7519
|
const like = (0, combi_1.seq)("LIKE", _1.SQLSource, (0, combi_1.optPrio)((0, combi_1.seq)("ESCAPE", _1.SQLSource)));
|
|
7299
7520
|
const nul = (0, combi_1.seq)("IS", (0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)("NULL", (0, combi_1.ver)(version_1.Version.v753, "INITIAL")));
|
|
7300
|
-
const source = new _1.SQLSource();
|
|
7301
7521
|
const sub = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("ALL", "ANY", "SOME")), subSelect);
|
|
7522
|
+
const source = new _1.SQLSource();
|
|
7302
7523
|
const arith = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/"), _1.SQLFieldName)), version_1.Version.OpenABAP);
|
|
7303
7524
|
const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));
|
|
7304
7525
|
const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleSource3, paren)), version_1.Version.OpenABAP);
|
|
7305
|
-
const rett = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLAggregation, _1.SQLFunction, _1.ConstantString, (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLPath, _1.SQLFieldName), (0, combi_1.optPrio)(arith)), at), (0, combi_1.altPrio)((0, combi_1.seq)(_1.SQLCompareOperator, (0, combi_1.altPrio)(sub, _1.SQLAggregation, _1.SQLFunction, source)), (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)(_1.SQLIn, like, between)), nul));
|
|
7526
|
+
const rett = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLCase, _1.SQLAggregation, _1.SQLFunction, _1.ConstantString, (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLPath, _1.SQLFieldName), (0, combi_1.optPrio)(arith)), at), (0, combi_1.altPrio)((0, combi_1.seq)(_1.SQLCompareOperator, (0, combi_1.altPrio)(sub, _1.SQLCase, _1.SQLAggregation, _1.SQLFunction, (0, combi_1.seq)(source, (0, combi_1.optPrio)(arith)))), (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)(_1.SQLIn, like, between)), nul));
|
|
7306
7527
|
const exists = (0, combi_1.seq)("EXISTS", subSelect);
|
|
7307
7528
|
return (0, combi_1.altPrio)(exists, _1.Dynamic, rett);
|
|
7308
7529
|
}
|
|
@@ -7387,16 +7608,20 @@ class SQLField extends combi_1.Expression {
|
|
|
7387
7608
|
const field = (0, combi_1.altPrio)(_1.SQLAggregation, fieldNoAgg);
|
|
7388
7609
|
const parenField = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), field, (0, combi_1.tok)(tokens_1.WParenRightW));
|
|
7389
7610
|
const parenFieldNoAgg = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), fieldNoAgg, (0, combi_1.tok)(tokens_1.WParenRightW));
|
|
7390
|
-
//
|
|
7611
|
+
// without aggregates: from v740sp05
|
|
7391
7612
|
const subNoAgg = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.altPrio)(parenFieldNoAgg, fieldNoAgg)));
|
|
7392
7613
|
const arithNoAgg = (0, combi_1.ver)(version_1.Version.v740sp05, subNoAgg);
|
|
7393
|
-
//
|
|
7614
|
+
// with aggregates: from v754
|
|
7394
7615
|
const subWithAgg = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.altPrio)(parenField, field)));
|
|
7395
7616
|
const arithWithAgg = (0, combi_1.ver)(version_1.Version.v754, subWithAgg);
|
|
7396
7617
|
const arith = (0, combi_1.altPrio)(arithWithAgg, arithNoAgg);
|
|
7397
7618
|
const arithSequence = (0, combi_1.seq)(field, (0, combi_1.optPrio)(arith));
|
|
7398
7619
|
const parenArithSequence = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), arithSequence, (0, combi_1.tok)(tokens_1.WParenRightW));
|
|
7399
|
-
|
|
7620
|
+
// allows (a-b)*(c-d) — paren groups as operands, defined after parenArithSequence
|
|
7621
|
+
const subExtWithAgg = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.altPrio)(parenArithSequence, parenField, field)));
|
|
7622
|
+
const subExtNoAgg = (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.altPrio)(parenArithSequence, parenFieldNoAgg, fieldNoAgg)));
|
|
7623
|
+
const arithExt = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v754, subExtWithAgg), (0, combi_1.ver)(version_1.Version.v740sp05, subExtNoAgg));
|
|
7624
|
+
return (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.seq)(parenArithSequence, (0, combi_1.optPrio)(arithExt)), arithSequence), (0, combi_1.optPrio)(as));
|
|
7400
7625
|
}
|
|
7401
7626
|
}
|
|
7402
7627
|
exports.SQLField = SQLField;
|
|
@@ -7450,7 +7675,7 @@ class SQLFieldList extends combi_1.Expression {
|
|
|
7450
7675
|
const as = (0, combi_1.seq)("AS", _1.SQLAsName);
|
|
7451
7676
|
const commaParenField = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.SQLFieldName, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.WParenRight)), (0, combi_1.optPrio)(as));
|
|
7452
7677
|
const nev = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.starPrio)((0, combi_1.seq)(",", (0, combi_1.altPrio)(_1.SQLField, commaParenField))), version_1.Version.OpenABAP);
|
|
7453
|
-
const old = (0, combi_1.starPrio)(_1.SQLField);
|
|
7678
|
+
const old = (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.stopBefore)("UP", "TO"), _1.SQLField));
|
|
7454
7679
|
return (0, combi_1.altPrio)("*", _1.Dynamic, (0, combi_1.seq)(_1.SQLField, (0, combi_1.alt)(nev, old)));
|
|
7455
7680
|
}
|
|
7456
7681
|
}
|
|
@@ -7491,6 +7716,36 @@ exports.SQLFieldListLoop = SQLFieldListLoop;
|
|
|
7491
7716
|
|
|
7492
7717
|
/***/ },
|
|
7493
7718
|
|
|
7719
|
+
/***/ "../core/build/src/abap/2_statements/expressions/sql_field_list_loop_greedy.js"
|
|
7720
|
+
/*!*************************************************************************************!*\
|
|
7721
|
+
!*** ../core/build/src/abap/2_statements/expressions/sql_field_list_loop_greedy.js ***!
|
|
7722
|
+
\*************************************************************************************/
|
|
7723
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
7724
|
+
|
|
7725
|
+
"use strict";
|
|
7726
|
+
|
|
7727
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
7728
|
+
exports.SQLFieldListLoopGreedy = void 0;
|
|
7729
|
+
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
7730
|
+
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
7731
|
+
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
7732
|
+
const sql_path_1 = __webpack_require__(/*! ./sql_path */ "../core/build/src/abap/2_statements/expressions/sql_path.js");
|
|
7733
|
+
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
|
|
7734
|
+
class SQLFieldListLoopGreedy extends combi_1.Expression {
|
|
7735
|
+
getRunnable() {
|
|
7736
|
+
const comma = (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp05, ",", version_1.Version.OpenABAP));
|
|
7737
|
+
const as = (0, combi_1.seq)("AS", _1.SQLAsName);
|
|
7738
|
+
const abap = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2), version_1.Version.OpenABAP);
|
|
7739
|
+
const entry = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLField, abap, sql_path_1.SQLPath, _1.SQLFieldName, _1.Constant), (0, combi_1.optPrio)(as), comma);
|
|
7740
|
+
const fieldList = (0, combi_1.plusPrio)(entry);
|
|
7741
|
+
return (0, combi_1.altPrio)("*", _1.Dynamic, fieldList);
|
|
7742
|
+
}
|
|
7743
|
+
}
|
|
7744
|
+
exports.SQLFieldListLoopGreedy = SQLFieldListLoopGreedy;
|
|
7745
|
+
//# sourceMappingURL=sql_field_list_loop_greedy.js.map
|
|
7746
|
+
|
|
7747
|
+
/***/ },
|
|
7748
|
+
|
|
7494
7749
|
/***/ "../core/build/src/abap/2_statements/expressions/sql_field_name.js"
|
|
7495
7750
|
/*!*************************************************************************!*\
|
|
7496
7751
|
!*** ../core/build/src/abap/2_statements/expressions/sql_field_name.js ***!
|
|
@@ -7504,7 +7759,7 @@ exports.SQLFieldName = void 0;
|
|
|
7504
7759
|
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
7505
7760
|
class SQLFieldName extends combi_1.Expression {
|
|
7506
7761
|
getRunnable() {
|
|
7507
|
-
return (0, combi_1.regex)(/^(?!(?:
|
|
7762
|
+
return (0, combi_1.regex)(/^(?!(?:FROM|INTO|HAVING|FOR|DISTINCT|UNION|INTERSECT|EXCEPT|NOT|WHEN|CASE|AS|APPENDING|WHERE|CONNECTION|EXISTS|INSERT|MODIFY)$)(\/\w+\/)?(\*?\w+~(\/\w+\/)?(\w+|\*)|\w+)$/i);
|
|
7508
7763
|
}
|
|
7509
7764
|
}
|
|
7510
7765
|
exports.SQLFieldName = SQLFieldName;
|
|
@@ -7548,7 +7803,7 @@ const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_st
|
|
|
7548
7803
|
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
7549
7804
|
class SQLFieldsLoop extends combi_1.Expression {
|
|
7550
7805
|
getRunnable() {
|
|
7551
|
-
return (0, combi_1.seq)("FIELDS", (0, combi_1.opt)("DISTINCT"), _1.
|
|
7806
|
+
return (0, combi_1.seq)("FIELDS", (0, combi_1.opt)("DISTINCT"), _1.SQLFieldListLoopGreedy);
|
|
7552
7807
|
}
|
|
7553
7808
|
}
|
|
7554
7809
|
exports.SQLFieldsLoop = SQLFieldsLoop;
|
|
@@ -7662,7 +7917,7 @@ const sql_function_input_1 = __webpack_require__(/*! ./sql_function_input */ "..
|
|
|
7662
7917
|
const sql_case_1 = __webpack_require__(/*! ./sql_case */ "../core/build/src/abap/2_statements/expressions/sql_case.js");
|
|
7663
7918
|
class SQLFunction extends combi_1.Expression {
|
|
7664
7919
|
getRunnable() {
|
|
7665
|
-
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)))), "DATS", "FLTP", "INT2", "INT4", "INT8");
|
|
7920
|
+
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)))), "DATS", "FLTP", "INT1", "INT2", "INT4", "INT8");
|
|
7666
7921
|
const commaParam = (0, combi_1.seq)(",", sql_function_input_1.SQLFunctionInput);
|
|
7667
7922
|
// note: the function names are not keywords, they are usually in lower case
|
|
7668
7923
|
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)));
|
|
@@ -7670,7 +7925,7 @@ class SQLFunction extends combi_1.Expression {
|
|
|
7670
7925
|
const castInput = (0, combi_1.altPrio)(sql_case_1.SQLCase, sql_function_input_1.SQLFunctionInput);
|
|
7671
7926
|
const cast = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^cast$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), castInput, "AS", castTypes, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7672
7927
|
const ceil = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^ceil$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7673
|
-
const coalesce = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^coalesce$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput,
|
|
7928
|
+
const coalesce = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^coalesce$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.starPrio)(commaParam), (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7674
7929
|
const concat = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^concat$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7675
7930
|
const div = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^div$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
7676
7931
|
const floor = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.regex)(/^floor$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, (0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
@@ -7927,11 +8182,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
7927
8182
|
exports.SQLJoin = void 0;
|
|
7928
8183
|
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
7929
8184
|
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
8185
|
+
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
7930
8186
|
class SQLJoin extends combi_1.Expression {
|
|
7931
8187
|
getRunnable() {
|
|
7932
8188
|
const joinType = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("INNER", "LEFT OUTER", "LEFT", "RIGHT OUTER", "RIGHT")), "JOIN");
|
|
7933
8189
|
const join = (0, combi_1.seq)(joinType, _1.SQLFromSource, "ON", _1.SQLCond);
|
|
7934
|
-
|
|
8190
|
+
const crossJoin = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)("CROSS JOIN", _1.SQLFromSource), version_1.Version.OpenABAP);
|
|
8191
|
+
return (0, combi_1.altPrio)(crossJoin, join);
|
|
7935
8192
|
}
|
|
7936
8193
|
}
|
|
7937
8194
|
exports.SQLJoin = SQLJoin;
|
|
@@ -8028,6 +8285,28 @@ exports.SQLOver = SQLOver;
|
|
|
8028
8285
|
|
|
8029
8286
|
/***/ },
|
|
8030
8287
|
|
|
8288
|
+
/***/ "../core/build/src/abap/2_statements/expressions/sql_package_size.js"
|
|
8289
|
+
/*!***************************************************************************!*\
|
|
8290
|
+
!*** ../core/build/src/abap/2_statements/expressions/sql_package_size.js ***!
|
|
8291
|
+
\***************************************************************************/
|
|
8292
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
8293
|
+
|
|
8294
|
+
"use strict";
|
|
8295
|
+
|
|
8296
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
8297
|
+
exports.SQLPackageSize = void 0;
|
|
8298
|
+
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
8299
|
+
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
8300
|
+
class SQLPackageSize extends combi_1.Expression {
|
|
8301
|
+
getRunnable() {
|
|
8302
|
+
return (0, combi_1.seq)("PACKAGE SIZE", _1.SQLSource);
|
|
8303
|
+
}
|
|
8304
|
+
}
|
|
8305
|
+
exports.SQLPackageSize = SQLPackageSize;
|
|
8306
|
+
//# sourceMappingURL=sql_package_size.js.map
|
|
8307
|
+
|
|
8308
|
+
/***/ },
|
|
8309
|
+
|
|
8031
8310
|
/***/ "../core/build/src/abap/2_statements/expressions/sql_path.js"
|
|
8032
8311
|
/*!*******************************************************************!*\
|
|
8033
8312
|
!*** ../core/build/src/abap/2_statements/expressions/sql_path.js ***!
|
|
@@ -8092,10 +8371,10 @@ exports.SQLSetOp = void 0;
|
|
|
8092
8371
|
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
8093
8372
|
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
8094
8373
|
const sql_set_op_group_1 = __webpack_require__(/*! ./sql_set_op_group */ "../core/build/src/abap/2_statements/expressions/sql_set_op_group.js");
|
|
8095
|
-
const
|
|
8374
|
+
const _select_core_1 = __webpack_require__(/*! ./_select_core */ "../core/build/src/abap/2_statements/expressions/_select_core.js");
|
|
8096
8375
|
class SQLSetOp extends combi_1.Expression {
|
|
8097
8376
|
getRunnable() {
|
|
8098
|
-
const operand = (0, combi_1.altPrio)(sql_set_op_group_1.SQLSetOpGroup, (0,
|
|
8377
|
+
const operand = (0, combi_1.altPrio)(sql_set_op_group_1.SQLSetOpGroup, (0, _select_core_1.buildSelectCore)(undefined, false));
|
|
8099
8378
|
const union = (0, combi_1.seq)("UNION", (0, combi_1.optPrio)((0, combi_1.altPrio)("DISTINCT", "ALL")));
|
|
8100
8379
|
const intersectExcept = (0, combi_1.altPrio)((0, combi_1.seq)("INTERSECT", (0, combi_1.optPrio)("DISTINCT")), (0, combi_1.seq)("EXCEPT", (0, combi_1.optPrio)("DISTINCT")));
|
|
8101
8380
|
const op = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v750, union, version_1.Version.OpenABAP), (0, combi_1.ver)(version_1.Version.v756, intersectExcept));
|
|
@@ -8120,10 +8399,10 @@ exports.SQLSetOpGroup = void 0;
|
|
|
8120
8399
|
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
8121
8400
|
const _1 = __webpack_require__(/*! . */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
8122
8401
|
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
8123
|
-
const
|
|
8402
|
+
const _select_core_1 = __webpack_require__(/*! ./_select_core */ "../core/build/src/abap/2_statements/expressions/_select_core.js");
|
|
8124
8403
|
class SQLSetOpGroup extends combi_1.Expression {
|
|
8125
8404
|
getRunnable() {
|
|
8126
|
-
const operand = (0, combi_1.altPrio)(SQLSetOpGroup, (0,
|
|
8405
|
+
const operand = (0, combi_1.altPrio)(SQLSetOpGroup, (0, _select_core_1.buildSelectCore)(undefined, false));
|
|
8127
8406
|
const chain = (0, combi_1.seq)(operand, (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.ver)(version_1.Version.v750, (0, combi_1.plusPrio)(_1.SQLSetOp), version_1.Version.OpenABAP), (0, combi_1.optPrio)(_1.SQLOrderBy))));
|
|
8128
8407
|
return (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)("(", chain, ")"), version_1.Version.OpenABAP);
|
|
8129
8408
|
}
|
|
@@ -9044,9 +9323,12 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
9044
9323
|
exports.WithName = void 0;
|
|
9045
9324
|
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
|
|
9046
9325
|
const combi_1 = __webpack_require__(/*! ../combi */ "../core/build/src/abap/2_statements/combi.js");
|
|
9326
|
+
const sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ "../core/build/src/abap/2_statements/expressions/sql_field_name.js");
|
|
9047
9327
|
class WithName extends combi_1.Expression {
|
|
9048
9328
|
getRunnable() {
|
|
9049
|
-
|
|
9329
|
+
// ( has no leading space, ) has leading space
|
|
9330
|
+
const colList = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), sql_field_name_1.SQLFieldName, (0, combi_1.star)((0, combi_1.seq)(",", sql_field_name_1.SQLFieldName)), (0, combi_1.tok)(tokens_1.WParenRightW));
|
|
9331
|
+
return (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), (0, combi_1.regex)(/^\w+$/), (0, combi_1.optPrio)(colList));
|
|
9050
9332
|
}
|
|
9051
9333
|
}
|
|
9052
9334
|
exports.WithName = WithName;
|
|
@@ -9106,6 +9388,9 @@ class Result {
|
|
|
9106
9388
|
peek() {
|
|
9107
9389
|
return this.tokens[this.tokenIndex];
|
|
9108
9390
|
}
|
|
9391
|
+
peekAt(offset) {
|
|
9392
|
+
return this.tokens[this.tokenIndex + offset];
|
|
9393
|
+
}
|
|
9109
9394
|
shift(node) {
|
|
9110
9395
|
const cp = this.nodes.slice();
|
|
9111
9396
|
cp.push(node);
|
|
@@ -9181,7 +9466,8 @@ const combi_1 = __webpack_require__(/*! ./combi */ "../core/build/src/abap/2_sta
|
|
|
9181
9466
|
const _statement_1 = __webpack_require__(/*! ./statements/_statement */ "../core/build/src/abap/2_statements/statements/_statement.js");
|
|
9182
9467
|
const expand_macros_1 = __webpack_require__(/*! ./expand_macros */ "../core/build/src/abap/2_statements/expand_macros.js");
|
|
9183
9468
|
const tokens_1 = __webpack_require__(/*! ../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
|
|
9184
|
-
|
|
9469
|
+
const _select_reclassify_1 = __webpack_require__(/*! ./_select_reclassify */ "../core/build/src/abap/2_statements/_select_reclassify.js");
|
|
9470
|
+
exports.STATEMENT_MAX_TOKENS = 20000;
|
|
9185
9471
|
class StatementMap {
|
|
9186
9472
|
constructor() {
|
|
9187
9473
|
this.map = {};
|
|
@@ -9404,7 +9690,8 @@ class StatementParser {
|
|
|
9404
9690
|
if (match) {
|
|
9405
9691
|
const last = tokens[tokens.length - 1];
|
|
9406
9692
|
match.push(new nodes_1.TokenNode(last));
|
|
9407
|
-
|
|
9693
|
+
const matched = new nodes_1.StatementNode(st.statement, statement.getColon(), pragmas).setChildren(match);
|
|
9694
|
+
return (0, _select_reclassify_1.reclassifySelect)(matched, st.statement, pragmas);
|
|
9408
9695
|
}
|
|
9409
9696
|
}
|
|
9410
9697
|
// next try the statements without specific keywords
|
|
@@ -9413,7 +9700,8 @@ class StatementParser {
|
|
|
9413
9700
|
if (match) {
|
|
9414
9701
|
const last = tokens[tokens.length - 1];
|
|
9415
9702
|
match.push(new nodes_1.TokenNode(last));
|
|
9416
|
-
|
|
9703
|
+
const matched = new nodes_1.StatementNode(st.statement, statement.getColon(), pragmas).setChildren(match);
|
|
9704
|
+
return (0, _select_reclassify_1.reclassifySelect)(matched, st.statement, pragmas);
|
|
9417
9705
|
}
|
|
9418
9706
|
}
|
|
9419
9707
|
return statement;
|
|
@@ -16111,7 +16399,7 @@ exports.SelectLoop = void 0;
|
|
|
16111
16399
|
const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
16112
16400
|
class SelectLoop {
|
|
16113
16401
|
getMatcher() {
|
|
16114
|
-
return new expressions_1.
|
|
16402
|
+
return new expressions_1.Select();
|
|
16115
16403
|
}
|
|
16116
16404
|
}
|
|
16117
16405
|
exports.SelectLoop = SelectLoop;
|
|
@@ -18027,8 +18315,8 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/s
|
|
|
18027
18315
|
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
|
|
18028
18316
|
class With {
|
|
18029
18317
|
getMatcher() {
|
|
18030
|
-
const
|
|
18031
|
-
return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("WITH", (0, combi_1.
|
|
18318
|
+
const cte = (0, combi_1.seq)(expressions_1.WithName, "AS", (0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SelectCTE, (0, combi_1.tok)(tokens_1.WParenRightW));
|
|
18319
|
+
return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("WITH", cte, (0, combi_1.star)((0, combi_1.seq)(",", cte)), expressions_1.Select));
|
|
18032
18320
|
}
|
|
18033
18321
|
}
|
|
18034
18322
|
exports.With = With;
|
|
@@ -18046,14 +18334,10 @@ exports.With = With;
|
|
|
18046
18334
|
|
|
18047
18335
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18048
18336
|
exports.WithLoop = void 0;
|
|
18049
|
-
const
|
|
18050
|
-
const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src/version.js");
|
|
18051
|
-
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "../core/build/src/abap/1_lexer/tokens/index.js");
|
|
18052
|
-
const expressions_1 = __webpack_require__(/*! ../expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
18337
|
+
const with_1 = __webpack_require__(/*! ./with */ "../core/build/src/abap/2_statements/statements/with.js");
|
|
18053
18338
|
class WithLoop {
|
|
18054
18339
|
getMatcher() {
|
|
18055
|
-
|
|
18056
|
-
return (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)("WITH", (0, combi_1.plus)(as), expressions_1.SelectLoop));
|
|
18340
|
+
return new with_1.With().getMatcher();
|
|
18057
18341
|
}
|
|
18058
18342
|
}
|
|
18059
18343
|
exports.WithLoop = WithLoop;
|
|
@@ -31482,15 +31766,7 @@ class Select {
|
|
|
31482
31766
|
var _a, _b;
|
|
31483
31767
|
let expr = undefined;
|
|
31484
31768
|
const ret = [];
|
|
31485
|
-
|
|
31486
|
-
expr = node.findFirstExpression(Expressions.SQLFieldListLoop);
|
|
31487
|
-
if (expr === undefined) {
|
|
31488
|
-
expr = node;
|
|
31489
|
-
}
|
|
31490
|
-
}
|
|
31491
|
-
else {
|
|
31492
|
-
expr = node.findFirstExpression(Expressions.SQLFieldList);
|
|
31493
|
-
}
|
|
31769
|
+
expr = node.findFirstExpression(Expressions.SQLFieldList);
|
|
31494
31770
|
if (((_a = expr === null || expr === void 0 ? void 0 : expr.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Dynamic) {
|
|
31495
31771
|
dynamic_1.Dynamic.runSyntax(expr.getFirstChild(), input);
|
|
31496
31772
|
}
|
|
@@ -31514,28 +31790,6 @@ exports.Select = Select;
|
|
|
31514
31790
|
|
|
31515
31791
|
/***/ },
|
|
31516
31792
|
|
|
31517
|
-
/***/ "../core/build/src/abap/5_syntax/expressions/select_loop.js"
|
|
31518
|
-
/*!******************************************************************!*\
|
|
31519
|
-
!*** ../core/build/src/abap/5_syntax/expressions/select_loop.js ***!
|
|
31520
|
-
\******************************************************************/
|
|
31521
|
-
(__unused_webpack_module, exports, __webpack_require__) {
|
|
31522
|
-
|
|
31523
|
-
"use strict";
|
|
31524
|
-
|
|
31525
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
31526
|
-
exports.SelectLoop = void 0;
|
|
31527
|
-
const select_1 = __webpack_require__(/*! ./select */ "../core/build/src/abap/5_syntax/expressions/select.js");
|
|
31528
|
-
class SelectLoop {
|
|
31529
|
-
static runSyntax(node, input) {
|
|
31530
|
-
// try using the other Select, they should look very much the same
|
|
31531
|
-
select_1.Select.runSyntax(node, input);
|
|
31532
|
-
}
|
|
31533
|
-
}
|
|
31534
|
-
exports.SelectLoop = SelectLoop;
|
|
31535
|
-
//# sourceMappingURL=select_loop.js.map
|
|
31536
|
-
|
|
31537
|
-
/***/ },
|
|
31538
|
-
|
|
31539
31793
|
/***/ "../core/build/src/abap/5_syntax/expressions/source.js"
|
|
31540
31794
|
/*!*************************************************************!*\
|
|
31541
31795
|
!*** ../core/build/src/abap/5_syntax/expressions/source.js ***!
|
|
@@ -40705,6 +40959,67 @@ exports.Ranges = Ranges;
|
|
|
40705
40959
|
|
|
40706
40960
|
/***/ },
|
|
40707
40961
|
|
|
40962
|
+
/***/ "../core/build/src/abap/5_syntax/statements/read_dataset.js"
|
|
40963
|
+
/*!******************************************************************!*\
|
|
40964
|
+
!*** ../core/build/src/abap/5_syntax/statements/read_dataset.js ***!
|
|
40965
|
+
\******************************************************************/
|
|
40966
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
40967
|
+
|
|
40968
|
+
"use strict";
|
|
40969
|
+
|
|
40970
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
40971
|
+
if (k2 === undefined) k2 = k;
|
|
40972
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
40973
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
40974
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
40975
|
+
}
|
|
40976
|
+
Object.defineProperty(o, k2, desc);
|
|
40977
|
+
}) : (function(o, m, k, k2) {
|
|
40978
|
+
if (k2 === undefined) k2 = k;
|
|
40979
|
+
o[k2] = m[k];
|
|
40980
|
+
}));
|
|
40981
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
40982
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
40983
|
+
}) : function(o, v) {
|
|
40984
|
+
o["default"] = v;
|
|
40985
|
+
});
|
|
40986
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
40987
|
+
var ownKeys = function(o) {
|
|
40988
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40989
|
+
var ar = [];
|
|
40990
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
40991
|
+
return ar;
|
|
40992
|
+
};
|
|
40993
|
+
return ownKeys(o);
|
|
40994
|
+
};
|
|
40995
|
+
return function (mod) {
|
|
40996
|
+
if (mod && mod.__esModule) return mod;
|
|
40997
|
+
var result = {};
|
|
40998
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40999
|
+
__setModuleDefault(result, mod);
|
|
41000
|
+
return result;
|
|
41001
|
+
};
|
|
41002
|
+
})();
|
|
41003
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
41004
|
+
exports.ReadDataset = void 0;
|
|
41005
|
+
const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
|
|
41006
|
+
const source_1 = __webpack_require__(/*! ../expressions/source */ "../core/build/src/abap/5_syntax/expressions/source.js");
|
|
41007
|
+
const target_1 = __webpack_require__(/*! ../expressions/target */ "../core/build/src/abap/5_syntax/expressions/target.js");
|
|
41008
|
+
class ReadDataset {
|
|
41009
|
+
runSyntax(node, input) {
|
|
41010
|
+
for (const s of node.findDirectExpressions(Expressions.Source)) {
|
|
41011
|
+
source_1.Source.runSyntax(s, input);
|
|
41012
|
+
}
|
|
41013
|
+
for (const t of node.findDirectExpressions(Expressions.Target)) {
|
|
41014
|
+
target_1.Target.runSyntax(t, input);
|
|
41015
|
+
}
|
|
41016
|
+
}
|
|
41017
|
+
}
|
|
41018
|
+
exports.ReadDataset = ReadDataset;
|
|
41019
|
+
//# sourceMappingURL=read_dataset.js.map
|
|
41020
|
+
|
|
41021
|
+
/***/ },
|
|
41022
|
+
|
|
40708
41023
|
/***/ "../core/build/src/abap/5_syntax/statements/read_entities.js"
|
|
40709
41024
|
/*!*******************************************************************!*\
|
|
40710
41025
|
!*** ../core/build/src/abap/5_syntax/statements/read_entities.js ***!
|
|
@@ -41546,12 +41861,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41546
41861
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
41547
41862
|
exports.SelectLoop = void 0;
|
|
41548
41863
|
const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
|
|
41549
|
-
const
|
|
41864
|
+
const select_1 = __webpack_require__(/*! ../expressions/select */ "../core/build/src/abap/5_syntax/expressions/select.js");
|
|
41550
41865
|
class SelectLoop {
|
|
41551
41866
|
runSyntax(node, input) {
|
|
41552
|
-
const s = node.findDirectExpression(Expressions.
|
|
41867
|
+
const s = node.findDirectExpression(Expressions.Select);
|
|
41553
41868
|
if (s) {
|
|
41554
|
-
|
|
41869
|
+
select_1.Select.runSyntax(s, input);
|
|
41555
41870
|
}
|
|
41556
41871
|
}
|
|
41557
41872
|
}
|
|
@@ -43653,15 +43968,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
43653
43968
|
exports.With = void 0;
|
|
43654
43969
|
const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
|
|
43655
43970
|
const select_1 = __webpack_require__(/*! ../expressions/select */ "../core/build/src/abap/5_syntax/expressions/select.js");
|
|
43656
|
-
const select_loop_1 = __webpack_require__(/*! ../expressions/select_loop */ "../core/build/src/abap/5_syntax/expressions/select_loop.js");
|
|
43657
43971
|
class With {
|
|
43658
43972
|
runSyntax(node, input) {
|
|
43659
43973
|
for (const s of node.findAllExpressions(Expressions.Select)) {
|
|
43660
43974
|
select_1.Select.runSyntax(s, input);
|
|
43661
43975
|
}
|
|
43662
|
-
for (const s of node.findAllExpressions(Expressions.SelectLoop)) {
|
|
43663
|
-
select_loop_1.SelectLoop.runSyntax(s, input);
|
|
43664
|
-
}
|
|
43665
43976
|
}
|
|
43666
43977
|
}
|
|
43667
43978
|
exports.With = With;
|
|
@@ -43714,15 +44025,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
43714
44025
|
exports.WithLoop = void 0;
|
|
43715
44026
|
const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
|
|
43716
44027
|
const select_1 = __webpack_require__(/*! ../expressions/select */ "../core/build/src/abap/5_syntax/expressions/select.js");
|
|
43717
|
-
const select_loop_1 = __webpack_require__(/*! ../expressions/select_loop */ "../core/build/src/abap/5_syntax/expressions/select_loop.js");
|
|
43718
44028
|
class WithLoop {
|
|
43719
44029
|
runSyntax(node, input) {
|
|
43720
44030
|
for (const s of node.findAllExpressions(Expressions.Select)) {
|
|
43721
44031
|
select_1.Select.runSyntax(s, input);
|
|
43722
44032
|
}
|
|
43723
|
-
for (const s of node.findAllExpressions(Expressions.SelectLoop)) {
|
|
43724
|
-
select_loop_1.SelectLoop.runSyntax(s, input);
|
|
43725
|
-
}
|
|
43726
44033
|
}
|
|
43727
44034
|
}
|
|
43728
44035
|
exports.WithLoop = WithLoop;
|
|
@@ -44707,6 +45014,7 @@ const insert_field_group_1 = __webpack_require__(/*! ./statements/insert_field_g
|
|
|
44707
45014
|
const read_entities_1 = __webpack_require__(/*! ./statements/read_entities */ "../core/build/src/abap/5_syntax/statements/read_entities.js");
|
|
44708
45015
|
const modify_entities_1 = __webpack_require__(/*! ./statements/modify_entities */ "../core/build/src/abap/5_syntax/statements/modify_entities.js");
|
|
44709
45016
|
const commit_entities_1 = __webpack_require__(/*! ./statements/commit_entities */ "../core/build/src/abap/5_syntax/statements/commit_entities.js");
|
|
45017
|
+
const read_dataset_1 = __webpack_require__(/*! ./statements/read_dataset */ "../core/build/src/abap/5_syntax/statements/read_dataset.js");
|
|
44710
45018
|
const _syntax_input_1 = __webpack_require__(/*! ./_syntax_input */ "../core/build/src/abap/5_syntax/_syntax_input.js");
|
|
44711
45019
|
const assert_error_1 = __webpack_require__(/*! ./assert_error */ "../core/build/src/abap/5_syntax/assert_error.js");
|
|
44712
45020
|
const field_group_1 = __webpack_require__(/*! ./statements/field_group */ "../core/build/src/abap/5_syntax/statements/field_group.js");
|
|
@@ -44835,6 +45143,7 @@ if (Object.keys(map).length === 0) {
|
|
|
44835
45143
|
addToMap(new parameter_1.Parameter());
|
|
44836
45144
|
addToMap(new fieldsymbol_1.FieldSymbol());
|
|
44837
45145
|
addToMap(new read_entities_1.ReadEntities());
|
|
45146
|
+
addToMap(new read_dataset_1.ReadDataset());
|
|
44838
45147
|
addToMap(new modify_entities_1.ModifyEntities());
|
|
44839
45148
|
addToMap(new commit_entities_1.CommitEntities());
|
|
44840
45149
|
addToMap(new call_kernel_1.CallKernel());
|
|
@@ -65683,7 +65992,7 @@ class Registry {
|
|
|
65683
65992
|
}
|
|
65684
65993
|
static abaplintVersion() {
|
|
65685
65994
|
// magic, see build script "version.js"
|
|
65686
|
-
return "2.119.
|
|
65995
|
+
return "2.119.30";
|
|
65687
65996
|
}
|
|
65688
65997
|
getDDICReferences() {
|
|
65689
65998
|
return this.ddicReferences;
|
|
@@ -72625,6 +72934,9 @@ Make sure to test the downported code, it might not always be completely correct
|
|
|
72625
72934
|
if (where === undefined) {
|
|
72626
72935
|
return undefined;
|
|
72627
72936
|
}
|
|
72937
|
+
if (high.findFirstExpression(Expressions.SQLFields) !== undefined) {
|
|
72938
|
+
return undefined;
|
|
72939
|
+
}
|
|
72628
72940
|
let into = high.findFirstExpression(Expressions.SQLIntoList);
|
|
72629
72941
|
if (into === undefined) {
|
|
72630
72942
|
into = high.findFirstExpression(Expressions.SQLIntoStructure);
|
|
@@ -87047,11 +87359,13 @@ exports.PrefixIsCurrentClass = exports.PrefixIsCurrentClassConf = void 0;
|
|
|
87047
87359
|
const issue_1 = __webpack_require__(/*! ../issue */ "../core/build/src/issue.js");
|
|
87048
87360
|
const _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ "../core/build/src/rules/_abap_rule.js");
|
|
87049
87361
|
const Structures = __importStar(__webpack_require__(/*! ../abap/3_structures/structures */ "../core/build/src/abap/3_structures/structures/index.js"));
|
|
87362
|
+
const Statements = __importStar(__webpack_require__(/*! ../abap/2_statements/statements */ "../core/build/src/abap/2_statements/statements/index.js"));
|
|
87050
87363
|
const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "../core/build/src/rules/_basic_rule_config.js");
|
|
87051
87364
|
const expressions_1 = __webpack_require__(/*! ../abap/2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js");
|
|
87052
87365
|
const position_1 = __webpack_require__(/*! ../position */ "../core/build/src/position.js");
|
|
87053
87366
|
const edit_helper_1 = __webpack_require__(/*! ../edit_helper */ "../core/build/src/edit_helper.js");
|
|
87054
87367
|
const _irule_1 = __webpack_require__(/*! ./_irule */ "../core/build/src/rules/_irule.js");
|
|
87368
|
+
const comment_1 = __webpack_require__(/*! ../abap/1_lexer/tokens/comment */ "../core/build/src/abap/1_lexer/tokens/comment.js");
|
|
87055
87369
|
class PrefixIsCurrentClassConf extends _basic_rule_config_1.BasicRuleConfig {
|
|
87056
87370
|
constructor() {
|
|
87057
87371
|
super(...arguments);
|
|
@@ -87127,11 +87441,16 @@ class PrefixIsCurrentClass extends _abap_rule_1.ABAPRule {
|
|
|
87127
87441
|
for (const c of classStructures) {
|
|
87128
87442
|
const className = c.findFirstExpression(expressions_1.ClassName).getFirstToken().getStr().toUpperCase();
|
|
87129
87443
|
const staticAccess = className + "=>";
|
|
87444
|
+
const shadowed = this.buildShadowedNames(struc, c, className);
|
|
87130
87445
|
for (const s of c.findAllStatementNodes()) {
|
|
87131
87446
|
const concat = s.concatTokensWithoutStringsAndComments().toUpperCase();
|
|
87132
87447
|
if (concat.includes(staticAccess)) {
|
|
87133
|
-
|
|
87134
|
-
|
|
87448
|
+
// when the referenced member is shadowed by a method parameter or local
|
|
87449
|
+
// declaration, the class prefix is required and cannot be omitted, see issues #3755 and #3707
|
|
87450
|
+
const names = shadowed.get(s);
|
|
87451
|
+
const ref = this.findStaticReferences(s, className).find(r => r.member === undefined || (names === null || names === void 0 ? void 0 : names.has(r.member)) !== true);
|
|
87452
|
+
if (ref) {
|
|
87453
|
+
const tokenPos = ref.pos;
|
|
87135
87454
|
const end = new position_1.Position(tokenPos.getRow(), tokenPos.getCol() + className.length + 2);
|
|
87136
87455
|
const fix = edit_helper_1.EditHelper.deleteRange(file, tokenPos, end);
|
|
87137
87456
|
issues.push(issue_1.Issue.atRange(file, tokenPos, end, "Reference to current class can be omitted: \"" + staticAccess + "\"", this.getMetadata().key, this.conf.severity, fix));
|
|
@@ -87151,6 +87470,62 @@ class PrefixIsCurrentClass extends _abap_rule_1.ABAPRule {
|
|
|
87151
87470
|
}
|
|
87152
87471
|
return issues;
|
|
87153
87472
|
}
|
|
87473
|
+
/** finds "className=>member" references in the statement, position is the start of the class name */
|
|
87474
|
+
findStaticReferences(s, className) {
|
|
87475
|
+
var _a;
|
|
87476
|
+
const refs = [];
|
|
87477
|
+
const tokens = s.getTokens().filter(t => !(t instanceof comment_1.Comment));
|
|
87478
|
+
for (let i = 0; i < tokens.length - 1; i++) {
|
|
87479
|
+
if (tokens[i].getStr().toUpperCase() === className
|
|
87480
|
+
&& tokens[i + 1].getStr() === "=>") {
|
|
87481
|
+
refs.push({
|
|
87482
|
+
pos: tokens[i].getStart(),
|
|
87483
|
+
member: (_a = tokens[i + 2]) === null || _a === void 0 ? void 0 : _a.getStr().toUpperCase(),
|
|
87484
|
+
});
|
|
87485
|
+
}
|
|
87486
|
+
}
|
|
87487
|
+
return refs;
|
|
87488
|
+
}
|
|
87489
|
+
/** for each statement in a method implementation: the method parameter and local
|
|
87490
|
+
* declaration names that shadow class members of the same name */
|
|
87491
|
+
buildShadowedNames(struc, impl, className) {
|
|
87492
|
+
var _a, _b, _c;
|
|
87493
|
+
const map = new Map();
|
|
87494
|
+
if (!(impl.get() instanceof Structures.ClassImplementation)) {
|
|
87495
|
+
return map;
|
|
87496
|
+
}
|
|
87497
|
+
const definition = struc.findDirectStructures(Structures.ClassDefinition).find(d => { var _a; return ((_a = d.findFirstExpression(expressions_1.ClassName)) === null || _a === void 0 ? void 0 : _a.getFirstToken().getStr().toUpperCase()) === className; });
|
|
87498
|
+
for (const method of impl.findAllStructuresRecursive(Structures.Method)) {
|
|
87499
|
+
const names = new Set();
|
|
87500
|
+
const methodName = (_b = (_a = method.findFirstStatement(Statements.MethodImplementation)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(expressions_1.MethodName)) === null || _b === void 0 ? void 0 : _b.concatTokens().toUpperCase();
|
|
87501
|
+
if (definition !== undefined && methodName !== undefined) {
|
|
87502
|
+
for (const def of definition.findAllStatements(Statements.MethodDef)) {
|
|
87503
|
+
if (((_c = def.findFirstExpression(expressions_1.MethodName)) === null || _c === void 0 ? void 0 : _c.concatTokens().toUpperCase()) === methodName) {
|
|
87504
|
+
for (const param of def.findAllExpressions(expressions_1.MethodParamName)) {
|
|
87505
|
+
names.add(param.concatTokens().toUpperCase());
|
|
87506
|
+
}
|
|
87507
|
+
break;
|
|
87508
|
+
}
|
|
87509
|
+
}
|
|
87510
|
+
}
|
|
87511
|
+
for (const d of method.findAllExpressions(expressions_1.DefinitionName)) {
|
|
87512
|
+
names.add(d.concatTokens().toUpperCase());
|
|
87513
|
+
}
|
|
87514
|
+
for (const inline of method.findAllExpressions(expressions_1.InlineData)) {
|
|
87515
|
+
const field = inline.findFirstExpression(expressions_1.TargetField);
|
|
87516
|
+
if (field) {
|
|
87517
|
+
names.add(field.concatTokens().toUpperCase());
|
|
87518
|
+
}
|
|
87519
|
+
}
|
|
87520
|
+
if (names.size === 0) {
|
|
87521
|
+
continue;
|
|
87522
|
+
}
|
|
87523
|
+
for (const statement of method.findAllStatementNodes()) {
|
|
87524
|
+
map.set(statement, names);
|
|
87525
|
+
}
|
|
87526
|
+
}
|
|
87527
|
+
return map;
|
|
87528
|
+
}
|
|
87154
87529
|
}
|
|
87155
87530
|
exports.PrefixIsCurrentClass = PrefixIsCurrentClass;
|
|
87156
87531
|
//# sourceMappingURL=prefix_is_current_class.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/cli",
|
|
3
|
-
"version": "2.119.
|
|
3
|
+
"version": "2.119.30",
|
|
4
4
|
"description": "abaplint - Command Line Interface",
|
|
5
5
|
"funding": "https://github.com/sponsors/larshp",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://abaplint.org",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@abaplint/core": "^2.119.
|
|
41
|
+
"@abaplint/core": "^2.119.30",
|
|
42
42
|
"@types/chai": "^4.3.20",
|
|
43
43
|
"@types/minimist": "^1.2.5",
|
|
44
44
|
"@types/mocha": "^10.0.10",
|