@geoprotocol/grc-20 0.1.1 → 0.1.4

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 (55) hide show
  1. package/dist/builder/edit.d.ts +5 -8
  2. package/dist/builder/edit.d.ts.map +1 -1
  3. package/dist/builder/edit.js +8 -19
  4. package/dist/builder/edit.js.map +1 -1
  5. package/dist/builder/entity.d.ts +4 -4
  6. package/dist/builder/entity.d.ts.map +1 -1
  7. package/dist/builder/entity.js +6 -6
  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 +4 -8
  14. package/dist/builder/relation.d.ts.map +1 -1
  15. package/dist/builder/relation.js +7 -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 +4 -4
  22. package/dist/builder/update.d.ts.map +1 -1
  23. package/dist/builder/update.js +6 -6
  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/index.d.ts +1 -0
  30. package/dist/codec/index.d.ts.map +1 -1
  31. package/dist/codec/index.js +9 -0
  32. package/dist/codec/index.js.map +1 -1
  33. package/dist/codec/op.d.ts.map +1 -1
  34. package/dist/codec/op.js +100 -37
  35. package/dist/codec/op.js.map +1 -1
  36. package/dist/codec/value.d.ts.map +1 -1
  37. package/dist/codec/value.js +35 -16
  38. package/dist/codec/value.js.map +1 -1
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/test/basic.test.js +152 -13
  44. package/dist/test/basic.test.js.map +1 -1
  45. package/dist/types/index.d.ts +1 -1
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/op.d.ts +17 -12
  48. package/dist/types/op.d.ts.map +1 -1
  49. package/dist/types/op.js.map +1 -1
  50. package/dist/types/value.d.ts +7 -6
  51. package/dist/types/value.d.ts.map +1 -1
  52. package/dist/types/value.js +11 -8
  53. package/dist/types/value.js.map +1 -1
  54. package/package.json +5 -1
  55. package/readme.md +69 -8
@@ -1,14 +1,5 @@
1
1
  import type { Id } from "./id.js";
2
2
  import type { DataType, PropertyValue } from "./value.js";
3
- /**
4
- * Relation ID mode for CreateRelation.
5
- */
6
- export type RelationIdMode = {
7
- type: "unique";
8
- } | {
9
- type: "many";
10
- id: Id;
11
- };
12
3
  /**
13
4
  * Specifies which language slot to clear for an UnsetProperty.
14
5
  */
@@ -20,6 +11,10 @@ export type UnsetLanguage = {
20
11
  type: "specific";
21
12
  language: Id;
22
13
  };
14
+ /**
15
+ * Fields that can be unset on a relation.
16
+ */
17
+ export type UnsetRelationField = "fromSpace" | "fromVersion" | "toSpace" | "toVersion" | "position";
23
18
  /**
24
19
  * Specifies a property to unset, with optional language targeting (TEXT only).
25
20
  */
@@ -72,7 +67,7 @@ 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;
78
73
  to: Id;
@@ -84,14 +79,24 @@ export interface CreateRelation {
84
79
  position?: string;
85
80
  }
86
81
  /**
87
- * Updates a relation's position (spec Section 3.3).
82
+ * Updates a relation's mutable fields (spec Section 3.3).
83
+ *
84
+ * The structural fields (entity, type, from, to) are immutable.
85
+ * The space pins, version pins, and position can be updated or unset.
88
86
  *
89
- * All other fields are immutable.
87
+ * Application order within op:
88
+ * 1. unset
89
+ * 2. set fields
90
90
  */
91
91
  export interface UpdateRelation {
92
92
  type: "updateRelation";
93
93
  id: Id;
94
+ fromSpace?: Id;
95
+ fromVersion?: Id;
96
+ toSpace?: Id;
97
+ toVersion?: Id;
94
98
  position?: string;
99
+ unset: UnsetRelationField[];
95
100
  }
