@abaplint/core 2.108.7 → 2.108.9

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 (109) hide show
  1. package/README.md +6 -6
  2. package/build/abaplint.d.ts +7 -0
  3. package/build/adhoc/syntax_performance.js +165 -165
  4. package/build/src/abap/5_syntax/_type_utils.js +10 -0
  5. package/build/src/abap/flow/flow_graph.js +7 -7
  6. package/build/src/lsp/help.js +7 -7
  7. package/build/src/objects/extension_index.js +35 -2
  8. package/build/src/registry.js +1 -1
  9. package/build/src/rules/7bit_ascii.js +4 -4
  10. package/build/src/rules/abapdoc.js +4 -4
  11. package/build/src/rules/align_parameters.js +40 -40
  12. package/build/src/rules/align_type_expressions.js +28 -28
  13. package/build/src/rules/ambiguous_statement.js +6 -6
  14. package/build/src/rules/avoid_use.js +10 -10
  15. package/build/src/rules/begin_end_names.js +4 -4
  16. package/build/src/rules/begin_single_include.js +13 -13
  17. package/build/src/rules/call_transaction_authority_check.js +3 -3
  18. package/build/src/rules/cds_comment_style.js +4 -4
  19. package/build/src/rules/cds_legacy_view.js +4 -4
  20. package/build/src/rules/chain_mainly_declarations.js +4 -4
  21. package/build/src/rules/change_if_to_case.js +8 -8
  22. package/build/src/rules/check_abstract.js +2 -2
  23. package/build/src/rules/check_comments.js +4 -4
  24. package/build/src/rules/check_include.js +3 -3
  25. package/build/src/rules/check_subrc.js +9 -9
  26. package/build/src/rules/classic_exceptions_overlap.js +10 -10
  27. package/build/src/rules/commented_code.js +1 -1
  28. package/build/src/rules/constructor_visibility_public.js +4 -4
  29. package/build/src/rules/contains_tab.js +2 -2
  30. package/build/src/rules/cyclic_oo.js +4 -4
  31. package/build/src/rules/dangerous_statement.js +1 -1
  32. package/build/src/rules/definitions_top.js +6 -6
  33. package/build/src/rules/downport.js +82 -82
  34. package/build/src/rules/easy_to_find_messages.js +6 -6
  35. package/build/src/rules/empty_line_in_statement.js +2 -2
  36. package/build/src/rules/empty_structure.js +6 -6
  37. package/build/src/rules/exit_or_check.js +3 -3
  38. package/build/src/rules/expand_macros.js +5 -5
  39. package/build/src/rules/exporting.js +1 -1
  40. package/build/src/rules/forbidden_identifier.js +1 -1
  41. package/build/src/rules/forbidden_void_type.js +2 -2
  42. package/build/src/rules/fully_type_itabs.js +1 -1
  43. package/build/src/rules/functional_writing.js +17 -17
  44. package/build/src/rules/global_class.js +8 -8
  45. package/build/src/rules/identical_conditions.js +12 -12
  46. package/build/src/rules/identical_contents.js +14 -14
  47. package/build/src/rules/identical_descriptions.js +6 -6
  48. package/build/src/rules/if_in_if.js +35 -35
  49. package/build/src/rules/implement_methods.js +3 -3
  50. package/build/src/rules/in_statement_indentation.js +11 -11
  51. package/build/src/rules/indentation.js +16 -16
  52. package/build/src/rules/intf_referencing_clas.js +3 -3
  53. package/build/src/rules/invalid_table_index.js +2 -2
  54. package/build/src/rules/line_break_style.js +2 -2
  55. package/build/src/rules/line_length.js +1 -1
  56. package/build/src/rules/line_only_punc.js +1 -1
  57. package/build/src/rules/local_variable_names.js +6 -6
  58. package/build/src/rules/main_file_contents.js +4 -4
  59. package/build/src/rules/many_parentheses.js +10 -10
  60. package/build/src/rules/max_one_method_parameter_per_line.js +7 -7
  61. package/build/src/rules/max_one_statement.js +5 -5
  62. package/build/src/rules/method_length.js +2 -2
  63. package/build/src/rules/method_overwrites_builtin.js +12 -12
  64. package/build/src/rules/mix_returning.js +6 -6
  65. package/build/src/rules/nesting.js +1 -1
  66. package/build/src/rules/no_chained_assignment.js +1 -1
  67. package/build/src/rules/no_external_form_calls.js +2 -2
  68. package/build/src/rules/no_inline_in_optional_branches.js +11 -11
  69. package/build/src/rules/no_prefixes.js +6 -6
  70. package/build/src/rules/no_public_attributes.js +1 -1
  71. package/build/src/rules/no_yoda_conditions.js +4 -4
  72. package/build/src/rules/nrob_consistency.js +2 -2
  73. package/build/src/rules/obsolete_statement.js +51 -51
  74. package/build/src/rules/omit_parameter_name.js +3 -3
  75. package/build/src/rules/omit_receiving.js +13 -13
  76. package/build/src/rules/parser_702_chaining.js +2 -2
  77. package/build/src/rules/parser_error.js +2 -2
  78. package/build/src/rules/parser_missing_space.js +1 -1
  79. package/build/src/rules/prefer_inline.js +16 -16
  80. package/build/src/rules/prefer_is_not.js +9 -9
  81. package/build/src/rules/prefer_raise_exception_new.js +5 -5
  82. package/build/src/rules/prefer_returning_to_exporting.js +4 -4
  83. package/build/src/rules/prefer_xsdbool.js +2 -2
  84. package/build/src/rules/preferred_compare_operator.js +2 -2
  85. package/build/src/rules/reduce_procedural_code.js +17 -17
  86. package/build/src/rules/remove_descriptions.js +4 -4
  87. package/build/src/rules/rfc_error_handling.js +9 -9
  88. package/build/src/rules/select_add_order_by.js +5 -5
  89. package/build/src/rules/select_performance.js +5 -5
  90. package/build/src/rules/select_single_full_key.js +13 -4
  91. package/build/src/rules/sicf_consistency.js +2 -2
  92. package/build/src/rules/slow_parameter_passing.js +16 -16
  93. package/build/src/rules/space_before_dot.js +2 -2
  94. package/build/src/rules/sql_value_conversion.js +6 -6
  95. package/build/src/rules/start_at_tab.js +1 -1
  96. package/build/src/rules/strict_sql.js +6 -6
  97. package/build/src/rules/sy_modification.js +3 -3
  98. package/build/src/rules/tabl_enhancement_category.js +2 -2
  99. package/build/src/rules/type_form_parameters.js +2 -2
  100. package/build/src/rules/unnecessary_pragma.js +29 -29
  101. package/build/src/rules/unnecessary_return.js +34 -14
  102. package/build/src/rules/unused_methods.js +11 -11
  103. package/build/src/rules/unused_variables.js +12 -12
  104. package/build/src/rules/use_bool_expression.js +8 -8
  105. package/build/src/rules/use_class_based_exceptions.js +8 -8
  106. package/build/src/rules/use_line_exists.js +6 -6
  107. package/build/src/rules/use_new.js +4 -4
  108. package/build/src/rules/when_others_last.js +6 -6
  109. package/package.json +70 -70
