toonfile 1.0.0

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.
@@ -0,0 +1,161 @@
1
+ /**
2
+ * TOON File Types and Interfaces
3
+ */
4
+ import type * as fs from 'fs';
5
+ /**
6
+ * Options for reading TOON files
7
+ */
8
+ export interface ReadOptions {
9
+ /**
10
+ * File encoding (default: 'utf8')
11
+ */
12
+ encoding?: BufferEncoding;
13
+ /**
14
+ * Throw error on parse failure. If false, returns null instead.
15
+ * @default true
16
+ */
17
+ throws?: boolean;
18
+ /**
19
+ * Custom fs module for testing or alternative file systems
20
+ */
21
+ fs?: typeof fs;
22
+ /**
23
+ * Transform function applied to parsed values (similar to JSON.parse reviver)
24
+ */
25
+ reviver?: (key: string, value: any) => any;
26
+ /**
27
+ * Indent size for parsing (default: 2)
28
+ */
29
+ indentSize?: number;
30
+ /**
31
+ * Strict mode for parsing
32
+ * @default true
33
+ */
34
+ strict?: boolean;
35
+ }
36
+ /**
37
+ * Options for writing TOON files
38
+ */
39
+ export interface WriteOptions {
40
+ /**
41
+ * File encoding (default: 'utf8')
42
+ */
43
+ encoding?: BufferEncoding;
44
+ /**
45
+ * Custom fs module for testing or alternative file systems
46
+ */
47
+ fs?: typeof fs;
48
+ /**
49
+ * Spaces per indent level
50
+ * @default 2
51
+ */
52
+ indentSize?: number;
53
+ /**
54
+ * Delimiter for arrays: comma, tab, or pipe
55
+ * @default ','
56
+ */
57
+ delimiter?: ',' | '\t' | '|';
58
+ /**
59
+ * End-of-line character(s)
60
+ * @default '\n'
61
+ */
62
+ EOL?: '\n' | '\r\n' | string;
63
+ /**
64
+ * Include EOL at end of file
65
+ * @default true
66
+ */
67
+ finalEOL?: boolean;
68
+ /**
69
+ * Use tabular format for uniform arrays of objects
70
+ * @default true
71
+ */
72
+ tabularArrays?: boolean;
73
+ /**
74
+ * Minimum array length to use tabular format
75
+ * @default 2
76
+ */
77
+ minArrayLengthForTabular?: number;
78
+ /**
79
+ * Transform function applied before stringifying (similar to JSON.stringify replacer)
80
+ */
81
+ replacer?: (key: string, value: any) => any;
82
+ /**
83
+ * File system flags (e.g., 'w', 'a')
84
+ * @default 'w'
85
+ */
86
+ flag?: string;
87
+ /**
88
+ * File mode (permissions)
89
+ */
90
+ mode?: number;
91
+ }
92
+ /**
93
+ * Options for parsing TOON strings
94
+ */
95
+ export interface ParseOptions {
96
+ /**
97
+ * Transform function applied to parsed values
98
+ */
99
+ reviver?: (key: string, value: any) => any;
100
+ /**
101
+ * Indent size (default: 2)
102
+ */
103
+ indentSize?: number;
104
+ /**
105
+ * Strict mode
106
+ * @default true
107
+ */
108
+ strict?: boolean;
109
+ }
110
+ /**
111
+ * Options for stringifying objects to TOON
112
+ */
113
+ export interface StringifyOptions {
114
+ /**
115
+ * Spaces per indent level
116
+ * @default 2
117
+ */
118
+ indentSize?: number;
119
+ /**
120
+ * Delimiter for arrays
121
+ * @default ','
122
+ */
123
+ delimiter?: ',' | '\t' | '|' | string;
124
+ /**
125
+ * End-of-line character(s)
126
+ * @default '\n'
127
+ */
128
+ EOL?: '\n' | '\r\n' | string;
129
+ /**
130
+ * Include EOL at end of file
131
+ * @default true
132
+ */
133
+ finalEOL?: boolean;
134
+ /**
135
+ * Use tabular format for uniform arrays
136
+ * @default true
137
+ */
138
+ tabularArrays?: boolean;
139
+ /**
140
+ * Minimum array length for tabular format
141
+ * @default 2
142
+ */
143
+ minArrayLengthForTabular?: number;
144
+ /**
145
+ * Transform function applied before stringifying
146
+ */
147
+ replacer?: (key: string, value: any) => any;
148
+ }
149
+ /**
150
+ * Callback function for async operations
151
+ */
152
+ export type Callback<T> = (err: Error | null, data?: T) => void;
153
+ /**
154
+ * TOON value types
155
+ */
156
+ export type ToonValue = string | number | boolean | null | ToonArray | ToonObject;
157
+ export interface ToonObject {
158
+ [key: string]: ToonValue;
159
+ }
160
+ export type ToonArray = ToonValue[];
161
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,EAAE,MAAM,IAAI,CAAA;AAE7B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;OAEG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAE1C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB;;OAEG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;IAEd;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,CAAA;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAE5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAE3C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAE1C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAA;IAErC;;;OAGG;IACH,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAE5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAA;AAE/D;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,UAAU,CAAA;AAEd,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CACzB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * TOON File Types and Interfaces
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * TOON Format Parser and Serializer
3
+ *
4
+ * Custom implementation supporting basic TOON features.
5
+ */
6
+ import type { ParseOptions, StringifyOptions } from './types';
7
+ /**
8
+ * Parse TOON string to JavaScript object
9
+ */
10
+ export declare function parse(content: string | Buffer, options?: ParseOptions): any;
11
+ /**
12
+ * Stringify JavaScript object to TOON format
13
+ */
14
+ export declare function stringify(obj: any, options?: StringifyOptions): string;
15
+ export declare function stripBom(content: string | Buffer): string;
16
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAEjB,MAAM,SAAS,CAAA;AAEhB;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,GAAG,CAuE/E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAqD1E;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGzD"}
package/dist/utils.js ADDED
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ /**
3
+ * TOON Format Parser and Serializer
4
+ *
5
+ * Custom implementation supporting basic TOON features.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.parse = parse;
9
+ exports.stringify = stringify;
10
+ exports.stripBom = stripBom;
11
+ /**
12
+ * Parse TOON string to JavaScript object
13
+ */
14
+ function parse(content, options = {}) {
15
+ if (Buffer.isBuffer(content)) {
16
+ content = content.toString('utf8');
17
+ }
18
+ content = stripBom(content);
19
+ const lines = content.split(/\r?\n/);
20
+ const indentSize = options.indentSize || 2;
21
+ const stack = [{ obj: {}, indent: -indentSize }];
22
+ for (let i = 0; i < lines.length; i++) {
23
+ const line = lines[i];
24
+ // Skip empty lines and comments
25
+ if (!line.trim() || line.trim().startsWith('#'))
26
+ continue;
27
+ const indent = getIndentLevel(line);
28
+ const trimmedLine = line.trim();
29
+ // Pop stack until we find the right parent
30
+ while (stack.length > 1 && indent <= stack[stack.length - 1].indent) {
31
+ stack.pop();
32
+ }
33
+ const parent = stack[stack.length - 1].obj;
34
+ // Parse key-value
35
+ if (trimmedLine.includes(':')) {
36
+ const colonIndex = trimmedLine.indexOf(':');
37
+ const key = trimmedLine.substring(0, colonIndex).trim();
38
+ const valueStr = trimmedLine.substring(colonIndex + 1).trim();
39
+ // Check for array declaration: key[length]
40
+ const arrayMatch = key.match(/^(.+)\[(\d+)\]$/);
41
+ if (arrayMatch) {
42
+ // Inline array: scores[3]: 95,87,92
43
+ const arrayName = arrayMatch[1];
44
+ const arrayLength = parseInt(arrayMatch[2], 10);
45
+ if (valueStr) {
46
+ parent[arrayName] = parseInlineArray(valueStr, arrayLength);
47
+ }
48
+ else {
49
+ parent[arrayName] = [];
50
+ }
51
+ }
52
+ else if (valueStr) {
53
+ // Simple key-value
54
+ parent[key] = parseValue(valueStr);
55
+ }
56
+ else {
57
+ // Nested object
58
+ const newObj = {};
59
+ parent[key] = newObj;
60
+ stack.push({ obj: newObj, indent });
61
+ }
62
+ }
63
+ }
64
+ const result = stack[0].obj;
65
+ if (options.reviver) {
66
+ return applyReviver(result, options.reviver);
67
+ }
68
+ return result;
69
+ }
70
+ /**
71
+ * Stringify JavaScript object to TOON format
72
+ */
73
+ function stringify(obj, options = {}) {
74
+ const indentSize = options.indentSize || 2;
75
+ const delimiter = options.delimiter || ',';
76
+ const lines = [];
77
+ function serializeObject(o, depth = 0) {
78
+ const indent = ' '.repeat(depth * indentSize);
79
+ for (const [key, value] of Object.entries(o)) {
80
+ if (Array.isArray(value)) {
81
+ const arrayStr = value.map(v => serializeValue(v)).join(delimiter);
82
+ lines.push(`${indent}${key}[${value.length}]: ${arrayStr}`);
83
+ }
84
+ else if (value !== null && typeof value === 'object') {
85
+ lines.push(`${indent}${key}:`);
86
+ serializeObject(value, depth + 1);
87
+ }
88
+ else {
89
+ lines.push(`${indent}${key}: ${serializeValue(value)}`);
90
+ }
91
+ }
92
+ }
93
+ function serializeValue(value) {
94
+ if (value === null)
95
+ return 'null';
96
+ if (typeof value === 'boolean')
97
+ return value.toString();
98
+ if (typeof value === 'number')
99
+ return value.toString();
100
+ if (typeof value === 'string') {
101
+ if (needsQuotes(value, delimiter)) {
102
+ return `"${escapeString(value)}"`;
103
+ }
104
+ return value;
105
+ }
106
+ return String(value);
107
+ }
108
+ serializeObject(obj);
109
+ let result = lines.join('\n');
110
+ // Handle finalEOL (default: true)
111
+ const finalEOL = options.finalEOL !== undefined ? options.finalEOL : true;
112
+ if (finalEOL && !result.endsWith('\n')) {
113
+ result += '\n';
114
+ }
115
+ else if (!finalEOL && result.endsWith('\n')) {
116
+ result = result.slice(0, -1);
117
+ }
118
+ // Handle EOL customization
119
+ const EOL = options.EOL || '\n';
120
+ if (EOL !== '\n') {
121
+ result = result.replace(/\n/g, EOL);
122
+ }
123
+ return result;
124
+ }
125
+ function stripBom(content) {
126
+ if (Buffer.isBuffer(content))
127
+ content = content.toString('utf8');
128
+ return content.replace(/^\uFEFF/, '');
129
+ }
130
+ function applyReviver(obj, reviver) {
131
+ return reviver('', obj);
132
+ }
133
+ function parseInlineArray(valueStr, expectedLength) {
134
+ const delimiter = detectDelimiter(valueStr);
135
+ const values = valueStr.split(delimiter).map(v => parseValue(v.trim()));
136
+ if (expectedLength !== undefined && values.length !== expectedLength) {
137
+ console.warn(`[toonfile] Array length mismatch: expected ${expectedLength}, got ${values.length}`);
138
+ }
139
+ return values;
140
+ }
141
+ function detectDelimiter(str) {
142
+ if (str.includes('\t'))
143
+ return '\t';
144
+ if (str.includes('|'))
145
+ return '|';
146
+ return ',';
147
+ }
148
+ function parseValue(str) {
149
+ if (str === 'null')
150
+ return null;
151
+ if (str === 'true')
152
+ return true;
153
+ if (str === 'false')
154
+ return false;
155
+ if (/^-?\d+(\.\d+)?$/.test(str)) {
156
+ return parseFloat(str);
157
+ }
158
+ if ((str.startsWith('"') && str.endsWith('"')) ||
159
+ (str.startsWith("'") && str.endsWith("'"))) {
160
+ return unescapeString(str.slice(1, -1));
161
+ }
162
+ return str;
163
+ }
164
+ function getIndentLevel(line) {
165
+ const match = line.match(/^( *)/);
166
+ return match ? match[1].length : 0;
167
+ }
168
+ function needsQuotes(str, delimiter) {
169
+ const reservedWords = ['true', 'false', 'null'];
170
+ if (reservedWords.includes(str))
171
+ return true;
172
+ if (str.includes(delimiter))
173
+ return true;
174
+ if (str.includes(':'))
175
+ return true;
176
+ if (str.includes('\n') || str.includes('\r') || str.includes('\t'))
177
+ return true;
178
+ if (/^-?\d+(\.\d+)?$/.test(str))
179
+ return true;
180
+ return false;
181
+ }
182
+ function escapeString(str) {
183
+ return str
184
+ .replace(/\\/g, '\\\\')
185
+ .replace(/"/g, '\\"')
186
+ .replace(/\n/g, '\\n')
187
+ .replace(/\r/g, '\\r')
188
+ .replace(/\t/g, '\\t');
189
+ }
190
+ function unescapeString(str) {
191
+ return str
192
+ .replace(/\\n/g, '\n')
193
+ .replace(/\\r/g, '\r')
194
+ .replace(/\\t/g, '\t')
195
+ .replace(/\\"/g, '"')
196
+ .replace(/\\'/g, "'")
197
+ .replace(/\\\\/g, '\\');
198
+ }
199
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "toonfile",
3
+ "version": "1.0.0",
4
+ "description": "Easily read/write TOON files. Like jsonfile, but for TOON format.",
5
+ "keywords": [
6
+ "toon",
7
+ "toon-format",
8
+ "file",
9
+ "read",
10
+ "write",
11
+ "fs",
12
+ "llm",
13
+ "token-efficient",
14
+ "json",
15
+ "parser",
16
+ "serializer",
17
+ "config",
18
+ "configuration",
19
+ "data"
20
+ ],
21
+ "author": {
22
+ "name": "ideas2code",
23
+ "url": "https://www.npmjs.com/~ideas2code"
24
+ },
25
+ "license": "MIT",
26
+ "homepage": "https://github.com/ideas2codedev/node-toonfile#readme",
27
+ "bugs": {
28
+ "url": "https://github.com/ideas2codedev/node-toonfile/issues"
29
+ },
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/ideas2codedev/node-toonfile.git"
33
+ },
34
+ "main": "dist/index.js",
35
+ "types": "dist/index.d.ts",
36
+ "files": [
37
+ "dist/**/*",
38
+ "src/**/*"
39
+ ],
40
+ "scripts": {
41
+ "build": "tsc",
42
+ "clean": "rimraf dist",
43
+ "prebuild": "npm run clean",
44
+ "lint": "standard",
45
+ "test": "npm run build && npm run unit",
46
+ "unit": "mocha",
47
+ "prepublishOnly": "npm run build"
48
+ },
49
+ "dependencies": {
50
+ "universalify": "^2.0.0"
51
+ },
52
+ "optionalDependencies": {
53
+ "graceful-fs": "^4.1.6"
54
+ },
55
+ "devDependencies": {
56
+ "@types/mocha": "^10.0.10",
57
+ "@types/node": "^25.0.3",
58
+ "mocha": "^10.0.0",
59
+ "rimraf": "^5.0.0",
60
+ "standard": "^17.0.0",
61
+ "ts-node": "^10.9.2",
62
+ "typescript": "^5.9.3"
63
+ },
64
+ "engines": {
65
+ "node": ">=14"
66
+ },
67
+ "standard": {
68
+ "env": [
69
+ "mocha"
70
+ ]
71
+ }
72
+ }