@graphprotocol/grc-20 0.31.0 → 0.32.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 (363) hide show
  1. package/README.md +4 -0
  2. package/dist/constants.d.ts +7 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +8 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/convert-ids.d.ts +2 -0
  7. package/dist/convert-ids.d.ts.map +1 -0
  8. package/dist/convert-ids.js +42 -0
  9. package/dist/convert-ids.js.map +1 -0
  10. package/dist/examples/ranks/create-ordinal-rank.js +4 -4
  11. package/dist/examples/ranks/create-ordinal-rank.js.map +1 -1
  12. package/dist/examples/ranks/create-weighted-rank.js +4 -4
  13. package/dist/examples/ranks/create-weighted-rank.js.map +1 -1
  14. package/dist/proto.d.ts +4 -8
  15. package/dist/proto.d.ts.map +1 -1
  16. package/dist/proto.js +4 -8
  17. package/dist/proto.js.map +1 -1
  18. package/dist/protov2.d.ts +11 -0
  19. package/dist/protov2.d.ts.map +1 -0
  20. package/dist/protov2.js +11 -0
  21. package/dist/protov2.js.map +1 -0
  22. package/dist/scripts/setup-rank-types.d.ts +2 -2
  23. package/dist/scripts/setup-rank-types.d.ts.map +1 -1
  24. package/dist/scripts/setup-rank-types.js.map +1 -1
  25. package/dist/src/codec/convert.d.ts +18 -0
  26. package/dist/src/codec/convert.d.ts.map +1 -0
  27. package/dist/src/codec/convert.js +188 -0
  28. package/dist/src/codec/convert.js.map +1 -0
  29. package/dist/src/core/account.d.ts +2 -2
  30. package/dist/src/core/account.d.ts.map +1 -1
  31. package/dist/src/core/account.js +2 -0
  32. package/dist/src/core/account.js.map +1 -1
  33. package/dist/src/core/account.test.js +69 -22
  34. package/dist/src/core/account.test.js.map +1 -1
  35. package/dist/src/core/blocks/data.d.ts +3 -3
  36. package/dist/src/core/blocks/data.d.ts.map +1 -1
  37. package/dist/src/core/blocks/data.js +2 -1
  38. package/dist/src/core/blocks/data.js.map +1 -1
  39. package/dist/src/core/blocks/data.test.js +74 -36
  40. package/dist/src/core/blocks/data.test.js.map +1 -1
  41. package/dist/src/core/blocks/image.d.ts +15 -0
  42. package/dist/src/core/blocks/image.d.ts.map +1 -0
  43. package/dist/src/core/blocks/image.js +15 -0
  44. package/dist/src/core/blocks/image.js.map +1 -0
  45. package/dist/src/core/blocks/text.d.ts +3 -3
  46. package/dist/src/core/blocks/text.d.ts.map +1 -1
  47. package/dist/src/core/blocks/text.js +2 -1
  48. package/dist/src/core/blocks/text.js.map +1 -1
  49. package/dist/src/core/blocks/text.test.js +79 -15
  50. package/dist/src/core/blocks/text.test.js.map +1 -1
  51. package/dist/src/core/idsv2/content.d.ts +59 -0
  52. package/dist/src/core/idsv2/content.d.ts.map +1 -0
  53. package/dist/src/core/idsv2/content.js +59 -0
  54. package/dist/src/core/idsv2/content.js.map +1 -0
  55. package/dist/src/core/idsv2/network.d.ts +5 -0
  56. package/dist/src/core/idsv2/network.d.ts.map +1 -0
  57. package/dist/src/core/idsv2/network.js +5 -0
  58. package/dist/src/core/idsv2/network.js.map +1 -0
  59. package/dist/src/core/idsv2/system.d.ts +222 -0
  60. package/dist/src/core/idsv2/system.d.ts.map +1 -0
  61. package/dist/src/core/idsv2/system.js +230 -0
  62. package/dist/src/core/idsv2/system.js.map +1 -0
  63. package/dist/src/core/image.d.ts +40 -0
  64. package/dist/src/core/image.d.ts.map +1 -0
  65. package/dist/src/core/image.js +76 -0
  66. package/dist/src/core/image.js.map +1 -0
  67. package/dist/src/core/image.test.d.ts +2 -0
  68. package/dist/src/core/image.test.d.ts.map +1 -0
  69. package/dist/src/core/image.test.js +52 -0
  70. package/dist/src/core/image.test.js.map +1 -0
  71. package/dist/src/core/relation.d.ts +88 -0
  72. package/dist/src/core/relation.d.ts.map +1 -0
  73. package/dist/src/core/relation.js +89 -0
  74. package/dist/src/core/relation.js.map +1 -0
  75. package/dist/src/core/relation.test.d.ts +2 -0
  76. package/dist/src/core/relation.test.d.ts.map +1 -0
  77. package/dist/src/core/relation.test.js +45 -0
  78. package/dist/src/core/relation.test.js.map +1 -0
  79. package/dist/src/core/triple.d.ts +50 -0
  80. package/dist/src/core/triple.d.ts.map +1 -0
  81. package/dist/src/core/triple.js +56 -0
  82. package/dist/src/core/triple.js.map +1 -0
  83. package/dist/src/core/triple.test.d.ts +2 -0
  84. package/dist/src/core/triple.test.d.ts.map +1 -0
  85. package/dist/src/core/triple.test.js +37 -0
  86. package/dist/src/core/triple.test.js.map +1 -0
  87. package/dist/src/encoding.d.ts +2 -1
  88. package/dist/src/encoding.d.ts.map +1 -1
  89. package/dist/src/encoding.js +2 -2
  90. package/dist/src/encoding.js.map +1 -1
  91. package/dist/src/encoding.test.d.ts +2 -0
  92. package/dist/src/encoding.test.d.ts.map +1 -0
  93. package/dist/src/encoding.test.js +644 -0
  94. package/dist/src/encoding.test.js.map +1 -0
  95. package/dist/src/encodings/get-register-space-calldata.d.ts +32 -0
  96. package/dist/src/encodings/get-register-space-calldata.d.ts.map +1 -0
  97. package/dist/src/encodings/get-register-space-calldata.js +39 -0
  98. package/dist/src/encodings/get-register-space-calldata.js.map +1 -0
  99. package/dist/src/encodings/get-register-space-calldata.test.d.ts +2 -0
  100. package/dist/src/encodings/get-register-space-calldata.test.d.ts.map +1 -0
  101. package/dist/src/encodings/get-register-space-calldata.test.js +15 -0
  102. package/dist/src/encodings/get-register-space-calldata.test.js.map +1 -0
  103. package/dist/src/full-flow-test.test.js +125 -37
  104. package/dist/src/full-flow-test.test.js.map +1 -1
  105. package/dist/src/graph/constants.d.ts +4 -0
  106. package/dist/src/graph/constants.d.ts.map +1 -1
  107. package/dist/src/graph/constants.js +14 -0
  108. package/dist/src/graph/constants.js.map +1 -1
  109. package/dist/src/graph/create-entity.d.ts +0 -1
  110. package/dist/src/graph/create-entity.d.ts.map +1 -1
  111. package/dist/src/graph/create-entity.js +155 -111
  112. package/dist/src/graph/create-entity.js.map +1 -1
  113. package/dist/src/graph/create-entity.test.js +339 -206
  114. package/dist/src/graph/create-entity.test.js.map +1 -1
  115. package/dist/src/graph/create-image.d.ts.map +1 -1
  116. package/dist/src/graph/create-image.js +15 -14
  117. package/dist/src/graph/create-image.js.map +1 -1
  118. package/dist/src/graph/create-image.test.js +109 -50
  119. package/dist/src/graph/create-image.test.js.map +1 -1
  120. package/dist/src/graph/create-property.d.ts.map +1 -1
  121. package/dist/src/graph/create-property.js +10 -19
  122. package/dist/src/graph/create-property.js.map +1 -1
  123. package/dist/src/graph/create-property.test.js +129 -19
  124. package/dist/src/graph/create-property.test.js.map +1 -1
  125. package/dist/src/graph/create-relation.d.ts +1 -3
  126. package/dist/src/graph/create-relation.d.ts.map +1 -1
  127. package/dist/src/graph/create-relation.js +21 -37
  128. package/dist/src/graph/create-relation.js.map +1 -1
  129. package/dist/src/graph/create-relation.test.js +186 -200
  130. package/dist/src/graph/create-relation.test.js.map +1 -1
  131. package/dist/src/graph/create-space.d.ts +4 -3
  132. package/dist/src/graph/create-space.d.ts.map +1 -1
  133. package/dist/src/graph/create-space.js +2 -2
  134. package/dist/src/graph/create-space.js.map +1 -1
  135. package/dist/src/graph/create-type.d.ts.map +1 -1
  136. package/dist/src/graph/create-type.js +16 -21
  137. package/dist/src/graph/create-type.js.map +1 -1
  138. package/dist/src/graph/create-type.test.js +76 -67
  139. package/dist/src/graph/create-type.test.js.map +1 -1
  140. package/dist/src/graph/delete-entity.d.ts +14 -0
  141. package/dist/src/graph/delete-entity.d.ts.map +1 -0
  142. package/dist/src/graph/delete-entity.js +21 -0
  143. package/dist/src/graph/delete-entity.js.map +1 -0
  144. package/dist/src/graph/delete-entity.test.d.ts +2 -0
  145. package/dist/src/graph/delete-entity.test.d.ts.map +1 -0
  146. package/dist/src/graph/delete-entity.test.js +23 -0
  147. package/dist/src/graph/delete-entity.test.js.map +1 -0
  148. package/dist/src/graph/delete-relation.d.ts.map +1 -1
  149. package/dist/src/graph/delete-relation.js +3 -6
  150. package/dist/src/graph/delete-relation.js.map +1 -1
  151. package/dist/src/graph/delete-relation.test.js +6 -8
  152. package/dist/src/graph/delete-relation.test.js.map +1 -1
  153. package/dist/src/graph/graph.test.d.ts +2 -0
  154. package/dist/src/graph/graph.test.d.ts.map +1 -0
  155. package/dist/src/graph/graph.test.js +46 -0
  156. package/dist/src/graph/graph.test.js.map +1 -0
  157. package/dist/src/graph/helpers/create-default-properties.d.ts +5 -0
  158. package/dist/src/graph/helpers/create-default-properties.d.ts.map +1 -0
  159. package/dist/src/graph/helpers/create-default-properties.js +44 -0
  160. package/dist/src/graph/helpers/create-default-properties.js.map +1 -0
  161. package/dist/src/graph/helpers/create-properties.d.ts +8 -0
  162. package/dist/src/graph/helpers/create-properties.d.ts.map +1 -0
  163. package/dist/src/graph/helpers/create-properties.js +53 -0
  164. package/dist/src/graph/helpers/create-properties.js.map +1 -0
  165. package/dist/src/graph/index.d.ts +1 -4
  166. package/dist/src/graph/index.d.ts.map +1 -1
  167. package/dist/src/graph/index.js +1 -4
  168. package/dist/src/graph/index.js.map +1 -1
  169. package/dist/src/graph/update-entity.d.ts.map +1 -1
  170. package/dist/src/graph/update-entity.js +109 -57
  171. package/dist/src/graph/update-entity.js.map +1 -1
  172. package/dist/src/graph/update-entity.test.js +167 -40
  173. package/dist/src/graph/update-entity.test.js.map +1 -1
  174. package/dist/src/graph/update-relation.d.ts +1 -2
  175. package/dist/src/graph/update-relation.d.ts.map +1 -1
  176. package/dist/src/graph/update-relation.js +12 -16
  177. package/dist/src/graph/update-relation.js.map +1 -1
  178. package/dist/src/graph/update-relation.test.js +75 -109
  179. package/dist/src/graph/update-relation.test.js.map +1 -1
  180. package/dist/src/graphv2/constants.d.ts +2 -0
  181. package/dist/src/graphv2/constants.d.ts.map +1 -0
  182. package/dist/src/graphv2/constants.js +2 -0
  183. package/dist/src/graphv2/constants.js.map +1 -0
  184. package/dist/src/graphv2/create-entity.d.ts +52 -0
  185. package/dist/src/graphv2/create-entity.d.ts.map +1 -0
  186. package/dist/src/graphv2/create-entity.js +140 -0
  187. package/dist/src/graphv2/create-entity.js.map +1 -0
  188. package/dist/src/graphv2/create-entity.test.d.ts +2 -0
  189. package/dist/src/graphv2/create-entity.test.d.ts.map +1 -0
  190. package/dist/src/graphv2/create-entity.test.js +158 -0
  191. package/dist/src/graphv2/create-entity.test.js.map +1 -0
  192. package/dist/src/graphv2/create-image.d.ts +28 -0
  193. package/dist/src/graphv2/create-image.d.ts.map +1 -0
  194. package/dist/src/graphv2/create-image.js +71 -0
  195. package/dist/src/graphv2/create-image.js.map +1 -0
  196. package/dist/src/graphv2/create-image.test.d.ts +2 -0
  197. package/dist/src/graphv2/create-image.test.d.ts.map +1 -0
  198. package/dist/src/graphv2/create-image.test.js +142 -0
  199. package/dist/src/graphv2/create-image.test.js.map +1 -0
  200. package/dist/src/graphv2/create-property.d.ts +22 -0
  201. package/dist/src/graphv2/create-property.d.ts.map +1 -0
  202. package/dist/src/graphv2/create-property.js +129 -0
  203. package/dist/src/graphv2/create-property.js.map +1 -0
  204. package/dist/src/graphv2/create-property.test.d.ts +2 -0
  205. package/dist/src/graphv2/create-property.test.d.ts.map +1 -0
  206. package/dist/src/graphv2/create-property.test.js +82 -0
  207. package/dist/src/graphv2/create-property.test.js.map +1 -0
  208. package/dist/src/graphv2/create-relation.d.ts +33 -0
  209. package/dist/src/graphv2/create-relation.d.ts.map +1 -0
  210. package/dist/src/graphv2/create-relation.js +66 -0
  211. package/dist/src/graphv2/create-relation.js.map +1 -0
  212. package/dist/src/graphv2/create-relation.test.d.ts +2 -0
  213. package/dist/src/graphv2/create-relation.test.d.ts.map +1 -0
  214. package/dist/src/graphv2/create-relation.test.js +208 -0
  215. package/dist/src/graphv2/create-relation.test.js.map +1 -0
  216. package/dist/src/graphv2/create-space.d.ts +13 -0
  217. package/dist/src/graphv2/create-space.d.ts.map +1 -0
  218. package/dist/src/graphv2/create-space.js +21 -0
  219. package/dist/src/graphv2/create-space.js.map +1 -0
  220. package/dist/src/graphv2/create-type.d.ts +22 -0
  221. package/dist/src/graphv2/create-type.d.ts.map +1 -0
  222. package/dist/src/graphv2/create-type.js +64 -0
  223. package/dist/src/graphv2/create-type.js.map +1 -0
  224. package/dist/src/graphv2/create-type.test.d.ts +2 -0
  225. package/dist/src/graphv2/create-type.test.d.ts.map +1 -0
  226. package/dist/src/graphv2/create-type.test.js +109 -0
  227. package/dist/src/graphv2/create-type.test.js.map +1 -0
  228. package/dist/src/graphv2/delete-entity.d.ts +14 -0
  229. package/dist/src/graphv2/delete-entity.d.ts.map +1 -0
  230. package/dist/src/graphv2/delete-entity.js +21 -0
  231. package/dist/src/graphv2/delete-entity.js.map +1 -0
  232. package/dist/src/graphv2/delete-entity.test.d.ts +2 -0
  233. package/dist/src/graphv2/delete-entity.test.d.ts.map +1 -0
  234. package/dist/src/graphv2/delete-entity.test.js +24 -0
  235. package/dist/src/graphv2/delete-entity.test.js.map +1 -0
  236. package/dist/src/graphv2/delete-relation.d.ts +14 -0
  237. package/dist/src/graphv2/delete-relation.d.ts.map +1 -0
  238. package/dist/src/graphv2/delete-relation.js +21 -0
  239. package/dist/src/graphv2/delete-relation.js.map +1 -0
  240. package/dist/src/graphv2/delete-relation.test.d.ts +2 -0
  241. package/dist/src/graphv2/delete-relation.test.d.ts.map +1 -0
  242. package/dist/src/graphv2/delete-relation.test.js +24 -0
  243. package/dist/src/graphv2/delete-relation.test.js.map +1 -0
  244. package/dist/src/graphv2/index.d.ts +12 -0
  245. package/dist/src/graphv2/index.d.ts.map +1 -0
  246. package/dist/src/graphv2/index.js +12 -0
  247. package/dist/src/graphv2/index.js.map +1 -0
  248. package/dist/src/graphv2/remove-entity-properties.d.ts +25 -0
  249. package/dist/src/graphv2/remove-entity-properties.d.ts.map +1 -0
  250. package/dist/src/graphv2/remove-entity-properties.js +24 -0
  251. package/dist/src/graphv2/remove-entity-properties.js.map +1 -0
  252. package/dist/src/graphv2/unset-entity-values.d.ts +21 -0
  253. package/dist/src/graphv2/unset-entity-values.d.ts.map +1 -0
  254. package/dist/src/graphv2/unset-entity-values.js +26 -0
  255. package/dist/src/graphv2/unset-entity-values.js.map +1 -0
  256. package/dist/src/graphv2/unset-entity-values.test.d.ts +2 -0
  257. package/dist/src/graphv2/unset-entity-values.test.d.ts.map +1 -0
  258. package/dist/src/graphv2/unset-entity-values.test.js +40 -0
  259. package/dist/src/graphv2/unset-entity-values.test.js.map +1 -0
  260. package/dist/src/graphv2/unset-relation-fields.d.ts +25 -0
  261. package/dist/src/graphv2/unset-relation-fields.d.ts.map +1 -0
  262. package/dist/src/graphv2/unset-relation-fields.js +34 -0
  263. package/dist/src/graphv2/unset-relation-fields.js.map +1 -0
  264. package/dist/src/graphv2/unset-relation-fields.test.d.ts +2 -0
  265. package/dist/src/graphv2/unset-relation-fields.test.d.ts.map +1 -0
  266. package/dist/src/graphv2/unset-relation-fields.test.js +64 -0
  267. package/dist/src/graphv2/unset-relation-fields.test.js.map +1 -0
  268. package/dist/src/graphv2/update-entity.d.ts +28 -0
  269. package/dist/src/graphv2/update-entity.d.ts.map +1 -0
  270. package/dist/src/graphv2/update-entity.js +73 -0
  271. package/dist/src/graphv2/update-entity.js.map +1 -0
  272. package/dist/src/graphv2/update-entity.test.d.ts +2 -0
  273. package/dist/src/graphv2/update-entity.test.d.ts.map +1 -0
  274. package/dist/src/graphv2/update-entity.test.js +116 -0
  275. package/dist/src/graphv2/update-entity.test.js.map +1 -0
  276. package/dist/src/graphv2/update-relation.d.ts +21 -0
  277. package/dist/src/graphv2/update-relation.d.ts.map +1 -0
  278. package/dist/src/graphv2/update-relation.js +37 -0
  279. package/dist/src/graphv2/update-relation.js.map +1 -0
  280. package/dist/src/id-utils.d.ts +6 -0
  281. package/dist/src/id-utils.d.ts.map +1 -1
  282. package/dist/src/id-utils.js +13 -0
  283. package/dist/src/id-utils.js.map +1 -1
  284. package/dist/src/idv2.d.ts +27 -0
  285. package/dist/src/idv2.d.ts.map +1 -0
  286. package/dist/src/idv2.js +88 -0
  287. package/dist/src/idv2.js.map +1 -0
  288. package/dist/src/idv2.test.d.ts +2 -0
  289. package/dist/src/idv2.test.d.ts.map +1 -0
  290. package/dist/src/idv2.test.js +26 -0
  291. package/dist/src/idv2.test.js.map +1 -0
  292. package/dist/src/image.d.ts +8 -0
  293. package/dist/src/image.d.ts.map +1 -0
  294. package/dist/src/image.js +8 -0
  295. package/dist/src/image.js.map +1 -0
  296. package/dist/src/ipfs.d.ts +7 -6
  297. package/dist/src/ipfs.d.ts.map +1 -1
  298. package/dist/src/ipfs.js +31 -11
  299. package/dist/src/ipfs.js.map +1 -1
  300. package/dist/src/ipfs.test.js +130 -17
  301. package/dist/src/ipfs.test.js.map +1 -1
  302. package/dist/src/ipfsv2.d.ts +96 -0
  303. package/dist/src/ipfsv2.d.ts.map +1 -0
  304. package/dist/src/ipfsv2.js +163 -0
  305. package/dist/src/ipfsv2.js.map +1 -0
  306. package/dist/src/ipfsv2.test.d.ts +2 -0
  307. package/dist/src/ipfsv2.test.d.ts.map +1 -0
  308. package/dist/src/ipfsv2.test.js +22 -0
  309. package/dist/src/ipfsv2.test.js.map +1 -0
  310. package/dist/src/proto/editv2.d.ts +11 -0
  311. package/dist/src/proto/editv2.d.ts.map +1 -0
  312. package/dist/src/proto/editv2.js +81 -0
  313. package/dist/src/proto/editv2.js.map +1 -0
  314. package/dist/src/proto/editv2.test.d.ts +2 -0
  315. package/dist/src/proto/editv2.test.d.ts.map +1 -0
  316. package/dist/src/proto/editv2.test.js +211 -0
  317. package/dist/src/proto/editv2.test.js.map +1 -0
  318. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts +410 -0
  319. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts.map +1 -0
  320. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js +536 -0
  321. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js.map +1 -0
  322. package/dist/src/proto/index.d.ts +7 -1
  323. package/dist/src/proto/index.d.ts.map +1 -1
  324. package/dist/src/proto/index.js +6 -1
  325. package/dist/src/proto/index.js.map +1 -1
  326. package/dist/src/ranks/create-rank.d.ts.map +1 -1
  327. package/dist/src/ranks/create-rank.js +54 -47
  328. package/dist/src/ranks/create-rank.js.map +1 -1
  329. package/dist/src/ranks/create-rank.test.js +181 -94
  330. package/dist/src/ranks/create-rank.test.js.map +1 -1
  331. package/dist/src/relation.d.ts +7 -0
  332. package/dist/src/relation.d.ts.map +1 -0
  333. package/dist/src/relation.js +7 -0
  334. package/dist/src/relation.js.map +1 -0
  335. package/dist/src/smart-wallet-2.test-invalid.d.ts +2 -0
  336. package/dist/src/smart-wallet-2.test-invalid.d.ts.map +1 -0
  337. package/dist/src/smart-wallet-2.test-invalid.js +49 -0
  338. package/dist/src/smart-wallet-2.test-invalid.js.map +1 -0
  339. package/dist/src/smart-wallet-2.test.d.ts +2 -0
  340. package/dist/src/smart-wallet-2.test.d.ts.map +1 -0
  341. package/dist/src/smart-wallet-2.test.js +49 -0
  342. package/dist/src/smart-wallet-2.test.js.map +1 -0
  343. package/dist/src/system-ids-v2.d.ts +7 -0
  344. package/dist/src/system-ids-v2.d.ts.map +1 -0
  345. package/dist/src/system-ids-v2.js +7 -0
  346. package/dist/src/system-ids-v2.js.map +1 -0
  347. package/dist/src/triple.d.ts +7 -0
  348. package/dist/src/triple.d.ts.map +1 -0
  349. package/dist/src/triple.js +7 -0
  350. package/dist/src/triple.js.map +1 -0
  351. package/dist/src/types-backup.d.ts +134 -0
  352. package/dist/src/types-backup.d.ts.map +1 -0
  353. package/dist/src/types-backup.js +13 -0
  354. package/dist/src/types-backup.js.map +1 -0
  355. package/dist/src/types.d.ts +52 -89
  356. package/dist/src/types.d.ts.map +1 -1
  357. package/dist/src/types.js.map +1 -1
  358. package/dist/src/typesv2.d.ts +173 -0
  359. package/dist/src/typesv2.d.ts.map +1 -0
  360. package/dist/src/typesv2.js +8 -0
  361. package/dist/src/typesv2.js.map +1 -0
  362. package/dist/tsconfig.tsbuildinfo +1 -0
  363. package/package.json +2 -5
