yini-parser 1.1.0-beta → 1.2.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 (91) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/dist/YINI.d.ts +143 -27
  3. package/dist/YINI.js +145 -174
  4. package/dist/YINI.js.map +1 -0
  5. package/dist/config/env.js +1 -0
  6. package/dist/config/env.js.map +1 -0
  7. package/dist/core/{ASTBuilder.d.ts → astBuilder.d.ts} +4 -4
  8. package/dist/core/{ASTBuilder.js → astBuilder.js} +81 -68
  9. package/dist/core/astBuilder.js.map +1 -0
  10. package/dist/core/{ErrorDataHandler.d.ts → errorDataHandler.d.ts} +9 -7
  11. package/dist/core/{ErrorDataHandler.js → errorDataHandler.js} +21 -61
  12. package/dist/core/errorDataHandler.js.map +1 -0
  13. package/dist/core/internalTypes.d.ts +121 -0
  14. package/dist/core/{types.js → internalTypes.js} +6 -0
  15. package/dist/core/internalTypes.js.map +1 -0
  16. package/dist/core/objectBuilder.d.ts +2 -2
  17. package/dist/core/objectBuilder.js +1 -0
  18. package/dist/core/objectBuilder.js.map +1 -0
  19. package/dist/core/options/failLevel.d.ts +3 -0
  20. package/dist/core/options/failLevel.js +27 -0
  21. package/dist/core/options/failLevel.js.map +1 -0
  22. package/dist/core/options/normalizeOptions.d.ts +5 -0
  23. package/dist/core/options/normalizeOptions.js +53 -0
  24. package/dist/core/options/normalizeOptions.js.map +1 -0
  25. package/dist/core/options/parserOptionsConstants.d.ts +7 -0
  26. package/dist/core/options/parserOptionsConstants.js +37 -0
  27. package/dist/core/options/parserOptionsConstants.js.map +1 -0
  28. package/dist/core/pipeline.d.ts +18 -0
  29. package/dist/{parseEntry.js → core/pipeline.js} +82 -215
  30. package/dist/core/pipeline.js.map +1 -0
  31. package/dist/core/resultMetadataBuilder.d.ts +19 -0
  32. package/dist/core/resultMetadataBuilder.js +166 -0
  33. package/dist/core/resultMetadataBuilder.js.map +1 -0
  34. package/dist/core/runtime.d.ts +17 -0
  35. package/dist/core/runtime.js +189 -0
  36. package/dist/core/runtime.js.map +1 -0
  37. package/dist/dev/main.d.ts +1 -0
  38. package/dist/dev/main.js +374 -0
  39. package/dist/dev/main.js.map +1 -0
  40. package/dist/grammar/{YiniLexer.js → generated/YiniLexer.js} +1 -0
  41. package/dist/grammar/generated/YiniLexer.js.map +1 -0
  42. package/dist/grammar/{YiniParser.js → generated/YiniParser.js} +1 -0
  43. package/dist/grammar/generated/YiniParser.js.map +1 -0
  44. package/dist/grammar/{YiniParserVisitor.js → generated/YiniParserVisitor.js} +1 -0
  45. package/dist/grammar/generated/YiniParserVisitor.js.map +1 -0
  46. package/dist/index.d.ts +40 -1
  47. package/dist/index.js +60 -359
  48. package/dist/index.js.map +1 -0
  49. package/dist/parsers/extractHeaderParts.d.ts +2 -2
  50. package/dist/parsers/extractHeaderParts.js +2 -1
  51. package/dist/parsers/extractHeaderParts.js.map +1 -0
  52. package/dist/parsers/extractSignificantYiniLine.js +2 -1
  53. package/dist/parsers/extractSignificantYiniLine.js.map +1 -0
  54. package/dist/parsers/parseBoolean.js +1 -0
  55. package/dist/parsers/parseBoolean.js.map +1 -0
  56. package/dist/parsers/parseNull.js +1 -0
  57. package/dist/parsers/parseNull.js.map +1 -0
  58. package/dist/parsers/parseNumber.js +1 -0
  59. package/dist/parsers/parseNumber.js.map +1 -0
  60. package/dist/parsers/parseSectionHeader.d.ts +3 -3
  61. package/dist/parsers/parseSectionHeader.js +2 -1
  62. package/dist/parsers/parseSectionHeader.js.map +1 -0
  63. package/dist/parsers/parseString.js +3 -3
  64. package/dist/parsers/parseString.js.map +1 -0
  65. package/dist/types/index.d.ts +198 -0
  66. package/dist/types/index.js +4 -0
  67. package/dist/types/index.js.map +1 -0
  68. package/dist/utils/number.js +1 -0
  69. package/dist/utils/number.js.map +1 -0
  70. package/dist/utils/object.d.ts +12 -0
  71. package/dist/utils/object.js +41 -1
  72. package/dist/utils/object.js.map +1 -0
  73. package/dist/utils/pathAndFileName.js +1 -0
  74. package/dist/utils/pathAndFileName.js.map +1 -0
  75. package/dist/utils/print.d.ts +2 -2
  76. package/dist/utils/print.js +11 -6
  77. package/dist/utils/print.js.map +1 -0
  78. package/dist/utils/string.d.ts +5 -0
  79. package/dist/utils/string.js +10 -1
  80. package/dist/utils/string.js.map +1 -0
  81. package/dist/utils/system.js +1 -0
  82. package/dist/utils/system.js.map +1 -0
  83. package/dist/{yiniHelpers.d.ts → utils/yiniHelpers.d.ts} +1 -1
  84. package/dist/{yiniHelpers.js → utils/yiniHelpers.js} +3 -2
  85. package/dist/utils/yiniHelpers.js.map +1 -0
  86. package/package.json +7 -5
  87. package/dist/core/types.d.ts +0 -249
  88. package/dist/parseEntry.d.ts +0 -3
  89. /package/dist/grammar/{YiniLexer.d.ts → generated/YiniLexer.d.ts} +0 -0
  90. /package/dist/grammar/{YiniParser.d.ts → generated/YiniParser.d.ts} +0 -0
  91. /package/dist/grammar/{YiniParserVisitor.d.ts → generated/YiniParserVisitor.d.ts} +0 -0
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ /**
3
+ * This file is the orchestrator that wires up the pipeline (lexer → parser →
4
+ * astBuilder → objectBuilder, etc.)
5
+ */
2
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
7
  if (k2 === undefined) k2 = k;
