yini-parser 1.0.0-alpha.4 → 1.0.0-alpha.5
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.
- package/README.md +99 -6
- package/dist/utils/system.d.ts +1 -0
- package/dist/utils/system.js +7 -2
- package/package.json +13 -5
package/README.md
CHANGED
|
@@ -13,6 +13,13 @@ YINI is a simple, human-friendly configuration format inspired by INI and JSON.
|
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
+
## 💡 Why YINI?
|
|
17
|
+
- Easy to read and write — minimal syntax, maximum clarity.
|
|
18
|
+
- Supports nested sections, strict/lenient modes, and all major data types.
|
|
19
|
+
- A perfect alternative to messy JSON, legacy INI, or complex YAML.
|
|
20
|
+
- Built for both JavaScript and TypeScript.
|
|
21
|
+
- Human-friendly, machine-friendly, and ready for modern projects.
|
|
22
|
+
|
|
16
23
|
## ✨ Features
|
|
17
24
|
- Simple syntax (supports both strict and lenient modes).
|
|
18
25
|
- Familiar config file style (inspired by INI, YAML, TOML).
|
|
@@ -47,13 +54,26 @@ pnpm add yini-parser
|
|
|
47
54
|
|
|
48
55
|
## Usage
|
|
49
56
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
### Node.js (CommonJS)
|
|
58
|
+
**Note:** Only a default export (YINI) is provided. Named imports are not supported.
|
|
59
|
+
```js
|
|
60
|
+
const YINI = require('yini-parser');
|
|
61
|
+
// If you get undefined, try:
|
|
62
|
+
const YINI = require('yini-parser').default;
|
|
63
|
+
|
|
64
|
+
// Parse from string.
|
|
65
|
+
const config = YINI.parse(`
|
|
66
|
+
^ App
|
|
67
|
+
title = 'My App Title'
|
|
68
|
+
items = 25
|
|
69
|
+
isDarkTheme = true
|
|
70
|
+
`);
|
|
55
71
|
|
|
56
|
-
|
|
72
|
+
// Parse from file.
|
|
73
|
+
const configFromFile = YINI.parseFile('./config.yini');
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### TypeScript (with `"esModuleInterop": true`)
|
|
57
77
|
```ts
|
|
58
78
|
import YINI from 'yini-parser';
|
|
59
79
|
|
|
@@ -114,6 +134,79 @@ Returns a JavaScript object representing the parsed YINI configuration file.
|
|
|
114
134
|
}
|
|
115
135
|
```
|
|
116
136
|
|
|
137
|
+
---
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### Bigger Example
|
|
141
|
+
|
|
142
|
+
```js
|
|
143
|
+
const YINI = require('yini-parser'); // Or: import YINI from 'yini-parser';
|
|
144
|
+
|
|
145
|
+
const config = YINI.parse(`
|
|
146
|
+
/*
|
|
147
|
+
This is a multi-line block comment.
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
@yini
|
|
151
|
+
|
|
152
|
+
^ App
|
|
153
|
+
name = "Nested Example"
|
|
154
|
+
version = "1.0.0"
|
|
155
|
+
debug = OFF // This is a comment.
|
|
156
|
+
|
|
157
|
+
# Database settings.
|
|
158
|
+
^^ Database
|
|
159
|
+
host = "db.example.com"
|
|
160
|
+
port = 3306
|
|
161
|
+
user = "appuser"
|
|
162
|
+
--password = "dbpassword" # Disabled line due to --.
|
|
163
|
+
//password = "dbpassword" # Not sure yet about this pw.
|
|
164
|
+
password = "dbpassword" # Keep this secret.
|
|
165
|
+
|
|
166
|
+
// Commenting with slashes works too.
|
|
167
|
+
^^^ Pool
|
|
168
|
+
min = 2
|
|
169
|
+
max = 10
|
|
170
|
+
idleTimeout = 300
|
|
171
|
+
|
|
172
|
+
/* Block comment on a single line. */
|
|
173
|
+
^^ Logging
|
|
174
|
+
level = "info"
|
|
175
|
+
logToFile = ON # This is a comment.
|
|
176
|
+
filePath = "./logs/app.log"
|
|
177
|
+
|
|
178
|
+
/END
|
|
179
|
+
`);
|
|
180
|
+
|
|
181
|
+
console.log(config);
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### Output:
|
|
185
|
+
```js
|
|
186
|
+
{
|
|
187
|
+
"App": {
|
|
188
|
+
"name": "Nested Example",
|
|
189
|
+
"version": "1.0.0",
|
|
190
|
+
"debug": false,
|
|
191
|
+
"Database": {
|
|
192
|
+
"host": "db.example.com",
|
|
193
|
+
"port": 3306,
|
|
194
|
+
"user": "appuser",
|
|
195
|
+
"password": "dbpassword",
|
|
196
|
+
"Pool": {
|
|
197
|
+
"min": 2,
|
|
198
|
+
"max": 10,
|
|
199
|
+
"idleTimeout": 300
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"Logging": {
|
|
203
|
+
"level": "info",
|
|
204
|
+
"logToFile": true,
|
|
205
|
+
"filePath": "./logs/app.log"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
117
210
|
---
|
|
118
211
|
|
|
119
212
|
## 📚 Documentation
|
package/dist/utils/system.d.ts
CHANGED
package/dist/utils/system.js
CHANGED
|
@@ -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.printObject = exports.devPrint = exports.debugPrint = void 0;
|
|
7
|
+
exports.printObject = exports.toPrettyJSON = exports.devPrint = exports.debugPrint = void 0;
|
|
8
8
|
const env_1 = require("../config/env");
|
|
9
9
|
const debugPrint = (str = '') => {
|
|
10
10
|
(0, env_1.isDebug)() && console.debug('DEBUG: ' + str);
|
|
@@ -14,10 +14,15 @@ const devPrint = (str = '') => {
|
|
|
14
14
|
(0, env_1.isDev)() && !(0, env_1.isTestEnv)() && console.log('DEV: ' + str);
|
|
15
15
|
};
|
|
16
16
|
exports.devPrint = devPrint;
|
|
17
|
+
const toPrettyJSON = (obj) => {
|
|
18
|
+
const str = JSON.stringify(obj, null, 4);
|
|
19
|
+
return str;
|
|
20
|
+
};
|
|
21
|
+
exports.toPrettyJSON = toPrettyJSON;
|
|
17
22
|
const printObject = (obj) => {
|
|
18
23
|
if ((0, env_1.isProdEnv)() || ((0, env_1.isTestEnv)() && !(0, env_1.isDebug)()))
|
|
19
24
|
return;
|
|
20
|
-
const str =
|
|
25
|
+
const str = (0, exports.toPrettyJSON)(obj);
|
|
21
26
|
console.log(str);
|
|
22
27
|
};
|
|
23
28
|
exports.printObject = printObject;
|
package/package.json
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yini-parser",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.0-alpha.5",
|
|
4
|
+
"description": "Simple and flexible config parser for Node.js. YINI: an enhanced, readable alternative to JSON, INI, and YAML—built for modern JavaScript and TypeScript projects.",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"read",
|
|
7
6
|
"yini",
|
|
7
|
+
"yini-parser",
|
|
8
8
|
"config",
|
|
9
|
+
"config-file",
|
|
10
|
+
"configuration",
|
|
11
|
+
"settings",
|
|
9
12
|
"ini",
|
|
13
|
+
"ini-parser",
|
|
14
|
+
"json-alternative",
|
|
15
|
+
"yaml-alternative",
|
|
10
16
|
"parser",
|
|
11
|
-
"file",
|
|
12
17
|
"parse",
|
|
13
|
-
"
|
|
18
|
+
"read",
|
|
19
|
+
"nodejs",
|
|
20
|
+
"javascript"
|
|
14
21
|
],
|
|
15
22
|
"homepage": "https://m4se.com/yini-lang.org/",
|
|
16
23
|
"license": "Apache-2.0",
|
|
@@ -49,6 +56,7 @@
|
|
|
49
56
|
"test:smoke:debug": "cross-env npm run test:smoke -- --isDebug=1",
|
|
50
57
|
"test:unit:debug": "cross-env npm run test:unit -- --isDebug=1",
|
|
51
58
|
"test:integr:debug": "cross-env npm run test:integr -- --isDebug=1",
|
|
59
|
+
"test:esm": "node ./tests/fixtures/test-src-files/esm-smoke.js",
|
|
52
60
|
"ci:test": "cross-env NODE_ENV=test APP_ENV=ci jest --verbose --runInBand",
|
|
53
61
|
"ci:test:smoke": "cross-env NODE_ENV=test APP_ENV=ci jest tests/smoke --verbose --runInBand",
|
|
54
62
|
"tsc": "npx tsc -p ./tsconfig.json",
|