96
101
  /**
97
102
  * Deletes a relation (spec Section 3.3).
@@ -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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"}
@@ -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":"AAsJA;;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"}
@@ -9,8 +9,8 @@ export declare enum DataType {
9
9
  Decimal = 4,
10
10
  Text = 5,
11
11
  Bytes = 6,
12
- Timestamp = 7,
13
- Date = 8,
12
+ Date = 7,
13
+ Schedule = 8,
14
14
  Point = 9,
15
15
  Embedding = 10
16
16
  }
@@ -65,16 +65,17 @@ export type Value = {
65
65
  } | {
66
66
  type: "bytes";
67
67
  value: Uint8Array;
68
- } | {
69
- type: "timestamp";
70
- value: bigint;
71
68
  } | {
72
69
  type: "date";
73
70
  value: string;
71
+ } | {
72
+ type: "schedule";
73
+ value: string;
74
74
  } | {
75
75
  type: "point";
76
- lat: number;
77
76
  lon: number;
77
+ lat: number;
78
+ alt?: number;
78
79
  } | {
79
80
  type: "embedding";
80
81
  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,QAAQ,IAAI;IACZ,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,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,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,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,CAwD9D"}
@@ -9,8 +9,8 @@ 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";
12
+ DataType[DataType["Date"] = 7] = "Date";
13
+ DataType[DataType["Schedule"] = 8] = "Schedule";
14
14
  DataType[DataType["Point"] = 9] = "Point";
15
15
  DataType[DataType["Embedding"] = 10] = "Embedding";
16
16
  })(DataType || (DataType = {}));
@@ -56,10 +56,10 @@ export function valueDataType(value) {
56
56
  return DataType.Text;
57
57
  case "bytes":
58
58
  return DataType.Bytes;
59
- case "timestamp":
60
- return DataType.Timestamp;
61
59
  case "date":
62
60
  return DataType.Date;
61
+ case "schedule":
62
+ return DataType.Schedule;
63
63
  case "point":
64
64
  return DataType.Point;
65
65
  case "embedding":
@@ -93,15 +93,18 @@ export function validateValue(value) {
93
93
  break;
94
94
  }
95
95
  case "point":
96
- if (value.lat < -90 || value.lat > 90) {
97
- return "latitude out of range [-90, +90]";
98
- }
99
96
  if (value.lon < -180 || value.lon > 180) {
100
97
  return "longitude out of range [-180, +180]";
101
98
  }
102
- if (Number.isNaN(value.lat) || Number.isNaN(value.lon)) {
99
+ if (value.lat < -90 || value.lat > 90) {
100
+ return "latitude out of range [-90, +90]";
101
+ }
102
+ if (Number.isNaN(value.lon) || Number.isNaN(value.lat)) {
103
103
  return "NaN is not allowed in Point coordinates";
104
104
  }
105
+ if (value.alt !== undefined && Number.isNaN(value.alt)) {
106
+ return "NaN is not allowed in Point altitude";
107
+ }
105
108
  break;
106
109
  case "embedding": {
107
110
  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.4",
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
@@ -131,14 +138,65 @@ const edit = new EditBuilder(editId)
131
138
  ```typescript
132
139
  import { encodeEdit, decodeEdit } from "@geoprotocol/grc-20";
133
140
 
134
- // Encode
141
+ // Encode (uncompressed)
135
142
  const bytes = encodeEdit(edit);
136
143
  const bytesCanonical = encodeEdit(edit, { canonical: true });
137
144
 
138
- // Decode
145
+ // Decode (uncompressed)
139
146
  const edit = decodeEdit(bytes);
140
147
  ```
141
148
 
149
+ ### Compression
150
+
151
+ The library supports Zstd compression via a lazy-loaded WASM module. The WASM is only downloaded when compression functions are first used.
152
+
153
+ ```typescript
154
+ import {
155
+ preloadCompression,
156
+ isCompressionReady,
157
+ encodeEditAuto,
158
+ decodeEditAuto,
159
+ encodeEditCompressed,
160
+ decodeEditCompressed,
161
+ } from "@geoprotocol/grc-20";
162
+
163
+ // Preload WASM on app startup (recommended)
164
+ await preloadCompression();
165
+
166
+ // Check if compression is ready
167
+ if (isCompressionReady()) {
168
+ console.log("Compression ready!");
169
+ }
170
+
171
+ // Auto encode/decode (recommended for most use cases)
172
+ // Compresses if data > 256 bytes, otherwise uncompressed
173
+ const data = await encodeEditAuto(edit);
174
+ const decoded = await decodeEditAuto(data);
175
+
176
+ // Control compression threshold
177
+ const data = await encodeEditAuto(edit, { threshold: 0 }); // always compress
178
+ const data = await encodeEditAuto(edit, { threshold: 1024 }); // compress if > 1KB
179
+ const data = await encodeEditAuto(edit, { threshold: Infinity }); // never compress
180
+
181
+ // Explicit compressed encode/decode
182
+ const compressed = await encodeEditCompressed(edit);
183
+ const decoded = await decodeEditCompressed(compressed);
184
+ ```
185
+
186
+ #### Browser Usage (without bundler)
187
+
188
+ If using native ES modules without a bundler, add an import map for the WASM dependency:
189
+
190
+ ```html
191
+ <script type="importmap">
192
+ {
193
+ "imports": {
194
+ "@bokuweb/zstd-wasm": "https://esm.sh/@bokuweb/zstd-wasm@0.0.27"
195
+ }
196
+ }
197
+ </script>
198
+ ```
199
+
142
200
  ### ID Utilities
143
201
 
144
202
  ```typescript
@@ -214,6 +272,9 @@ npm run test:all
214
272
  # Analyze bundle sizes
215
273
  npm run bundle:analyze
216
274
 
275
+ # Run performance benchmark
276
+ npm run benchmark
277
+
217
278
  # Run browser demo
218
279
  npm run demo
219
280
  # Then open http://localhost:3000/examples/browser-demo.html