package/dist/src/ipfs.js CHANGED
@@ -4,17 +4,24 @@
4
4
  *
5
5
  * @since 0.1.1
6
6
  */
7
+ import { derivedUuidFromString, encodeEdit, randomId, } from '@geoprotocol/grc-20';
7
8
  import { Micro } from 'effect';
8
9
  import { gzipSync } from 'fflate';
9
10
  import { imageSize } from 'image-size';
10
- import { Edit, EditProposal } from '../proto.js';
11
- import { MAINNET_API_ORIGIN, TESTNET_API_ORIGIN } from './graph/constants.js';
11
+ import { getApiOrigin } from './graph/constants.js';
12
12
  import { fromBytes } from './id-utils.js';
13
13
  class IpfsUploadError extends Error {
14
14
  _tag = 'IpfsUploadError';
15
15
  }
16
16
  /**
17
- * Generates correct protobuf encoding for an Edit and uploads it to IPFS.
17
+ * Converts a hex string (like an ethereum address) to a GRC-20 Id.
18
+ * Uses derived UUID since ethereum addresses (20 bytes) don't fit directly into UUIDs (16 bytes).
19
+ */
20
+ function hexToGrcId(hex) {
21
+ return derivedUuidFromString(hex);
22
+ }
23
+ /**
24
+ * Generates correct GRC-20 v2 binary encoding for an Edit and uploads it to IPFS.
18
25
  *
19
26
  * @example
20
27
  * ```ts
@@ -32,14 +39,27 @@ class IpfsUploadError extends Error {
32
39
  */
