yini-parser 1.1.0-beta → 1.3.0-beta

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 (103) hide show
  1. package/CHANGELOG.md +50 -2
  2. package/README.md +2 -2
  3. package/dist/YINI.d.ts +155 -27
  4. package/dist/YINI.js +145 -174
  5. package/dist/YINI.js.map +1 -0
  6. package/dist/config/env.js +1 -0
  7. package/dist/config/env.js.map +1 -0
  8. package/dist/core/{ASTBuilder.d.ts → astBuilder.d.ts} +4 -4
  9. package/dist/core/{ASTBuilder.js → astBuilder.js} +82 -69
  10. package/dist/core/astBuilder.js.map +1 -0
  11. package/dist/core/{ErrorDataHandler.d.ts → errorDataHandler.d.ts} +16 -10
  12. package/dist/core/{ErrorDataHandler.js → errorDataHandler.js} +115 -109
  13. package/dist/core/errorDataHandler.js.map +1 -0
  14. package/dist/core/internalTypes.d.ts +127 -0
  15. package/dist/core/{types.js → internalTypes.js} +6 -0
  16. package/dist/core/internalTypes.js.map +1 -0
  17. package/dist/core/objectBuilder.d.ts +2 -2
  18. package/dist/core/objectBuilder.js +1 -0
  19. package/dist/core/objectBuilder.js.map +1 -0
  20. package/dist/core/options/defaultParserOptions.d.ts +17 -0
  21. package/dist/core/options/defaultParserOptions.js +46 -0
  22. package/dist/core/options/defaultParserOptions.js.map +1 -0
  23. package/dist/core/options/failLevel.d.ts +3 -0
  24. package/dist/core/options/failLevel.js +27 -0
  25. package/dist/core/options/failLevel.js.map +1 -0
  26. package/dist/core/options/optionsFunctions.d.ts +8 -0
  27. package/dist/core/options/optionsFunctions.js +62 -0
  28. package/dist/core/options/optionsFunctions.js.map +1 -0
  29. package/dist/core/parsingRules/modeFromRulesMatcher.d.ts +8 -0
  30. package/dist/core/parsingRules/modeFromRulesMatcher.js +114 -0
  31. package/dist/core/parsingRules/modeFromRulesMatcher.js.map +1 -0
  32. package/dist/core/parsingRules/rulesConstAndGuards.d.ts +7 -0
  33. package/dist/core/parsingRules/rulesConstAndGuards.js +35 -0
  34. package/dist/core/parsingRules/rulesConstAndGuards.js.map +1 -0
  35. package/dist/core/pipeline/errorListeners.d.ts +18 -0
  36. package/dist/core/pipeline/errorListeners.js +107 -0
  37. package/dist/core/pipeline/errorListeners.js.map +1 -0
  38. package/dist/core/pipeline/pipeline.d.ts +18 -0
  39. package/dist/core/pipeline/pipeline.js +244 -0
  40. package/dist/core/pipeline/pipeline.js.map +1 -0
  41. package/dist/core/resultMetadataBuilder.d.ts +19 -0
  42. package/dist/core/resultMetadataBuilder.js +187 -0
  43. package/dist/core/resultMetadataBuilder.js.map +1 -0
  44. package/dist/core/runtime.d.ts +21 -0
  45. package/dist/core/runtime.js +201 -0
  46. package/dist/core/runtime.js.map +1 -0
  47. package/dist/dev/main.d.ts +1 -0
  48. package/dist/dev/main.js +305 -0
  49. package/dist/dev/main.js.map +1 -0
  50. package/dist/grammar/{YiniLexer.js → generated/YiniLexer.js} +2 -1
  51. package/dist/grammar/generated/YiniLexer.js.map +1 -0
  52. package/dist/grammar/{YiniParser.js → generated/YiniParser.js} +2 -1
  53. package/dist/grammar/generated/YiniParser.js.map +1 -0
  54. package/dist/grammar/{YiniParserVisitor.js → generated/YiniParserVisitor.js} +2 -1
  55. package/dist/grammar/generated/YiniParserVisitor.js.map +1 -0
  56. package/dist/index.d.ts +40 -1
  57. package/dist/index.js +60 -359
  58. package/dist/index.js.map +1 -0
  59. package/dist/parsers/extractHeaderParts.d.ts +2 -2
  60. package/dist/parsers/extractHeaderParts.js +2 -1
  61. package/dist/parsers/extractHeaderParts.js.map +1 -0
  62. package/dist/parsers/extractSignificantYiniLine.js +2 -1
  63. package/dist/parsers/extractSignificantYiniLine.js.map +1 -0
  64. package/dist/parsers/parseBoolean.js +1 -0
  65. package/dist/parsers/parseBoolean.js.map +1 -0
  66. package/dist/parsers/parseNull.js +1 -0
  67. package/dist/parsers/parseNull.js.map +1 -0
  68. package/dist/parsers/parseNumber.js +1 -0
  69. package/dist/parsers/parseNumber.js.map +1 -0
  70. package/dist/parsers/parseSectionHeader.d.ts +3 -3
  71. package/dist/parsers/parseSectionHeader.js +2 -1
  72. package/dist/parsers/parseSectionHeader.js.map +1 -0
  73. package/dist/parsers/parseString.js +3 -3
  74. package/dist/parsers/parseString.js.map +1 -0
  75. package/dist/types/index.d.ts +219 -0
  76. package/dist/types/index.js +4 -0
  77. package/dist/types/index.js.map +1 -0
  78. package/dist/utils/number.js +1 -0
  79. package/dist/utils/number.js.map +1 -0
  80. package/dist/utils/object.d.ts +12 -0
  81. package/dist/utils/object.js +41 -1
  82. package/dist/utils/object.js.map +1 -0
  83. package/dist/utils/pathAndFileName.js +1 -0
  84. package/dist/utils/pathAndFileName.js.map +1 -0
  85. package/dist/utils/print.d.ts +2 -2
  86. package/dist/utils/print.js +11 -6
  87. package/dist/utils/print.js.map +1 -0
  88. package/dist/utils/string.d.ts +5 -0
  89. package/dist/utils/string.js +10 -1
  90. package/dist/utils/string.js.map +1 -0
  91. package/dist/utils/system.js +1 -0
  92. package/dist/utils/system.js.map +1 -0
  93. package/dist/{yiniHelpers.d.ts → utils/yiniHelpers.d.ts} +1 -1
  94. package/dist/{yiniHelpers.js → utils/yiniHelpers.js} +3 -2
  95. package/dist/utils/yiniHelpers.js.map +1 -0
  96. package/examples/basic-output.js +12 -12
  97. package/package.json +11 -6
  98. package/dist/core/types.d.ts +0 -249
  99. package/dist/parseEntry.d.ts +0 -3
  100. package/dist/parseEntry.js +0 -456
  101. /package/dist/grammar/{YiniLexer.d.ts → generated/YiniLexer.d.ts} +0 -0
  102. /package/dist/grammar/{YiniParser.d.ts → generated/YiniParser.d.ts} +0 -0
  103. /package/dist/grammar/{YiniParserVisitor.d.ts → generated/YiniParserVisitor.d.ts} +0 -0
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const env_1 = require("../config/env");
7
- const YiniParserVisitor_1 = __importDefault(require("../grammar/YiniParserVisitor"));
7
+ const YiniParserVisitor_1 = __importDefault(require("../grammar/generated/YiniParserVisitor"));
8
8
  const extractSignificantYiniLine_1 = require("../parsers/extractSignificantYiniLine");
