@graphprotocol/grc-20 0.17.1 → 0.19.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 (260) hide show
  1. package/README.md +5 -6
  2. package/dist/convert-ids.d.ts +2 -0
  3. package/dist/convert-ids.d.ts.map +1 -0
  4. package/dist/convert-ids.js +42 -0
  5. package/dist/convert-ids.js.map +1 -0
  6. package/dist/protov2.d.ts +11 -0
  7. package/dist/protov2.d.ts.map +1 -0
  8. package/dist/protov2.js +11 -0
  9. package/dist/protov2.js.map +1 -0
  10. package/dist/src/core/blocks/image.d.ts +15 -0
  11. package/dist/src/core/blocks/image.d.ts.map +1 -0
  12. package/dist/src/core/blocks/image.js +15 -0
  13. package/dist/src/core/blocks/image.js.map +1 -0
  14. package/dist/src/core/idsv2/content.d.ts +59 -0
  15. package/dist/src/core/idsv2/content.d.ts.map +1 -0
  16. package/dist/src/core/idsv2/content.js +59 -0
  17. package/dist/src/core/idsv2/content.js.map +1 -0
  18. package/dist/src/core/idsv2/network.d.ts +5 -0
  19. package/dist/src/core/idsv2/network.d.ts.map +1 -0
  20. package/dist/src/core/idsv2/network.js +5 -0
  21. package/dist/src/core/idsv2/network.js.map +1 -0
  22. package/dist/src/core/idsv2/system.d.ts +222 -0
  23. package/dist/src/core/idsv2/system.d.ts.map +1 -0
  24. package/dist/src/core/idsv2/system.js +230 -0
  25. package/dist/src/core/idsv2/system.js.map +1 -0
  26. package/dist/src/core/image.d.ts +40 -0
  27. package/dist/src/core/image.d.ts.map +1 -0
  28. package/dist/src/core/image.js +76 -0
  29. package/dist/src/core/image.js.map +1 -0
  30. package/dist/src/core/image.test.d.ts +2 -0
  31. package/dist/src/core/image.test.d.ts.map +1 -0
  32. package/dist/src/core/image.test.js +52 -0
  33. package/dist/src/core/image.test.js.map +1 -0
  34. package/dist/src/core/relation.d.ts +88 -0
  35. package/dist/src/core/relation.d.ts.map +1 -0
  36. package/dist/src/core/relation.js +89 -0
  37. package/dist/src/core/relation.js.map +1 -0
  38. package/dist/src/core/relation.test.d.ts +2 -0
  39. package/dist/src/core/relation.test.d.ts.map +1 -0
  40. package/dist/src/core/relation.test.js +45 -0
  41. package/dist/src/core/relation.test.js.map +1 -0
  42. package/dist/src/core/triple.d.ts +50 -0
  43. package/dist/src/core/triple.d.ts.map +1 -0
  44. package/dist/src/core/triple.js +56 -0
  45. package/dist/src/core/triple.js.map +1 -0
  46. package/dist/src/core/triple.test.d.ts +2 -0
  47. package/dist/src/core/triple.test.d.ts.map +1 -0
  48. package/dist/src/core/triple.test.js +37 -0
  49. package/dist/src/core/triple.test.js.map +1 -0
  50. package/dist/src/encoding.d.ts.map +1 -1
  51. package/dist/src/encoding.js +3 -6
  52. package/dist/src/encoding.js.map +1 -1
  53. package/dist/src/full-flow-test.test.d.ts +2 -0
  54. package/dist/src/full-flow-test.test.d.ts.map +1 -0
  55. package/dist/src/full-flow-test.test.js +50 -0
  56. package/dist/src/full-flow-test.test.js.map +1 -0
  57. package/dist/src/graph/constants.d.ts +2 -1
  58. package/dist/src/graph/constants.d.ts.map +1 -1
  59. package/dist/src/graph/constants.js +2 -1
  60. package/dist/src/graph/constants.js.map +1 -1
  61. package/dist/src/graph/create-image.test.js +2 -1
  62. package/dist/src/graph/create-image.test.js.map +1 -1
  63. package/dist/src/graph/create-property.test.js +48 -52
  64. package/dist/src/graph/create-property.test.js.map +1 -1
  65. package/dist/src/graph/create-space.js +5 -5
  66. package/dist/src/graph/create-space.js.map +1 -1
  67. package/dist/src/graph/graph.test.d.ts +2 -0
  68. package/dist/src/graph/graph.test.d.ts.map +1 -0
  69. package/dist/src/graph/graph.test.js +46 -0
  70. package/dist/src/graph/graph.test.js.map +1 -0
  71. package/dist/src/graph/helpers/create-default-properties.d.ts +5 -0
  72. package/dist/src/graph/helpers/create-default-properties.d.ts.map +1 -0
  73. package/dist/src/graph/helpers/create-default-properties.js +44 -0
  74. package/dist/src/graph/helpers/create-default-properties.js.map +1 -0
  75. package/dist/src/graph/helpers/create-properties.d.ts +8 -0
  76. package/dist/src/graph/helpers/create-properties.d.ts.map +1 -0
  77. package/dist/src/graph/helpers/create-properties.js +53 -0
  78. package/dist/src/graph/helpers/create-properties.js.map +1 -0
  79. package/dist/src/graph/index.d.ts +0 -1
  80. package/dist/src/graph/index.d.ts.map +1 -1
  81. package/dist/src/graph/index.js +0 -1
  82. package/dist/src/graph/index.js.map +1 -1
  83. package/dist/src/graphv2/constants.d.ts +2 -0
  84. package/dist/src/graphv2/constants.d.ts.map +1 -0
  85. package/dist/src/graphv2/constants.js +2 -0
  86. package/dist/src/graphv2/constants.js.map +1 -0
  87. package/dist/src/graphv2/create-entity.d.ts +52 -0
  88. package/dist/src/graphv2/create-entity.d.ts.map +1 -0
  89. package/dist/src/graphv2/create-entity.js +140 -0
  90. package/dist/src/graphv2/create-entity.js.map +1 -0
  91. package/dist/src/graphv2/create-entity.test.d.ts +2 -0
  92. package/dist/src/graphv2/create-entity.test.d.ts.map +1 -0
  93. package/dist/src/graphv2/create-entity.test.js +158 -0
  94. package/dist/src/graphv2/create-entity.test.js.map +1 -0
  95. package/dist/src/graphv2/create-image.d.ts +28 -0
  96. package/dist/src/graphv2/create-image.d.ts.map +1 -0
  97. package/dist/src/graphv2/create-image.js +71 -0
  98. package/dist/src/graphv2/create-image.js.map +1 -0
  99. package/dist/src/graphv2/create-image.test.d.ts +2 -0
  100. package/dist/src/graphv2/create-image.test.d.ts.map +1 -0
  101. package/dist/src/graphv2/create-image.test.js +142 -0
  102. package/dist/src/graphv2/create-image.test.js.map +1 -0
  103. package/dist/src/graphv2/create-property.d.ts +22 -0
  104. package/dist/src/graphv2/create-property.d.ts.map +1 -0
  105. package/dist/src/graphv2/create-property.js +129 -0
  106. package/dist/src/graphv2/create-property.js.map +1 -0
  107. package/dist/src/graphv2/create-property.test.d.ts +2 -0
  108. package/dist/src/graphv2/create-property.test.d.ts.map +1 -0
  109. package/dist/src/graphv2/create-property.test.js +82 -0
  110. package/dist/src/graphv2/create-property.test.js.map +1 -0
  111. package/dist/src/graphv2/create-relation.d.ts +33 -0
  112. package/dist/src/graphv2/create-relation.d.ts.map +1 -0
  113. package/dist/src/graphv2/create-relation.js +66 -0
  114. package/dist/src/graphv2/create-relation.js.map +1 -0
  115. package/dist/src/graphv2/create-relation.test.d.ts +2 -0
  116. package/dist/src/graphv2/create-relation.test.d.ts.map +1 -0
  117. package/dist/src/graphv2/create-relation.test.js +208 -0
  118. package/dist/src/graphv2/create-relation.test.js.map +1 -0
  119. package/dist/src/graphv2/create-space.d.ts +13 -0
  120. package/dist/src/graphv2/create-space.d.ts.map +1 -0
  121. package/dist/src/graphv2/create-space.js +21 -0
  122. package/dist/src/graphv2/create-space.js.map +1 -0
  123. package/dist/src/graphv2/create-type.d.ts +22 -0
  124. package/dist/src/graphv2/create-type.d.ts.map +1 -0
  125. package/dist/src/graphv2/create-type.js +64 -0
  126. package/dist/src/graphv2/create-type.js.map +1 -0
  127. package/dist/src/graphv2/create-type.test.d.ts +2 -0
  128. package/dist/src/graphv2/create-type.test.d.ts.map +1 -0
  129. package/dist/src/graphv2/create-type.test.js +109 -0
  130. package/dist/src/graphv2/create-type.test.js.map +1 -0
  131. package/dist/src/graphv2/delete-entity.d.ts +14 -0
  132. package/dist/src/graphv2/delete-entity.d.ts.map +1 -0
  133. package/dist/src/graphv2/delete-entity.js +21 -0
  134. package/dist/src/graphv2/delete-entity.js.map +1 -0
  135. package/dist/src/graphv2/delete-entity.test.d.ts +2 -0
  136. package/dist/src/graphv2/delete-entity.test.d.ts.map +1 -0
  137. package/dist/src/graphv2/delete-entity.test.js +24 -0
  138. package/dist/src/graphv2/delete-entity.test.js.map +1 -0
  139. package/dist/src/graphv2/delete-relation.d.ts +14 -0
  140. package/dist/src/graphv2/delete-relation.d.ts.map +1 -0
  141. package/dist/src/graphv2/delete-relation.js +21 -0
  142. package/dist/src/graphv2/delete-relation.js.map +1 -0
  143. package/dist/src/graphv2/delete-relation.test.d.ts +2 -0
  144. package/dist/src/graphv2/delete-relation.test.d.ts.map +1 -0
  145. package/dist/src/graphv2/delete-relation.test.js +24 -0
  146. package/dist/src/graphv2/delete-relation.test.js.map +1 -0
  147. package/dist/src/graphv2/index.d.ts +12 -0
  148. package/dist/src/graphv2/index.d.ts.map +1 -0
  149. package/dist/src/graphv2/index.js +12 -0
  150. package/dist/src/graphv2/index.js.map +1 -0
  151. package/dist/src/graphv2/remove-entity-properties.d.ts +25 -0
  152. package/dist/src/graphv2/remove-entity-properties.d.ts.map +1 -0
  153. package/dist/src/graphv2/remove-entity-properties.js +24 -0
  154. package/dist/src/graphv2/remove-entity-properties.js.map +1 -0
  155. package/dist/src/graphv2/unset-entity-values.d.ts +21 -0
  156. package/dist/src/graphv2/unset-entity-values.d.ts.map +1 -0
  157. package/dist/src/graphv2/unset-entity-values.js +26 -0
  158. package/dist/src/graphv2/unset-entity-values.js.map +1 -0
  159. package/dist/src/graphv2/unset-entity-values.test.d.ts +2 -0
  160. package/dist/src/graphv2/unset-entity-values.test.d.ts.map +1 -0
  161. package/dist/src/graphv2/unset-entity-values.test.js +40 -0
  162. package/dist/src/graphv2/unset-entity-values.test.js.map +1 -0
  163. package/dist/src/graphv2/unset-relation-fields.d.ts +25 -0
  164. package/dist/src/graphv2/unset-relation-fields.d.ts.map +1 -0
  165. package/dist/src/graphv2/unset-relation-fields.js +34 -0
  166. package/dist/src/graphv2/unset-relation-fields.js.map +1 -0
  167. package/dist/src/graphv2/unset-relation-fields.test.d.ts +2 -0
  168. package/dist/src/graphv2/unset-relation-fields.test.d.ts.map +1 -0
  169. package/dist/src/graphv2/unset-relation-fields.test.js +64 -0
  170. package/dist/src/graphv2/unset-relation-fields.test.js.map +1 -0
  171. package/dist/src/graphv2/update-entity.d.ts +28 -0
  172. package/dist/src/graphv2/update-entity.d.ts.map +1 -0
  173. package/dist/src/graphv2/update-entity.js +73 -0
  174. package/dist/src/graphv2/update-entity.js.map +1 -0
  175. package/dist/src/graphv2/update-entity.test.d.ts +2 -0
  176. package/dist/src/graphv2/update-entity.test.d.ts.map +1 -0
  177. package/dist/src/graphv2/update-entity.test.js +116 -0
  178. package/dist/src/graphv2/update-entity.test.js.map +1 -0
  179. package/dist/src/graphv2/update-relation.d.ts +21 -0
  180. package/dist/src/graphv2/update-relation.d.ts.map +1 -0
  181. package/dist/src/graphv2/update-relation.js +37 -0
  182. package/dist/src/graphv2/update-relation.js.map +1 -0
  183. package/dist/src/idv2.d.ts +27 -0
  184. package/dist/src/idv2.d.ts.map +1 -0
  185. package/dist/src/idv2.js +88 -0
  186. package/dist/src/idv2.js.map +1 -0
  187. package/dist/src/idv2.test.d.ts +2 -0
  188. package/dist/src/idv2.test.d.ts.map +1 -0
  189. package/dist/src/idv2.test.js +26 -0
  190. package/dist/src/idv2.test.js.map +1 -0
  191. package/dist/src/image.d.ts +8 -0
  192. package/dist/src/image.d.ts.map +1 -0
  193. package/dist/src/image.js +8 -0
  194. package/dist/src/image.js.map +1 -0
  195. package/dist/src/ipfs.d.ts +3 -2
  196. package/dist/src/ipfs.d.ts.map +1 -1
  197. package/dist/src/ipfs.js +11 -10
  198. package/dist/src/ipfs.js.map +1 -1
  199. package/dist/src/ipfs.test.js +1 -0
  200. package/dist/src/ipfs.test.js.map +1 -1
  201. package/dist/src/ipfsv2.d.ts +96 -0
  202. package/dist/src/ipfsv2.d.ts.map +1 -0
  203. package/dist/src/ipfsv2.js +163 -0
  204. package/dist/src/ipfsv2.js.map +1 -0
  205. package/dist/src/ipfsv2.test.d.ts +2 -0
  206. package/dist/src/ipfsv2.test.d.ts.map +1 -0
  207. package/dist/src/ipfsv2.test.js +22 -0
  208. package/dist/src/ipfsv2.test.js.map +1 -0
  209. package/dist/src/proto/edit.js +0 -7
  210. package/dist/src/proto/edit.js.map +1 -1
  211. package/dist/src/proto/edit.test.js +0 -20
  212. package/dist/src/proto/edit.test.js.map +1 -1
  213. package/dist/src/proto/editv2.d.ts +11 -0
  214. package/dist/src/proto/editv2.d.ts.map +1 -0
  215. package/dist/src/proto/editv2.js +81 -0
  216. package/dist/src/proto/editv2.js.map +1 -0
  217. package/dist/src/proto/editv2.test.d.ts +2 -0
  218. package/dist/src/proto/editv2.test.d.ts.map +1 -0
  219. package/dist/src/proto/editv2.test.js +211 -0
  220. package/dist/src/proto/editv2.test.js.map +1 -0
  221. package/dist/src/proto/gen/src/proto/ipfs_pb.d.ts +6 -12
  222. package/dist/src/proto/gen/src/proto/ipfs_pb.d.ts.map +1 -1
  223. package/dist/src/proto/gen/src/proto/ipfs_pb.js +6 -7
  224. package/dist/src/proto/gen/src/proto/ipfs_pb.js.map +1 -1
  225. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts +410 -0
  226. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts.map +1 -0
  227. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js +536 -0
  228. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js.map +1 -0
  229. package/dist/src/relation.d.ts +7 -0
  230. package/dist/src/relation.d.ts.map +1 -0
  231. package/dist/src/relation.js +7 -0
  232. package/dist/src/relation.js.map +1 -0
  233. package/dist/src/smart-wallet-2.test-invalid.d.ts +2 -0
  234. package/dist/src/smart-wallet-2.test-invalid.d.ts.map +1 -0
  235. package/dist/src/smart-wallet-2.test-invalid.js +49 -0
  236. package/dist/src/smart-wallet-2.test-invalid.js.map +1 -0
  237. package/dist/src/smart-wallet-2.test.d.ts +2 -0
  238. package/dist/src/smart-wallet-2.test.d.ts.map +1 -0
  239. package/dist/src/smart-wallet-2.test.js +49 -0
  240. package/dist/src/smart-wallet-2.test.js.map +1 -0
  241. package/dist/src/system-ids-v2.d.ts +7 -0
  242. package/dist/src/system-ids-v2.d.ts.map +1 -0
  243. package/dist/src/system-ids-v2.js +7 -0
  244. package/dist/src/system-ids-v2.js.map +1 -0
  245. package/dist/src/triple.d.ts +7 -0
  246. package/dist/src/triple.d.ts.map +1 -0
  247. package/dist/src/triple.js +7 -0
  248. package/dist/src/triple.js.map +1 -0
  249. package/dist/src/types-backup.d.ts +134 -0
  250. package/dist/src/types-backup.d.ts.map +1 -0
  251. package/dist/src/types-backup.js +13 -0
  252. package/dist/src/types-backup.js.map +1 -0
  253. package/dist/src/types.d.ts +1 -5
  254. package/dist/src/types.d.ts.map +1 -1
  255. package/dist/src/types.js.map +1 -1
  256. package/dist/src/typesv2.d.ts +173 -0
  257. package/dist/src/typesv2.d.ts.map +1 -0
  258. package/dist/src/typesv2.js +8 -0
  259. package/dist/src/typesv2.js.map +1 -0
  260. package/package.json +1 -1
