@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,393 @@
1
+ import { compareIds } from "../types/id.js";
2
+ import { DataType, valueDataType } from "../types/value.js";
3
+ import { DecodeError, Reader, Writer } from "./primitives.js";
4
+ import { decodeOp, encodeOp } from "./op.js";
5
+ // Magic bytes
6
+ const MAGIC_UNCOMPRESSED = new TextEncoder().encode("GRC2");
7
+ const MAGIC_COMPRESSED = new TextEncoder().encode("GRC2Z");
8
+ // Current version
9
+ const VERSION = 0;
10
+ /**
11
+ * Encodes an Edit to binary format.
12
+ */
13
+ export function encodeEdit(edit, options) {
14
+ const canonical = options?.canonical ?? false;
15
+ // Build dictionaries by scanning all ops
16
+ let dicts = buildDictionaries(edit.ops);
17
+ // Sort dictionaries for canonical encoding
18
+ if (canonical) {
19
+ dicts = sortDictionaries(dicts);
20
+ }
21
+ // Create dictionary indices
22
+ const indices = createDictionaryIndices(dicts);
23
+ // Write to buffer
24
+ const writer = new Writer(1024);
25
+ // Magic + version
26
+ writer.writeBytes(MAGIC_UNCOMPRESSED);
27
+ writer.writeByte(VERSION);
28
+ // Header
29
+ writer.writeId(edit.id);
30
+ writer.writeString(edit.name);
31
+ // Authors (sorted for canonical)
32
+ let authors = edit.authors;
33
+ if (canonical) {
34
+ authors = [...authors].sort(compareIds);
35
+ }
36
+ writer.writeIdVec(authors);
37
+ writer.writeSignedVarint(edit.createdAt);
38
+ // Dictionaries
39
+ writeDictionaries(writer, dicts);
40
+ // Operations
41
+ writer.writeVarintNumber(edit.ops.length);
42
+ for (const op of edit.ops) {
43
+ encodeOp(writer, op, indices);
44
+ }
45
+ return writer.finish();
46
+ }
47
+ /**
48
+ * Decodes binary data to an Edit.
49
+ */
50
+ export function decodeEdit(data) {
51
+ // Check for compression
52
+ if (data.length >= 5 && matchesMagic(data, MAGIC_COMPRESSED)) {
53
+ throw new DecodeError("E001", "compressed data detected - use decodeEditCompressed() or decompress first");
54
+ }
55
+ // Check magic
56
+ if (data.length < 4 || !matchesMagic(data, MAGIC_UNCOMPRESSED)) {
57
+ const found = data.length >= 4 ? data.subarray(0, 4) : data;
58
+ throw new DecodeError("E001", `invalid magic bytes: expected GRC2, found ${Array.from(found)}`);
59
+ }
60
+ const reader = new Reader(data);
61
+ // Skip magic
62
+ reader.readBytes(4);
63
+ // Version
64
+ const version = reader.readByte();
65
+ if (version !== VERSION) {
66
+ throw new DecodeError("E001", `unsupported version: ${version}`);
67
+ }
68
+ // Header
69
+ const id = reader.readId();
70
+ const name = reader.readString();
71
+ const authors = reader.readIdVec();
72
+ const createdAt = reader.readSignedVarint();
73
+ // Dictionaries
74
+ const dicts = readDictionaries(reader);
75
+ const lookups = createDictionaryLookups(dicts);
76
+ // Operations
77
+ const opCount = reader.readVarintNumber();
78
+ const ops = [];
79
+ for (let i = 0; i < opCount; i++) {
80
+ ops.push(decodeOp(reader, lookups));
81
+ }
82
+ return { id, name, authors, createdAt, ops };
83
+ }
84
+ function matchesMagic(data, magic) {
85
+ for (let i = 0; i < magic.length; i++) {
86
+ if (data[i] !== magic[i])
87
+ return false;
88
+ }
89
+ return true;
90
+ }
91
+ function idKey(id) {
92
+ return Array.from(id).map(b => b.toString(16).padStart(2, '0')).join('');
93
+ }
94
+ function buildDictionaries(ops) {
95
+ const dicts = {
96
+ properties: new Map(),
97
+ relationTypes: new Map(),
98
+ languages: new Map(),
99
+ units: new Map(),
100
+ objects: new Map(),
101
+ };
102
+ function addProperty(id, dataType) {
103
+ const key = idKey(id);
104
+ if (!dicts.properties.has(key)) {
105
+ dicts.properties.set(key, { id, dataType });
106
+ }
107
+ }
108
+ function addRelationType(id) {
109
+ const key = idKey(id);
110
+ if (!dicts.relationTypes.has(key)) {
111
+ dicts.relationTypes.set(key, id);
112
+ }
113
+ }
114
+ function addLanguage(id) {
115
+ const key = idKey(id);
116
+ if (!dicts.languages.has(key)) {
117
+ dicts.languages.set(key, id);
118
+ }
119
+ }
120
+ function addUnit(id) {
121
+ const key = idKey(id);
122
+ if (!dicts.units.has(key)) {
123
+ dicts.units.set(key, id);
124
+ }
125
+ }
126
+ function addObject(id) {
127
+ const key = idKey(id);
128
+ if (!dicts.objects.has(key)) {
129
+ dicts.objects.set(key, id);
130
+ }
131
+ }
132
+ function processPropertyValue(pv) {
133
+ addProperty(pv.property, valueDataType(pv.value));
134
+ if (pv.value.type === "text" && pv.value.language) {
135
+ addLanguage(pv.value.language);
136
+ }
137
+ if ((pv.value.type === "int64" || pv.value.type === "float64" || pv.value.type === "decimal") &&
138
+ pv.value.unit) {
139
+ addUnit(pv.value.unit);
140
+ }
141
+ }
142
+ function processUnsetLanguage(lang) {
143
+ if (lang.type === "specific") {
144
+ addLanguage(lang.language);
145
+ }
146
+ }
147
+ for (const op of ops) {
148
+ switch (op.type) {
149
+ case "createEntity":
150
+ // ID is inline, not in object dict
151
+ for (const pv of op.values) {
152
+ processPropertyValue(pv);
153
+ }
154
+ break;
155
+ case "updateEntity":
156
+ addObject(op.id);
157
+ for (const pv of op.setProperties) {
158
+ processPropertyValue(pv);
159
+ }
160
+ for (const unset of op.unsetProperties) {
161
+ addProperty(unset.property, DataType.Text); // Assume TEXT for unset properties
162
+ processUnsetLanguage(unset.language);
163
+ }
164
+ break;
165
+ case "deleteEntity":
166
+ case "restoreEntity":
167
+ addObject(op.id);
168
+ break;
169
+ case "createRelation":
170
+ // For unique mode, compute the derived ID and add to objects if referenced later
171
+ addRelationType(op.relationType);
172
+ addObject(op.from);
173
+ addObject(op.to);
174
+ // Many mode ID is inline
175
+ // Entity is inline if present
176
+ break;
177
+ case "updateRelation":
178
+ case "deleteRelation":
179
+ case "restoreRelation":
180
+ addObject(op.id);
181
+ break;
182
+ case "createProperty":
183
+ // ID is inline
184
+ break;
185
+ }
186
+ }
187
+ return dicts;
188
+ }
189
+ function sortDictionaries(dicts) {
190
+ // Sort each dictionary by ID bytes
191
+ const sortedProps = Array.from(dicts.properties.values()).sort((a, b) => compareIds(a.id, b.id));
192
+ const sortedRelTypes = Array.from(dicts.relationTypes.values()).sort(compareIds);
193
+ const sortedLangs = Array.from(dicts.languages.values()).sort(compareIds);
194
+ const sortedUnits = Array.from(dicts.units.values()).sort(compareIds);
195
+ const sortedObjects = Array.from(dicts.objects.values()).sort(compareIds);
196
+ const sorted = {
197
+ properties: new Map(),
198
+ relationTypes: new Map(),
199
+ languages: new Map(),
200
+ units: new Map(),
201
+ objects: new Map(),
202
+ };
203
+ for (const prop of sortedProps) {
204
+ sorted.properties.set(idKey(prop.id), prop);
205
+ }
206
+ for (const id of sortedRelTypes) {
207
+ sorted.relationTypes.set(idKey(id), id);
208
+ }
209
+ for (const id of sortedLangs) {
210
+ sorted.languages.set(idKey(id), id);
211
+ }
212
+ for (const id of sortedUnits) {
213
+ sorted.units.set(idKey(id), id);
214
+ }
215
+ for (const id of sortedObjects) {
216
+ sorted.objects.set(idKey(id), id);
217
+ }
218
+ return sorted;
219
+ }
220
+ function createDictionaryIndices(dicts) {
221
+ const propToIndex = new Map();
222
+ const propToDataType = new Map();
223
+ const relTypeToIndex = new Map();
224
+ const langToIndex = new Map();
225
+ const unitToIndex = new Map();
226
+ const objToIndex = new Map();
227
+ let i = 0;
228
+ for (const [key, prop] of dicts.properties) {
229
+ propToIndex.set(key, i++);
230
+ propToDataType.set(key, prop.dataType);
231
+ }
232
+ i = 0;
233
+ for (const key of dicts.relationTypes.keys()) {
234
+ relTypeToIndex.set(key, i++);
235
+ }
236
+ i = 0;
237
+ for (const key of dicts.languages.keys()) {
238
+ langToIndex.set(key, i++);
239
+ }
240
+ i = 0;
241
+ for (const key of dicts.units.keys()) {
242
+ unitToIndex.set(key, i++);
243
+ }
244
+ i = 0;
245
+ for (const key of dicts.objects.keys()) {
246
+ objToIndex.set(key, i++);
247
+ }
248
+ return {
249
+ getPropertyIndex(id) {
250
+ const key = idKey(id);
251
+ const idx = propToIndex.get(key);
252
+ if (idx === undefined) {
253
+ throw new Error(`property not in dictionary: ${key}`);
254
+ }
255
+ return idx;
256
+ },
257
+ getLanguageIndex(id) {
258
+ if (id === undefined)
259
+ return 0;
260
+ const key = idKey(id);
261
+ const idx = langToIndex.get(key);
262
+ if (idx === undefined) {
263
+ throw new Error(`language not in dictionary: ${key}`);
264
+ }
265
+ return idx + 1;
266
+ },
267
+ getUnitIndex(id) {
268
+ if (id === undefined)
269
+ return 0;
270
+ const key = idKey(id);
271
+ const idx = unitToIndex.get(key);
272
+ if (idx === undefined) {
273
+ throw new Error(`unit not in dictionary: ${key}`);
274
+ }
275
+ return idx + 1;
276
+ },
277
+ getDataType(propertyId) {
278
+ const key = idKey(propertyId);
279
+ const dt = propToDataType.get(key);
280
+ if (dt === undefined) {
281
+ throw new Error(`property not in dictionary: ${key}`);
282
+ }
283
+ return dt;
284
+ },
285
+ getObjectIndex(id) {
286
+ const key = idKey(id);
287
+ const idx = objToIndex.get(key);
288
+ if (idx === undefined) {
289
+ throw new Error(`object not in dictionary: ${key}`);
290
+ }
291
+ return idx;
292
+ },
293
+ getRelationTypeIndex(id) {
294
+ const key = idKey(id);
295
+ const idx = relTypeToIndex.get(key);
296
+ if (idx === undefined) {
297
+ throw new Error(`relation type not in dictionary: ${key}`);
298
+ }
299
+ return idx;
300
+ },
301
+ };
302
+ }
303
+ function writeDictionaries(writer, dicts) {
304
+ // Properties: count + (id, data_type) pairs
305
+ writer.writeVarintNumber(dicts.properties.size);
306
+ for (const prop of dicts.properties.values()) {
307
+ writer.writeId(prop.id);
308
+ writer.writeByte(prop.dataType);
309
+ }
310
+ // Relation types
311
+ writer.writeVarintNumber(dicts.relationTypes.size);
312
+ for (const id of dicts.relationTypes.values()) {
313
+ writer.writeId(id);
314
+ }
315
+ // Languages
316
+ writer.writeVarintNumber(dicts.languages.size);
317
+ for (const id of dicts.languages.values()) {
318
+ writer.writeId(id);
319
+ }
320
+ // Units
321
+ writer.writeVarintNumber(dicts.units.size);
322
+ for (const id of dicts.units.values()) {
323
+ writer.writeId(id);
324
+ }
325
+ // Objects
326
+ writer.writeVarintNumber(dicts.objects.size);
327
+ for (const id of dicts.objects.values()) {
328
+ writer.writeId(id);
329
+ }
330
+ }
331
+ function readDictionaries(reader) {
332
+ // Properties
333
+ const propCount = reader.readVarintNumber();
334
+ const properties = [];
335
+ for (let i = 0; i < propCount; i++) {
336
+ const id = reader.readId();
337
+ const dataTypeByte = reader.readByte();
338
+ if (dataTypeByte < 1 || dataTypeByte > 10) {
339
+ throw new DecodeError("E005", `invalid data type: ${dataTypeByte}`);
340
+ }
341
+ properties.push({ id, dataType: dataTypeByte });
342
+ }
343
+ // Relation types
344
+ const relationTypes = reader.readIdVec();
345
+ // Languages
346
+ const languages = reader.readIdVec();
347
+ // Units
348
+ const units = reader.readIdVec();
349
+ // Objects
350
+ const objects = reader.readIdVec();
351
+ return { properties, relationTypes, languages, units, objects };
352
+ }
353
+ function createDictionaryLookups(dicts) {
354
+ return {
355
+ getProperty(index) {
356
+ if (index >= dicts.properties.length) {
357
+ throw new DecodeError("E002", `property index ${index} out of bounds (size: ${dicts.properties.length})`);
358
+ }
359
+ return dicts.properties[index];
360
+ },
361
+ getLanguage(index) {
362
+ if (index === 0)
363
+ return undefined;
364
+ const langIndex = index - 1;
365
+ if (langIndex >= dicts.languages.length) {
366
+ throw new DecodeError("E002", `language index ${index} out of bounds`);
367
+ }
368
+ return dicts.languages[langIndex];
369
+ },
370
+ getUnit(index) {
371
+ if (index === 0)
372
+ return undefined;
373
+ const unitIndex = index - 1;
374
+ if (unitIndex >= dicts.units.length) {
375
+ throw new DecodeError("E002", `unit index ${index} out of bounds`);
376
+ }
377
+ return dicts.units[unitIndex];
378
+ },
379
+ getObject(index) {
380
+ if (index >= dicts.objects.length) {
381
+ throw new DecodeError("E002", `object index ${index} out of bounds (size: ${dicts.objects.length})`);
382
+ }
383
+ return dicts.objects[index];
384
+ },
385
+ getRelationType(index) {
386
+ if (index >= dicts.relationTypes.length) {
387
+ throw new DecodeError("E002", `relation type index ${index} out of bounds (size: ${dicts.relationTypes.length})`);
388
+ }
389
+ return dicts.relationTypes[index];
390
+ },
391
+ };
392
+ }
393
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/codec/edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { encodeEdit, decodeEdit, type EncodeOptions, } from "./edit.js";
2
+ export { Writer, Reader, DecodeError, zigzagEncode, zigzagDecode, } from "./primitives.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codec/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,MAAM,EACN,MAAM,EACN,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { encodeEdit, decodeEdit, } from "./edit.js";
2
+ export { Writer, Reader, DecodeError, zigzagEncode, zigzagDecode, } from "./primitives.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codec/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,GAEX,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,MAAM,EACN,MAAM,EACN,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Id } from "../types/id.js";
2
+ import type { Op } from "../types/op.js";
3
+ import { Reader, Writer } from "./primitives.js";
4
+ import { type DictionaryIndices, type DictionaryLookups } from "./value.js";
5
+ /**
6
+ * Extended dictionary indices for ops (includes objects).
7
+ */
8
+ export interface OpDictionaryIndices extends DictionaryIndices {
9
+ getObjectIndex(id: Id): number;
10
+ getRelationTypeIndex(id: Id): number;
11
+ }
12
+ /**
13
+ * Extended dictionary lookups for ops.
14
+ */
15
+ export interface OpDictionaryLookups extends DictionaryLookups {
16
+ getObject(index: number): Id;
17
+ getRelationType(index: number): Id;
18
+ }
19
+ /**
20
+ * Encodes a single operation.
21
+ */
22
+ export declare function encodeOp(writer: Writer, op: Op, dicts: OpDictionaryIndices): void;
23
+ /**
24
+ * Decodes a single operation.
25
+ */
26
+ export declare function decodeOp(reader: Reader, dicts: OpDictionaryLookups): Op;
27
+ //# sourceMappingURL=op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/codec/op.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAMV,EAAE,EAOH,MAAM,gBAAgB,CAAC;AAaxB,OAAO,EAAe,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC;IAC7B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC;CACpC;AAiBD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI,CA8BjF;AAgID;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,EAAE,CAyBvE"}