@graphprotocol/grc-20 0.20.0 → 0.20.1

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 (235) hide show
  1. package/dist/convert-ids.d.ts +2 -0
  2. package/dist/convert-ids.d.ts.map +1 -0
  3. package/dist/convert-ids.js +42 -0
  4. package/dist/convert-ids.js.map +1 -0
  5. package/dist/protov2.d.ts +11 -0
  6. package/dist/protov2.d.ts.map +1 -0
  7. package/dist/protov2.js +11 -0
  8. package/dist/protov2.js.map +1 -0
  9. package/dist/src/core/blocks/image.d.ts +15 -0
  10. package/dist/src/core/blocks/image.d.ts.map +1 -0
  11. package/dist/src/core/blocks/image.js +15 -0
  12. package/dist/src/core/blocks/image.js.map +1 -0
  13. package/dist/src/core/idsv2/content.d.ts +59 -0
  14. package/dist/src/core/idsv2/content.d.ts.map +1 -0
  15. package/dist/src/core/idsv2/content.js +59 -0
  16. package/dist/src/core/idsv2/content.js.map +1 -0
  17. package/dist/src/core/idsv2/network.d.ts +5 -0
  18. package/dist/src/core/idsv2/network.d.ts.map +1 -0
  19. package/dist/src/core/idsv2/network.js +5 -0
  20. package/dist/src/core/idsv2/network.js.map +1 -0
  21. package/dist/src/core/idsv2/system.d.ts +222 -0
  22. package/dist/src/core/idsv2/system.d.ts.map +1 -0
  23. package/dist/src/core/idsv2/system.js +230 -0
  24. package/dist/src/core/idsv2/system.js.map +1 -0
  25. package/dist/src/core/image.d.ts +40 -0
  26. package/dist/src/core/image.d.ts.map +1 -0
  27. package/dist/src/core/image.js +76 -0
  28. package/dist/src/core/image.js.map +1 -0
  29. package/dist/src/core/image.test.d.ts +2 -0
  30. package/dist/src/core/image.test.d.ts.map +1 -0
  31. package/dist/src/core/image.test.js +52 -0
  32. package/dist/src/core/image.test.js.map +1 -0
  33. package/dist/src/core/relation.d.ts +88 -0
  34. package/dist/src/core/relation.d.ts.map +1 -0
  35. package/dist/src/core/relation.js +89 -0
  36. package/dist/src/core/relation.js.map +1 -0
  37. package/dist/src/core/relation.test.d.ts +2 -0
  38. package/dist/src/core/relation.test.d.ts.map +1 -0
  39. package/dist/src/core/relation.test.js +45 -0
  40. package/dist/src/core/relation.test.js.map +1 -0
  41. package/dist/src/core/triple.d.ts +50 -0
  42. package/dist/src/core/triple.d.ts.map +1 -0
  43. package/dist/src/core/triple.js +56 -0
  44. package/dist/src/core/triple.js.map +1 -0
  45. package/dist/src/core/triple.test.d.ts +2 -0
  46. package/dist/src/core/triple.test.d.ts.map +1 -0
  47. package/dist/src/core/triple.test.js +37 -0
  48. package/dist/src/core/triple.test.js.map +1 -0
  49. package/dist/src/full-flow-test.test.js +16 -13
  50. package/dist/src/full-flow-test.test.js.map +1 -1
  51. package/dist/src/graph/delete-entity.d.ts +14 -0
  52. package/dist/src/graph/delete-entity.d.ts.map +1 -0
  53. package/dist/src/graph/delete-entity.js +21 -0
  54. package/dist/src/graph/delete-entity.js.map +1 -0
  55. package/dist/src/graph/delete-entity.test.d.ts +2 -0
  56. package/dist/src/graph/delete-entity.test.d.ts.map +1 -0
  57. package/dist/src/graph/delete-entity.test.js +23 -0
  58. package/dist/src/graph/delete-entity.test.js.map +1 -0
  59. package/dist/src/graph/graph.test.d.ts +2 -0
  60. package/dist/src/graph/graph.test.d.ts.map +1 -0
  61. package/dist/src/graph/graph.test.js +46 -0
  62. package/dist/src/graph/graph.test.js.map +1 -0
  63. package/dist/src/graph/helpers/create-default-properties.d.ts +5 -0
  64. package/dist/src/graph/helpers/create-default-properties.d.ts.map +1 -0
  65. package/dist/src/graph/helpers/create-default-properties.js +44 -0
  66. package/dist/src/graph/helpers/create-default-properties.js.map +1 -0
  67. package/dist/src/graph/helpers/create-properties.d.ts +8 -0
  68. package/dist/src/graph/helpers/create-properties.d.ts.map +1 -0
  69. package/dist/src/graph/helpers/create-properties.js +53 -0
  70. package/dist/src/graph/helpers/create-properties.js.map +1 -0
  71. package/dist/src/graphv2/constants.d.ts +2 -0
  72. package/dist/src/graphv2/constants.d.ts.map +1 -0
  73. package/dist/src/graphv2/constants.js +2 -0
  74. package/dist/src/graphv2/constants.js.map +1 -0
  75. package/dist/src/graphv2/create-entity.d.ts +52 -0
  76. package/dist/src/graphv2/create-entity.d.ts.map +1 -0
  77. package/dist/src/graphv2/create-entity.js +140 -0
  78. package/dist/src/graphv2/create-entity.js.map +1 -0
  79. package/dist/src/graphv2/create-entity.test.d.ts +2 -0
  80. package/dist/src/graphv2/create-entity.test.d.ts.map +1 -0
  81. package/dist/src/graphv2/create-entity.test.js +158 -0
  82. package/dist/src/graphv2/create-entity.test.js.map +1 -0
  83. package/dist/src/graphv2/create-image.d.ts +28 -0
  84. package/dist/src/graphv2/create-image.d.ts.map +1 -0
  85. package/dist/src/graphv2/create-image.js +71 -0
  86. package/dist/src/graphv2/create-image.js.map +1 -0
  87. package/dist/src/graphv2/create-image.test.d.ts +2 -0
  88. package/dist/src/graphv2/create-image.test.d.ts.map +1 -0
  89. package/dist/src/graphv2/create-image.test.js +142 -0
  90. package/dist/src/graphv2/create-image.test.js.map +1 -0
  91. package/dist/src/graphv2/create-property.d.ts +22 -0
  92. package/dist/src/graphv2/create-property.d.ts.map +1 -0
  93. package/dist/src/graphv2/create-property.js +129 -0
  94. package/dist/src/graphv2/create-property.js.map +1 -0
  95. package/dist/src/graphv2/create-property.test.d.ts +2 -0
  96. package/dist/src/graphv2/create-property.test.d.ts.map +1 -0
  97. package/dist/src/graphv2/create-property.test.js +82 -0
  98. package/dist/src/graphv2/create-property.test.js.map +1 -0
  99. package/dist/src/graphv2/create-relation.d.ts +33 -0
  100. package/dist/src/graphv2/create-relation.d.ts.map +1 -0
  101. package/dist/src/graphv2/create-relation.js +66 -0
  102. package/dist/src/graphv2/create-relation.js.map +1 -0
  103. package/dist/src/graphv2/create-relation.test.d.ts +2 -0
  104. package/dist/src/graphv2/create-relation.test.d.ts.map +1 -0
  105. package/dist/src/graphv2/create-relation.test.js +208 -0
  106. package/dist/src/graphv2/create-relation.test.js.map +1 -0
  107. package/dist/src/graphv2/create-space.d.ts +13 -0
  108. package/dist/src/graphv2/create-space.d.ts.map +1 -0
  109. package/dist/src/graphv2/create-space.js +21 -0
  110. package/dist/src/graphv2/create-space.js.map +1 -0
  111. package/dist/src/graphv2/create-type.d.ts +22 -0
  112. package/dist/src/graphv2/create-type.d.ts.map +1 -0
  113. package/dist/src/graphv2/create-type.js +64 -0
  114. package/dist/src/graphv2/create-type.js.map +1 -0
  115. package/dist/src/graphv2/create-type.test.d.ts +2 -0
  116. package/dist/src/graphv2/create-type.test.d.ts.map +1 -0
  117. package/dist/src/graphv2/create-type.test.js +109 -0
  118. package/dist/src/graphv2/create-type.test.js.map +1 -0
  119. package/dist/src/graphv2/delete-entity.d.ts +14 -0
  120. package/dist/src/graphv2/delete-entity.d.ts.map +1 -0
  121. package/dist/src/graphv2/delete-entity.js +21 -0
  122. package/dist/src/graphv2/delete-entity.js.map +1 -0
  123. package/dist/src/graphv2/delete-entity.test.d.ts +2 -0
  124. package/dist/src/graphv2/delete-entity.test.d.ts.map +1 -0
  125. package/dist/src/graphv2/delete-entity.test.js +24 -0
  126. package/dist/src/graphv2/delete-entity.test.js.map +1 -0
  127. package/dist/src/graphv2/delete-relation.d.ts +14 -0
  128. package/dist/src/graphv2/delete-relation.d.ts.map +1 -0
  129. package/dist/src/graphv2/delete-relation.js +21 -0
  130. package/dist/src/graphv2/delete-relation.js.map +1 -0
  131. package/dist/src/graphv2/delete-relation.test.d.ts +2 -0
  132. package/dist/src/graphv2/delete-relation.test.d.ts.map +1 -0
  133. package/dist/src/graphv2/delete-relation.test.js +24 -0
  134. package/dist/src/graphv2/delete-relation.test.js.map +1 -0
  135. package/dist/src/graphv2/index.d.ts +12 -0
  136. package/dist/src/graphv2/index.d.ts.map +1 -0
  137. package/dist/src/graphv2/index.js +12 -0
  138. package/dist/src/graphv2/index.js.map +1 -0
  139. package/dist/src/graphv2/remove-entity-properties.d.ts +25 -0
  140. package/dist/src/graphv2/remove-entity-properties.d.ts.map +1 -0
  141. package/dist/src/graphv2/remove-entity-properties.js +24 -0
  142. package/dist/src/graphv2/remove-entity-properties.js.map +1 -0
  143. package/dist/src/graphv2/unset-entity-values.d.ts +21 -0
  144. package/dist/src/graphv2/unset-entity-values.d.ts.map +1 -0
  145. package/dist/src/graphv2/unset-entity-values.js +26 -0
  146. package/dist/src/graphv2/unset-entity-values.js.map +1 -0
  147. package/dist/src/graphv2/unset-entity-values.test.d.ts +2 -0
  148. package/dist/src/graphv2/unset-entity-values.test.d.ts.map +1 -0
  149. package/dist/src/graphv2/unset-entity-values.test.js +40 -0
  150. package/dist/src/graphv2/unset-entity-values.test.js.map +1 -0
  151. package/dist/src/graphv2/unset-relation-fields.d.ts +25 -0
  152. package/dist/src/graphv2/unset-relation-fields.d.ts.map +1 -0
  153. package/dist/src/graphv2/unset-relation-fields.js +34 -0
  154. package/dist/src/graphv2/unset-relation-fields.js.map +1 -0
  155. package/dist/src/graphv2/unset-relation-fields.test.d.ts +2 -0
  156. package/dist/src/graphv2/unset-relation-fields.test.d.ts.map +1 -0
  157. package/dist/src/graphv2/unset-relation-fields.test.js +64 -0
  158. package/dist/src/graphv2/unset-relation-fields.test.js.map +1 -0
  159. package/dist/src/graphv2/update-entity.d.ts +28 -0
  160. package/dist/src/graphv2/update-entity.d.ts.map +1 -0
  161. package/dist/src/graphv2/update-entity.js +73 -0
  162. package/dist/src/graphv2/update-entity.js.map +1 -0
  163. package/dist/src/graphv2/update-entity.test.d.ts +2 -0
  164. package/dist/src/graphv2/update-entity.test.d.ts.map +1 -0
  165. package/dist/src/graphv2/update-entity.test.js +116 -0
  166. package/dist/src/graphv2/update-entity.test.js.map +1 -0
  167. package/dist/src/graphv2/update-relation.d.ts +21 -0
  168. package/dist/src/graphv2/update-relation.d.ts.map +1 -0
  169. package/dist/src/graphv2/update-relation.js +37 -0
  170. package/dist/src/graphv2/update-relation.js.map +1 -0
  171. package/dist/src/idv2.d.ts +27 -0
  172. package/dist/src/idv2.d.ts.map +1 -0
  173. package/dist/src/idv2.js +88 -0
  174. package/dist/src/idv2.js.map +1 -0
  175. package/dist/src/idv2.test.d.ts +2 -0
  176. package/dist/src/idv2.test.d.ts.map +1 -0
  177. package/dist/src/idv2.test.js +26 -0
  178. package/dist/src/idv2.test.js.map +1 -0
  179. package/dist/src/image.d.ts +8 -0
  180. package/dist/src/image.d.ts.map +1 -0
  181. package/dist/src/image.js +8 -0
  182. package/dist/src/image.js.map +1 -0
  183. package/dist/src/ipfsv2.d.ts +96 -0
  184. package/dist/src/ipfsv2.d.ts.map +1 -0
  185. package/dist/src/ipfsv2.js +163 -0
  186. package/dist/src/ipfsv2.js.map +1 -0
  187. package/dist/src/ipfsv2.test.d.ts +2 -0
  188. package/dist/src/ipfsv2.test.d.ts.map +1 -0
  189. package/dist/src/ipfsv2.test.js +22 -0
  190. package/dist/src/ipfsv2.test.js.map +1 -0
  191. package/dist/src/proto/editv2.d.ts +11 -0
  192. package/dist/src/proto/editv2.d.ts.map +1 -0
  193. package/dist/src/proto/editv2.js +81 -0
  194. package/dist/src/proto/editv2.js.map +1 -0
  195. package/dist/src/proto/editv2.test.d.ts +2 -0
  196. package/dist/src/proto/editv2.test.d.ts.map +1 -0
  197. package/dist/src/proto/editv2.test.js +211 -0
  198. package/dist/src/proto/editv2.test.js.map +1 -0
  199. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts +410 -0
  200. package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts.map +1 -0
  201. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js +536 -0
  202. package/dist/src/proto/gen/src/proto/ipfsv2_pb.js.map +1 -0
  203. package/dist/src/relation.d.ts +7 -0
  204. package/dist/src/relation.d.ts.map +1 -0
  205. package/dist/src/relation.js +7 -0
  206. package/dist/src/relation.js.map +1 -0
  207. package/dist/src/smart-wallet-2.test-invalid.d.ts +2 -0
  208. package/dist/src/smart-wallet-2.test-invalid.d.ts.map +1 -0
  209. package/dist/src/smart-wallet-2.test-invalid.js +49 -0
  210. package/dist/src/smart-wallet-2.test-invalid.js.map +1 -0
  211. package/dist/src/smart-wallet-2.test.d.ts +2 -0
  212. package/dist/src/smart-wallet-2.test.d.ts.map +1 -0
  213. package/dist/src/smart-wallet-2.test.js +49 -0
  214. package/dist/src/smart-wallet-2.test.js.map +1 -0
  215. package/dist/src/smart-wallet.d.ts +2 -1
  216. package/dist/src/smart-wallet.d.ts.map +1 -1
  217. package/dist/src/smart-wallet.js +38 -23
  218. package/dist/src/smart-wallet.js.map +1 -1
  219. package/dist/src/system-ids-v2.d.ts +7 -0
  220. package/dist/src/system-ids-v2.d.ts.map +1 -0
  221. package/dist/src/system-ids-v2.js +7 -0
  222. package/dist/src/system-ids-v2.js.map +1 -0
  223. package/dist/src/triple.d.ts +7 -0
  224. package/dist/src/triple.d.ts.map +1 -0
  225. package/dist/src/triple.js +7 -0
  226. package/dist/src/triple.js.map +1 -0
  227. package/dist/src/types-backup.d.ts +134 -0
  228. package/dist/src/types-backup.d.ts.map +1 -0
  229. package/dist/src/types-backup.js +13 -0
  230. package/dist/src/types-backup.js.map +1 -0
  231. package/dist/src/typesv2.d.ts +173 -0
  232. package/dist/src/typesv2.d.ts.map +1 -0
  233. package/dist/src/typesv2.js +8 -0
  234. package/dist/src/typesv2.js.map +1 -0
  235. package/package.json +1 -1
