@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.
- package/dist/builder/edit.d.ts +5 -8
- package/dist/builder/edit.d.ts.map +1 -1
- package/dist/builder/edit.js +8 -19
- package/dist/builder/edit.js.map +1 -1
- package/dist/builder/entity.d.ts +4 -4
- package/dist/builder/entity.d.ts.map +1 -1
- package/dist/builder/entity.js +6 -6
- package/dist/builder/entity.js.map +1 -1
- package/dist/builder/index.d.ts +1 -0
- package/dist/builder/index.d.ts.map +1 -1
- package/dist/builder/index.js +1 -0
- package/dist/builder/index.js.map +1 -1
- package/dist/builder/relation.d.ts +4 -8
- package/dist/builder/relation.d.ts.map +1 -1
- package/dist/builder/relation.js +7 -14
- package/dist/builder/relation.js.map +1 -1
- package/dist/builder/update-relation.d.ts +64 -0
- package/dist/builder/update-relation.d.ts.map +1 -0
- package/dist/builder/update-relation.js +107 -0
- package/dist/builder/update-relation.js.map +1 -0
- package/dist/builder/update.d.ts +4 -4
- package/dist/builder/update.d.ts.map +1 -1
- package/dist/builder/update.js +6 -6
- package/dist/builder/update.js.map +1 -1
- package/dist/codec/compression.d.ts +132 -0
- package/dist/codec/compression.d.ts.map +1 -0
- package/dist/codec/compression.js +244 -0
- package/dist/codec/compression.js.map +1 -0
- package/dist/codec/index.d.ts +1 -0
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js +9 -0
- package/dist/codec/index.js.map +1 -1
- package/dist/codec/op.d.ts.map +1 -1
- package/dist/codec/op.js +100 -37
- package/dist/codec/op.js.map +1 -1
- package/dist/codec/value.d.ts.map +1 -1
- package/dist/codec/value.js +35 -16
- package/dist/codec/value.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/test/basic.test.js +152 -13
- package/dist/test/basic.test.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/op.d.ts +17 -12
- package/dist/types/op.d.ts.map +1 -1
- package/dist/types/op.js.map +1 -1
- package/dist/types/value.d.ts +7 -6
- package/dist/types/value.d.ts.map +1 -1
- package/dist/types/value.js +11 -8
- package/dist/types/value.js.map +1 -1
- package/package.json +5 -1
- package/readme.md +69 -8
package/dist/types/op.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
-
*
|
|
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).
|
package/dist/types/op.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/types/op.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/types/op.ts"],"names":[],"mappings":"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"}
|
package/dist/types/op.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"op.js","sourceRoot":"","sources":["../../src/types/op.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/types/value.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export declare enum DataType {
|
|
|
9
9
|
Decimal = 4,
|
|
10
10
|
Text = 5,
|
|
11
11
|
Bytes = 6,
|
|
12
|
-
|
|
13
|
-
|
|
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,
|
|
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"}
|
package/dist/types/value.js
CHANGED
|
@@ -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["
|
|
13
|
-
DataType[DataType["
|
|
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 (
|
|
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);
|
package/dist/types/value.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/types/value.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,QAWX;AAXD,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,6CAAW,CAAA;IACX,6CAAW,CAAA;IACX,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/types/value.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,QAWX;AAXD,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,6CAAW,CAAA;IACX,6CAAW,CAAA;IACX,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,+CAAY,CAAA;IACZ,yCAAS,CAAA;IACT,kDAAc,CAAA;AAChB,CAAC,EAXW,QAAQ,KAAR,QAAQ,QAWnB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6DAA6D;IAC7D,6DAAW,CAAA;IACX,4CAA4C;IAC5C,uDAAQ,CAAA;IACR,sDAAsD;IACtD,2DAAU,CAAA;AACZ,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAyB,EAAE,IAAY;IAC3E,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,IAAI,GAAG,CAAC,CAAC;QAClB,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,IAAI,CAAC;QACd,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAwBD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3B,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC,SAAS,CAAC;IAC9B,CAAC;AACH,CAAC;AAkBD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,+BAA+B,CAAC;YACzC,CAAC;YACD,MAAM;QACR,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GACV,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK;gBAC3B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE;gBAC7B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,mCAAmC,CAAC;YAC7C,CAAC;YACD,gDAAgD;YAChD,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC7C,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,KAAK,EAAE,EAAE,CAAC;oBACtC,OAAO,sDAAsD,CAAC;gBAChE,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,OAAO;YACV,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;gBACxC,OAAO,qCAAqC,CAAC;YAC/C,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;gBACtC,OAAO,kCAAkC,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,OAAO,yCAAyC,CAAC;YACnD,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,OAAO,sCAAsC,CAAC;YAChD,CAAC;YACD,MAAM;QACR,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO,yBAAyB,KAAK,CAAC,IAAI,CAAC,MAAM,2BAA2B,QAAQ,QAAQ,KAAK,CAAC,IAAI,OAAO,CAAC;YAChH,CAAC;YACD,sCAAsC;YACtC,IAAI,KAAK,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC/C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;oBACvC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpB,OAAO,yCAAyC,CAAC;oBACnD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geoprotocol/grc-20",
|
|
3
|
-
"version": "0.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
|
|
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 | ~
|
|
54
|
+
| Full library | ~12 KB |
|
|
54
55
|
| Types only | ~1.4 KB |
|
|
55
56
|
| Builder only | ~1.2 KB |
|
|
56
|
-
| Codec only | ~
|
|
57
|
-
| Genesis IDs | ~1.
|
|
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.
|
|
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 (~
|
|
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
|