yini-parser 1.0.2-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 (103) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +83 -98
  3. package/dist/YINI.d.ts +162 -23
  4. package/dist/YINI.js +183 -99
  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 +191 -0
  9. package/dist/core/astBuilder.js +840 -0
  10. package/dist/core/astBuilder.js.map +1 -0
  11. package/dist/core/{ErrorDataHandler.d.ts → errorDataHandler.d.ts} +21 -19
  12. package/dist/core/errorDataHandler.js +271 -0
  13. package/dist/core/errorDataHandler.js.map +1 -0
  14. package/dist/core/internalTypes.d.ts +121 -0
  15. package/dist/core/internalTypes.js +16 -0
  16. package/dist/core/internalTypes.js.map +1 -0
  17. package/dist/core/objectBuilder.d.ts +10 -4
  18. package/dist/core/objectBuilder.js +127 -163
  19. package/dist/core/objectBuilder.js.map +1 -0
  20. package/dist/core/options/failLevel.d.ts +3 -0
  21. package/dist/core/options/failLevel.js +27 -0
  22. package/dist/core/options/failLevel.js.map +1 -0
  23. package/dist/core/options/normalizeOptions.d.ts +5 -0
  24. package/dist/core/options/normalizeOptions.js +53 -0
  25. package/dist/core/options/normalizeOptions.js.map +1 -0
  26. package/dist/core/options/parserOptionsConstants.d.ts +7 -0
  27. package/dist/core/options/parserOptionsConstants.js +37 -0
  28. package/dist/core/options/parserOptionsConstants.js.map +1 -0
  29. package/dist/core/pipeline.d.ts +18 -0
  30. package/dist/core/pipeline.js +323 -0
  31. package/dist/core/pipeline.js.map +1 -0
  32. package/dist/core/resultMetadataBuilder.d.ts +19 -0
  33. package/dist/core/resultMetadataBuilder.js +166 -0
  34. package/dist/core/resultMetadataBuilder.js.map +1 -0
  35. package/dist/core/runtime.d.ts +17 -0
  36. package/dist/core/runtime.js +189 -0
  37. package/dist/core/runtime.js.map +1 -0
  38. package/dist/dev/main.d.ts +1 -0
  39. package/dist/dev/main.js +374 -0
  40. package/dist/dev/main.js.map +1 -0
  41. package/dist/grammar/generated/YiniLexer.d.ts +74 -0
  42. package/dist/grammar/generated/YiniLexer.js +415 -0
  43. package/dist/grammar/generated/YiniLexer.js.map +1 -0
  44. package/dist/grammar/{YiniParser.d.ts → generated/YiniParser.d.ts} +167 -150
  45. package/dist/grammar/{YiniParser.js → generated/YiniParser.js} +1242 -1202
  46. package/dist/grammar/generated/YiniParser.js.map +1 -0
  47. package/dist/grammar/{YiniParserVisitor.d.ts → generated/YiniParserVisitor.d.ts} +59 -45
  48. package/dist/grammar/{YiniParserVisitor.js → generated/YiniParserVisitor.js} +2 -1
  49. package/dist/grammar/generated/YiniParserVisitor.js.map +1 -0
  50. package/dist/index.d.ts +43 -2
  51. package/dist/index.js +62 -101
  52. package/dist/index.js.map +1 -0
  53. package/dist/parsers/extractHeaderParts.d.ts +4 -3
  54. package/dist/parsers/extractHeaderParts.js +3 -1
  55. package/dist/parsers/extractHeaderParts.js.map +1 -0
  56. package/dist/parsers/extractSignificantYiniLine.js +2 -1
  57. package/dist/parsers/extractSignificantYiniLine.js.map +1 -0
  58. package/dist/parsers/parseBoolean.d.ts +1 -1
  59. package/dist/parsers/parseBoolean.js +3 -1
  60. package/dist/parsers/parseBoolean.js.map +1 -0
  61. package/dist/parsers/parseNull.js +1 -0
  62. package/dist/parsers/parseNull.js.map +1 -0
  63. package/dist/parsers/parseNumber.d.ts +8 -3
  64. package/dist/parsers/parseNumber.js +22 -7
  65. package/dist/parsers/parseNumber.js.map +1 -0
  66. package/dist/parsers/parseSectionHeader.d.ts +5 -4
  67. package/dist/parsers/parseSectionHeader.js +3 -1
  68. package/dist/parsers/parseSectionHeader.js.map +1 -0
  69. package/dist/parsers/parseString.js +3 -3
  70. package/dist/parsers/parseString.js.map +1 -0
  71. package/dist/types/index.d.ts +198 -0
  72. package/dist/types/index.js +4 -0
  73. package/dist/types/index.js.map +1 -0
  74. package/dist/utils/number.d.ts +3 -0
  75. package/dist/utils/number.js +19 -0
  76. package/dist/utils/number.js.map +1 -0
  77. package/dist/utils/object.d.ts +67 -0
  78. package/dist/utils/object.js +125 -0
  79. package/dist/utils/object.js.map +1 -0
  80. package/dist/utils/pathAndFileName.js +1 -0
  81. package/dist/utils/pathAndFileName.js.map +1 -0
  82. package/dist/utils/print.d.ts +2 -2
  83. package/dist/utils/print.js +11 -6
  84. package/dist/utils/print.js.map +1 -0
  85. package/dist/utils/string.d.ts +26 -1
  86. package/dist/utils/string.js +48 -4
  87. package/dist/utils/string.js.map +1 -0
  88. package/dist/utils/system.d.ts +15 -0
  89. package/dist/utils/system.js +22 -0
  90. package/dist/utils/system.js.map +1 -0
  91. package/dist/{yiniHelpers.d.ts → utils/yiniHelpers.d.ts} +3 -0
  92. package/dist/{yiniHelpers.js → utils/yiniHelpers.js} +46 -9
  93. package/dist/utils/yiniHelpers.js.map +1 -0
  94. package/package.json +7 -5
  95. package/dist/core/ErrorDataHandler.js +0 -203
  96. package/dist/core/YINIVisitor.d.ts +0 -158
  97. package/dist/core/YINIVisitor.js +0 -1008
  98. package/dist/core/types.d.ts +0 -59
  99. package/dist/core/types.js +0 -36
  100. package/dist/grammar/YiniLexer.d.ts +0 -68
  101. package/dist/grammar/YiniLexer.js +0 -379
  102. package/dist/parseEntry.d.ts +0 -2
  103. package/dist/parseEntry.js +0 -185
