yini-parser 1.2.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 (54) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/README.md +2 -2
  3. package/dist/YINI.d.ts +35 -23
  4. package/dist/YINI.js +6 -6
  5. package/dist/YINI.js.map +1 -1
  6. package/dist/core/astBuilder.js +9 -9
  7. package/dist/core/astBuilder.js.map +1 -1
  8. package/dist/core/errorDataHandler.d.ts +9 -5
  9. package/dist/core/errorDataHandler.js +99 -53
  10. package/dist/core/errorDataHandler.js.map +1 -1
  11. package/dist/core/internalTypes.d.ts +12 -6
  12. package/dist/core/options/defaultParserOptions.d.ts +17 -0
  13. package/dist/core/options/defaultParserOptions.js +46 -0
  14. package/dist/core/options/defaultParserOptions.js.map +1 -0
  15. package/dist/core/options/optionsFunctions.d.ts +8 -0
  16. package/dist/core/options/{normalizeOptions.js → optionsFunctions.js} +21 -12
  17. package/dist/core/options/optionsFunctions.js.map +1 -0
  18. package/dist/core/parsingRules/modeFromRulesMatcher.d.ts +8 -0
  19. package/dist/core/parsingRules/modeFromRulesMatcher.js +114 -0
  20. package/dist/core/parsingRules/modeFromRulesMatcher.js.map +1 -0
  21. package/dist/core/parsingRules/rulesConstAndGuards.d.ts +7 -0
  22. package/dist/core/parsingRules/rulesConstAndGuards.js +35 -0
  23. package/dist/core/parsingRules/rulesConstAndGuards.js.map +1 -0
  24. package/dist/core/pipeline/errorListeners.d.ts +18 -0
  25. package/dist/core/pipeline/errorListeners.js +107 -0
  26. package/dist/core/pipeline/errorListeners.js.map +1 -0
  27. package/dist/core/{pipeline.d.ts → pipeline/pipeline.d.ts} +3 -3
  28. package/dist/core/{pipeline.js → pipeline/pipeline.js} +70 -149
  29. package/dist/core/pipeline/pipeline.js.map +1 -0
  30. package/dist/core/resultMetadataBuilder.d.ts +2 -2
  31. package/dist/core/resultMetadataBuilder.js +29 -8
  32. package/dist/core/resultMetadataBuilder.js.map +1 -1
  33. package/dist/core/runtime.d.ts +7 -3
  34. package/dist/core/runtime.js +32 -20
  35. package/dist/core/runtime.js.map +1 -1
  36. package/dist/dev/main.js +49 -118
  37. package/dist/dev/main.js.map +1 -1
  38. package/dist/grammar/generated/YiniLexer.js +1 -1
  39. package/dist/grammar/generated/YiniLexer.js.map +1 -1
  40. package/dist/grammar/generated/YiniParser.js +1 -1
  41. package/dist/grammar/generated/YiniParser.js.map +1 -1
  42. package/dist/grammar/generated/YiniParserVisitor.js +1 -1
  43. package/dist/grammar/generated/YiniParserVisitor.js.map +1 -1
  44. package/dist/index.d.ts +2 -2
  45. package/dist/index.js.map +1 -1
  46. package/dist/types/index.d.ts +46 -25
  47. package/examples/basic-output.js +12 -12
  48. package/package.json +6 -3
  49. package/dist/core/options/normalizeOptions.d.ts +0 -5
  50. package/dist/core/options/normalizeOptions.js.map +0 -1
  51. package/dist/core/options/parserOptionsConstants.d.ts +0 -7
  52. package/dist/core/options/parserOptionsConstants.js +0 -37
  53. package/dist/core/options/parserOptionsConstants.js.map +0 -1
  54. package/dist/core/pipeline.js.map +0 -1
@@ -7,6 +7,7 @@
7
7
  * 'I' prefixes, due to these are public user-facing.
8
8
  */
