@geoprotocol/grc-20 0.1.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.
Files changed (82) hide show
  1. package/dist/builder/edit.d.ts +107 -0
  2. package/dist/builder/edit.d.ts.map +1 -0
  3. package/dist/builder/edit.js +221 -0
  4. package/dist/builder/edit.js.map +1 -0
  5. package/dist/builder/entity.d.ts +62 -0
  6. package/dist/builder/entity.d.ts.map +1 -0
  7. package/dist/builder/entity.js +126 -0
  8. package/dist/builder/entity.js.map +1 -0
  9. package/dist/builder/index.d.ts +5 -0
  10. package/dist/builder/index.d.ts.map +1 -0
  11. package/dist/builder/index.js +5 -0
  12. package/dist/builder/index.js.map +1 -0
  13. package/dist/builder/relation.d.ts +66 -0
  14. package/dist/builder/relation.d.ts.map +1 -0
  15. package/dist/builder/relation.js +114 -0
  16. package/dist/builder/relation.js.map +1 -0
  17. package/dist/builder/update.d.ts +90 -0
  18. package/dist/builder/update.d.ts.map +1 -0
  19. package/dist/builder/update.js +174 -0
  20. package/dist/builder/update.js.map +1 -0
  21. package/dist/codec/edit.d.ts +17 -0
  22. package/dist/codec/edit.d.ts.map +1 -0
  23. package/dist/codec/edit.js +393 -0
  24. package/dist/codec/edit.js.map +1 -0
  25. package/dist/codec/index.d.ts +3 -0
  26. package/dist/codec/index.d.ts.map +1 -0
  27. package/dist/codec/index.js +3 -0
  28. package/dist/codec/index.js.map +1 -0
  29. package/dist/codec/op.d.ts +27 -0
  30. package/dist/codec/op.d.ts.map +1 -0
  31. package/dist/codec/op.js +333 -0
  32. package/dist/codec/op.js.map +1 -0
  33. package/dist/codec/primitives.d.ts +138 -0
  34. package/dist/codec/primitives.d.ts.map +1 -0
  35. package/dist/codec/primitives.js +285 -0
  36. package/dist/codec/primitives.js.map +1 -0
  37. package/dist/codec/value.d.ts +41 -0
  38. package/dist/codec/value.d.ts.map +1 -0
  39. package/dist/codec/value.js +202 -0
  40. package/dist/codec/value.js.map +1 -0
  41. package/dist/genesis/index.d.ts +109 -0
  42. package/dist/genesis/index.d.ts.map +1 -0
  43. package/dist/genesis/index.js +183 -0
  44. package/dist/genesis/index.js.map +1 -0
  45. package/dist/index.d.ts +13 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +18 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/test/basic.test.d.ts +2 -0
  50. package/dist/test/basic.test.d.ts.map +1 -0
  51. package/dist/test/basic.test.js +270 -0
  52. package/dist/test/basic.test.js.map +1 -0
  53. package/dist/types/edit.d.ts +46 -0
  54. package/dist/types/edit.d.ts.map +1 -0
  55. package/dist/types/edit.js +13 -0
  56. package/dist/types/edit.js.map +1 -0
  57. package/dist/types/id.d.ts +32 -0
  58. package/dist/types/id.d.ts.map +1 -0
  59. package/dist/types/id.js +45 -0
  60. package/dist/types/id.js.map +1 -0
  61. package/dist/types/index.d.ts +9 -0
  62. package/dist/types/index.d.ts.map +1 -0
  63. package/dist/types/index.js +5 -0
  64. package/dist/types/index.js.map +1 -0
  65. package/dist/types/op.d.ts +147 -0
  66. package/dist/types/op.d.ts.map +1 -0
  67. package/dist/types/op.js +60 -0
  68. package/dist/types/op.js.map +1 -0
  69. package/dist/types/value.d.ts +107 -0
  70. package/dist/types/value.d.ts.map +1 -0
  71. package/dist/types/value.js +126 -0
  72. package/dist/types/value.js.map +1 -0
  73. package/dist/util/id.d.ts +51 -0
  74. package/dist/util/id.d.ts.map +1 -0
  75. package/dist/util/id.js +215 -0
  76. package/dist/util/id.js.map +1 -0
  77. package/dist/util/index.d.ts +2 -0
  78. package/dist/util/index.d.ts.map +1 -0
  79. package/dist/util/index.js +2 -0
  80. package/dist/util/index.js.map +1 -0
  81. package/package.json +68 -0
  82. package/readme.md +232 -0