@@ -7,7 +7,13 @@ const _basic_rule_config_1 = require("./_basic_rule_config");
7
7
  const _irule_1 = require("./_irule");
8
8
  const Statements = require("../abap/2_statements/statements");
9
9
  const edit_helper_1 = require("../edit_helper");
10
+ const _statement_1 = require("../abap/2_statements/statements/_statement");
10
11
  class UnnecessaryReturnConf extends _basic_rule_config_1.BasicRuleConfig {
12
+ constructor() {
13
+ super(...arguments);
14
+ /** Allow empty METHODs + FORMs + FUNCTION-MODULEs */
15
+ this.allowEmpty = false;
16
+ }
11
17
  }
12
18
  exports.UnnecessaryReturnConf = UnnecessaryReturnConf;
13
19
  class UnnecessaryReturn extends _abap_rule_1.ABAPRule {
@@ -22,18 +28,18 @@ class UnnecessaryReturn extends _abap_rule_1.ABAPRule {
22
28
  shortDescription: `Finds unnecessary RETURN statements`,
23
29
  extendedInformation: `Finds unnecessary RETURN statements`,
24
30
  tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],
25
- badExample: `FORM hello1.
26
- WRITE 'world'.
27
- RETURN.
28
- ENDFORM.
29
-
30
- FORM foo.
31
- IF 1 = 2.
32
- RETURN.
33
- ENDIF.
31
+ badExample: `FORM hello1.
32
+ WRITE 'world'.
33
+ RETURN.
34
+ ENDFORM.
35
+
36
+ FORM foo.
37
+ IF 1 = 2.
38
+ RETURN.
39
+ ENDIF.
34
40
  ENDFORM.`,
35
- goodExample: `FORM hello2.
36
- WRITE 'world'.
41
+ goodExample: `FORM hello2.
42
+ WRITE 'world'.
37
43
  ENDFORM.`,
38
44
  };
39
45
  }
@@ -51,15 +57,29 @@ ENDFORM.`,
51
57
  }
52
58
  const message = "Unnecessary RETURN";
53
59
  const statements = file.getStatements();
60
+ let statementCounter = 0;
54
61
  for (let i = 0; i < statements.length; i++) {
55
62
  const node = statements[i];
56
- if (!(node.get() instanceof Statements.EndMethod
57
- || node.get() instanceof Statements.EndForm
58
- || node.get() instanceof Statements.EndFunction)) {
63
+ const nodeType = node.get();
64
+ if ((nodeType instanceof Statements.MethodImplementation
65
+ || nodeType instanceof Statements.Form
66
+ || nodeType instanceof Statements.FunctionModule)) {
67
+ statementCounter = 0;
68
+ continue;
69
+ }
70
+ if (!(nodeType instanceof _statement_1.Comment)) {
71
+ statementCounter++;
72
+ }
73
+ if (!(nodeType instanceof Statements.EndMethod
74
+ || nodeType instanceof Statements.EndForm
75
+ || nodeType instanceof Statements.EndFunction)) {
59
76
  continue;
60
77
  }
61
78
  const prev = statements[i - 1];
62
79
  if (prev && prev.get() instanceof Statements.Return) {
80
+ if (this.conf.allowEmpty === true && statementCounter === 2) {
81
+ continue;
82
+ }
63
83
  const fix = edit_helper_1.EditHelper.deleteStatement(file, prev);
64
84
  issues.push(issue_1.Issue.atStatement(file, prev, message, this.getMetadata().key, this.getConfig().severity, fix));
65
85
  }
@@ -56,17 +56,17 @@ class UnusedMethods {
56
56
  key: "unused_methods",
57
57
  title: "Unused methods",
58
58
  shortDescription: `Checks for unused methods`,
59
- extendedInformation: `Checks private and protected methods.
60
-
61
- Unused methods are not reported if the object contains parser or syntax errors.
62
-
63
- Skips:
64
- * methods FOR TESTING
65
- * methods SETUP + TEARDOWN + CLASS_SETUP + CLASS_TEARDOWN in testclasses
66
- * class_constructor + constructor methods
67
- * event handlers
68
- * methods that are redefined
69
- * INCLUDEs
59
+ extendedInformation: `Checks private and protected methods.
60
+
61
+ Unused methods are not reported if the object contains parser or syntax errors.
62
+
63
+ Skips:
64
+ * methods FOR TESTING
65
+ * methods SETUP + TEARDOWN + CLASS_SETUP + CLASS_TEARDOWN in testclasses
66
+ * class_constructor + constructor methods
67
+ * event handlers
68
+ * methods that are redefined
69
+ * INCLUDEs
70
70
  `,
71
71
  tags: [],
72
72
  pragma: "##CALLED",