9
9
  const parseBoolean_1 = __importDefault(require("../parsers/parseBoolean"));
10
10
  const parseNumber_1 = __importDefault(require("../parsers/parseNumber"));
@@ -13,8 +13,8 @@ const parseSectionHeader_1 = __importDefault(require("../parsers/parseSectionHea
13
13
  const number_1 = require("../utils/number");
14
14
  const print_1 = require("../utils/print");
15
15
  const string_1 = require("../utils/string");
16
- const yiniHelpers_1 = require("../yiniHelpers");
17
- const ErrorDataHandler_1 = require("./ErrorDataHandler");
16
+ const yiniHelpers_1 = require("../utils/yiniHelpers");
17
+ const errorDataHandler_1 = require("./errorDataHandler");
18
18
  // -----------------------
19
19
  // --- Helpers -------------------------------------------------------------
20
20
  // let _subjectType: TSubjectType = 'None'
@@ -37,7 +37,7 @@ const makeScalarValue = (type, value = null, tag = undefined) => {
37
37
  case 'Undefined':
38
38
  return { type: 'Undefined', value: undefined, tag };
39
39
  default:
40
- new ErrorDataHandler_1.ErrorDataHandler(_sourceType).pushOrBail(null, 'Fatal-Error', `No such type in makeValue(..), type: ${type}, value: ${value}`, 'Something in the code is done incorrectly in order for this to happen... :S');
40
+ new errorDataHandler_1.ErrorDataHandler(_sourceType).pushOrBail(null, 'Fatal-Error', `No such type in makeValue(..), type: ${type}, value: ${value}`, 'Something in the code is done incorrectly in order for this to happen... :S');
41
41
  }
42
42
  return { type: 'Null', value: null, tag };
43
43
  };
@@ -130,8 +130,7 @@ class ASTBuilder extends YiniParserVisitor_1.default {
130
130
  this.mapSectionNamePaths = new Map();
131
131
  // --- Private helper methods --------------------------------
132
132
  this.hasDefinedSectionTitle = (keyPath) => {
133
- var _a;
134
- return (_a = this.mapSectionNamePaths) === null || _a === void 0 ? void 0 : _a.has(keyPath);
133
+ return this.mapSectionNamePaths?.has(keyPath);
135
134
  };
136
135
  this.setDefineSectionTitle = (keyPath, level) => {
137
136
  this.mapSectionNamePaths.set(keyPath, level);
@@ -144,9 +143,8 @@ class ASTBuilder extends YiniParserVisitor_1.default {
144
143
  // visitYini?: (ctx: YiniContext) => Result
145
144
  // visitYini?: (ctx: YiniContext) => any
146
145
  this.visitYini = (ctx) => {
147
- var _a;
148
146
  // children: prolog?, stmt*, terminal?, EOF
149
- (_a = ctx.children) === null || _a === void 0 ? void 0 : _a.forEach((c) => { var _a; return (_a = this.visit) === null || _a === void 0 ? void 0 : _a.call(this, c); });
147
+ ctx.children?.forEach((c) => this.visit?.(c));
150
148
  return this.ast;
151
149
  };
152
150
  /**
@@ -195,21 +193,20 @@ class ASTBuilder extends YiniParserVisitor_1.default {
195
193
  */
196
194
  // visitStmt?: (ctx: StmtContext) => Result
197
195
  this.visitStmt = (ctx) => {
198
- var _a, _b, _c, _d, _e, _f, _g, _h;
199
196
  const child = ctx.getChild(0);
200
- const ruleName = (_b = (_a = child === null || child === void 0 ? void 0 : child.constructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '';
197
+ const ruleName = child?.constructor?.name ?? '';
201
198
  if (ruleName.includes('EolContext'))
202
- return (_c = this.visitEol) === null || _c === void 0 ? void 0 : _c.call(this, child);
199
+ return this.visitEol?.(child);
203
200
  if (ruleName.includes('AssignmentContext'))
204
- return (_d = this.visitAssignment) === null || _d === void 0 ? void 0 : _d.call(this, child);
201
+ return this.visitAssignment?.(child);
205
202
  if (ruleName.includes('Colon_list_declContext'))
206
- return (_e = this.visitColon_list_decl) === null || _e === void 0 ? void 0 : _e.call(this, child);
203
+ return this.visitColon_list_decl?.(child);
207
204
  if (ruleName.includes('Meta_stmtContext'))
208
- return (_f = this.visitMeta_stmt) === null || _f === void 0 ? void 0 : _f.call(this, child);
205
+ return this.visitMeta_stmt?.(child);
209
206
  (0, print_1.debugPrint)('S1');
210
207
  // let headerAlt = child.getText?.() ?? ''
211
208
  // let header = ctx.SECTION_HEAD()?.getText().trim() || ''
212
- let header = ((_g = ctx.SECTION_HEAD()) === null || _g === void 0 ? void 0 : _g.getText().trim()) || '';
209
+ let header = ctx.SECTION_HEAD()?.getText().trim() || '';
213
210
  // debugPrint('S2, lineAlt: >>>' + lineAlt + '<<<')
214
211
  (0, print_1.debugPrint)('S2, header: >>>' + header + '<<<');
215
212
  header = (0, extractSignificantYiniLine_1.extractYiniLine)(header);
@@ -227,22 +224,20 @@ class ASTBuilder extends YiniParserVisitor_1.default {
227
224
  return null;
228
225
  }
229
226
  // bad_member fallback
230
- return (_h = this.visitBad_member) === null || _h === void 0 ? void 0 : _h.call(this, ctx.getChild(0));
227
+ return this.visitBad_member?.(ctx.getChild(0));
231
228
  };
232
229
  /**
233
230
  * Visit a parse tree produced by `YiniParser.meta_stmt`.
234
231
  * @param ctx the parse tree
235
232
  */
236
233
  this.visitMeta_stmt = (ctx) => {
237
- var _a;
238
234
  (0, print_1.debugPrint)('-> Entered visitMeta_stmt(..)');
239
235
  let rawText = ctx.getText().trim();
240
236
  (0, print_1.debugPrint)('rawText = "' + rawText + '"');
241
- (_a = ctx.children) === null || _a === void 0 ? void 0 : _a.forEach((c) => {
242
- var _a;
243
- let rawText = c === null || c === void 0 ? void 0 : c.getText().trim();
237
+ ctx.children?.forEach((c) => {
238
+ let rawText = c?.getText().trim();
244
239
  (0, print_1.debugPrint)('visitMeta_stmt:child = "' + rawText + '"');
245
- (_a = this.visit) === null || _a === void 0 ? void 0 : _a.call(this, c);
240
+ this.visit?.(c);
246
241
  });
247
242
  return null;
248
243
  };
@@ -320,12 +315,11 @@ class ASTBuilder extends YiniParserVisitor_1.default {
320
315
  */
321
316
  // visitAssignment?: (ctx: AssignmentContext) => Result
322
317
  this.visitAssignment = (ctx) => {
323
- var _a;
324
318
  (0, env_1.isDebug)() && console.log();
325
319
  (0, print_1.debugPrint)('-> Entered visitAssignment(..)');
326
320
  // assignment : member eol
327
321
  const mem = ctx.member();
328
- (_a = this.visitMember) === null || _a === void 0 ? void 0 : _a.call(this, mem);
322
+ this.visitMember?.(mem);
329
323
  return null;
330
324
  };
331
325
  /**
@@ -336,7 +330,6 @@ class ASTBuilder extends YiniParserVisitor_1.default {
336
330
  */
337
331
  // visitMember?: (ctx: MemberContext) => Result
338
332
  this.visitMember = (ctx) => {
339
- var _a, _b, _c, _d, _e, _f;
340
333
  (0, env_1.isDebug)() && console.log();
341
334
  (0, print_1.debugPrint)('-> Entered visitMember(..)');
342
335
  // member: KEY WS? EQ WS? value?
@@ -359,22 +352,31 @@ class ASTBuilder extends YiniParserVisitor_1.default {
359
352
  }
360
353
  }
361
354
  const resultKey = (0, string_1.trimBackticks)(rawKey);
362
- const rawValue = (_b = (_a = ctx.value) === null || _a === void 0 ? void 0 : _a.call(ctx)) === null || _b === void 0 ? void 0 : _b.getText();
363
- (0, print_1.debugPrint)(`visitMember(..): rawValue = ` + ((_d = (_c = ctx.value) === null || _c === void 0 ? void 0 : _c.call(ctx)) === null || _d === void 0 ? void 0 : _d.getText()));
364
- let valueContext = (_e = ctx.value) === null || _e === void 0 ? void 0 : _e.call(ctx);
355
+ const rawValue = ctx.value?.()?.getText();
356
+ (0, print_1.debugPrint)(`visitMember(..): rawValue = ` + ctx.value?.()?.getText());
357
+ let valueContext = ctx.value?.();
365
358
  let valueNode;
366
359
  if (!rawValue) {
367
- // Empty value => Null in lenient mode, error in strict (Spec 12.3, 8.2). :contentReference[oaicite:10]{index=10}:contentReference[oaicite:11]{index=11}
368
- if (!this.isStrict) {
369
- valueNode = makeScalarValue('Null', null, 'Implicit null');
370
- }
371
- else {
372
- // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
373
- this.errorHandler.pushOrBail(ctx, 'Syntax-Error', `Strict mode: missing value for key '${resultKey}'`, 'Expected a value but found nothing, strict mode does not allow implicit null.', "If you intend to have a null value, please specify 'null' explicitly as the value.");
360
+ // treatEmptyValueAsNull = 'allow' (default in lenient mode, empty value => Null in lenient mode)
361
+ // if (!this.isStrict) {
362
+ switch (this.options.rules.treatEmptyValueAsNull) {
363
+ case 'allow':
364
+ // Lenient mode: implicit null, no warning (treatEmptyValueAsNull = 'allow').
365
+ valueNode = makeScalarValue('Null', null, 'Implicit null (empty value)');
366
+ break;
367
+ case 'allow-with-warning':
368
+ valueNode = makeScalarValue('Null', null, 'Implicit null (empty value)');
369
+ this.errorHandler.pushOrBail(ctx, 'Syntax-Warning', `Empty value treated as null for key '${resultKey}'.`, `An empty value after '=' was encountered. Per 'treatEmptyValueAsNull = allow-with-warning', interpreted as null.`, `If you intended null, write it explicitly: ${resultKey} = null. Otherwise provide a non-empty value or set 'treatEmptyValueAsNull' to 'disallow'.`);
370
+ break;
371
+ case 'disallow':
372
+ // treatEmptyValueAsNull = 'disallow' (default in strict mode)
373
+ // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
374
+ this.errorHandler.pushOrBail(ctx, 'Syntax-Error', `Missing value for key '${resultKey}'.`, `Expected a value after '=' but found none. Implicit nulls are disallowed by 'treatEmptyValueAsNull = disallow'.`, `Write 'null' explicitly (${resultKey} = null) if that is intended, or provide a concrete value.`);
375
+ break;
374
376
  }
375
377
  }
376
378
  else {
377
- valueNode = (_f = this.visitValue) === null || _f === void 0 ? void 0 : _f.call(this, valueContext);
379
+ valueNode = this.visitValue?.(valueContext);
378
380
  }
379
381
  (0, print_1.debugPrint)('visitMember(..): valueNode:');
380
382
  if ((0, env_1.isDebug)()) {
@@ -446,16 +448,15 @@ class ASTBuilder extends YiniParserVisitor_1.default {
446
448
  */
447
449
  // visitString_literal?: (ctx: String_literalContext) => Result
448
450
  this.visitString_literal = (ctx) => {
449
- var _a, _b;
450
451
  (0, print_1.debugPrint)('-> Entered visitString_literal(..)');
451
452
  // STRING (string_concat)*
452
453
  // Concatenate pieces with PLUS (Spec 6.6). Each piece is a STRING token; '+' is structural. :contentReference[oaicite:17]{index=17}
453
454
  let text = trimQuotes(ctx.STRING().getText());
454
455
  // for (const c of ctx.string_concat() ?? []) {
455
- for (const c of (_a = ctx.string_concat_list()) !== null && _a !== void 0 ? _a : []) {
456
+ for (const c of ctx.string_concat_list() ?? []) {
456
457
  (0, print_1.debugPrint)('c of ctx.string_concat():');
457
458
  (0, env_1.isDebug)() && (0, print_1.printObject)(c);
458
- text += (_b = this.visitString_concat) === null || _b === void 0 ? void 0 : _b.call(this, c);
459
+ text += this.visitString_concat?.(c);
459
460
  }
460
461
  return makeScalarValue('String', text);
461
462
  };
@@ -475,8 +476,8 @@ class ASTBuilder extends YiniParserVisitor_1.default {
475
476
  }
476
477
  // Check if number is JS special type NaN, Infinity or -Infinity.
477
478
  // Note: Value with a zero (0) should pass OK!
478
- if ((parsedNum === null || parsedNum === void 0 ? void 0 : parsedNum.value) !== 0 &&
479
- (!(parsedNum === null || parsedNum === void 0 ? void 0 : parsedNum.value) ||
479
+ if (parsedNum?.value !== 0 &&
480
+ (!parsedNum?.value ||
480
481
  (0, number_1.isNaNValue)(parsedNum.value) ||
481
482
  (0, number_1.isInfinityValue)(parsedNum.value))) {
482
483
  // **************************************************
@@ -549,14 +550,14 @@ class ASTBuilder extends YiniParserVisitor_1.default {
549
550
  */
550
551
  this.visitElements = (ctx) => {
551
552
  (0, print_1.debugPrint)('-> Entered visitElements(..)');
552
- (0, print_1.debugPrint)(' elements.length = ' + (ctx === null || ctx === void 0 ? void 0 : ctx.value_list().length));
553
- const elems = !(ctx === null || ctx === void 0 ? void 0 : ctx.value_list())
553
+ (0, print_1.debugPrint)(' elements.length = ' + ctx?.value_list().length);
554
+ const elems = !ctx?.value_list()
554
555
  ? []
555
556
  : ctx.value_list().map((elem) => {
556
557
  const valueNode = this.visitValue(elem);
557
558
  if (!valueNode) {
558
559
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
559
- this.errorHandler.pushOrBail(ctx, 'Syntax-Error', 'Invalid list element', `Invalid list element: '${elem === null || elem === void 0 ? void 0 : elem.getText()}'`, `Expected a valid value/literal (string, number, boolean, null, list, or object). Optionally with a single leading minus sign '-'.`);
560
+ this.errorHandler.pushOrBail(ctx, 'Syntax-Error', 'Invalid list element', `Invalid list element: '${elem?.getText()}'`, `Expected a valid value/literal (string, number, boolean, null, list, or object). Optionally with a single leading minus sign '-'.`);
560
561
  }
561
562
  return valueNode;
562
563
  });
@@ -598,7 +599,7 @@ class ASTBuilder extends YiniParserVisitor_1.default {
598
599
  */
599
600
  this.visitObject_members = (ctx) => {
600
601
  (0, print_1.debugPrint)('-> Entered visitObject_members(..)');
601
- (0, print_1.debugPrint)('entries.length = ' + (ctx === null || ctx === void 0 ? void 0 : ctx.object_member_list().length));
602
+ (0, print_1.debugPrint)('entries.length = ' + ctx?.object_member_list().length);
602
603
  const entries = [];
603
604
  ctx.object_member_list().forEach((member) => {
604
605
  const { key, value } = this.visitObject_member(member);
@@ -679,10 +680,9 @@ class ASTBuilder extends YiniParserVisitor_1.default {
679
680
  */
680
681
  // visitBad_member?: (ctx: Bad_memberContext) => Result
681
682
  this.visitBad_member = (ctx) => {
682
- var _a;
683
683
  (0, print_1.debugPrint)('-> Entered visitBad_member(..)');
684
684
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
685
- this.errorHandler.pushOrBail(ctx, 'Syntax-Error', 'Invalid or malformed member (key-value pair) found.', `Offending text: ${(_a = ctx === null || ctx === void 0 ? void 0 : ctx.getText()) === null || _a === void 0 ? void 0 : _a.trim()}`, 'Members has the form: <key> = <value>, where <key> is a name/identifier and <value> is a value/literal.');
685
+ this.errorHandler.pushOrBail(ctx, 'Syntax-Error', 'Invalid or malformed member (key-value pair) found.', `Offending text: ${ctx?.getText()?.trim()}`, 'Members must have the form: <key> = <value>, where <key> is a name/identifier and <value> is a value/literal.');
686
686
  return null;
687
687
  };
688
688
  /**
@@ -691,26 +691,25 @@ class ASTBuilder extends YiniParserVisitor_1.default {
691
691
  * @return the visitor result
692
692
  */
693
693
  this.visitBad_meta_text = (ctx) => {
694
- var _a;
695
694
  (0, print_1.debugPrint)('-> Entered visitBad_meta_text(..)');
696
695
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
697
- this.errorHandler.pushOrBail(ctx, 'Syntax-Error', 'Invalid or malformed directive or annotation statement', `Offending statement: ${(_a = ctx === null || ctx === void 0 ? void 0 : ctx.getText()) === null || _a === void 0 ? void 0 : _a.trim()}`);
696
+ this.errorHandler.pushOrBail(ctx, 'Syntax-Error', 'Invalid or malformed directive or annotation statement', `Offending statement: ${ctx?.getText()?.trim()}`);
698
697
  return null;
699
698
  };
700
699
  if (!errorHandler) {
701
700
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
702
- new ErrorDataHandler_1.ErrorDataHandler('None/Ignore').pushOrBail(null, 'Fatal-Error', 'Has no ErrorDataHandler instance when calling visitYini(..)', 'Something in the code is done incorrectly in order for this to happen... :S');
701
+ new errorDataHandler_1.ErrorDataHandler('None/Ignore').pushOrBail(null, 'Fatal-Error', 'Has no ErrorDataHandler instance when calling visitYini(..)', 'Something in the code is done incorrectly in order for this to happen... :S');
703
702
  }
704
703
  _sourceType = sourceType;
705
704
  this.options = options;
706
705
  this.errorHandler = errorHandler;
707
- this.isStrict = options.isStrict;
708
- if (options.isStrict) {
709
- this.onDuplicateKey = 'error';
710
- }
711
- else {
712
- this.onDuplicateKey = 'warn';
713
- }
706
+ this.isStrict = options?.rules?.initialMode === 'strict';
707
+ this.onDuplicateKey = options?.rules?.onDuplicateKey ?? 'error'; // Different setting depending on mode.
708
+ // if (options.isStrict) {
709
+ // this.onDuplicateKey = 'error'
710
+ // } else {
711
+ // this.onDuplicateKey = 'warn'
712
+ // }
714
713
  const root = makeSection('(root)', 0);
715
714
  // this.mapSectionNamePaths.set('(root)', 0)
716
715
  this.ast = {
@@ -777,7 +776,7 @@ class ASTBuilder extends YiniParserVisitor_1.default {
777
776
  }
778
777
  }
779
778
  /** Insert a key/value into current section (duplicate handling per options). */
780
- putMember(errorHandler, ctx, sec, key, value, mode = 'warn') {
779
+ putMember(errorHandler, ctx, sec, key, value, mode = 'warn-and-keep-first') {
781
780
  (0, env_1.isDebug)() && console.log();
782
781
  (0, print_1.debugPrint)('-> Entered putMember(..)');
783
782
  (0, print_1.debugPrint)(`putMember(..): key: '${key}', value: ${value}`);
@@ -786,32 +785,45 @@ class ASTBuilder extends YiniParserVisitor_1.default {
786
785
  case 'error':
787
786
  errorHandler.pushOrBail(ctx, 'Syntax-Error', 'Hit a duplicate key in this section and scope', `Key '${key}' already exists in section '${sec.sectionName}' on level ${sec.level}.`);
788
787
  break;
789
- case 'warn':
790
- errorHandler.pushOrBail(ctx, 'Syntax-Warning', 'Hit a duplicate key (keeping first) in this section and scope', `Key '${key}' already exists in section '${sec.sectionName}' on level ${sec.level}.`);
791
- return; // keep first
788
+ case 'warn-and-keep-first':
789
+ errorHandler.pushOrBail(ctx, 'Syntax-Warning', `Hit a duplicate key (will keep first value) in this section and scope`, `Key '${key}' already exists in section '${sec.sectionName}' on level ${sec.level}.`);
790
+ return; // Keep first, don't overwrite.
791
+ case 'warn-and-overwrite':
792
+ errorHandler.pushOrBail(ctx, 'Syntax-Warning', `Overwrote a duplicate key (will keep last value) in this section and scope`, `Key '${key}' was overwritten in section '${sec.sectionName}' on level ${sec.level}.`);
793
+ break; // Overwrite, replace value.
792
794
  case 'keep-first':
793
- return;
795
+ return; // Keep first, don't overwrite.
794
796
  case 'overwrite':
795
- // replace value
796
- break;
797
+ break; // Overwrite, replace value.
797
798
  }
798
799
  }
800
+ else {
801
+ this._numOfMembers++;
802
+ }
799
803
  sec.members.set(key, value);
800
- this._numOfMembers++;
801
804
  }
802
805
  // --------------------------------
803
806
  // Public entry
804
807
  buildAST(ctx) {
805
- var _a;
806
- (_a = this.visitYini) === null || _a === void 0 ? void 0 : _a.call(this, ctx);
808
+ this.visitYini?.(ctx);
807
809
  // The document terminator is optional by default.
808
810
  // If the option `isRequireDocTerminator` is set to true,
809
811
  // the '/END' terminator at the end of the document becomes required.
810
- if (this.options.isRequireDocTerminator && !this.ast.terminatorSeen) {
811
- const msgWhat = `Missing '/END' at end of document (option 'isRequireDocTerminator' is enabled).`;
812
+ if (!this.ast.terminatorSeen &&
813
+ this.options.rules.requireDocTerminator === 'required') {
814
+ const msgWhat = `Missing '/END' at end of document (option requireDocTerminator is ${this.options.rules.requireDocTerminator}).`;
812
815
  const msgWhy = `The terminator '/END' (case insensitive) is required and must appear at the end of the document.`;
816
+ const msgHint = `This is option can be overriden by the option requireDocTerminator.`;
817
+ // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
818
+ this.errorHandler.pushOrBail(null, 'Syntax-Error', msgWhat, msgWhy, msgHint);
819
+ }
820
+ else if (!this.ast.terminatorSeen &&
821
+ this.options.rules.requireDocTerminator === 'warn-if-missing') {
822
+ const msgWhat = `Missing '/END' at end of document (option requireDocTerminator is ${this.options.rules.requireDocTerminator}).`;
823
+ const msgWhy = `The terminator '/END' (case insensitive) might be missing at the end of the document.`;
824
+ const msgHint = `This is option can be overriden by the option requireDocTerminator.`;
813
825
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
814
- this.errorHandler.pushOrBail(null, 'Syntax-Error', msgWhat, msgWhy);
826
+ this.errorHandler.pushOrBail(null, 'Syntax-Warning', msgWhat, msgWhy, msgHint);
815
827
  }
816
828
  // Note: Below is important for error checking as well as for meta data.
817
829
  this.ast.numOfSections = this.mapSectionNamePaths.size;
@@ -825,3 +837,4 @@ class ASTBuilder extends YiniParserVisitor_1.default {
825
837
  }
826
838
  }
827
839
  exports.default = ASTBuilder;
840
+ //# sourceMappingURL=astBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astBuilder.js","sourceRoot":"","sources":["../../src/core/astBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
- import { IIssuePayload, TIssueType, TPersistThreshold, TSubjectType } from './types';
1
+ import { IssuePayload } from '../types';
2
+ import { TBailSensitivityLevel, TIssueType, TSubjectType } from './internalTypes';
2
3
  /**
3
4
  * This class handles all error/notice reporting and processes exit/throwing.
4
5
  */
5
6
  export declare class ErrorDataHandler {
6
- private readonly persistThreshold;
7
7
  private readonly subjectType;
8
8
  private readonly fileName;
9
+ private readonly persistThreshold;
10
+ private readonly isQuiet;
11
+ private readonly isSilent;
12
+ private readonly isThrowOnError;
9
13
  private errors;
10
14
  private warnings;
11
15
  private notices;
@@ -25,20 +29,22 @@ export declare class ErrorDataHandler {
25
29
  - Level 1 = abort on errors only
26
30
  - Level 2 = abort even on warnings
27
31
  */
28
- constructor(subjectType: TSubjectType, threshold?: TPersistThreshold, fileName?: string | undefined);
32
+ constructor(subjectType: TSubjectType, fileName?: string | undefined, bailSensitivityLevel?: TBailSensitivityLevel, isQuiet?: boolean, // Reduce output (show only errors, does not effect warnings and etc. in meta data).
33
+ isSilent?: boolean, // Suppress all output (even errors, exit code only).
34
+ isThrowOnError?: boolean);
29
35
  private makeIssue;
30
36
  /**
31
37
  * After pushing processing may continue or exit, depending on the error
32
- * and/or the bail threshold (that can be optionally set my the user).
38
+ * and/or the bail threshold (that can be optionally set by the user).
33
39
  *
34
40
  * @note This function MIGHT result in a return, throw, or exit depending
35
- * on the bail policy (set my the user).
41
+ * on the bail policy (set by the user).
36
42
  *
37
43
  * @param ctx
38
44
  * @param type
39
45
  * @param msgWhat Name of the specific error or what failed. E.g. "Key already exists in this section scope".
40
46
  * @param msgWhy More details and more specific info about the issue/error.
41
- * @param msgHint Hint or HUMBLE description on how to fix the issue.
47
+ * @param msgHint Hint or HUMBLE suggestion on how to fix the issue.
42
48
  */
43
49
  pushOrBail(ctx: any, type: TIssueType, msgWhat: string, msgWhy?: string, msgHint?: string): void;
44
50
  private formatSignificantMessageLine;
@@ -53,8 +59,8 @@ export declare class ErrorDataHandler {
53
59
  getNumOfWarnings(): number;
54
60
  getNumOfNotices(): number;
55
61
  getNumOfInfos(): number;
56
- getErrors(): IIssuePayload[];
57
- getWarnings(): IIssuePayload[];
58
- getNotices(): IIssuePayload[];
59
- getInfos(): IIssuePayload[];
62
+ getErrors(): IssuePayload[];
63
+ getWarnings(): IssuePayload[];
64
+ getNotices(): IssuePayload[];
65
+ getInfos(): IssuePayload[];
60
66
  }