@arkadia/data 0.1.7

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +191 -0
  3. package/dist/config.d.ts +75 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +28 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/core/Decoder.d.ts +86 -0
  8. package/dist/core/Decoder.d.ts.map +1 -0
  9. package/dist/core/Decoder.js +951 -0
  10. package/dist/core/Decoder.js.map +1 -0
  11. package/dist/core/Encoder.d.ts +26 -0
  12. package/dist/core/Encoder.d.ts.map +1 -0
  13. package/dist/core/Encoder.js +368 -0
  14. package/dist/core/Encoder.js.map +1 -0
  15. package/dist/core/Parser.d.ts +6 -0
  16. package/dist/core/Parser.d.ts.map +1 -0
  17. package/dist/core/Parser.js +132 -0
  18. package/dist/core/Parser.js.map +1 -0
  19. package/dist/index.d.ts +22 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +46 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/models/Meta.d.ts +48 -0
  24. package/dist/models/Meta.d.ts.map +1 -0
  25. package/dist/models/Meta.js +113 -0
  26. package/dist/models/Meta.js.map +1 -0
  27. package/dist/models/Node.d.ts +42 -0
  28. package/dist/models/Node.d.ts.map +1 -0
  29. package/dist/models/Node.js +179 -0
  30. package/dist/models/Node.js.map +1 -0
  31. package/dist/models/Schema.d.ts +55 -0
  32. package/dist/models/Schema.d.ts.map +1 -0
  33. package/dist/models/Schema.js +175 -0
  34. package/dist/models/Schema.js.map +1 -0
  35. package/package.json +32 -0
  36. package/scripts/verify-build.js +202 -0
  37. package/src/config.ts +102 -0
  38. package/src/core/Decoder.ts +1057 -0
  39. package/src/core/Encoder.ts +443 -0
  40. package/src/core/Parser.ts +150 -0
  41. package/src/index.ts +46 -0
  42. package/src/models/Meta.ts +135 -0
  43. package/src/models/Node.ts +212 -0
  44. package/src/models/Schema.ts +222 -0
  45. package/tests/00.meta.test.ts +31 -0
  46. package/tests/00.node.test.ts +54 -0
  47. package/tests/00.primitive.test.ts +108 -0
  48. package/tests/00.schema.test.ts +41 -0
  49. package/tests/01.schema.test.ts +70 -0
  50. package/tests/02.data.test.ts +89 -0
  51. package/tests/03.errors.test.ts +71 -0
  52. package/tests/04.list.test.ts +225 -0
  53. package/tests/05.record.test.ts +82 -0
  54. package/tests/06.meta.test.ts +506 -0
  55. package/tests/utils.ts +69 -0
  56. package/tsconfig.json +46 -0
  57. package/vitest.config.ts +9 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Arkadia Solutions
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,191 @@
1
+ # @arkadia/data
2
+
3
+ ```
4
+ ; i :J
5
+ U, .j..fraaM. nl
6
+ b h.obWMkkWWMMWMCdkvz,k
7
+ ! .mQWM:o hiMoMW v.uaXMdohbi
8
+ hI,MMmaIao.Wo .IMkoh FCMwqoXa
9
+ ,.c.aWdM. d,aToW . Mb!. MopfQ.L
10
+ jhj.xoM :k aCu F: w MpmqMvMMI,I
11
+ bzMhz:W .Mw . o lYh ai M iMa pM.j
12
+ hzqWWM; M;o.WMWWMkMX f.a aa bModpo.
13
+ ;tMbbv xp oJMMWWWWMMMM iv dLMXakM:T
14
+ mdh MMWWWWWWWbQLCzurjktvMor
15
+ ,QFw ;M,b .MWWWWWWWMWMWd xz M,kd X
16
+ qjMIo IMTW.WWWWWMWWWM.o.I rpULaMdi.
17
+ .mMM uoWWWMWWWWWWp qM,,M l M;mMbrI
18
+ f nm MMW MWWjMuMj I o LbMac
19
+ WWdMWWWW Mv a.b..aauMhMwQf
20
+ MoWWW,WWtjonJMWtoMdoaoMI
21
+ MMMM Mi xd:Mm tMwo Cr,
22
+ xMMc .otqokWMMMao:oio.
23
+ MW . C..MkTIo
24
+ WW
25
+ QWM
26
+ WW
27
+ uMW
28
+ WW
29
+ MW
30
+ ```
31
+
32
+
33
+ [![npm version](https://img.shields.io/npm/v/@arkadia/data.svg)](https://www.npmjs.com/package/@arkadia/data)
34
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
35
+
36
+ **Official Parser and Stringifier for the Arkadia Data Format (AKD).**
37
+
38
+ AKD is a schema-first, high-density data protocol designed specifically for **LLM context optimization**. It significantly reduces token usage compared to JSON by eliminating redundant syntax characters and enforcing strict typing via schemas.
39
+
40
+ ## ✨ Features
41
+
42
+ - **Token Efficient:** Reduces context window usage by 15-30% compared to standard JSON.
43
+ - **Type Safe:** Enforces types (int, float, bool, string) explicitly in the schema.
44
+ - **Dual Mode:** Supports both **Named Records** (Map-like) and **Positional Records** (Tuple-like).
45
+ - **Zero-Dependency:** Lightweight and fast, built for high-performance pipelines.
46
+
47
+ ## 📦 Installation
48
+
49
+ ```bash
50
+ npm install @arkadia/data
51
+
52
+ ```
53
+
54
+ ## 🚀 Usage
55
+
56
+ ### Importing
57
+
58
+ ```typescript
59
+ import { encode, decode } from '@arkadia/data';
60
+
61
+ ```
62
+
63
+ ### Encoding (JavaScript Object → AKD String)
64
+
65
+ Converts standard JavaScript objects into the token-optimized AKD string format.
66
+
67
+ ```typescript
68
+ const data = {
69
+ id: 1,
70
+ name: "Alice",
71
+ active: true
72
+ };
73
+
74
+ // Compact encoding (default)
75
+ const akdString = encode(data);
76
+
77
+ console.log(akdString);
78
+ // Output: <id:number,name:string,active:bool>(1,"Alice",true)
79
+
80
+ ```
81
+
82
+ ### Decoding (AKD String → AST / Value)
83
+
84
+ Parses an AKD string back into a usable node structure.
85
+
86
+ ```typescript
87
+ const input = '<score:number>(98.5)';
88
+
89
+ const result = decode(input);
90
+
91
+ if (result.errors.length === 0) {
92
+ console.log(result.node.value);
93
+ // Output: 98.5
94
+
95
+ console.log(result.node.isRecord);
96
+ // Output: true
97
+ } else {
98
+ console.error("Parsing errors:", result.errors);
99
+ }
100
+
101
+ ```
102
+
103
+ ## 📖 Syntax Guide
104
+
105
+ The AKD format uses a distinct syntax to separate schema definition from data values.
106
+
107
+ ### Primitives
108
+
109
+ Primitive values are explicitly typed using angle brackets `<type>`.
110
+
111
+ | Type | Input Example | Encoded Output |
112
+ | --- | --- | --- |
113
+ | Integer | `123` | `<number>123` |
114
+ | Float | `12.34` | `<number>12.34` |
115
+ | String | `"hello"` | `<string>"hello"` |
116
+ | Boolean | `true` | `<bool>true` |
117
+ | Null | `null` | `<null>null` |
118
+
119
+ ### Named Records
120
+
121
+ Similar to JSON objects, but the keys are lifted into a schema definition.
122
+
123
+ **Input:**
124
+
125
+ ```json
126
+ { "id": 1, "name": "Test" }
127
+
128
+ ```
129
+
130
+ **Encoded (AKD):**
131
+
132
+ ```text
133
+ <id:number,name:string>(1,"Test")
134
+
135
+ ```
136
+
137
+ ### Positional Records (Tuples)
138
+
139
+ Data without keys, where position determines meaning.
140
+
141
+ **Input:**
142
+
143
+ ```javascript
144
+ // (10, "Alice") - conceptually
145
+
146
+ ```
147
+
148
+ **Encoded (AKD):**
149
+
150
+ ```text
151
+ <_0:number,_1:string>(10,"Alice")
152
+
153
+ ```
154
+
155
+ ## 🛠️ API Reference
156
+
157
+ ### `encode(input: any, options?: EncodeOptions): string`
158
+
159
+ Serializes a JavaScript value into an AKD string.
160
+
161
+ * `input`: The data to encode.
162
+ * `options`:
163
+ * `compact`: (boolean) Remove whitespace. Default: `true`.
164
+ * `colorize`: (boolean) Add ANSI colors for terminal output. Default: `false`.
165
+
166
+
167
+
168
+ ### `decode(text: string, options?: DecodeOptions): ParseResult`
169
+
170
+ Parses an AKD string.
171
+
172
+ * `text`: The AKD string to parse.
173
+ * `options`:
174
+ * `debug`: (boolean) Enable detailed logging.
175
+
176
+
177
+ * **Returns** `ParseResult`:
178
+ * `node`: The parsed AST node containing value and metadata.
179
+ * `errors`: Array of parsing errors, if any.
180
+
181
+
182
+
183
+ ## 📄 License
184
+
185
+ This project is licensed under the [MIT License].
186
+
187
+ ---
188
+
189
+ <div align="center">
190
+ <sub>Built by <strong>Arkadia AI</strong>. Engineering the kernel of distributed intelligence.</sub>
191
+ </div>
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Configuration options for the AK Data Format Encoder.
3
+ */
4
+ export interface EncoderConfig {
5
+ /**
6
+ * Embed schema directly inside sample data (useful for LLM prompting).
7
+ * Example: [ (name: string /name of user/, age: int) ]
8
+ * Default: false
9
+ */
10
+ promptOutput: boolean;
11
+ /**
12
+ * Number of spaces used for indentation.
13
+ * Default: 2
14
+ */
15
+ indent: number;
16
+ /**
17
+ * Initial indentation offset (level).
18
+ * Default: 0
19
+ */
20
+ startIndent: number;
21
+ /**
22
+ * Enable compact formatting. Removes unnecessary spaces and newlines.
23
+ * Default: false
24
+ */
25
+ compact: boolean;
26
+ /**
27
+ * Escape newline characters in strings as literal \n and \r.
28
+ * Default: false
29
+ */
30
+ escapeNewLines: boolean;
31
+ /**
32
+ * purely removes new lines from strings.
33
+ * Default: false
34
+ */
35
+ removeNewLines: boolean;
36
+ /**
37
+ * Enable ANSI colorized output for terminal debugging.
38
+ * Default: false
39
+ */
40
+ colorize: boolean;
41
+ /**
42
+ * Include comments in the output ).
43
+ * Default: true
44
+ */
45
+ includeComments: boolean;
46
+ /**
47
+ * Include array size information (e.g. [ $size=5 : ... ]).
48
+ * Default: false
49
+ */
50
+ includeArraySize: boolean;
51
+ /**
52
+ * Include the schema definition header (e.g. <name: string>).
53
+ * Default: true
54
+ */
55
+ includeSchema: boolean;
56
+ /**
57
+ * Include metadata attributes and tags ($attr=1 #tag).
58
+ * Default: true
59
+ */
60
+ includeMeta: boolean;
61
+ /**
62
+ * Include type signature after field names (e.g. name: string vs name).
63
+ * Default: true
64
+ */
65
+ includeType: boolean;
66
+ }
67
+ /**
68
+ * Default configuration values.
69
+ */
70
+ export declare const DEFAULT_CONFIG: EncoderConfig;
71
+ /**
72
+ * Helper to merge partial user config with defaults.
73
+ */
74
+ export declare function resolveConfig(config?: Partial<EncoderConfig>): EncoderConfig;
75
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,aAa5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAE5E"}
package/dist/config.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONFIG = void 0;
4
+ exports.resolveConfig = resolveConfig;
5
+ /**
6
+ * Default configuration values.
7
+ */
8
+ exports.DEFAULT_CONFIG = {
9
+ indent: 2,
10
+ startIndent: 0,
11
+ compact: false,
12
+ escapeNewLines: false,
13
+ removeNewLines: false,
14
+ colorize: false,
15
+ includeComments: true,
16
+ includeArraySize: false,
17
+ includeSchema: true,
18
+ includeMeta: true,
19
+ includeType: true,
20
+ promptOutput: false,
21
+ };
22
+ /**
23
+ * Helper to merge partial user config with defaults.
24
+ */
25
+ function resolveConfig(config) {
26
+ return { ...exports.DEFAULT_CONFIG, ...config };
27
+ }
28
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAmGA,sCAEC;AAvBD;;GAEG;AACU,QAAA,cAAc,GAAkB;IACzC,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAK;IACd,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,KAAK;CACtB,CAAC;AAEF;;GAEG;AACH,SAAgB,aAAa,CAAC,MAA+B;IACzD,OAAO,EAAE,GAAG,sBAAc,EAAE,GAAG,MAAM,EAAE,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { Node } from '../models/Node';
2
+ import { Schema } from '../models/Schema';
3
+ export declare class DecodeError {
4
+ message: string;
5
+ position: number;
6
+ context: string;
7
+ schema: Schema | null;
8
+ node: Node | null;
9
+ constructor(message: string, position: number, schema?: Schema | null, node?: Node | null);
10
+ toString(): string;
11
+ }
12
+ export declare class DecodeWarning {
13
+ message: string;
14
+ position: number;
15
+ schema: Schema | null;
16
+ node: Node | null;
17
+ constructor(message: string, position: number, schema?: Schema | null, node?: Node | null);
18
+ toString(): string;
19
+ }
20
+ export interface DecodeResult {
21
+ node: Node;
22
+ schema: Schema | null;
23
+ errors: DecodeError[];
24
+ warnings: DecodeWarning[];
25
+ }
26
+ export declare class Decoder {
27
+ private static PRIMITIVES;
28
+ private static PRIMITIVES_MAPPING;
29
+ private static MAX_ERRORS;
30
+ private text;
31
+ private debug;
32
+ private i;
33
+ private line;
34
+ private col;
35
+ private pendingMeta;
36
+ private nodeStack;
37
+ private schemaStack;
38
+ private errors;
39
+ private warnings;
40
+ private namedSchemas;
41
+ constructor(text: string, schema?: string, removeAnsiColors?: boolean, debug?: boolean);
42
+ decode(): DecodeResult;
43
+ private parseSchemaAtRef;
44
+ private parseSchemaBody;
45
+ private parseSchemaBodyContent;
46
+ private parseSchemaType;
47
+ private parseNode;
48
+ private parseNodeWithSchemaRef;
49
+ private parseNodeWithInlineSchema;
50
+ private parseList;
51
+ private parsePositionalRecord;
52
+ private parseNamedRecord;
53
+ private parseMeta;
54
+ private parseCommentBlock;
55
+ private parseModifierInline;
56
+ private parseMetaBlock;
57
+ private parseMetaAttribute;
58
+ private parseMetaTag;
59
+ private parseMetaFlag;
60
+ private parseIdent;
61
+ private parseString;
62
+ private parseNumber;
63
+ private parseRawString;
64
+ private parsePrimitiveValue;
65
+ private readQuotedString;
66
+ private readNumber;
67
+ private get currentSchema();
68
+ private createSchema;
69
+ private pushSchema;
70
+ private popSchema;
71
+ private get currentNode();
72
+ private pushNode;
73
+ private popNode;
74
+ private createNode;
75
+ private applyMeta;
76
+ private advance;
77
+ private skipWhitespace;
78
+ private eof;
79
+ private peek;
80
+ private peekNext;
81
+ private expect;
82
+ private addError;
83
+ private addWarning;
84
+ private _dbg;
85
+ }
86
+ //# sourceMappingURL=Decoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decoder.d.ts","sourceRoot":"","sources":["../../src/core/Decoder.ts"],"names":[],"mappings":"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"}