@@ -66,23 +66,23 @@ class UnusedVariables {
66
66
  key: "unused_variables",
67
67
  title: "Unused variables",
68
68
  shortDescription: `Checks for unused variables and constants`,
69
- extendedInformation: `Skips event parameters.
70
-
71
- Note that this currently does not work if the source code uses macros.
72
-
73
- Unused variables are not reported if the object contains parser or syntax errors.
74
-
69
+ extendedInformation: `Skips event parameters.
70
+
71
+ Note that this currently does not work if the source code uses macros.
72
+
73
+ Unused variables are not reported if the object contains parser or syntax errors.
74
+
75
75
  Errors found in INCLUDES are reported for the main program.`,
76
76
  tags: [_irule_1.RuleTag.Quickfix],
77
77
  pragma: "##NEEDED",
78
78
  pseudoComment: "EC NEEDED",
79
- badExample: `DATA: BEGIN OF blah1,
80
- test TYPE string,
81
- test2 TYPE string,
79
+ badExample: `DATA: BEGIN OF blah1,
80
+ test TYPE string,
81
+ test2 TYPE string,
82
82
  END OF blah1.`,
83
- goodExample: `DATA: BEGIN OF blah2 ##NEEDED,
84
- test TYPE string,
85
- test2 TYPE string,
83
+ goodExample: `DATA: BEGIN OF blah2 ##NEEDED,
84
+ test TYPE string,
85
+ test2 TYPE string,
86
86
  END OF blah2.`,
87
87
  };
88
88
  }
@@ -27,15 +27,15 @@ class UseBoolExpression extends _abap_rule_1.ABAPRule {
27
27
  shortDescription: `Use boolean expression, xsdbool from 740sp08 and up, boolc from 702 and up`,
28
28
  extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-xsdbool-to-set-boolean-variables`,
29
29
  tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],
30
- badExample: `IF line IS INITIAL.
31
- has_entries = abap_false.
32
- ELSE.
33
- has_entries = abap_true.
34
- ENDIF.
35
-
30
+ badExample: `IF line IS INITIAL.
31
+ has_entries = abap_false.
32
+ ELSE.
33
+ has_entries = abap_true.
34
+ ENDIF.
35
+
36
36
  DATA(fsdf) = COND #( WHEN foo <> bar THEN abap_true ELSE abap_false ).`,
37
- goodExample: `DATA(has_entries) = xsdbool( line IS NOT INITIAL ).
38
-
37
+ goodExample: `DATA(has_entries) = xsdbool( line IS NOT INITIAL ).
38
+
39
39
  DATA(fsdf) = xsdbool( foo <> bar ).`,
40
40
  };
41
41
  }
@@ -22,15 +22,15 @@ class UseClassBasedExceptions extends _abap_rule_1.ABAPRule {
22
22
  shortDescription: `Use class based exceptions, checks interface and class definitions`,
23
23
  extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-class-based-exceptions`,
24
24
  tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
25
- badExample: `INTERFACE lif.
26
- METHODS load_data
27
- EXCEPTIONS
28
- invalid_parameter.
25
+ badExample: `INTERFACE lif.
26
+ METHODS load_data
27
+ EXCEPTIONS
28
+ invalid_parameter.
29
29
  ENDINTERFACE.`,
30
- goodExample: `INTERFACE lif.
31
- METHODS load_data
32
- RAISING
33
- cx_something.
30
+ goodExample: `INTERFACE lif.
31
+ METHODS load_data
32
+ RAISING
33
+ cx_something.
34
34
  ENDINTERFACE.`,
35
35
  };
36
36
  }
@@ -22,15 +22,15 @@ class UseLineExists extends _abap_rule_1.ABAPRule {
22
22
  key: "use_line_exists",
23
23
  title: "Use line_exists",
24
24
  shortDescription: `Use line_exists, from 740sp02 and up`,
25
- extendedInformation: `
26
- https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-line_exists-to-read-table-or-loop-at
27
-
25
+ extendedInformation: `
26
+ https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-line_exists-to-read-table-or-loop-at
27
+
28
28
  Not reported if the READ TABLE statement contains BINARY SEARCH.`,
29
29
  tags: [_irule_1.RuleTag.Upport, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
30
- badExample: `READ TABLE my_table TRANSPORTING NO FIELDS WITH KEY key = 'A'.
31
- IF sy-subrc = 0.
30
+ badExample: `READ TABLE my_table TRANSPORTING NO FIELDS WITH KEY key = 'A'.
31
+ IF sy-subrc = 0.
32
32
  ENDIF.`,
33
- goodExample: `IF line_exists( my_table[ key = 'A' ] ).
33
+ goodExample: `IF line_exists( my_table[ key = 'A' ] ).
34
34
  ENDIF.`,
35
35
  };
36
36
  }
@@ -23,10 +23,10 @@ class UseNew extends _abap_rule_1.ABAPRule {
23
23
  key: "use_new",
24
24
  title: "Use NEW",
25
25
  shortDescription: `Checks for deprecated CREATE OBJECT statements.`,
26
- extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-new-to-create-object
27
-
28
- If the target variable is referenced in the CREATE OBJECT statement, no errors are issued
29
-
26
+ extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-new-to-create-object
27
+
28
+ If the target variable is referenced in the CREATE OBJECT statement, no errors are issued
29
+
30
30
  Applicable from v740sp02 and up`,
31
31
  badExample: `CREATE OBJECT ref.`,
32
32
  goodExample: `ref = NEW #( ).`,
@@ -21,13 +21,13 @@ class WhenOthersLast extends _abap_rule_1.ABAPRule {
21
21
  title: "WHEN OTHERS last",
22
22
  shortDescription: `Checks that WHEN OTHERS is placed the last within a CASE statement.`,
23
23
  tags: [_irule_1.RuleTag.SingleFile],
24
- badExample: `CASE bar.
25
- WHEN OTHERS.
26
- WHEN 2.
24
+ badExample: `CASE bar.
25
+ WHEN OTHERS.
26
+ WHEN 2.
27
27
  ENDCASE.`,
28
- goodExample: `CASE bar.
29
- WHEN 2.
30
- WHEN OTHERS.
28
+ goodExample: `CASE bar.
29
+ WHEN 2.
30
+ WHEN OTHERS.
31
31
  ENDCASE.`,
32
32
  };
33
33
  }
