@abaplint/core 2.103.6 → 2.103.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/abaplint.d.ts +11 -1
- package/build/src/abap/1_lexer/lexer.js +4 -91
- package/build/src/abap/1_lexer/lexer_buffer.js +29 -0
- package/build/src/abap/1_lexer/lexer_stream.js +70 -0
- package/build/src/abap/nodes/index.js +1 -0
- package/build/src/abap/nodes/token_node.js +1 -4
- package/build/src/abap/nodes/token_node_regex.js +8 -0
- package/build/src/lsp/help.js +1 -0
- package/build/src/objects/index.js +1 -0
- package/build/src/objects/oauth2_profile.js +21 -0
- package/build/src/registry.js +1 -1
- package/build/src/rules/downport.js +20 -4
- package/package.json +2 -2
package/build/abaplint.d.ts
CHANGED
|
@@ -3381,7 +3381,7 @@ export declare interface INode {
|
|
|
3381
3381
|
addChild(n: INode): void;
|
|
3382
3382
|
setChildren(children: INode[]): void;
|
|
3383
3383
|
getChildren(): readonly INode[];
|
|
3384
|
-
get():
|
|
3384
|
+
get(): object;
|
|
3385
3385
|
getFirstToken(): Token;
|
|
3386
3386
|
getLastToken(): Token;
|
|
3387
3387
|
}
|
|
@@ -4348,6 +4348,15 @@ declare class NumericType extends AbstractType {
|
|
|
4348
4348
|
toCDS(): string;
|
|
4349
4349
|
}
|
|
4350
4350
|
|
|
4351
|
+
declare class Oauth2Profile extends AbstractObject {
|
|
4352
|
+
getType(): string;
|
|
4353
|
+
getAllowedNaming(): {
|
|
4354
|
+
maxLength: number;
|
|
4355
|
+
allowNamespace: boolean;
|
|
4356
|
+
};
|
|
4357
|
+
getDescription(): string | undefined;
|
|
4358
|
+
}
|
|
4359
|
+
|
|
4351
4360
|
declare class ObjectCharacteristic extends AbstractObject {
|
|
4352
4361
|
getType(): string;
|
|
4353
4362
|
getAllowedNaming(): {
|
|
@@ -4461,6 +4470,7 @@ declare namespace Objects {
|
|
|
4461
4470
|
MIMEObject,
|
|
4462
4471
|
Namespace,
|
|
4463
4472
|
NumberRange,
|
|
4473
|
+
Oauth2Profile,
|
|
4464
4474
|
ObjectCharacteristic,
|
|
4465
4475
|
OutboundService,
|
|
4466
4476
|
PackageInterface,
|
|
@@ -4,95 +4,8 @@ exports.Lexer = void 0;
|
|
|
4
4
|
const position_1 = require("../../position");
|
|
5
5
|
const virtual_position_1 = require("../../virtual_position");
|
|
6
6
|
const tokens_1 = require("./tokens");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
this.buf = "";
|
|
10
|
-
}
|
|
11
|
-
add(s) {
|
|
12
|
-
this.buf = this.buf + s;
|
|
13
|
-
return this.buf;
|
|
14
|
-
}
|
|
15
|
-
get() {
|
|
16
|
-
return this.buf;
|
|
17
|
-
}
|
|
18
|
-
clear() {
|
|
19
|
-
this.buf = "";
|
|
20
|
-
}
|
|
21
|
-
countIsEven(char) {
|
|
22
|
-
let count = 0;
|
|
23
|
-
for (let i = 0; i < this.buf.length; i += 1) {
|
|
24
|
-
if (this.buf.charAt(i) === char) {
|
|
25
|
-
count += 1;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return count % 2 === 0;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
class Stream {
|
|
32
|
-
constructor(raw) {
|
|
33
|
-
this.offset = -1;
|
|
34
|
-
this.raw = raw;
|
|
35
|
-
this.row = 0;
|
|
36
|
-
this.col = 0;
|
|
37
|
-
}
|
|
38
|
-
advance() {
|
|
39
|
-
if (this.currentChar() === "\n") {
|
|
40
|
-
this.col = 1;
|
|
41
|
-
this.row = this.row + 1;
|
|
42
|
-
}
|
|
43
|
-
if (this.offset === this.raw.length) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
this.col = this.col + 1;
|
|
47
|
-
this.offset = this.offset + 1;
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
getCol() {
|
|
51
|
-
return this.col;
|
|
52
|
-
}
|
|
53
|
-
getRow() {
|
|
54
|
-
return this.row;
|
|
55
|
-
}
|
|
56
|
-
prevChar() {
|
|
57
|
-
if (this.offset - 1 < 0) {
|
|
58
|
-
return "";
|
|
59
|
-
}
|
|
60
|
-
return this.raw.substr(this.offset - 1, 1);
|
|
61
|
-
}
|
|
62
|
-
prevPrevChar() {
|
|
63
|
-
if (this.offset - 2 < 0) {
|
|
64
|
-
return "";
|
|
65
|
-
}
|
|
66
|
-
return this.raw.substr(this.offset - 2, 2);
|
|
67
|
-
}
|
|
68
|
-
currentChar() {
|
|
69
|
-
if (this.offset < 0) {
|
|
70
|
-
return "\n"; // simulate newline at start of file to handle star(*) comments
|
|
71
|
-
}
|
|
72
|
-
else if (this.offset >= this.raw.length) {
|
|
73
|
-
return "";
|
|
74
|
-
}
|
|
75
|
-
return this.raw.substr(this.offset, 1);
|
|
76
|
-
}
|
|
77
|
-
nextChar() {
|
|
78
|
-
if (this.offset + 2 > this.raw.length) {
|
|
79
|
-
return "";
|
|
80
|
-
}
|
|
81
|
-
return this.raw.substr(this.offset + 1, 1);
|
|
82
|
-
}
|
|
83
|
-
nextNextChar() {
|
|
84
|
-
if (this.offset + 3 > this.raw.length) {
|
|
85
|
-
return this.nextChar();
|
|
86
|
-
}
|
|
87
|
-
return this.raw.substr(this.offset + 1, 2);
|
|
88
|
-
}
|
|
89
|
-
getRaw() {
|
|
90
|
-
return this.raw;
|
|
91
|
-
}
|
|
92
|
-
getOffset() {
|
|
93
|
-
return this.offset;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
7
|
+
const lexer_buffer_1 = require("./lexer_buffer");
|
|
8
|
+
const lexer_stream_1 = require("./lexer_stream");
|
|
96
9
|
class Lexer {
|
|
97
10
|
constructor() {
|
|
98
11
|
this.ModeNormal = 1;
|
|
@@ -300,8 +213,8 @@ class Lexer {
|
|
|
300
213
|
this.buffer.clear();
|
|
301
214
|
}
|
|
302
215
|
process(raw) {
|
|
303
|
-
this.stream = new
|
|
304
|
-
this.buffer = new
|
|
216
|
+
this.stream = new lexer_stream_1.LexerStream(raw.replace(/\r/g, ""));
|
|
217
|
+
this.buffer = new lexer_buffer_1.LexerBuffer();
|
|
305
218
|
const splits = {};
|
|
306
219
|
splits[" "] = true;
|
|
307
220
|
splits[":"] = true;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LexerBuffer = void 0;
|
|
4
|
+
class LexerBuffer {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.buf = "";
|
|
7
|
+
}
|
|
8
|
+
add(s) {
|
|
9
|
+
this.buf = this.buf + s;
|
|
10
|
+
return this.buf;
|
|
11
|
+
}
|
|
12
|
+
get() {
|
|
13
|
+
return this.buf;
|
|
14
|
+
}
|
|
15
|
+
clear() {
|
|
16
|
+
this.buf = "";
|
|
17
|
+
}
|
|
18
|
+
countIsEven(char) {
|
|
19
|
+
let count = 0;
|
|
20
|
+
for (let i = 0; i < this.buf.length; i += 1) {
|
|
21
|
+
if (this.buf.charAt(i) === char) {
|
|
22
|
+
count += 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return count % 2 === 0;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.LexerBuffer = LexerBuffer;
|
|
29
|
+
//# sourceMappingURL=lexer_buffer.js.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LexerStream = void 0;
|
|
4
|
+
class LexerStream {
|
|
5
|
+
constructor(raw) {
|
|
6
|
+
this.offset = -1;
|
|
7
|
+
this.raw = raw;
|
|
8
|
+
this.row = 0;
|
|
9
|
+
this.col = 0;
|
|
10
|
+
}
|
|
11
|
+
advance() {
|
|
12
|
+
if (this.currentChar() === "\n") {
|
|
13
|
+
this.col = 1;
|
|
14
|
+
this.row = this.row + 1;
|
|
15
|
+
}
|
|
16
|
+
if (this.offset === this.raw.length) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
this.col = this.col + 1;
|
|
20
|
+
this.offset = this.offset + 1;
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
getCol() {
|
|
24
|
+
return this.col;
|
|
25
|
+
}
|
|
26
|
+
getRow() {
|
|
27
|
+
return this.row;
|
|
28
|
+
}
|
|
29
|
+
prevChar() {
|
|
30
|
+
if (this.offset - 1 < 0) {
|
|
31
|
+
return "";
|
|
32
|
+
}
|
|
33
|
+
return this.raw.substr(this.offset - 1, 1);
|
|
34
|
+
}
|
|
35
|
+
prevPrevChar() {
|
|
36
|
+
if (this.offset - 2 < 0) {
|
|
37
|
+
return "";
|
|
38
|
+
}
|
|
39
|
+
return this.raw.substr(this.offset - 2, 2);
|
|
40
|
+
}
|
|
41
|
+
currentChar() {
|
|
42
|
+
if (this.offset < 0) {
|
|
43
|
+
return "\n"; // simulate newline at start of file to handle star(*) comments
|
|
44
|
+
}
|
|
45
|
+
else if (this.offset >= this.raw.length) {
|
|
46
|
+
return "";
|
|
47
|
+
}
|
|
48
|
+
return this.raw.substr(this.offset, 1);
|
|
49
|
+
}
|
|
50
|
+
nextChar() {
|
|
51
|
+
if (this.offset + 2 > this.raw.length) {
|
|
52
|
+
return "";
|
|
53
|
+
}
|
|
54
|
+
return this.raw.substr(this.offset + 1, 1);
|
|
55
|
+
}
|
|
56
|
+
nextNextChar() {
|
|
57
|
+
if (this.offset + 3 > this.raw.length) {
|
|
58
|
+
return this.nextChar();
|
|
59
|
+
}
|
|
60
|
+
return this.raw.substr(this.offset + 1, 2);
|
|
61
|
+
}
|
|
62
|
+
getRaw() {
|
|
63
|
+
return this.raw;
|
|
64
|
+
}
|
|
65
|
+
getOffset() {
|
|
66
|
+
return this.offset;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.LexerStream = LexerStream;
|
|
70
|
+
//# sourceMappingURL=lexer_stream.js.map
|
|
@@ -18,4 +18,5 @@ __exportStar(require("./expression_node"), exports);
|
|
|
18
18
|
__exportStar(require("./statement_node"), exports);
|
|
19
19
|
__exportStar(require("./structure_node"), exports);
|
|
20
20
|
__exportStar(require("./token_node"), exports);
|
|
21
|
+
__exportStar(require("./token_node_regex"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TokenNode = void 0;
|
|
4
4
|
class TokenNode {
|
|
5
5
|
constructor(token) {
|
|
6
6
|
this.token = token;
|
|
@@ -31,7 +31,4 @@ class TokenNode {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.TokenNode = TokenNode;
|
|
34
|
-
class TokenNodeRegex extends TokenNode {
|
|
35
|
-
}
|
|
36
|
-
exports.TokenNodeRegex = TokenNodeRegex;
|
|
37
34
|
//# sourceMappingURL=token_node.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenNodeRegex = void 0;
|
|
4
|
+
const token_node_1 = require("./token_node");
|
|
5
|
+
class TokenNodeRegex extends token_node_1.TokenNode {
|
|
6
|
+
}
|
|
7
|
+
exports.TokenNodeRegex = TokenNodeRegex;
|
|
8
|
+
//# sourceMappingURL=token_node_regex.js.map
|
package/build/src/lsp/help.js
CHANGED
|
@@ -100,6 +100,7 @@ __exportStar(require("./messaging_channel"), exports);
|
|
|
100
100
|
__exportStar(require("./mime_object"), exports);
|
|
101
101
|
__exportStar(require("./namespace"), exports);
|
|
102
102
|
__exportStar(require("./number_range"), exports);
|
|
103
|
+
__exportStar(require("./oauth2_profile"), exports);
|
|
103
104
|
__exportStar(require("./object_characteristic"), exports);
|
|
104
105
|
__exportStar(require("./outbound_service"), exports);
|
|
105
106
|
__exportStar(require("./package_interface"), exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Oauth2Profile = void 0;
|
|
4
|
+
const _abstract_object_1 = require("./_abstract_object");
|
|
5
|
+
class Oauth2Profile extends _abstract_object_1.AbstractObject {
|
|
6
|
+
getType() {
|
|
7
|
+
return "OA2P";
|
|
8
|
+
}
|
|
9
|
+
getAllowedNaming() {
|
|
10
|
+
return {
|
|
11
|
+
maxLength: 30,
|
|
12
|
+
allowNamespace: true,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
getDescription() {
|
|
16
|
+
// todo
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.Oauth2Profile = Oauth2Profile;
|
|
21
|
+
//# sourceMappingURL=oauth2_profile.js.map
|
package/build/src/registry.js
CHANGED
|
@@ -2852,24 +2852,40 @@ ${indentation} output = ${uniqueName}.\n`;
|
|
|
2852
2852
|
if (cdef && cdef.getMethodDefinitions === undefined) {
|
|
2853
2853
|
return undefined; // something wrong
|
|
2854
2854
|
}
|
|
2855
|
-
const importing = (_c = cdef
|
|
2855
|
+
const importing = (_c = this.findConstructor(cdef, spag)) === null || _c === void 0 ? void 0 : _c.getParameters().getDefaultImporting();
|
|
2856
2856
|
if (importing) {
|
|
2857
2857
|
extra += " EXPORTING " + importing + " = " + source;
|
|
2858
2858
|
}
|
|
2859
2859
|
else if (spag === undefined) {
|
|
2860
|
-
extra += " SpagUndefined";
|
|
2860
|
+
extra += " SpagUndefined ERROR";
|
|
2861
2861
|
}
|
|
2862
2862
|
else if (cdef === undefined) {
|
|
2863
|
-
extra += " ClassDefinitionNotFound";
|
|
2863
|
+
extra += " ClassDefinitionNotFound ERROR";
|
|
2864
2864
|
}
|
|
2865
2865
|
else {
|
|
2866
|
-
extra += " SomeError";
|
|
2866
|
+
extra += " SomeError ERROR";
|
|
2867
2867
|
}
|
|
2868
2868
|
}
|
|
2869
2869
|
}
|
|
2870
2870
|
const abap = `CREATE OBJECT ${name}${extra}.`;
|
|
2871
2871
|
return abap;
|
|
2872
2872
|
}
|
|
2873
|
+
findConstructor(cdef, spag) {
|
|
2874
|
+
let def = cdef;
|
|
2875
|
+
while (def !== undefined) {
|
|
2876
|
+
const method = def === null || def === void 0 ? void 0 : def.getMethodDefinitions().getByName("CONSTRUCTOR");
|
|
2877
|
+
if (method) {
|
|
2878
|
+
return method;
|
|
2879
|
+
}
|
|
2880
|
+
const name = def.getSuperClass();
|
|
2881
|
+
if (name) {
|
|
2882
|
+
def = spag === null || spag === void 0 ? void 0 : spag.findClassDefinition(name);
|
|
2883
|
+
}
|
|
2884
|
+
else {
|
|
2885
|
+
return undefined;
|
|
2886
|
+
}
|
|
2887
|
+
}
|
|
2888
|
+
}
|
|
2873
2889
|
}
|
|
2874
2890
|
exports.Downport = Downport;
|
|
2875
2891
|
//# sourceMappingURL=downport.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/core",
|
|
3
|
-
"version": "2.103.
|
|
3
|
+
"version": "2.103.8",
|
|
4
4
|
"description": "abaplint - Core API",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/abaplint.d.ts",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"homepage": "https://abaplint.org",
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@microsoft/api-extractor": "^7.38.
|
|
53
|
+
"@microsoft/api-extractor": "^7.38.3",
|
|
54
54
|
"@types/chai": "^4.3.10",
|
|
55
55
|
"@types/mocha": "^10.0.4",
|
|
56
56
|
"@types/node": "^20.9.0",
|