@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.
@@ -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): void;
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 area;
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
- private parseXML;
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, _b;
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((_b = this.parsedXML) === null || _b === void 0 ? void 0 : _b.primaryTable);
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.area = undefined;
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
- if (this.area === undefined) {
29
- this.parseXML();
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
- parseXML() {
35
- if (this.getFiles().length === 0) {
36
- return;
66
+ parse() {
67
+ var _a, _b, _c, _d;
68
+ if (this.parsedXML) {
69
+ return { updated: false, runtime: 0 };
37
70
  }
38
- const xml = this.getFiles()[0].getRaw();
39
- const result = xml.match(/<AREA>([\w/]+)<\/AREA>/);
40
- if (result) {
41
- this.area = result[1];
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;
@@ -63,7 +63,7 @@ class Registry {
63
63
  }
64
64
  static abaplintVersion() {
65
65
  // magic, see build script "version.sh"
66
- return "2.94.19";
66
+ return "2.94.21";
67
67
  }
68
68
  getDDICReferences() {
69
69
  return this.references;
@@ -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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.94.19",
3
+ "version": "2.94.21",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",