@@ -0,0 +1,37 @@
1
+ import { assertValid, toBase64 } from '../idv2.js';
2
+ /**
3
+ * Updates a relation.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * const { id, ops } = updateRelation({
8
+ * id: relationId,
9
+ * position: 'position of the relation',
10
+ * toSpace: 'id of the to space',
11
+ * fromVersion: 'id of the from version',
12
+ * toVersion: 'id of the to version',
13
+ * verified: true,
14
+ * });
15
+ * ```
16
+ * @param params – {@link UpdateRelationParams}
17
+ * @returns – {@link CreateResult}
18
+ * @throws Will throw an error if any provided ID is invalid
19
+ */
20
+ export const updateRelation = ({ id, position, fromSpace, toSpace, fromVersion, toVersion, verified, }) => {
21
+ assertValid(id, '`id` in `updateRelation`');
22
+ const ops = [];
23
+ ops.push({
24
+ type: 'UPDATE_RELATION',
25
+ relation: {
26
+ id: toBase64(id),
27
+ position,
28
+ fromSpace: fromSpace ? toBase64(fromSpace) : undefined,
29
+ toSpace: toSpace ? toBase64(toSpace) : undefined,
30
+ fromVersion: fromVersion ? toBase64(fromVersion) : undefined,
31
+ toVersion: toVersion ? toBase64(toVersion) : undefined,
32
+ verified,
33
+ },
34
+ });
35
+ return { id, ops };
36
+ };
37
+ //# sourceMappingURL=update-relation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-relation.js","sourceRoot":"","sources":["../../../src/graphv2/update-relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,EAAE,EACF,QAAQ,EACR,SAAS,EACT,OAAO,EACP,WAAW,EACX,SAAS,EACT,QAAQ,GACa,EAAgB,EAAE;IACvC,WAAW,CAAC,EAAE,EAAE,0BAA0B,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAc,EAAE,CAAC;IAE1B,GAAG,CAAC,IAAI,CAAC;QACP,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE;YACR,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChB,QAAQ;YACR,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACtD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YAChD,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5D,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACtD,QAAQ;SACT;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Brand } from 'effect';
2
+ export type Id = string & Brand.Brand<'Id'>;
3
+ export type IdBase64 = string & Brand.Brand<'IdBase64'>;
4
+ export declare const Id: Brand.Brand.Constructor<Id>;
5
+ export declare const IdBase64: Brand.Brand.Constructor<IdBase64>;
6
+ /**
7
+ * Generates a globally unique knowledge graph identifier.
8
+ *
9
+ * @example
10
+ * ```
11
+ * import { ID } from '@graphprotocol/grc-20'
12
+ *
13
+ * const id = ID.generate();
14
+ * console.log(id)
15
+ * ```
16
+ *
17
+ * @returns v4 UUID
18
+ */
19
+ export declare function generate(): Id;
20
+ export declare function isValid(id: string): boolean;
21
+ export declare function isValidBase64(id: string): boolean;
22
+ export declare function assertValid(id: string, sourceHint?: string): void;
23
+ export declare function toBytes(id: Id): Uint8Array;
24
+ export declare function fromBytes(bytes: Uint8Array): Id;
25
+ export declare function toBase64(id: Id): IdBase64;
26
+ export declare function fromBase64(id: IdBase64): Id;
27
+ //# sourceMappingURL=idv2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idv2.d.ts","sourceRoot":"","sources":["../../src/idv2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAS/B,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAE5C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAExD,eAAO,MAAM,EAAE,6BAGd,CAAC;AAEF,eAAO,MAAM,QAAQ,mCAGpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,IAAI,EAAE,CAG7B;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE3C;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAQjD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,QAI1D;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU,CAE1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,EAAE,CAE/C;AAID,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAoBzC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,CAqB3C"}
@@ -0,0 +1,88 @@
1
+ import { Brand } from 'effect';
2
+ /**
3
+ * This module provides utility functions for working knowledge graph
4
+ * identifiers in TypeScript.
5
+ */
6
+ import { parse as uuidParse, stringify as uuidStringify, validate as uuidValidate, v4 as uuidv4 } from 'uuid';
7
+ export const Id = Brand.refined(id => isValid(id), id => Brand.error(`Expected ${id} to be a valid Id`));
8
+ export const IdBase64 = Brand.refined(id => isValidBase64(id), id => Brand.error(`Expected ${id} to be a valid IdBase64`));
9
+ /**
10
+ * Generates a globally unique knowledge graph identifier.
11
+ *
12
+ * @example
13
+ * ```
14
+ * import { ID } from '@graphprotocol/grc-20'
15
+ *
16
+ * const id = ID.generate();
17
+ * console.log(id)
18
+ * ```
19
+ *
20
+ * @returns v4 UUID
21
+ */
22
+ export function generate() {
23
+ const uuid = uuidv4();
24
+ return Id(uuid);
25
+ }
26
+ export function isValid(id) {
27
+ return uuidValidate(id);
28
+ }
29
+ export function isValidBase64(id) {
30
+ try {
31
+ // @ts-expect-error
32
+ const uuid = fromBase64(id);
33
+ return isValid(uuid);
34
+ }
35
+ catch (error) {
36
+ return false;
37
+ }
38
+ }
39
+ export function assertValid(id, sourceHint) {
40
+ if (!isValid(id)) {
41
+ throw new Error(`Invalid id: "${id}"${sourceHint ? ` for ${sourceHint}` : ''}`);
42
+ }
43
+ }
44
+ export function toBytes(id) {
45
+ return uuidParse(id);
46
+ }
47
+ export function fromBytes(bytes) {
48
+ return Id(uuidStringify(bytes));
49
+ }
50
+ const base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
51
+ export function toBase64(id) {
52
+ const bytes = toBytes(id);
53
+ let result = '';
54
+ let i;
55
+ for (i = 0; i < bytes.length; i += 3) {
56
+ const a = bytes[i];
57
+ const b = bytes[i + 1] ?? 0;
58
+ const c = bytes[i + 2] ?? 0;
59
+ // @ts-expect-error
60
+ const triple = (a << 16) | (b << 8) | c;
61
+ result += base64Chars[(triple >> 18) & 0x3f];
62
+ result += base64Chars[(triple >> 12) & 0x3f];
63
+ result += i + 1 < bytes.length ? base64Chars[(triple >> 6) & 0x3f] : '=';
64
+ result += i + 2 < bytes.length ? base64Chars[triple & 0x3f] : '=';
65
+ }
66
+ return IdBase64(result);
67
+ }
68
+ export function fromBase64(id) {
69
+ const bytes = [];
70
+ for (let i = 0; i < id.length; i += 4) {
71
+ // @ts-expect-error
72
+ const c1 = base64Chars.indexOf(id[i]);
73
+ // @ts-expect-error
74
+ const c2 = base64Chars.indexOf(id[i + 1]);
75
+ // @ts-expect-error
76
+ const c3 = base64Chars.indexOf(id[i + 2]);
77
+ // @ts-expect-error
78
+ const c4 = base64Chars.indexOf(id[i + 3]);
79
+ const triple = (c1 << 18) | (c2 << 12) | ((c3 & 63) << 6) | (c4 & 63);
80
+ bytes.push((triple >> 16) & 0xff);
81
+ if (c3 !== -1 && c3 !== 64)
82
+ bytes.push((triple >> 8) & 0xff);
83
+ if (c4 !== -1 && c4 !== 64)
84
+ bytes.push(triple & 0xff);
85
+ }
86
+ return fromBytes(new Uint8Array(bytes));
87
+ }
88
+ //# sourceMappingURL=idv2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idv2.js","sourceRoot":"","sources":["../../src/idv2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=idv2.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idv2.test.d.ts","sourceRoot":"","sources":["../../src/idv2.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { expect, it } from 'vitest';
2
+ import { Id, generate, isValid, toBase64 } from './idv2.js';
3
+ it('should generate valid uuid', () => {
4
+ const id = generate();
5
+ expect(id).toBeTypeOf('string');
6
+ expect(id.length).toBe(36);
7
+ expect(id).toMatch(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/);
8
+ });
9
+ it('should validate uuid', () => {
10
+ expect(isValid(generate())).toBe(true);
11
+ expect(isValid(generate())).toBe(true);
12
+ expect(isValid(generate())).toBe(true);
13
+ expect(isValid('3af3e22d-2169-4a07-8681-516710b7ecf1')).toBe(true);
14
+ });
15
+ it('should not validate invalid id', () => {
16
+ expect(isValid('invalid-id')).toBe(false);
17
+ expect(isValid('0123456789012345678901')).toBe(false);
18
+ });
19
+ it('should convert id to base64', () => {
20
+ const id = Id('3af3e22d-2169-4a07-8681-516710b7ecf1');
21
+ const base64 = toBase64(id);
22
+ expect(base64).toBeTypeOf('string');
23
+ expect(base64).toBe('OvPiLSFpSgeGgVFnELfs8Q==');
24
+ expect(toBase64(Id('1d501a3a-d6ce-4693-bc90-d25286f21c7e'))).toBe('HVAaOtbORpO8kNJShvIcfg==');
25
+ });
26
+ //# sourceMappingURL=idv2.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idv2.test.js","sourceRoot":"","sources":["../../src/idv2.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE5D,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACpC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC;AACtG,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAC9B,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACxC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,sCAAsC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This module provides utility functions for working with knowledge graph
3
+ * images in TypeScript.
4
+ *
5
+ * @since 0.0.6
6
+ */
7
+ export * as Image from './core/image.js';
8
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/image.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This module provides utility functions for working with knowledge graph
3
+ * images in TypeScript.
4
+ *
5
+ * @since 0.0.6
6
+ */
7
+ export * as Image from './core/image.js';
8
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/image.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC"}
@@ -10,6 +10,7 @@ type PublishEditProposalParams = {
10
10
  name: string;
11
11
  ops: Op[];
12
12
  author: `0x${string}`;
13
+ network?: 'TESTNET' | 'MAINNET';
13
14
  };