33
40
  export async function publishEdit(args) {
34
41
  const { name, ops, author, network = 'MAINNET' } = args;
35
- const edit = EditProposal.encode({ name, ops, author });
36
- // @ts-expect-error - this is a type missmatch which is fine
37
- const blob = new Blob([edit], { type: 'application/octet-stream' });
42
+ // Generate a new edit ID
43
+ const editId = randomId();
44
+ // Build the GRC-20 v2 Edit structure
45
+ const grcEdit = {
46
+ id: editId,
47
+ name,
48
+ authors: [hexToGrcId(author)],
49
+ createdAt: BigInt(Date.now()) * 1000n, // Convert to microseconds
50
+ ops,
51
+ };
52
+ // Encode to binary format
53
+ const binary = encodeEdit(grcEdit);
54
+ // Create a copy to ensure we have a regular ArrayBuffer for Blob compatibility
55
+ const binaryArray = new Uint8Array(binary);
56
+ const blob = new Blob([binaryArray], { type: 'application/octet-stream' });
38
57
  const formData = new FormData();
39
58
  formData.append('file', blob);
40
59
  const cid = await Micro.runPromise(uploadBinary(formData, network));
41
- const result = Edit.fromBinary(edit);
42
- return { cid, editId: fromBytes(result.id) };
60
+ // Convert the GrcId back to a grc-20-ts Id string
61
+ const editIdString = fromBytes(editId);
62
+ return { cid, editId: editIdString };
43
63
  }
