@arkadia/data 0.1.7 → 0.1.9
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/.prettierrc +8 -0
- package/README.md +159 -112
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/core/Decoder.d.ts.map +1 -1
- package/dist/core/Decoder.js +123 -97
- package/dist/core/Decoder.js.map +1 -1
- package/dist/core/Encoder.d.ts +1 -2
- package/dist/core/Encoder.d.ts.map +1 -1
- package/dist/core/Encoder.js +74 -76
- package/dist/core/Encoder.js.map +1 -1
- package/dist/core/Parser.d.ts +1 -1
- package/dist/core/Parser.d.ts.map +1 -1
- package/dist/core/Parser.js +11 -11
- package/dist/core/Parser.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -8
- package/dist/index.js.map +1 -1
- package/dist/models/Meta.d.ts +3 -2
- package/dist/models/Meta.d.ts.map +1 -1
- package/dist/models/Meta.js +3 -3
- package/dist/models/Meta.js.map +1 -1
- package/dist/models/Node.d.ts +4 -3
- package/dist/models/Node.d.ts.map +1 -1
- package/dist/models/Node.js +29 -23
- package/dist/models/Node.js.map +1 -1
- package/dist/models/Schema.d.ts.map +1 -1
- package/dist/models/Schema.js +27 -21
- package/dist/models/Schema.js.map +1 -1
- package/eslint.config.mjs +42 -0
- package/package.json +11 -1
- package/scripts/verify-build.js +95 -92
- package/src/config.ts +75 -75
- package/src/core/Decoder.ts +984 -922
- package/src/core/Encoder.ts +364 -371
- package/src/core/Parser.ts +112 -112
- package/src/index.ts +18 -20
- package/src/models/Meta.ts +107 -107
- package/src/models/Node.ts +190 -185
- package/src/models/Schema.ts +198 -193
- package/tests/00.meta.test.ts +19 -25
- package/tests/00.node.test.ts +40 -48
- package/tests/00.primitive.test.ts +121 -95
- package/tests/00.schema.test.ts +28 -35
- package/tests/01.schema.test.ts +42 -52
- package/tests/02.data.test.ts +69 -75
- package/tests/03.errors.test.ts +53 -55
- package/tests/04.list.test.ts +192 -193
- package/tests/05.record.test.ts +54 -56
- package/tests/06.meta.test.ts +393 -389
- package/tests/utils.ts +47 -44
- package/tsconfig.json +27 -29
- package/vitest.config.ts +1 -1
package/.prettierrc
ADDED
package/README.md
CHANGED
|
@@ -1,191 +1,238 @@
|
|
|
1
1
|
# @arkadia/data
|
|
2
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
|
|
3
|
+
```text
|
|
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
29
|
MW
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
````
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
[](https://opensource.org/licenses/MIT)
|
|
34
|
+
> **The High-Density, Token-Efficient Data Protocol for Large Language Models.**
|
|
35
35
|
|
|
36
|
-
**
|
|
36
|
+
**Arkadia Data Format (AKD)** is a schema-first protocol designed specifically to optimize communication with LLMs. By stripping away redundant syntax (like repeated JSON keys) and enforcing strict typing, AKD offers **up to 30% token savings**, faster parsing, and a metadata layer invisible to your application logic but fully accessible to AI models.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
---
|
|
39
39
|
|
|
40
|
-
## ✨ Features
|
|
40
|
+
## ✨ Key Features
|
|
41
41
|
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
42
|
+
- **📉 Token Efficiency:** Reduces context window usage by replacing verbose JSON objects with dense Positional Records (Tuples).
|
|
43
|
+
- **🛡️ Type Safety:** Enforces types (`int`, `float`, `bool`, `string`) explicitly in the schema before data reaches the LLM.
|
|
44
|
+
- **🧠 Metadata Injection:** Use `#tags` and `$attributes` to pass context (e.g., source confidence, deprecation warnings) to the LLM without polluting your data structure.
|
|
45
|
+
- **⚡ High Performance:** Zero-dependency, lightweight parser built for high-throughput Node.js/Edge environments.
|
|
46
|
+
|
|
47
|
+
---
|
|
46
48
|
|
|
47
49
|
## 📦 Installation
|
|
48
50
|
|
|
49
51
|
```bash
|
|
50
52
|
npm install @arkadia/data
|
|
53
|
+
# or
|
|
54
|
+
yarn add @arkadia/data
|
|
55
|
+
# or
|
|
56
|
+
pnpm add @arkadia/data
|
|
51
57
|
|
|
52
58
|
```
|
|
53
59
|
|
|
54
|
-
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🚀 Quick Start
|
|
55
63
|
|
|
56
|
-
###
|
|
64
|
+
### Basic Usage
|
|
57
65
|
|
|
58
66
|
```typescript
|
|
59
67
|
import { encode, decode } from '@arkadia/data';
|
|
60
68
|
|
|
69
|
+
// 1. Encode: JavaScript Object -> AKD String
|
|
70
|
+
const data = { id: 1, name: 'Alice', active: true };
|
|
71
|
+
|
|
72
|
+
// Default encoding (compact)
|
|
73
|
+
const encoded = encode(data);
|
|
74
|
+
console.log(encoded);
|
|
75
|
+
// Output: <id:number,name:string,active:bool>(1,"Alice",true)
|
|
76
|
+
|
|
77
|
+
// 2. Decode: AKD String -> JavaScript Object
|
|
78
|
+
const input = '<score:number>(98.5)';
|
|
79
|
+
const result = decode(input);
|
|
80
|
+
|
|
81
|
+
if (result.errors.length === 0) {
|
|
82
|
+
console.log(result.node.value); // 98.5
|
|
83
|
+
} else {
|
|
84
|
+
console.error('Parse errors:', result.errors);
|
|
85
|
+
}
|
|
61
86
|
```
|
|
62
87
|
|
|
63
|
-
|
|
88
|
+
---
|
|
64
89
|
|
|
65
|
-
|
|
90
|
+
## 🛠 API Reference
|
|
66
91
|
|
|
67
|
-
|
|
68
|
-
const data = {
|
|
69
|
-
id: 1,
|
|
70
|
-
name: "Alice",
|
|
71
|
-
active: true
|
|
72
|
-
};
|
|
92
|
+
### `encode(data: unknown, config?: EncodeConfig): string`
|
|
73
93
|
|
|
74
|
-
|
|
75
|
-
const akdString = encode(data);
|
|
94
|
+
Serializes a JavaScript value into an AKD string.
|
|
76
95
|
|
|
77
|
-
|
|
78
|
-
|
|
96
|
+
- `data`: The input string, number, boolean, array, or object.
|
|
97
|
+
- `config`:
|
|
98
|
+
- `compact` (boolean): Removes whitespace. Default: `true`.
|
|
99
|
+
- `colorize` (boolean): Adds ANSI colors for terminal output. Default: `false`.
|
|
100
|
+
- `escapeNewLines` (boolean): Escapes `\n` in strings. Default: `false`.
|
|
79
101
|
|
|
80
|
-
|
|
102
|
+
### `decode(text: string, config?: DecodeConfig): DecodeResult`
|
|
81
103
|
|
|
82
|
-
|
|
104
|
+
Parses an AKD string into a structured node tree.
|
|
83
105
|
|
|
84
|
-
|
|
106
|
+
- `text`: The raw AKD string.
|
|
107
|
+
- `config`:
|
|
108
|
+
- `debug` (boolean): Enables internal logging.
|
|
85
109
|
|
|
86
|
-
|
|
87
|
-
|
|
110
|
+
- **Returns** `DecodeResult`:
|
|
111
|
+
- `node`: The Root Node (contains `.value`, `.dict()`, `.json()`).
|
|
112
|
+
- `errors`: Array of parsing errors.
|
|
88
113
|
|
|
89
|
-
|
|
114
|
+
---
|
|
90
115
|
|
|
91
|
-
|
|
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
|
-
}
|
|
116
|
+
## ⚡ Benchmarks
|
|
100
117
|
|
|
101
|
-
|
|
118
|
+
Why switch? Because every token counts. **AKCD** (Arkadia Compressed Data) consistently outperforms standard formats.
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
BENCHMARK SUMMARY:
|
|
122
|
+
|
|
123
|
+
JSON █████████████████████░░░░ 6921 tok 0.15 ms
|
|
124
|
+
AKCD ████████████████░░░░░░░░░ 5416 tok 4.40 ms
|
|
125
|
+
AKD ███████████████████░░░░░░ 6488 tok 4.29 ms
|
|
126
|
+
TOON █████████████████████████ 8198 tok 2.36 ms
|
|
102
127
|
|
|
103
|
-
|
|
128
|
+
FORMAT TOKENS VS JSON
|
|
129
|
+
---------------------------------
|
|
130
|
+
AKCD 5416 -21.7%
|
|
131
|
+
AKD 6488 -6.3%
|
|
132
|
+
JSON 6921 +0.0%
|
|
133
|
+
TOON 8198 +18.5%
|
|
104
134
|
|
|
105
|
-
|
|
135
|
+
CONCLUSION: Switching to AKCD saves 1505 tokens (21.7%) compared to JSON.
|
|
106
136
|
|
|
107
|
-
|
|
137
|
+
```
|
|
108
138
|
|
|
109
|
-
|
|
139
|
+
---
|
|
110
140
|
|
|
111
|
-
|
|
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` |
|
|
141
|
+
## 📖 Syntax Specification
|
|
118
142
|
|
|
119
|
-
|
|
143
|
+
AKD separates structure (Schema) from content (Data).
|
|
120
144
|
|
|
121
|
-
|
|
145
|
+
### 1. Primitives
|
|
122
146
|
|
|
123
|
-
|
|
147
|
+
Primitive values are automatically typed. Strings are quoted, numbers and booleans are bare.
|
|
124
148
|
|
|
125
|
-
|
|
126
|
-
|
|
149
|
+
| Type | Input | Encoded Output |
|
|
150
|
+
| ----------- | --------- | ----------------- |
|
|
151
|
+
| **Integer** | `123` | `<number>123` |
|
|
152
|
+
| **String** | `"hello"` | `<string>"hello"` |
|
|
153
|
+
| **Boolean** | `true` | `<bool>true` |
|
|
154
|
+
| **Null** | `null` | `<null>null` |
|
|
127
155
|
|
|
128
|
-
|
|
156
|
+
### 2. Schema Definition (`@Type`)
|
|
129
157
|
|
|
130
|
-
|
|
158
|
+
Define the structure once to avoid repeating keys.
|
|
131
159
|
|
|
132
|
-
```
|
|
133
|
-
|
|
160
|
+
```akd
|
|
161
|
+
/* Define a User type */
|
|
162
|
+
@User <
|
|
163
|
+
id: number,
|
|
164
|
+
name: string,
|
|
165
|
+
role: string
|
|
166
|
+
>
|
|
134
167
|
|
|
135
168
|
```
|
|
136
169
|
|
|
137
|
-
###
|
|
170
|
+
### 3. Data Structures
|
|
138
171
|
|
|
139
|
-
|
|
172
|
+
#### Positional Records (Tuples)
|
|
140
173
|
|
|
141
|
-
|
|
174
|
+
The most efficient way to represent objects. Values must match the schema order.
|
|
142
175
|
|
|
143
|
-
```
|
|
144
|
-
|
|
176
|
+
```akd
|
|
177
|
+
/* Schema: <x:number, y:number> */
|
|
178
|
+
(10, 20)
|
|
145
179
|
|
|
146
180
|
```
|
|
147
181
|
|
|
148
|
-
|
|
182
|
+
#### Named Records (Objects)
|
|
149
183
|
|
|
150
|
-
|
|
151
|
-
|
|
184
|
+
Flexible key-value pairs, similar to JSON, used when schema is loose or data is sparse.
|
|
185
|
+
|
|
186
|
+
```akd
|
|
187
|
+
{
|
|
188
|
+
id: 1,
|
|
189
|
+
name: "Admin"
|
|
190
|
+
}
|
|
152
191
|
|
|
153
192
|
```
|
|
154
193
|
|
|
155
|
-
|
|
194
|
+
#### Lists
|
|
156
195
|
|
|
157
|
-
|
|
196
|
+
Dense arrays. Can be homogenous (list of strings) or mixed.
|
|
158
197
|
|
|
159
|
-
|
|
198
|
+
```akd
|
|
199
|
+
[ "active", "pending", "closed" ]
|
|
200
|
+
|
|
201
|
+
```
|
|
160
202
|
|
|
161
|
-
|
|
162
|
-
* `options`:
|
|
163
|
-
* `compact`: (boolean) Remove whitespace. Default: `true`.
|
|
164
|
-
* `colorize`: (boolean) Add ANSI colors for terminal output. Default: `false`.
|
|
203
|
+
### 4. Metadata System
|
|
165
204
|
|
|
205
|
+
AKD allows you to inject metadata that is **visible to the LLM** but **ignored by the parser** when decoding back to your application.
|
|
166
206
|
|
|
207
|
+
#### Attributes (`$key=value`) & Tags (`#flag`)
|
|
167
208
|
|
|
168
|
-
|
|
209
|
+
```akd
|
|
210
|
+
@Product <
|
|
211
|
+
$version="2.0"
|
|
212
|
+
sku: string,
|
|
169
213
|
|
|
170
|
-
|
|
214
|
+
/* Tagging a field as deprecated */
|
|
215
|
+
#deprecated
|
|
216
|
+
legacy_id: int
|
|
217
|
+
>
|
|
171
218
|
|
|
172
|
-
|
|
173
|
-
* `options`:
|
|
174
|
-
* `debug`: (boolean) Enable detailed logging.
|
|
219
|
+
```
|
|
175
220
|
|
|
221
|
+
---
|
|
176
222
|
|
|
177
|
-
|
|
178
|
-
* `node`: The parsed AST node containing value and metadata.
|
|
179
|
-
* `errors`: Array of parsing errors, if any.
|
|
223
|
+
## 🔮 Roadmap
|
|
180
224
|
|
|
225
|
+
- **Binary Types:** Hex (`~[hex]1A...~`) and Base64 (`~[b64]...~`) support.
|
|
226
|
+
- **Pointers:** Reference existing objects by ID (`*User[1]`).
|
|
227
|
+
- **Ranges:** Numeric range validation in schema (`score: 0..100`).
|
|
181
228
|
|
|
229
|
+
---
|
|
182
230
|
|
|
183
231
|
## 📄 License
|
|
184
232
|
|
|
185
|
-
This project is licensed under the [MIT License].
|
|
186
|
-
|
|
187
|
-
---
|
|
233
|
+
This project is licensed under the [MIT License]().
|
|
188
234
|
|
|
189
235
|
<div align="center">
|
|
190
|
-
<sub>Built by <strong>Arkadia
|
|
236
|
+
<sub>Built by <strong>Arkadia Solutions</strong>. Engineering the kernel of distributed intelligence.</sub>
|
|
191
237
|
</div>
|
|
238
|
+
````
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;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;CACtB;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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAmGA,sCAEC;AAvBD;;GAEG;AACU,QAAA,cAAc,GAAkB;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAmGA,sCAEC;AAvBD;;GAEG;AACU,QAAA,cAAc,GAAkB;IAC3C,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;CACpB,CAAC;AAEF;;GAEG;AACH,SAAgB,aAAa,CAAC,MAA+B;IAC3D,OAAO,EAAE,GAAG,sBAAc,EAAE,GAAG,MAAM,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Decoder.d.ts","sourceRoot":"","sources":["../../src/core/Decoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Decoder.d.ts","sourceRoot":"","sources":["../../src/core/Decoder.ts"],"names":[],"mappings":"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"}
|