4
8
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -36,20 +40,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
41
  };
38
42
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports._parseMain = void 0;
43
+ exports.runPipeline = void 0;
40
44
  const perf_hooks_1 = require("perf_hooks");
45
+ const util_1 = require("util");
41
46
  const antlr4_1 = require("antlr4");
42
- const env_1 = require("./config/env");
43
- const ASTBuilder_1 = __importDefault(require("./core/ASTBuilder"));
44
- const ErrorDataHandler_1 = require("./core/ErrorDataHandler");
45
- const objectBuilder_1 = require("./core/objectBuilder");
46
- const YiniLexer_1 = __importDefault(require("./grammar/YiniLexer"));
47
- const YiniParser_1 = __importStar(require("./grammar/YiniParser"));
48
- const object_1 = require("./utils/object");
49
- const print_1 = require("./utils/print");
50
- const string_1 = require("./utils/string");
51
- const system_1 = require("./utils/system");
52
- const pkg = require('../package.json');
47
+ const env_1 = require("../config/env");
48
+ const YiniLexer_1 = __importDefault(require("../grammar/generated/YiniLexer"));
49
+ const YiniParser_1 = __importStar(require("../grammar/generated/YiniParser"));
50
+ const object_1 = require("../utils/object");
51
+ const print_1 = require("../utils/print");
52
+ const astBuilder_1 = __importDefault(require("./astBuilder"));
53
+ const errorDataHandler_1 = require("./errorDataHandler");
54
+ const objectBuilder_1 = require("./objectBuilder");
55
+ const resultMetadataBuilder_1 = require("./resultMetadataBuilder");
53
56
  /**
54
57
  * @param line Line number as 1-based.
55
58
  * @param col Column number as 0-based.
@@ -68,16 +71,15 @@ const createGeneralCtx = (line, endColumn, startColumn = undefined) => {
68
71
  return ctx;
69
72
  };
70
73
  const parsePossibleStartCol = (errorHandler, recognizer) => {
71
- var _a, _b;
72
74
  let possibleStartCol = undefined;
73
75
  try {
74
- possibleStartCol = ((_a = recognizer === null || recognizer === void 0 ? void 0 : recognizer._ctx.start) === null || _a === void 0 ? void 0 : _a.column)
75
- ? ((_b = recognizer === null || recognizer === void 0 ? void 0 : recognizer._ctx.start) === null || _b === void 0 ? void 0 : _b.column) + 1
76
+ possibleStartCol = recognizer?._ctx.start?.column
77
+ ? recognizer?._ctx.start?.column + 1
76
78
  : undefined;
77
79
  }
78
80
  catch (err) {
79
81
  let msgHint = '';
80
- if ((0, system_1.isError)(err)) {
82
+ if ((0, util_1.isError)(err)) {
81
83
  msgHint = 'Error: ' + err.message;
82
84
  }
83
85
  else {
@@ -134,42 +136,47 @@ class MyLexerErrorListener {
134
136
  this.errorHandler.pushOrBail(ctx, 'Syntax-Error', msgWhat, msgWhy);
135
137
  }
136
138
  }
137
- /** Single source of truth. */
138
- const _parseMain = (yiniContent,
139
- // options: IParseMainOptions = {
140
- options = {
141
- isStrict: false,
142
- bailSensitivity: 0,
143
- isIncludeMeta: false,
144
- isWithDiagnostics: false,
145
- isWithTiming: false,
146
- isKeepUndefinedInMeta: false,
147
- isRequireDocTerminator: false,
148
- }, runtimeInfo) => {
139
+ /**
140
+ * @internal Single source of truth.
141
+ *
142
+ * Entrypoint for the YINI parsing pipeline:
143
+ * tokenization → grammar parse → AST build → object build → result.
144
+ *
145
+ * @param _meta_userOpts The user options from which the core options were
146
+ * derived/resolved from. This object is provided only for debugging
147
+ * and metadata purposes and should not be relied upon in
148
+ * application logic.
149
+ */
150
+ const runPipeline = (yiniContent, coreOptions, runtimeInfo, _meta_userOpts) => {
149
151
  (0, print_1.debugPrint)();
150
152
  (0, print_1.debugPrint)('-> Entered parseMain(..) in parseEntry');
151
- (0, print_1.debugPrint)(' isStrict mode = ' + options.isStrict);
152
- (0, print_1.debugPrint)(' bailSensitivity = ' + options.bailSensitivity);
153
- (0, print_1.debugPrint)(' isIncludeMeta = ' + options.isIncludeMeta);
154
- (0, print_1.debugPrint)(' isWithDiagnostics = ' + options.isWithDiagnostics);
155
- (0, print_1.debugPrint)(' isWithTiming = ' + options.isWithTiming);
156
- (0, print_1.debugPrint)(' requireDocTerminator = ' + options.isRequireDocTerminator);
157
- (0, print_1.debugPrint)('runtimeInfo.sourceType = ' + runtimeInfo.sourceType);
158
- (0, print_1.debugPrint)(' runtimeInfo.fileName = ' + runtimeInfo.fileName);
159
- let persistThreshold;
160
- switch (options.bailSensitivity) {
161
- case 0:
162
- persistThreshold = '0-Ignore-Errors';
163
- break;
164
- case 1:
165
- persistThreshold = '1-Abort-on-Errors';
166
- break;
167
- default:
168
- persistThreshold = '2-Abort-Even-on-Warnings';
169
- }
170
- const errorHandler = new ErrorDataHandler_1.ErrorDataHandler(runtimeInfo.sourceType, persistThreshold, runtimeInfo.fileName);
153
+ (0, print_1.debugPrint)(' isStrict mode = ' + coreOptions.isStrict);
154
+ (0, print_1.debugPrint)(' bailSensitivity = ' + coreOptions.bailSensitivity);
155
+ (0, print_1.debugPrint)(' isIncludeMeta = ' + coreOptions.isIncludeMeta);
156
+ (0, print_1.debugPrint)(' isWithDiagnostics = ' + coreOptions.isWithDiagnostics);
157
+ (0, print_1.debugPrint)(' isWithTiming = ' + coreOptions.isWithTiming);
158
+ (0, print_1.debugPrint)(' isKeepUndefinedInMeta = ' + coreOptions.isKeepUndefinedInMeta);
159
+ (0, print_1.debugPrint)('isAvoidWarningsInConsole = ' + coreOptions.isAvoidWarningsInConsole);
160
+ (0, print_1.debugPrint)(' requireDocTerminator = ' + coreOptions.requireDocTerminator);
161
+ (0, print_1.debugPrint)(' treatEmptyValueAsNull = ' + coreOptions.treatEmptyValueAsNull);
162
+ (0, print_1.debugPrint)(' onDuplicateKey = ' + coreOptions.onDuplicateKey);
163
+ (0, print_1.debugPrint)();
164
+ (0, print_1.debugPrint)(' runtimeInfo.sourceType = ' + runtimeInfo.sourceType);
165
+ (0, print_1.debugPrint)(' runtimeInfo.fileName = ' + runtimeInfo.fileName);
166
+ // let persistThreshold: TBailSensitivityLevel
167
+ // switch (coreOptions.bailSensitivity) {
168
+ // case '0-Ignore-Errors':
169
+ // persistThreshold = '0-Ignore-Errors'
170
+ // break
171
+ // case 1:
172
+ // persistThreshold = '1-Abort-on-Errors'
173
+ // break
174
+ // default:
175
+ // persistThreshold = '2-Abort-Even-on-Warnings'
176
+ // }
177
+ const errorHandler = new errorDataHandler_1.ErrorDataHandler(runtimeInfo.sourceType, runtimeInfo.fileName, coreOptions.bailSensitivity, coreOptions.isAvoidWarningsInConsole);
171
178
  if (yiniContent.trim() === '') {
172
- const isFileSourceType = (runtimeInfo === null || runtimeInfo === void 0 ? void 0 : runtimeInfo.sourceType) === 'File';
179
+ const isFileSourceType = runtimeInfo?.sourceType === 'File';
173
180
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
174
181
  errorHandler.pushOrBail(null, 'Syntax-Error', 'Empty YINI document.', `The input is blank or contains only whitespace in the ${isFileSourceType ? 'YINI file' : 'YINI inline content'}.`, `Tip: Add at least one section '^ SectionName' or a key-value pair 'key = value' to make it a valid YINI file.`);
175
182
  }
@@ -210,7 +217,7 @@ options = {
210
217
  (0, print_1.debugPrint)('=== Ended phase 1 =============================================');
211
218
  (0, env_1.isDebug)() && console.log();
212
219
  (0, print_1.debugPrint)('=== Phase 2 - Parsing ===================================================');
213
- if (options.isWithTiming) {
220
+ if (coreOptions.isWithTiming) {
214
221
  timeEnd1Ms = perf_hooks_1.performance.now();
215
222
  }
216
223
  const parser = new YiniParser_1.default(tokenStream);
@@ -230,10 +237,10 @@ options = {
230
237
  (0, print_1.debugPrint)('=== Ended phase 2 =============================================');
231
238
  (0, env_1.isDebug)() && console.log();
232
239
  (0, print_1.debugPrint)('=== Phase 3 - AST Model build & validation ===================================================');
233
- if (options.isWithTiming) {
240
+ if (coreOptions.isWithTiming) {
234
241
  timeEnd2Ms = perf_hooks_1.performance.now();
235
242
  }
236
- const builder = new ASTBuilder_1.default(errorHandler, options, runtimeInfo.sourceType, runtimeInfo.fileName || null);
243
+ const builder = new astBuilder_1.default(errorHandler, coreOptions, runtimeInfo.sourceType, runtimeInfo.fileName || null);
237
244
  const ast = builder.buildAST(parseTree);
238
245
  if (ast.numOfMembers === 0 && ast.numOfSections === 0) {
239
246
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
@@ -251,7 +258,7 @@ options = {
251
258
  (0, print_1.debugPrint)('=== Ended phase 3 =============================================');
252
259
  (0, env_1.isDebug)() && console.log();
253
260
  (0, print_1.debugPrint)('=== Phase 4 - Object Building Construction / Binding / Evaluation) ===================================================');
254
- if (options.isWithTiming) {
261
+ if (coreOptions.isWithTiming) {
255
262
  timeEnd3Ms = perf_hooks_1.performance.now();
256
263
  }
257
264
  // Construct.
@@ -272,7 +279,7 @@ options = {
272
279
  (0, print_1.debugPrint)('visitor.visit(..): finalJSResult:');
273
280
  (0, env_1.isDebug)() && console.debug(finalJSResult);
274
281
  (0, print_1.debugPrint)();
275
- if (options.isStrict) {
282
+ if (coreOptions.isStrict) {
276
283
  // Note, after pushing processing may continue or exit, depending on the error and/or the bail threshold.
277
284
  errorHandler.pushOrBail(null, 'Syntax-Warning', 'Warning: Strict mode is not yet fully implemented.', 'Some validation rules may still be missing or incomplete.');
278
285
  }
@@ -280,177 +287,37 @@ options = {
280
287
  (0, print_1.debugPrint)('visitor.visit(..): finalJSResult:');
281
288
  (0, env_1.isDebug)() && console.debug(finalJSResult);
282
289
  }
283
- const constructResultMetaData = () => {
284
- // --- Construct meta information -------------------------------------
285
- const to3 = (n) => Number.parseFloat(n.toFixed(3));
286
- // Construct meta data.
287
- const metaData = {
288
- parserVersion: pkg.version,
289
- mode: options.isStrict ? 'strict' : 'lenient',
290
- orderPreserved: true,
291
- totalErrors: errorHandler.getNumOfErrors(),
292
- totalWarnings: errorHandler.getNumOfWarnings(),
293
- totalMessages: errorHandler.getNumOfAllMessages(),
294
- runStartedAt,
295
- runFinishedAt,
296
- durationMs: to3(durationMs),
297
- source: {
298
- sourceType: (0, string_1.toLowerSnakeCase)(ast.sourceType),
299
- fileName: ast.fileName,
300
- hasDocumentTerminator: ast.terminatorSeen,
301
- hasYiniMarker: ast.yiniMarkerSeen,
302
- lineCount: runtimeInfo.lineCount,
303
- byteSize: runtimeInfo.fileByteSize,
304
- sha256: runtimeInfo.sha256,
305
- },
306
- structure: {
307
- maxDepth: ast.maxDepth,
308
- sectionCount: ast.numOfSections,
309
- memberCount: ast.numOfMembers,
310
- keysParsedCount: null,
311
- // objectCount: null,
312
- // listCount: null,
313
- sectionNamePaths: ast.sectionNamePaths,
314
- },
315
- metaSchemaVersion: '1.0.0',
316
- };
317
- // Attach optional diagnostics.
318
- if (options.isWithDiagnostics) {
319
- const mapLevelKey = (level) => {
320
- switch (level) {
321
- case 0:
322
- return 'ignore_errors';
323
- case 1:
324
- return 'abort_on_errors';
325
- case 2:
326
- return 'abort_on_warnings';
327
- }
328
- };
329
- const mapLevelLabel = (level) => {
330
- switch (level) {
331
- case 0:
332
- return '0-Ignore-Errors';
333
- case 1:
334
- return '1-Abort-on-Errors';
335
- case 2:
336
- return '2-Abort-Even-on-Warnings';
337
- }
338
- };
339
- const mapLevelDescription = (level) => {
340
- switch (level) {
341
- case 0:
342
- return 'Continue despite errors.';
343
- case 1:
344
- return 'Abort when errors occur.';
345
- case 2:
346
- return 'Abort when errors or warnings occur.';
347
- }
348
- return null;
349
- };
350
- metaData.diagnostics = {
351
- failLevel: {
352
- preferredLevel: runtimeInfo.preferredBailSensitivity,
353
- levelUsed: options.bailSensitivity,
354
- levelKey: mapLevelKey(options.bailSensitivity),
355
- levelLabel: mapLevelLabel(options.bailSensitivity),
356
- levelDescription: (mapLevelDescription(options.bailSensitivity)),
357
- },
358
- errors: {
359
- errorCount: errorHandler.getNumOfErrors(),
360
- payload: errorHandler.getErrors(),
361
- },
362
- warnings: {
363
- warningCount: errorHandler.getNumOfWarnings(),
364
- payload: errorHandler.getWarnings(),
365
- },
366
- notices: {
367
- noticeCount: errorHandler.getNumOfNotices(),
368
- payload: errorHandler.getNotices(),
369
- },
370
- infos: {
371
- infoCount: errorHandler.getNumOfInfos(),
372
- payload: errorHandler.getInfos(),
373
- },
374
- environment: {
375
- NODE_ENV: process.env.NODE_ENV,
376
- APP_ENV: process.env.APP_ENV,
377
- lib: {
378
- nodeEnv: env_1.localNodeEnv,
379
- appEnv: env_1.localAppEnv,
380
- flags: { isDev: (0, env_1.isDev)(), isDebug: (0, env_1.isDebug)() },
381
- },
382
- },
383
- optionsUsed: {
384
- // NOTE: (!) These MUST user options.
385
- strictMode: options.isStrict,
386
- failLevel: options.bailSensitivity,
387
- includeMetaData: options.isIncludeMeta,
388
- includeDiagnostics: options.isWithDiagnostics,
389
- includeTiming: options.isWithTiming,
390
- preserveUndefinedInMeta: options.isKeepUndefinedInMeta,
391
- requireDocTerminator: options.isRequireDocTerminator,
392
- },
393
- };
394
- }
395
- // Attach optional durations timing data.
396
- if (options.isWithTiming) {
397
- metaData.timing = {
398
- total: !options.isWithTiming
399
- ? null
400
- : {
401
- timeMs: to3(durationMs), // durationMs = timeEnd4Ms - timeStartMs
402
- name: runtimeInfo.sourceType === 'Inline'
403
- ? 'Total'
404
- : 'Total (excluding phase0 (I/O))',
405
- },
406
- phase0: !options.isWithTiming || runtimeInfo.sourceType === 'Inline'
407
- ? undefined
408
- : {
409
- timeMs: to3(runtimeInfo.timeIoMs),
410
- name: 'I/O',
411
- },
412
- phase1: !options.isWithTiming
413
- ? null
414
- : {
415
- timeMs: to3(timeEnd1Ms - timeStartMs),
416
- name: 'Lexing',
417
- },
418
- phase2: !options.isWithTiming
419
- ? null
420
- : {
421
- timeMs: to3(timeEnd2Ms - timeEnd1Ms),
422
- name: 'Parsing',
423
- },
424
- phase3: !options.isWithTiming
425
- ? null
426
- : {
427
- timeMs: to3(timeEnd3Ms - timeEnd2Ms),
428
- name: 'AST Building',
429
- },
430
- phase4: !options.isWithTiming
431
- ? null
432
- : {
433
- timeMs: to3(timeEnd4Ms - timeEnd3Ms),
434
- name: 'Object Building',
435
- },
436
- };
437
- }
438
- return metaData;
290
+ const params = {
291
+ ast,
292
+ coreOptions,
293
+ runtimeInfo,
294
+ _meta_userOpts,
295
+ errorHandler,
296
+ runStartedAt,
297
+ runFinishedAt,
298
+ durationMs,
299
+ timeStartMs,
300
+ timeEnd1Ms,
301
+ timeEnd2Ms,
302
+ timeEnd3Ms,
303
+ timeEnd4Ms,
439
304
  };
305
+ const constructedMetadata = (0, resultMetadataBuilder_1.buildResultMetadata)(params);
440
306
  (0, print_1.debugPrint)('getNumOfErrors(): ' + errorHandler.getNumOfErrors());
441
307
  if (errorHandler.getNumOfErrors()) {
442
308
  console.log();
443
309
  console.log('Parsing is complete, but some problems were detected. Please see the errors above for details.');
444
310
  console.log('Number of errors found: ' + errorHandler.getNumOfErrors());
445
311
  }
446
- if (options.isIncludeMeta) {
312
+ if (coreOptions.isIncludeMeta) {
447
313
  return {
448
314
  result: finalJSResult,
449
- meta: !options.isKeepUndefinedInMeta
450
- ? (0, object_1.removeUndefinedDeep)(constructResultMetaData())
451
- : constructResultMetaData(),
315
+ meta: !coreOptions.isKeepUndefinedInMeta
316
+ ? (0, object_1.removeUndefinedDeep)(constructedMetadata)
317
+ : constructedMetadata,
452
318
  };
453
319
  }
454
320
  return finalJSResult;
455
321
  };
456
- exports._parseMain = _parseMain;
322
+ exports.runPipeline = runPipeline;
323
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/core/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { AllUserOptions, ResultMetadata } from '../types';
2
+ import { ErrorDataHandler } from './errorDataHandler';
3
+ import { IParseCoreOptions, IRuntimeInfo, IYiniAST } from './internalTypes';
4
+ export interface IBuildResultMetadataParams {
5
+ ast: IYiniAST;
6
+ coreOptions: IParseCoreOptions;
7
+ runtimeInfo: IRuntimeInfo;
8
+ _meta_userOpts: AllUserOptions;
9
+ errorHandler: ErrorDataHandler;
10
+ runStartedAt: string;
11
+ runFinishedAt: string;
12
+ durationMs: number;
13
+ timeStartMs: number;
14
+ timeEnd1Ms: number;
15
+ timeEnd2Ms: number;
16
+ timeEnd3Ms: number;
17
+ timeEnd4Ms: number;
18
+ }
19
+ export declare const buildResultMetadata: (p: IBuildResultMetadataParams) => ResultMetadata;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildResultMetadata = void 0;
7
+ // const pkg = require('../../package.json')
8
+ const package_json_1 = __importDefault(require("../../package.json")); // NOTE: Requires "resolveJsonModule": true (or "esModuleInterop": true).
9
+ const env_1 = require("../config/env");
10
+ const object_1 = require("../utils/object");
11
+ const string_1 = require("../utils/string");
12
+ const buildResultMetadata = (p) => {
13
+ // --- Construct meta information -------------------------------------
14
+ const to3 = (n) => Number.parseFloat(n.toFixed(3));
15
+ // Construct meta data.
16
+ const metadata = {
17
+ parserVersion: package_json_1.default.version,
18
+ mode: p.coreOptions.isStrict ? 'strict' : 'lenient',
19
+ totalErrors: p.errorHandler.getNumOfErrors(),
20
+ totalWarnings: p.errorHandler.getNumOfWarnings(),
21
+ totalMessages: p.errorHandler.getNumOfAllMessages(),
22
+ runStartedAt: p.runStartedAt,
23
+ runFinishedAt: p.runFinishedAt,
24
+ durationMs: to3(p.durationMs),
25
+ preservesOrder: true,
26
+ orderGuarantee: 'implementation-defined',
27
+ source: {
28
+ // sourceType: toLowerSnakeCase(ast.sourceType),
29
+ sourceType: (0, string_1.toLowerKebabCase)(p.ast.sourceType),
30
+ fileName: p.ast.fileName,
31
+ hasDocumentTerminator: p.ast.terminatorSeen,
32
+ hasYiniMarker: p.ast.yiniMarkerSeen,
33
+ lineCount: p.runtimeInfo.lineCount,
34
+ byteSize: p.runtimeInfo.fileByteSize,
35
+ sha256: p.runtimeInfo.sha256,
36
+ },
37
+ structure: {
38
+ maxDepth: p.ast.maxDepth,
39
+ sectionCount: p.ast.numOfSections,
40
+ memberCount: p.ast.numOfMembers,
41
+ keysParsedCount: null,
42
+ // objectCount: null,
43
+ // listCount: null,
44
+ sectionNamePaths: p.ast.sectionNamePaths,
45
+ },
46
+ metaSchemaVersion: '1.1.0',
47
+ };
48
+ // Attach optional diagnostics.
49
+ if (p.coreOptions.isWithDiagnostics) {
50
+ const mapLevelKey = (level) => {
51
+ switch (level) {
52
+ case '0-Ignore-Errors':
53
+ return 'ignore-errors';
54
+ case '1-Abort-on-Errors':
55
+ return 'errors';
56
+ case '2-Abort-Even-on-Warnings':
57
+ return 'warnings-and-errors';
58
+ }
59
+ };
60
+ const mapLevelDescription = (level) => {
61
+ switch (level) {
62
+ case '0-Ignore-Errors':
63
+ return 'Continue despite errors.';
64
+ case '1-Abort-on-Errors':
65
+ return 'Abort when errors occur.';
66
+ case '2-Abort-Even-on-Warnings':
67
+ return 'Abort when errors or warnings occur.';
68
+ }
69
+ return null;
70
+ };
71
+ metadata.diagnostics = {
72
+ failLevel: {
73
+ preferredLevel: p.runtimeInfo.preferredBailSensitivity,
74
+ usedLevelType: p.coreOptions.bailSensitivity,
75
+ usedLevelKey: mapLevelKey(p.coreOptions.bailSensitivity),
76
+ levelDescription: (mapLevelDescription(p.coreOptions.bailSensitivity)),
77
+ },
78
+ errors: {
79
+ errorCount: p.errorHandler.getNumOfErrors(),
80
+ payload: p.errorHandler.getErrors(),
81
+ },
82
+ warnings: {
83
+ warningCount: p.errorHandler.getNumOfWarnings(),
84
+ payload: p.errorHandler.getWarnings(),
85
+ },
86
+ notices: {
87
+ noticeCount: p.errorHandler.getNumOfNotices(),
88
+ payload: p.errorHandler.getNotices(),
89
+ },
90
+ infos: {
91
+ infoCount: p.errorHandler.getNumOfInfos(),
92
+ payload: p.errorHandler.getInfos(),
93
+ },
94
+ environment: {
95
+ NODE_ENV: process.env.NODE_ENV,
96
+ APP_ENV: process.env.APP_ENV,
97
+ lib: {
98
+ nodeEnv: env_1.localNodeEnv,
99
+ appEnv: env_1.localAppEnv,
100
+ flags: { isDev: (0, env_1.isDev)(), isDebug: (0, env_1.isDebug)() },
101
+ },
102
+ },
103
+ effectiveOptions: (0, object_1.sortObjectKeys)({
104
+ // IMPORTANT: (!) These user options MUST be mapped from coreOptions (to user options).
105
+ strictMode: p.coreOptions.isStrict,
106
+ failLevel: mapLevelKey(p.coreOptions.bailSensitivity),
107
+ includeMetadata: p.coreOptions.isIncludeMeta,
108
+ includeDiagnostics: p.coreOptions.isWithDiagnostics,
109
+ includeTiming: p.coreOptions.isWithTiming,
110
+ preserveUndefinedInMeta: p.coreOptions.isKeepUndefinedInMeta,
111
+ suppressWarnings: p.coreOptions.isAvoidWarningsInConsole,
112
+ requireDocTerminator: p.coreOptions.requireDocTerminator,
113
+ treatEmptyValueAsNull: p.coreOptions.treatEmptyValueAsNull,
114
+ onDuplicateKey: p.coreOptions.onDuplicateKey,
115
+ }),
116
+ options: (0, object_1.sortObjectKeys)(p._meta_userOpts),
117
+ };
118
+ }
119
+ // Attach optional durations timing data.
120
+ if (p.coreOptions.isWithTiming) {
121
+ metadata.timing = {
122
+ total: !p.coreOptions.isWithTiming
123
+ ? null
124
+ : {
125
+ timeMs: to3(p.durationMs), // durationMs = timeEnd4Ms - timeStartMs
126
+ name: p.runtimeInfo.sourceType === 'Inline'
127
+ ? 'Total'
128
+ : 'Total (excluding phase0 (I/O))',
129
+ },
130
+ phase0: !p.coreOptions.isWithTiming ||
131
+ p.runtimeInfo.sourceType === 'Inline'
132
+ ? undefined
133
+ : {
134
+ timeMs: to3(p.runtimeInfo.timeIoMs),
135
+ name: 'I/O',
136
+ },
137
+ phase1: !p.coreOptions.isWithTiming
138
+ ? null
139
+ : {
140
+ timeMs: to3(p.timeEnd1Ms - p.timeStartMs),
141
+ name: 'Lexing',
142
+ },
143
+ phase2: !p.coreOptions.isWithTiming
144
+ ? null
145
+ : {
146
+ timeMs: to3(p.timeEnd2Ms - p.timeEnd1Ms),
147
+ name: 'Parsing',
148
+ },
149
+ phase3: !p.coreOptions.isWithTiming
150
+ ? null
151
+ : {
152
+ timeMs: to3(p.timeEnd3Ms - p.timeEnd2Ms),
153
+ name: 'AST Building',
154
+ },
155
+ phase4: !p.coreOptions.isWithTiming
156
+ ? null
157
+ : {
158
+ timeMs: to3(p.timeEnd4Ms - p.timeEnd3Ms),
159
+ name: 'Object Building',
160
+ },
161
+ };
162
+ }
163
+ return metadata;
164
+ };
165
+ exports.buildResultMetadata = buildResultMetadata;
166
+ //# sourceMappingURL=resultMetadataBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resultMetadataBuilder.js","sourceRoot":"","sources":["../../src/core/resultMetadataBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { AllUserOptions, ParsedObject, PreferredFailLevel } from '../types';
2
+ /**
3
+ * Private class representing a runtime context for a single parse call.
4
+ *
5
+ * @note This design prevents race conditions: each call gets its own
6
+ * runtimeInfo and related state. Without this, multiple calls
7
+ * (especially in parallel) could overwrite each other's data.
8
+ */
9
+ export declare class YiniRuntime {
10
+ #private;
11
+ constructor(sourceType: 'Inline' | 'File');
12
+ private makeRuntimeInfo;
13
+ doParse(yiniContent: string, strictMode?: boolean, failLevel?: PreferredFailLevel, includeMetadata?: boolean): ParsedObject;
14
+ doParse(yiniContent: string, options?: AllUserOptions): ParsedObject;
15
+ doParseFile(filePath: string, strictMode?: boolean, failLevel?: PreferredFailLevel, includeMetadata?: boolean): ParsedObject;
16
+ doParseFile(filePath: string, options?: AllUserOptions): ParsedObject;
17
+ }