@arkadia/data 0.1.7 → 0.1.8
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 +166 -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,245 @@
|
|
|
1
|
+
Masz absolutną rację. Przepraszam za wprowadzenie w błąd – w obecnej strukturze paczka NPM `@arkadia/data` jest **czystą biblioteką** (library) do użycia w kodzie, a narzędzie CLI (`akd`) jest dostępne tylko w wersji Pythonowej.
|
|
2
|
+
|
|
3
|
+
Oto poprawiony `README.md` dla paczki TypeScript/NPM, usunięto z niego sekcje o CLI i `npx`.
|
|
4
|
+
|
|
5
|
+
````markdown
|
|
1
6
|
# @arkadia/data
|
|
2
7
|
|
|
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
|
|
8
|
+
```text
|
|
9
|
+
; i :J
|
|
10
|
+
U, .j..fraaM. nl
|
|
11
|
+
b h.obWMkkWWMMWMCdkvz,k
|
|
12
|
+
! .mQWM:o hiMoMW v.uaXMdohbi
|
|
13
|
+
hI,MMmaIao.Wo .IMkoh FCMwqoXa
|
|
14
|
+
,.c.aWdM. d,aToW . Mb!. MopfQ.L
|
|
15
|
+
jhj.xoM :k aCu F: w MpmqMvMMI,I
|
|
16
|
+
bzMhz:W .Mw . o lYh ai M iMa pM.j
|
|
17
|
+
hzqWWM; M;o.WMWWMkMX f.a aa bModpo.
|
|
18
|
+
;tMbbv xp oJMMWWWWMMMM iv dLMXakM:T
|
|
19
|
+
mdh MMWWWWWWWbQLCzurjktvMor
|
|
20
|
+
,QFw ;M,b .MWWWWWWWMWMWd xz M,kd X
|
|
21
|
+
qjMIo IMTW.WWWWWMWWWM.o.I rpULaMdi.
|
|
22
|
+
.mMM uoWWWMWWWWWWp qM,,M l M;mMbrI
|
|
23
|
+
f nm MMW MWWjMuMj I o LbMac
|
|
24
|
+
WWdMWWWW Mv a.b..aauMhMwQf
|
|
25
|
+
MoWWW,WWtjonJMWtoMdoaoMI
|
|
26
|
+
MMMM Mi xd:Mm tMwo Cr,
|
|
27
|
+
xMMc .otqokWMMMao:oio.
|
|
28
|
+
MW . C..MkTIo
|
|
29
|
+
WW
|
|
30
|
+
QWM
|
|
31
|
+
WW
|
|
32
|
+
uMW
|
|
33
|
+
WW
|
|
29
34
|
MW
|
|
30
35
|
```
|
|
36
|
+
````
|
|
31
37
|
|
|
38
|
+
> **The High-Density, Token-Efficient Data Protocol for Large Language Models.**
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
[](https://opensource.org/licenses/MIT)
|
|
40
|
+
**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.
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
---
|
|
37
43
|
|
|
38
|
-
|
|
44
|
+
## ✨ Key Features
|
|
39
45
|
|
|
40
|
-
|
|
46
|
+
- **📉 Token Efficiency:** Reduces context window usage by replacing verbose JSON objects with dense Positional Records (Tuples).
|
|
47
|
+
- **🛡️ Type Safety:** Enforces types (`int`, `float`, `bool`, `string`) explicitly in the schema before data reaches the LLM.
|
|
48
|
+
- **🧠 Metadata Injection:** Use `#tags` and `$attributes` to pass context (e.g., source confidence, deprecation warnings) to the LLM without polluting your data structure.
|
|
49
|
+
- **⚡ High Performance:** Zero-dependency, lightweight parser built for high-throughput Node.js/Edge environments.
|
|
41
50
|
|
|
42
|
-
|
|
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.
|
|
51
|
+
---
|
|
46
52
|
|
|
47
53
|
## 📦 Installation
|
|
48
54
|
|
|
49
55
|
```bash
|
|
50
56
|
npm install @arkadia/data
|
|
57
|
+
# or
|
|
58
|
+
yarn add @arkadia/data
|
|
59
|
+
# or
|
|
60
|
+
pnpm add @arkadia/data
|
|
51
61
|
|
|
52
62
|
```
|
|
53
63
|
|
|
54
|
-
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 🚀 Quick Start
|
|
55
67
|
|
|
56
|
-
###
|
|
68
|
+
### Basic Usage
|
|
57
69
|
|
|
58
70
|
```typescript
|
|
59
71
|
import { encode, decode } from '@arkadia/data';
|
|
60
72
|
|
|
73
|
+
// 1. Encode: JavaScript Object -> AKD String
|
|
74
|
+
const data = { id: 1, name: 'Alice', active: true };
|
|
75
|
+
|
|
76
|
+
// Default encoding (compact)
|
|
77
|
+
const encoded = encode(data);
|
|
78
|
+
console.log(encoded);
|
|
79
|
+
// Output: <id:number,name:string,active:bool>(1,"Alice",true)
|
|
80
|
+
|
|
81
|
+
// 2. Decode: AKD String -> JavaScript Object
|
|
82
|
+
const input = '<score:number>(98.5)';
|
|
83
|
+
const result = decode(input);
|
|
84
|
+
|
|
85
|
+
if (result.errors.length === 0) {
|
|
86
|
+
console.log(result.node.value); // 98.5
|
|
87
|
+
} else {
|
|
88
|
+
console.error('Parse errors:', result.errors);
|
|
89
|
+
}
|
|
61
90
|
```
|
|
62
91
|
|
|
63
|
-
|
|
92
|
+
---
|
|
64
93
|
|
|
65
|
-
|
|
94
|
+
## 🛠 API Reference
|
|
66
95
|
|
|
67
|
-
|
|
68
|
-
const data = {
|
|
69
|
-
id: 1,
|
|
70
|
-
name: "Alice",
|
|
71
|
-
active: true
|
|
72
|
-
};
|
|
96
|
+
### `encode(data: unknown, config?: EncodeConfig): string`
|
|
73
97
|
|
|
74
|
-
|
|
75
|
-
const akdString = encode(data);
|
|
98
|
+
Serializes a JavaScript value into an AKD string.
|
|
76
99
|
|
|
77
|
-
|
|
78
|
-
|
|
100
|
+
- `data`: The input string, number, boolean, array, or object.
|
|
101
|
+
- `config`:
|
|
102
|
+
- `compact` (boolean): Removes whitespace. Default: `true`.
|
|
103
|
+
- `colorize` (boolean): Adds ANSI colors for terminal output. Default: `false`.
|
|
104
|
+
- `escapeNewLines` (boolean): Escapes `\n` in strings. Default: `false`.
|
|
79
105
|
|
|
80
|
-
|
|
106
|
+
### `decode(text: string, config?: DecodeConfig): DecodeResult`
|
|
81
107
|
|
|
82
|
-
|
|
108
|
+
Parses an AKD string into a structured node tree.
|
|
83
109
|
|
|
84
|
-
|
|
110
|
+
- `text`: The raw AKD string.
|
|
111
|
+
- `config`:
|
|
112
|
+
- `debug` (boolean): Enables internal logging.
|
|
85
113
|
|
|
86
|
-
|
|
87
|
-
|
|
114
|
+
- **Returns** `DecodeResult`:
|
|
115
|
+
- `node`: The Root Node (contains `.value`, `.dict()`, `.json()`).
|
|
116
|
+
- `errors`: Array of parsing errors.
|
|
88
117
|
|
|
89
|
-
|
|
118
|
+
---
|
|
90
119
|
|
|
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
|
-
}
|
|
120
|
+
## ⚡ Benchmarks
|
|
100
121
|
|
|
101
|
-
|
|
122
|
+
Why switch? Because every token counts. **AKCD** (Arkadia Compressed Data) consistently outperforms standard formats.
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
BENCHMARK SUMMARY:
|
|
126
|
+
|
|
127
|
+
JSON █████████████████████░░░░ 6921 tok 0.15 ms
|
|
128
|
+
AKCD ████████████████░░░░░░░░░ 5416 tok 4.40 ms
|
|
129
|
+
AKD ███████████████████░░░░░░ 6488 tok 4.29 ms
|
|
130
|
+
TOON █████████████████████████ 8198 tok 2.36 ms
|
|
102
131
|
|
|
103
|
-
|
|
132
|
+
FORMAT TOKENS VS JSON
|
|
133
|
+
---------------------------------
|
|
134
|
+
AKCD 5416 -21.7%
|
|
135
|
+
AKD 6488 -6.3%
|
|
136
|
+
JSON 6921 +0.0%
|
|
137
|
+
TOON 8198 +18.5%
|
|
104
138
|
|
|
105
|
-
|
|
139
|
+
CONCLUSION: Switching to AKCD saves 1505 tokens (21.7%) compared to JSON.
|
|
106
140
|
|
|
107
|
-
|
|
141
|
+
```
|
|
108
142
|
|
|
109
|
-
|
|
143
|
+
---
|
|
110
144
|
|
|
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` |
|
|
145
|
+
## 📖 Syntax Specification
|
|
118
146
|
|
|
119
|
-
|
|
147
|
+
AKD separates structure (Schema) from content (Data).
|
|
120
148
|
|
|
121
|
-
|
|
149
|
+
### 1. Primitives
|
|
122
150
|
|
|
123
|
-
|
|
151
|
+
Primitive values are automatically typed. Strings are quoted, numbers and booleans are bare.
|
|
124
152
|
|
|
125
|
-
|
|
126
|
-
|
|
153
|
+
| Type | Input | Encoded Output |
|
|
154
|
+
| ----------- | --------- | ----------------- |
|
|
155
|
+
| **Integer** | `123` | `<number>123` |
|
|
156
|
+
| **String** | `"hello"` | `<string>"hello"` |
|
|
157
|
+
| **Boolean** | `true` | `<bool>true` |
|
|
158
|
+
| **Null** | `null` | `<null>null` |
|
|
127
159
|
|
|
128
|
-
|
|
160
|
+
### 2. Schema Definition (`@Type`)
|
|
129
161
|
|
|
130
|
-
|
|
162
|
+
Define the structure once to avoid repeating keys.
|
|
131
163
|
|
|
132
|
-
```
|
|
133
|
-
|
|
164
|
+
```akd
|
|
165
|
+
/* Define a User type */
|
|
166
|
+
@User <
|
|
167
|
+
id: number,
|
|
168
|
+
name: string,
|
|
169
|
+
role: string
|
|
170
|
+
>
|
|
134
171
|
|
|
135
172
|
```
|
|
136
173
|
|
|
137
|
-
###
|
|
174
|
+
### 3. Data Structures
|
|
138
175
|
|
|
139
|
-
|
|
176
|
+
#### Positional Records (Tuples)
|
|
140
177
|
|
|
141
|
-
|
|
178
|
+
The most efficient way to represent objects. Values must match the schema order.
|
|
142
179
|
|
|
143
|
-
```
|
|
144
|
-
|
|
180
|
+
```akd
|
|
181
|
+
/* Schema: <x:number, y:number> */
|
|
182
|
+
(10, 20)
|
|
145
183
|
|
|
146
184
|
```
|
|
147
185
|
|
|
148
|
-
|
|
186
|
+
#### Named Records (Objects)
|
|
149
187
|
|
|
150
|
-
|
|
151
|
-
|
|
188
|
+
Flexible key-value pairs, similar to JSON, used when schema is loose or data is sparse.
|
|
189
|
+
|
|
190
|
+
```akd
|
|
191
|
+
{
|
|
192
|
+
id: 1,
|
|
193
|
+
name: "Admin"
|
|
194
|
+
}
|
|
152
195
|
|
|
153
196
|
```
|
|
154
197
|
|
|
155
|
-
|
|
198
|
+
#### Lists
|
|
156
199
|
|
|
157
|
-
|
|
200
|
+
Dense arrays. Can be homogenous (list of strings) or mixed.
|
|
158
201
|
|
|
159
|
-
|
|
202
|
+
```akd
|
|
203
|
+
[ "active", "pending", "closed" ]
|
|
160
204
|
|
|
161
|
-
|
|
162
|
-
* `options`:
|
|
163
|
-
* `compact`: (boolean) Remove whitespace. Default: `true`.
|
|
164
|
-
* `colorize`: (boolean) Add ANSI colors for terminal output. Default: `false`.
|
|
205
|
+
```
|
|
165
206
|
|
|
207
|
+
### 4. Metadata System
|
|
166
208
|
|
|
209
|
+
AKD allows you to inject metadata that is **visible to the LLM** but **ignored by the parser** when decoding back to your application.
|
|
167
210
|
|
|
168
|
-
|
|
211
|
+
#### Attributes (`$key=value`) & Tags (`#flag`)
|
|
169
212
|
|
|
170
|
-
|
|
213
|
+
```akd
|
|
214
|
+
@Product <
|
|
215
|
+
$version="2.0"
|
|
216
|
+
sku: string,
|
|
171
217
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
218
|
+
/* Tagging a field as deprecated */
|
|
219
|
+
#deprecated
|
|
220
|
+
legacy_id: int
|
|
221
|
+
>
|
|
175
222
|
|
|
223
|
+
```
|
|
176
224
|
|
|
177
|
-
|
|
178
|
-
* `node`: The parsed AST node containing value and metadata.
|
|
179
|
-
* `errors`: Array of parsing errors, if any.
|
|
225
|
+
---
|
|
180
226
|
|
|
227
|
+
## 🔮 Roadmap
|
|
181
228
|
|
|
229
|
+
- **Binary Types:** Hex (`~[hex]1A...~`) and Base64 (`~[b64]...~`) support.
|
|
230
|
+
- **Pointers:** Reference existing objects by ID (`*User[1]`).
|
|
231
|
+
- **Ranges:** Numeric range validation in schema (`score: 0..100`).
|
|
182
232
|
|
|
183
|
-
|
|
233
|
+
---
|
|
184
234
|
|
|
185
|
-
|
|
235
|
+
## 📄 License
|
|
186
236
|
|
|
187
|
-
|
|
237
|
+
This project is licensed under the [MIT License]().
|
|
188
238
|
|
|
189
239
|
<div align="center">
|
|
190
|
-
<sub>Built by <strong>Arkadia
|
|
240
|
+
<sub>Built by <strong>Arkadia Solutions</strong>. Engineering the kernel of distributed intelligence.</sub>
|
|
191
241
|
</div>
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
```
|
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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"}
|