@geoprotocol/grc-20 0.1.1 → 0.1.5

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 (60) hide show
  1. package/dist/builder/edit.d.ts +5 -13
  2. package/dist/builder/edit.d.ts.map +1 -1
  3. package/dist/builder/edit.js +10 -31
  4. package/dist/builder/edit.js.map +1 -1
  5. package/dist/builder/entity.d.ts +13 -5
  6. package/dist/builder/entity.d.ts.map +1 -1
  7. package/dist/builder/entity.js +27 -7
  8. package/dist/builder/entity.js.map +1 -1
  9. package/dist/builder/index.d.ts +1 -0
  10. package/dist/builder/index.d.ts.map +1 -1
  11. package/dist/builder/index.js +1 -0
  12. package/dist/builder/index.js.map +1 -1
  13. package/dist/builder/relation.d.ts +14 -8
  14. package/dist/builder/relation.d.ts.map +1 -1
  15. package/dist/builder/relation.js +28 -14
  16. package/dist/builder/relation.js.map +1 -1
  17. package/dist/builder/update-relation.d.ts +64 -0
  18. package/dist/builder/update-relation.d.ts.map +1 -0
  19. package/dist/builder/update-relation.js +107 -0
  20. package/dist/builder/update-relation.js.map +1 -0
  21. package/dist/builder/update.d.ts +22 -14
  22. package/dist/builder/update.d.ts.map +1 -1
  23. package/dist/builder/update.js +52 -32
  24. package/dist/builder/update.js.map +1 -1
  25. package/dist/codec/compression.d.ts +132 -0
  26. package/dist/codec/compression.d.ts.map +1 -0
  27. package/dist/codec/compression.js +244 -0
  28. package/dist/codec/compression.js.map +1 -0
  29. package/dist/codec/edit.js +5 -8
  30. package/dist/codec/edit.js.map +1 -1
  31. package/dist/codec/index.d.ts +1 -0
  32. package/dist/codec/index.d.ts.map +1 -1
  33. package/dist/codec/index.js +9 -0
  34. package/dist/codec/index.js.map +1 -1
  35. package/dist/codec/op.d.ts.map +1 -1
  36. package/dist/codec/op.js +192 -81
  37. package/dist/codec/op.js.map +1 -1
  38. package/dist/codec/value.d.ts.map +1 -1
  39. package/dist/codec/value.js +92 -16
  40. package/dist/codec/value.js.map +1 -1
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +3 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/test/basic.test.js +154 -31
  46. package/dist/test/basic.test.js.map +1 -1
  47. package/dist/types/index.d.ts +2 -2
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/index.js +1 -1
  50. package/dist/types/index.js.map +1 -1
  51. package/dist/types/op.d.ts +46 -27
  52. package/dist/types/op.d.ts.map +1 -1
  53. package/dist/types/op.js +3 -3
  54. package/dist/types/op.js.map +1 -1
  55. package/dist/types/value.d.ts +17 -8
  56. package/dist/types/value.d.ts.map +1 -1
  57. package/dist/types/value.js +19 -10
  58. package/dist/types/value.js.map +1 -1
  59. package/package.json +5 -1
  60. package/readme.md +76 -12
@@ -1,29 +1,24 @@
1
1
  import type { Id } from "./id.js";
2
- import type { DataType, PropertyValue } from "./value.js";
2
+ import type { PropertyValue } from "./value.js";
3
3
  /**
4
- * Relation ID mode for CreateRelation.
5
- */
6
- export type RelationIdMode = {
7
- type: "unique";
8
- } | {
9
- type: "many";
10
- id: Id;
11
- };
12
- /**
13
- * Specifies which language slot to clear for an UnsetProperty.
4
+ * Specifies which language slot to clear for an UnsetValue.
14
5
  */
15
6
  export type UnsetLanguage = {
16
7
  type: "all";
17
8
  } | {
18
- type: "nonLinguistic";
9
+ type: "english";
19
10
  } | {
20
11
  type: "specific";
21
12
  language: Id;
22
13
  };