@@ -0,0 +1,285 @@
1
+ import { createId } from "../types/id.js";
2
+ /**
3
+ * ZigZag encodes a signed integer to an unsigned integer.
4
+ */
5
+ export function zigzagEncode(n) {
6
+ return (n << 1n) ^ (n >> 63n);
7
+ }
8
+ /**
9
+ * ZigZag decodes an unsigned integer to a signed integer.
10
+ */
11
+ export function zigzagDecode(n) {
12
+ return (n >> 1n) ^ -(n & 1n);
13
+ }
14
+ /**
15
+ * Binary writer for encoding GRC-20 data.
16
+ */
17
+ export class Writer {
18
+ buffer;
19
+ pos = 0;
20
+ constructor(initialCapacity = 1024) {
21
+ this.buffer = new Uint8Array(initialCapacity);
22
+ }
23
+ ensureCapacity(needed) {
24
+ const required = this.pos + needed;
25
+ if (required > this.buffer.length) {
26
+ let newCapacity = this.buffer.length * 2;
27
+ while (newCapacity < required) {
28
+ newCapacity *= 2;
29
+ }
30
+ const newBuffer = new Uint8Array(newCapacity);
31
+ newBuffer.set(this.buffer);
32
+ this.buffer = newBuffer;
33
+ }
34
+ }
35
+ /**
36
+ * Returns the written bytes.
37
+ */
38
+ finish() {
39
+ return this.buffer.subarray(0, this.pos);
40
+ }
41
+ /**
42
+ * Returns the current position (bytes written).
43
+ */
44
+ position() {
45
+ return this.pos;
46
+ }
47
+ /**
48
+ * Writes a single byte.
49
+ */
50
+ writeByte(value) {
51
+ this.ensureCapacity(1);
52
+ this.buffer[this.pos++] = value;
53
+ }
54
+ /**
55
+ * Writes raw bytes.
56
+ */
57
+ writeBytes(bytes) {
58
+ this.ensureCapacity(bytes.length);
59
+ this.buffer.set(bytes, this.pos);
60
+ this.pos += bytes.length;
61
+ }
62
+ /**
63
+ * Writes a 16-byte UUID (raw, no length prefix).
64
+ */
65
+ writeId(id) {
66
+ this.writeBytes(id);
67
+ }
68
+ /**
69
+ * Writes an unsigned varint (LEB128).
70
+ */
71
+ writeVarint(value) {
72
+ if (value < 0n) {
73
+ throw new Error("writeVarint requires non-negative value");
74
+ }
75
+ this.ensureCapacity(10);
76
+ let v = value;
77
+ do {
78
+ let byte = Number(v & 0x7fn);
79
+ v >>= 7n;
80
+ if (v !== 0n) {
81
+ byte |= 0x80;
82
+ }
83
+ this.buffer[this.pos++] = byte;
84
+ } while (v !== 0n);
85
+ }
86
+ /**
87
+ * Writes an unsigned varint from a number.
88
+ */
89
+ writeVarintNumber(value) {
90
+ this.writeVarint(BigInt(value));
91
+ }
92
+ /**
93
+ * Writes a signed varint (ZigZag encoded).
94
+ */
95
+ writeSignedVarint(value) {
96
+ this.writeVarint(zigzagEncode(value));
97
+ }
98
+ /**
99
+ * Writes a length-prefixed string (UTF-8).
100
+ */
101
+ writeString(s) {
102
+ const bytes = new TextEncoder().encode(s);
103
+ this.writeVarintNumber(bytes.length);
104
+ this.writeBytes(bytes);
105
+ }
106
+ /**
107
+ * Writes a length-prefixed byte array.
108
+ */
109
+ writeLengthPrefixedBytes(bytes) {
110
+ this.writeVarintNumber(bytes.length);
111
+ this.writeBytes(bytes);
112
+ }
113
+ /**
114
+ * Writes a 64-bit float (IEEE 754, little-endian).
115
+ */
116
+ writeFloat64(value) {
117
+ this.ensureCapacity(8);
118
+ const view = new DataView(this.buffer.buffer, this.buffer.byteOffset + this.pos, 8);
119
+ view.setFloat64(0, value, true);
120
+ this.pos += 8;
121
+ }
122
+ /**
123
+ * Writes a vector of IDs with length prefix.
124
+ */
125
+ writeIdVec(ids) {
126
+ this.writeVarintNumber(ids.length);
127
+ for (const id of ids) {
128
+ this.writeId(id);
129
+ }
130
+ }
131
+ }
132
+ /**
133
+ * Decode error with context.
134
+ */
135
+ export class DecodeError extends Error {
136
+ code;
137
+ constructor(code, message) {
138
+ super(`[${code}] ${message}`);
139
+ this.code = code;
140
+ this.name = "DecodeError";
141
+ }
142
+ }
143
+ /**
144
+ * Binary reader for decoding GRC-20 data.
145
+ */
146
+ export class Reader {
147
+ buffer;
148
+ pos = 0;
149
+ constructor(buffer) {
150
+ this.buffer = buffer;
151
+ }
152
+ /**
153
+ * Returns true if there are more bytes to read.
154
+ */
155
+ hasMore() {
156
+ return this.pos < this.buffer.length;
157
+ }
158
+ /**
159
+ * Returns the current position.
160
+ */
161
+ position() {
162
+ return this.pos;
163
+ }
164
+ /**
165
+ * Returns remaining bytes.
166
+ */
167
+ remaining() {
168
+ return this.buffer.length - this.pos;
169
+ }
170
+ /**
171
+ * Reads a single byte.
172
+ */
173
+ readByte() {
174
+ if (this.pos >= this.buffer.length) {
175
+ throw new DecodeError("E005", "unexpected end of input");
176
+ }
177
+ return this.buffer[this.pos++];
178
+ }
179
+ /**
180
+ * Peeks at the next byte without consuming it.
181
+ */
182
+ peekByte() {
183
+ if (this.pos >= this.buffer.length) {
184
+ throw new DecodeError("E005", "unexpected end of input");
185
+ }
186
+ return this.buffer[this.pos];
187
+ }
188
+ /**
189
+ * Reads raw bytes.
190
+ */
191
+ readBytes(n) {
192
+ if (this.pos + n > this.buffer.length) {
193
+ throw new DecodeError("E005", `unexpected end of input: need ${n} bytes, have ${this.buffer.length - this.pos}`);
194
+ }
195
+ const result = this.buffer.subarray(this.pos, this.pos + n);
196
+ this.pos += n;
197
+ return result;
198
+ }
199
+ /**
200
+ * Reads a 16-byte UUID.
201
+ */
202
+ readId() {
203
+ return createId(new Uint8Array(this.readBytes(16)));
204
+ }
205
+ /**
206
+ * Reads an unsigned varint (LEB128).
207
+ */
208
+ readVarint() {
209
+ let result = 0n;
210
+ let shift = 0n;
211
+ let byteCount = 0;
212
+ while (true) {
213
+ if (this.pos >= this.buffer.length) {
214
+ throw new DecodeError("E005", "unexpected end of input while reading varint");
215
+ }
216
+ const byte = this.buffer[this.pos++];
217
+ byteCount++;
218
+ if (byteCount > 10) {
219
+ throw new DecodeError("E005", "varint exceeds maximum length (10 bytes)");
220
+ }
221
+ result |= BigInt(byte & 0x7f) << shift;
222
+ shift += 7n;
223
+ if ((byte & 0x80) === 0) {
224
+ break;
225
+ }
226
+ }
227
+ return result;
228
+ }
229
+ /**
230
+ * Reads an unsigned varint as a number (throws if > MAX_SAFE_INTEGER).
231
+ */
232
+ readVarintNumber() {
233
+ const value = this.readVarint();
234
+ if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
235
+ throw new DecodeError("E005", "varint value exceeds safe integer range");
236
+ }
237
+ return Number(value);
238
+ }
239
+ /**
240
+ * Reads a signed varint (ZigZag encoded).
241
+ */
242
+ readSignedVarint() {
243
+ return zigzagDecode(this.readVarint());
244
+ }
245
+ /**
246
+ * Reads a length-prefixed string (UTF-8).
247
+ */
248
+ readString() {
249
+ const len = this.readVarintNumber();
250
+ const bytes = this.readBytes(len);
251
+ try {
252
+ return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
253
+ }
254
+ catch {
255
+ throw new DecodeError("E004", "invalid UTF-8 in string");
256
+ }
257
+ }
258
+ /**
259
+ * Reads a length-prefixed byte array.
260
+ */
261
+ readLengthPrefixedBytes() {
262
+ const len = this.readVarintNumber();
263
+ return new Uint8Array(this.readBytes(len));
264
+ }
265
+ /**
266
+ * Reads a 64-bit float (IEEE 754, little-endian).
267
+ */
268
+ readFloat64() {
269
+ const bytes = this.readBytes(8);
270
+ const view = new DataView(bytes.buffer, bytes.byteOffset, 8);
271
+ return view.getFloat64(0, true);
272
+ }
273
+ /**
274
+ * Reads a vector of IDs with length prefix.
275
+ */
276
+ readIdVec() {
277
+ const count = this.readVarintNumber();
278
+ const ids = [];
279
+ for (let i = 0; i < count; i++) {
280
+ ids.push(this.readId());
281
+ }
282
+ return ids;
283
+ }
284
+ }
285
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/codec/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAW,MAAM,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,MAAM;IACT,MAAM,CAAa;IACnB,GAAG,GAAW,CAAC,CAAC;IAExB,YAAY,kBAA0B,IAAI;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAEO,cAAc,CAAC,MAAc;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;QACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACzC,OAAO,WAAW,GAAG,QAAQ,EAAE,CAAC;gBAC9B,WAAW,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;YAC9C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,KAAiB;QAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,EAAM;QACZ,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAa;QACvB,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,GAAG,CAAC;YACF,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAC7B,CAAC,KAAK,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACb,IAAI,IAAI,IAAI,CAAC;YACf,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;QACjC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE;IACrB,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAa;QAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAa;QAC7B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,CAAS;QACnB,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,KAAiB;QACxC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,GAAS;QAClB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAE3B;IADT,YACS,IAAY,EACnB,OAAe;QAEf,KAAK,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAHvB,SAAI,GAAJ,IAAI,CAAQ;QAInB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,MAAM;IACT,MAAM,CAAa;IACnB,GAAG,GAAW,CAAC,CAAC;IAExB,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,CAAS;QACjB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,iCAAiC,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,SAAS,EAAE,CAAC;YAEZ,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC;YACvC,KAAK,IAAI,EAAE,CAAC;YAEZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,yCAAyC,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAS,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,41 @@
1
+ import type { Id } from "../types/id.js";
2
+ import type { PropertyValue, Value } from "../types/value.js";
3
+ import { DataType } from "../types/value.js";
4
+ import { Reader, Writer } from "./primitives.js";
5
+ /**
6
+ * Dictionary builder for tracking property/language/unit indices.
7
+ */
8
+ export interface DictionaryIndices {
9
+ getPropertyIndex(id: Id): number;
10
+ getLanguageIndex(id: Id | undefined): number;
11
+ getUnitIndex(id: Id | undefined): number;
12
+ getDataType(propertyId: Id): DataType;
13
+ }
14
+ /**
15
+ * Dictionary lookups for decoding.
16
+ */
17
+ export interface DictionaryLookups {
18
+ getProperty(index: number): {
19
+ id: Id;
20
+ dataType: DataType;
21
+ };
22
+ getLanguage(index: number): Id | undefined;
23
+ getUnit(index: number): Id | undefined;
24
+ }
25
+ /**
26
+ * Encodes a value payload (without property index).
27
+ */
28
+ export declare function encodeValuePayload(writer: Writer, value: Value): void;
29
+ /**
30
+ * Encodes a property value (with property index, language, unit).
31
+ */
32
+ export declare function encodePropertyValue(writer: Writer, pv: PropertyValue, dicts: DictionaryIndices): void;
33
+ /**
34
+ * Decodes a value payload based on data type.
35
+ */
36
+ export declare function decodeValuePayload(reader: Reader, dataType: DataType): Value;
37
+ /**
38
+ * Decodes a property value (with property index, language, unit).
39
+ */
40
+ export declare function decodePropertyValue(reader: Reader, dicts: DictionaryLookups): PropertyValue;
41
+ //# sourceMappingURL=value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../src/codec/value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAmB,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAA2C,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAe,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC;IACzC,WAAW,CAAC,UAAU,EAAE,EAAE,GAAG,QAAQ,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC3D,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA8DrE;AAiBD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,iBAAiB,GACvB,IAAI,CAmBN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAuF5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,iBAAiB,GACvB,aAAa,CA2Bf"}
@@ -0,0 +1,202 @@
1
+ import { DataType, embeddingBytesForDims } from "../types/value.js";
2
+ import { DecodeError } from "./primitives.js";
3
+ /**
4
+ * Encodes a value payload (without property index).
5
+ */
6
+ export function encodeValuePayload(writer, value) {
7
+ switch (value.type) {
8
+ case "bool":
9
+ writer.writeByte(value.value ? 0x01 : 0x00);
10
+ break;
11
+ case "int64":
12
+ writer.writeSignedVarint(value.value);
13
+ break;
14
+ case "float64":
15
+ if (Number.isNaN(value.value)) {
16
+ throw new Error("NaN is not allowed in Float64");
17
+ }
18
+ writer.writeFloat64(value.value);
19
+ break;
20
+ case "decimal":
21
+ encodeDecimal(writer, value.exponent, value.mantissa);
22
+ break;
23
+ case "text":
24
+ writer.writeString(value.value);
25
+ break;
26
+ case "bytes":
27
+ writer.writeLengthPrefixedBytes(value.value);
28
+ break;
29
+ case "timestamp":
30
+ writer.writeSignedVarint(value.value);
31
+ break;
32
+ case "date":
33
+ writer.writeString(value.value);
34
+ break;
35
+ case "point":
36
+ if (Number.isNaN(value.lat) || Number.isNaN(value.lon)) {
37
+ throw new Error("NaN is not allowed in Point coordinates");
38
+ }
39
+ if (value.lat < -90 || value.lat > 90) {
40
+ throw new Error("latitude out of range [-90, +90]");
41
+ }
42
+ if (value.lon < -180 || value.lon > 180) {
43
+ throw new Error("longitude out of range [-180, +180]");
44
+ }
45
+ writer.writeFloat64(value.lat);
46
+ writer.writeFloat64(value.lon);
47
+ break;
48
+ case "embedding": {
49
+ const expected = embeddingBytesForDims(value.subType, value.dims);
50
+ if (value.data.length !== expected) {
51
+ throw new Error(`embedding data length ${value.data.length} doesn't match expected ${expected}`);
52
+ }
53
+ writer.writeByte(value.subType);
54
+ writer.writeVarintNumber(value.dims);
55
+ writer.writeBytes(value.data);
56
+ break;
57
+ }
58
+ }
59
+ }
60
+ /**
61
+ * Encodes a decimal value.
62
+ */
63
+ function encodeDecimal(writer, exponent, mantissa) {
64
+ writer.writeSignedVarint(BigInt(exponent));
65
+ if (mantissa.type === "i64") {
66
+ writer.writeByte(0x00); // mantissa_type = varint
67
+ writer.writeSignedVarint(mantissa.value);
68
+ }
69
+ else {
70
+ writer.writeByte(0x01); // mantissa_type = bytes
71
+ writer.writeLengthPrefixedBytes(mantissa.bytes);
72
+ }
73
+ }
74
+ /**
75
+ * Encodes a property value (with property index, language, unit).
76
+ */
77
+ export function encodePropertyValue(writer, pv, dicts) {
78
+ // Write property index
79
+ const propIndex = dicts.getPropertyIndex(pv.property);
80
+ writer.writeVarintNumber(propIndex);
81
+ // Write payload
82
+ encodeValuePayload(writer, pv.value);
83
+ // Write language index for TEXT
84
+ if (pv.value.type === "text") {
85
+ const langIndex = dicts.getLanguageIndex(pv.value.language);
86
+ writer.writeVarintNumber(langIndex);
87
+ }
88
+ // Write unit index for numerical types
89
+ if (pv.value.type === "int64" || pv.value.type === "float64" || pv.value.type === "decimal") {
90
+ const unitIndex = dicts.getUnitIndex(pv.value.unit);
91
+ writer.writeVarintNumber(unitIndex);
92
+ }
93
+ }
94
+ /**
95
+ * Decodes a value payload based on data type.
96
+ */
97
+ export function decodeValuePayload(reader, dataType) {
98
+ switch (dataType) {
99
+ case DataType.Bool: {
100
+ const byte = reader.readByte();
101
+ if (byte !== 0x00 && byte !== 0x01) {
102
+ throw new DecodeError("E005", `invalid bool value: ${byte}`);
103
+ }
104
+ return { type: "bool", value: byte === 0x01 };
105
+ }
106
+ case DataType.Int64: {
107
+ const value = reader.readSignedVarint();
108
+ return { type: "int64", value };
109
+ }
110
+ case DataType.Float64: {
111
+ const value = reader.readFloat64();
112
+ if (Number.isNaN(value)) {
113
+ throw new DecodeError("E005", "float value is NaN");
114
+ }
115
+ return { type: "float64", value };
116
+ }
117
+ case DataType.Decimal: {
118
+ const exponent = Number(reader.readSignedVarint());
119
+ const mantissaType = reader.readByte();
120
+ let mantissa;
121
+ if (mantissaType === 0x00) {
122
+ mantissa = { type: "i64", value: reader.readSignedVarint() };
123
+ }
124
+ else if (mantissaType === 0x01) {
125
+ mantissa = { type: "big", bytes: reader.readLengthPrefixedBytes() };
126
+ }
127
+ else {
128
+ throw new DecodeError("E005", `invalid decimal mantissa type: ${mantissaType}`);
129
+ }
130
+ return { type: "decimal", exponent, mantissa };
131
+ }
132
+ case DataType.Text: {
133
+ const value = reader.readString();
134
+ return { type: "text", value };
135
+ }
136
+ case DataType.Bytes: {
137
+ const value = reader.readLengthPrefixedBytes();
138
+ return { type: "bytes", value };
139
+ }
140
+ case DataType.Timestamp: {
141
+ const value = reader.readSignedVarint();
142
+ return { type: "timestamp", value };
143
+ }
144
+ case DataType.Date: {
145
+ const value = reader.readString();
146
+ return { type: "date", value };
147
+ }
148
+ case DataType.Point: {
149
+ const lat = reader.readFloat64();
150
+ const lon = reader.readFloat64();
151
+ if (Number.isNaN(lat) || Number.isNaN(lon)) {
152
+ throw new DecodeError("E005", "NaN is not allowed in Point coordinates");
153
+ }
154
+ if (lat < -90 || lat > 90) {
155
+ throw new DecodeError("E005", `POINT latitude ${lat} out of range [-90, +90]`);
156
+ }
157
+ if (lon < -180 || lon > 180) {
158
+ throw new DecodeError("E005", `POINT longitude ${lon} out of range [-180, +180]`);
159
+ }
160
+ return { type: "point", lat, lon };
161
+ }
162
+ case DataType.Embedding: {
163
+ const subTypeByte = reader.readByte();
164
+ if (subTypeByte > 2) {
165
+ throw new DecodeError("E005", `invalid embedding sub-type: ${subTypeByte}`);
166
+ }
167
+ const subType = subTypeByte;
168
+ const dims = reader.readVarintNumber();
169
+ const expectedBytes = embeddingBytesForDims(subType, dims);
170
+ const data = new Uint8Array(reader.readBytes(expectedBytes));
171
+ return { type: "embedding", subType, dims, data };
172
+ }
173
+ default:
174
+ throw new DecodeError("E005", `invalid data type: ${dataType}`);
175
+ }
176
+ }
177
+ /**
178
+ * Decodes a property value (with property index, language, unit).
179
+ */
180
+ export function decodePropertyValue(reader, dicts) {
181
+ // Read property index
182
+ const propIndex = reader.readVarintNumber();
183
+ const prop = dicts.getProperty(propIndex);
184
+ // Read payload
185
+ let value = decodeValuePayload(reader, prop.dataType);
186
+ // Read language index for TEXT
187
+ if (prop.dataType === DataType.Text) {
188
+ const langIndex = reader.readVarintNumber();
189
+ const language = dicts.getLanguage(langIndex);
190
+ value = { ...value, language };
191
+ }
192
+ // Read unit index for numerical types
193
+ if (prop.dataType === DataType.Int64 ||
194
+ prop.dataType === DataType.Float64 ||
195
+ prop.dataType === DataType.Decimal) {
196
+ const unitIndex = reader.readVarintNumber();
197
+ const unit = dicts.getUnit(unitIndex);
198
+ value = { ...value, unit };
199
+ }
200
+ return { property: prop.id, value };
201
+ }
202
+ //# sourceMappingURL=value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/codec/value.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { type Id } from "../util/id.js";
2
+ /**
3
+ * Derives a genesis ID from a name.
4
+ *
5
+ * ```
6
+ * id = derived_uuid("grc20:genesis:" + name)
7
+ * ```
8
+ */
9
+ export declare function genesisId(name: string): Id;
10
+ /**
11
+ * Derives a language ID from a BCP 47 language code.
12
+ *
13
+ * ```
14
+ * id = derived_uuid("grc20:genesis:language:" + code)
15
+ * ```
16
+ */
17
+ export declare function languageId(code: string): Id;
18
+ /**
19
+ * Well-known property IDs from the Genesis Space.
20
+ */
21
+ export declare const properties: {
22
+ /** Name property - primary label (TEXT) */
23
+ readonly NAME: Id;
24
+ /** Description property - summary text (TEXT) */
25
+ readonly DESCRIPTION: Id;
26
+ /** Avatar property - image URL (TEXT) */
27
+ readonly AVATAR: Id;
28
+ /** URL property - external link (TEXT) */
29
+ readonly URL: Id;
30
+ /** Created property - creation time (TIMESTAMP) */
31
+ readonly CREATED: Id;
32
+ /** Modified property - last modification (TIMESTAMP) */
33
+ readonly MODIFIED: Id;
34
+ name: () => Id;
35
+ description: () => Id;
36
+ avatar: () => Id;
37
+ url: () => Id;
38
+ created: () => Id;
39
+ modified: () => Id;
40
+ };
41
+ /**
42
+ * Well-known type entity IDs from the Genesis Space.
43
+ */
44
+ export declare const types: {
45
+ /** Person type - human individual */
46
+ readonly PERSON: Id;
47
+ /** Organization type - company, DAO, institution */
48
+ readonly ORGANIZATION: Id;
49
+ /** Place type - geographic location */
50
+ readonly PLACE: Id;
51
+ /** Topic type - subject or concept */
52
+ readonly TOPIC: Id;
53
+ person: () => Id;
54
+ organization: () => Id;
55
+ place: () => Id;
56
+ topic: () => Id;
57
+ };
58
+ /**
59
+ * Well-known relation type IDs from the Genesis Space.
60
+ */
61
+ export declare const relationTypes: {
62
+ /** Types relation - type membership */
63
+ readonly TYPES: Id;
64
+ /** PartOf relation - composition/containment */
65
+ readonly PART_OF: Id;
66
+ /** RelatedTo relation - generic association */
67
+ readonly RELATED_TO: Id;
68
+ types: () => Id;
69
+ partOf: () => Id;
70
+ relatedTo: () => Id;
71
+ };
72
+ /**
73
+ * Well-known language IDs from the Genesis Space.
74
+ */
75
+ export declare const languages: {
76
+ readonly ENGLISH: Id;
77
+ readonly SPANISH: Id;
78
+ readonly FRENCH: Id;
79
+ readonly GERMAN: Id;
80
+ readonly CHINESE: Id;
81
+ readonly CHINESE_HANS: Id;
82
+ readonly CHINESE_HANT: Id;
83
+ readonly JAPANESE: Id;
84
+ readonly KOREAN: Id;
85
+ readonly PORTUGUESE: Id;
86
+ readonly ITALIAN: Id;
87
+ readonly RUSSIAN: Id;
88
+ readonly ARABIC: Id;
89
+ readonly HINDI: Id;
90
+ english: () => Id;
91
+ spanish: () => Id;
92
+ french: () => Id;
93
+ german: () => Id;
94
+ chinese: () => Id;
95
+ chineseHans: () => Id;
96
+ chineseHant: () => Id;
97
+ japanese: () => Id;
98
+ korean: () => Id;
99
+ portuguese: () => Id;
100
+ italian: () => Id;
101
+ russian: () => Id;
102
+ arabic: () => Id;
103
+ hindi: () => Id;
104
+ /**
105
+ * Returns the language ID for the given BCP 47 code.
106
+ */
107
+ fromCode: (code: string) => Id;
108
+ };
109
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/genesis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,EAAE,EAAE,MAAM,eAAe,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAE1C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAE3C;AAMD;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB,2CAA2C;mBAC/B,EAAE;IAId,iDAAiD;0BAC9B,EAAE;IAIrB,yCAAyC;qBAC3B,EAAE;IAIhB,0CAA0C;kBAC/B,EAAE;IAIb,mDAAmD;sBACpC,EAAE;IAIjB,wDAAwD;uBACxC,EAAE;;;;;;;CAWnB,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB,qCAAqC;qBACvB,EAAE;IAIhB,oDAAoD;2BAChC,EAAE;IAItB,uCAAuC;oBAC1B,EAAE;IAIf,sCAAsC;oBACzB,EAAE;;;;;CAShB,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB,uCAAuC;oBAC1B,EAAE;IAIf,gDAAgD;sBACjC,EAAE;IAIjB,+CAA+C;yBAC7B,EAAE;;;;CAQrB,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,SAAS;sBACL,EAAE;sBAGF,EAAE;qBAGH,EAAE;qBAGF,EAAE;sBAGD,EAAE;2BAGG,EAAE;2BAGF,EAAE;uBAGN,EAAE;qBAGJ,EAAE;yBAGE,EAAE;sBAGL,EAAE;sBAGF,EAAE;qBAGH,EAAE;oBAGH,EAAE;;;;;;;;;;;;;;;IAoBf;;OAEG;qBACc,MAAM;CACxB,CAAC"}