@graphprotocol/grc-20 0.21.0 → 0.21.2

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 (246) hide show
  1. package/dist/constants.d.ts.map +1 -1
  2. package/dist/constants.js +2 -3
  3. package/dist/constants.js.map +1 -1
  4. package/dist/convert-ids.d.ts +2 -0
  5. package/dist/convert-ids.d.ts.map +1 -0
  6. package/dist/convert-ids.js +42 -0
  7. package/dist/convert-ids.js.map +1 -0
  8. package/dist/index.d.ts +14 -14
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +14 -14
  11. package/dist/index.js.map +1 -1
  12. package/dist/protov2.d.ts +11 -0
  13. package/dist/protov2.d.ts.map +1 -0
  14. package/dist/protov2.js +11 -0
  15. package/dist/protov2.js.map +1 -0
  16. package/dist/src/core/blocks/image.d.ts +15 -0
  17. package/dist/src/core/blocks/image.d.ts.map +1 -0
  18. package/dist/src/core/blocks/image.js +15 -0
  19. package/dist/src/core/blocks/image.js.map +1 -0
  20. package/dist/src/core/idsv2/content.d.ts +59 -0
  21. package/dist/src/core/idsv2/content.d.ts.map +1 -0
  22. package/dist/src/core/idsv2/content.js +59 -0
  23. package/dist/src/core/idsv2/content.js.map +1 -0
  24. package/dist/src/core/idsv2/network.d.ts +5 -0
  25. package/dist/src/core/idsv2/network.d.ts.map +1 -0
  26. package/dist/src/core/idsv2/network.js +5 -0
  27. package/dist/src/core/idsv2/network.js.map +1 -0
  28. package/dist/src/core/idsv2/system.d.ts +222 -0
  29. package/dist/src/core/idsv2/system.d.ts.map +1 -0
  30. package/dist/src/core/idsv2/system.js +230 -0
  31. package/dist/src/core/idsv2/system.js.map +1 -0
  32. package/dist/src/core/image.d.ts +40 -0
  33. package/dist/src/core/image.d.ts.map +1 -0
  34. package/dist/src/core/image.js +76 -0
  35. package/dist/src/core/image.js.map +1 -0
  36. package/dist/src/core/image.test.d.ts +2 -0
  37. package/dist/src/core/image.test.d.ts.map +1 -0
  38. package/dist/src/core/image.test.js +52 -0
  39. package/dist/src/core/image.test.js.map +1 -0
  40. package/dist/src/core/position.d.ts +19 -0
  41. package/dist/src/core/position.d.ts.map +1 -1
  42. package/dist/src/core/position.js +31 -0
  43. package/dist/src/core/position.js.map +1 -1
  44. package/dist/src/core/position.test.d.ts +2 -0
  45. package/dist/src/core/position.test.d.ts.map +1 -0
  46. package/dist/src/core/position.test.js +126 -0
  47. package/dist/src/core/position.test.js.map +1 -0
  48. package/dist/src/core/relation.d.ts +88 -0
  49. package/dist/src/core/relation.d.ts.map +1 -0
  50. package/dist/src/core/relation.js +89 -0
  51. package/dist/src/core/relation.js.map +1 -0
  52. package/dist/src/core/relation.test.d.ts +2 -0
  53. package/dist/src/core/relation.test.d.ts.map +1 -0
  54. package/dist/src/core/relation.test.js +45 -0
  55. package/dist/src/core/relation.test.js.map +1 -0
  56. package/dist/src/core/triple.d.ts +50 -0
  57. package/dist/src/core/triple.d.ts.map +1 -0
  58. package/dist/src/core/triple.js +56 -0
  59. package/dist/src/core/triple.js.map +1 -0
  60. package/dist/src/core/triple.test.d.ts +2 -0
  61. package/dist/src/core/triple.test.d.ts.map +1 -0
  62. package/dist/src/core/triple.test.js +37 -0
  63. package/dist/src/core/triple.test.js.map +1 -0
  64. package/dist/src/graph/create-entity.js +1 -1
  65. package/dist/src/graph/create-entity.js.map +1 -1
  66. package/dist/src/graph/delete-entity.d.ts +14 -0
  67. package/dist/src/graph/delete-entity.d.ts.map +1 -0
  68. package/dist/src/graph/delete-entity.js +21 -0
  69. package/dist/src/graph/delete-entity.js.map +1 -0
  70. package/dist/src/graph/delete-entity.test.d.ts +2 -0
  71. package/dist/src/graph/delete-entity.test.d.ts.map +1 -0
  72. package/dist/src/graph/delete-entity.test.js +23 -0
  73. package/dist/src/graph/delete-entity.test.js.map +1 -0
  74. package/dist/src/graph/graph.test.d.ts +2 -0
  75. package/dist/src/graph/graph.test.d.ts.map +1 -0
  76. package/dist/src/graph/graph.test.js +46 -0
  77. package/dist/src/graph/graph.test.js.map +1 -0
  78. package/dist/src/graph/helpers/create-default-properties.d.ts +5 -0
  79. package/dist/src/graph/helpers/create-default-properties.d.ts.map +1 -0
  80. package/dist/src/graph/helpers/create-default-properties.js +44 -0
  81. package/dist/src/graph/helpers/create-default-properties.js.map +1 -0
  82. package/dist/src/graph/helpers/create-properties.d.ts +8 -0
  83. package/dist/src/graph/helpers/create-properties.d.ts.map +1 -0
  84. package/dist/src/graph/helpers/create-properties.js +53 -0
  85. package/dist/src/graph/helpers/create-properties.js.map +1 -0
  86. package/dist/src/graphv2/constants.d.ts +2 -0
  87. package/dist/src/graphv2/constants.d.ts.map +1 -0
  88. package/dist/src/graphv2/constants.js +2 -0
  89. package/dist/src/graphv2/constants.js.map +1 -0
  90. package/dist/src/graphv2/create-entity.d.ts +52 -0
  91. package/dist/src/graphv2/create-entity.d.ts.map +1 -0
  92. package/dist/src/graphv2/create-entity.js +140 -0
  93. package/dist/src/graphv2/create-entity.js.map +1 -0
  94. package/dist/src/graphv2/create-entity.test.d.ts +2 -0
  95. package/dist/src/graphv2/create-entity.test.d.ts.map +1 -0
  96. package/dist/src/graphv2/create-entity.test.js +158 -0
  97. package/dist/src/graphv2/create-entity.test.js.map +1 -0
  98. package/dist/src/graphv2/create-image.d.ts +28 -0
  99. package/dist/src/graphv2/create-image.d.ts.map +1 -0
  100. package/dist/src/graphv2/create-image.js +71 -0
  101. package/dist/src/graphv2/create-image.js.map +1 -0
  102. package/dist/src/graphv2/create-image.test.d.ts +2 -0
  103. package/dist/src/graphv2/create-image.test.d.ts.map +1 -0
  104. package/dist/src/graphv2/create-image.test.js +142 -0
  105. package/dist/src/graphv2/create-image.test.js.map +1 -0
  106. package/dist/src/graphv2/create-property.d.ts +22 -0
  107. package/dist/src/graphv2/create-property.d.ts.map +1 -0
  108. package/dist/src/graphv2/create-property.js +129 -0
  109. package/dist/src/graphv2/create-property.js.map +1 -0
  110. package/dist/src/graphv2/create-property.test.d.ts +2 -0
  111. package/dist/src/graphv2/create-property.test.d.ts.map +1 -0
  112. package/dist/src/graphv2/create-property.test.js +82 -0
  113. package/dist/src/graphv2/create-property.test.js.map +1 -0
  114. package/dist/src/graphv2/create-relation.d.ts +33 -0
  115. package/dist/src/graphv2/create-relation.d.ts.map +1 -0
  116. package/dist/src/graphv2/create-relation.js +66 -0
  117. package/dist/src/graphv2/create-relation.js.map +1 -0
  118. package/dist/src/graphv2/create-relation.test.d.ts +2 -0
  119. package/dist/src/graphv2/create-relation.test.d.ts.map +1 -0
  120. package/dist/src/graphv2/create-relation.test.js +208 -0
  121. package/dist/src/graphv2/create-relation.test.js.map +1 -0
  122. package/dist/src/graphv2/create-space.d.ts +13 -0
  123. package/dist/src/graphv2/create-space.d.ts.map +1 -0
  124. package/dist/src/graphv2/create-space.js +21 -0
  125. package/dist/src/graphv2/create-space.js.map +1 -0
  126. package/dist/src/graphv2/create-type.d.ts +22 -0
  127. package/dist/src/graphv2/create-type.d.ts.map +1 -0
  128. package/dist/src/graphv2/create-type.js +64 -0
  129. package/dist/src/graphv2/create-type.js.map +1 -0
  130. package/dist/src/graphv2/create-type.test.d.ts +2 -0
  131. package/dist/src/graphv2/create-type.test.d.ts.map +1 -0
  132. package/dist/src/graphv2/create-type.test.js +109 -0
  133. package/dist/src/graphv2/create-type.test.js.map +1 -0
  134. package/dist/src/graphv2/delete-entity.d.ts +14 -0
  135. package/dist/src/graphv2/delete-entity.d.ts.map +1 -0
  136. package/dist/src/graphv2/delete-entity.js +21 -0
  137. package/dist/src/graphv2/delete-entity.js.map +1 -0
  138. package/dist/src/graphv2/delete-entity.test.d.ts +2 -0
  139. package/dist/src/graphv2/delete-entity.test.d.ts.map +1 -0
  140. package/dist/src/graphv2/delete-entity.test.js +24 -0
  141. package/dist/src/graphv2/delete-entity.test.js.map +1 -0
  142. package/dist/src/graphv2/delete-relation.d.ts +14 -0
  143. package/dist/src/graphv2/delete-relation.d.ts.map +1 -0
  144. package/dist/src/graphv2/delete-relation.js +21 -0
  145. package/dist/src/graphv2/delete-relation.js.map +1 -0
  146. package/dist/src/graphv2/delete-relation.test.d.ts +2 -0
  147. package/dist/src/graphv2/delete-relation.test.d.ts.map +1 -0
  148. package/dist/src/graphv2/delete-relation.test.js +24 -0
  149. package/dist/src/graphv2/delete-relation.test.js.map +1 -0
  150. package/dist/src/graphv2/index.d.ts +12 -0
  151. package/dist/src/graphv2/index.d.ts.map +1 -0
  152. package/dist/src/graphv2/index.js +12 -0
  153. package/dist/src/graphv2/index.js.map +1 -0
  154. package/dist/src/graphv2/remove-entity-properties.d.ts +25 -0
  155. package/dist/src/graphv2/remove-entity-properties.d.ts.map +1 -0
  156. package/dist/src/graphv2/remove-entity-properties.js +24 -0
  157. package/dist/src/graphv2/remove-entity-properties.js.map +1 -0
  158. package/dist/src/graphv2/unset-entity-values.d.ts +21 -0
  159. package/dist/src/graphv2/unset-entity-values.d.ts.map +1 -0
  160. package/dist/src/graphv2/unset-entity-values.js +26 -0
  161. package/dist/src/graphv2/unset-entity-values.js.map +1 -0
  162. package/dist/src/graphv2/unset-entity-values.test.d.ts +2 -0
  163. package/dist/src/graphv2/unset-entity-values.test.d.ts.map +1 -0
  164. package/dist/src/graphv2/unset-entity-values.test.js +40 -0
  165. package/dist/src/graphv2/unset-entity-values.test.js.map +1 -0
  166. package/dist/src/graphv2/unset-relation-fields.d.ts +25 -0
  167. package/dist/src/graphv2/unset-relation-fields.d.ts.map +1 -0
  168. package/dist/src/graphv2/unset-relation-fields.js +34 -0
  169. package/dist/src/graphv2/unset-relation-fields.js.map +1 -0
  170. package/dist/src/graphv2/unset-relation-fields.test.d.ts +2 -0
  171. package/dist/src/graphv2/unset-relation-fields.test.d.ts.map +1 -0
  172. package/dist/src/graphv2/unset-relation-fields.test.js +64 -0
  173. package/dist/src/graphv2/unset-relation-fields.test.js.map +1 -0
  174. package/dist/src/graphv2/update-entity.d.ts +28 -0
  175. package/dist/src/graphv2/update-entity.d.ts.map +1 -0
  176. package/dist/src/graphv2/update-entity.js +73 -0
  177. package/dist/src/graphv2/update-entity.js.map +1 -0
  178. package/dist/src/graphv2/update-entity.test.d.ts +2 -0
  179. package/dist/src/graphv2/update-entity.test.d.ts.map +1 -0
  180. package/dist/src/graphv2/update-entity.test.js +116 -0
  181. package/dist/src/graphv2/update-entity.test.js.map +1 -0
  182. package/dist/src/graphv2/update-relation.d.ts +21 -0
  183. package/dist/src/graphv2/update-relation.d.ts.map +1 -0
  184. package/dist/src/graphv2/update-relation.js +37 -0
  185. package/dist/src/graphv2/update-relation.js.map +1 -0
  186. package/dist/src/idv2.d.ts +27 -0
  187. package/dist/src/idv2.d.ts.map +1 -0
  188. package/dist/src/idv2.js +88 -0
  189. package/dist/src/idv2.js.map +1 -0
  190. package/dist/src/idv2.test.d.ts +2 -0
  191. package/dist/src/idv2.test.d.ts.map +1 -0
  192. package/dist/src/idv2.test.js +26 -0
  193. package/dist/src/idv2.test.js.map +1 -0
  194. package/dist/src/image.d.ts +8 -0
  195. package/dist/src/image.d.ts.map +1 -0
  196. package/dist/src/image.js +8 -0
  197. package/dist/src/image.js.map +1 -0
  198. package/dist/src/ipfsv2.d.ts +96 -0
  199. package/dist/src/ipfsv2.d.ts.map +1 -0
  200. package/dist/src/ipfsv2.js +163 -0
  201. package/dist/src/ipfsv2.js.map +1 -0
  202. package/dist/src/ipfsv2.test.d.ts +2 -0
  203. package/dist/src/ipfsv2.test.d.ts.map +1 -0
  204. package/dist/src/ipfsv2.test.js +22 -0
  205. package/dist/src/ipfsv2.test.js.map +1 -0
  206. package/dist/src/proto/editv2.d.ts +11 -0
  207. package/dist/src/proto/editv2.d.ts.map +1 -0
  208. package/dist/src/proto/editv2.js +81 -0
  209. package/dist/src/proto/editv2.js.map +1 -0
  210. package/dist/src/proto/editv2.test.d.ts +2 -0
  211. package/dist/src/proto/editv2.test.d.ts.map +1 -0
  212. package/dist/src/proto/editv2.test.js +211 -0
  213. package/dist/src/proto/editv2.test.js.map +1 -0
  214. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts +410 -0
  215. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts.map +1 -0
  216. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js +536 -0
  217. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js.map +1 -0
  218. package/dist/src/relation.d.ts +7 -0
  219. package/dist/src/relation.d.ts.map +1 -0
  220. package/dist/src/relation.js +7 -0
  221. package/dist/src/relation.js.map +1 -0
  222. package/dist/src/smart-wallet-2.test-invalid.d.ts +2 -0
  223. package/dist/src/smart-wallet-2.test-invalid.d.ts.map +1 -0
  224. package/dist/src/smart-wallet-2.test-invalid.js +49 -0
  225. package/dist/src/smart-wallet-2.test-invalid.js.map +1 -0
  226. package/dist/src/smart-wallet-2.test.d.ts +2 -0
  227. package/dist/src/smart-wallet-2.test.d.ts.map +1 -0
  228. package/dist/src/smart-wallet-2.test.js +49 -0
  229. package/dist/src/smart-wallet-2.test.js.map +1 -0
  230. package/dist/src/system-ids-v2.d.ts +7 -0
  231. package/dist/src/system-ids-v2.d.ts.map +1 -0
  232. package/dist/src/system-ids-v2.js +7 -0
  233. package/dist/src/system-ids-v2.js.map +1 -0
  234. package/dist/src/triple.d.ts +7 -0
  235. package/dist/src/triple.d.ts.map +1 -0
  236. package/dist/src/triple.js +7 -0
  237. package/dist/src/triple.js.map +1 -0
  238. package/dist/src/types-backup.d.ts +134 -0
  239. package/dist/src/types-backup.d.ts.map +1 -0
  240. package/dist/src/types-backup.js +13 -0
  241. package/dist/src/types-backup.js.map +1 -0
  242. package/dist/src/typesv2.d.ts +173 -0
  243. package/dist/src/typesv2.d.ts.map +1 -0
  244. package/dist/src/typesv2.js +8 -0
  245. package/dist/src/typesv2.js.map +1 -0
  246. package/package.json +1 -2
@@ -0,0 +1,52 @@
1
+ import { expect, it } from 'vitest';
2
+ import { INITIAL_RELATION_INDEX_VALUE } from '~/constants.js';
3
+ import { SystemIds } from '../system-ids.js';
4
+ import { make } from './image.js';
5
+ it('should generate ops for an image entity', () => {
6
+ const { id, ops } = make({ cid: 'https://example.com/image.png' });
7
+ // We check each field individually since we don't know the id of the relation
8
+ expect(typeof id).toBe('string');
9
+ expect(ops.length).toBe(2);
10
+ if (ops[0]?.type === 'CREATE_RELATION') {
11
+ expect(ops[0].relation.type).toBe(SystemIds.TYPES_PROPERTY);
12
+ expect(ops[0].relation.fromEntity).toBe(id);
13
+ expect(ops[0].relation.toEntity).toBe(SystemIds.IMAGE_TYPE);
14
+ expect(ops[0].relation.index).toBe(INITIAL_RELATION_INDEX_VALUE);
15
+ }
16
+ if (ops[1]?.type === 'SET_TRIPLE') {
17
+ expect(ops[1].triple.attribute).toBe(SystemIds.IMAGE_URL_PROPERTY);
18
+ expect(ops[1].triple.entity).toBe(id);
19
+ expect(ops[1].triple.value.type).toBe('URL');
20
+ expect(ops[1].triple.value.value).toBe('https://example.com/image.png');
21
+ }
22
+ });
23
+ it('should generate ops for an image entity with dimensions', () => {
24
+ const { id, ops } = make({ cid: 'https://example.com/image.png', dimensions: { width: 200, height: 100 } });
25
+ expect(typeof id).toBe('string');
26
+ expect(ops.length).toBe(4);
27
+ if (ops[0]?.type === 'CREATE_RELATION') {
28
+ expect(ops[0].relation.type).toBe(SystemIds.TYPES_PROPERTY);
29
+ expect(ops[0].relation.fromEntity).toBe(id);
30
+ expect(ops[0].relation.toEntity).toBe(SystemIds.IMAGE_TYPE);
31
+ expect(ops[0].relation.index).toBe(INITIAL_RELATION_INDEX_VALUE);
32
+ }
33
+ if (ops[1]?.type === 'SET_TRIPLE') {
34
+ expect(ops[1].triple.attribute).toBe(SystemIds.IMAGE_URL_PROPERTY);
35
+ expect(ops[1].triple.entity).toBe(id);
36
+ expect(ops[1].triple.value.type).toBe('URL');
37
+ expect(ops[1].triple.value.value).toBe('https://example.com/image.png');
38
+ }
39
+ if (ops[2]?.type === 'SET_TRIPLE') {
40
+ expect(ops[2].triple.attribute).toBe(SystemIds.IMAGE_HEIGHT_PROPERTY);
41
+ expect(ops[2].triple.entity).toBe(id);
42
+ expect(ops[2].triple.value.type).toBe('NUMBER');
43
+ expect(ops[2].triple.value.value).toBe('100');
44
+ }
45
+ if (ops[3]?.type === 'SET_TRIPLE') {
46
+ expect(ops[3].triple.attribute).toBe(SystemIds.IMAGE_WIDTH_PROPERTY);
47
+ expect(ops[3].triple.entity).toBe(id);
48
+ expect(ops[3].triple.value.type).toBe('NUMBER');
49
+ expect(ops[3].triple.value.value).toBe('200');
50
+ }
51
+ });
52
+ //# sourceMappingURL=image.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.test.js","sourceRoot":"","sources":["../../../src/core/image.test.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,23 @@
4
4
  * @since 0.0.6
5
5
  */
6
6
  export declare function generateBetween(first: string | null, second: string | null): string;
7
+ /**
8
+ * Generates a random position with jittering.
9
+ *
10
+ * @returns A random position as a string.
11
+ */
12
+ export declare function generate(): string;
13
+ type MaybePosition = string | null;
14
+ export declare function compare(a: MaybePosition, b: MaybePosition): number;
15
+ /**
16
+ * Sorts a list of positions in ascending order. In
17
+ * the knowledge graph positions are optional. This
18
+ * function sorts null positions so they are always
19
+ * at the bottom.
20
+ *
21
+ * @param positions - The list of positions to sort.
22
+ * @returns The sorted list of positions.
23
+ */
24
+ export declare function sort(positions: MaybePosition[]): MaybePosition[];
25
+ export {};
7
26
  //# sourceMappingURL=position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,UAE1E"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,UAE1E;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,KAAK,aAAa,GAAG,MAAM,GAAG,IAAI,CAAA;AAElC,wBAAgB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,UAOzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAEhE"}
@@ -7,4 +7,35 @@ import { generateJitteredKeyBetween } from "fractional-indexing-jittered";
7
7
  export function generateBetween(first, second) {
8
8
  return generateJitteredKeyBetween(first, second);
9
9
  }
10
+ /**
11
+ * Generates a random position with jittering.
12
+ *
13
+ * @returns A random position as a string.
14
+ */
15
+ export function generate() {
16
+ return generateBetween(null, null);
17
+ }
18
+ export function compare(a, b) {
19
+ // This ALWAYS puts nulls at the bottom, regardless of what
20
+ // fractional indexes exist
21
+ if (a === null && b === null)
22
+ return 0;
23
+ if (a === null)
24
+ return 1; // a goes to bottom
25
+ if (b === null)
26
+ return -1; // b goes to bottom
27
+ return a.localeCompare(b);
28
+ }
29
+ /**
30
+ * Sorts a list of positions in ascending order. In
31
+ * the knowledge graph positions are optional. This
32
+ * function sorts null positions so they are always
33
+ * at the bottom.
34
+ *
35
+ * @param positions - The list of positions to sort.
36
+ * @returns The sorted list of positions.
37
+ */
38
+ export function sort(positions) {
39
+ return positions.sort(compare);
40
+ }
10
41
  //# sourceMappingURL=position.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,MAAqB;IACzE,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/core/position.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,MAAqB;IACzE,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAID,MAAM,UAAU,OAAO,CAAC,CAAgB,EAAE,CAAgB;IACxD,4DAA4D;IAC5D,2BAA2B;IAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,CAAE,mBAAmB;IAC9C,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB;IAC9C,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,IAAI,CAAC,SAA0B;IAC7C,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=position.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.test.d.ts","sourceRoot":"","sources":["../../../src/core/position.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { generate, sort } from './position.js'; // Adjust import path as needed
3
+ describe('fractional index default generation', () => {
4
+ it('should generate a random position', () => {
5
+ const a = generate();
6
+ const b = generate();
7
+ expect(a).not.toEqual(b);
8
+ });
9
+ });
10
+ describe('fractional index sorting', () => {
11
+ describe('sort function', () => {
12
+ it('should handle empty array', () => {
13
+ const result = sort([]);
14
+ expect(result).toEqual([]);
15
+ });
16
+ it('should handle array with only nulls', () => {
17
+ const positions = [null, null, null];
18
+ const result = sort(positions);
19
+ expect(result).toEqual([null, null, null]);
20
+ });
21
+ it('should handle array with only strings', () => {
22
+ const positions = ['c', 'a', 'b'];
23
+ const result = sort(positions);
24
+ expect(result).toEqual(['a', 'b', 'c']);
25
+ });
26
+ it('should put null values at the bottom when mixed with strings', () => {
27
+ const positions = ['b', null, 'a', null, 'c'];
28
+ const result = sort(positions);
29
+ expect(result).toEqual(['a', 'b', 'c', null, null]);
30
+ });
31
+ it('should sort fractional indexes correctly', () => {
32
+ const positions = ['a1', 'a0', 'a2'];
33
+ const result = sort(positions);
34
+ expect(result).toEqual(['a0', 'a1', 'a2']);
35
+ });
36
+ it('should handle complex fractional indexes', () => {
37
+ const positions = ['a0V', 'a0', 'a0G', 'a1'];
38
+ const result = sort(positions);
39
+ expect(result).toEqual(['a0', 'a0G', 'a0V', 'a1']);
40
+ });
41
+ it('should maintain stable sort for identical values', () => {
42
+ const positions = ['a0', 'a0', 'a1'];
43
+ const result = sort(positions);
44
+ expect(result).toEqual(['a0', 'a0', 'a1']);
45
+ });
46
+ it('should handle single null value', () => {
47
+ const positions = [null];
48
+ const result = sort(positions);
49
+ expect(result).toEqual([null]);
50
+ });
51
+ it('should handle single string value', () => {
52
+ const positions = ['a0'];
53
+ const result = sort(positions);
54
+ expect(result).toEqual(['a0']);
55
+ });
56
+ it('should sort with nulls at bottom regardless of position in input', () => {
57
+ const positions1 = [null, 'a', 'b'];
58
+ const positions2 = ['a', null, 'b'];
59
+ const positions3 = ['a', 'b', null];
60
+ const expected = ['a', 'b', null];
61
+ expect(sort(positions1)).toEqual(expected);
62
+ expect(sort(positions2)).toEqual(expected);
63
+ expect(sort(positions3)).toEqual(expected);
64
+ });
65
+ it('should handle very long fractional indexes', () => {
66
+ const positions = [`a0${'x'.repeat(50)}`, 'a0', `a0${'y'.repeat(30)}`];
67
+ const result = sort(positions);
68
+ expect(result).toEqual(['a0', `a0${'x'.repeat(50)}`, `a0${'y'.repeat(30)}`]);
69
+ });
70
+ it('should handle mixed case and special characters', () => {
71
+ const positions = ['Z', 'a', 'A', 'z'];
72
+ const result = sort(positions);
73
+ // JavaScript's localeCompare should handle this correctly
74
+ expect(result).toEqual(['a', 'A', 'z', 'Z']);
75
+ });
76
+ it('should handle large arrays efficiently', () => {
77
+ const positions = [];
78
+ // Create a large array with mixed values
79
+ for (let i = 100; i >= 0; i--) {
80
+ positions.push(`a${i}`);
81
+ if (i % 10 === 0)
82
+ positions.push(null);
83
+ }
84
+ const result = sort(positions);
85
+ // Check that all string values are sorted before nulls
86
+ const stringValues = result.filter(p => p !== null);
87
+ const nullValues = result.filter(p => p === null);
88
+ // String values should be sorted
89
+ for (let i = 1; i < stringValues.length; i++) {
90
+ const left = stringValues[i - 1];
91
+ const right = stringValues[i];
92
+ if (left && right) {
93
+ expect(left.localeCompare(right)).toBeLessThanOrEqual(0);
94
+ }
95
+ }
96
+ // All nulls should be at the end
97
+ const firstNullIndex = result.indexOf(null);
98
+ if (firstNullIndex !== -1) {
99
+ expect(result.slice(firstNullIndex)).toEqual(nullValues);
100
+ }
101
+ });
102
+ it('should handle edge case fractional indexes that might cause sorting issues', () => {
103
+ const positions = [
104
+ 'z'.repeat(10), // Very "high" value
105
+ 'a0',
106
+ null,
107
+ '', // Empty string
108
+ 'a',
109
+ ];
110
+ const result = sort(positions);
111
+ // Empty string should come first, then sorted strings, then nulls
112
+ expect(result[0]).toBe('');
113
+ expect(result[result.length - 1]).toBe(null);
114
+ // Check that non-null, non-empty strings are sorted
115
+ const nonEmptyStrings = result.filter(p => p !== null && p !== '');
116
+ for (let i = 1; i < nonEmptyStrings.length; i++) {
117
+ const left = nonEmptyStrings[i - 1];
118
+ const right = nonEmptyStrings[i];
119
+ if (left && right) {
120
+ expect(left.localeCompare(right)).toBeLessThanOrEqual(0);
121
+ }
122
+ }
123
+ });
124
+ });
125
+ });
126
+ //# sourceMappingURL=position.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.test.js","sourceRoot":"","sources":["../../../src/core/position.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC,CAAC,+BAA+B;AAE/E,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC1E,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACpC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACpC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAEpC,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAElC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,0DAA0D;YAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,SAAS,GAAsB,EAAE,CAAC;YAExC,yCAAyC;YACzC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;oBAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/B,uDAAuD;YACvD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAa,CAAC;YAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAElD,iCAAiC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAClB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;YACpF,MAAM,SAAS,GAAG;gBAChB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,oBAAoB;gBACpC,IAAI;gBACJ,IAAI;gBACJ,EAAE,EAAE,eAAe;gBACnB,GAAG;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/B,kEAAkE;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7C,oDAAoD;YACpD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAa,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBAEjC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAClB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * This module provides utility functions for working with Relations in TypeScript.
3
+ *
4
+ * @since 0.0.6
5
+ */
6
+ import { SystemIds } from '../system-ids.js';
7
+ import type { CreateRelationOp, DeleteRelationOp } from '../types.js';
8
+ /**
9
+ * Arguments for creating a new Relation.
10
+ *
11
+ * @param relationId - optional base58 encoded v4 uuid
12
+ * @param fromId - base58 encoded v4 uuid
13
+ * @param toId - base58 encoded v4 uuid
14
+ * @param relationTypeId - base58 encoded v4 uuid
15
+ * @param position - optional fractional index using position-strings
16
+ */
17
+ type CreateRelationParams = {
18
+ relationId?: string;
19
+ fromId: string;
20
+ toId: string;
21
+ relationTypeId: string;
22
+ position?: string;
23
+ };
24
+ /**
25
+ * Generates ops for a new Relation.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const ops = Relation.make({
30
+ * fromId: 'from-id',
31
+ * toId: 'to-id',
32
+ * relationTypeId: 'relation-type-id',
33
+ * // optional
34
+ * relationId: 'relation-id',
35
+ * position: 'position-string',
36
+ * });
37
+ * ```
38
+ *
39
+ * @param args {@link CreateRelationParams}
40
+ * @returns – {@link CreateRelationOp}
41
+ */
42
+ export declare function make(args: CreateRelationParams): CreateRelationOp;
43
+ /**
44
+ * Generates ops for deleting a Relation.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const op = Relation.remove('relation-id');
49
+ * ```
50
+ *
51
+ * @param relationId – base58 encoded v4 uuid representing the relation's entity id
52
+ * @returns – {@link DeleteRelationOp}
53
+ */
54
+ export declare function remove(relationId: string): DeleteRelationOp;
55
+ type ReorderRelationParams = {
56
+ relationId: string;
57
+ beforeIndex?: string;
58
+ afterIndex?: string;
59
+ };
60
+ type ReorderRelationOp = {
61
+ type: 'SET_TRIPLE';
62
+ triple: {
63
+ attribute: typeof SystemIds.RELATION_INDEX;
64
+ entity: string;
65
+ value: {
66
+ type: 'TEXT';
67
+ value: string;
68
+ };
69
+ };
70
+ };
71
+ /**
72
+ * Generates op for reordering a Relation using position-strings
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const op = Relation.reorder({
77
+ * relationId: 'relation-id',
78
+ * beforeIndex: 'before-position',
79
+ * afterIndex: 'after-position',
80
+ * });
81
+ * ```
82
+ *
83
+ * @param args {@link ReorderRelationParams}
84
+ * @returns – {@link ReorderRelationOp}
85
+ */
86
+ export declare function reorder(args: ReorderRelationParams): ReorderRelationOp;
87
+ export {};
88
+ //# sourceMappingURL=relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../../src/core/relation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGtE;;;;;;;;GAQG;AACH,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CAajE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAO3D;AAED,KAAK,qBAAqB,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,SAAS,CAAC,cAAc,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CActE"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * This module provides utility functions for working with Relations in TypeScript.
3
+ *
4
+ * @since 0.0.6
5
+ */
6
+ import { INITIAL_RELATION_INDEX_VALUE } from '../../constants.js';
7
+ import { generate } from '../id.js';
8
+ import { SystemIds } from '../system-ids.js';
9
+ import { Position } from './position.js';
10
+ /**
11
+ * Generates ops for a new Relation.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const ops = Relation.make({
16
+ * fromId: 'from-id',
17
+ * toId: 'to-id',
18
+ * relationTypeId: 'relation-type-id',
19
+ * // optional
20
+ * relationId: 'relation-id',
21
+ * position: 'position-string',
22
+ * });
23
+ * ```
24
+ *
25
+ * @param args {@link CreateRelationParams}
26
+ * @returns – {@link CreateRelationOp}
27
+ */
28
+ export function make(args) {
29
+ const newEntityId = args.relationId ?? generate();
30
+ return {
31
+ type: 'CREATE_RELATION',
32
+ relation: {
33
+ id: newEntityId,
34
+ type: args.relationTypeId,
35
+ fromEntity: args.fromId,
36
+ toEntity: args.toId,
37
+ index: args.position ?? INITIAL_RELATION_INDEX_VALUE,
38
+ },
39
+ };
40
+ }
41
+ /**
42
+ * Generates ops for deleting a Relation.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const op = Relation.remove('relation-id');
47
+ * ```
48
+ *
49
+ * @param relationId – base58 encoded v4 uuid representing the relation's entity id
50
+ * @returns – {@link DeleteRelationOp}
51
+ */
52
+ export function remove(relationId) {
53
+ return {
54
+ type: 'DELETE_RELATION',
55
+ relation: {
56
+ id: relationId,
57
+ },
58
+ };
59
+ }
60
+ /**
61
+ * Generates op for reordering a Relation using position-strings
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * const op = Relation.reorder({
66
+ * relationId: 'relation-id',
67
+ * beforeIndex: 'before-position',
68
+ * afterIndex: 'after-position',
69
+ * });
70
+ * ```
71
+ *
72
+ * @param args {@link ReorderRelationParams}
73
+ * @returns – {@link ReorderRelationOp}
74
+ */
75
+ export function reorder(args) {
76
+ const newIndex = Position.createBetween(args.beforeIndex, args.afterIndex);
77
+ return {
78
+ type: 'SET_TRIPLE',
79
+ triple: {
80
+ attribute: SystemIds.RELATION_INDEX,
81
+ entity: args.relationId,
82
+ value: {
83
+ type: 'TEXT',
84
+ value: newIndex,
85
+ },
86
+ },
87
+ };
88
+ }
89
+ //# sourceMappingURL=relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../../src/core/relation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmBzC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,IAAI,CAAC,IAA0B;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;IAElD,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI,CAAC,cAAc;YACzB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,4BAA4B;SACrD;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,UAAkB;IACvC,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,UAAU;SACf;KACF,CAAC;AACJ,CAAC;AAoBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,OAAO,CAAC,IAA2B;IACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAE3E,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,SAAS,EAAE,SAAS,CAAC,cAAc;YACnC,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,QAAQ;aAChB;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=relation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.test.d.ts","sourceRoot":"","sources":["../../../src/core/relation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { expect, it } from 'vitest';
2
+ import { RELATION_INDEX } from './ids/system.js';
3
+ import { Position, PositionRange } from './position.js';
4
+ import { make, remove, reorder } from './relation.js';
5
+ it('should generate CreateRelationOp for CREATE_RELATION', () => {
6
+ const op = make({
7
+ relationId: 'test-relation-id',
8
+ fromId: 'test-entity-id',
9
+ relationTypeId: 'test-relation-type-id',
10
+ toId: 'test-entity-id',
11
+ position: 'test-position',
12
+ });
13
+ expect(op).toEqual({
14
+ type: 'CREATE_RELATION',
15
+ relation: {
16
+ id: 'test-relation-id',
17
+ type: 'test-relation-type-id',
18
+ fromEntity: 'test-entity-id',
19
+ toEntity: 'test-entity-id',
20
+ index: 'test-position',
21
+ },
22
+ });
23
+ });
24
+ it('should generate DeleteRelationOp for DELETE_RELATION', () => {
25
+ const op = remove('test-relation-id');
26
+ expect(op).toEqual({
27
+ type: 'DELETE_RELATION',
28
+ relation: {
29
+ id: 'test-relation-id',
30
+ },
31
+ });
32
+ });
33
+ it('should generate Op that places the fractional indexer between the two provided values', () => {
34
+ const op = reorder({
35
+ relationId: 'test-relation-id',
36
+ beforeIndex: PositionRange.FIRST,
37
+ afterIndex: PositionRange.LAST,
38
+ });
39
+ expect(op.type).toBe('SET_TRIPLE');
40
+ expect(op.triple.attribute).toBe(RELATION_INDEX);
41
+ expect(op.triple.entity).toBe('test-relation-id');
42
+ expect(op.triple.value.type).toBe('TEXT');
43
+ // @TODO how do we test that the resulting value is in-between the two indexes?
44
+ });
45
+ //# sourceMappingURL=relation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.test.js","sourceRoot":"","sources":["../../../src/core/relation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEtD,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAC9D,MAAM,EAAE,GAAG,IAAI,CAAC;QACd,UAAU,EAAE,kBAAkB;QAC9B,MAAM,EAAE,gBAAgB;QACxB,cAAc,EAAE,uBAAuB;QACvC,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,kBAAkB;YACtB,IAAI,EAAE,uBAAuB;YAC7B,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,eAAe;SACvB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAC9D,MAAM,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEtC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,kBAAkB;SACvB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;IAC/F,MAAM,EAAE,GAAG,OAAO,CAAC;QACjB,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,aAAa,CAAC,KAAK;QAChC,UAAU,EAAE,aAAa,CAAC,IAAI;KAC/B,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,+EAA+E;AACjF,CAAC,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * This module provides utility functions for working with Triples in TypeScript.
3
+ *
4
+ * @since 0.0.6
5
+ */
6
+ import type { DeleteTripleOp, SetTripleOp, Value } from '../types.js';
7
+ type CreateTripleParams = {
8
+ attributeId: string;
9
+ entityId: string;
10
+ value: Value;
11
+ };
12
+ /**
13
+ * Generates op for creating a new Triple.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const op = Triple.make({
18
+ * attributeId: 'attribute-id',
19
+ * entityId: 'entity-id',
20
+ * value: {
21
+ * type: 'TEXT',
22
+ * value: 'value',
23
+ * },
24
+ * });
25
+ * ```
26
+ * @param args – {@link CreateTripleParams}
27
+ * @returns – {@link SetTripleOp}
28
+ */
29
+ export declare function make(args: CreateTripleParams): SetTripleOp;
30
+ type DeleteTripleParams = {
31
+ attributeId: string;
32
+ entityId: string;
33
+ };
34
+ /**
35
+ * Generates op for deleting a Triple.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const op = Triple.remove({
40
+ * attributeId: 'attribute-id',
41
+ * entityId: 'entity-id',
42
+ * });
43
+ * ```
44
+ *
45
+ * @param args – {@link DeleteTripleParams}
46
+ * @returns – {@link DeleteTripleOp}
47
+ */
48
+ export declare function remove(args: DeleteTripleParams): DeleteTripleOp;
49
+ export {};
50
+ //# sourceMappingURL=triple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triple.d.ts","sourceRoot":"","sources":["../../../src/core/triple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtE,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAS1D;AAED,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAQ/D"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * This module provides utility functions for working with Triples in TypeScript.
3
+ *
4
+ * @since 0.0.6
5
+ */
6
+ /**
7
+ * Generates op for creating a new Triple.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const op = Triple.make({
12
+ * attributeId: 'attribute-id',
13
+ * entityId: 'entity-id',
14
+ * value: {
15
+ * type: 'TEXT',
16
+ * value: 'value',
17
+ * },
18
+ * });
19
+ * ```
20
+ * @param args – {@link CreateTripleParams}
21
+ * @returns – {@link SetTripleOp}
22
+ */
23
+ export function make(args) {
24
+ return {
25
+ type: 'SET_TRIPLE',
26
+ triple: {
27
+ attribute: args.attributeId,
28
+ entity: args.entityId,
29
+ value: args.value,
30
+ },
31
+ };
32
+ }
33
+ /**
34
+ * Generates op for deleting a Triple.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const op = Triple.remove({
39
+ * attributeId: 'attribute-id',
40
+ * entityId: 'entity-id',
41
+ * });
42
+ * ```
43
+ *
44
+ * @param args – {@link DeleteTripleParams}
45
+ * @returns – {@link DeleteTripleOp}
46
+ */
47
+ export function remove(args) {
48
+ return {
49
+ type: 'DELETE_TRIPLE',
50
+ triple: {
51
+ attribute: args.attributeId,
52
+ entity: args.entityId,
53
+ },
54
+ };
55
+ }
56
+ //# sourceMappingURL=triple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triple.js","sourceRoot":"","sources":["../../../src/core/triple.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,IAAI,CAAC,IAAwB;IAC3C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;KACF,CAAC;AACJ,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,MAAM,CAAC,IAAwB;IAC7C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE;YACN,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,MAAM,EAAE,IAAI,CAAC,QAAQ;SACtB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=triple.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triple.test.d.ts","sourceRoot":"","sources":["../../../src/core/triple.test.ts"],"names":[],"mappings":""}