package/package.json CHANGED
@@ -1,70 +1,70 @@
1
- {
2
- "name": "@abaplint/core",
3
- "version": "2.108.7",
4
- "description": "abaplint - Core API",
5
- "main": "build/src/index.js",
6
- "typings": "build/abaplint.d.ts",
7
- "funding": "https://github.com/sponsors/larshp",
8
- "scripts": {
9
- "lint": "eslint src/**/*.ts test/**/*.ts --format unix",
10
- "lint:fix": "eslint src/**/*.ts test/**/*.ts --format unix --fix",
11
- "compile": "tsc && sh scripts/version.sh",
12
- "test": "npm run compile && mocha --timeout 1000 && npm run lint && npm run schema && api-extractor run",
13
- "test:only": "npm run compile && mocha",
14
- "test:parallel": "npm run compile && mocha --timeout 1000 --parallel --reporter dot",
15
- "coverage": "npm run compile && c8 mocha && c8 report --reporter=html",
16
- "lexer_performance": "tsc && curl -o lexer_performance.abap https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap && node build/adhoc/lexer_performance.js",
17
- "parser_performance": "tsc && curl -o lexer_performance.abap https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap && node build/adhoc/parser_performance.js",
18
- "syntax_performance": "tsc && curl -o lexer_performance.abap https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap && node build/adhoc/syntax_performance.js",
19
- "typed_array": "tsc && node build/adhoc/typed_array.js",
20
- "schema": "node scripts/schema.js > scripts/schema.ts && ts-json-schema-generator --tsconfig tsconfig_schema.json --jsDoc extended --path scripts/schema.ts > scripts/schema.json && node scripts/schema_post.js",
21
- "publish:minor": "npm --no-git-tag-version version minor && rm -rf build && npm install && npm run test && npm publish --access public",
22
- "publish:patch": "npm --no-git-tag-version version patch && rm -rf build && npm install && npm run test && npm publish --access public"
23
- },
24
- "mocha": {
25
- "recursive": true,
26
- "reporter": "progress",
27
- "spec": "build/test/**/*.js",
28
- "require": "source-map-support/register"
29
- },
30
- "c8": {
31
- "include": [
32
- "build/src/**/*.js"
33
- ]
34
- },
35
- "repository": {
36
- "type": "git",
37
- "url": "git+https://github.com/abaplint/abaplint.git"
38
- },
39
- "engines": {
40
- "node": ">=12.0.0"
41
- },
42
- "keywords": [
43
- "ABAP",
44
- "lint"
45
- ],
46
- "author": "Lars Hvam Petersen",
47
- "license": "MIT",
48
- "bugs": {
49
- "url": "https://github.com/abaplint/abaplint/issues"
50
- },
51
- "homepage": "https://abaplint.org",
52
- "devDependencies": {
53
- "@microsoft/api-extractor": "^7.43.5",
54
- "@types/chai": "^4.3.16",
55
- "@types/mocha": "^10.0.6",
56
- "@types/node": "^20.12.12",
57
- "chai": "^4.4.1",
58
- "eslint": "^8.57.0",
59
- "mocha": "^10.4.0",
60
- "c8": "^9.1.0",
61
- "source-map-support": "^0.5.21",
62
- "ts-json-schema-generator": "=2.0.1",
63
- "typescript": "^5.4.5"
64
- },
65
- "dependencies": {
66
- "fast-xml-parser": "^4.3.6",
67
- "json5": "^2.2.3",
68
- "vscode-languageserver-types": "^3.17.5"
69
- }
70
- }
1
+ {
2
+ "name": "@abaplint/core",
3
+ "version": "2.108.9",
4
+ "description": "abaplint - Core API",
5
+ "main": "build/src/index.js",
6
+ "typings": "build/abaplint.d.ts",
7
+ "funding": "https://github.com/sponsors/larshp",
8
+ "scripts": {
9
+ "lint": "eslint src/**/*.ts test/**/*.ts --format unix",
10
+ "lint:fix": "eslint src/**/*.ts test/**/*.ts --format unix --fix",
11
+ "compile": "tsc && sh scripts/version.sh",
12
+ "test": "npm run compile && mocha --timeout 1000 && npm run lint && npm run schema && api-extractor run",
13
+ "test:only": "npm run compile && mocha",
14
+ "test:parallel": "npm run compile && mocha --timeout 1000 --parallel --reporter dot",
15
+ "coverage": "npm run compile && c8 mocha && c8 report --reporter=html",
16
+ "lexer_performance": "tsc && curl -o lexer_performance.abap https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap && node build/adhoc/lexer_performance.js",
17
+ "parser_performance": "tsc && curl -o lexer_performance.abap https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap && node build/adhoc/parser_performance.js",
18
+ "syntax_performance": "tsc && curl -o lexer_performance.abap https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap && node build/adhoc/syntax_performance.js",
19
+ "typed_array": "tsc && node build/adhoc/typed_array.js",
20
+ "schema": "node scripts/schema.js > scripts/schema.ts && ts-json-schema-generator --tsconfig tsconfig_schema.json --jsDoc extended --path scripts/schema.ts > scripts/schema.json && node scripts/schema_post.js",
21
+ "publish:minor": "npm --no-git-tag-version version minor && rm -rf build && npm install && npm run test && npm publish --access public",
22
+ "publish:patch": "npm --no-git-tag-version version patch && rm -rf build && npm install && npm run test && npm publish --access public"
23
+ },
24
+ "mocha": {
25
+ "recursive": true,
26
+ "reporter": "progress",
27
+ "spec": "build/test/**/*.js",
28
+ "require": "source-map-support/register"
29
+ },
30
+ "c8": {
31
+ "include": [
32
+ "build/src/**/*.js"
33
+ ]
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "git+https://github.com/abaplint/abaplint.git"
38
+ },
39
+ "engines": {
40
+ "node": ">=12.0.0"
41
+ },
42
+ "keywords": [
43
+ "ABAP",
44
+ "lint"
45
+ ],
46
+ "author": "Lars Hvam Petersen",
47
+ "license": "MIT",
48
+ "bugs": {
49
+ "url": "https://github.com/abaplint/abaplint/issues"
50
+ },
51
+ "homepage": "https://abaplint.org",
52
+ "devDependencies": {
53
+ "@microsoft/api-extractor": "^7.43.8",
54
+ "@types/chai": "^4.3.16",
55
+ "@types/mocha": "^10.0.6",
56
+ "@types/node": "^20.12.12",
57
+ "chai": "^4.4.1",
58
+ "eslint": "^8.57.0",
59
+ "mocha": "^10.4.0",
60
+ "c8": "^9.1.0",
61
+ "source-map-support": "^0.5.21",
62
+ "ts-json-schema-generator": "=2.0.1",
63
+ "typescript": "^5.4.5"
64
+ },
65
+ "dependencies": {
66
+ "fast-xml-parser": "^4.4.0",
67
+ "json5": "^2.2.3",
68
+ "vscode-languageserver-types": "^3.17.5"
69
+ }
70
+ }