@geoprotocol/grc-20 0.1.5 → 0.1.7

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/index.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  */
8
8
  export * from "./types/index.js";
9
9
  export * from "./builder/index.js";
10
+ export * from "./ops/index.js";
10
11
  export * from "./util/index.js";
11
12
  export { genesisId, languageId, languages, properties, types, relationTypes, } from "./genesis/index.js";
12
13
  export { encodeEdit, decodeEdit, type EncodeOptions, Writer, Reader, DecodeError, preloadCompression, isCompressionReady, encodeEditAuto, decodeEditAuto, type EncodeAutoOptions, encodeEditCompressed, decodeEditCompressed, isCompressed, compress, decompress, } from "./codec/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,KAAK,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,UAAU,EACV,UAAU,EACV,KAAK,aAAa,EAClB,MAAM,EACN,MAAM,EACN,WAAW,EAEX,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,UAAU,GACX,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,KAAK,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,UAAU,EACV,UAAU,EACV,KAAK,aAAa,EAClB,MAAM,EACN,MAAM,EACN,WAAW,EAEX,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,UAAU,GACX,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -9,6 +9,8 @@
9
9
  export * from "./types/index.js";
10
10
  // Builders
11
11
  export * from "./builder/index.js";
12
+ // Ops (functional API)
13
+ export * from "./ops/index.js";
12
14
  // Utilities
13
15
  export * from "./util/index.js";
14
16
  // Genesis (well-known IDs)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,WAAW;AACX,cAAc,oBAAoB,CAAC;AAEnC,YAAY;AACZ,cAAc,iBAAiB,CAAC;AAEhC,2BAA2B;AAC3B,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,KAAK,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,QAAQ;AACR,OAAO,EACL,UAAU,EACV,UAAU,EAEV,MAAM,EACN,MAAM,EACN,WAAW;AACX,iCAAiC;AACjC,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EAEd,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,UAAU,GACX,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,WAAW;AACX,cAAc,oBAAoB,CAAC;AAEnC,uBAAuB;AACvB,cAAc,gBAAgB,CAAC;AAE/B,YAAY;AACZ,cAAc,iBAAiB,CAAC;AAEhC,2BAA2B;AAC3B,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,KAAK,EACL,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,QAAQ;AACR,OAAO,EACL,UAAU,EACV,UAAU,EAEV,MAAM,EACN,MAAM,EACN,WAAW;AACX,iCAAiC;AACjC,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EAEd,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,UAAU,GACX,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,213 @@
