@abaplint/cli 2.93.51 → 2.93.53

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.
Files changed (2) hide show
  1. package/build/cli.js +11 -11
  2. package/package.json +4 -4
package/build/cli.js CHANGED
@@ -3085,7 +3085,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
3085
3085
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3086
3086
 
3087
3087
  "use strict";
3088
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassDefinition = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass ClassDefinition {\r\n getMatcher() {\r\n const create = (0, combi_1.seq)(\"CREATE\", (0, combi_1.alt)(\"PUBLIC\", \"PROTECTED\", \"PRIVATE\"));\r\n const level = (0, combi_1.alt)(\"CRITICAL\", \"HARMLESS\", \"DANGEROUS\");\r\n const risk = (0, combi_1.seq)(\"RISK LEVEL\", level);\r\n const time = (0, combi_1.alt)(\"LONG\", \"MEDIUM\", \"SHORT\");\r\n const duration = (0, combi_1.seq)(\"DURATION\", time);\r\n const blah = (0, combi_1.per)(expressions_1.ClassGlobal, expressions_1.ClassFinal, \"ABSTRACT\", (0, combi_1.seq)(\"INHERITING FROM\", expressions_1.SuperClassName), create, \"FOR TESTING\", risk, \"SHARED MEMORY ENABLED\", duration, (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)(\"FOR BEHAVIOR OF\", expressions_1.SimpleName)), expressions_1.ClassFriends);\r\n const def = (0, combi_1.seq)(\"DEFINITION\", (0, combi_1.opt)(blah));\r\n return (0, combi_1.seq)(\"CLASS\", expressions_1.ClassName, def);\r\n }\r\n}\r\nexports.ClassDefinition = ClassDefinition;\r\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition.js?");
3088
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ClassDefinition = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass ClassDefinition {\r\n getMatcher() {\r\n const create = (0, combi_1.seq)(\"CREATE\", (0, combi_1.alt)(\"PUBLIC\", \"PROTECTED\", \"PRIVATE\"));\r\n const level = (0, combi_1.alt)(\"CRITICAL\", \"HARMLESS\", \"DANGEROUS\");\r\n const risk = (0, combi_1.seq)(\"RISK LEVEL\", level);\r\n const time = (0, combi_1.alt)(\"LONG\", \"MEDIUM\", \"SHORT\");\r\n const duration = (0, combi_1.seq)(\"DURATION\", time);\r\n const blah = (0, combi_1.per)(expressions_1.ClassGlobal, expressions_1.ClassFinal, \"ABSTRACT\", (0, combi_1.seq)(\"INHERITING FROM\", expressions_1.SuperClassName), create, \"FOR TESTING\", risk, \"SHARED MEMORY ENABLED\", duration, (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)(\"FOR BEHAVIOR OF\", expressions_1.NamespaceSimpleName)), expressions_1.ClassFriends);\r\n const def = (0, combi_1.seq)(\"DEFINITION\", (0, combi_1.opt)(blah));\r\n return (0, combi_1.seq)(\"CLASS\", expressions_1.ClassName, def);\r\n }\r\n}\r\nexports.ClassDefinition = ClassDefinition;\r\n//# sourceMappingURL=class_definition.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/class_definition.js?");
3089
3089
 
3090
3090
  /***/ }),
3091
3091
 
@@ -3195,7 +3195,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
3195
3195
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3196
3196
 
3197
3197
  "use strict";
3198
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CommitEntities = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass CommitEntities {\r\n getMatcher() {\r\n const s = (0, combi_1.seq)(\"COMMIT ENTITIES\", (0, combi_1.optPrio)(\"IN SIMULATION MODE\"), (0, combi_1.star)((0, combi_1.seq)(\"RESPONSE OF\", expressions_1.SimpleName, \"FAILED\", expressions_1.Target, \"REPORTED\", expressions_1.Target)));\r\n return (0, combi_1.ver)(version_1.Version.v754, s);\r\n }\r\n}\r\nexports.CommitEntities = CommitEntities;\r\n//# sourceMappingURL=commit_entities.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit_entities.js?");
3198
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.CommitEntities = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass CommitEntities {\r\n getMatcher() {\r\n const s = (0, combi_1.seq)(\"COMMIT ENTITIES\", (0, combi_1.optPrio)(\"IN SIMULATION MODE\"), (0, combi_1.star)((0, combi_1.seq)(\"RESPONSE OF\", expressions_1.NamespaceSimpleName, \"FAILED\", expressions_1.Target, \"REPORTED\", expressions_1.Target)));\r\n return (0, combi_1.ver)(version_1.Version.v754, s);\r\n }\r\n}\r\nexports.CommitEntities = CommitEntities;\r\n//# sourceMappingURL=commit_entities.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/commit_entities.js?");
3199
3199
 
3200
3200
  /***/ }),
3201
3201
 
@@ -4064,7 +4064,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
4064
4064
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4065
4065
 
4066
4066
  "use strict";
4067
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Free = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass Free {\r\n getMatcher() {\r\n const ret = (0, combi_1.seq)(\"FREE\", expressions_1.Target);\r\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\r\n }\r\n}\r\nexports.Free = Free;\r\n//# sourceMappingURL=free.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free.js?");
4067
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Free = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass Free {\r\n getMatcher() {\r\n const ret = (0, combi_1.seq)(\"FREE\", expressions_1.Target);\r\n return ret;\r\n }\r\n}\r\nexports.Free = Free;\r\n//# sourceMappingURL=free.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/free.js?");
4068
4068
 
4069
4069
  /***/ }),
4070
4070
 
@@ -4592,7 +4592,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
4592
4592
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4593
4593
 
4594
4594
  "use strict";
4595
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MethodDef = void 0;\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass MethodDef {\r\n getMatcher() {\r\n const def = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)(\"DEFAULT\", (0, combi_1.altPrio)(\"FAIL\", \"IGNORE\")));\r\n const parameters = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)(\"FINAL\", def, expressions_1.Abstract)), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefChanging), (0, combi_1.optPrio)(expressions_1.MethodDefReturning), (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));\r\n const testing = (0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), \"FOR TESTING\", (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));\r\n // todo, this is only from version something\r\n const tableFunction = (0, combi_1.seq)(\"TABLE FUNCTION\", (0, combi_1.regex)(/^\\w+?$/));\r\n // todo, this is only from version something\r\n const ddl = \"DDL OBJECT OPTIONS CDS SESSION CLIENT REQUIRED\";\r\n const behavior = (0, combi_1.altPrio)((0, combi_1.seq)(\"VALIDATE ON SAVE IMPORTING\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName), (0, combi_1.seq)(\"MODIFY IMPORTING\", expressions_1.MethodParamName, \"FOR ACTION\", expressions_1.TypeName, \"RESULT\", expressions_1.MethodParamName), (0, combi_1.seq)(\"FEATURES IMPORTING\", expressions_1.MethodParamName, \"REQUEST\", expressions_1.NamespaceSimpleName, \"FOR\", expressions_1.NamespaceSimpleName, \"RESULT\", expressions_1.MethodParamName), (0, combi_1.seq)(\"DETERMINE ON MODIFY IMPORTING\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName));\r\n // todo, this is only from version something\r\n const amdp = (0, combi_1.seq)(\"AMDP OPTIONS CDS SESSION CLIENT CURRENT\", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));\r\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)(\"CLASS-METHODS\", \"METHODS\"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)(\"FOR\", (0, combi_1.alt)(tableFunction, ddl, behavior)), amdp, \"NOT AT END OF MODE\", (0, combi_1.optPrio)(expressions_1.Redefinition)));\r\n return ret;\r\n }\r\n}\r\nexports.MethodDef = MethodDef;\r\n//# sourceMappingURL=method_def.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_def.js?");
4595
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.MethodDef = void 0;\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass MethodDef {\r\n getMatcher() {\r\n const def = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)(\"DEFAULT\", (0, combi_1.altPrio)(\"FAIL\", \"IGNORE\")));\r\n const parameters = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)(\"FINAL\", def, expressions_1.Abstract)), (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefChanging), (0, combi_1.optPrio)(expressions_1.MethodDefReturning), (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));\r\n const testing = (0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), \"FOR TESTING\", (0, combi_1.optPrio)((0, combi_1.altPrio)(expressions_1.MethodDefRaising, expressions_1.MethodDefExceptions)));\r\n // todo, this is only from version something\r\n const tableFunction = (0, combi_1.seq)(\"TABLE FUNCTION\", (0, combi_1.regex)(/^\\w+?$/));\r\n // todo, this is only from version something\r\n const ddl = \"DDL OBJECT OPTIONS CDS SESSION CLIENT REQUIRED\";\r\n const behavior = (0, combi_1.altPrio)((0, combi_1.seq)(\"VALIDATE ON SAVE IMPORTING\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName), (0, combi_1.seq)(\"MODIFY IMPORTING\", expressions_1.MethodParamName, \"FOR ACTION\", expressions_1.TypeName, \"RESULT\", expressions_1.MethodParamName), (0, combi_1.seq)(\"MODIFY IMPORTING\", expressions_1.MethodParamName, \"FOR CREATE\", expressions_1.TypeName), (0, combi_1.seq)(\"MODIFY IMPORTING\", expressions_1.MethodParamName, \"FOR UPDATE\", expressions_1.TypeName), (0, combi_1.seq)(\"READ IMPORTING\", expressions_1.MethodParamName, \"FOR READ\", expressions_1.TypeName, \"RESULT\", expressions_1.MethodParamName), (0, combi_1.seq)(\"FEATURES IMPORTING\", expressions_1.MethodParamName, \"REQUEST\", expressions_1.NamespaceSimpleName, \"FOR\", expressions_1.NamespaceSimpleName, \"RESULT\", expressions_1.MethodParamName), (0, combi_1.seq)(\"DETERMINE ON MODIFY IMPORTING\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName), (0, combi_1.seq)(\"DETERMINE ON SAVE IMPORTING\", expressions_1.MethodParamName, \"FOR\", expressions_1.TypeName));\r\n // todo, this is only from version something\r\n const amdp = (0, combi_1.seq)(\"AMDP OPTIONS CDS SESSION CLIENT CURRENT\", (0, combi_1.optPrio)(expressions_1.MethodDefImporting), (0, combi_1.optPrio)(expressions_1.MethodDefExporting), (0, combi_1.optPrio)(expressions_1.MethodDefRaising));\r\n const ret = (0, combi_1.seq)((0, combi_1.altPrio)(\"CLASS-METHODS\", \"METHODS\"), expressions_1.MethodName, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(expressions_1.Abstract), expressions_1.EventHandler), parameters, testing, (0, combi_1.seq)(\"FOR\", (0, combi_1.alt)(tableFunction, ddl, behavior)), amdp, \"NOT AT END OF MODE\", (0, combi_1.optPrio)(expressions_1.Redefinition)));\r\n return ret;\r\n }\r\n}\r\nexports.MethodDef = MethodDef;\r\n//# sourceMappingURL=method_def.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/method_def.js?");
4596
4596
 
4597
4597
  /***/ }),
4598
4598
 
@@ -4625,7 +4625,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
4625
4625
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4626
4626
 
4627
4627
  "use strict";
4628
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ModifyEntities = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass ModifyEntities {\r\n getMatcher() {\r\n const fieldsWith = (0, combi_1.seq)(\"FIELDS (\", (0, combi_1.plus)(expressions_1.SimpleName), \") WITH\", expressions_1.Source);\r\n const operation = (0, combi_1.alt)((0, combi_1.seq)(\"UPDATE SET FIELDS WITH\", expressions_1.Source), (0, combi_1.seq)(\"UPDATE\", fieldsWith), (0, combi_1.seq)(\"DELETE FROM\", expressions_1.Source), (0, combi_1.seq)(\"EXECUTE\", expressions_1.SimpleName, \"FROM\", expressions_1.Source), (0, combi_1.seq)(\"CREATE\", (0, combi_1.optPrio)(\"AUTO FILL CID\"), fieldsWith));\r\n const s = (0, combi_1.seq)(\"MODIFY ENTITIES OF\", expressions_1.SimpleName, (0, combi_1.opt)(\"IN LOCAL MODE\"), \"ENTITY\", expressions_1.SimpleName, operation, (0, combi_1.optPrio)((0, combi_1.seq)(\"MAPPED\", expressions_1.Target)), (0, combi_1.per)((0, combi_1.seq)(\"FAILED\", expressions_1.Target), (0, combi_1.seq)(\"RESULT\", expressions_1.Target), (0, combi_1.seq)(\"REPORTED\", expressions_1.Target)));\r\n return (0, combi_1.ver)(version_1.Version.v754, s);\r\n }\r\n}\r\nexports.ModifyEntities = ModifyEntities;\r\n//# sourceMappingURL=modify_entities.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_entities.js?");
4628
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ModifyEntities = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass ModifyEntities {\r\n getMatcher() {\r\n const fieldsWith = (0, combi_1.seq)(\"FIELDS (\", (0, combi_1.plus)(expressions_1.SimpleName), \") WITH\", expressions_1.Source);\r\n const operation = (0, combi_1.alt)((0, combi_1.seq)(\"UPDATE SET FIELDS WITH\", expressions_1.Source), (0, combi_1.seq)(\"CREATE SET FIELDS WITH\", expressions_1.Source), (0, combi_1.seq)(\"UPDATE\", fieldsWith), (0, combi_1.seq)(\"DELETE FROM\", expressions_1.Source), (0, combi_1.seq)(\"EXECUTE\", expressions_1.SimpleName, \"FROM\", expressions_1.Source), (0, combi_1.seq)(\"CREATE\", (0, combi_1.optPrio)(\"AUTO FILL CID\"), fieldsWith));\r\n const s = (0, combi_1.seq)(\"MODIFY ENTITIES OF\", expressions_1.NamespaceSimpleName, (0, combi_1.opt)(\"IN LOCAL MODE\"), \"ENTITY\", expressions_1.SimpleName, operation, (0, combi_1.per)((0, combi_1.seq)(\"FAILED\", expressions_1.Target), (0, combi_1.seq)(\"RESULT\", expressions_1.Target), (0, combi_1.seq)(\"MAPPED\", expressions_1.Target), (0, combi_1.seq)(\"REPORTED\", expressions_1.Target)));\r\n return (0, combi_1.ver)(version_1.Version.v754, s);\r\n }\r\n}\r\nexports.ModifyEntities = ModifyEntities;\r\n//# sourceMappingURL=modify_entities.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/modify_entities.js?");
4629
4629
 
4630
4630
  /***/ }),
4631
4631
 
@@ -4779,7 +4779,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
4779
4779
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4780
4780
 
4781
4781
  "use strict";
4782
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Overlay = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nclass Overlay {\r\n getMatcher() {\r\n const only = (0, combi_1.seq)(\"ONLY\", expressions_1.Source);\r\n const ret = (0, combi_1.seq)(\"OVERLAY\", expressions_1.Target, \"WITH\", expressions_1.Source, (0, combi_1.opt)(only));\r\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\r\n }\r\n}\r\nexports.Overlay = Overlay;\r\n//# sourceMappingURL=overlay.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/overlay.js?");
4782
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Overlay = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass Overlay {\r\n getMatcher() {\r\n const only = (0, combi_1.seq)(\"ONLY\", expressions_1.Source);\r\n const ret = (0, combi_1.seq)(\"OVERLAY\", expressions_1.Target, \"WITH\", expressions_1.Source, (0, combi_1.opt)(only));\r\n return ret;\r\n }\r\n}\r\nexports.Overlay = Overlay;\r\n//# sourceMappingURL=overlay.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/overlay.js?");
4783
4783
 
4784
4784
  /***/ }),
4785
4785
 
@@ -4911,7 +4911,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
4911
4911
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4912
4912
 
4913
4913
  "use strict";
4914
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Raise = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass Raise {\r\n getMatcher() {\r\n const mess = (0, combi_1.seq)(\"MESSAGE\", expressions_1.MessageSource, (0, combi_1.opt)(expressions_1.RaiseWith));\r\n const messid = (0, combi_1.seq)(\"MESSAGE ID\", expressions_1.Source, \"NUMBER\", (0, combi_1.altPrio)(expressions_1.MessageNumber, expressions_1.Source), (0, combi_1.optPrio)(expressions_1.RaiseWith));\r\n const exporting = (0, combi_1.seq)(\"EXPORTING\", expressions_1.ParameterListS);\r\n const from = (0, combi_1.seq)(\"TYPE\", expressions_1.ClassName, (0, combi_1.opt)((0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v750, (0, combi_1.alt)(mess, messid)), (0, combi_1.ver)(version_1.Version.v752, \"USING MESSAGE\"))), (0, combi_1.optPrio)(exporting));\r\n const clas = (0, combi_1.seq)((0, combi_1.optPrio)(\"RESUMABLE\"), \"EXCEPTION\", (0, combi_1.altPrio)(from, (0, combi_1.ver)(version_1.Version.v752, expressions_1.Source), expressions_1.SimpleSource2));\r\n const ret = (0, combi_1.seq)(\"RAISE\", (0, combi_1.altPrio)(clas, expressions_1.ExceptionName));\r\n return ret;\r\n }\r\n}\r\nexports.Raise = Raise;\r\n//# sourceMappingURL=raise.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise.js?");
4914
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Raise = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass Raise {\r\n getMatcher() {\r\n const mess = (0, combi_1.seq)(\"MESSAGE\", expressions_1.MessageSource, (0, combi_1.opt)(expressions_1.RaiseWith));\r\n const messid = (0, combi_1.seq)(\"MESSAGE ID\", expressions_1.Source, \"NUMBER\", (0, combi_1.altPrio)(expressions_1.MessageNumber, expressions_1.Source), (0, combi_1.optPrio)(expressions_1.RaiseWith));\r\n const exporting = (0, combi_1.seq)(\"EXPORTING\", expressions_1.ParameterListS);\r\n const from = (0, combi_1.seq)(\"TYPE\", expressions_1.ClassName, (0, combi_1.opt)((0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v750, (0, combi_1.alt)(mess, messid)), (0, combi_1.ver)(version_1.Version.v752, \"USING MESSAGE\"))), (0, combi_1.optPrio)(exporting));\r\n const pre = (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.optPrio)(\"RESUMABLE\"), \"EXCEPTION\"), \"SHORTDUMP\");\r\n const clas = (0, combi_1.seq)(pre, (0, combi_1.altPrio)(from, (0, combi_1.ver)(version_1.Version.v752, expressions_1.Source), expressions_1.SimpleSource2));\r\n const ret = (0, combi_1.seq)(\"RAISE\", (0, combi_1.altPrio)(clas, expressions_1.ExceptionName));\r\n return ret;\r\n }\r\n}\r\nexports.Raise = Raise;\r\n//# sourceMappingURL=raise.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/raise.js?");
4915
4915
 
4916
4916
  /***/ }),
4917
4917
 
@@ -4955,7 +4955,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
4955
4955
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
4956
4956
 
4957
4957
  "use strict";
4958
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReadEntities = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nclass ReadEntities {\r\n getMatcher() {\r\n const s = (0, combi_1.seq)(\"READ ENTITIES OF\", expressions_1.SimpleName, \"IN LOCAL MODE\", \"ENTITY\", expressions_1.SimpleName, (0, combi_1.opt)((0, combi_1.seq)(\"BY\", expressions_1.AssociationName)), \"FIELDS\", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.plus)(expressions_1.SimpleName), (0, combi_1.tok)(tokens_1.WParenRightW), \"WITH\", expressions_1.Source, \"RESULT\", expressions_1.Target, (0, combi_1.optPrio)((0, combi_1.seq)(\"LINK\", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)(\"FAILED\", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)(\"REPORTED\", expressions_1.Target)));\r\n return (0, combi_1.ver)(version_1.Version.v754, s);\r\n }\r\n}\r\nexports.ReadEntities = ReadEntities;\r\n//# sourceMappingURL=read_entities.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_entities.js?");
4958
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ReadEntities = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ \"./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js\");\r\nclass ReadEntities {\r\n getMatcher() {\r\n const from = (0, combi_1.seq)(\"FROM\", expressions_1.Source);\r\n const fields = (0, combi_1.seq)(\"FIELDS\", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.plus)(expressions_1.SimpleName), (0, combi_1.tok)(tokens_1.WParenRightW), \"WITH\", expressions_1.Source);\r\n const s = (0, combi_1.seq)(\"READ ENTITIES OF\", expressions_1.NamespaceSimpleName, \"IN LOCAL MODE\", \"ENTITY\", expressions_1.SimpleName, (0, combi_1.opt)((0, combi_1.seq)(\"BY\", expressions_1.AssociationName)), (0, combi_1.alt)(fields, from), \"RESULT\", expressions_1.Target, (0, combi_1.optPrio)((0, combi_1.seq)(\"LINK\", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)(\"FAILED\", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.seq)(\"REPORTED\", expressions_1.Target)));\r\n return (0, combi_1.ver)(version_1.Version.v754, s);\r\n }\r\n}\r\nexports.ReadEntities = ReadEntities;\r\n//# sourceMappingURL=read_entities.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/read_entities.js?");
4959
4959
 
4960
4960
  /***/ }),
4961
4961
 
@@ -5901,7 +5901,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
5901
5901
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5902
5902
 
5903
5903
  "use strict";
5904
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Wait = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass Wait {\r\n getMatcher() {\r\n const up = (0, combi_1.seq)(\"UP TO\", expressions_1.Source, \"SECONDS\");\r\n const channels = \"MESSAGING CHANNELS\";\r\n const push = (0, combi_1.ver)(version_1.Version.v750, \"PUSH CHANNELS\", version_1.Version.OpenABAP);\r\n const tasks = \"ASYNCHRONOUS TASKS\";\r\n const type = (0, combi_1.seq)(\"FOR\", (0, combi_1.per)(channels, push, tasks));\r\n const until = (0, combi_1.seq)((0, combi_1.opt)(type), \"UNTIL\", expressions_1.Cond, (0, combi_1.opt)(up));\r\n const ret = (0, combi_1.seq)(\"WAIT\", (0, combi_1.alt)(until, up));\r\n return (0, combi_1.verNot)(version_1.Version.Cloud, ret);\r\n }\r\n}\r\nexports.Wait = Wait;\r\n//# sourceMappingURL=wait.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js?");
5904
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Wait = void 0;\r\nconst combi_1 = __webpack_require__(/*! ../combi */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js\");\r\nconst version_1 = __webpack_require__(/*! ../../../version */ \"./node_modules/@abaplint/core/build/src/version.js\");\r\nconst expressions_1 = __webpack_require__(/*! ../expressions */ \"./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js\");\r\nclass Wait {\r\n getMatcher() {\r\n const up = (0, combi_1.seq)(\"UP TO\", expressions_1.Source, \"SECONDS\");\r\n const channels = \"MESSAGING CHANNELS\";\r\n const push = (0, combi_1.ver)(version_1.Version.v750, \"PUSH CHANNELS\", version_1.Version.OpenABAP);\r\n const tasks = \"ASYNCHRONOUS TASKS\";\r\n const type = (0, combi_1.seq)(\"FOR\", (0, combi_1.per)(channels, push, tasks));\r\n const until = (0, combi_1.seq)((0, combi_1.opt)(type), \"UNTIL\", expressions_1.Cond, (0, combi_1.opt)(up));\r\n const ret = (0, combi_1.seq)(\"WAIT\", (0, combi_1.alt)(until, up));\r\n return ret;\r\n }\r\n}\r\nexports.Wait = Wait;\r\n//# sourceMappingURL=wait.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/abap/2_statements/statements/wait.js?");
5905
5905
 
5906
5906
  /***/ }),
5907
5907
 
@@ -11500,7 +11500,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
11500
11500
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
11501
11501
 
11502
11502
  "use strict";
11503
- eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Registry = void 0;\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nconst find_global_definitions_1 = __webpack_require__(/*! ./abap/5_syntax/global_definitions/find_global_definitions */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nconst ddic_references_1 = __webpack_require__(/*! ./ddic_references */ \"./node_modules/@abaplint/core/build/src/ddic_references.js\");\nconst rules_runner_1 = __webpack_require__(/*! ./rules_runner */ \"./node_modules/@abaplint/core/build/src/rules_runner.js\");\n// todo, this should really be an instance in case there are multiple Registry'ies\nclass ParsingPerformance {\n static clear() {\n this.results = [];\n this.lexing = 0;\n this.statements = 0;\n this.structure = 0;\n }\n static push(obj, result) {\n if (result.runtimeExtra) {\n this.lexing += result.runtimeExtra.lexing;\n this.statements += result.runtimeExtra.statements;\n this.structure += result.runtimeExtra.structure;\n }\n if (result.runtime < 100) {\n return;\n }\n if (this.results === undefined) {\n this.results = [];\n }\n let extra = \"\";\n if (result.runtimeExtra) {\n extra = `\\t(lexing: ${result.runtimeExtra.lexing}ms, statements: ${result.runtimeExtra.statements}ms, structure: ${result.runtimeExtra.structure}ms)`;\n }\n this.results.push({\n runtime: result.runtime,\n extra,\n name: obj.getType() + \" \" + obj.getName(),\n });\n }\n static output() {\n const MAX = 10;\n this.results.sort((a, b) => { return b.runtime - a.runtime; });\n for (let i = 0; i < MAX; i++) {\n const row = this.results[i];\n if (row === undefined) {\n break;\n }\n process.stderr.write(`\\t${row.runtime}ms\\t${row.name} ${row.extra}\\n`);\n }\n process.stderr.write(`\\tTotal lexing: ${this.lexing}ms\\n`);\n process.stderr.write(`\\tTotal statements: ${this.statements}ms\\n`);\n process.stderr.write(`\\tTotal structure: ${this.structure}ms\\n`);\n }\n}\n///////////////////////////////////////////////////////////////////////////////////////////////\nclass Registry {\n constructor(conf) {\n this.objects = {};\n this.objectsByType = {};\n this.dependencies = {};\n this.conf = conf ? conf : config_1.Config.getDefault();\n this.references = new ddic_references_1.DDICReferences();\n }\n static abaplintVersion() {\n // magic, see build script \"version.sh\"\n return \"2.93.51\";\n }\n getDDICReferences() {\n return this.references;\n }\n *getObjects() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n yield this.objects[name][type];\n }\n }\n }\n *getObjectsByType(type) {\n for (const name in this.objectsByType[type] || []) {\n yield this.objectsByType[type][name];\n }\n }\n *getFiles() {\n for (const obj of this.getObjects()) {\n for (const file of obj.getFiles()) {\n yield file;\n }\n }\n }\n getFirstObject() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n return this.objects[name][type];\n }\n }\n return undefined;\n }\n getObjectCount(skipDependencies = true) {\n let res = 0;\n for (const o of this.getObjects()) {\n if (skipDependencies === true && this.isDependency(o)) {\n continue;\n }\n res = res + 1;\n }\n return res;\n }\n getFileByName(filename) {\n const upper = filename.toUpperCase();\n for (const o of this.getObjects()) {\n for (const f of o.getFiles()) {\n if (f.getFilename().toUpperCase() === upper) {\n return f;\n }\n }\n }\n return undefined;\n }\n getObject(type, name) {\n if (type === undefined || name === undefined) {\n return undefined;\n }\n const searchName = name.toUpperCase();\n if (this.objects[searchName]) {\n return this.objects[searchName][type];\n }\n return undefined;\n }\n getConfig() {\n return this.conf;\n }\n // assumption: Config is immutable, and can only be changed via this method\n setConfig(conf) {\n for (const obj of this.getObjects()) {\n obj.setDirty();\n }\n this.conf = conf;\n return this;\n }\n inErrorNamespace(name) {\n // todo: performance? cache regexp?\n const reg = new RegExp(this.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n return reg.test(name);\n }\n addFile(file) {\n return this.addFiles([file]);\n }\n updateFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.updateFile(file);\n return this;\n }\n removeFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.removeFile(file);\n if (obj.getFiles().length === 0) {\n this.references.clear(obj);\n this.removeObject(obj);\n }\n return this;\n }\n _addFiles(files, dependency) {\n var _a;\n const globalExclude = ((_a = this.conf.getGlobal().exclude) !== null && _a !== void 0 ? _a : [])\n .map(pattern => new RegExp(pattern, \"i\"));\n for (const f of files) {\n const filename = f.getFilename();\n const isNotAbapgitFile = filename.split(\".\").length <= 2;\n if (isNotAbapgitFile || excludeHelper_1.ExcludeHelper.isExcluded(filename, globalExclude)) {\n continue;\n }\n let found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n if (dependency === false && found && this.isDependency(found)) {\n this.removeDependency(found);\n found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n }\n found.addFile(f);\n }\n return this;\n }\n addFiles(files) {\n this._addFiles(files, false);\n return this;\n }\n addDependencies(files) {\n for (const f of files) {\n this.addDependency(f);\n }\n return this;\n }\n addDependency(file) {\n var _a;\n const type = (_a = file.getObjectType()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (type === undefined) {\n return this;\n }\n const name = file.getObjectName().toUpperCase();\n if (this.dependencies[type] === undefined) {\n this.dependencies[type] = {};\n }\n this.dependencies[type][name] = true;\n this._addFiles([file], true);\n return this;\n }\n removeDependency(obj) {\n var _a;\n (_a = this.dependencies[obj.getType()]) === null || _a === void 0 ? true : delete _a[obj.getName()];\n this.removeObject(obj);\n }\n isDependency(obj) {\n var _a;\n return ((_a = this.dependencies[obj.getType()]) === null || _a === void 0 ? void 0 : _a[obj.getName()]) === true;\n }\n isFileDependency(filename) {\n var _a, _b;\n const f = this.getFileByName(filename);\n if (f === undefined) {\n return false;\n }\n const type = (_a = f.getObjectType()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (type === undefined) {\n return false;\n }\n const name = f.getObjectName().toUpperCase();\n return ((_b = this.dependencies[type]) === null || _b === void 0 ? void 0 : _b[name]) === true;\n }\n // assumption: the file is already in the registry\n findObjectForFile(file) {\n const filename = file.getFilename();\n for (const obj of this.getObjects()) {\n for (const ofile of obj.getFiles()) {\n if (ofile.getFilename() === filename) {\n return obj;\n }\n }\n }\n return undefined;\n }\n // todo, this will be changed to async sometime\n findIssues(input) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return new rules_runner_1.RulesRunner(this).runRules(this.getObjects(), input);\n }\n // todo, this will be changed to async sometime\n findIssuesObject(iobj) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return new rules_runner_1.RulesRunner(this).runRules([iobj]);\n }\n // todo, this will be changed to async sometime\n parse() {\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n for (const o of this.getObjects()) {\n this.parsePrivate(o);\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run();\n return this;\n }\n async parseAsync(input) {\n var _a, _b;\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(this.getObjectCount(false), \"Lexing and parsing\");\n for (const o of this.getObjects()) {\n await ((_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Lexing and parsing(\" + this.conf.getVersion() + \") - \" + o.getType() + \" \" + o.getName()));\n this.parsePrivate(o);\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n ParsingPerformance.output();\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run(input === null || input === void 0 ? void 0 : input.progress);\n return this;\n }\n //////////////////////////////////////////\n // todo, refactor, this is a mess, see where-used, a lot of the code should be in this method instead\n parsePrivate(input) {\n const config = this.getConfig();\n const result = input.parse(config.getVersion(), config.getSyntaxSetttings().globalMacros, this);\n ParsingPerformance.push(input, result);\n }\n isDirty() {\n for (const o of this.getObjects()) {\n const dirty = o.isDirty();\n if (dirty === true) {\n return true;\n }\n }\n return false;\n }\n findOrCreate(name, type) {\n try {\n return this.find(name, type);\n }\n catch (_a) {\n const newName = name.toUpperCase();\n const newType = type ? type : \"UNKNOWN\";\n const add = artifacts_objects_1.ArtifactsObjects.newObject(newName, newType);\n if (this.objects[newName] === undefined) {\n this.objects[newName] = {};\n }\n this.objects[newName][newType] = add;\n if (this.objectsByType[newType] === undefined) {\n this.objectsByType[newType] = {};\n }\n this.objectsByType[newType][newName] = add;\n return add;\n }\n }\n removeObject(remove) {\n if (remove === undefined) {\n return;\n }\n if (this.objects[remove.getName()][remove.getType()] === undefined) {\n throw new Error(\"removeObject: object not found\");\n }\n if (Object.keys(this.objects[remove.getName()]).length === 1) {\n delete this.objects[remove.getName()];\n }\n else {\n delete this.objects[remove.getName()][remove.getType()];\n }\n if (Object.keys(this.objectsByType[remove.getType()]).length === 1) {\n delete this.objectsByType[remove.getType()];\n }\n else {\n delete this.objectsByType[remove.getType()][remove.getName()];\n }\n }\n find(name, type) {\n const searchType = type ? type : \"UNKNOWN\";\n const searchName = name.toUpperCase();\n if (this.objects[searchName] !== undefined\n && this.objects[searchName][searchType]) {\n return this.objects[searchName][searchType];\n }\n throw new Error(\"find: object not found, \" + type + \" \" + name);\n }\n}\nexports.Registry = Registry;\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/registry.js?");
11503
+ eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Registry = void 0;\nconst config_1 = __webpack_require__(/*! ./config */ \"./node_modules/@abaplint/core/build/src/config.js\");\nconst artifacts_objects_1 = __webpack_require__(/*! ./artifacts_objects */ \"./node_modules/@abaplint/core/build/src/artifacts_objects.js\");\nconst find_global_definitions_1 = __webpack_require__(/*! ./abap/5_syntax/global_definitions/find_global_definitions */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/global_definitions/find_global_definitions.js\");\nconst excludeHelper_1 = __webpack_require__(/*! ./utils/excludeHelper */ \"./node_modules/@abaplint/core/build/src/utils/excludeHelper.js\");\nconst ddic_references_1 = __webpack_require__(/*! ./ddic_references */ \"./node_modules/@abaplint/core/build/src/ddic_references.js\");\nconst rules_runner_1 = __webpack_require__(/*! ./rules_runner */ \"./node_modules/@abaplint/core/build/src/rules_runner.js\");\n// todo, this should really be an instance in case there are multiple Registry'ies\nclass ParsingPerformance {\n static clear() {\n this.results = [];\n this.lexing = 0;\n this.statements = 0;\n this.structure = 0;\n }\n static push(obj, result) {\n if (result.runtimeExtra) {\n this.lexing += result.runtimeExtra.lexing;\n this.statements += result.runtimeExtra.statements;\n this.structure += result.runtimeExtra.structure;\n }\n if (result.runtime < 100) {\n return;\n }\n if (this.results === undefined) {\n this.results = [];\n }\n let extra = \"\";\n if (result.runtimeExtra) {\n extra = `\\t(lexing: ${result.runtimeExtra.lexing}ms, statements: ${result.runtimeExtra.statements}ms, structure: ${result.runtimeExtra.structure}ms)`;\n }\n this.results.push({\n runtime: result.runtime,\n extra,\n name: obj.getType() + \" \" + obj.getName(),\n });\n }\n static output() {\n const MAX = 10;\n this.results.sort((a, b) => { return b.runtime - a.runtime; });\n for (let i = 0; i < MAX; i++) {\n const row = this.results[i];\n if (row === undefined) {\n break;\n }\n process.stderr.write(`\\t${row.runtime}ms\\t${row.name} ${row.extra}\\n`);\n }\n process.stderr.write(`\\tTotal lexing: ${this.lexing}ms\\n`);\n process.stderr.write(`\\tTotal statements: ${this.statements}ms\\n`);\n process.stderr.write(`\\tTotal structure: ${this.structure}ms\\n`);\n }\n}\n///////////////////////////////////////////////////////////////////////////////////////////////\nclass Registry {\n constructor(conf) {\n this.objects = {};\n this.objectsByType = {};\n this.dependencies = {};\n this.conf = conf ? conf : config_1.Config.getDefault();\n this.references = new ddic_references_1.DDICReferences();\n }\n static abaplintVersion() {\n // magic, see build script \"version.sh\"\n return \"2.93.53\";\n }\n getDDICReferences() {\n return this.references;\n }\n *getObjects() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n yield this.objects[name][type];\n }\n }\n }\n *getObjectsByType(type) {\n for (const name in this.objectsByType[type] || []) {\n yield this.objectsByType[type][name];\n }\n }\n *getFiles() {\n for (const obj of this.getObjects()) {\n for (const file of obj.getFiles()) {\n yield file;\n }\n }\n }\n getFirstObject() {\n for (const name in this.objects) {\n for (const type in this.objects[name]) {\n return this.objects[name][type];\n }\n }\n return undefined;\n }\n getObjectCount(skipDependencies = true) {\n let res = 0;\n for (const o of this.getObjects()) {\n if (skipDependencies === true && this.isDependency(o)) {\n continue;\n }\n res = res + 1;\n }\n return res;\n }\n getFileByName(filename) {\n const upper = filename.toUpperCase();\n for (const o of this.getObjects()) {\n for (const f of o.getFiles()) {\n if (f.getFilename().toUpperCase() === upper) {\n return f;\n }\n }\n }\n return undefined;\n }\n getObject(type, name) {\n if (type === undefined || name === undefined) {\n return undefined;\n }\n const searchName = name.toUpperCase();\n if (this.objects[searchName]) {\n return this.objects[searchName][type];\n }\n return undefined;\n }\n getConfig() {\n return this.conf;\n }\n // assumption: Config is immutable, and can only be changed via this method\n setConfig(conf) {\n for (const obj of this.getObjects()) {\n obj.setDirty();\n }\n this.conf = conf;\n return this;\n }\n inErrorNamespace(name) {\n // todo: performance? cache regexp?\n const reg = new RegExp(this.getConfig().getSyntaxSetttings().errorNamespace, \"i\");\n return reg.test(name);\n }\n addFile(file) {\n return this.addFiles([file]);\n }\n updateFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.updateFile(file);\n return this;\n }\n removeFile(file) {\n const obj = this.find(file.getObjectName(), file.getObjectType());\n obj.removeFile(file);\n if (obj.getFiles().length === 0) {\n this.references.clear(obj);\n this.removeObject(obj);\n }\n return this;\n }\n _addFiles(files, dependency) {\n var _a;\n const globalExclude = ((_a = this.conf.getGlobal().exclude) !== null && _a !== void 0 ? _a : [])\n .map(pattern => new RegExp(pattern, \"i\"));\n for (const f of files) {\n const filename = f.getFilename();\n const isNotAbapgitFile = filename.split(\".\").length <= 2;\n if (isNotAbapgitFile || excludeHelper_1.ExcludeHelper.isExcluded(filename, globalExclude)) {\n continue;\n }\n let found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n if (dependency === false && found && this.isDependency(found)) {\n this.removeDependency(found);\n found = this.findOrCreate(f.getObjectName(), f.getObjectType());\n }\n found.addFile(f);\n }\n return this;\n }\n addFiles(files) {\n this._addFiles(files, false);\n return this;\n }\n addDependencies(files) {\n for (const f of files) {\n this.addDependency(f);\n }\n return this;\n }\n addDependency(file) {\n var _a;\n const type = (_a = file.getObjectType()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (type === undefined) {\n return this;\n }\n const name = file.getObjectName().toUpperCase();\n if (this.dependencies[type] === undefined) {\n this.dependencies[type] = {};\n }\n this.dependencies[type][name] = true;\n this._addFiles([file], true);\n return this;\n }\n removeDependency(obj) {\n var _a;\n (_a = this.dependencies[obj.getType()]) === null || _a === void 0 ? true : delete _a[obj.getName()];\n this.removeObject(obj);\n }\n isDependency(obj) {\n var _a;\n return ((_a = this.dependencies[obj.getType()]) === null || _a === void 0 ? void 0 : _a[obj.getName()]) === true;\n }\n isFileDependency(filename) {\n var _a, _b;\n const f = this.getFileByName(filename);\n if (f === undefined) {\n return false;\n }\n const type = (_a = f.getObjectType()) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n if (type === undefined) {\n return false;\n }\n const name = f.getObjectName().toUpperCase();\n return ((_b = this.dependencies[type]) === null || _b === void 0 ? void 0 : _b[name]) === true;\n }\n // assumption: the file is already in the registry\n findObjectForFile(file) {\n const filename = file.getFilename();\n for (const obj of this.getObjects()) {\n for (const ofile of obj.getFiles()) {\n if (ofile.getFilename() === filename) {\n return obj;\n }\n }\n }\n return undefined;\n }\n // todo, this will be changed to async sometime\n findIssues(input) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return new rules_runner_1.RulesRunner(this).runRules(this.getObjects(), input);\n }\n // todo, this will be changed to async sometime\n findIssuesObject(iobj) {\n if (this.isDirty() === true) {\n this.parse();\n }\n return new rules_runner_1.RulesRunner(this).runRules([iobj]);\n }\n // todo, this will be changed to async sometime\n parse() {\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n for (const o of this.getObjects()) {\n this.parsePrivate(o);\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run();\n return this;\n }\n async parseAsync(input) {\n var _a, _b;\n if (this.isDirty() === false) {\n return this;\n }\n ParsingPerformance.clear();\n (_a = input === null || input === void 0 ? void 0 : input.progress) === null || _a === void 0 ? void 0 : _a.set(this.getObjectCount(false), \"Lexing and parsing\");\n for (const o of this.getObjects()) {\n await ((_b = input === null || input === void 0 ? void 0 : input.progress) === null || _b === void 0 ? void 0 : _b.tick(\"Lexing and parsing(\" + this.conf.getVersion() + \") - \" + o.getType() + \" \" + o.getName()));\n this.parsePrivate(o);\n }\n if ((input === null || input === void 0 ? void 0 : input.outputPerformance) === true) {\n ParsingPerformance.output();\n }\n new find_global_definitions_1.FindGlobalDefinitions(this).run(input === null || input === void 0 ? void 0 : input.progress);\n return this;\n }\n //////////////////////////////////////////\n // todo, refactor, this is a mess, see where-used, a lot of the code should be in this method instead\n parsePrivate(input) {\n const config = this.getConfig();\n const result = input.parse(config.getVersion(), config.getSyntaxSetttings().globalMacros, this);\n ParsingPerformance.push(input, result);\n }\n isDirty() {\n for (const o of this.getObjects()) {\n const dirty = o.isDirty();\n if (dirty === true) {\n return true;\n }\n }\n return false;\n }\n findOrCreate(name, type) {\n try {\n return this.find(name, type);\n }\n catch (_a) {\n const newName = name.toUpperCase();\n const newType = type ? type : \"UNKNOWN\";\n const add = artifacts_objects_1.ArtifactsObjects.newObject(newName, newType);\n if (this.objects[newName] === undefined) {\n this.objects[newName] = {};\n }\n this.objects[newName][newType] = add;\n if (this.objectsByType[newType] === undefined) {\n this.objectsByType[newType] = {};\n }\n this.objectsByType[newType][newName] = add;\n return add;\n }\n }\n removeObject(remove) {\n if (remove === undefined) {\n return;\n }\n if (this.objects[remove.getName()][remove.getType()] === undefined) {\n throw new Error(\"removeObject: object not found\");\n }\n if (Object.keys(this.objects[remove.getName()]).length === 1) {\n delete this.objects[remove.getName()];\n }\n else {\n delete this.objects[remove.getName()][remove.getType()];\n }\n if (Object.keys(this.objectsByType[remove.getType()]).length === 1) {\n delete this.objectsByType[remove.getType()];\n }\n else {\n delete this.objectsByType[remove.getType()][remove.getName()];\n }\n }\n find(name, type) {\n const searchType = type ? type : \"UNKNOWN\";\n const searchName = name.toUpperCase();\n if (this.objects[searchName] !== undefined\n && this.objects[searchName][searchType]) {\n return this.objects[searchName][searchType];\n }\n throw new Error(\"find: object not found, \" + type + \" \" + name);\n }\n}\nexports.Registry = Registry;\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/registry.js?");
11504
11504
 
11505
11505
  /***/ }),
11506
11506
 
@@ -12886,7 +12886,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
12886
12886
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
12887
12887
 
12888
12888
  "use strict";
12889
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlowParameterPassing = exports.SlowParameterPassingConf = void 0;\r\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\r\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\r\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\r\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\r\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nclass SlowParameterPassingConf extends _basic_rule_config_1.BasicRuleConfig {\r\n}\r\nexports.SlowParameterPassingConf = SlowParameterPassingConf;\r\nclass SlowParameterPassing {\r\n constructor() {\r\n this.conf = new SlowParameterPassingConf();\r\n }\r\n getMetadata() {\r\n return {\r\n key: \"slow_parameter_passing\",\r\n title: \"Slow Parameter Passing\",\r\n shortDescription: `Detects slow pass by value passing for methods where parameter is not changed`,\r\n tags: [_irule_1.RuleTag.Performance],\r\n };\r\n }\r\n getConfig() {\r\n return this.conf;\r\n }\r\n setConfig(conf) {\r\n this.conf = conf;\r\n }\r\n initialize(reg) {\r\n this.reg = reg;\r\n return this;\r\n }\r\n run(obj) {\r\n const issues = [];\r\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\r\n return [];\r\n }\r\n const top = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop();\r\n const methods = this.listMethodNodes(top);\r\n for (const m of methods) {\r\n const vars = m.getData().vars;\r\n for (const v in vars) {\r\n const id = vars[v];\r\n if (id.getMeta().includes(\"pass_by_value\" /* IdentifierMeta.PassByValue */) === false) {\r\n continue;\r\n }\r\n const writes = this.listWritePositions(m, id);\r\n if (writes.length === 0) {\r\n const message = \"Parameter \" + id.getName() + \" passed by VALUE but not changed\";\r\n issues.push(issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.getConfig().severity));\r\n }\r\n }\r\n }\r\n return issues;\r\n }\r\n listWritePositions(node, id) {\r\n var _a, _b;\r\n const ret = [];\r\n for (const v of node.getData().references) {\r\n if (v.referenceType === _reference_1.ReferenceType.DataWriteReference\r\n && ((_a = v.resolved) === null || _a === void 0 ? void 0 : _a.getFilename()) === id.getFilename()\r\n && ((_b = v.resolved) === null || _b === void 0 ? void 0 : _b.getStart().equals(id.getStart()))) {\r\n ret.push(v.position.getStart());\r\n }\r\n }\r\n return ret;\r\n }\r\n listMethodNodes(node) {\r\n const ret = [];\r\n if (node.getIdentifier().stype === _scope_type_1.ScopeType.Method) {\r\n ret.push(node);\r\n }\r\n else {\r\n for (const c of node.getChildren()) {\r\n ret.push(...this.listMethodNodes(c));\r\n }\r\n }\r\n return ret;\r\n }\r\n}\r\nexports.SlowParameterPassing = SlowParameterPassing;\r\n//# sourceMappingURL=slow_parameter_passing.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/slow_parameter_passing.js?");
12889
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.SlowParameterPassing = exports.SlowParameterPassingConf = void 0;\r\nconst _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ \"./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js\");\r\nconst issue_1 = __webpack_require__(/*! ../issue */ \"./node_modules/@abaplint/core/build/src/issue.js\");\r\nconst _irule_1 = __webpack_require__(/*! ./_irule */ \"./node_modules/@abaplint/core/build/src/rules/_irule.js\");\r\nconst _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ \"./node_modules/@abaplint/core/build/src/objects/_abap_object.js\");\r\nconst syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/syntax.js\");\r\nconst _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js\");\r\nconst _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ \"./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js\");\r\nclass SlowParameterPassingConf extends _basic_rule_config_1.BasicRuleConfig {\r\n}\r\nexports.SlowParameterPassingConf = SlowParameterPassingConf;\r\nclass SlowParameterPassing {\r\n constructor() {\r\n this.conf = new SlowParameterPassingConf();\r\n }\r\n getMetadata() {\r\n return {\r\n key: \"slow_parameter_passing\",\r\n title: \"Slow Parameter Passing\",\r\n shortDescription: `Detects slow pass by value passing for methods where parameter is not changed`,\r\n tags: [_irule_1.RuleTag.Performance],\r\n };\r\n }\r\n getConfig() {\r\n return this.conf;\r\n }\r\n setConfig(conf) {\r\n this.conf = conf;\r\n }\r\n initialize(reg) {\r\n this.reg = reg;\r\n return this;\r\n }\r\n run(obj) {\r\n const issues = [];\r\n if (!(obj instanceof _abap_object_1.ABAPObject)) {\r\n return [];\r\n }\r\n const top = new syntax_1.SyntaxLogic(this.reg, obj).run().spaghetti.getTop();\r\n const methods = this.listMethodNodes(top);\r\n for (const m of methods) {\r\n const vars = m.getData().vars;\r\n for (const v in vars) {\r\n const id = vars[v];\r\n if (id.getMeta().includes(\"pass_by_value\" /* IdentifierMeta.PassByValue */) === false) {\r\n continue;\r\n }\r\n const writes = this.listWritePositions(m, id);\r\n if (writes.length === 0) {\r\n const message = \"Parameter \" + id.getName() + \" passed by VALUE but not changed\";\r\n if (this.reg.isFileDependency(id.getFilename()) === true) {\r\n continue;\r\n }\r\n issues.push(issue_1.Issue.atIdentifier(id, message, this.getMetadata().key, this.getConfig().severity));\r\n }\r\n }\r\n }\r\n return issues;\r\n }\r\n listWritePositions(node, id) {\r\n var _a, _b;\r\n const ret = [];\r\n for (const v of node.getData().references) {\r\n if (v.referenceType === _reference_1.ReferenceType.DataWriteReference\r\n && ((_a = v.resolved) === null || _a === void 0 ? void 0 : _a.getFilename()) === id.getFilename()\r\n && ((_b = v.resolved) === null || _b === void 0 ? void 0 : _b.getStart().equals(id.getStart()))) {\r\n ret.push(v.position.getStart());\r\n }\r\n }\r\n return ret;\r\n }\r\n listMethodNodes(node) {\r\n const ret = [];\r\n if (node.getIdentifier().stype === _scope_type_1.ScopeType.Method) {\r\n ret.push(node);\r\n }\r\n else {\r\n for (const c of node.getChildren()) {\r\n ret.push(...this.listMethodNodes(c));\r\n }\r\n }\r\n return ret;\r\n }\r\n}\r\nexports.SlowParameterPassing = SlowParameterPassing;\r\n//# sourceMappingURL=slow_parameter_passing.js.map\n\n//# sourceURL=webpack://@abaplint/cli/./node_modules/@abaplint/core/build/src/rules/slow_parameter_passing.js?");
12890
12890
 
12891
12891
  /***/ }),
12892
12892
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.93.51",
3
+ "version": "2.93.53",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "bin": {
6
6
  "abaplint": "./abaplint"
@@ -39,19 +39,19 @@
39
39
  },
40
40
  "homepage": "https://abaplint.org",
41
41
  "devDependencies": {
42
- "@abaplint/core": "^2.93.51",
42
+ "@abaplint/core": "^2.93.53",
43
43
  "@types/chai": "^4.3.3",
44
44
  "@types/glob": "^7.2.0",
45
45
  "@types/minimist": "^1.2.2",
46
46
  "@types/mocha": "^10.0.0",
47
- "@types/node": "^18.11.4",
47
+ "@types/node": "^18.11.7",
48
48
  "@types/progress": "^2.0.5",
49
49
  "chai": "^4.3.6",
50
50
  "chalk": "^5.1.2",
51
51
  "eslint": "^8.26.0",
52
52
  "glob": "^7.2.3",
53
53
  "json5": "^2.2.1",
54
- "memfs": "^3.4.7",
54
+ "memfs": "^3.4.8",
55
55
  "minimist": "^1.2.7",
56
56
  "mocha": "^10.1.0",
57
57
  "progress": "^2.0.3",