@@ -1,185 +0,0 @@
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.parseMain = void 0;
7
- const antlr4_1 = require("antlr4");
8
- const env_1 = require("./config/env");
9
- const ErrorDataHandler_1 = require("./core/ErrorDataHandler");
10
- const objectBuilder_1 = require("./core/objectBuilder");
11
- const YINIVisitor_1 = __importDefault(require("./core/YINIVisitor"));
12
- const YiniLexer_1 = __importDefault(require("./grammar/YiniLexer"));
13
- const YiniParser_1 = __importDefault(require("./grammar/YiniParser"));
14
- const print_1 = require("./utils/print");
15
- class MyParserErrorListener {
16
- constructor(errorHandler) {
17
- this.errors = [];
18
- this.errorHandler = errorHandler;
19
- }
20
- syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) {
21
- (0, print_1.debugPrint)('ANTLR parser cached an error');
22
- this.errors.push(`Line ${line}:${charPositionInLine} ${msg}`);
23
- const msgWhat = `Syntax error, at line: ${line}`;
24
- const msgWhy = `At about column ${1 + charPositionInLine} ${msg}`;
25
- this.errorHandler.pushOrBail(null, 'Syntax-Error', msgWhat, msgWhy);
26
- }
27
- // The following are required for the interface, but can be left empty.
28
- reportAmbiguity(...args) { }
29
- reportAttemptingFullContext(...args) { }
30
- reportContextSensitivity(...args) { }
31
- }
32
- class MyLexerErrorListener {
33
- constructor(errorHandler) {
34
- this.errors = [];
35
- this.errorHandler = errorHandler;
36
- }
37
- syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) {
38
- // Handle the error as you want:
39
- (0, print_1.debugPrint)('ANTLR parser cached an error');
40
- this.errors.push(`Line ${line}:${charPositionInLine} ${msg}`);
41
- const msgWhat = `Syntax error, at line: ${line}`;
42
- const msgWhy = `At about column ${1 + charPositionInLine} ${msg}`;
43
- this.errorHandler.pushOrBail(null, 'Syntax-Error', msgWhat, msgWhy);
44
- }
45
- }
46
- const parseMain = (yiniContent, options = {
47
- isStrict: false,
48
- bailSensitivityLevel: 0,
49
- isIncludeMeta: false,
50
- isWithDiagnostics: false,
51
- isWithTiming: false,
52
- }) => {
53
- (0, print_1.debugPrint)();
54
- (0, print_1.debugPrint)('-> Entered parseMain(..) in parseEntry');
55
- (0, print_1.debugPrint)(' isStrict mode = ' + options.isStrict);
56
- (0, print_1.debugPrint)('bailSensitivityLevel = ' + options.bailSensitivityLevel);
57
- let persistThreshold;
58
- switch (options.bailSensitivityLevel) {
59
- case 0:
60
- persistThreshold = '0-Ignore-Errors';
61
- break;
62
- case 1:
63
- persistThreshold = '1-Abort-on-Errors';
64
- break;
65
- default:
66
- persistThreshold = '2-Abort-Even-on-Warnings';
67
- }
68
- (0, env_1.isDebug)() && console.log();
69
- (0, print_1.debugPrint)('=== Phase 1 ===================================================');
70
- const inputStream = antlr4_1.CharStreams.fromString(yiniContent);
71
- const lexer = new YiniLexer_1.default(inputStream);
72
- const tokenStream = new antlr4_1.CommonTokenStream(lexer);
73
- const parser = new YiniParser_1.default(tokenStream);
74
- const errorHandler = new ErrorDataHandler_1.ErrorDataHandler(persistThreshold);
75
- // Remove the default ConsoleErrorListener
76
- lexer.removeErrorListeners(); // Removes the default lexer console error output.
77
- const lexerErrorListener = new MyLexerErrorListener(errorHandler);
78
- lexer.addErrorListener(lexerErrorListener);
79
- // const errorListener = new MyParserErrorListener(errorHandler)
80
- parser.removeErrorListeners(); // Removes the default parser console error output.
81
- const parserErrorListener = new MyParserErrorListener(errorHandler);
82
- parser.addErrorListener(parserErrorListener);
83
- (0, print_1.debugPrint)();
84
- (0, print_1.debugPrint)('--- Starting parsing... ---');
85
- const parseTree = parser.yini(); // The function yini() is the start rule.
86
- if (parserErrorListener.errors.length > 0 ||
87
- lexerErrorListener.errors.length > 0) {
88
- (0, print_1.debugPrint)('*** ERROR detected ***');
89
- if ((0, env_1.isDebug)()) {
90
- // Handle or display syntax errors
91
- console.error('Syntax errors detected:', parserErrorListener.errors, lexerErrorListener.errors);
92
- //process.exit(1)
93
- }
94
- }
95
- (0, print_1.debugPrint)('--- Parsing done. ---');
96
- (0, print_1.debugPrint)('=== Ended phase 1 =============================================');
97
- (0, env_1.isDebug)() && console.log();
98
- (0, print_1.debugPrint)('=== Phase 2 ===================================================');
99
- // const errorHandler = new ErrorDataHandler(persistThreshold)
100
- const visitor = new YINIVisitor_1.default(errorHandler, options.isStrict);
101
- const syntaxTreeC = visitor.visit(parseTree);
102
- if ((0, env_1.isDebug)()) {
103
- console.log();
104
- console.log('**************************************************************************');
105
- console.log('*** syntaxTreeContainer: *************************************************');
106
- (0, print_1.printObject)(syntaxTreeC);
107
- console.log('**************************************************************************');
108
- console.log('**************************************************************************');
109
- console.log();
110
- }
111
- (0, print_1.debugPrint)('=== Ended phase 2 =============================================');
112
- (0, env_1.isDebug)() && console.log();
113
- (0, print_1.debugPrint)('=== Phase 3 ===================================================');
114
- // Construct.
115
- const finalJSResult = (0, objectBuilder_1.constructFinalObject)(syntaxTreeC, errorHandler);
116
- (0, print_1.debugPrint)('=== Ended phase 3 =============================================');
117
- (0, print_1.debugPrint)('visitor.visit(..): finalJSResult:');
118
- (0, env_1.isDebug)() && console.debug(finalJSResult);
119
- (0, print_1.debugPrint)();
120
- if (options.isStrict) {
121
- //throw Error('ERROR: Strict-mode not yet implemented')
122
- errorHandler.pushOrBail(null, 'Syntax-Warning', 'WARNING: Strict-mode not yet fully implemented', '', '');
123
- }
124
- else {
125
- (0, print_1.debugPrint)('visitor.visit(..): finalJSResult:');
126
- (0, env_1.isDebug)() && console.debug(finalJSResult);
127
- }
128
- // Construct meta data.
129
- const metaData = {
130
- strictMode: options.isStrict,
131
- hasTerminal: syntaxTreeC._hasTerminal,
132
- sections: syntaxTreeC._meta_numOfSections,
133
- members: syntaxTreeC._meta_numOfMembers,
134
- sectionChains: syntaxTreeC._meta_numOfChains,
135
- keysParsed: null,
136
- timing: {
137
- totalMs: null,
138
- phase1Ms: null,
139
- phase2Ms: null,
140
- phase3Ms: null,
141
- },
142
- };
143
- if (options.isWithDiagnostics) {
144
- // Attach optional diagnostics.
145
- metaData.diagnostics = {
146
- bailSensitivityLevel: options.bailSensitivityLevel,
147
- errors: errorHandler.getNumOfErrors(),
148
- warnings: errorHandler.getNumOfWarnings(),
149
- infoAndNotices: errorHandler.getNumOfInfoAndNotices(),
150
- envs: {
151
- NODE_ENV: process.env.NODE_ENV,
152
- APP_ENV: process.env.APP_ENV,
153
- libNodeEnv: env_1.localNodeEnv,
154
- libAppEnv: env_1.localAppEnv,
155
- },
156
- libFlags: {
157
- isDev: (0, env_1.isDev)(),
158
- isDebug: (0, env_1.isDebug)(),
159
- },
160
- };
161
- }
162
- if (options.isWithTiming) {
163
- // Attach optional timing data.
164
- metaData.timing = {
165
- totalMs: null,
166
- phase1Ms: null,
167
- phase2Ms: null,
168
- phase3Ms: null,
169
- };
170
- }
171
- (0, print_1.debugPrint)('getNumOfErrors(): ' + errorHandler.getNumOfErrors());
172
- if (errorHandler.getNumOfErrors()) {
173
- console.log();
174
- console.log('Parsing is complete, but some problems were detected. Please see the errors above for details.');
175
- console.log('Number of errors found: ' + errorHandler.getNumOfErrors());
176
- }
177
- if (options.isIncludeMeta) {
178
- return {
179
- result: finalJSResult,
180
- meta: metaData,
181
- };
182
- }
183
- return finalJSResult;
184
- };
185
- exports.parseMain = parseMain;