9
9
  import { TBailSensitivityLevel } from '../core/internalTypes';
10
+ import { DocumentTerminatorRules, DuplicateKeyPolicies, EmptyValueRules } from '../core/parsingRules/rulesConstAndGuards';
10
11
  /**
11
12
  * JavaScript object produced by parsing a YINI document.
12
13
  */
@@ -21,11 +22,15 @@ export interface YiniParseResult {
21
22
  }
22
23
  export type FailLevelKey = 'ignore-errors' | 'errors' | 'warnings-and-errors';
23
24
  export type PreferredFailLevel = 'auto' | FailLevelKey;
24
- export type OnDuplicateKey = 'warn-and-keep-first' | 'warn-and-overwrite' | 'keep-first' | 'overwrite' | 'error';
25
25
  /** Version tag for the public metadata schema. */
26
- export type MetaSchemaVersion = '1.1.0';
26
+ export type MetaSchemaVersion = '1.1.1';
27
27
  /** Source of the order guarantee. */
28
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];
29
34
  /**
30
35
  * User-facing options, these are external and should be more user friendly,
31
36
  * and shorter, parameter names than the (more descriptive) internal
@@ -36,51 +41,67 @@ export type OrderGuarantee = 'spec' | 'language' | 'implementation-defined' | 'n
36
41
  * @note These are the same as in the "simple positional API" function in
37
42
  * the YINI class.
38
43
  */