14
15
  type PublishEditResult = {
15
16
  cid: string;
@@ -38,7 +39,7 @@ type PublishImageParams = {
38
39
  } | {
39
40
  url: string;
40
41
  };
41
- export declare function uploadImage(params: PublishImageParams): Promise<{
42
+ export declare function uploadImage(params: PublishImageParams, network?: 'TESTNET' | 'MAINNET'): Promise<{
42
43
  cid: `ipfs://${string}`;
43
44
  dimensions: {
44
45
  width: number;
@@ -91,6 +92,6 @@ export declare function uploadImage(params: PublishImageParams): Promise<{
91
92
  * @param csvString The CSV to upload as a string
92
93
  * @returns IPFS CID representing the uploaded file prefixed with `ipfs://`
93
94
  */
94
- export declare function uploadCSV(csvString: string): Promise<`ipfs://${string}`>;
95
+ export declare function uploadCSV(csvString: string, network?: 'TESTNET' | 'MAINNET'): Promise<`ipfs://${string}`>;
95
96
  export {};
96
97
  //# sourceMappingURL=ipfs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../src/ipfs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAMrC,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;CACvB,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"}
1
+ {"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../src/ipfs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAMrC,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC,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,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS;;;;;;;;;GAkC5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,MAAM,EAAE,CAAC,CAS/G"}
package/dist/src/ipfs.js CHANGED
@@ -8,6 +8,7 @@ import { Micro } from 'effect';
8
8
  import { gzipSync } from 'fflate';
9
9
  import { imageSize } from 'image-size';
10
10
  import { Edit, EditProposal } from '../proto.js';
11
+ import { MAINNET_API_ORIGIN, TESTNET_API_ORIGIN } from './graph/constants.js';
11
12
  import { fromBytes } from './id.js';
12
13
  class IpfsUploadError extends Error {
13
14
  _tag = 'IpfsUploadError';
@@ -30,16 +31,16 @@ class IpfsUploadError extends Error {
30
31
  * @returns - {@link PublishEditResult}
31
32
  */
32
33
  export async function publishEdit(args) {
33
- const { name, ops, author } = args;
34
+ const { name, ops, author, network = 'MAINNET' } = args;
34
35
  const edit = EditProposal.encode({ name, ops, author });
35
36
  const blob = new Blob([edit], { type: 'application/octet-stream' });
36
37
  const formData = new FormData();
37
38
  formData.append('file', blob);
38
- const cid = await Micro.runPromise(uploadBinary(formData));
39
+ const cid = await Micro.runPromise(uploadBinary(formData, network));
39
40
  const result = Edit.fromBinary(edit);
40
41
  return { cid, editId: fromBytes(result.id) };
41
42
  }
42
- export async function uploadImage(params) {
43
+ export async function uploadImage(params, network) {
43
44
  const formData = new FormData();
44
45
  let blob;
45
46
  if ('blob' in params) {
@@ -57,7 +58,7 @@ export async function uploadImage(params) {
57
58
  dimensions = imageSize(buffer);
58
59
  }
59
60
  catch (error) { }
60
- const cid = await Micro.runPromise(uploadFile(formData));
61
+ const cid = await Micro.runPromise(uploadFile(formData, network));
61
62
  if (dimensions) {
62
63
  return {
63
64
  cid,
@@ -114,18 +115,18 @@ export async function uploadImage(params) {
114
115
  * @param csvString The CSV to upload as a string
115
116
  * @returns IPFS CID representing the uploaded file prefixed with `ipfs://`
116
117
  */
117
- export async function uploadCSV(csvString) {
118
+ export async function uploadCSV(csvString, network) {
118
119
  const encoder = new TextEncoder();
119
120
  const csvStringBytes = encoder.encode(csvString);
120
121
  const blob = await gzipSync(csvStringBytes);
121
122
  const formData = new FormData();
122
123
  formData.append('file', new Blob([blob], { type: 'text/csv' }));
123
- return await Micro.runPromise(uploadBinary(formData));
124
+ return await Micro.runPromise(uploadBinary(formData, network));
124
125
  }
125
- function uploadBinary(formData) {
126
+ function uploadBinary(formData, network) {
126
127
  return Micro.gen(function* () {
127
128
  const result = yield* Micro.tryPromise({
128
- try: () => fetch('https://api-testnet.grc-20.thegraph.com/ipfs/upload-edit', {
129
+ try: () => fetch(`${network === 'TESTNET' ? TESTNET_API_ORIGIN : MAINNET_API_ORIGIN}/ipfs/upload-edit`, {
129
130
  method: 'POST',
130
131
  body: formData,
131
132
  }),
@@ -141,10 +142,10 @@ function uploadBinary(formData) {
141
142
  return maybeCid;
142
143
  });
143
144
  }
144
- function uploadFile(formData) {
145
+ function uploadFile(formData, network) {
145
146
  return Micro.gen(function* () {
146
147
  const result = yield* Micro.tryPromise({
147
- try: () => fetch('https://api-testnet.grc-20.thegraph.com/ipfs/upload-file', {
148
+ try: () => fetch(`${network === 'TESTNET' ? TESTNET_API_ORIGIN : MAINNET_API_ORIGIN}/ipfs/upload-file`, {
148
149
  method: 'POST',
149
150
  body: formData,
150
151
  }),
@@ -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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"}
@@ -17,6 +17,7 @@ it('full flow', async () => {
17
17
  name: 'test',
18
18
  ops,
19
19
  author: '0x000000000000000000000000000000000000',
20
+ network: 'TESTNET',
20
21
  });
21
22
  console.log(cid, editId);
22
23
  });
@@ -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,EAAE,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAC/B,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;KACjD,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":"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,EAAE,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAC/B,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"}
@@ -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