@abaplint/core 2.94.19 → 2.94.21
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 +18 -3
- package/build/src/abap/5_syntax/global_definitions/find_global_definitions.js +1 -0
- package/build/src/cds/expressions/cds_define_custom.js +1 -1
- package/build/src/objects/authorization_check_field.js +51 -0
- package/build/src/objects/lock_object.js +18 -3
- package/build/src/objects/maintenance_and_transport_object.js +57 -16
- package/build/src/registry.js +1 -1
- package/build/src/rules/check_ddic.js +3 -0
- package/package.json +1 -1
package/build/abaplint.d.ts
CHANGED
|
@@ -304,12 +304,20 @@ declare class AuthorityCheck implements IStatement {
|
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
declare class AuthorizationCheckField extends AbstractObject {
|
|
307
|
+
private parsedXML;
|
|
307
308
|
getType(): string;
|
|
308
309
|
getAllowedNaming(): {
|
|
309
310
|
maxLength: number;
|
|
310
311
|
allowNamespace: boolean;
|
|
311
312
|
};
|
|
313
|
+
setDirty(): void;
|
|
312
314
|
getDescription(): string | undefined;
|
|
315
|
+
getDataElementName(): string | undefined;
|
|
316
|
+
parseType(reg: IRegistry): AbstractType;
|
|
317
|
+
parse(): {
|
|
318
|
+
updated: boolean;
|
|
319
|
+
runtime: number;
|
|
320
|
+
};
|
|
313
321
|
}
|
|
314
322
|
|
|
315
323
|
declare class AuthorizationGroup extends AbstractObject {
|
|
@@ -3702,8 +3710,9 @@ declare class LockObject extends AbstractObject {
|
|
|
3702
3710
|
maxLength: number;
|
|
3703
3711
|
allowNamespace: boolean;
|
|
3704
3712
|
};
|
|
3713
|
+
setDirty(): void;
|
|
3705
3714
|
getPrimaryTable(): string | undefined;
|
|
3706
|
-
parseType(reg: IRegistry):
|
|
3715
|
+
parseType(reg: IRegistry): AbstractType;
|
|
3707
3716
|
parse(): {
|
|
3708
3717
|
updated: boolean;
|
|
3709
3718
|
runtime: number;
|
|
@@ -3752,7 +3761,7 @@ declare class MacroName extends Expression {
|
|
|
3752
3761
|
}
|
|
3753
3762
|
|
|
3754
3763
|
declare class MaintenanceAndTransportObject extends AbstractObject {
|
|
3755
|
-
private
|
|
3764
|
+
private parsedXML;
|
|
3756
3765
|
setDirty(): void;
|
|
3757
3766
|
getType(): string;
|
|
3758
3767
|
getDescription(): string | undefined;
|
|
@@ -3761,7 +3770,13 @@ declare class MaintenanceAndTransportObject extends AbstractObject {
|
|
|
3761
3770
|
allowNamespace: boolean;
|
|
3762
3771
|
};
|
|
3763
3772
|
getArea(): string | undefined;
|
|
3764
|
-
|
|
3773
|
+
getObjectName(): string | undefined;
|
|
3774
|
+
getObjectType(): string | undefined;
|
|
3775
|
+
parseType(reg: IRegistry): AbstractType;
|
|
3776
|
+
parse(): {
|
|
3777
|
+
updated: boolean;
|
|
3778
|
+
runtime: number;
|
|
3779
|
+
};
|
|
3765
3780
|
}
|
|
3766
3781
|
|
|
3767
3782
|
export declare class MemoryFile extends AbstractFile {
|
|
@@ -28,6 +28,7 @@ class FindGlobalDefinitions {
|
|
|
28
28
|
|| o instanceof objects_1.View
|
|
29
29
|
|| o instanceof objects_1.TableType
|
|
30
30
|
|| o instanceof objects_1.LockObject
|
|
31
|
+
|| o instanceof objects_1.AuthorizationCheckField
|
|
31
32
|
|| o instanceof objects_1.Table) {
|
|
32
33
|
o.parseType(this.reg); // make sure the references are set after parsing finishes
|
|
33
34
|
}
|
|
@@ -8,7 +8,7 @@ const cds_type_1 = require("./cds_type");
|
|
|
8
8
|
class CDSDefineCustom extends combi_1.Expression {
|
|
9
9
|
getRunnable() {
|
|
10
10
|
const field = (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.opt)((0, combi_1.str)("KEY")), cds_name_1.CDSName, ":", cds_type_1.CDSType, ";");
|
|
11
|
-
return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("DEFINE ROOT CUSTOM ENTITY"), cds_name_1.CDSName, (0, combi_1.str)("{"), (0, combi_1.plus)(field), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
|
|
11
|
+
return (0, combi_1.seq)((0, combi_1.star)(_1.CDSAnnotation), (0, combi_1.str)("DEFINE"), (0, combi_1.opt)((0, combi_1.str)("ROOT")), (0, combi_1.str)("CUSTOM ENTITY"), cds_name_1.CDSName, (0, combi_1.str)("{"), (0, combi_1.plus)(field), (0, combi_1.str)("}"), (0, combi_1.opt)(";"));
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.CDSDefineCustom = CDSDefineCustom;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AuthorizationCheckField = void 0;
|
|
4
|
+
const basic_1 = require("../abap/types/basic");
|
|
5
|
+
const ddic_1 = require("../ddic");
|
|
4
6
|
const _abstract_object_1 = require("./_abstract_object");
|
|
5
7
|
class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
|
|
6
8
|
getType() {
|
|
@@ -12,10 +14,59 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
|
|
|
12
14
|
allowNamespace: true,
|
|
13
15
|
};
|
|
14
16
|
}
|
|
17
|
+
setDirty() {
|
|
18
|
+
this.parsedXML = undefined;
|
|
19
|
+
super.setDirty();
|
|
20
|
+
}
|
|
15
21
|
getDescription() {
|
|
16
22
|
// todo
|
|
17
23
|
return undefined;
|
|
18
24
|
}
|
|
25
|
+
getDataElementName() {
|
|
26
|
+
var _a;
|
|
27
|
+
this.parse();
|
|
28
|
+
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.rollname;
|
|
29
|
+
}
|
|
30
|
+
parseType(reg) {
|
|
31
|
+
var _a;
|
|
32
|
+
this.parse();
|
|
33
|
+
const references = [];
|
|
34
|
+
const ddic = new ddic_1.DDIC(reg);
|
|
35
|
+
if ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.rollname) {
|
|
36
|
+
const found = ddic.lookupDataElement(this.parsedXML.rollname);
|
|
37
|
+
if (found.object) {
|
|
38
|
+
references.push({ object: found.object });
|
|
39
|
+
reg.getDDICReferences().setUsing(this, references);
|
|
40
|
+
return found.type;
|
|
41
|
+
}
|
|
42
|
+
else if (ddic.inErrorNamespace(this.parsedXML.rollname)) {
|
|
43
|
+
return new basic_1.UnknownType(this.parsedXML.rollname + " not found");
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return new basic_1.VoidType(this.parsedXML.rollname);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return new basic_1.UnknownType("Parsing error");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
parse() {
|
|
54
|
+
var _a;
|
|
55
|
+
if (this.parsedXML) {
|
|
56
|
+
return { updated: false, runtime: 0 };
|
|
57
|
+
}
|
|
58
|
+
const start = Date.now();
|
|
59
|
+
this.parsedXML = {};
|
|
60
|
+
const parsed = super.parseRaw2();
|
|
61
|
+
if (parsed === undefined
|
|
62
|
+
|| parsed.abapGit === undefined
|
|
63
|
+
|| parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
|
|
64
|
+
return { updated: false, runtime: 0 };
|
|
65
|
+
}
|
|
66
|
+
this.parsedXML.rollname = (_a = parsed.abapGit["asx:abap"]["asx:values"].AUTHX) === null || _a === void 0 ? void 0 : _a.ROLLNAME;
|
|
67
|
+
const end = Date.now();
|
|
68
|
+
return { updated: true, runtime: end - start };
|
|
69
|
+
}
|
|
19
70
|
}
|
|
20
71
|
exports.AuthorizationCheckField = AuthorizationCheckField;
|
|
21
72
|
//# sourceMappingURL=authorization_check_field.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LockObject = void 0;
|
|
4
|
+
const basic_1 = require("../abap/types/basic");
|
|
4
5
|
const ddic_1 = require("../ddic");
|
|
5
6
|
const _abstract_object_1 = require("./_abstract_object");
|
|
6
7
|
class LockObject extends _abstract_object_1.AbstractObject {
|
|
@@ -13,23 +14,37 @@ class LockObject extends _abstract_object_1.AbstractObject {
|
|
|
13
14
|
allowNamespace: true,
|
|
14
15
|
};
|
|
15
16
|
}
|
|
17
|
+
setDirty() {
|
|
18
|
+
this.parsedXML = undefined;
|
|
19
|
+
super.setDirty();
|
|
20
|
+
}
|
|
16
21
|
getPrimaryTable() {
|
|
17
22
|
var _a;
|
|
18
23
|
this.parse();
|
|
19
24
|
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.primaryTable;
|
|
20
25
|
}
|
|
21
26
|
parseType(reg) {
|
|
22
|
-
var _a
|
|
27
|
+
var _a;
|
|
23
28
|
this.parse();
|
|
24
29
|
const references = [];
|
|
25
30
|
const ddic = new ddic_1.DDIC(reg);
|
|
26
31
|
if ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.primaryTable) {
|
|
27
|
-
const found = ddic.lookupTableOrView2(
|
|
32
|
+
const found = ddic.lookupTableOrView2(this.parsedXML.primaryTable);
|
|
28
33
|
if (found) {
|
|
29
34
|
references.push({ object: found });
|
|
35
|
+
reg.getDDICReferences().setUsing(this, references);
|
|
36
|
+
return found.parseType(reg);
|
|
30
37
|
}
|
|
38
|
+
else if (ddic.inErrorNamespace(this.parsedXML.primaryTable)) {
|
|
39
|
+
return new basic_1.UnknownType(this.parsedXML.primaryTable + " not found");
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return new basic_1.VoidType(this.parsedXML.primaryTable);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return new basic_1.UnknownType("Parsing error");
|
|
31
47
|
}
|
|
32
|
-
reg.getDDICReferences().setUsing(this, references);
|
|
33
48
|
}
|
|
34
49
|
parse() {
|
|
35
50
|
var _a, _b;
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MaintenanceAndTransportObject = void 0;
|
|
4
|
+
const basic_1 = require("../abap/types/basic");
|
|
5
|
+
const ddic_1 = require("../ddic");
|
|
4
6
|
const _abstract_object_1 = require("./_abstract_object");
|
|
5
7
|
class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
|
|
6
|
-
constructor() {
|
|
7
|
-
super(...arguments);
|
|
8
|
-
this.area = undefined;
|
|
9
|
-
}
|
|
10
8
|
setDirty() {
|
|
11
9
|
super.setDirty();
|
|
12
|
-
this.
|
|
10
|
+
this.parsedXML = undefined;
|
|
13
11
|
}
|
|
14
12
|
getType() {
|
|
15
13
|
return "TOBJ";
|
|
@@ -25,21 +23,64 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
|
|
|
25
23
|
};
|
|
26
24
|
}
|
|
27
25
|
getArea() {
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
var _a;
|
|
27
|
+
this.parse();
|
|
28
|
+
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.area;
|
|
29
|
+
}
|
|
30
|
+
getObjectName() {
|
|
31
|
+
var _a;
|
|
32
|
+
this.parse();
|
|
33
|
+
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.objectName;
|
|
34
|
+
}
|
|
35
|
+
getObjectType() {
|
|
36
|
+
var _a;
|
|
37
|
+
this.parse();
|
|
38
|
+
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.objectType;
|
|
39
|
+
}
|
|
40
|
+
parseType(reg) {
|
|
41
|
+
var _a, _b, _c;
|
|
42
|
+
this.parse();
|
|
43
|
+
const references = [];
|
|
44
|
+
const ddic = new ddic_1.DDIC(reg);
|
|
45
|
+
if (((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.objectName) && this.parsedXML.objectType === "S") {
|
|
46
|
+
const found = ddic.lookupTableOrView2(this.parsedXML.objectName);
|
|
47
|
+
if (found) {
|
|
48
|
+
references.push({ object: found });
|
|
49
|
+
reg.getDDICReferences().setUsing(this, references);
|
|
50
|
+
return found.parseType(reg);
|
|
51
|
+
}
|
|
52
|
+
else if (ddic.inErrorNamespace(this.parsedXML.objectName)) {
|
|
53
|
+
return new basic_1.UnknownType(this.parsedXML.objectName + " not found");
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return new basic_1.VoidType(this.parsedXML.objectName);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.objectType) !== "S" && ((_c = this.parsedXML) === null || _c === void 0 ? void 0 : _c.objectName)) {
|
|
60
|
+
return new basic_1.VoidType(this.parsedXML.objectName);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return new basic_1.UnknownType("Parsing error");
|
|
30
64
|
}
|
|
31
|
-
return this.area;
|
|
32
65
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (this.
|
|
36
|
-
return;
|
|
66
|
+
parse() {
|
|
67
|
+
var _a, _b, _c, _d;
|
|
68
|
+
if (this.parsedXML) {
|
|
69
|
+
return { updated: false, runtime: 0 };
|
|
37
70
|
}
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
71
|
+
const start = Date.now();
|
|
72
|
+
this.parsedXML = {};
|
|
73
|
+
const parsed = super.parseRaw2();
|
|
74
|
+
if (parsed === undefined
|
|
75
|
+
|| parsed.abapGit === undefined
|
|
76
|
+
|| parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
|
|
77
|
+
return { updated: false, runtime: 0 };
|
|
42
78
|
}
|
|
79
|
+
this.parsedXML.area = (_b = (_a = parsed.abapGit["asx:abap"]["asx:values"].TOBJ) === null || _a === void 0 ? void 0 : _a.TVDIR) === null || _b === void 0 ? void 0 : _b.AREA;
|
|
80
|
+
this.parsedXML.objectName = (_c = parsed.abapGit["asx:abap"]["asx:values"].OBJH) === null || _c === void 0 ? void 0 : _c.OBJECTNAME;
|
|
81
|
+
this.parsedXML.objectType = (_d = parsed.abapGit["asx:abap"]["asx:values"].OBJH) === null || _d === void 0 ? void 0 : _d.OBJECTTYPE;
|
|
82
|
+
const end = Date.now();
|
|
83
|
+
return { updated: true, runtime: end - start };
|
|
43
84
|
}
|
|
44
85
|
}
|
|
45
86
|
exports.MaintenanceAndTransportObject = MaintenanceAndTransportObject;
|
package/build/src/registry.js
CHANGED
|
@@ -40,6 +40,9 @@ class CheckDDIC {
|
|
|
40
40
|
|| obj instanceof Objects.Domain
|
|
41
41
|
|| obj instanceof Objects.Table
|
|
42
42
|
|| obj instanceof Objects.View
|
|
43
|
+
|| obj instanceof Objects.AuthorizationCheckField
|
|
44
|
+
|| obj instanceof Objects.LockObject
|
|
45
|
+
|| obj instanceof Objects.MaintenanceAndTransportObject
|
|
43
46
|
|| obj instanceof Objects.TableType) {
|
|
44
47
|
found = obj.parseType(this.reg);
|
|
45
48
|
}
|