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
@@ -0,0 +1,219 @@
1
+ /**
2
+ *
3
+ * Public (user-facing) types (shapes) here only.
4
+ *
5
+ * @note Internal-only types (shapes) should go into core/internalTypes.ts.
6
+ * @note These types and interface (shapes) should NOT include the 'T' and,
7
+ * 'I' prefixes, due to these are public user-facing.
8
+ */
9
+ import { TBailSensitivityLevel } from '../core/internalTypes';
10
+ import { DocumentTerminatorRules, DuplicateKeyPolicies, EmptyValueRules } from '../core/parsingRules/rulesConstAndGuards';
11
+ /**
12
+ * JavaScript object produced by parsing a YINI document.
13
+ */
14
+ export type ParsedObject = any;
15
+ /**
16
+ * Result returned from `parse(..)` and `parseFile(..)`,
17
+ * containing both the parsed object and associated metadata.
18
+ */
19
+ export interface YiniParseResult {
20
+ result: ParsedObject;
21
+ meta: ResultMetadata;
22
+ }
23
+ export type FailLevelKey = 'ignore-errors' | 'errors' | 'warnings-and-errors';
24
+ export type PreferredFailLevel = 'auto' | FailLevelKey;
25
+ /** Version tag for the public metadata schema. */
26
+ export type MetaSchemaVersion = '1.1.1';
27
+ /** Source of the order guarantee. */
28
+ export type OrderGuarantee = 'spec' | 'language' | 'implementation-defined' | 'none';
29
+ /** @deprecated Use DuplicateKeyPolicy */
30
+ export type OnDuplicateKey = DuplicateKeyPolicy;
31
+ export type DuplicateKeyPolicy = (typeof DuplicateKeyPolicies)[number];
32
+ export type DocumentTerminatorRule = (typeof DocumentTerminatorRules)[number];
33
+ export type EmptyValueRule = (typeof EmptyValueRules)[number];
34
+ /**
35
+ * User-facing options, these are external and should be more user friendly,
36
+ * and shorter, parameter names than the (more descriptive) internal
37
+ * engine option names.
38
+ *
39
+ * @note These parameters are emphasizes a bit more than the other options,
40
+ * therefor these are kept a bit shorter for usability-purposes.
41
+ * @note These are the same as in the "simple positional API" function in
42
+ * the YINI class.
43
+ */
44
+ export interface BasicOptions {
45
+ /** Enable stricter syntax and well-formedness checks. */
46
+ strictMode?: boolean;
47
+ /**
48
+ * Minimum severity that should cause parse to fail and stop.
49
+ * 'auto' | 'ignore-errors' | 'errors' | 'warnings-and-errors'
50
+ */
51
+ failLevel?: PreferredFailLevel;
52
+ /** Attach metadata to the parse result (timings, diagnostics, etc.). */
53
+ includeMetadata?: boolean;
54
+ }
55
+ /** @deprecated Use ParseOptions */
56
+ export interface PrimaryUserParams extends BasicOptions {
57
+ dummy: null;
58
+ }
59
+ /**
60
+ * @param options.failLevel - Preferred bail sensitivity level, controls if and when parsing should stop on problems:
61
+ * Accepts:
62
+ * `'ignore-errors'` - Continue despite errors, persist and try to recover.
63
+ * `'errors'` - Stop parsing on the first error.
64
+ * `'warnings-and-errors'` - Stop parsing on the first warning or error.
65
+ * (Type: TPreferredFailLevel; exact behavior is implementation-defined.)
66
+ * @param options.includeDiagnostics - Include diagnostics in the returned metadata.
67
+ * Requires: `includeMetadata = true`. Ignored otherwise.
68
+ * @param options.includeMetadata - Attach a metadata object to the parse result
69
+ * (e.g., timings, diagnostics).
70
+ * @param options.includeTiming - Include timing information for parser phases in metadata.
71
+ * Requires: `includeMetadata = true`. Ignored otherwise.
72
+ * @param options.onDuplicateKey - Strategy/handler when encountering a duplicate key.
73
+ * Allowed values: `'warn-and-keep-first'` | `'warn-and-overwrite'` | `'keep-first'` (silent, first wins) | `'overwrite'` (silent, last wins) | `'error'`.
74
+ * @param options.preserveUndefinedInMeta - Keep properties with value `undefined` inside
75
+ * the returned metadata. Requires: `includeMetadata = true`. Ignored otherwise.
76
+ * @param options.quiet - Print **errors only** to the console; warnings and info are not printed.
77
+ * Diagnostics in the returned metadata are unaffected. Silent overrides quiet if both are enabled.
78
+ * @param options.requireDocTerminator - Whether a document terminator is required.
79
+ * One of: 'optional' | 'warn-if-missing' | 'required'.
80
+ * @param options.silent - **No console output** at all (including errors).
81
+ * Use the return value/metadata or the process exit code to detect failures.
82
+ * Silent overrides quiet if both are enabled.
83
+ * @param options.strictMode - Sets the baseline ruleset (true = strict, false = lenient).
84
+ * This is only a starting point: rule-specific options (e.g., `treatEmptyValueAsNull`,
85
+ * `onDuplicateKey`, etc.) can override parts of that ruleset. If any overrides are given,
86
+ * the effective mode becomes **custom** rather than purely strict/lenient.
87
+ * @param options.treatEmptyValueAsNull - How to treat an explicitly empty value on the
88
+ * right-hand side of '='. Allowed values: `'allow'` | `'allow-with-warning'` | `'disallow'`.
89
+ * @param options.throwOnError - Will throw on first parse error encountered.
90
+ */
91
+ export interface ParseOptions extends BasicOptions {
92
+ includeDiagnostics?: boolean;
93
+ includeTiming?: boolean;
94
+ preserveUndefinedInMeta?: boolean;
95
+ onDuplicateKey?: OnDuplicateKey;
96
+ requireDocTerminator?: DocumentTerminatorRule;
97
+ treatEmptyValueAsNull?: EmptyValueRule;
98
+ quiet?: boolean;
99
+ silent?: boolean;
100
+ throwOnError?: boolean;
101
+ }
102
+ /** @deprecated Use ParseOptions */
103
+ export interface AllUserOptions extends ParseOptions {
104
+ dummy: null;
105
+ }
106
+ export interface IssuePayload {
107
+ /** 1-based; use undefined when not applicable. */
108
+ line: number | undefined;
109
+ /** 1-based; use undefined when not applicable. */
110
+ column: number | undefined;
111
+ /** Lowercase key for easy tooling. */
112
+ typeKey: string;
113
+ message: string;
114
+ advice: string | undefined;
115
+ hint: string | undefined;
116
+ }
117
+ /**
118
+ * @note NOTE: USE NO TYPES here (or neither in nested structures), they
119
+ * should only be strings (and content MUST be transformed from the
120
+ * types to lower snake case)
121
+ *
122
+ * *** DUE TO make easier for tooling ***
123
+ *
124
+ * @note UPDATE 'metaSchemaVersion' on any edits to the meta structure.
125
+ */
126
+ export interface ResultMetadata {
127
+ parserVersion: string;
128
+ mode: 'lenient' | 'strict' | 'custom';
129
+ totalErrors: number;
130
+ totalWarnings: number;
131
+ totalMessages: number;
132
+ runStartedAt: string;
133
+ runFinishedAt: string;
134
+ durationMs: number;
135
+ preservesOrder: boolean;
136
+ orderGuarantee: OrderGuarantee;
137
+ orderNotes?: string;
138
+ source: {
139
+ sourceType: string;
140
+ fileName: undefined | string;
141
+ hasDocumentTerminator: boolean;
142
+ hasYiniMarker: boolean;
143
+ byteSize: null | number;
144
+ lineCount: null | number;
145
+ sha256: null | string;
146
+ };
147
+ structure: {
148
+ maxDepth: null | number;
149
+ sectionCount: null | number;
150
+ memberCount: null | number;
151
+ keysParsedCount: null | number;
152
+ sectionNamePaths: string[] | null;
153
+ };
154
+ metaSchemaVersion: MetaSchemaVersion;
155
+ diagnostics?: {
156
+ failLevel: {
157
+ preferredLevel: null | PreferredFailLevel;
158
+ usedLevelType: TBailSensitivityLevel;
159
+ usedLevelKey: FailLevelKey;
160
+ levelDescription: string | null;
161
+ };
162
+ errors: {
163
+ errorCount: number;
164
+ payload: IssuePayload[];
165
+ };
166
+ warnings: {
167
+ warningCount: number;
168
+ payload: IssuePayload[];
169
+ };
170
+ notices: {
171
+ noticeCount: number;
172
+ payload: IssuePayload[];
173
+ };
174
+ infos: {
175
+ infoCount: number;
176
+ payload: IssuePayload[];
177
+ };
178
+ environment: {
179
+ NODE_ENV: undefined | string;
180
+ APP_ENV: undefined | string;
181
+ lib: {
182
+ nodeEnv: undefined | string;
183
+ appEnv: undefined | string;
184
+ flags: {
185
+ isDev: boolean;
186
+ isDebug: boolean;
187
+ };
188
+ };
189
+ };
190
+ effectiveOptions: ParseOptions;
191
+ options: ParseOptions;
192
+ };
193
+ timing?: {
194
+ total: null | {
195
+ timeMs: number;
196
+ name: string;
197
+ };
198
+ phase0: undefined | {
199
+ timeMs: number;
200
+ name: string;
201
+ };
202
+ phase1: null | {
203
+ timeMs: number;
204
+ name: string;
205
+ };
206
+ phase2: null | {
207
+ timeMs: number;
208
+ name: string;
209
+ };
210
+ phase3: null | {
211
+ timeMs: number;
212
+ name: string;
213
+ };
214
+ phase4: null | {
215
+ timeMs: number;
216
+ name: string;
217
+ };
218
+ };
219
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // File: src/types/index.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,2BAA2B"}
@@ -16,3 +16,4 @@ const isValidJSNumber = (str) => {
16
16
  return !Number.isNaN(n); // True only if parse succeeded.
17
17
  };
18
18
  exports.isValidJSNumber = isValidJSNumber;
19
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/utils/number.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CAAC,CAAS,EAAW,EAAE;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC1B,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AAEM,MAAM,eAAe,GAAG,CAAC,CAAS,EAAW,EAAE;IAClD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;AAC5C,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAEM,MAAM,eAAe,GAAG,CAAC,GAAW,EAAW,EAAE;IACpD,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA,CAAC,mCAAmC;IACvE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;AAC5D,CAAC,CAAA;AAJY,QAAA,eAAe,mBAI3B"}
@@ -1,3 +1,14 @@
1
+ interface SortOptions {
2
+ /** Sort nested objects too (default: false) */
3
+ deep?: boolean;
4
+ /** Custom key comparator (default: a.localeCompare(b)) */
5
+ comparator?: (a: string, b: string) => number;
6
+ }
7
+ /**
8
+ * Returns a new object with keys sorted alphabetically.
9
+ * Arrays and non-plain objects are preserved as-is (unless deep + they contain plain objects).
10
+ */
11
+ export declare const sortObjectKeys: <T>(obj: T, options?: SortOptions) => T;
1
12
  /**
2
13
  * Removes top-level properties with value `undefined`.
3
14
  * Does not recurse into nested objects or arrays.
@@ -53,3 +64,4 @@ export declare const removeUndefinedShallow: <T extends object>(obj: T) => Parti
53
64
  * }
54
65
  */
55
66
  export declare const removeUndefinedDeep: <T>(obj: T) => T;
67
+ export {};
@@ -1,6 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeUndefinedDeep = exports.removeUndefinedShallow = void 0;
3
+ exports.removeUndefinedDeep = exports.removeUndefinedShallow = exports.sortObjectKeys = void 0;
4
+ const isPlainObject = (value) => {
5
+ return (typeof value === 'object' &&
6
+ value !== null &&
7
+ !Array.isArray(value) &&
8
+ Object.prototype.toString.call(value) === '[object Object]');
9
+ };
10
+ /**
11
+ * Returns a new object with keys sorted alphabetically.
12
+ * Arrays and non-plain objects are preserved as-is (unless deep + they contain plain objects).
13
+ */
14
+ const sortObjectKeys = (obj, options = {}) => {
15
+ const { deep = false, comparator } = options;
16
+ if (!isPlainObject(obj)) {
17
+ // If it's not a plain object (array, Date, null, primitive), return as-is.
18
+ return obj;
19
+ }
20
+ const keys = Object.keys(obj).sort(comparator ?? ((a, b) => a.localeCompare(b)));
21
+ const sortedEntries = keys.map((k) => {
22
+ const value = obj[k];
23
+ if (deep) {
24
+ if (isPlainObject(value)) {
25
+ return [k, (0, exports.sortObjectKeys)(value, options)];
26
+ }
27
+ if (Array.isArray(value)) {
28
+ // Deep-sort any plain objects inside arrays, leave others as-is.
29
+ return [
30
+ k,
31
+ value.map((item) => isPlainObject(item)
32
+ ? (0, exports.sortObjectKeys)(item, options)
33
+ : item),
34
+ ];
35
+ }
36
+ }
37
+ return [k, value];
38
+ });
39
+ // Preserve the original type T structurally.
40
+ return Object.fromEntries(sortedEntries);
41
+ };
42
+ exports.sortObjectKeys = sortObjectKeys;
4
43
  /**
5
44
  * Removes top-level properties with value `undefined`.
6
45
  * Does not recurse into nested objects or arrays.
@@ -83,3 +122,4 @@ const removeUndefinedDeep = (obj) => {
83
122
  return cleaned;
84
123
  };
85
124
  exports.removeUndefinedDeep = removeUndefinedDeep;
125
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":";;;AASA,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE;IAC3D,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAC9D,CAAA;AACL,CAAC,CAAA;AAED;;;GAGG;AACI,MAAM,cAAc,GAAG,CAAI,GAAM,EAAE,UAAuB,EAAE,EAAK,EAAE;IACtE,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAE5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,2EAA2E;QAC3E,OAAO,GAAG,CAAA;IACd,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC9B,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAA;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,KAAK,GAAI,GAAmB,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,CAAC,EAAE,IAAA,sBAAc,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YAC9C,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,iEAAiE;gBACjE,OAAO;oBACH,CAAC;oBACD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,aAAa,CAAC,IAAI,CAAC;wBACf,CAAC,CAAC,IAAA,sBAAc,EAAC,IAAI,EAAE,OAAO,CAAC;wBAC/B,CAAC,CAAC,IAAI,CACb;iBACJ,CAAA;YACL,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,6CAA6C;IAC7C,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAM,CAAA;AACjD,CAAC,CAAA;AAnCY,QAAA,cAAc,kBAmC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACI,MAAM,sBAAsB,GAAG,CAClC,GAAM,EACI,EAAE;IACZ,MAAM,OAAO,GAAQ,EAAE,CAAA;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACxB,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAA;AAClB,CAAC,CAAA;AAVY,QAAA,sBAAsB,0BAUlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACI,MAAM,mBAAmB,GAAG,CAAI,GAAM,EAAK,EAAE;IAChD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAA,CAAC,kBAAkB;IACjC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,uDAAuD;QACvD,OAAO,GAAG;aACL,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAQ,CAAA;IACpD,CAAC;IAED,MAAM,OAAO,GAAQ,EAAE,CAAA;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,2BAAmB,EAAC,KAAY,CAAC,CAAA;QACpD,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAA;AAClB,CAAC,CAAA;AAnBY,QAAA,mBAAmB,uBAmB/B"}
@@ -13,3 +13,4 @@ const getFileNameExtension = (fullPath) => {
13
13
  return path_1.default.extname(fullPath);
14
14
  };
15
15
  exports.getFileNameExtension = getFileNameExtension;
16
+ //# sourceMappingURL=pathAndFileName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathAndFileName.js","sourceRoot":"","sources":["../../src/utils/pathAndFileName.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,gDAAuB;AAEhB,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC7D,OAAO,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACjC,CAAC,CAAA;AAFY,QAAA,oBAAoB,wBAEhC"}
@@ -4,10 +4,10 @@ export declare const toPrettyJSON: (obj: any) => string;
4
4
  /** Pretty-prints a JavaScript object as formatted JSON to the console.
5
5
  * Strict JSON, all keys are enclosed in ", etc.
6
6
  */
7
- export declare const printJSON: (obj: any) => void;
7
+ export declare const printJSON: (obj: any, isForce?: boolean) => void;
8
8
  /**
9
9
  * Print a full JavaScript object in a human-readable way (not as JSON).
10
10
  * Not strict JSON, and shows functions, symbols, getters/setters, and class names.
11
11
  * @param isColors If true, the output is styled with ANSI color codes.
12
12
  */
13
- export declare const printObject: (obj: any, isColors?: boolean) => void;
13
+ export declare const printObject: (obj: any, isForce?: boolean, isColors?: boolean) => void;
@@ -26,9 +26,11 @@ exports.toPrettyJSON = toPrettyJSON;
26
26
  /** Pretty-prints a JavaScript object as formatted JSON to the console.
27
27
  * Strict JSON, all keys are enclosed in ", etc.
28
28
  */
29
- const printJSON = (obj) => {
30
- if ((0, env_1.isProdEnv)() || ((0, env_1.isTestEnv)() && !(0, env_1.isDebug)()))
31
- return;
29
+ const printJSON = (obj, isForce = false) => {
30
+ if (!isForce) {
31
+ if ((0, env_1.isProdEnv)() || ((0, env_1.isTestEnv)() && !(0, env_1.isDebug)()))
32
+ return;
33
+ }
32
34
  const str = (0, exports.toPrettyJSON)(obj);
33
35
  console.log(str);
34
36
  };
@@ -38,9 +40,12 @@ exports.printJSON = printJSON;
38
40
  * Not strict JSON, and shows functions, symbols, getters/setters, and class names.
39
41
  * @param isColors If true, the output is styled with ANSI color codes.
40
42
  */
41
- const printObject = (obj, isColors = true) => {
42
- if ((0, env_1.isProdEnv)() || ((0, env_1.isTestEnv)() && !(0, env_1.isDebug)()))
43
- return;
43
+ const printObject = (obj, isForce = false, isColors = true) => {
44
+ if (!isForce) {
45
+ if ((0, env_1.isProdEnv)() || ((0, env_1.isTestEnv)() && !(0, env_1.isDebug)()))
46
+ return;
47
+ }
44
48
  console.log(util_1.default.inspect(obj, { depth: null, colors: isColors }));
45
49
  };
46
50
  exports.printObject = printObject;
51
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/utils/print.ts"],"names":[],"mappings":";;;;;;AAAA;;;GAGG;AACH,gDAAuB;AACvB,uCAAoE;AAE7D,MAAM,UAAU,GAAG,CAAC,MAAW,EAAE,EAAE,EAAE;IACxC,IAAA,aAAO,GAAE,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAA;AAC/C,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AAEM,MAAM,QAAQ,GAAG,CAAC,MAAW,EAAE,EAAE,EAAE;IACtC,IAAA,WAAK,GAAE,IAAI,CAAC,IAAA,eAAS,GAAE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,CAAA;AACzD,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB;AAEM,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAU,EAAE;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACxC,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AAHY,QAAA,YAAY,gBAGxB;AAED;;GAEG;AACI,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,IAAI,IAAA,eAAS,GAAE,IAAI,CAAC,IAAA,eAAS,GAAE,IAAI,CAAC,IAAA,aAAO,GAAE,CAAC;YAAE,OAAM;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAA;IAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC,CAAA;AAPY,QAAA,SAAS,aAOrB;AAED;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,IAAI,IAAA,eAAS,GAAE,IAAI,CAAC,IAAA,eAAS,GAAE,IAAI,CAAC,IAAA,aAAO,GAAE,CAAC;YAAE,OAAM;IAC1D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;AACrE,CAAC,CAAA;AANY,QAAA,WAAW,eAMvB"}
@@ -60,3 +60,8 @@ export declare const stripNLAndAfter: (line: string) => string;
60
60
  * Replaces all '-' to '_', and returns rusult in lower case.
61
61
  */
62
62
  export declare const toLowerSnakeCase: (txt: string) => string;
63
+ /**
64
+ * Transforms strings such as 'Id-Name' to 'id-name'.
65
+ * Replaces all '_' to '-', and returns rusult in lower case.
66
+ */
67
+ export declare const toLowerKebabCase: (txt: string) => string;
@@ -4,7 +4,7 @@
4
4
  * @note More specific YINI helper functions should go into yiniHelpers.ts-file.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.toLowerSnakeCase = exports.stripNLAndAfter = exports.isDigit = exports.isAlpha = exports.isEnclosedInBackticks = exports.trimBackticks = exports.trimTrailingNonLetters = exports.splitLines = exports.computeSha256 = exports.capitalizeFirst = void 0;
7
+ exports.toLowerKebabCase = exports.toLowerSnakeCase = exports.stripNLAndAfter = exports.isDigit = exports.isAlpha = exports.isEnclosedInBackticks = exports.trimBackticks = exports.trimTrailingNonLetters = exports.splitLines = exports.computeSha256 = exports.capitalizeFirst = void 0;
8
8
  const crypto_1 = require("crypto");
9
9
  const print_1 = require("./print");
10
10
  /**
@@ -130,3 +130,12 @@ const toLowerSnakeCase = (txt) => {
130
130
  return txt.trim().toLowerCase().replace(/[-]/g, '_');
131
131
  };
132
132
  exports.toLowerSnakeCase = toLowerSnakeCase;
133
+ /**
134
+ * Transforms strings such as 'Id-Name' to 'id-name'.
135
+ * Replaces all '_' to '-', and returns rusult in lower case.
136
+ */
137
+ const toLowerKebabCase = (txt) => {
138
+ return txt.trim().toLowerCase().replace(/[_]/g, '-');
139
+ };
140
+ exports.toLowerKebabCase = toLowerKebabCase;
141
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"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"}
@@ -19,3 +19,4 @@ const isError = (e) => {
19
19
  return e instanceof Error;
20
20
  };
21
21
  exports.isError = isError;
22
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACI,MAAM,OAAO,GAAG,CAAC,CAAU,EAAc,EAAE;IAC9C,OAAO,CAAC,YAAY,KAAK,CAAA;AAC7B,CAAC,CAAA;AAFY,QAAA,OAAO,WAEnB"}
@@ -2,7 +2,7 @@
2
2
  * This file contains specific YINI helper functions (utils).
3
3
  * @note More general helper functions should go into the dir "src/utils/".
4
4
  */
5
- import { TScalarValue, TValueLiteral } from './core/types';
5
+ import { TScalarValue, TValueLiteral } from '../core/internalTypes';
6
6
  /**
7
7
  * Check if the character is a section marker character.
8
8
  * @param character A character in a string.
@@ -5,8 +5,8 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.isScalar = exports.printLiteral = exports.isValidBacktickedIdent = exports.isValidSimpleIdent = exports.stripCommentsAndAfter = exports.isMarkerCharacter = void 0;
8
- const print_1 = require("./utils/print");
9
- const string_1 = require("./utils/string");
8
+ const print_1 = require("./print");
9
+ const string_1 = require("./string");
10
10
  const SECTION_MARKER1 = '^';
11
11
  const SECTION_MARKER2 = '<';
12
12
  const SECTION_MARKER3 = '\u00A7'; // Section sign §.
@@ -175,3 +175,4 @@ exports.isScalar = isScalar;
175
175
  // export const isList = (v: TValueLiteral): v is TListValue => v.type === 'List'
176
176
  // export const isObject = (v: TValueLiteral): v is TObjectValue =>
177
177
  // v.type === 'Object'
178
+ //# sourceMappingURL=yiniHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yiniHelpers.js","sourceRoot":"","sources":["../../src/utils/yiniHelpers.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  // Parsed output from examples/basic.yini using YINI.parseFile(...)
2
2
 
3
3
  // JS object
4
- {
5
- App: {
6
- title: 'My App',
7
- items: 10,
8
- debug: true
9
- },
10
- Server: {
11
- host: 'localhost',
12
- port: 8080,
13
- useTLS: false
14
- }
15
- }
4
+ ;({
5
+ App: {
6
+ title: 'My App',
7
+ items: 10,
8
+ debug: true,
9
+ },
10
+ Server: {
11
+ host: 'localhost',
12
+ port: 8080,
13
+ useTLS: false,
14
+ },
15
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yini-parser",
3
- "version": "1.1.0-beta",
3
+ "version": "1.3.0-beta",
4
4
  "description": "Node.js parser for YINI — a clean, structured INI alternative with types, simple section nesting, comments, and strict mode.",
5
5
  "keywords": [
6
6
  "yini",
@@ -23,6 +23,7 @@
23
23
  "license": "Apache-2.0",
24
24
  "files": [
25
25
  "dist/",
26
+ "!dist/**/*.test.*",
26
27
  "package.json",
27
28
  "README.md",
28
29
  "LICENSE",
@@ -40,19 +41,20 @@
40
41
  },
41
42
  "repository": {
42
43
  "type": "git",
43
- "url": "https://github.com/YINI-lang/yini-parser-typescript.git"
44
+ "url": "git+https://github.com/YINI-lang/yini-parser-typescript.git"
44
45
  },
45
46
  "private": false,
46
47
  "scripts": {
47
48
  "start": "npm run build && node dist/index.js",
48
49
  "start:debug": "npm run start -- isDebug=1",
49
- "start:dev": "cross-env NODE_ENV=development APP_ENV=local ts-node src/index.ts isDev=1",
50
- "start:dev:debug": "cross-env npm run start:dev -- isDebug=1",
50
+ "start:main": "cross-env NODE_ENV=development APP_ENV=local ts-node src/dev/main.ts",
51
+ "start:main:dev": "cross-env npm run start:main -- isDev=1",
52
+ "start:main:dev:debug": "cross-env npm run start:main:dev -- isDebug=1",
51
53
  "start-w-clean": "npm run tsc && npm run clean:ts-js && npm run start:dev",
52
54
  "test": "cross-env NODE_ENV=test APP_ENV=local jest --bail --verbose --runInBand",
53
55
  "test:debug": "cross-env npm run test -- --isDebug=1",
54
56
  "test:smoke": "cross-env NODE_ENV=test APP_ENV=local jest tests/smoke --bail --verbose --runInBand",
55
- "test:unit": "cross-env NODE_ENV=test APP_ENV=local jest tests/unit --bail --verbose --runInBand",
57
+ "test:unit": "cross-env NODE_ENV=test APP_ENV=local jest src/ --bail --verbose --runInBand",
56
58
  "test:integr": "cross-env NODE_ENV=test APP_ENV=local jest tests/integration --bail --verbose --runInBand",
57
59
  "test:issues": "cross-env NODE_ENV=test APP_ENV=local jest tests/fixed-issues --bail --verbose --runInBand",
58
60
  "test:gold": "cross-env NODE_ENV=test APP_ENV=local jest tests/golden --bail --verbose --runInBand",
@@ -64,10 +66,12 @@
64
66
  "test:esm": "node ./tests/fixtures/test-src-files/esm-smoke.js",
65
67
  "ci:test": "cross-env NODE_ENV=test APP_ENV=ci jest --verbose --runInBand",
66
68
  "ci:test:smoke": "cross-env NODE_ENV=test APP_ENV=ci jest tests/smoke --verbose --runInBand",
69
+ "ci:test:unit": "cross-env NODE_ENV=test APP_ENV=ci jest src/ --verbose --runInBand",
67
70
  "tsc": "npx tsc -p ./tsconfig.json",
68
71
  "lint": "eslint src --ext .ts",
69
72
  "clean:ts-js": "bash scripts/clean-ts-js.sh",
70
73
  "antlr": "make generate",
74
+ "ci:antlr": "make ci-generate",
71
75
  "build": "tsc -p ./tsconfig.json",
72
76
  "prepublishOnly": "npm run lint && npm test && npm run build"
73
77
  },
@@ -100,7 +104,8 @@
100
104
  ]
101
105
  },
102
106
  "engines": {
103
- "node": ">=16"
107
+ "node": ">=20"
104
108
  },
109
+ "sideEffects": false,
105
110
  "type": "commonjs"
106
111
  }