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
@@ -1,249 +0,0 @@
1
- /**
2
- * @note
3
- * The use of null vs undefined
4
- * ----------------------------
5
- * The convention here (in this file) is:
6
- * - undefined is used where a value is missing, or does not apply.
7
- * - null is used where a value is missing or has not yet been computed.
8
- */
9
- export type TJSObject = any;
10
- export type TSourceType = 'File' | 'Inline';
11
- export type TSubjectType = 'None/Ignore' | TSourceType;
12
- export type TBailSensitivityLevel = 0 | 1 | 2;
13
- export type TPreferredFailLevel = 'auto' | 0 | 1 | 2;
14
- export type TPersistThreshold = '0-Ignore-Errors' | '1-Abort-on-Errors' | '2-Abort-Even-on-Warnings';
15
- /**
16
- * Only for returned meta data to user.
17
- * NOTE: Only use lower case snake_case for keys.
18
- */
19
- export type TFailLevelKey = 'ignore_errors' | 'abort_on_errors' | 'abort_on_warnings';
20
- /**
21
- * Scalar literal, a single, indivisible piece of data:
22
- * string, number, boolean, and null.
23
- * @property {string | undefined} [tag]
24
- * Its contents may change at any time and should not
25
- * be relied upon for any significant purpose.
26
- * @note Undefined is included here despite that JSON cannot represent
27
- * it (undefined), but JS objects can (it's sometimes useful in
28
- * debugging etc), it will later get stripped if converted into JSON.
29
- */
30
- export type TScalarValue = {
31
- type: 'String';
32
- value: string;
33
- tag: string | undefined;
34
- } | {
35
- type: 'Number';
36
- value: number;
37
- tag: string | undefined;
38
- } | {
39
- type: 'Boolean';
40
- value: boolean;
41
- tag: string | undefined;
42
- } | {
43
- type: 'Null';
44
- value: null;
45
- tag: string | undefined;
46
- } | {
47
- type: 'Undefined';
48
- value: undefined;
49
- tag: string | undefined;
50
- };
51
- /** Any literal value in YINI: scalar, list, or object. */
52
- export type TValueLiteral = TScalarValue | TListValue | TObjectValue;
53
- /**
54
- * @property {string | undefined} [tag]
55
- * Debugging only. Its contents may change at any time and
56
- * must not be relied upon for any functional purpose.
57
- */
58
- export type TListValue = {
59
- type: 'List';
60
- elems: readonly TValueLiteral[];
61
- tag: string | undefined;
62
- };
63
- /**
64
- * @property {string | undefined} [tag]
65
- * Debugging only. Its contents may change at any time and
66
- * must not be relied upon for any functional purpose.
67
- */
68
- export type TObjectValue = {
69
- type: 'Object';
70
- entries: Readonly<Record<string, TValueLiteral>>;
71
- tag: string | undefined;
72
- };
73
- export type TSectionHeaderType = undefined | 'Classic-Header-Marker' | 'Numeric-Header-Marker';
74
- export type TIssueType = 'Fatal-Error' | 'Internal-Error' | 'Syntax-Error' | 'Syntax-Warning' | 'Notice' | 'Info';
75
- interface IMetaBaseInfo {
76
- sourceType: TSourceType;
77
- fileName: string | undefined;
78
- }
79
- /**
80
- * Internal runtime info / meta data.
81
- * @note Used for internal diagnostics, bookkeeping, state, etc.
82
- */
83
- export interface IRuntimeInfo extends IMetaBaseInfo {
84
- lineCount: number | null;
85
- fileByteSize: number | null;
86
- timeIoMs: number | null;
87
- preferredBailSensitivity: null | TPreferredFailLevel;
88
- sha256: string | null;
89
- }
90
- export interface IParseCoreOptions {
91
- isStrict: boolean;
92
- bailSensitivity: TBailSensitivityLevel;
93
- isIncludeMeta: boolean;
94
- isWithDiagnostics: boolean;
95
- isWithTiming: boolean;
96
- isKeepUndefinedInMeta: boolean;
97
- isRequireDocTerminator: boolean;
98
- }
99
- /**
100
- * User-facing options, these are external and should be more user friendly,
101
- * and shorter, parameter names than the (more descriptive) internal
102
- * engine option names.
103
- *
104
- * @note These parameters are emphasizes a bit more than the other options,
105
- * therefor these are kept a bit shorter for usability-purposes.
106
- * @note These are the same as in the "simple positional API" function in
107
- * the YINI class.
108
- */
109
- interface IPrimaryUserParams {
110
- strictMode?: boolean;
111
- failLevel?: TPreferredFailLevel;
112
- includeMetaData?: boolean;
113
- }
114
- export interface IAllUserOptions extends IPrimaryUserParams {
115
- includeDiagnostics?: boolean;
116
- includeTiming?: boolean;
117
- preserveUndefinedInMeta?: boolean;
118
- requireDocTerminator?: boolean;
119
- }
120
- export interface IYiniAST extends IMetaBaseInfo {
121
- root: IYiniSection;
122
- isStrict: boolean;
123
- terminatorSeen: boolean;
124
- yiniMarkerSeen: boolean;
125
- maxDepth: number | null;
126
- numOfSections: number;
127
- numOfMembers: number;
128
- sectionNamePaths: string[] | null;
129
- }
130
- export interface IYiniSection {
131
- sectionName: string;
132
- level: number;
133
- members: Map<string, TValueLiteral>;
134
- children: IYiniSection[];
135
- }
136
- export interface IBuildOptions {
137
- mode?: 'lenient' | 'strict';
138
- onDuplicateKey?: 'error' | 'warn' | 'keep-first' | 'overwrite';
139
- }
140
- export interface IIssuePayload {
141
- line: number | undefined;
142
- column: number | undefined;
143
- typeKey: string;
144
- message: string;
145
- advice: string | undefined;
146
- hint: string | undefined;
147
- }
148
- /**
149
- * @note NOTE: USE NO TYPES here (or neither in nested structures), they
150
- * should only be strings (and content MUST be transformed from the
151
- * types to lower snake case)
152
- *
153
- * *** DUE TO make easier for tooling ***
154
- *
155
- * @note UPDATE 'metaSchemaVersion' on any edits to the meta structure.
156
- */
157
- export interface IResultMetaData {
158
- parserVersion: string;
159
- mode: 'lenient' | 'strict';
160
- orderPreserved: boolean;
161
- totalErrors: number;
162
- totalWarnings: number;
163
- totalMessages: number;
164
- runStartedAt: string;
165
- runFinishedAt: string;
166
- durationMs: number;
167
- source: {
168
- sourceType: string;
169
- fileName: undefined | string;
170
- hasDocumentTerminator: boolean;
171
- hasYiniMarker: boolean;
172
- byteSize: null | number;
173
- lineCount: null | number;
174
- sha256: null | string;
175
- };
176
- structure: {
177
- maxDepth: null | number;
178
- sectionCount: null | number;
179
- memberCount: null | number;
180
- keysParsedCount: null | number;
181
- sectionNamePaths: string[] | null;
182
- };
183
- metaSchemaVersion: '1.0.0';
184
- diagnostics?: {
185
- failLevel: {
186
- preferredLevel: null | 'auto' | 0 | 1 | 2;
187
- levelUsed: TBailSensitivityLevel;
188
- levelKey: TFailLevelKey;
189
- levelLabel: TPersistThreshold;
190
- levelDescription: string | null;
191
- };
192
- errors: {
193
- errorCount: number;
194
- payload: IIssuePayload[];
195
- };
196
- warnings: {
197
- warningCount: number;
198
- payload: IIssuePayload[];
199
- };
200
- notices: {
201
- noticeCount: number;
202
- payload: IIssuePayload[];
203
- };
204
- infos: {
205
- infoCount: number;
206
- payload: IIssuePayload[];
207
- };
208
- environment: {
209
- NODE_ENV: undefined | string;
210
- APP_ENV: undefined | string;
211
- lib: {
212
- nodeEnv: undefined | string;
213
- appEnv: undefined | string;
214
- flags: {
215
- isDev: boolean;
216
- isDebug: boolean;
217
- };
218
- };
219
- };
220
- optionsUsed: IAllUserOptions;
221
- };
222
- timing?: {
223
- total: null | {
224
- timeMs: number;
225
- name: string;
226
- };
227
- phase0: undefined | {
228
- timeMs: number;
229
- name: string;
230
- };
231
- phase1: null | {
232
- timeMs: number;
233
- name: string;
234
- };
235
- phase2: null | {
236
- timeMs: number;
237
- name: string;
238
- };
239
- phase3: null | {
240
- timeMs: number;
241
- name: string;
242
- };
243
- phase4: null | {
244
- timeMs: number;
245
- name: string;
246
- };
247
- };
248
- }
249
- export {};
@@ -1,3 +0,0 @@
1
- import { IParseCoreOptions, IRuntimeInfo } from './core/types';
2
- /** Single source of truth. */
3
- export declare const _parseMain: (yiniContent: string, options: IParseCoreOptions | undefined, runtimeInfo: IRuntimeInfo) => any;