@@ -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"}
@@ -0,0 +1,81 @@
1
+ import { fromBase64, generate, toBytes } from '../idv2.js';
2
+ import { Edit, Entity, Op as OpBinary, Relation, RelationUpdate, UnsetEntityValues, UnsetRelationFields, } from './gen/src/proto/ipfsv2_pb.js';
3
+ function hexToBytes(hex) {
4
+ let hexString = hex;
5
+ if (hexString.startsWith('0x')) {
6
+ hexString = hexString.slice(2);
7
+ }
8
+ if (hex.length % 2 !== 0) {
9
+ throw new Error('Invalid hex string: must have an even length');
10
+ }
11
+ const bytes = new Uint8Array(hex.length / 2);
12
+ for (let i = 0; i < hex.length; i += 2) {
13
+ bytes[i / 2] = Number.parseInt(hex.slice(i, i + 2), 16);
14
+ }
15
+ return bytes;
16
+ }
17
+ export function encode({ name, ops, author, language }) {
18
+ return new Edit({
19
+ id: toBytes(generate()),
20
+ name,
21
+ ops: opsToBinary(ops),
22
+ authors: [hexToBytes(author)],
23
+ language: language ? toBytes(language) : undefined,
24
+ }).toBinary();
25
+ }
26
+ function opsToBinary(ops) {
27
+ return ops.map(o => {
28
+ switch (o.type) {
29
+ case 'CREATE_RELATION':
30
+ return new OpBinary({
31
+ payload: {
32
+ case: 'createRelation',
33
+ value: Relation.fromJson(o.relation),
34
+ },
35
+ });
36
+ case 'DELETE_RELATION':
37
+ return new OpBinary({
38
+ payload: {
39
+ case: 'deleteRelation',
40
+ value: toBytes(fromBase64(o.id)),
41
+ },
42
+ });
43
+ case 'UPDATE_ENTITY':
44
+ return new OpBinary({
45
+ payload: {
46
+ case: 'updateEntity',
47
+ value: Entity.fromJson(o.entity),
48
+ },
49
+ });
50
+ case 'UNSET_ENTITY_VALUES':
51
+ return new OpBinary({
52
+ payload: {
53
+ case: 'unsetEntityValues',
54
+ value: UnsetEntityValues.fromJson(o.unsetEntityValues),
55
+ },
56
+ });
57
+ case 'DELETE_ENTITY':
58
+ return new OpBinary({
59
+ payload: {
60
+ case: 'deleteEntity',
61
+ value: toBytes(fromBase64(o.id)),
62
+ },
63
+ });
64
+ case 'UPDATE_RELATION':
65
+ return new OpBinary({
66
+ payload: {
67
+ case: 'updateRelation',
68
+ value: RelationUpdate.fromJson(o.relation),
69
+ },
70
+ });
71
+ case 'UNSET_RELATION_FIELDS':
72
+ return new OpBinary({
73
+ payload: {
74
+ case: 'unsetRelationFields',
75
+ value: UnsetRelationFields.fromJson(o.unsetRelationFields),
76
+ },
77
+ });
78
+ }
79
+ });
80
+ }
81
+ //# sourceMappingURL=editv2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editv2.js","sourceRoot":"","sources":["../../../src/proto/editv2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=editv2.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editv2.test.d.ts","sourceRoot":"","sources":["../../../src/proto/editv2.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,211 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { Id, toBase64, toBytes } from '../idv2.js';
3
+ import { encode } from './editv2.js';
4
+ import { Edit } from './gen/src/proto/ipfsv2_pb.js';
5
+ describe('Edit', () => {
6
+ it('encodes and decodes Edit with UPDATE_ENTITY ops correctly', () => {
7
+ const editBinary = encode({
8
+ name: 'test',
9
+ ops: [
10
+ {
11
+ type: 'UPDATE_ENTITY',
12
+ entity: {
13
+ id: toBase64(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
14
+ values: [
15
+ {
16
+ propertyId: toBase64(Id('d4bc2f20-5e2d-415e-971e-b0b9fbf6b6fc')),
17
+ value: 'test value',
18
+ },
19
+ ],
20
+ },
21
+ },
22
+ ],
23
+ author: '0x000000000000000000000000000000000000',
24
+ });
25
+ const result = Edit.fromBinary(editBinary);
26
+ expect(result.name).toBe('test');
27
+ expect(result.ops.length).toBe(1);
28
+ const op = result.ops[0];
29
+ if (!op)
30
+ throw new Error('Expected op to be defined');
31
+ expect(op.payload?.case).toBe('updateEntity');
32
+ expect(op.payload?.value).toEqual({
33
+ id: toBytes(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
34
+ values: [
35
+ {
36
+ propertyId: toBytes(Id('d4bc2f20-5e2d-415e-971e-b0b9fbf6b6fc')),
37
+ value: 'test value',
38
+ },
39
+ ],
40
+ });
41
+ });
42
+ it('encodes and decodes Edit with DELETE_ENTITY ops correctly', () => {
43
+ const editBinary = encode({
44
+ name: 'test',
45
+ ops: [
46
+ {
47
+ type: 'DELETE_ENTITY',
48
+ id: toBase64(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
49
+ },
50
+ ],
51
+ author: '0x000000000000000000000000000000000000',
52
+ });
53
+ const result = Edit.fromBinary(editBinary);
54
+ expect(result.name).toBe('test');
55
+ expect(result.ops.length).toBe(1);
56
+ const op = result.ops[0];
57
+ if (!op)
58
+ throw new Error('Expected op to be defined');
59
+ expect(op.payload?.case).toBe('deleteEntity');
60
+ expect(op.payload?.value).toEqual(toBytes(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')));
61
+ });
62
+ it('encodes and decodes Edit with CREATE_RELATION ops correctly', () => {
63
+ const editBinary = encode({
64
+ name: 'test',
65
+ ops: [
66
+ {
67
+ type: 'CREATE_RELATION',
68
+ relation: {
69
+ id: toBase64(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
70
+ type: toBase64(Id('cf518eaf-ef74-4aad-bc87-fe09c2631fcd')),
71
+ fromEntity: toBase64(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
72
+ toEntity: toBase64(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
73
+ entity: toBase64(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
74
+ position: 'test-position',
75
+ },
76
+ },
77
+ ],
78
+ author: '0x000000000000000000000000000000000000',
79
+ });
80
+ const result = Edit.fromBinary(editBinary);
81
+ expect(result.name).toBe('test');
82
+ expect(result.ops.length).toBe(1);
83
+ const op = result.ops[0];
84
+ if (!op)
85
+ throw new Error('Expected op to be defined');
86
+ expect(op.payload?.case).toBe('createRelation');
87
+ expect(op.payload?.value).toEqual({
88
+ id: toBytes(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
89
+ type: toBytes(Id('cf518eaf-ef74-4aad-bc87-fe09c2631fcd')),
90
+ fromEntity: toBytes(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
91
+ toEntity: toBytes(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
92
+ entity: toBytes(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
93
+ position: 'test-position',
94
+ });
95
+ });
96
+ it('encodes and decodes Edit with DELETE_RELATION ops correctly', () => {
97
+ const editBinary = encode({
98
+ name: 'test',
99
+ ops: [
100
+ {
101
+ type: 'DELETE_RELATION',
102
+ id: toBase64(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
103
+ },
104
+ ],
105
+ author: '0x000000000000000000000000000000000000',
106
+ });
107
+ const result = Edit.fromBinary(editBinary);
108
+ expect(result.name).toBe('test');
109
+ expect(result.ops.length).toBe(1);
110
+ const op = result.ops[0];
111
+ if (!op)
112
+ throw new Error('Expected op to be defined');
113
+ expect(op.payload?.case).toBe('deleteRelation');
114
+ expect(op.payload?.value).toEqual(toBytes(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')));
115
+ });
116
+ it('encodes and decodes Edit with UPDATE_RELATION ops correctly', () => {
117
+ const editBinary = encode({
118
+ name: 'test',
119
+ ops: [
120
+ {
121
+ type: 'UPDATE_RELATION',
122
+ relation: {
123
+ id: toBase64(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
124
+ position: 'new-position',
125
+ },
126
+ },
127
+ ],
128
+ author: '0x000000000000000000000000000000000000',
129
+ });
130
+ const result = Edit.fromBinary(editBinary);
131
+ expect(result.name).toBe('test');
132
+ expect(result.ops.length).toBe(1);
133
+ const op = result.ops[0];
134
+ if (!op)
135
+ throw new Error('Expected op to be defined');
136
+ expect(op.payload?.case).toBe('updateRelation');
137
+ expect(op.payload?.value).toEqual({
138
+ id: toBytes(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
139
+ position: 'new-position',
140
+ });
141
+ });
142
+ it('encodes and decodes Edit with UNSET_ENTITY_VALUES ops correctly', () => {
143
+ const editBinary = encode({
144
+ name: 'test',
145
+ ops: [
146
+ {
147
+ type: 'UNSET_ENTITY_VALUES',
148
+ unsetEntityValues: {
149
+ id: toBase64(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
150
+ properties: [
151
+ toBase64(Id('d4bc2f20-5e2d-415e-971e-b0b9fbf6b6fc')),
152
+ toBase64(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
153
+ ],
154
+ },
155
+ },
156
+ ],
157
+ author: '0x000000000000000000000000000000000000',
158
+ });
159
+ const result = Edit.fromBinary(editBinary);
160
+ expect(result.name).toBe('test');
161
+ expect(result.ops.length).toBe(1);
162
+ const op = result.ops[0];
163
+ if (!op)
164
+ throw new Error('Expected op to be defined');
165
+ expect(op.payload?.case).toBe('unsetEntityValues');
166
+ expect(op.payload?.value).toEqual({
167
+ id: toBytes(Id('3af3e22d-2169-4a07-8681-516710b7ecf1')),
168
+ properties: [
169
+ toBytes(Id('d4bc2f20-5e2d-415e-971e-b0b9fbf6b6fc')),
170
+ toBytes(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
171
+ ],
172
+ });
173
+ });
174
+ it('encodes and decodes Edit with UNSET_RELATION_FIELDS ops correctly', () => {
175
+ const editBinary = encode({
176
+ name: 'test',
177
+ ops: [
178
+ {
179
+ type: 'UNSET_RELATION_FIELDS',
180
+ unsetRelationFields: {
181
+ id: toBase64(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
182
+ fromSpace: true,
183
+ fromVersion: false,
184
+ toSpace: true,
185
+ toVersion: false,
186
+ position: true,
187
+ verified: false,
188
+ },
189
+ },
190
+ ],
191
+ author: '0x000000000000000000000000000000000000',
192
+ });
193
+ const result = Edit.fromBinary(editBinary);
194
+ expect(result.name).toBe('test');
195
+ expect(result.ops.length).toBe(1);
196
+ const op = result.ops[0];
197
+ if (!op)
198
+ throw new Error('Expected op to be defined');
199
+ expect(op.payload?.case).toBe('unsetRelationFields');
200
+ expect(op.payload?.value).toEqual({
201
+ id: toBytes(Id('765564ca-c7e5-4c61-b1dc-c28ab77ec6b7')),
202
+ fromSpace: true,
203
+ fromVersion: false,
204
+ toSpace: true,
205
+ toVersion: false,
206
+ position: true,
207
+ verified: false,
208
+ });
209
+ });
210
+ });
211
+ //# sourceMappingURL=editv2.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editv2.test.js","sourceRoot":"","sources":["../../../src/proto/editv2.test.ts"],"names":[],"mappings":"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"}