39
- export interface PrimaryUserParams {
44
+ export interface BasicOptions {
40
45
  /** Enable stricter syntax and well-formedness checks. */
41
46
  strictMode?: boolean;
42
47
  /**
43
- * Minimum severity that should cause parse to fail.
48
+ * Minimum severity that should cause parse to fail and stop.
44
49
  * 'auto' | 'ignore-errors' | 'errors' | 'warnings-and-errors'
45
50
  */
46
51
  failLevel?: PreferredFailLevel;
47
52
  /** Attach metadata to the parse result (timings, diagnostics, etc.). */
48
53
  includeMetadata?: boolean;
49
54
  }
55
+ /** @deprecated Use ParseOptions */
56
+ export interface PrimaryUserParams extends BasicOptions {
57
+ dummy: null;
58
+ }
50
59
  /**
51
- * @param failLevel - Minimum severity that should cause the parse to fail.
60
+ * @param options.failLevel - Preferred bail sensitivity level, controls if and when parsing should stop on problems:
52
61
  * Accepts:
53
- * `'ignore-errors'` - Don't bail/fail on error, persist and try to recover.
62
+ * `'ignore-errors'` - Continue despite errors, persist and try to recover.
54
63
  * `'errors'` - Stop parsing on the first error.
55
64
  * `'warnings-and-errors'` - Stop parsing on the first warning or error.
56
65
  * (Type: TPreferredFailLevel; exact behavior is implementation-defined.)
57
- * @param includeDiagnostics - Include diagnostics in the returned metadata.
66
+ * @param options.includeDiagnostics - Include diagnostics in the returned metadata.
58
67
  * Requires: `includeMetadata = true`. Ignored otherwise.
59
- * @param includeMetadata - Attach a metadata object to the parse result
68
+ * @param options.includeMetadata - Attach a metadata object to the parse result
60
69
  * (e.g., timings, diagnostics).
61
- * @param includeTiming - Include timing information for parser phases in metadata.
70
+ * @param options.includeTiming - Include timing information for parser phases in metadata.
62
71
  * Requires: `includeMetadata = true`. Ignored otherwise.
63
- * @param onDuplicateKey - Strategy/handler when encountering a duplicate key.
72
+ * @param options.onDuplicateKey - Strategy/handler when encountering a duplicate key.
64
73
  * Allowed values: `'warn-and-keep-first'` | `'warn-and-overwrite'` | `'keep-first'` (silent, first wins) | `'overwrite'` (silent, last wins) | `'error'`.
65
- * @param preserveUndefinedInMeta - Keep properties with value `undefined` inside
74
+ * @param options.preserveUndefinedInMeta - Keep properties with value `undefined` inside
66
75
  * the returned metadata. Requires: `includeMetadata = true`. Ignored otherwise.
67
- * @param requireDocTerminator - Controls whether a document terminator is required.
68
- * Allowed values: `'optional'` | `'warn-if-missing'` | `'required'`.
69
- * @param strictMode - Enable stricter syntax and well-formedness checks according
70
- * to the spec (exact rules are implementation-defined).
71
- * @param suppressWarnings - Suppress warnings sent to the console/log.
72
- * Does not affect warnings included in returned metadata.
73
- * @param treatEmptyValueAsNull - How to treat an explicitly empty value on the
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
74
88
  * right-hand side of '='. Allowed values: `'allow'` | `'allow-with-warning'` | `'disallow'`.
89
+ * @param options.throwOnError - Will throw on first parse error encountered.
75
90
  */
76
- export interface AllUserOptions extends PrimaryUserParams {
91
+ export interface ParseOptions extends BasicOptions {
77
92
  includeDiagnostics?: boolean;
78
93
  includeTiming?: boolean;
79
94
  preserveUndefinedInMeta?: boolean;
80
- suppressWarnings?: boolean;
81
- requireDocTerminator?: 'optional' | 'warn-if-missing' | 'required';
82
- treatEmptyValueAsNull?: 'allow' | 'allow-with-warning' | 'disallow';
83
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;
84
105
  }
85
106
  export interface IssuePayload {
86
107
  /** 1-based; use undefined when not applicable. */
@@ -104,7 +125,7 @@ export interface IssuePayload {
104
125
  */
105
126
  export interface ResultMetadata {
106
127
  parserVersion: string;
107
- mode: 'lenient' | 'strict';
128
+ mode: 'lenient' | 'strict' | 'custom';
108
129
  totalErrors: number;
109
130
  totalWarnings: number;
110
131
  totalMessages: number;
@@ -166,8 +187,8 @@ export interface ResultMetadata {
166
187
  };
167
188
  };
168
189
  };
169
- effectiveOptions: AllUserOptions;
170
- options: AllUserOptions;
190
+ effectiveOptions: ParseOptions;
191
+ options: ParseOptions;
171
192
  };
172
193
  timing?: {
173
194
  total: null | {
@@ -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.2.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",
@@ -47,8 +47,9 @@
47
47
  "scripts": {
48
48
  "start": "npm run build && node dist/index.js",
49
49
  "start:debug": "npm run start -- isDebug=1",
50
- "start:dev": "cross-env NODE_ENV=development APP_ENV=local ts-node src/dev/main.ts isDev=1",
51
- "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",
52
53
  "start-w-clean": "npm run tsc && npm run clean:ts-js && npm run start:dev",
53
54
  "test": "cross-env NODE_ENV=test APP_ENV=local jest --bail --verbose --runInBand",
54
55
  "test:debug": "cross-env npm run test -- --isDebug=1",
@@ -65,10 +66,12 @@
65
66
  "test:esm": "node ./tests/fixtures/test-src-files/esm-smoke.js",
66
67
  "ci:test": "cross-env NODE_ENV=test APP_ENV=ci jest --verbose --runInBand",
67
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",
68
70
  "tsc": "npx tsc -p ./tsconfig.json",
69
71
  "lint": "eslint src --ext .ts",
70
72
  "clean:ts-js": "bash scripts/clean-ts-js.sh",
71
73
  "antlr": "make generate",
74
+ "ci:antlr": "make ci-generate",
72
75
  "build": "tsc -p ./tsconfig.json",
73
76
  "prepublishOnly": "npm run lint && npm test && npm run build"
74
77
  },
@@ -1,5 +0,0 @@
1
- import { AllUserOptions } from '../../types';
2
- import { IParseCoreOptions, TBailSensitivityLevel, TParserMode } from '../internalTypes';
3
- export declare const toCoreOptions: (bailLevel: TBailSensitivityLevel, userOpts: Required<AllUserOptions>) => IParseCoreOptions;
4
- export declare const isOptionsObjectForm: (v: unknown) => v is AllUserOptions;
5
- export declare const inferModeFromArgs: (arg2?: boolean | AllUserOptions) => TParserMode;
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeOptions.js","sourceRoot":"","sources":["../../../src/core/options/normalizeOptions.ts"],"names":[],"mappings":";;;AAAA,0CAAiD;AAQ1C,MAAM,aAAa,GAAG,CACzB,SAAgC,EAChC,QAAkC,EACjB,EAAE;IACnB,OAAO;QACH,QAAQ,EAAE,QAAQ,CAAC,UAAU;QAC7B,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,QAAQ,CAAC,eAAe;QACvC,iBAAiB,EAAE,IAAA,WAAK,GAAE,IAAI,IAAA,aAAO,GAAE,IAAI,QAAQ,CAAC,kBAAkB;QACtE,YAAY,EAAE,IAAA,WAAK,GAAE,IAAI,IAAA,aAAO,GAAE,IAAI,QAAQ,CAAC,aAAa;QAC5D,qBAAqB,EAAE,IAAA,aAAO,GAAE,IAAI,QAAQ,CAAC,uBAAuB;QACpE,wBAAwB,EAAE,QAAQ,CAAC,gBAAgB;QACnD,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;QACnD,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;QACrD,cAAc,EAAE,QAAQ,CAAC,cAAc;KAC1C,CAAA;AACL,CAAC,CAAA;AAhBY,QAAA,aAAa,iBAgBzB;AAED,0DAA0D;AACnD,MAAM,mBAAmB,GAAG,CAAC,CAAU,EAAuB,EAAE;IACnE,OAAO,CACH,CAAC,IAAI,IAAI;QACT,OAAO,CAAC,KAAK,QAAQ;QACrB,mEAAmE;QACnE,kDAAkD;QAClD,CAAC,YAAY,IAAK,CAAS;YACvB,WAAW,IAAK,CAAS;YACzB,iBAAiB,IAAK,CAAS;YAC/B,oBAAoB,IAAK,CAAS;YAClC,eAAe,IAAK,CAAS;YAC7B,yBAAyB,IAAK,CAAS;YACvC,kBAAkB,IAAK,CAAS;YAChC,sBAAsB,IAAK,CAAS;YACpC,uBAAuB,IAAK,CAAS;YACrC,gBAAgB,IAAK,CAAS,CAAC,CACtC,CAAA;AACL,CAAC,CAAA;AAjBY,QAAA,mBAAmB,uBAiB/B;AAED,4BAA4B;AAC5B,mEAAmE;AAE5D,MAAM,iBAAiB,GAAG,CAC7B,IAA+B,EACpB,EAAE;IACb,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IACtC,CAAC;IACD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,EAAE,GAAI,IAAuB,CAAC,UAAU,CAAA;QAC9C,IAAI,OAAO,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;QACpC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC,CAAA;AAbY,QAAA,iBAAiB,qBAa7B"}
@@ -1,7 +0,0 @@
1
- import { AllUserOptions } from '../../types';
2
- import { TParserMode } from '../internalTypes';
3
- export declare const getDefaultOptions: (mode: TParserMode) => Required<Pick<AllUserOptions, "includeDiagnostics" | "includeTiming" | "preserveUndefinedInMeta" | "suppressWarnings" | "requireDocTerminator" | "treatEmptyValueAsNull" | "onDuplicateKey" | "strictMode" | "failLevel" | "includeMetadata">>;
4
- export type NormalizedOptions = Required<Pick<AllUserOptions, 'strictMode' | 'failLevel' | 'includeMetadata' | 'includeDiagnostics' | 'includeTiming' | 'preserveUndefinedInMeta' | 'suppressWarnings' | 'requireDocTerminator' | 'treatEmptyValueAsNull' | 'onDuplicateKey'>>;
5
- export declare const BASE_DEFAULTS: NormalizedOptions;
6
- export declare const DEFAULT_LENIENT_OPTS: NormalizedOptions;
7
- export declare const DEFAULT_STRICT_OPTS: NormalizedOptions;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_STRICT_OPTS = exports.DEFAULT_LENIENT_OPTS = exports.BASE_DEFAULTS = exports.getDefaultOptions = void 0;
4
- const getDefaultOptions = (mode) => mode === 'strict' ? exports.DEFAULT_STRICT_OPTS : exports.DEFAULT_LENIENT_OPTS;
5
- exports.getDefaultOptions = getDefaultOptions;
6
- // Base (mode-agnostic) defaults
7
- exports.BASE_DEFAULTS = {
8
- strictMode: false,
9
- failLevel: 'auto',
10
- includeMetadata: false,
11
- includeDiagnostics: false,
12
- includeTiming: false,
13
- preserveUndefinedInMeta: false,
14
- suppressWarnings: false, // Suppress warnings in console (does not affect warnings in meta data).
15
- requireDocTerminator: 'optional',
16
- treatEmptyValueAsNull: 'allow-with-warning',
17
- onDuplicateKey: 'error',
18
- };
19
- exports.DEFAULT_LENIENT_OPTS = {
20
- ...exports.BASE_DEFAULTS,
21
- strictMode: false,
22
- failLevel: 'ignore-errors',
23
- suppressWarnings: false, // Suppress warnings in console (does not affect warnings in meta data).
24
- requireDocTerminator: 'optional',
25
- treatEmptyValueAsNull: 'allow-with-warning',
26
- onDuplicateKey: 'warn-and-keep-first',
27
- };
28
- exports.DEFAULT_STRICT_OPTS = {
29
- ...exports.BASE_DEFAULTS,
30
- strictMode: true,
31
- failLevel: 'errors',
32
- suppressWarnings: false, // Suppress warnings in console (does not affect warnings in meta data).
33
- requireDocTerminator: 'optional',
34
- treatEmptyValueAsNull: 'disallow',
35
- onDuplicateKey: 'error',
36
- };
37
- //# sourceMappingURL=parserOptionsConstants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parserOptionsConstants.js","sourceRoot":"","sources":["../../../src/core/options/parserOptionsConstants.ts"],"names":[],"mappings":";;;AAGO,MAAM,iBAAiB,GAAG,CAAC,IAAiB,EAAE,EAAE,CACnD,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAAmB,CAAC,CAAC,CAAC,4BAAoB,CAAA;AADrD,QAAA,iBAAiB,qBACoC;AAkBlE,gCAAgC;AACnB,QAAA,aAAa,GAAsB;IAC5C,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,aAAa,EAAE,KAAK;IACpB,uBAAuB,EAAE,KAAK;IAC9B,gBAAgB,EAAE,KAAK,EAAE,wEAAwE;IACjG,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,oBAAoB;IAC3C,cAAc,EAAE,OAAO;CAC1B,CAAA;AAEY,QAAA,oBAAoB,GAAsB;IACnD,GAAG,qBAAa;IAChB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,eAAe;IAC1B,gBAAgB,EAAE,KAAK,EAAE,wEAAwE;IACjG,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,oBAAoB;IAC3C,cAAc,EAAE,qBAAqB;CACxC,CAAA;AAEY,QAAA,mBAAmB,GAAsB;IAClD,GAAG,qBAAa;IAChB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,QAAQ;IACnB,gBAAgB,EAAE,KAAK,EAAE,wEAAwE;IACjG,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,UAAU;IACjC,cAAc,EAAE,OAAO;CAC1B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/core/pipeline.ts"],"names":[],"mappings":"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"}