1
+ import type { Id } from "../types/id.js";
2
+ import type { Edit } from "../types/edit.js";
3
+ import type { CreateEntity, CreateRelation, CreateValueRef, DeleteEntity, DeleteRelation, Op, RestoreEntity, RestoreRelation, UnsetRelationField, UnsetValue, UpdateEntity, UpdateRelation } from "../types/op.js";
4
+ import type { PropertyValue } from "../types/value.js";
5
+ /**
6
+ * Input for creating an Edit.
7
+ */
8
+ export interface CreateEditInput {
9
+ /** The edit ID. If omitted, a random ID is generated. */
10
+ id?: Id;
11
+ /** Human-readable name for the edit. */
12
+ name?: string;
13
+ /** Single author ID (convenience for single-author edits). */
14
+ author?: Id;
15
+ /** Multiple author IDs. Takes precedence over `author` if both provided. */
16
+ authors?: Id[];
17
+ /** Creation timestamp in microseconds since Unix epoch. */
18
+ createdAt?: bigint;
19
+ /** Operations to include in the edit. */
20
+ ops?: Op[];
21
+ }
22
+ /**
23
+ * Creates an Edit from the given input.
24
+ *
25
+ * This is the functional API equivalent to using {@link EditBuilder}.
26
+ *
27
+ * @param input - The edit configuration
28
+ * @returns A new Edit object
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const edit = createEdit({
33
+ * id: myEditId,
34
+ * name: "Add new entity",
35
+ * author: authorId,
36
+ * ops: [createEntity({ id: entityId, values: [...] })],
37
+ * });
38
+ * ```
39
+ */
40
+ export declare function createEdit(input: CreateEditInput): Edit;
41
+ /**
42
+ * Input for creating a CreateEntity operation.
43
+ */
44
+ export interface CreateEntityInput {
45
+ /** The entity ID. */
46
+ id: Id;
47
+ /** Property values to set on the entity. */
48
+ values?: PropertyValue[];
49
+ }
50
+ /**
51
+ * Creates a CreateEntity operation.
52
+ *
53
+ * If the entity does not exist, it will be created. If it already exists,
54
+ * this acts as an update: values are applied as set_properties (LWW).
55
+ *
56
+ * @param input - The entity configuration
57
+ * @returns A CreateEntity operation
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const op = createEntity({
62
+ * id: entityId,
63
+ * values: [
64
+ * { property: properties.name(), value: { type: "text", value: "Alice" } },
65
+ * ],
66
+ * });
67
+ * ```
68
+ */
69
+ export declare function createEntity(input: CreateEntityInput): CreateEntity;
70
+ /**
71
+ * Input for creating an UpdateEntity operation.
72
+ */
73
+ export interface UpdateEntityInput {
74
+ /** The entity ID to update. */
75
+ id: Id;
76
+ /** Property values to set (last-writer-wins). */
77
+ set?: PropertyValue[];
78
+ /** Property values to unset/clear. */
79
+ unset?: UnsetValue[];
80
+ }
81
+ /**
82
+ * Creates an UpdateEntity operation.
83
+ *
84
+ * Updates an existing entity by setting and/or unsetting property values.
85
+ * Set operations use last-writer-wins (LWW) semantics.
86
+ *
87
+ * @param input - The update configuration
88
+ * @returns An UpdateEntity operation
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * const op = updateEntity({
93
+ * id: entityId,
94
+ * set: [{ property: propId, value: { type: "text", value: "New value" } }],
95
+ * unset: [{ property: oldPropId, language: { type: "all" } }],
96
+ * });
97
+ * ```
98
+ */
99
+ export declare function updateEntity(input: UpdateEntityInput): UpdateEntity;
100
+ /**
101
+ * Creates a DeleteEntity operation.
102
+ *
103
+ * Transitions the entity to DELETED state. The entity can be restored
104
+ * using {@link restoreEntity}.
105
+ *
106
+ * @param id - The entity ID to delete
107
+ * @returns A DeleteEntity operation
108
+ */
109
+ export declare function deleteEntity(id: Id): DeleteEntity;
110
+ /**
111
+ * Creates a RestoreEntity operation.
112
+ *
113
+ * Transitions a deleted entity back to ALIVE state.
114
+ *
115
+ * @param id - The entity ID to restore
116
+ * @returns A RestoreEntity operation
117
+ */
118
+ export declare function restoreEntity(id: Id): RestoreEntity;
119
+ /**
120
+ * Input for creating a CreateRelation operation.
121
+ * Includes all fields from CreateRelation except the `type` discriminator.
122
+ */
123
+ export type CreateRelationInput = Omit<CreateRelation, "type">;
124
+ /**
125
+ * Creates a CreateRelation operation.
126
+ *
127
+ * Creates a directed relation between two entities with a specified type.
128
+ * Relations can optionally have a position for ordering and reference
129
+ * entities in other spaces/versions.
130
+ *
131
+ * @param input - The relation configuration
132
+ * @returns A CreateRelation operation
133
+ *
134
+ * @example
135
+ * ```ts
136
+ * const op = createRelation({
137
+ * id: relationId,
138
+ * relationType: relationTypes.types(),
139
+ * from: entityA,
140
+ * to: entityB,
141
+ * });
142
+ * ```
143
+ */
144
+ export declare function createRelation(input: CreateRelationInput): CreateRelation;
145
+ /**
146
+ * Input for creating an UpdateRelation operation.
147
+ */
148
+ export interface UpdateRelationInput extends Omit<UpdateRelation, "type" | "unset"> {
149
+ /** Fields to unset on the relation. */
150
+ unset?: UnsetRelationField[];
151
+ }
152
+ /**
153
+ * Creates an UpdateRelation operation.
154
+ *
155
+ * Updates an existing relation's position or cross-space references.
156
+ * Can also unset optional fields like position or space/version references.
157
+ *
158
+ * @param input - The update configuration
159
+ * @returns An UpdateRelation operation
160
+ *
161
+ * @example
162
+ * ```ts
163
+ * const op = updateRelation({
164
+ * id: relationId,
165
+ * position: "abc",
166
+ * });
167
+ * ```
168
+ */
169
+ export declare function updateRelation(input: UpdateRelationInput): UpdateRelation;
170
+ /**
171
+ * Creates a DeleteRelation operation.
172
+ *
173
+ * Transitions the relation to DELETED state. The relation can be restored
174
+ * using {@link restoreRelation}.
175
+ *
176
+ * @param id - The relation ID to delete
177
+ * @returns A DeleteRelation operation
178
+ */
179
+ export declare function deleteRelation(id: Id): DeleteRelation;
180
+ /**
181
+ * Creates a RestoreRelation operation.
182
+ *
183
+ * Transitions a deleted relation back to ALIVE state.
184
+ *
185
+ * @param id - The relation ID to restore
186
+ * @returns A RestoreRelation operation
187
+ */
188
+ export declare function restoreRelation(id: Id): RestoreRelation;
189
+ /**
190
+ * Input for creating a CreateValueRef operation.
191
+ * Includes all fields from CreateValueRef except the `type` discriminator.
192
+ */
193
+ export type CreateValueRefInput = Omit<CreateValueRef, "type">;
194
+ /**
195
+ * Creates a CreateValueRef operation.
196
+ *
197
+ * Creates a reference to a value on another entity, optionally in another space.
198
+ * This allows sharing values across entities without duplication.
199
+ *
200
+ * @param input - The value reference configuration
201
+ * @returns A CreateValueRef operation
202
+ *
203
+ * @example
204
+ * ```ts
205
+ * const op = createValueRef({
206
+ * id: refId,
207
+ * entity: sourceEntityId,
208
+ * property: properties.name(),
209
+ * });
210
+ * ```
211
+ */
212
+ export declare function createValueRef(input: CreateValueRefInput): CreateValueRef;
213
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ops/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,EAAE,EACF,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,cAAc,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC;IACZ,4EAA4E;IAC5E,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAUvD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qBAAqB;IACrB,EAAE,EAAE,EAAE,CAAC;IACP,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAMnE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,EAAE,EAAE,EAAE,CAAC;IACP,iDAAiD;IACjD,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC;IACtB,sCAAsC;IACtC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAOnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,CAEjD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,aAAa,CAEnD;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAKzE;AAED;;GAEG;AACH,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,uCAAuC;IACvC,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAOzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,cAAc,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,eAAe,CAEvD;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAKzE"}
@@ -0,0 +1,203 @@
1
+ import { randomId } from "../util/id.js";
2
+ /**
3
+ * Creates an Edit from the given input.
4
+ *
5
+ * This is the functional API equivalent to using {@link EditBuilder}.
6
+ *
7
+ * @param input - The edit configuration
8
+ * @returns A new Edit object
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const edit = createEdit({
13
+ * id: myEditId,
14
+ * name: "Add new entity",
15
+ * author: authorId,
16
+ * ops: [createEntity({ id: entityId, values: [...] })],
17
+ * });
18
+ * ```
19
+ */
20
+ export function createEdit(input) {
21
+ const authors = input.authors ? [...input.authors] : input.author ? [input.author] : [];
22
+ return {
23
+ id: input.id ?? randomId(),
24
+ name: input.name ?? "",
25
+ authors,
26
+ createdAt: input.createdAt ?? 0n,
27
+ ops: input.ops ? [...input.ops] : [],
28
+ };
29
+ }
30
+ /**
31
+ * Creates a CreateEntity operation.
32
+ *
33
+ * If the entity does not exist, it will be created. If it already exists,
34
+ * this acts as an update: values are applied as set_properties (LWW).
35
+ *
36
+ * @param input - The entity configuration
37
+ * @returns A CreateEntity operation
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const op = createEntity({
42
+ * id: entityId,
43
+ * values: [
44
+ * { property: properties.name(), value: { type: "text", value: "Alice" } },
45
+ * ],
46
+ * });
47
+ * ```
48
+ */
49
+ export function createEntity(input) {
50
+ return {
51
+ type: "createEntity",
52
+ id: input.id,
53
+ values: input.values ?? [],
54
+ };
55
+ }
56
+ /**
57
+ * Creates an UpdateEntity operation.
58
+ *
59
+ * Updates an existing entity by setting and/or unsetting property values.
60
+ * Set operations use last-writer-wins (LWW) semantics.
61
+ *
62
+ * @param input - The update configuration
63
+ * @returns An UpdateEntity operation
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const op = updateEntity({
68
+ * id: entityId,
69
+ * set: [{ property: propId, value: { type: "text", value: "New value" } }],
70
+ * unset: [{ property: oldPropId, language: { type: "all" } }],
71
+ * });
72
+ * ```
73
+ */
74
+ export function updateEntity(input) {
75
+ return {
76
+ type: "updateEntity",
77
+ id: input.id,
78
+ set: input.set ?? [],
79
+ unset: input.unset ?? [],
80
+ };
81
+ }
82
+ /**
83
+ * Creates a DeleteEntity operation.
84
+ *
85
+ * Transitions the entity to DELETED state. The entity can be restored
86
+ * using {@link restoreEntity}.
87
+ *
88
+ * @param id - The entity ID to delete
89
+ * @returns A DeleteEntity operation
90
+ */
91
+ export function deleteEntity(id) {
92
+ return { type: "deleteEntity", id };
93
+ }
94
+ /**
95
+ * Creates a RestoreEntity operation.
96
+ *
97
+ * Transitions a deleted entity back to ALIVE state.
98
+ *
99
+ * @param id - The entity ID to restore
100
+ * @returns A RestoreEntity operation
101
+ */
102
+ export function restoreEntity(id) {
103
+ return { type: "restoreEntity", id };
104
+ }
105
+ /**
106
+ * Creates a CreateRelation operation.
107
+ *
108
+ * Creates a directed relation between two entities with a specified type.
109
+ * Relations can optionally have a position for ordering and reference
110
+ * entities in other spaces/versions.
111
+ *
112
+ * @param input - The relation configuration
113
+ * @returns A CreateRelation operation
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * const op = createRelation({
118
+ * id: relationId,
119
+ * relationType: relationTypes.types(),
120
+ * from: entityA,
121
+ * to: entityB,
122
+ * });
123
+ * ```
124
+ */
125
+ export function createRelation(input) {
126
+ return {
127
+ type: "createRelation",
128
+ ...input,
129
+ };
130
+ }
131
+ /**
132
+ * Creates an UpdateRelation operation.
133
+ *
134
+ * Updates an existing relation's position or cross-space references.
135
+ * Can also unset optional fields like position or space/version references.
136
+ *
137
+ * @param input - The update configuration
138
+ * @returns An UpdateRelation operation
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const op = updateRelation({
143
+ * id: relationId,
144
+ * position: "abc",
145
+ * });
146
+ * ```
147
+ */
148
+ export function updateRelation(input) {
149
+ const { unset, ...rest } = input;
150
+ return {
151
+ type: "updateRelation",
152
+ unset: unset ?? [],
153
+ ...rest,
154
+ };
155
+ }
156
+ /**
157
+ * Creates a DeleteRelation operation.
158
+ *
159
+ * Transitions the relation to DELETED state. The relation can be restored
160
+ * using {@link restoreRelation}.
161
+ *
162
+ * @param id - The relation ID to delete
163
+ * @returns A DeleteRelation operation
164
+ */
165
+ export function deleteRelation(id) {
166
+ return { type: "deleteRelation", id };
167
+ }
168
+ /**
169
+ * Creates a RestoreRelation operation.
170
+ *
171
+ * Transitions a deleted relation back to ALIVE state.
172
+ *
173
+ * @param id - The relation ID to restore
174
+ * @returns A RestoreRelation operation
175
+ */
176
+ export function restoreRelation(id) {
177
+ return { type: "restoreRelation", id };
178
+ }
179
+ /**
180
+ * Creates a CreateValueRef operation.
181
+ *
182
+ * Creates a reference to a value on another entity, optionally in another space.
183
+ * This allows sharing values across entities without duplication.
184
+ *
185
+ * @param input - The value reference configuration
186
+ * @returns A CreateValueRef operation
187
+ *
188
+ * @example
189
+ * ```ts
190
+ * const op = createValueRef({
191
+ * id: refId,
192
+ * entity: sourceEntityId,
193
+ * property: properties.name(),
194
+ * });
195
+ * ```
196
+ */
197
+ export function createValueRef(input) {
198
+ return {
199
+ type: "createValueRef",
200
+ ...input,
201
+ };
202
+ }
203
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ops/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoBzC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExF,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,QAAQ,EAAE;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB,OAAO;QACP,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;QAChC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;KACrC,CAAC;AACJ,CAAC;AAYD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;KAC3B,CAAC;AACJ,CAAC;AAcD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,EAAM;IACjC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAAM;IAClC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;AACvC,CAAC;AAQD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,EAAM;IACnC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,EAAM;IACpC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;AACzC,CAAC;AAQD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,GAAG,KAAK;KACT,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import { EditBuilder, encodeEdit, decodeEdit, encodeEditCompressed, decodeEditCompressed, encodeEditAuto, decodeEditAuto, isCompressed, preloadCompression, isCompressionReady, parseId, formatId, randomId, derivedUuid, derivedUuidFromString, uniqueRelationId, relationEntityId, properties, types, relationTypes, languages, idsEqual, } from "../index.js";
2
+ import { EditBuilder, createEdit, createEntity, createRelation, updateEntity, deleteEntity, restoreEntity, updateRelation, deleteRelation, restoreRelation, createValueRef, encodeEdit, decodeEdit, encodeEditCompressed, decodeEditCompressed, encodeEditAuto, decodeEditAuto, isCompressed, preloadCompression, isCompressionReady, parseId, formatId, randomId, derivedUuid, derivedUuidFromString, uniqueRelationId, relationEntityId, properties, types, relationTypes, languages, idsEqual, } from "../index.js";
3
3
  describe("ID utilities", () => {
4
4
  it("formatId produces 32 hex chars", () => {
5
5
  const id = randomId();
@@ -97,6 +97,7 @@ describe("EditBuilder", () => {
97
97
  expect(idsEqual(edit.id, editId)).toBe(true);
98
98
  expect(edit.name).toBe("Test Edit");
99
99
  expect(edit.authors.length).toBe(1);
100
+ expect(idsEqual(edit.authors[0], authorId)).toBe(true);
100
101
  expect(edit.createdAt).toBe(1234567890n);
101
102
  expect(edit.ops.length).toBe(1);
102
103
  expect(edit.ops[0].type).toBe("createEntity");
@@ -140,6 +141,325 @@ describe("EditBuilder", () => {
140
141
  }
141
142
  });
142
143
  });
144
+ describe("Ops helpers", () => {
145
+ it("creates edits from op factories", () => {
146
+ const editId = randomId();
147
+ const entityId = randomId();
148
+ const authorId = randomId();
149
+ const propId = randomId();
150
+ const relationId = randomId();
151
+ const from = randomId();
152
+ const to = randomId();
153
+ const ops = [
154
+ createEntity({
155
+ id: entityId,
156
+ values: [{ property: propId, value: { type: "bool", value: true } }],
157
+ }),
158
+ createRelation({
159
+ id: relationId,
160
+ relationType: relationTypes.types(),
161
+ from,
162
+ to,
163
+ }),
164
+ updateEntity({
165
+ id: entityId,
166
+ set: [
167
+ {
168
+ property: properties.description(),
169
+ value: { type: "text", value: "Updated" },
170
+ },
171
+ ],
172
+ }),
173
+ ];
174
+ const edit = createEdit({
175
+ id: editId,
176
+ name: "Ops Edit",
177
+ author: authorId,
178
+ createdAt: 10n,
179
+ ops,
180
+ });
181
+ expect(idsEqual(edit.id, editId)).toBe(true);
182
+ expect(edit.name).toBe("Ops Edit");
183
+ expect(edit.authors.length).toBe(1);
184
+ expect(idsEqual(edit.authors[0], authorId)).toBe(true);
185
+ expect(edit.createdAt).toBe(10n);
186
+ expect(edit.ops.length).toBe(3);
187
+ expect(edit.ops[0].type).toBe("createEntity");
188
+ });
189
+ it("creates deleteEntity operations", () => {
190
+ const entityId = randomId();
191
+ const op = deleteEntity(entityId);
192
+ expect(op.type).toBe("deleteEntity");
193
+ expect(idsEqual(op.id, entityId)).toBe(true);
194
+ });
195
+ it("creates restoreEntity operations", () => {
196
+ const entityId = randomId();
197
+ const op = restoreEntity(entityId);
198
+ expect(op.type).toBe("restoreEntity");
199
+ expect(idsEqual(op.id, entityId)).toBe(true);
200
+ });
201
+ it("creates updateRelation operations", () => {
202
+ const relationId = randomId();
203
+ const op = updateRelation({
204
+ id: relationId,
205
+ position: "newpos",
206
+ });
207
+ expect(op.type).toBe("updateRelation");
208
+ expect(idsEqual(op.id, relationId)).toBe(true);
209
+ expect(op.position).toBe("newpos");
210
+ expect(op.unset).toEqual([]);
211
+ });
212
+ it("creates deleteRelation operations", () => {
213
+ const relationId = randomId();
214
+ const op = deleteRelation(relationId);
215
+ expect(op.type).toBe("deleteRelation");
216
+ expect(idsEqual(op.id, relationId)).toBe(true);
217
+ });
218
+ it("creates restoreRelation operations", () => {
219
+ const relationId = randomId();
220
+ const op = restoreRelation(relationId);
221
+ expect(op.type).toBe("restoreRelation");
222
+ expect(idsEqual(op.id, relationId)).toBe(true);
223
+ });
224
+ it("creates createValueRef operations", () => {
225
+ const refId = randomId();
226
+ const entityId = randomId();
227
+ const propId = randomId();
228
+ const langId = randomId();
229
+ const spaceId = randomId();
230
+ const op = createValueRef({
231
+ id: refId,
232
+ entity: entityId,
233
+ property: propId,
234
+ language: langId,
235
+ space: spaceId,
236
+ });
237
+ expect(op.type).toBe("createValueRef");
238
+ expect(idsEqual(op.id, refId)).toBe(true);
239
+ expect(idsEqual(op.entity, entityId)).toBe(true);
240
+ expect(idsEqual(op.property, propId)).toBe(true);
241
+ expect(idsEqual(op.language, langId)).toBe(true);
242
+ expect(idsEqual(op.space, spaceId)).toBe(true);
243
+ });
244
+ it("creates createValueRef without optional fields", () => {
245
+ const refId = randomId();
246
+ const entityId = randomId();
247
+ const propId = randomId();
248
+ const op = createValueRef({
249
+ id: refId,
250
+ entity: entityId,
251
+ property: propId,
252
+ });
253
+ expect(op.type).toBe("createValueRef");
254
+ expect(idsEqual(op.id, refId)).toBe(true);
255
+ expect(op.language).toBeUndefined();
256
+ expect(op.space).toBeUndefined();
257
+ });
258
+ });
259
+ describe("Builder vs Ops API Equivalence", () => {
260
+ it("produces identical encoding for createEntity", () => {
261
+ const editId = parseId("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
262
+ const entityId = parseId("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
263
+ // Using EditBuilder
264
+ const builderEdit = new EditBuilder(editId)
265
+ .setCreatedAt(1000n)
266
+ .createEntity(entityId, (e) => e.text(properties.name(), "Test", undefined))
267
+ .build();
268
+ // Using Ops API
269
+ const opsEdit = createEdit({
270
+ id: editId,
271
+ createdAt: 1000n,
272
+ ops: [
273
+ createEntity({
274
+ id: entityId,
275
+ values: [
276
+ { property: properties.name(), value: { type: "text", value: "Test" } },
277
+ ],
278
+ }),
279
+ ],
280
+ });
281
+ const builderEncoded = encodeEdit(builderEdit, { canonical: true });
282
+ const opsEncoded = encodeEdit(opsEdit, { canonical: true });
283
+ expect(builderEncoded.length).toBe(opsEncoded.length);
284
+ for (let i = 0; i < builderEncoded.length; i++) {
285
+ expect(builderEncoded[i]).toBe(opsEncoded[i]);
286
+ }
287
+ });
288
+ it("produces identical encoding for updateEntity", () => {
289
+ const editId = parseId("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
290
+ const entityId = parseId("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
291
+ const propId = parseId("cccccccccccccccccccccccccccccccc");
292
+ // Using EditBuilder
293
+ const builderEdit = new EditBuilder(editId)
294
+ .setCreatedAt(1000n)
295
+ .updateEntity(entityId, (u) => u.setText(propId, "Updated", undefined)
296
+ .unsetAll(properties.description()))
297
+ .build();
298
+ // Using Ops API
299
+ const opsEdit = createEdit({
300
+ id: editId,
301
+ createdAt: 1000n,
302
+ ops: [
303
+ updateEntity({
304
+ id: entityId,
305
+ set: [{ property: propId, value: { type: "text", value: "Updated" } }],
306
+ unset: [{ property: properties.description(), language: { type: "all" } }],
307
+ }),
308
+ ],
309
+ });
310
+ const builderEncoded = encodeEdit(builderEdit, { canonical: true });
311
+ const opsEncoded = encodeEdit(opsEdit, { canonical: true });
312
+ expect(builderEncoded.length).toBe(opsEncoded.length);
313
+ for (let i = 0; i < builderEncoded.length; i++) {
314
+ expect(builderEncoded[i]).toBe(opsEncoded[i]);
315
+ }
316
+ });
317
+ it("produces identical encoding for createRelation", () => {
318
+ const editId = parseId("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
319
+ const relationId = parseId("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
320
+ const from = parseId("cccccccccccccccccccccccccccccccc");
321
+ const to = parseId("dddddddddddddddddddddddddddddddd");
322
+ // Using EditBuilder
323
+ const builderEdit = new EditBuilder(editId)
324
+ .setCreatedAt(1000n)
325
+ .createRelationSimple(relationId, from, to, relationTypes.types())
326
+ .build();
327
+ // Using Ops API
328
+ const opsEdit = createEdit({
329
+ id: editId,
330
+ createdAt: 1000n,
331
+ ops: [
332
+ createRelation({
333
+ id: relationId,
334
+ relationType: relationTypes.types(),
335
+ from,
336
+ to,
337
+ }),
338
+ ],
339
+ });
340
+ const builderEncoded = encodeEdit(builderEdit, { canonical: true });
341
+ const opsEncoded = encodeEdit(opsEdit, { canonical: true });
342
+ expect(builderEncoded.length).toBe(opsEncoded.length);
343
+ for (let i = 0; i < builderEncoded.length; i++) {
344
+ expect(builderEncoded[i]).toBe(opsEncoded[i]);
345
+ }
346
+ });
347
+ it("produces identical encoding for delete/restore operations", () => {
348
+ const editId = parseId("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
349
+ const entityId = parseId("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
350
+ const relationId = parseId("cccccccccccccccccccccccccccccccc");
351
+ // Using EditBuilder
352
+ const builderEdit = new EditBuilder(editId)
353
+ .setCreatedAt(1000n)
354
+ .deleteEntity(entityId)
355
+ .restoreEntity(entityId)
356
+ .deleteRelation(relationId)
357
+ .restoreRelation(relationId)
358
+ .build();
359
+ // Using Ops API
360
+ const opsEdit = createEdit({
361
+ id: editId,
362
+ createdAt: 1000n,
363
+ ops: [
364
+ deleteEntity(entityId),
365
+ restoreEntity(entityId),
366
+ deleteRelation(relationId),
367
+ restoreRelation(relationId),
368
+ ],
369
+ });
370
+ const builderEncoded = encodeEdit(builderEdit, { canonical: true });
371
+ const opsEncoded = encodeEdit(opsEdit, { canonical: true });
372
+ expect(builderEncoded.length).toBe(opsEncoded.length);
373
+ for (let i = 0; i < builderEncoded.length; i++) {
374
+ expect(builderEncoded[i]).toBe(opsEncoded[i]);
375
+ }
376
+ });
377
+ it("produces identical encoding for complex multi-op edits", () => {
378
+ const editId = parseId("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
379
+ const authorId = parseId("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
380
+ const entity1 = parseId("11111111111111111111111111111111");
381
+ const entity2 = parseId("22222222222222222222222222222222");
382
+ const relationId = parseId("33333333333333333333333333333333");
383
+ const propId = parseId("44444444444444444444444444444444");
384
+ // Using EditBuilder
385
+ const builderEdit = new EditBuilder(editId)
386
+ .setName("Complex Edit")
387
+ .addAuthor(authorId)
388
+ .setCreatedAt(1000n)
389
+ .createEntity(entity1, (e) => e.text(properties.name(), "Entity One", undefined)
390
+ .bool(propId, true))
391
+ .createEntity(entity2, (e) => e.text(properties.name(), "Entity Two", undefined))
392
+ .createRelationSimple(relationId, entity1, entity2, relationTypes.types())
393
+ .updateEntity(entity1, (u) => u.setText(properties.description(), "Updated description", undefined))
394
+ .build();
395
+ // Using Ops API
396
+ const opsEdit = createEdit({
397
+ id: editId,
398
+ name: "Complex Edit",
399
+ author: authorId,
400
+ createdAt: 1000n,
401
+ ops: [
402
+ createEntity({
403
+ id: entity1,
404
+ values: [
405
+ { property: properties.name(), value: { type: "text", value: "Entity One" } },
406
+ { property: propId, value: { type: "bool", value: true } },
407
+ ],
408
+ }),
409
+ createEntity({
410
+ id: entity2,
411
+ values: [
412
+ { property: properties.name(), value: { type: "text", value: "Entity Two" } },
413
+ ],
414
+ }),
415
+ createRelation({
416
+ id: relationId,
417
+ relationType: relationTypes.types(),
418
+ from: entity1,
419
+ to: entity2,
420
+ }),
421
+ updateEntity({
422
+ id: entity1,
423
+ set: [
424
+ { property: properties.description(), value: { type: "text", value: "Updated description" } },
425
+ ],
426
+ }),
427
+ ],
428
+ });
429
+ const builderEncoded = encodeEdit(builderEdit, { canonical: true });
430
+ const opsEncoded = encodeEdit(opsEdit, { canonical: true });
431
+ expect(builderEncoded.length).toBe(opsEncoded.length);
432
+ for (let i = 0; i < builderEncoded.length; i++) {
433
+ expect(builderEncoded[i]).toBe(opsEncoded[i]);
434
+ }
435
+ });
436
+ it("produces identical encoding for updateRelation", () => {
437
+ const editId = parseId("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
438
+ const relationId = parseId("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
439
+ // Using EditBuilder
440
+ const builderEdit = new EditBuilder(editId)
441
+ .setCreatedAt(1000n)
442
+ .updateRelation(relationId, (u) => u.setPosition("abc"))
443
+ .build();
444
+ // Using Ops API
445
+ const opsEdit = createEdit({
446
+ id: editId,
447
+ createdAt: 1000n,
448
+ ops: [
449
+ updateRelation({
450
+ id: relationId,
451
+ position: "abc",
452
+ }),
453
+ ],
454
+ });
455
+ const builderEncoded = encodeEdit(builderEdit, { canonical: true });
456
+ const opsEncoded = encodeEdit(opsEdit, { canonical: true });
457
+ expect(builderEncoded.length).toBe(opsEncoded.length);
458
+ for (let i = 0; i < builderEncoded.length; i++) {
459
+ expect(builderEncoded[i]).toBe(opsEncoded[i]);
460
+ }
461
+ });
462
+ });
143
463
  describe("Codec", () => {
144
464
  it("encodes and decodes a simple edit", () => {
145
465
  const editId = randomId();
@@ -1 +1 @@
1
- {"version":3,"file":"basic.test.js","sourceRoot":"","sources":["../../src/test/basic.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic.test.js","sourceRoot":"","sources":["../../src/test/basic.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "name": "@geoprotocol/grc-20",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "GRC-20 TypeScript library for binary property graph encoding/decoding",
5
+ "private": false,
6
+ "publishConfig": { "access": "public" },
5
7
  "type": "module",
6
8
  "main": "./dist/index.js",
7
9
  "types": "./dist/index.d.ts",
package/readme.md CHANGED
@@ -100,6 +100,7 @@ import {
100
100
  EntityBuilder, // Build entity values
101
101
  UpdateEntityBuilder, // Build update operations
102
102
  RelationBuilder, // Build relation operations
103
+ UpdateRelationBuilder,// Build relation update operations
103
104
  } from "@geoprotocol/grc-20";
104
105
  ```
105
106
 
@@ -114,15 +115,19 @@ const edit = new EditBuilder(editId)
114
115
  .text(propId, "value", languageId)
115
116
  .int64(propId, 42n, unitId)
116
117
  .float64(propId, 3.14, undefined)
118
+ .decimal(propId, { exponent: -2, mantissa: 1234n }, undefined)
117
119
  .bool(propId, true)
118
120
  .bytes(propId, new Uint8Array([1, 2, 3]))
119
121
  .point(propId, 40.7128, -74.006)
120
122
  .date(propId, "2024-01-15")
123
+ .time(propId, "10:30:00")
121
124
  .datetime(propId, "2024-01-15T10:30:00Z")
122
125
  )
123
126
  .updateEntity(entityId, u => u
124
127
  .setText(propId, "new value", undefined)
125
- .unsetAll(propId)
128
+ .setInt64(propId, 100n, undefined)
129
+ .unsetText(propId, languageId) // Unset specific language
130
+ .unsetAll(propId) // Unset all values for property
126
131
  )
127
132
  .deleteEntity(entityId)
128
133
  .restoreEntity(entityId)
@@ -133,9 +138,54 @@ const edit = new EditBuilder(editId)
133
138
  .relationType(relationTypeId)
134
139
  )
135
140
  .deleteRelation(relationId)
141
+ .restoreRelation(relationId)
142
+ .createValueRef(valueRefId, entityId, propId, {
143
+ type: "text",
144
+ value: "Referenceable value"
145
+ })
136
146
  .build();
137
147
  ```
138
148
 
149
+ ### Ops (Functional API)
150
+
151
+ `createEdit` defaults `id` to `randomId()` and `createdAt` to `0n` when omitted.
152
+
153
+ ```typescript
154
+ import {
155
+ createEdit,
156
+ createEntity,
157
+ createRelation,
158
+ randomId,
159
+ properties,
160
+ relationTypes,
161
+ } from "@geoprotocol/grc-20";
162
+
163
+ const entityId = randomId();
164
+ const authorId = randomId();
165
+
166
+ const ops = [
167
+ createEntity({
168
+ id: entityId,
169
+ values: [
170
+ { property: properties.name(), value: { type: "text", value: "Alice" } },
171
+ { property: properties.description(), value: { type: "text", value: "A person" } },
172
+ ],
173
+ }),
174
+ createRelation({
175
+ id: randomId(),
176
+ relationType: relationTypes.types(),
177
+ from: entityId,
178
+ to: randomId(),
179
+ }),
180
+ ];
181
+
182
+ const edit = createEdit({
183
+ name: "Create Alice",
184
+ author: authorId,
185
+ ops,
186
+ });
187
+ ```
188
+
139
189
  ### Codec
140
190
 
141
191
  ```typescript
@@ -204,18 +254,57 @@ If using native ES modules without a bundler, add an import map for the WASM dep
204
254
 
205
255
  ```typescript
206
256
  import {
207
- randomId, // Generate random UUIDv4
208
- parseId, // Parse hex string to Id
209
- formatId, // Format Id as hex string
210
- derivedUuid, // Derive UUIDv8 from bytes (SHA-256)
257
+ randomId, // Generate random UUIDv4
258
+ parseId, // Parse hex string to Id
259
+ formatId, // Format Id as hex string
260
+ derivedUuid, // Derive UUIDv8 from bytes (SHA-256, sync)
261
+ derivedUuidAsync, // Derive UUIDv8 from bytes (SHA-256, async)
211
262
  derivedUuidFromString,
212
- uniqueRelationId, // Derive relation ID from endpoints
213
- relationEntityId, // Derive entity ID from relation ID
214
- idsEqual, // Compare two Ids
215
- NIL_ID, // Zero UUID
263
+ uniqueRelationId, // Derive relation ID from endpoints
264
+ relationEntityId, // Derive entity ID from relation ID
265
+ idsEqual, // Compare two Ids for equality
266
+ compareIds, // Compare two Ids for ordering (-1, 0, 1)
267
+ NIL_ID, // Zero UUID
216
268
  } from "@geoprotocol/grc-20";
217
269
  ```
218
270
 
271
+ ### Validation
272
+
273
+ Validate values and positions before encoding:
274
+
275
+ ```typescript
276
+ import { validateValue, validatePosition } from "@geoprotocol/grc-20";
277
+
278
+ // Validate a value matches its declared type
279
+ const result = validateValue(value, DataType.Text);
280
+ if (!result.valid) {
281
+ console.error(result.error);
282
+ }
283
+
284
+ // Validate position string format
285
+ const posResult = validatePosition("a0");
286
+ if (!posResult.valid) {
287
+ console.error(posResult.error);
288
+ }
289
+ ```
290
+
291
+ ### Data Types Reference
292
+
293
+ | Type | TypeScript Representation |
294
+ |------|---------------------------|
295
+ | `BOOL` | `{ type: "bool", value: boolean }` |
296
+ | `INT64` | `{ type: "int64", value: bigint, unit?: Id }` |
297
+ | `FLOAT64` | `{ type: "float64", value: number, unit?: Id }` |
298
+ | `DECIMAL` | `{ type: "decimal", exponent: number, mantissa: bigint, unit?: Id }` |
299
+ | `TEXT` | `{ type: "text", value: string, language?: Id }` |
300
+ | `BYTES` | `{ type: "bytes", value: Uint8Array }` |
301
+ | `DATE` | `{ type: "date", value: string }` (ISO 8601) |
302
+ | `TIME` | `{ type: "time", value: string }` (HH:MM:SS) |
303
+ | `DATETIME` | `{ type: "datetime", value: string }` (ISO 8601) |
304
+ | `SCHEDULE` | `{ type: "schedule", value: string }` (cron-like) |
305
+ | `POINT` | `{ type: "point", lat: number, lon: number }` |
306
+ | `EMBEDDING` | `{ type: "embedding", subType: EmbeddingSubType.Float32 \| EmbeddingSubType.Int8 \| EmbeddingSubType.Binary, data: number[] }` |
307
+
219
308
  ### Genesis IDs
220
309
 
221
310
  Well-known IDs from the Genesis Space: