@graphprotocol/grc-20 0.28.0 → 0.29.0

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 (278) hide show
  1. package/dist/constants.d.ts +7 -0
  2. package/dist/constants.d.ts.map +1 -0
  3. package/dist/constants.js +8 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/convert-ids.d.ts +2 -0
  6. package/dist/convert-ids.d.ts.map +1 -0
  7. package/dist/convert-ids.js +42 -0
  8. package/dist/convert-ids.js.map +1 -0
  9. package/dist/examples/ranks/create-ordinal-rank.d.ts +8 -0
  10. package/dist/examples/ranks/create-ordinal-rank.d.ts.map +1 -0
  11. package/dist/examples/ranks/create-ordinal-rank.js +42 -0
  12. package/dist/examples/ranks/create-ordinal-rank.js.map +1 -0
  13. package/dist/examples/ranks/create-weighted-rank.d.ts +8 -0
  14. package/dist/examples/ranks/create-weighted-rank.d.ts.map +1 -0
  15. package/dist/examples/ranks/create-weighted-rank.js +42 -0
  16. package/dist/examples/ranks/create-weighted-rank.js.map +1 -0
  17. package/dist/index.d.ts +5 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +5 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/protov2.d.ts +11 -0
  22. package/dist/protov2.d.ts.map +1 -0
  23. package/dist/protov2.js +11 -0
  24. package/dist/protov2.js.map +1 -0
  25. package/dist/scripts/setup-rank-types.d.ts +15 -0
  26. package/dist/scripts/setup-rank-types.d.ts.map +1 -0
  27. package/dist/scripts/setup-rank-types.js +62 -0
  28. package/dist/scripts/setup-rank-types.js.map +1 -0
  29. package/dist/src/core/blocks/image.d.ts +15 -0
  30. package/dist/src/core/blocks/image.d.ts.map +1 -0
  31. package/dist/src/core/blocks/image.js +15 -0
  32. package/dist/src/core/blocks/image.js.map +1 -0
  33. package/dist/src/core/ids/system.d.ts +6 -0
  34. package/dist/src/core/ids/system.d.ts.map +1 -1
  35. package/dist/src/core/ids/system.js +6 -0
  36. package/dist/src/core/ids/system.js.map +1 -1
  37. package/dist/src/core/idsv2/content.d.ts +59 -0
  38. package/dist/src/core/idsv2/content.d.ts.map +1 -0
  39. package/dist/src/core/idsv2/content.js +59 -0
  40. package/dist/src/core/idsv2/content.js.map +1 -0
  41. package/dist/src/core/idsv2/network.d.ts +5 -0
  42. package/dist/src/core/idsv2/network.d.ts.map +1 -0
  43. package/dist/src/core/idsv2/network.js +5 -0
  44. package/dist/src/core/idsv2/network.js.map +1 -0
  45. package/dist/src/core/idsv2/system.d.ts +222 -0
  46. package/dist/src/core/idsv2/system.d.ts.map +1 -0
  47. package/dist/src/core/idsv2/system.js +230 -0
  48. package/dist/src/core/idsv2/system.js.map +1 -0
  49. package/dist/src/core/image.d.ts +40 -0
  50. package/dist/src/core/image.d.ts.map +1 -0
  51. package/dist/src/core/image.js +76 -0
  52. package/dist/src/core/image.js.map +1 -0
  53. package/dist/src/core/image.test.d.ts +2 -0
  54. package/dist/src/core/image.test.d.ts.map +1 -0
  55. package/dist/src/core/image.test.js +52 -0
  56. package/dist/src/core/image.test.js.map +1 -0
  57. package/dist/src/core/relation.d.ts +88 -0
  58. package/dist/src/core/relation.d.ts.map +1 -0
  59. package/dist/src/core/relation.js +89 -0
  60. package/dist/src/core/relation.js.map +1 -0
  61. package/dist/src/core/relation.test.d.ts +2 -0
  62. package/dist/src/core/relation.test.d.ts.map +1 -0
  63. package/dist/src/core/relation.test.js +45 -0
  64. package/dist/src/core/relation.test.js.map +1 -0
  65. package/dist/src/core/triple.d.ts +50 -0
  66. package/dist/src/core/triple.d.ts.map +1 -0
  67. package/dist/src/core/triple.js +56 -0
  68. package/dist/src/core/triple.js.map +1 -0
  69. package/dist/src/core/triple.test.d.ts +2 -0
  70. package/dist/src/core/triple.test.d.ts.map +1 -0
  71. package/dist/src/core/triple.test.js +37 -0
  72. package/dist/src/core/triple.test.js.map +1 -0
  73. package/dist/src/encodings/get-register-space-calldata.d.ts +32 -0
  74. package/dist/src/encodings/get-register-space-calldata.d.ts.map +1 -0
  75. package/dist/src/encodings/get-register-space-calldata.js +39 -0
  76. package/dist/src/encodings/get-register-space-calldata.js.map +1 -0
  77. package/dist/src/encodings/get-register-space-calldata.test.d.ts +2 -0
  78. package/dist/src/encodings/get-register-space-calldata.test.d.ts.map +1 -0
  79. package/dist/src/encodings/get-register-space-calldata.test.js +15 -0
  80. package/dist/src/encodings/get-register-space-calldata.test.js.map +1 -0
  81. package/dist/src/graph/delete-entity.d.ts +14 -0
  82. package/dist/src/graph/delete-entity.d.ts.map +1 -0
  83. package/dist/src/graph/delete-entity.js +21 -0
  84. package/dist/src/graph/delete-entity.js.map +1 -0
  85. package/dist/src/graph/delete-entity.test.d.ts +2 -0
  86. package/dist/src/graph/delete-entity.test.d.ts.map +1 -0
  87. package/dist/src/graph/delete-entity.test.js +23 -0
  88. package/dist/src/graph/delete-entity.test.js.map +1 -0
  89. package/dist/src/graph/graph.test.d.ts +2 -0
  90. package/dist/src/graph/graph.test.d.ts.map +1 -0
  91. package/dist/src/graph/graph.test.js +46 -0
  92. package/dist/src/graph/graph.test.js.map +1 -0
  93. package/dist/src/graph/helpers/create-default-properties.d.ts +5 -0
  94. package/dist/src/graph/helpers/create-default-properties.d.ts.map +1 -0
  95. package/dist/src/graph/helpers/create-default-properties.js +44 -0
  96. package/dist/src/graph/helpers/create-default-properties.js.map +1 -0
  97. package/dist/src/graph/helpers/create-properties.d.ts +8 -0
  98. package/dist/src/graph/helpers/create-properties.d.ts.map +1 -0
  99. package/dist/src/graph/helpers/create-properties.js +53 -0
  100. package/dist/src/graph/helpers/create-properties.js.map +1 -0
  101. package/dist/src/graphv2/constants.d.ts +2 -0
  102. package/dist/src/graphv2/constants.d.ts.map +1 -0
  103. package/dist/src/graphv2/constants.js +2 -0
  104. package/dist/src/graphv2/constants.js.map +1 -0
  105. package/dist/src/graphv2/create-entity.d.ts +52 -0
  106. package/dist/src/graphv2/create-entity.d.ts.map +1 -0
  107. package/dist/src/graphv2/create-entity.js +140 -0
  108. package/dist/src/graphv2/create-entity.js.map +1 -0
  109. package/dist/src/graphv2/create-entity.test.d.ts +2 -0
  110. package/dist/src/graphv2/create-entity.test.d.ts.map +1 -0
  111. package/dist/src/graphv2/create-entity.test.js +158 -0
  112. package/dist/src/graphv2/create-entity.test.js.map +1 -0
  113. package/dist/src/graphv2/create-image.d.ts +28 -0
  114. package/dist/src/graphv2/create-image.d.ts.map +1 -0
  115. package/dist/src/graphv2/create-image.js +71 -0
  116. package/dist/src/graphv2/create-image.js.map +1 -0
  117. package/dist/src/graphv2/create-image.test.d.ts +2 -0
  118. package/dist/src/graphv2/create-image.test.d.ts.map +1 -0
  119. package/dist/src/graphv2/create-image.test.js +142 -0
  120. package/dist/src/graphv2/create-image.test.js.map +1 -0
  121. package/dist/src/graphv2/create-property.d.ts +22 -0
  122. package/dist/src/graphv2/create-property.d.ts.map +1 -0
  123. package/dist/src/graphv2/create-property.js +129 -0
  124. package/dist/src/graphv2/create-property.js.map +1 -0
  125. package/dist/src/graphv2/create-property.test.d.ts +2 -0
  126. package/dist/src/graphv2/create-property.test.d.ts.map +1 -0
  127. package/dist/src/graphv2/create-property.test.js +82 -0
  128. package/dist/src/graphv2/create-property.test.js.map +1 -0
  129. package/dist/src/graphv2/create-relation.d.ts +33 -0
  130. package/dist/src/graphv2/create-relation.d.ts.map +1 -0
  131. package/dist/src/graphv2/create-relation.js +66 -0
  132. package/dist/src/graphv2/create-relation.js.map +1 -0
  133. package/dist/src/graphv2/create-relation.test.d.ts +2 -0
  134. package/dist/src/graphv2/create-relation.test.d.ts.map +1 -0
  135. package/dist/src/graphv2/create-relation.test.js +208 -0
  136. package/dist/src/graphv2/create-relation.test.js.map +1 -0
  137. package/dist/src/graphv2/create-space.d.ts +13 -0
  138. package/dist/src/graphv2/create-space.d.ts.map +1 -0
  139. package/dist/src/graphv2/create-space.js +21 -0
  140. package/dist/src/graphv2/create-space.js.map +1 -0
  141. package/dist/src/graphv2/create-type.d.ts +22 -0
  142. package/dist/src/graphv2/create-type.d.ts.map +1 -0
  143. package/dist/src/graphv2/create-type.js +64 -0
  144. package/dist/src/graphv2/create-type.js.map +1 -0
  145. package/dist/src/graphv2/create-type.test.d.ts +2 -0
  146. package/dist/src/graphv2/create-type.test.d.ts.map +1 -0
  147. package/dist/src/graphv2/create-type.test.js +109 -0
  148. package/dist/src/graphv2/create-type.test.js.map +1 -0
  149. package/dist/src/graphv2/delete-entity.d.ts +14 -0
  150. package/dist/src/graphv2/delete-entity.d.ts.map +1 -0
  151. package/dist/src/graphv2/delete-entity.js +21 -0
  152. package/dist/src/graphv2/delete-entity.js.map +1 -0
  153. package/dist/src/graphv2/delete-entity.test.d.ts +2 -0
  154. package/dist/src/graphv2/delete-entity.test.d.ts.map +1 -0
  155. package/dist/src/graphv2/delete-entity.test.js +24 -0
  156. package/dist/src/graphv2/delete-entity.test.js.map +1 -0
  157. package/dist/src/graphv2/delete-relation.d.ts +14 -0
  158. package/dist/src/graphv2/delete-relation.d.ts.map +1 -0
  159. package/dist/src/graphv2/delete-relation.js +21 -0
  160. package/dist/src/graphv2/delete-relation.js.map +1 -0
  161. package/dist/src/graphv2/delete-relation.test.d.ts +2 -0
  162. package/dist/src/graphv2/delete-relation.test.d.ts.map +1 -0
  163. package/dist/src/graphv2/delete-relation.test.js +24 -0
  164. package/dist/src/graphv2/delete-relation.test.js.map +1 -0
  165. package/dist/src/graphv2/index.d.ts +12 -0
  166. package/dist/src/graphv2/index.d.ts.map +1 -0
  167. package/dist/src/graphv2/index.js +12 -0
  168. package/dist/src/graphv2/index.js.map +1 -0
  169. package/dist/src/graphv2/remove-entity-properties.d.ts +25 -0
  170. package/dist/src/graphv2/remove-entity-properties.d.ts.map +1 -0
  171. package/dist/src/graphv2/remove-entity-properties.js +24 -0
  172. package/dist/src/graphv2/remove-entity-properties.js.map +1 -0
  173. package/dist/src/graphv2/unset-entity-values.d.ts +21 -0
  174. package/dist/src/graphv2/unset-entity-values.d.ts.map +1 -0
  175. package/dist/src/graphv2/unset-entity-values.js +26 -0
  176. package/dist/src/graphv2/unset-entity-values.js.map +1 -0
  177. package/dist/src/graphv2/unset-entity-values.test.d.ts +2 -0
  178. package/dist/src/graphv2/unset-entity-values.test.d.ts.map +1 -0
  179. package/dist/src/graphv2/unset-entity-values.test.js +40 -0
  180. package/dist/src/graphv2/unset-entity-values.test.js.map +1 -0
  181. package/dist/src/graphv2/unset-relation-fields.d.ts +25 -0
  182. package/dist/src/graphv2/unset-relation-fields.d.ts.map +1 -0
  183. package/dist/src/graphv2/unset-relation-fields.js +34 -0
  184. package/dist/src/graphv2/unset-relation-fields.js.map +1 -0
  185. package/dist/src/graphv2/unset-relation-fields.test.d.ts +2 -0
  186. package/dist/src/graphv2/unset-relation-fields.test.d.ts.map +1 -0
  187. package/dist/src/graphv2/unset-relation-fields.test.js +64 -0
  188. package/dist/src/graphv2/unset-relation-fields.test.js.map +1 -0
  189. package/dist/src/graphv2/update-entity.d.ts +28 -0
  190. package/dist/src/graphv2/update-entity.d.ts.map +1 -0
  191. package/dist/src/graphv2/update-entity.js +73 -0
  192. package/dist/src/graphv2/update-entity.js.map +1 -0
  193. package/dist/src/graphv2/update-entity.test.d.ts +2 -0
  194. package/dist/src/graphv2/update-entity.test.d.ts.map +1 -0
  195. package/dist/src/graphv2/update-entity.test.js +116 -0
  196. package/dist/src/graphv2/update-entity.test.js.map +1 -0
  197. package/dist/src/graphv2/update-relation.d.ts +21 -0
  198. package/dist/src/graphv2/update-relation.d.ts.map +1 -0
  199. package/dist/src/graphv2/update-relation.js +37 -0
  200. package/dist/src/graphv2/update-relation.js.map +1 -0
  201. package/dist/src/idv2.d.ts +27 -0
  202. package/dist/src/idv2.d.ts.map +1 -0
  203. package/dist/src/idv2.js +88 -0
  204. package/dist/src/idv2.js.map +1 -0
  205. package/dist/src/idv2.test.d.ts +2 -0
  206. package/dist/src/idv2.test.d.ts.map +1 -0
  207. package/dist/src/idv2.test.js +26 -0
  208. package/dist/src/idv2.test.js.map +1 -0
  209. package/dist/src/image.d.ts +8 -0
  210. package/dist/src/image.d.ts.map +1 -0
  211. package/dist/src/image.js +8 -0
  212. package/dist/src/image.js.map +1 -0
  213. package/dist/src/ipfsv2.d.ts +96 -0
  214. package/dist/src/ipfsv2.d.ts.map +1 -0
  215. package/dist/src/ipfsv2.js +163 -0
  216. package/dist/src/ipfsv2.js.map +1 -0
  217. package/dist/src/ipfsv2.test.d.ts +2 -0
  218. package/dist/src/ipfsv2.test.d.ts.map +1 -0
  219. package/dist/src/ipfsv2.test.js +22 -0
  220. package/dist/src/ipfsv2.test.js.map +1 -0
  221. package/dist/src/proto/editv2.d.ts +11 -0
  222. package/dist/src/proto/editv2.d.ts.map +1 -0
  223. package/dist/src/proto/editv2.js +81 -0
  224. package/dist/src/proto/editv2.js.map +1 -0
  225. package/dist/src/proto/editv2.test.d.ts +2 -0
  226. package/dist/src/proto/editv2.test.d.ts.map +1 -0
  227. package/dist/src/proto/editv2.test.js +211 -0
  228. package/dist/src/proto/editv2.test.js.map +1 -0
  229. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts +410 -0
  230. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts.map +1 -0
  231. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js +536 -0
  232. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js.map +1 -0
  233. package/dist/src/ranks/create-rank.d.ts +42 -0
  234. package/dist/src/ranks/create-rank.d.ts.map +1 -0
  235. package/dist/src/ranks/create-rank.js +139 -0
  236. package/dist/src/ranks/create-rank.js.map +1 -0
  237. package/dist/src/ranks/create-rank.test.d.ts +2 -0
  238. package/dist/src/ranks/create-rank.test.d.ts.map +1 -0
  239. package/dist/src/ranks/create-rank.test.js +246 -0
  240. package/dist/src/ranks/create-rank.test.js.map +1 -0
  241. package/dist/src/ranks/index.d.ts +3 -0
  242. package/dist/src/ranks/index.d.ts.map +1 -0
  243. package/dist/src/ranks/index.js +3 -0
  244. package/dist/src/ranks/index.js.map +1 -0
  245. package/dist/src/ranks/types.d.ts +30 -0
  246. package/dist/src/ranks/types.d.ts.map +1 -0
  247. package/dist/src/ranks/types.js +2 -0
  248. package/dist/src/ranks/types.js.map +1 -0
  249. package/dist/src/relation.d.ts +7 -0
  250. package/dist/src/relation.d.ts.map +1 -0
  251. package/dist/src/relation.js +7 -0
  252. package/dist/src/relation.js.map +1 -0
  253. package/dist/src/smart-wallet-2.test-invalid.d.ts +2 -0
  254. package/dist/src/smart-wallet-2.test-invalid.d.ts.map +1 -0
  255. package/dist/src/smart-wallet-2.test-invalid.js +49 -0
  256. package/dist/src/smart-wallet-2.test-invalid.js.map +1 -0
  257. package/dist/src/smart-wallet-2.test.d.ts +2 -0
  258. package/dist/src/smart-wallet-2.test.d.ts.map +1 -0
  259. package/dist/src/smart-wallet-2.test.js +49 -0
  260. package/dist/src/smart-wallet-2.test.js.map +1 -0
  261. package/dist/src/system-ids-v2.d.ts +7 -0
  262. package/dist/src/system-ids-v2.d.ts.map +1 -0
  263. package/dist/src/system-ids-v2.js +7 -0
  264. package/dist/src/system-ids-v2.js.map +1 -0
  265. package/dist/src/triple.d.ts +7 -0
  266. package/dist/src/triple.d.ts.map +1 -0
  267. package/dist/src/triple.js +7 -0
  268. package/dist/src/triple.js.map +1 -0
  269. package/dist/src/types-backup.d.ts +134 -0
  270. package/dist/src/types-backup.d.ts.map +1 -0
  271. package/dist/src/types-backup.js +13 -0
  272. package/dist/src/types-backup.js.map +1 -0
  273. package/dist/src/typesv2.d.ts +173 -0
  274. package/dist/src/typesv2.d.ts.map +1 -0
  275. package/dist/src/typesv2.js +8 -0
  276. package/dist/src/typesv2.js.map +1 -0
  277. package/dist/tsconfig.tsbuildinfo +1 -0
  278. package/package.json +1 -1
@@ -0,0 +1,139 @@
1
+ import { generateNJitteredKeysBetween } from 'fractional-indexing-jittered';
2
+ import { DESCRIPTION_PROPERTY, NAME_PROPERTY, RANK_TYPE, RANK_TYPE_PROPERTY, RANK_VOTES_RELATION_TYPE, TYPES_PROPERTY, VOTE_ORDINAL_VALUE_PROPERTY, VOTE_WEIGHTED_VALUE_PROPERTY, } from '../core/ids/system.js';
3
+ import { serializeNumber } from '../graph/serialize.js';
4
+ import { Id } from '../id.js';
5
+ import { assertValid, generate } from '../id-utils.js';
6
+ /**
7
+ * Creates a rank entity with the given name, description, rankType, and votes.
8
+ * All IDs passed to this function are validated. If any invalid ID is provided,
9
+ * the function will throw an error.
10
+ *
11
+ * For ORDINAL ranks, the position is derived from the array order and fractional
12
+ * indexing strings are generated internally.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // Create an ordinal rank (ordered list) - position derived from array order
17
+ * const { id, ops, voteIds } = createRank({
18
+ * id: rankId, // optional, will be generated if not provided
19
+ * name: 'My Favorite Movies',
20
+ * description: 'A ranked list of my favorite movies', // optional
21
+ * rankType: 'ORDINAL',
22
+ * votes: [
23
+ * { entityId: movie1Id }, // 1st place
24
+ * { entityId: movie2Id }, // 2nd place
25
+ * { entityId: movie3Id }, // 3rd place
26
+ * ],
27
+ * });
28
+ *
29
+ * // Create a weighted rank (scored list)
30
+ * const { id, ops, voteIds } = createRank({
31
+ * name: 'Restaurant Ratings',
32
+ * rankType: 'WEIGHTED',
33
+ * votes: [
34
+ * { entityId: restaurant1Id, value: 4.5 }, // numeric score
35
+ * { entityId: restaurant2Id, value: 3.8 },
36
+ * ],
37
+ * });
38
+ * ```
39
+ *
40
+ * @param params – {@link CreateRankParams}
41
+ * @returns – {@link CreateRankResult}
42
+ * @throws Will throw an error if any provided ID is invalid
43
+ * @throws Will throw an error if any entityId is duplicated in votes
44
+ */
45
+ export const createRank = ({ id: providedId, name, description, rankType, votes, }) => {
46
+ // Validate all input IDs
47
+ if (providedId) {
48
+ assertValid(providedId, '`id` in `createRank`');
49
+ }
50
+ for (const vote of votes) {
51
+ assertValid(vote.entityId, '`entityId` in `votes` in `createRank`');
52
+ }
53
+ // Validate no duplicate entity IDs in votes
54
+ const seenEntityIds = new Set();
55
+ for (const vote of votes) {
56
+ const entityId = String(vote.entityId);
57
+ if (seenEntityIds.has(entityId)) {
58
+ throw new Error(`Duplicate entityId in votes: "${entityId}". Each entity can only be voted once per rank.`);
59
+ }
60
+ seenEntityIds.add(entityId);
61
+ }
62
+ const id = providedId ?? generate();
63
+ const ops = [];
64
+ const voteIds = [];
65
+ // Create rank entity values
66
+ const rankValues = [
67
+ {
68
+ property: NAME_PROPERTY,
69
+ value: name,
70
+ },
71
+ {
72
+ property: RANK_TYPE_PROPERTY,
73
+ value: rankType,
74
+ },
75
+ ];
76
+ if (description) {
77
+ rankValues.push({
78
+ property: DESCRIPTION_PROPERTY,
79
+ value: description,
80
+ });
81
+ }
82
+ // Create UPDATE_ENTITY op for the rank
83
+ ops.push({
84
+ type: 'UPDATE_ENTITY',
85
+ entity: {
86
+ id: Id(id),
87
+ values: rankValues,
88
+ },
89
+ });
90
+ // Create relation linking rank to RANK_TYPE (type relation)
91
+ ops.push({
92
+ type: 'CREATE_RELATION',
93
+ relation: {
94
+ id: generate(),
95
+ entity: generate(),
96
+ fromEntity: Id(id),
97
+ toEntity: RANK_TYPE,
98
+ type: TYPES_PROPERTY,
99
+ },
100
+ });
101
+ // Generate fractional indices for ordinal ranks
102
+ const fractionalIndices = rankType === 'ORDINAL' ? generateNJitteredKeysBetween(null, null, votes.length) : [];
103
+ // Create votes
104
+ votes.forEach((vote, i) => {
105
+ const voteEntityId = generate();
106
+ const relationId = generate();
107
+ voteIds.push(voteEntityId);
108
+ // Create relation from rank to voted entity
109
+ ops.push({
110
+ type: 'CREATE_RELATION',
111
+ relation: {
112
+ id: relationId,
113
+ entity: voteEntityId,
114
+ fromEntity: Id(id),
115
+ toEntity: Id(vote.entityId),
116
+ type: RANK_VOTES_RELATION_TYPE,
117
+ },
118
+ });
119
+ // Create vote entity with the appropriate value property
120
+ const voteValue = rankType === 'ORDINAL'
121
+ ? {
122
+ property: VOTE_ORDINAL_VALUE_PROPERTY,
123
+ value: fractionalIndices[i],
124
+ }
125
+ : {
126
+ property: VOTE_WEIGHTED_VALUE_PROPERTY,
127
+ value: serializeNumber(vote.value),
128
+ };
129
+ ops.push({
130
+ type: 'UPDATE_ENTITY',
131
+ entity: {
132
+ id: voteEntityId,
133
+ values: [voteValue],
134
+ },
135
+ });
136
+ });
137
+ return { id: Id(id), ops, voteIds };
138
+ };
139
+ //# sourceMappingURL=create-rank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rank.js","sourceRoot":"","sources":["../../../src/ranks/create-rank.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-rank.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rank.test.d.ts","sourceRoot":"","sources":["../../../src/ranks/create-rank.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { DESCRIPTION_PROPERTY, NAME_PROPERTY, RANK_TYPE, RANK_TYPE_PROPERTY, RANK_VOTES_RELATION_TYPE, TYPES_PROPERTY, VOTE_ORDINAL_VALUE_PROPERTY, VOTE_WEIGHTED_VALUE_PROPERTY, } from '../core/ids/system.js';
3
+ import { Id, isValid } from '../id.js';
4
+ import { createRank } from './create-rank.js';
5
+ describe('createRank', () => {
6
+ const movie1Id = Id('f47ac10b-58cc-4372-a567-0e02b2c3d479');
7
+ const movie2Id = Id('550e8400-e29b-41d4-a716-446655440000');
8
+ const movie3Id = Id('6ba7b810-9dad-11d1-80b4-00c04fd430c8');
9
+ describe('ordinal ranks', () => {
10
+ it('creates a basic ordinal rank with one vote', () => {
11
+ const rank = createRank({
12
+ name: 'My Favorite Movie',
13
+ rankType: 'ORDINAL',
14
+ votes: [{ entityId: movie1Id }],
15
+ });
16
+ expect(rank).toBeDefined();
17
+ expect(typeof rank.id).toBe('string');
18
+ expect(rank.ops).toBeDefined();
19
+ expect(rank.voteIds).toHaveLength(1);
20
+ // 1 UPDATE_ENTITY (rank) + 1 CREATE_RELATION (type) + 1 CREATE_RELATION (vote) + 1 UPDATE_ENTITY (vote value)
21
+ expect(rank.ops).toHaveLength(4);
22
+ // Check rank entity creation
23
+ expect(rank.ops[0]).toMatchObject({
24
+ type: 'UPDATE_ENTITY',
25
+ entity: {
26
+ id: rank.id,
27
+ values: expect.arrayContaining([
28
+ { property: NAME_PROPERTY, value: 'My Favorite Movie' },
29
+ { property: RANK_TYPE_PROPERTY, value: 'ORDINAL' },
30
+ ]),
31
+ },
32
+ });
33
+ // Check type relation to RANK_TYPE
34
+ expect(rank.ops[1]).toMatchObject({
35
+ type: 'CREATE_RELATION',
36
+ relation: {
37
+ fromEntity: rank.id,
38
+ toEntity: RANK_TYPE,
39
+ type: TYPES_PROPERTY,
40
+ },
41
+ });
42
+ // Check vote relation
43
+ expect(rank.ops[2]).toMatchObject({
44
+ type: 'CREATE_RELATION',
45
+ relation: {
46
+ fromEntity: rank.id,
47
+ toEntity: movie1Id,
48
+ type: RANK_VOTES_RELATION_TYPE,
49
+ },
50
+ });
51
+ // Check vote entity with ordinal value
52
+ expect(rank.ops[3]).toMatchObject({
53
+ type: 'UPDATE_ENTITY',
54
+ entity: {
55
+ id: rank.voteIds[0],
56
+ values: [
57
+ {
58
+ property: VOTE_ORDINAL_VALUE_PROPERTY,
59
+ value: expect.any(String), // fractional index
60
+ },
61
+ ],
62
+ },
63
+ });
64
+ });
65
+ it('creates an ordinal rank with multiple votes in order', () => {
66
+ const rank = createRank({
67
+ name: 'Top 3 Movies',
68
+ rankType: 'ORDINAL',
69
+ votes: [{ entityId: movie1Id }, { entityId: movie2Id }, { entityId: movie3Id }],
70
+ });
71
+ expect(rank.voteIds).toHaveLength(3);
72
+ // 1 UPDATE_ENTITY + 1 type relation + 3 vote relations + 3 vote entities = 8 ops
73
+ expect(rank.ops).toHaveLength(8);
74
+ // Verify fractional indices are in ascending order
75
+ const ordinalValue1 = rank.ops[3].entity.values[0]?.value;
76
+ const ordinalValue2 = rank.ops[5].entity.values[0]?.value;
77
+ const ordinalValue3 = rank.ops[7].entity.values[0]?.value;
78
+ expect(ordinalValue1 && ordinalValue2 && ordinalValue1 < ordinalValue2).toBe(true);
79
+ expect(ordinalValue2 && ordinalValue3 && ordinalValue2 < ordinalValue3).toBe(true);
80
+ });
81
+ it('creates an ordinal rank with optional description', () => {
82
+ const rank = createRank({
83
+ name: 'My Movies',
84
+ description: 'A ranked list of my favorite movies',
85
+ rankType: 'ORDINAL',
86
+ votes: [{ entityId: movie1Id }],
87
+ });
88
+ expect(rank.ops[0]).toMatchObject({
89
+ type: 'UPDATE_ENTITY',
90
+ entity: {
91
+ id: rank.id,
92
+ values: expect.arrayContaining([
93
+ { property: NAME_PROPERTY, value: 'My Movies' },
94
+ { property: RANK_TYPE_PROPERTY, value: 'ORDINAL' },
95
+ { property: DESCRIPTION_PROPERTY, value: 'A ranked list of my favorite movies' },
96
+ ]),
97
+ },
98
+ });
99
+ });
100
+ });
101
+ describe('weighted ranks', () => {
102
+ it('creates a basic weighted rank with one vote', () => {
103
+ const rank = createRank({
104
+ name: 'Restaurant Rating',
105
+ rankType: 'WEIGHTED',
106
+ votes: [{ entityId: movie1Id, value: 4.5 }],
107
+ });
108
+ expect(rank).toBeDefined();
109
+ expect(rank.voteIds).toHaveLength(1);
110
+ expect(rank.ops).toHaveLength(4);
111
+ // Check rank entity has WEIGHTED type
112
+ expect(rank.ops[0]).toMatchObject({
113
+ type: 'UPDATE_ENTITY',
114
+ entity: {
115
+ values: expect.arrayContaining([{ property: RANK_TYPE_PROPERTY, value: 'WEIGHTED' }]),
116
+ },
117
+ });
118
+ // Check vote entity with weighted value (serialized as string)
119
+ expect(rank.ops[3]).toMatchObject({
120
+ type: 'UPDATE_ENTITY',
121
+ entity: {
122
+ id: rank.voteIds[0],
123
+ values: [
124
+ {
125
+ property: VOTE_WEIGHTED_VALUE_PROPERTY,
126
+ value: '4.5', // serialized number
127
+ },
128
+ ],
129
+ },
130
+ });
131
+ });
132
+ it('creates a weighted rank with multiple votes', () => {
133
+ const rank = createRank({
134
+ name: 'Movie Scores',
135
+ rankType: 'WEIGHTED',
136
+ votes: [
137
+ { entityId: movie1Id, value: 9.2 },
138
+ { entityId: movie2Id, value: 8.5 },
139
+ { entityId: movie3Id, value: 7.8 },
140
+ ],
141
+ });
142
+ expect(rank.voteIds).toHaveLength(3);
143
+ expect(rank.ops).toHaveLength(8);
144
+ // Verify weighted values are correct
145
+ expect(rank.ops[3]).toMatchObject({
146
+ type: 'UPDATE_ENTITY',
147
+ entity: {
148
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '9.2' }],
149
+ },
150
+ });
151
+ expect(rank.ops[5]).toMatchObject({
152
+ type: 'UPDATE_ENTITY',
153
+ entity: {
154
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '8.5' }],
155
+ },
156
+ });
157
+ expect(rank.ops[7]).toMatchObject({
158
+ type: 'UPDATE_ENTITY',
159
+ entity: {
160
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '7.8' }],
161
+ },
162
+ });
163
+ });
164
+ it('handles integer weighted values', () => {
165
+ const rank = createRank({
166
+ name: 'Star Ratings',
167
+ rankType: 'WEIGHTED',
168
+ votes: [{ entityId: movie1Id, value: 5 }],
169
+ });
170
+ expect(rank.ops[3]).toMatchObject({
171
+ type: 'UPDATE_ENTITY',
172
+ entity: {
173
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '5' }],
174
+ },
175
+ });
176
+ });
177
+ });
178
+ describe('provided id', () => {
179
+ it('uses provided id when specified', () => {
180
+ const providedId = Id('b1dc6e5c-63e1-43ba-b3d4-755b251a4ea1');
181
+ const rank = createRank({
182
+ id: providedId,
183
+ name: 'My Rank',
184
+ rankType: 'ORDINAL',
185
+ votes: [{ entityId: movie1Id }],
186
+ });
187
+ expect(rank.id).toBe(providedId);
188
+ });
189
+ it('generates id when not provided', () => {
190
+ const rank = createRank({
191
+ name: 'My Rank',
192
+ rankType: 'ORDINAL',
193
+ votes: [{ entityId: movie1Id }],
194
+ });
195
+ expect(typeof rank.id).toBe('string');
196
+ expect(isValid(rank.id)).toBe(true);
197
+ });
198
+ });
199
+ describe('error handling', () => {
200
+ it('throws an error if the provided id is invalid', () => {
201
+ expect(() => createRank({
202
+ id: 'invalid',
203
+ name: 'My Rank',
204
+ rankType: 'ORDINAL',
205
+ votes: [{ entityId: movie1Id }],
206
+ })).toThrow('Invalid id: "invalid" for `id` in `createRank`');
207
+ });
208
+ it('throws an error if a vote entityId is invalid', () => {
209
+ expect(() => createRank({
210
+ name: 'My Rank',
211
+ rankType: 'ORDINAL',
212
+ votes: [{ entityId: 'invalid-entity-id' }],
213
+ })).toThrow('Invalid id: "invalid-entity-id" for `entityId` in `votes` in `createRank`');
214
+ });
215
+ it('throws an error if duplicate entity IDs are in votes', () => {
216
+ expect(() => createRank({
217
+ name: 'My Rank',
218
+ rankType: 'ORDINAL',
219
+ votes: [{ entityId: movie1Id }, { entityId: movie2Id }, { entityId: movie1Id }],
220
+ })).toThrow(`Duplicate entityId in votes: "${movie1Id}". Each entity can only be voted once per rank.`);
221
+ });
222
+ it('throws an error for duplicate entity IDs in weighted ranks', () => {
223
+ expect(() => createRank({
224
+ name: 'My Scores',
225
+ rankType: 'WEIGHTED',
226
+ votes: [
227
+ { entityId: movie1Id, value: 5 },
228
+ { entityId: movie1Id, value: 3 },
229
+ ],
230
+ })).toThrow(`Duplicate entityId in votes: "${movie1Id}". Each entity can only be voted once per rank.`);
231
+ });
232
+ });
233
+ describe('empty votes', () => {
234
+ it('creates a rank with no votes', () => {
235
+ const rank = createRank({
236
+ name: 'Empty Rank',
237
+ rankType: 'ORDINAL',
238
+ votes: [],
239
+ });
240
+ expect(rank.voteIds).toHaveLength(0);
241
+ // Only UPDATE_ENTITY (rank) + CREATE_RELATION (type)
242
+ expect(rank.ops).toHaveLength(2);
243
+ });
244
+ });
245
+ });
246
+ //# sourceMappingURL=create-rank.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rank.test.js","sourceRoot":"","sources":["../../../src/ranks/create-rank.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './create-rank.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ranks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './create-rank.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ranks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { Id } from '../id.js';
2
+ import type { CreateResult } from '../types.js';
3
+ export type RankType = 'ORDINAL' | 'WEIGHTED';
4
+ /**
5
+ * Vote with ordinal positioning.
6
+ * Position is derived from the array order; fractional indexing is generated internally.
7
+ */
8
+ export type VoteOrdinal = {
9
+ entityId: Id | string;
10
+ };
11
+ /**
12
+ * Vote with weighted numeric scoring.
13
+ * Used for ranked lists where the magnitude of the score matters.
14
+ */
15
+ export type VoteWeighted = {
16
+ entityId: Id | string;
17
+ value: number;
18
+ };
19
+ export type Vote = VoteOrdinal | VoteWeighted;
20
+ export type CreateRankParams = {
21
+ id?: Id | string;
22
+ name: string;
23
+ description?: string;
24
+ rankType: RankType;
25
+ votes: Vote[];
26
+ };
27
+ export type CreateRankResult = CreateResult & {
28
+ voteIds: Id[];
29
+ };
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ranks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,WAAW,GAAG,YAAY,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C,OAAO,EAAE,EAAE,EAAE,CAAC;CACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ranks/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * This module provides utility functions for working with Relations in TypeScript.
3
+ *
4
+ * @since 0.0.6
5
+ */
6
+ export * as Relation from './core/relation.js';
7
+ //# sourceMappingURL=relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/relation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * This module provides utility functions for working with Relations in TypeScript.
3
+ *
4
+ * @since 0.0.6
5
+ */
6
+ export * as Relation from './core/relation.js';
7
+ //# sourceMappingURL=relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/relation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=smart-wallet-2.test-invalid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-wallet-2.test-invalid.d.ts","sourceRoot":"","sources":["../../src/smart-wallet-2.test-invalid.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { Graph, Ipfs } from '~/index.js';
3
+ import { getSmartAccountWalletClient } from './smart-wallet.js';
4
+ describe('getSmartAccountWalletClient', { timeout: 6000000 }, () => {
5
+ it('should create a client with the default RPC URL when no RPC URL is provided', async () => {
6
+ const address = '0x7fd1BF705f4202C76434A494b88E7E1515D7688A';
7
+ const spaceId = '0f3aa347-efa3-4919-91d1-bb63a382553d';
8
+ const client = await getSmartAccountWalletClient({
9
+ privateKey: '0x9054bbced0e1a05a5dea2ff9446ea30fc98eb1934342bd2232b8753ffc46894d',
10
+ // rpcUrl: 'https://geo.rpc.pinax.network/v1/b970125fc31219b50e40d56c345496157b71ad1d9ee0016b/',
11
+ });
12
+ console.log('Your spaceId is:', spaceId);
13
+ // Once you have a personal space you can write data to it. Generate
14
+ // ops for your data using Triple.make or Relation.make accordingly.
15
+ const testEntity = await Graph.createEntity({
16
+ name: 'Test Entity 4 by Nik',
17
+ });
18
+ console.log('Test Entity Id:', testEntity.id);
19
+ console.log('Test Entity Ops:', testEntity.ops);
20
+ const { cid } = await Ipfs.publishEdit({
21
+ name: 'creating a test entity',
22
+ author: address,
23
+ ops: testEntity.ops,
24
+ });
25
+ console.log('CID:', cid);
26
+ // This returns the correct contract address and calldata depending on the space id
27
+ // Make sure you use the correct space id in the URL below and the correct network.
28
+ const result = await fetch(`https://api-testnet.grc-20.thegraph.com/space/${spaceId}/edit/calldata`, {
29
+ method: 'POST',
30
+ body: JSON.stringify({
31
+ cid: cid,
32
+ // Optionally specify TESTNET or MAINNET. Defaults to MAINNET
33
+ // network: "TESTNET",
34
+ network: 'MAINNET',
35
+ }),
36
+ });
37
+ const { to, data } = await result.json();
38
+ console.log('To:', to);
39
+ console.log('Data:', data);
40
+ const transaction = await client.sendTransaction({
41
+ to: to,
42
+ value: 0n,
43
+ data: data,
44
+ });
45
+ console.log('Transaction hash:', transaction);
46
+ expect(client).toBeDefined();
47
+ });
48
+ });
49
+ //# sourceMappingURL=smart-wallet-2.test-invalid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-wallet-2.test-invalid.js","sourceRoot":"","sources":["../../src/smart-wallet-2.test-invalid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,QAAQ,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;IACjE,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,OAAO,GAAG,4CAA4C,CAAC;QAC7D,MAAM,OAAO,GAAG,sCAAsC,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,UAAU,EAAE,oEAAoE;YAChF,gGAAgG;SACjG,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAEzC,oEAAoE;QACpE,oEAAoE;QACpE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC;YAC1C,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;YACrC,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,UAAU,CAAC,GAAG;SACpB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEzB,mFAAmF;QACnF,mFAAmF;QACnF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iDAAiD,OAAO,gBAAgB,EAAE;YACnG,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,EAAE,GAAG;gBACR,6DAA6D;gBAC7D,sBAAsB;gBACtB,OAAO,EAAE,SAAS;aACnB,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE3B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YAC/C,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;QAE9C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=smart-wallet-2.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-wallet-2.test.d.ts","sourceRoot":"","sources":["../../src/smart-wallet-2.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { GraphV2, IpfsV2 } from '~/index.js';
3
+ import { getSmartAccountWalletClient } from './smart-wallet.js';
4
+ describe('getSmartAccountWalletClient', { timeout: 6000000 }, () => {
5
+ it('should create a client with the default RPC URL when no RPC URL is provided', async () => {
6
+ const address = '0x7fd1BF705f4202C76434A494b88E7E1515D7688A';
7
+ const spaceId = '0f3aa347-efa3-4919-91d1-bb63a382553d';
8
+ const client = await getSmartAccountWalletClient({
9
+ privateKey: '0x9054bbced0e1a05a5dea2ff9446ea30fc98eb1934342bd2232b8753ffc46894d',
10
+ // rpcUrl: 'https://geo.rpc.pinax.network/v1/b970125fc31219b50e40d56c345496157b71ad1d9ee0016b/',
11
+ });
12
+ console.log('Your spaceId is:', spaceId);
13
+ // Once you have a personal space you can write data to it. Generate
14
+ // ops for your data using Triple.make or Relation.make accordingly.
15
+ const testEntity = await GraphV2.createEntity({
16
+ name: 'Test Entity 4 by Nik',
17
+ });
18
+ console.log('Test Entity Id:', testEntity.id);
19
+ console.log('Test Entity Ops:', testEntity.ops);
20
+ const { cid } = await IpfsV2.publishEdit({
21
+ name: 'creating a test entity',
22
+ author: address,
23
+ ops: testEntity.ops,
24
+ });
25
+ console.log('CID:', cid);
26
+ // This returns the correct contract address and calldata depending on the space id
27
+ // Make sure you use the correct space id in the URL below and the correct network.
28
+ const result = await fetch(`https://api-testnet.grc-20.thegraph.com/space/${spaceId}/edit/calldata`, {
29
+ method: 'POST',
30
+ body: JSON.stringify({
31
+ cid: cid,
32
+ // Optionally specify TESTNET or MAINNET. Defaults to MAINNET
33
+ // network: "TESTNET",
34
+ network: 'MAINNET',
35
+ }),
36
+ });
37
+ const { to, data } = await result.json();
38
+ console.log('To:', to);
39
+ console.log('Data:', data);
40
+ const transaction = await client.sendTransaction({
41
+ to: to,
42
+ value: 0n,
43
+ data: data,
44
+ });
45
+ console.log('Transaction hash:', transaction);
46
+ expect(client).toBeDefined();
47
+ });
48
+ });
49
+ //# sourceMappingURL=smart-wallet-2.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-wallet-2.test.js","sourceRoot":"","sources":["../../src/smart-wallet-2.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,QAAQ,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;IACjE,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,OAAO,GAAG,4CAA4C,CAAC;QAC7D,MAAM,OAAO,GAAG,sCAAsC,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,UAAU,EAAE,oEAAoE;YAChF,gGAAgG;SACjG,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAEzC,oEAAoE;QACpE,oEAAoE;QACpE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;YAC5C,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;YACvC,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,UAAU,CAAC,GAAG;SACpB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEzB,mFAAmF;QACnF,mFAAmF;QACnF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iDAAiD,OAAO,gBAAgB,EAAE;YACnG,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,EAAE,GAAG;gBACR,6DAA6D;gBAC7D,sBAAsB;gBACtB,OAAO,EAAE,SAAS;aACnB,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE3B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YAC/C,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;QAE9C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * This module provides ids for commonly used entities across the Knowledge Graph.
3
+ */
4
+ export * as ContentIds from './core/idsv2/content.js';
5
+ export * as NetworkIds from './core/idsv2/network.js';
6
+ export * as SystemIds from './core/idsv2/system.js';
7
+ //# sourceMappingURL=system-ids-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-ids-v2.d.ts","sourceRoot":"","sources":["../../src/system-ids-v2.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC"}