44
64
  export async function uploadImage(params, network, alternativeGateway) {
45
65
  const formData = new FormData();
@@ -128,7 +148,7 @@ export async function uploadCSV(csvString, network) {
128
148
  function uploadBinary(formData, network) {
129
149
  return Micro.gen(function* () {
130
150
  const result = yield* Micro.tryPromise({
131
- try: () => fetch(`${network === 'TESTNET' ? TESTNET_API_ORIGIN : MAINNET_API_ORIGIN}/ipfs/upload-edit`, {
151
+ try: () => fetch(`${getApiOrigin(network)}/ipfs/upload-edit`, {
132
152
  method: 'POST',
133
153
  body: formData,
134
154
  }),
@@ -146,9 +166,9 @@ function uploadBinary(formData, network) {
146
166
  }
147
167
  function uploadFile(formData, network, alternativeGateway) {
148
168
  return Micro.gen(function* () {
149
- let apiUrl = `${network === 'TESTNET' ? TESTNET_API_ORIGIN : MAINNET_API_ORIGIN}/ipfs/upload-file`;
169
+ let apiUrl = `${getApiOrigin(network)}/ipfs/upload-file`;
150
170
  if (alternativeGateway) {
151
- apiUrl = `${TESTNET_API_ORIGIN}/ipfs/upload-file-alternative-gateway`;
171
+ apiUrl = `${getApiOrigin('TESTNET')}/ipfs/upload-file-alternative-gateway`;
152
172
  }
153
173
  const result = yield* Micro.tryPromise({
154
174
  try: () => fetch(apiUrl, {
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../src/ipfs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../src/ipfs.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,137 @@
1
- import { it } from 'vitest';
1
+ import { describe, expect, it } from 'vitest';
2
2
  import { WEBSITE_PROPERTY } from './core/ids/content.js';
3
+ import { TYPES_PROPERTY } from './core/ids/system.js';
3
4
  import { createEntity } from './graph/create-entity.js';
5
+ import { createRelation } from './graph/create-relation.js';
6
+ import { deleteRelation } from './graph/delete-relation.js';
7
+ import { updateEntity } from './graph/update-entity.js';
8
+ import { updateRelation } from './graph/update-relation.js';
9
+ import { generate } from './id-utils.js';
4
10
  import { publishEdit } from './ipfs.js';
5
- it('full flow', async () => {
6
- const { ops } = createEntity({
7
- name: 'test',
8
- description: 'test',
9
- values: [
10
- {
11
- property: WEBSITE_PROPERTY,
12
- value: 'test',
13
- },
14
- ],
11
+ describe('publishEdit', () => {
12
+ it('full flow with createEntity', async () => {
13
+ const { ops } = createEntity({
14
+ name: 'test',
15
+ description: 'test',
16
+ values: [
17
+ {
18
+ property: WEBSITE_PROPERTY,
19
+ type: 'text',
20
+ value: 'test',
21
+ },
22
+ ],
23
+ });
24
+ const { cid, editId } = await publishEdit({
25
+ name: 'test',
26
+ ops,
27
+ author: '0x000000000000000000000000000000000000',
28
+ network: 'TESTNET_V2',
29
+ });
30
+ expect(cid).toMatch(/^ipfs:\/\//);
31
+ expect(editId).toBeTruthy();
15
32
  });
16
- const { cid, editId } = await publishEdit({
17
- name: 'test',
18
- ops,
19
- author: '0x000000000000000000000000000000000000',
20
- network: 'TESTNET',
33
+ it('handles updateEntity ops', async () => {
34
+ const entityId = generate();
35
+ const { ops } = updateEntity({
36
+ id: entityId,
37
+ name: 'updated name',
38
+ description: 'updated description',
39
+ values: [{ property: WEBSITE_PROPERTY, type: 'text', value: 'https://example.com' }],
40
+ });
41
+ const { cid, editId } = await publishEdit({
42
+ name: 'update test',
43
+ ops,
44
+ author: '0x000000000000000000000000000000000000',
45
+ network: 'TESTNET_V2',
46
+ });
47
+ expect(cid).toMatch(/^ipfs:\/\//);
48
+ expect(editId).toBeTruthy();
49
+ });
50
+ it('handles createRelation ops', async () => {
51
+ const fromEntityId = generate();
52
+ const toEntityId = generate();
53
+ const { ops } = createRelation({
54
+ fromEntity: fromEntityId,
55
+ toEntity: toEntityId,
56
+ type: TYPES_PROPERTY,
57
+ });
58
+ const { cid, editId } = await publishEdit({
59
+ name: 'relation test',
60
+ ops,
61
+ author: '0x000000000000000000000000000000000000',
62
+ network: 'TESTNET_V2',
63
+ });
64
+ expect(cid).toMatch(/^ipfs:\/\//);
65
+ expect(editId).toBeTruthy();
66
+ });
67
+ it('handles deleteRelation ops', async () => {
68
+ const relationId = generate();
69
+ const { ops } = deleteRelation({ id: relationId });
70
+ const { cid, editId } = await publishEdit({
71
+ name: 'delete relation test',
72
+ ops,
73
+ author: '0x000000000000000000000000000000000000',
74
+ network: 'TESTNET_V2',
75
+ });
76
+ expect(cid).toMatch(/^ipfs:\/\//);
77
+ expect(editId).toBeTruthy();
78
+ });
79
+ it('handles updateRelation ops', async () => {
80
+ const relationId = generate();
81
+ const { ops } = updateRelation({
82
+ id: relationId,
83
+ position: 'abc123',
84
+ });
85
+ const { cid, editId } = await publishEdit({
86
+ name: 'update relation test',
87
+ ops,
88
+ author: '0x000000000000000000000000000000000000',
89
+ network: 'TESTNET_V2',
90
+ });
91
+ expect(cid).toMatch(/^ipfs:\/\//);
92
+ expect(editId).toBeTruthy();
93
+ });
94
+ it('handles all value types in createEntity', async () => {
95
+ const propertyId = generate();
96
+ const { ops } = createEntity({
97
+ name: 'value types test',
98
+ values: [
99
+ { property: propertyId, type: 'text', value: 'text value' },
100
+ { property: propertyId, type: 'float64', value: 42.5 },
101
+ { property: propertyId, type: 'bool', value: true },
102
+ { property: propertyId, type: 'point', lon: -122.4, lat: 37.8 },
103
+ { property: propertyId, type: 'date', value: '2024-01-15' },
104
+ { property: propertyId, type: 'time', value: '14:30:00Z' },
105
+ { property: propertyId, type: 'datetime', value: '2024-01-15T14:30:00Z' },
106
+ { property: propertyId, type: 'schedule', value: 'FREQ=WEEKLY;BYDAY=MO' },
107
+ ],
108
+ });
109
+ const { cid, editId } = await publishEdit({
110
+ name: 'all value types test',
111
+ ops,
112
+ author: '0x000000000000000000000000000000000000',
113
+ network: 'TESTNET_V2',
114
+ });
115
+ expect(cid).toMatch(/^ipfs:\/\//);
116
+ expect(editId).toBeTruthy();
117
+ });
118
+ it('handles multiple ops in a single edit', async () => {
119
+ const entity1 = createEntity({ name: 'Entity 1' });
120
+ const entity2 = createEntity({ name: 'Entity 2' });
121
+ const relation = createRelation({
122
+ fromEntity: entity1.id,
123
+ toEntity: entity2.id,
124
+ type: TYPES_PROPERTY,
125
+ });
126
+ const ops = [...entity1.ops, ...entity2.ops, ...relation.ops];
127
+ const { cid, editId } = await publishEdit({
128
+ name: 'multiple ops test',
129
+ ops,
130
+ author: '0x000000000000000000000000000000000000',
131
+ network: 'TESTNET_V2',
132
+ });
133
+ expect(cid).toMatch(/^ipfs:\/\//);
134
+ expect(editId).toBeTruthy();
21
135
  });
22
- console.log(cid, editId);
23
136
  });
24
137
  //# sourceMappingURL=ipfs.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs.test.js","sourceRoot":"","sources":["../../src/ipfs.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;IACzB,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAC3B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE;YACN;gBACE,QAAQ,EAAE,gBAAgB;gBAC1B,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC;QACxC,IAAI,EAAE,MAAM;QACZ,GAAG;QACH,MAAM,EAAE,wCAAwC;QAChD,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ipfs.test.js","sourceRoot":"","sources":["../../src/ipfs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * This module provides utility functions for interacting with the default
3
+ * IPFS gateway in TypeScript.
4
+ *
5
+ * @since 0.1.1
6
+ */
7
+ import { type Id } from './idv2.js';
8
+ import type { Op } from './typesv2.js';
9
+ type PublishEditProposalParams = {
10
+ name: string;
11
+ ops: Op[];
12
+ author: string;
13
+ };
14
+ type PublishEditResult = {
15
+ cid: string;
16
+ editId: Id;
17
+ };
18
+ /**
19
+ * Generates correct protobuf encoding for an Edit and uploads it to IPFS.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { IPFS } from '@graphprotocol/grc-20';
24
+ *
25
+ * const { cid, editId } = await IPFS.publishEdit({
26
+ * name: 'Edit name',
27
+ * ops: ops,
28
+ * author: '0x000000000000000000000000000000000000',
29
+ * });
30
+ * ```
31
+ *
32
+ * @param args arguments for publishing an edit to IPFS {@link PublishEditProposalParams}
33
+ * @returns - {@link PublishEditResult}
34
+ */
35
+ export declare function publishEdit(args: PublishEditProposalParams): Promise<PublishEditResult>;
36
+ type PublishImageParams = {
37
+ blob: Blob;
38
+ } | {
39
+ url: string;
40
+ };
41
+ export declare function uploadImage(params: PublishImageParams): Promise<{
42
+ cid: `ipfs://${string}`;
43
+ dimensions: {
44
+ width: number;
45
+ height: number;
46
+ };
47
+ } | {
48
+ cid: `ipfs://${string}`;
49
+ dimensions?: undefined;
50
+ }>;
51
+ /**
52
+ * Uploads a CSV file to IPFS and returns the CID. This CSV
53
+ * file will be compressed using gzip before being uploaded.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const file = Bun.file('cities.csv');
58
+ * const fileText = await file.text();
59
+ *
60
+ * const cid = await Ipfs.uploadCSV(fileText);
61
+ * ```
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * import { Csv } from '@graphprotocol/grc-20';
66
+ *
67
+ * const csvString = Csv.stringify({
68
+ * data: Array.from({ length: 151_000 }, (_, i: number) => [i.toString(), (i * 2).toString(), (i * 3).toString()]),
69
+ * metadata: {
70
+ * filetype: 'CSV',
71
+ * columns: [
72
+ * {
73
+ * id: 'foo',
74
+ * type: 'TEXT',
75
+ * },
76
+ * {
77
+ * id: 'bar',
78
+ * type: 'NUMBER',
79
+ * },
80
+ * {
81
+ * id: 'baz',
82
+ * type: 'TEXT',
83
+ * },
84
+ * ],
85
+ * },
86
+ * })
87
+ *
88
+ * const cid = await Ipfs.uploadCSV(csvString);
89
+ * ```
90
+ *
91
+ * @param csvString The CSV to upload as a string
92
+ * @returns IPFS CID representing the uploaded file prefixed with `ipfs://`
93
+ */
94
+ export declare function uploadCSV(csvString: string): Promise<`ipfs://${string}`>;
95
+ export {};
96
+ //# sourceMappingURL=ipfsv2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfsv2.d.ts","sourceRoot":"","sources":["../../src/ipfsv2.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAMvC,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IAEvB,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAa7F;AAED,KAAK,kBAAkB,GACnB;IACE,IAAI,EAAE,IAAI,CAAC;CACZ,GACD;IACE,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEN,wBAAsB,WAAW,CAAC,MAAM,EAAE,kBAAkB;;;;;;;;;GAkC3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,MAAM,EAAE,CAAC,CAS9E"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * This module provides utility functions for interacting with the default
3
+ * IPFS gateway in TypeScript.
4
+ *
5
+ * @since 0.1.1
6
+ */
7
+ import { Micro } from 'effect';
8
+ import { gzipSync } from 'fflate';
9
+ import { imageSize } from 'image-size';
10
+ import { Edit, EditProposal } from '../protov2.js';
11
+ import { fromBytes } from './idv2.js';
12
+ class IpfsUploadError extends Error {
13
+ _tag = 'IpfsUploadError';
14
+ }
15
+ /**
16
+ * Generates correct protobuf encoding for an Edit and uploads it to IPFS.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { IPFS } from '@graphprotocol/grc-20';
21
+ *
22
+ * const { cid, editId } = await IPFS.publishEdit({
23
+ * name: 'Edit name',
24
+ * ops: ops,
25
+ * author: '0x000000000000000000000000000000000000',
26
+ * });
27
+ * ```
28
+ *
29
+ * @param args arguments for publishing an edit to IPFS {@link PublishEditProposalParams}
30
+ * @returns - {@link PublishEditResult}
31
+ */
32
+ export async function publishEdit(args) {
33
+ const { name, ops, author } = args;
34
+ const edit = EditProposal.encode({ name, ops, author });
35
+ const blob = new Blob([edit], { type: 'application/octet-stream' });
36
+ const formData = new FormData();
37
+ formData.append('file', blob);
38
+ const cid = await Micro.runPromise(uploadBinary(formData));
39
+ const result = Edit.fromBinary(edit);
40
+ return { cid, editId: fromBytes(result.id) };
41
+ }
42
+ export async function uploadImage(params) {
43
+ const formData = new FormData();
44
+ let blob;
45
+ if ('blob' in params) {
46
+ blob = params.blob;
47
+ }
48
+ else {
49
+ // fetch the image and upload it to IPFS
50
+ const response = await fetch(params.url);
51
+ blob = await response.blob();
52
+ }
53
+ formData.append('file', blob);
54
+ const buffer = Buffer.from(await blob.arrayBuffer());
55
+ let dimensions;
56
+ try {
57
+ dimensions = imageSize(buffer);
58
+ }
59
+ catch (error) { }
60
+ const cid = await Micro.runPromise(uploadFile(formData));
61
+ if (dimensions) {
62
+ return {
63
+ cid,
64
+ dimensions: {
65
+ width: dimensions.width,
66
+ height: dimensions.height,
67
+ },
68
+ };
69
+ }
70
+ return {
71
+ cid,
72
+ };
73
+ }
74
+ /**
75
+ * Uploads a CSV file to IPFS and returns the CID. This CSV
76
+ * file will be compressed using gzip before being uploaded.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const file = Bun.file('cities.csv');
81
+ * const fileText = await file.text();
82
+ *
83
+ * const cid = await Ipfs.uploadCSV(fileText);
84
+ * ```
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * import { Csv } from '@graphprotocol/grc-20';
89
+ *
90
+ * const csvString = Csv.stringify({
91
+ * data: Array.from({ length: 151_000 }, (_, i: number) => [i.toString(), (i * 2).toString(), (i * 3).toString()]),
92
+ * metadata: {
93
+ * filetype: 'CSV',
94
+ * columns: [
95
+ * {
96
+ * id: 'foo',
97
+ * type: 'TEXT',
98
+ * },
99
+ * {
100
+ * id: 'bar',
101
+ * type: 'NUMBER',
102
+ * },
103
+ * {
104
+ * id: 'baz',
105
+ * type: 'TEXT',
106
+ * },
107
+ * ],
108
+ * },
109
+ * })
110
+ *
111
+ * const cid = await Ipfs.uploadCSV(csvString);
112
+ * ```
113
+ *
114
+ * @param csvString The CSV to upload as a string
115
+ * @returns IPFS CID representing the uploaded file prefixed with `ipfs://`
116
+ */
117
+ export async function uploadCSV(csvString) {
118
+ const encoder = new TextEncoder();
119
+ const csvStringBytes = encoder.encode(csvString);
120
+ const blob = await gzipSync(csvStringBytes);
121
+ const formData = new FormData();
122
+ formData.append('file', new Blob([blob], { type: 'text/csv' }));
123
+ return await Micro.runPromise(uploadBinary(formData));
124
+ }
125
+ function uploadBinary(formData) {
126
+ return Micro.gen(function* () {
127
+ const result = yield* Micro.tryPromise({
128
+ try: () => fetch('https://api-testnet.grc-20.thegraph.com/ipfs/upload-edit', {
129
+ method: 'POST',
130
+ body: formData,
131
+ }),
132
+ catch: error => new IpfsUploadError(`Could not upload data to IPFS: ${error}`),
133
+ });
134
+ const maybeCid = yield* Micro.tryPromise({
135
+ try: async () => {
136
+ const { cid } = await result.json();
137
+ return cid;
138
+ },
139
+ catch: error => new IpfsUploadError(`Could not parse response from IPFS: ${error}`),
140
+ });
141
+ return maybeCid;
142
+ });
143
+ }
144
+ function uploadFile(formData) {
145
+ return Micro.gen(function* () {
146
+ const result = yield* Micro.tryPromise({
147
+ try: () => fetch('https://api-testnet.grc-20.thegraph.com/ipfs/upload-file', {
148
+ method: 'POST',
149
+ body: formData,
150
+ }),
151
+ catch: error => new IpfsUploadError(`Could not upload file to IPFS: ${error}`),
152
+ });
153
+ const maybeCid = yield* Micro.tryPromise({
154
+ try: async () => {
155
+ const { cid } = await result.json();
156
+ return cid;
157
+ },
158
+ catch: error => new IpfsUploadError(`Could not parse response from IPFS: ${error}`),
159
+ });
160
+ return maybeCid;
161
+ });
162
+ }
163
+ //# sourceMappingURL=ipfsv2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfsv2.js","sourceRoot":"","sources":["../../src/ipfsv2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ipfsv2.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfsv2.test.d.ts","sourceRoot":"","sources":["../../src/ipfsv2.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { it } from 'vitest';
2
+ import { WEBSITE_PROPERTY } from './core/idsv2/content.js';
3
+ import { createEntity } from './graphv2/create-entity.js';
4
+ import { publishEdit } from './ipfsv2.js';
5
+ it('full flow', async () => {
6
+ const { id, ops } = createEntity({
7
+ name: 'test',
8
+ description: 'test',
9
+ values: {
10
+ [WEBSITE_PROPERTY]: {
11
+ value: 'test',
12
+ },
13
+ },
14
+ });
15
+ const { cid, editId } = await publishEdit({
16
+ name: 'test',
17
+ ops,
18
+ author: '0x000000000000000000000000000000000000',
19
+ });
20
+ console.log(cid, editId);
21
+ });
22
+ //# sourceMappingURL=ipfsv2.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfsv2.test.js","sourceRoot":"","sources":["../../src/ipfsv2.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;IACzB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAC/B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE;YACN,CAAC,gBAAgB,CAAC,EAAE;gBAClB,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC;QACxC,IAAI,EAAE,MAAM;QACZ,GAAG;QACH,MAAM,EAAE,wCAAwC;KACjD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type Id } from '../idv2.js';
2
+ import type { Op } from '../typesv2.js';
3
+ type MakeEditProposalParams = {
4
+ name: string;
5
+ ops: Op[];
6
+ author: string;
7
+ language?: Id;
8
+ };
9
+ export declare function encode({ name, ops, author, language }: MakeEditProposalParams): Uint8Array;
10
+ export {};
11
+ //# sourceMappingURL=editv2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editv2.d.ts","sourceRoot":"","sources":["../../../src/proto/editv2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAiC,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAWxC,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,EAAE,CAAC;CACf,CAAC;AA6BF,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,UAAU,CAQ1F"}