23
14
  /**
24
- * Specifies a property to unset, with optional language targeting (TEXT only).
15
+ * Fields that can be unset on a relation.
16
+ */
17
+ export type UnsetRelationField = "fromSpace" | "fromVersion" | "toSpace" | "toVersion" | "position";
18
+ /**
19
+ * Specifies a value to unset, with optional language targeting (TEXT only).
25
20
  */
26
- export interface UnsetProperty {
21
+ export interface UnsetValue {
27
22
  property: Id;
28
23
  language: UnsetLanguage;
29
24
  }
@@ -42,14 +37,14 @@ export interface CreateEntity {
42
37
  * Updates an existing entity (spec Section 3.2).
43
38
  *
44
39
  * Application order within op:
45
- * 1. unsetProperties
46
- * 2. setProperties
40
+ * 1. unset
41
+ * 2. set
47
42
  */
48
43
  export interface UpdateEntity {
49
44
  type: "updateEntity";
50
45
  id: Id;
51
- setProperties: PropertyValue[];
52
- unsetProperties: UnsetProperty[];
46
+ set: PropertyValue[];
47
+ unset: UnsetValue[];
53
48
  }
54
49
  /**
55
50
  * Deletes an entity (spec Section 3.2).
@@ -72,10 +67,14 @@ export interface RestoreEntity {
72
67
  */
73
68
  export interface CreateRelation {
74
69
  type: "createRelation";
75
- idMode: RelationIdMode;
70
+ id: Id;
76
71
  relationType: Id;
77
72
  from: Id;
73
+ /** If true, `from` is a value ref ID (inline encoding). */
74
+ fromIsValueRef?: boolean;
78
75
  to: Id;
76
+ /** If true, `to` is a value ref ID (inline encoding). */
77
+ toIsValueRef?: boolean;
79
78
  fromSpace?: Id;
80
79
  fromVersion?: Id;
81
80
  toSpace?: Id;
@@ -84,14 +83,24 @@ export interface CreateRelation {
84
83
  position?: string;
85
84
  }
86
85
  /**
87
- * Updates a relation's position (spec Section 3.3).
86
+ * Updates a relation's mutable fields (spec Section 3.3).
88
87
  *
89
- * All other fields are immutable.
88
+ * The structural fields (entity, type, from, to) are immutable.
89
+ * The space pins, version pins, and position can be updated or unset.
90
+ *
91
+ * Application order within op:
92
+ * 1. unset
93
+ * 2. set fields
90
94
  */
91
95
  export interface UpdateRelation {
92
96
  type: "updateRelation";
93
97
  id: Id;
98
+ fromSpace?: Id;
99
+ fromVersion?: Id;
100
+ toSpace?: Id;
101
+ toVersion?: Id;
94
102
  position?: string;
103
+ unset: UnsetRelationField[];
95
104
  }
96
105
  /**
97
106
  * Deletes a relation (spec Section 3.3).
@@ -108,17 +117,27 @@ export interface RestoreRelation {
108
117
  id: Id;
109
118
  }
110
119
  /**
111
- * Creates a property in the schema (spec Section 3.4).
120
+ * Creates a referenceable ID for a value slot (spec Section 3.4).
121
+ *
122
+ * This enables relations to target specific values for provenance,
123
+ * confidence, attribution, or other qualifiers.
112
124
  */
113
- export interface CreateProperty {
114
- type: "createProperty";
125
+ export interface CreateValueRef {
126
+ type: "createValueRef";
115
127
  id: Id;
116
- dataType: DataType;
128
+ /** The entity holding the value. */
129
+ entity: Id;
130
+ /** The property of the value. */
131
+ property: Id;
132
+ /** The language (TEXT values only). */
133
+ language?: Id;
134
+ /** The space containing the value (default: current space). */
135
+ space?: Id;
117
136
  }
118
137
  /**
119
138
  * An atomic operation that modifies graph state (spec Section 3.1).
120
139
  */
121
- export type Op = CreateEntity | UpdateEntity | DeleteEntity | RestoreEntity | CreateRelation | UpdateRelation | DeleteRelation | RestoreRelation | CreateProperty;
140
+ export type Op = CreateEntity | UpdateEntity | DeleteEntity | RestoreEntity | CreateRelation | UpdateRelation | DeleteRelation | RestoreRelation | CreateValueRef;
122
141
  /**
123
142
  * Op type codes for wire encoding.
124
143
  */
@@ -130,7 +149,7 @@ export declare const OP_TYPE_CREATE_RELATION = 5;
130
149
  export declare const OP_TYPE_UPDATE_RELATION = 6;
131
150
  export declare const OP_TYPE_DELETE_RELATION = 7;
132
151
  export declare const OP_TYPE_RESTORE_RELATION = 8;
133
- export declare const OP_TYPE_CREATE_PROPERTY = 9;
152
+ export declare const OP_TYPE_CREATE_VALUE_REF = 9;
134
153
  /**
135
154
  * Returns the op type code for wire encoding.
136
155
  */
@@ -1 +1 @@
1
- {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/types/op.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/types/op.ts"],"names":[],"mappings":"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"}
package/dist/types/op.js CHANGED
@@ -9,7 +9,7 @@ export const OP_TYPE_CREATE_RELATION = 5;
9
9
  export const OP_TYPE_UPDATE_RELATION = 6;
10
10
  export const OP_TYPE_DELETE_RELATION = 7;
11
11
  export const OP_TYPE_RESTORE_RELATION = 8;
12
- export const OP_TYPE_CREATE_PROPERTY = 9;
12
+ export const OP_TYPE_CREATE_VALUE_REF = 9;
13
13
  /**
14
14
  * Returns the op type code for wire encoding.
15
15
  */
@@ -31,8 +31,8 @@ export function opTypeCode(op) {
31
31
  return OP_TYPE_DELETE_RELATION;
32
32
  case "restoreRelation":
33
33
  return OP_TYPE_RESTORE_RELATION;
34
- case "createProperty":
35
- return OP_TYPE_CREATE_PROPERTY;
34
+ case "createValueRef":
35
+ return OP_TYPE_CREATE_VALUE_REF;
36
36
  }
37
37
  }
38
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"op.js","sourceRoot":"","sources":["../../src/types/op.ts"],"names":[],"mappings":"AAyIA;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAM;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,cAAc;YACjB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,cAAc;YACjB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,eAAe;YAClB,OAAO,sBAAsB,CAAC;QAChC,KAAK,gBAAgB;YACnB,OAAO,uBAAuB,CAAC;QACjC,KAAK,gBAAgB;YACnB,OAAO,uBAAuB,CAAC;QACjC,KAAK,gBAAgB;YACnB,OAAO,uBAAuB,CAAC;QACjC,KAAK,iBAAiB;YACpB,OAAO,wBAAwB,CAAC;QAClC,KAAK,gBAAgB;YACnB,OAAO,uBAAuB,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,wCAAwC,CAAC,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"op.js","sourceRoot":"","sources":["../../src/types/op.ts"],"names":[],"mappings":"AAoKA;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAM;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,cAAc;YACjB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,cAAc;YACjB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,eAAe;YAClB,OAAO,sBAAsB,CAAC;QAChC,KAAK,gBAAgB;YACnB,OAAO,uBAAuB,CAAC;QACjC,KAAK,gBAAgB;YACnB,OAAO,uBAAuB,CAAC;QACjC,KAAK,gBAAgB;YACnB,OAAO,uBAAuB,CAAC;QACjC,KAAK,iBAAiB;YACpB,OAAO,wBAAwB,CAAC;QAClC,KAAK,gBAAgB;YACnB,OAAO,wBAAwB,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,wCAAwC,CAAC,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -9,10 +9,12 @@ export declare enum DataType {
9
9
  Decimal = 4,
10
10
  Text = 5,
11
11
  Bytes = 6,
12
- Timestamp = 7,
13
- Date = 8,
14
- Point = 9,
15
- Embedding = 10
12
+ Date = 7,
13
+ Time = 8,
14
+ Datetime = 9,
15
+ Schedule = 10,
16
+ Point = 11,
17
+ Embedding = 12
16
18
  }
17
19
  /**
18
20
  * Embedding sub-types (spec Section 2.4).
@@ -65,16 +67,23 @@ export type Value = {
65
67
  } | {
66
68
  type: "bytes";
67
69
  value: Uint8Array;
68
- } | {
69
- type: "timestamp";
70
- value: bigint;
71
70
  } | {
72
71
  type: "date";
73
72
  value: string;
73
+ } | {
74
+ type: "time";
75
+ value: string;
76
+ } | {
77
+ type: "datetime";
78
+ value: string;
79
+ } | {
80
+ type: "schedule";
81
+ value: string;
74
82
  } | {
75
83
  type: "point";
76
- lat: number;
77
84
  lon: number;
85
+ lat: number;
86
+ alt?: number;
78
87
  } | {
79
88
  type: "embedding";
80
89
  subType: EmbeddingSubType;
@@ -1 +1 @@
1
- {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../src/types/value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,OAAO,IAAI;IACX,IAAI,IAAI;IACR,KAAK,IAAI;IACT,SAAS,IAAI;IACb,IAAI,IAAI;IACR,KAAK,IAAI;IACT,SAAS,KAAK;CACf;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,6DAA6D;IAC7D,OAAO,IAAI;IACX,4CAA4C;IAC5C,IAAI,IAAI;IACR,sDAAsD;IACtD,MAAM,IAAI;CACX;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASrF;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAErF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAuBpD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,EAAE,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAqD9D"}
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../src/types/value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,OAAO,IAAI;IACX,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,QAAQ,KAAK;IACb,KAAK,KAAK;IACV,SAAS,KAAK;CACf;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,6DAA6D;IAC7D,OAAO,IAAI;IACX,4CAA4C;IAC5C,IAAI,IAAI;IACR,sDAAsD;IACtD,MAAM,IAAI;CACX;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASrF;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAErF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CA2BpD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,EAAE,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAwD9D"}
@@ -9,10 +9,12 @@ export var DataType;
9
9
  DataType[DataType["Decimal"] = 4] = "Decimal";
10
10
  DataType[DataType["Text"] = 5] = "Text";
11
11
  DataType[DataType["Bytes"] = 6] = "Bytes";
12
- DataType[DataType["Timestamp"] = 7] = "Timestamp";
13
- DataType[DataType["Date"] = 8] = "Date";
14
- DataType[DataType["Point"] = 9] = "Point";
15
- DataType[DataType["Embedding"] = 10] = "Embedding";
12
+ DataType[DataType["Date"] = 7] = "Date";
13
+ DataType[DataType["Time"] = 8] = "Time";
14
+ DataType[DataType["Datetime"] = 9] = "Datetime";
15
+ DataType[DataType["Schedule"] = 10] = "Schedule";
16
+ DataType[DataType["Point"] = 11] = "Point";
17
+ DataType[DataType["Embedding"] = 12] = "Embedding";
16
18
  })(DataType || (DataType = {}));
17
19
  /**
18
20
  * Embedding sub-types (spec Section 2.4).
@@ -56,10 +58,14 @@ export function valueDataType(value) {
56
58
  return DataType.Text;
57
59
  case "bytes":
58
60
  return DataType.Bytes;
59
- case "timestamp":
60
- return DataType.Timestamp;
61
61
  case "date":
62
62
  return DataType.Date;
63
+ case "time":
64
+ return DataType.Time;
65
+ case "datetime":
66
+ return DataType.Datetime;
67
+ case "schedule":
68
+ return DataType.Schedule;
63
69
  case "point":
64
70
  return DataType.Point;
65
71
  case "embedding":
@@ -93,15 +99,18 @@ export function validateValue(value) {
93
99
  break;
94
100
  }
95
101
  case "point":
96
- if (value.lat < -90 || value.lat > 90) {
97
- return "latitude out of range [-90, +90]";
98
- }
99
102
  if (value.lon < -180 || value.lon > 180) {
100
103
  return "longitude out of range [-180, +180]";
101
104
  }
102
- if (Number.isNaN(value.lat) || Number.isNaN(value.lon)) {
105
+ if (value.lat < -90 || value.lat > 90) {
106
+ return "latitude out of range [-90, +90]";
107
+ }
108
+ if (Number.isNaN(value.lon) || Number.isNaN(value.lat)) {
103
109
  return "NaN is not allowed in Point coordinates";
104
110
  }
111
+ if (value.alt !== undefined && Number.isNaN(value.alt)) {
112
+ return "NaN is not allowed in Point altitude";
113
+ }
105
114
  break;
106
115
  case "embedding": {
107
116
  const expected = embeddingBytesForDims(value.subType, value.dims);
@@ -1 +1 @@
1
- {"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/types/value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/types/value.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geoprotocol/grc-20",
3
- "version": "0.1.1",
3
+ "version": "0.1.5",
4
4
  "description": "GRC-20 TypeScript library for binary property graph encoding/decoding",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -41,6 +41,7 @@
41
41
  "test:browser": "vitest run --config vitest.browser.config.ts",
42
42
  "test:all": "npm run test && npm run test:browser",
43
43
  "bundle:analyze": "node scripts/bundle-analyze.js",
44
+ "benchmark": "node scripts/benchmark.js",
44
45
  "demo": "npx serve .",
45
46
  "lint": "eslint src --ext .ts",
46
47
  "prepublishOnly": "npm run build"
@@ -54,6 +55,9 @@
54
55
  ],
55
56
  "author": "Geo Browser",
56
57
  "license": "MIT",
58
+ "dependencies": {
59
+ "@bokuweb/zstd-wasm": "^0.0.27"
60
+ },
57
61
  "devDependencies": {
58
62
  "@types/node": "^20.11.0",
59
63
  "@vitest/browser": "^1.2.0",
package/readme.md CHANGED
@@ -42,7 +42,8 @@ const decoded = decodeEdit(bytes);
42
42
 
43
43
  - **Type-safe API** - Full TypeScript definitions
44
44
  - **Builder pattern** - Fluent API for constructing edits
45
- - **Binary codec** - Pure TypeScript encoder/decoder (no WASM)
45
+ - **Binary codec** - Pure TypeScript encoder/decoder
46
+ - **Zstd compression** - Optional WASM-based compression (lazy-loaded)
46
47
  - **Tree-shakeable** - Separate entry points for minimal bundles
47
48
  - **Cross-platform** - Works in Node.js and browsers
48
49
 
@@ -50,24 +51,30 @@ const decoded = decodeEdit(bytes);
50
51
 
51
52
  | Entry Point | Gzipped |
52
53
  |-------------|---------|
53
- | Full library | ~8.7 KB |
54
+ | Full library | ~12 KB |
54
55
  | Types only | ~1.4 KB |
55
56
  | Builder only | ~1.2 KB |
56
- | Codec only | ~4.8 KB |
57
- | Genesis IDs | ~1.9 KB |
57
+ | Codec only | ~8 KB |
58
+ | Genesis IDs | ~1.7 KB |
58
59
  | Utilities | ~1.6 KB |
60
+ | Zstd WASM (lazy) | ~81 KB |
61
+
62
+ The Zstd WASM module is only loaded when compression functions are used.
59
63
 
60
64
  ### Lazy Loading
61
65
 
62
66
  For optimal initial load, import the codec separately:
63
67
 
64
68
  ```typescript
65
- // Initial load (~4.6 KB gzipped)
69
+ // Initial load (~4.4 KB gzipped)
66
70
  import { EditBuilder, randomId, properties } from "@geoprotocol/grc-20/builder";
67
71
  import { properties } from "@geoprotocol/grc-20/genesis";
68
72
 
69
- // Lazy load codec when needed (~4.8 KB gzipped)
73
+ // Lazy load codec when needed (~8 KB gzipped)
70
74
  const { encodeEdit } = await import("@geoprotocol/grc-20/codec");
75
+
76
+ // WASM only loads if you use compression (~81 KB additional)
77
+ const { encodeEditAuto } = await import("@geoprotocol/grc-20/codec");
71
78
  ```
72
79
 
73
80
  ## API Reference
@@ -111,7 +118,7 @@ const edit = new EditBuilder(editId)
111
118
  .bytes(propId, new Uint8Array([1, 2, 3]))
112
119
  .point(propId, 40.7128, -74.006)
113
120
  .date(propId, "2024-01-15")
114
- .timestamp(propId, 1704067200000000n)
121
+ .datetime(propId, "2024-01-15T10:30:00Z")
115
122
  )
116
123
  .updateEntity(entityId, u => u
117
124
  .setText(propId, "new value", undefined)
@@ -119,10 +126,13 @@ const edit = new EditBuilder(editId)
119
126
  )
120
127
  .deleteEntity(entityId)
121
128
  .restoreEntity(entityId)
122
- .createRelationUnique(fromId, toId, relationTypeId)
123
- .createRelationMany(relationId, fromId, toId, relationTypeId)
129
+ .createRelation(r => r
130
+ .id(relationId)
131
+ .from(fromId)
132
+ .to(toId)
133
+ .relationType(relationTypeId)
134
+ )
124
135
  .deleteRelation(relationId)
125
- .createProperty(propId, DataType.Text)
126
136
  .build();
127
137
  ```
128
138
 
@@ -131,14 +141,65 @@ const edit = new EditBuilder(editId)
131
141
  ```typescript
132
142
  import { encodeEdit, decodeEdit } from "@geoprotocol/grc-20";
133
143
 
134
- // Encode
144
+ // Encode (uncompressed)
135
145
  const bytes = encodeEdit(edit);
136
146
  const bytesCanonical = encodeEdit(edit, { canonical: true });
137
147
 
138
- // Decode
148
+ // Decode (uncompressed)
139
149
  const edit = decodeEdit(bytes);
140
150
  ```
141
151
 
152
+ ### Compression
153
+
154
+ The library supports Zstd compression via a lazy-loaded WASM module. The WASM is only downloaded when compression functions are first used.
155
+
156
+ ```typescript
157
+ import {
158
+ preloadCompression,
159
+ isCompressionReady,
160
+ encodeEditAuto,
161
+ decodeEditAuto,
162
+ encodeEditCompressed,
163
+ decodeEditCompressed,
164
+ } from "@geoprotocol/grc-20";
165
+
166
+ // Preload WASM on app startup (recommended)
167
+ await preloadCompression();
168
+
169
+ // Check if compression is ready
170
+ if (isCompressionReady()) {
171
+ console.log("Compression ready!");
172
+ }
173
+
174
+ // Auto encode/decode (recommended for most use cases)
175
+ // Compresses if data > 256 bytes, otherwise uncompressed
176
+ const data = await encodeEditAuto(edit);
177
+ const decoded = await decodeEditAuto(data);
178
+
179
+ // Control compression threshold
180
+ const data = await encodeEditAuto(edit, { threshold: 0 }); // always compress
181
+ const data = await encodeEditAuto(edit, { threshold: 1024 }); // compress if > 1KB
182
+ const data = await encodeEditAuto(edit, { threshold: Infinity }); // never compress
183
+
184
+ // Explicit compressed encode/decode
185
+ const compressed = await encodeEditCompressed(edit);
186
+ const decoded = await decodeEditCompressed(compressed);
187
+ ```
188
+
189
+ #### Browser Usage (without bundler)
190
+
191
+ If using native ES modules without a bundler, add an import map for the WASM dependency:
192
+
193
+ ```html
194
+ <script type="importmap">
195
+ {
196
+ "imports": {
197
+ "@bokuweb/zstd-wasm": "https://esm.sh/@bokuweb/zstd-wasm@0.0.27"
198
+ }
199
+ }
200
+ </script>
201
+ ```
202
+
142
203
  ### ID Utilities
143
204
 
144
205
  ```typescript
@@ -214,6 +275,9 @@ npm run test:all
214
275
  # Analyze bundle sizes
215
276
  npm run bundle:analyze
216
277
 
278
+ # Run performance benchmark
279
+ npm run benchmark
280
+
217
281
  # Run browser demo
218
282
  npm run demo
219
283
  # Then open http://localhost:3000/examples/browser-demo.html