@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.
- package/README.md +5 -6
- package/dist/convert-ids.d.ts +2 -0
- package/dist/convert-ids.d.ts.map +1 -0
- package/dist/convert-ids.js +42 -0
- package/dist/convert-ids.js.map +1 -0
- package/dist/protov2.d.ts +11 -0
- package/dist/protov2.d.ts.map +1 -0
- package/dist/protov2.js +11 -0
- package/dist/protov2.js.map +1 -0
- package/dist/src/core/blocks/image.d.ts +15 -0
- package/dist/src/core/blocks/image.d.ts.map +1 -0
- package/dist/src/core/blocks/image.js +15 -0
- package/dist/src/core/blocks/image.js.map +1 -0
- package/dist/src/core/idsv2/content.d.ts +59 -0
- package/dist/src/core/idsv2/content.d.ts.map +1 -0
- package/dist/src/core/idsv2/content.js +59 -0
- package/dist/src/core/idsv2/content.js.map +1 -0
- package/dist/src/core/idsv2/network.d.ts +5 -0
- package/dist/src/core/idsv2/network.d.ts.map +1 -0
- package/dist/src/core/idsv2/network.js +5 -0
- package/dist/src/core/idsv2/network.js.map +1 -0
- package/dist/src/core/idsv2/system.d.ts +222 -0
- package/dist/src/core/idsv2/system.d.ts.map +1 -0
- package/dist/src/core/idsv2/system.js +230 -0
- package/dist/src/core/idsv2/system.js.map +1 -0
- package/dist/src/core/image.d.ts +40 -0
- package/dist/src/core/image.d.ts.map +1 -0
- package/dist/src/core/image.js +76 -0
- package/dist/src/core/image.js.map +1 -0
- package/dist/src/core/image.test.d.ts +2 -0
- package/dist/src/core/image.test.d.ts.map +1 -0
- package/dist/src/core/image.test.js +52 -0
- package/dist/src/core/image.test.js.map +1 -0
- package/dist/src/core/relation.d.ts +88 -0
- package/dist/src/core/relation.d.ts.map +1 -0
- package/dist/src/core/relation.js +89 -0
- package/dist/src/core/relation.js.map +1 -0
- package/dist/src/core/relation.test.d.ts +2 -0
- package/dist/src/core/relation.test.d.ts.map +1 -0
- package/dist/src/core/relation.test.js +45 -0
- package/dist/src/core/relation.test.js.map +1 -0
- package/dist/src/core/triple.d.ts +50 -0
- package/dist/src/core/triple.d.ts.map +1 -0
- package/dist/src/core/triple.js +56 -0
- package/dist/src/core/triple.js.map +1 -0
- package/dist/src/core/triple.test.d.ts +2 -0
- package/dist/src/core/triple.test.d.ts.map +1 -0
- package/dist/src/core/triple.test.js +37 -0
- package/dist/src/core/triple.test.js.map +1 -0
- package/dist/src/encoding.d.ts.map +1 -1
- package/dist/src/encoding.js +3 -6
- package/dist/src/encoding.js.map +1 -1
- package/dist/src/full-flow-test.test.d.ts +2 -0
- package/dist/src/full-flow-test.test.d.ts.map +1 -0
- package/dist/src/full-flow-test.test.js +50 -0
- package/dist/src/full-flow-test.test.js.map +1 -0
- package/dist/src/graph/constants.d.ts +2 -1
- package/dist/src/graph/constants.d.ts.map +1 -1
- package/dist/src/graph/constants.js +2 -1
- package/dist/src/graph/constants.js.map +1 -1
- package/dist/src/graph/create-image.test.js +2 -1
- package/dist/src/graph/create-image.test.js.map +1 -1
- package/dist/src/graph/create-property.test.js +48 -52
- package/dist/src/graph/create-property.test.js.map +1 -1
- package/dist/src/graph/create-space.js +5 -5
- package/dist/src/graph/create-space.js.map +1 -1
- package/dist/src/graph/graph.test.d.ts +2 -0
- package/dist/src/graph/graph.test.d.ts.map +1 -0
- package/dist/src/graph/graph.test.js +46 -0
- package/dist/src/graph/graph.test.js.map +1 -0
- package/dist/src/graph/helpers/create-default-properties.d.ts +5 -0
- package/dist/src/graph/helpers/create-default-properties.d.ts.map +1 -0
- package/dist/src/graph/helpers/create-default-properties.js +44 -0
- package/dist/src/graph/helpers/create-default-properties.js.map +1 -0
- package/dist/src/graph/helpers/create-properties.d.ts +8 -0
- package/dist/src/graph/helpers/create-properties.d.ts.map +1 -0
- package/dist/src/graph/helpers/create-properties.js +53 -0
- package/dist/src/graph/helpers/create-properties.js.map +1 -0
- package/dist/src/graph/index.d.ts +0 -1
- package/dist/src/graph/index.d.ts.map +1 -1
- package/dist/src/graph/index.js +0 -1
- package/dist/src/graph/index.js.map +1 -1
- package/dist/src/graphv2/constants.d.ts +2 -0
- package/dist/src/graphv2/constants.d.ts.map +1 -0
- package/dist/src/graphv2/constants.js +2 -0
- package/dist/src/graphv2/constants.js.map +1 -0
- package/dist/src/graphv2/create-entity.d.ts +52 -0
- package/dist/src/graphv2/create-entity.d.ts.map +1 -0
- package/dist/src/graphv2/create-entity.js +140 -0
- package/dist/src/graphv2/create-entity.js.map +1 -0
- package/dist/src/graphv2/create-entity.test.d.ts +2 -0
- package/dist/src/graphv2/create-entity.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-entity.test.js +158 -0
- package/dist/src/graphv2/create-entity.test.js.map +1 -0
- package/dist/src/graphv2/create-image.d.ts +28 -0
- package/dist/src/graphv2/create-image.d.ts.map +1 -0
- package/dist/src/graphv2/create-image.js +71 -0
- package/dist/src/graphv2/create-image.js.map +1 -0
- package/dist/src/graphv2/create-image.test.d.ts +2 -0
- package/dist/src/graphv2/create-image.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-image.test.js +142 -0
- package/dist/src/graphv2/create-image.test.js.map +1 -0
- package/dist/src/graphv2/create-property.d.ts +22 -0
- package/dist/src/graphv2/create-property.d.ts.map +1 -0
- package/dist/src/graphv2/create-property.js +129 -0
- package/dist/src/graphv2/create-property.js.map +1 -0
- package/dist/src/graphv2/create-property.test.d.ts +2 -0
- package/dist/src/graphv2/create-property.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-property.test.js +82 -0
- package/dist/src/graphv2/create-property.test.js.map +1 -0
- package/dist/src/graphv2/create-relation.d.ts +33 -0
- package/dist/src/graphv2/create-relation.d.ts.map +1 -0
- package/dist/src/graphv2/create-relation.js +66 -0
- package/dist/src/graphv2/create-relation.js.map +1 -0
- package/dist/src/graphv2/create-relation.test.d.ts +2 -0
- package/dist/src/graphv2/create-relation.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-relation.test.js +208 -0
- package/dist/src/graphv2/create-relation.test.js.map +1 -0
- package/dist/src/graphv2/create-space.d.ts +13 -0
- package/dist/src/graphv2/create-space.d.ts.map +1 -0
- package/dist/src/graphv2/create-space.js +21 -0
- package/dist/src/graphv2/create-space.js.map +1 -0
- package/dist/src/graphv2/create-type.d.ts +22 -0
- package/dist/src/graphv2/create-type.d.ts.map +1 -0
- package/dist/src/graphv2/create-type.js +64 -0
- package/dist/src/graphv2/create-type.js.map +1 -0
- package/dist/src/graphv2/create-type.test.d.ts +2 -0
- package/dist/src/graphv2/create-type.test.d.ts.map +1 -0
- package/dist/src/graphv2/create-type.test.js +109 -0
- package/dist/src/graphv2/create-type.test.js.map +1 -0
- package/dist/src/graphv2/delete-entity.d.ts +14 -0
- package/dist/src/graphv2/delete-entity.d.ts.map +1 -0
- package/dist/src/graphv2/delete-entity.js +21 -0
- package/dist/src/graphv2/delete-entity.js.map +1 -0
- package/dist/src/graphv2/delete-entity.test.d.ts +2 -0
- package/dist/src/graphv2/delete-entity.test.d.ts.map +1 -0
- package/dist/src/graphv2/delete-entity.test.js +24 -0
- package/dist/src/graphv2/delete-entity.test.js.map +1 -0
- package/dist/src/graphv2/delete-relation.d.ts +14 -0
- package/dist/src/graphv2/delete-relation.d.ts.map +1 -0
- package/dist/src/graphv2/delete-relation.js +21 -0
- package/dist/src/graphv2/delete-relation.js.map +1 -0
- package/dist/src/graphv2/delete-relation.test.d.ts +2 -0
- package/dist/src/graphv2/delete-relation.test.d.ts.map +1 -0
- package/dist/src/graphv2/delete-relation.test.js +24 -0
- package/dist/src/graphv2/delete-relation.test.js.map +1 -0
- package/dist/src/graphv2/index.d.ts +12 -0
- package/dist/src/graphv2/index.d.ts.map +1 -0
- package/dist/src/graphv2/index.js +12 -0
- package/dist/src/graphv2/index.js.map +1 -0
- package/dist/src/graphv2/remove-entity-properties.d.ts +25 -0
- package/dist/src/graphv2/remove-entity-properties.d.ts.map +1 -0
- package/dist/src/graphv2/remove-entity-properties.js +24 -0
- package/dist/src/graphv2/remove-entity-properties.js.map +1 -0
- package/dist/src/graphv2/unset-entity-values.d.ts +21 -0
- package/dist/src/graphv2/unset-entity-values.d.ts.map +1 -0
- package/dist/src/graphv2/unset-entity-values.js +26 -0
- package/dist/src/graphv2/unset-entity-values.js.map +1 -0
- package/dist/src/graphv2/unset-entity-values.test.d.ts +2 -0
- package/dist/src/graphv2/unset-entity-values.test.d.ts.map +1 -0
- package/dist/src/graphv2/unset-entity-values.test.js +40 -0
- package/dist/src/graphv2/unset-entity-values.test.js.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.d.ts +25 -0
- package/dist/src/graphv2/unset-relation-fields.d.ts.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.js +34 -0
- package/dist/src/graphv2/unset-relation-fields.js.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.test.d.ts +2 -0
- package/dist/src/graphv2/unset-relation-fields.test.d.ts.map +1 -0
- package/dist/src/graphv2/unset-relation-fields.test.js +64 -0
- package/dist/src/graphv2/unset-relation-fields.test.js.map +1 -0
- package/dist/src/graphv2/update-entity.d.ts +28 -0
- package/dist/src/graphv2/update-entity.d.ts.map +1 -0
- package/dist/src/graphv2/update-entity.js +73 -0
- package/dist/src/graphv2/update-entity.js.map +1 -0
- package/dist/src/graphv2/update-entity.test.d.ts +2 -0
- package/dist/src/graphv2/update-entity.test.d.ts.map +1 -0
- package/dist/src/graphv2/update-entity.test.js +116 -0
- package/dist/src/graphv2/update-entity.test.js.map +1 -0
- package/dist/src/graphv2/update-relation.d.ts +21 -0
- package/dist/src/graphv2/update-relation.d.ts.map +1 -0
- package/dist/src/graphv2/update-relation.js +37 -0
- package/dist/src/graphv2/update-relation.js.map +1 -0
- package/dist/src/idv2.d.ts +27 -0
- package/dist/src/idv2.d.ts.map +1 -0
- package/dist/src/idv2.js +88 -0
- package/dist/src/idv2.js.map +1 -0
- package/dist/src/idv2.test.d.ts +2 -0
- package/dist/src/idv2.test.d.ts.map +1 -0
- package/dist/src/idv2.test.js +26 -0
- package/dist/src/idv2.test.js.map +1 -0
- package/dist/src/image.d.ts +8 -0
- package/dist/src/image.d.ts.map +1 -0
- package/dist/src/image.js +8 -0
- package/dist/src/image.js.map +1 -0
- package/dist/src/ipfs.d.ts +3 -2
- package/dist/src/ipfs.d.ts.map +1 -1
- package/dist/src/ipfs.js +11 -10
- package/dist/src/ipfs.js.map +1 -1
- package/dist/src/ipfs.test.js +1 -0
- package/dist/src/ipfs.test.js.map +1 -1
- package/dist/src/ipfsv2.d.ts +96 -0
- package/dist/src/ipfsv2.d.ts.map +1 -0
- package/dist/src/ipfsv2.js +163 -0
- package/dist/src/ipfsv2.js.map +1 -0
- package/dist/src/ipfsv2.test.d.ts +2 -0
- package/dist/src/ipfsv2.test.d.ts.map +1 -0
- package/dist/src/ipfsv2.test.js +22 -0
- package/dist/src/ipfsv2.test.js.map +1 -0
- package/dist/src/proto/edit.js +0 -7
- package/dist/src/proto/edit.js.map +1 -1
- package/dist/src/proto/edit.test.js +0 -20
- package/dist/src/proto/edit.test.js.map +1 -1
- package/dist/src/proto/editv2.d.ts +11 -0
- package/dist/src/proto/editv2.d.ts.map +1 -0
- package/dist/src/proto/editv2.js +81 -0
- package/dist/src/proto/editv2.js.map +1 -0
- package/dist/src/proto/editv2.test.d.ts +2 -0
- package/dist/src/proto/editv2.test.d.ts.map +1 -0
- package/dist/src/proto/editv2.test.js +211 -0
- package/dist/src/proto/editv2.test.js.map +1 -0
- package/dist/src/proto/gen/src/proto/ipfs_pb.d.ts +6 -12
- package/dist/src/proto/gen/src/proto/ipfs_pb.d.ts.map +1 -1
- package/dist/src/proto/gen/src/proto/ipfs_pb.js +6 -7
- package/dist/src/proto/gen/src/proto/ipfs_pb.js.map +1 -1
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts +410 -0
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.d.ts.map +1 -0
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.js +536 -0
- package/dist/src/proto/gen/src/proto/ipfsv2_pb.js.map +1 -0
- package/dist/src/relation.d.ts +7 -0
- package/dist/src/relation.d.ts.map +1 -0
- package/dist/src/relation.js +7 -0
- package/dist/src/relation.js.map +1 -0
- package/dist/src/smart-wallet-2.test-invalid.d.ts +2 -0
- package/dist/src/smart-wallet-2.test-invalid.d.ts.map +1 -0
- package/dist/src/smart-wallet-2.test-invalid.js +49 -0
- package/dist/src/smart-wallet-2.test-invalid.js.map +1 -0
- package/dist/src/smart-wallet-2.test.d.ts +2 -0
- package/dist/src/smart-wallet-2.test.d.ts.map +1 -0
- package/dist/src/smart-wallet-2.test.js +49 -0
- package/dist/src/smart-wallet-2.test.js.map +1 -0
- package/dist/src/system-ids-v2.d.ts +7 -0
- package/dist/src/system-ids-v2.d.ts.map +1 -0
- package/dist/src/system-ids-v2.js +7 -0
- package/dist/src/system-ids-v2.js.map +1 -0
- package/dist/src/triple.d.ts +7 -0
- package/dist/src/triple.d.ts.map +1 -0
- package/dist/src/triple.js +7 -0
- package/dist/src/triple.js.map +1 -0
- package/dist/src/types-backup.d.ts +134 -0
- package/dist/src/types-backup.d.ts.map +1 -0
- package/dist/src/types-backup.js +13 -0
- package/dist/src/types-backup.js.map +1 -0
- package/dist/src/types.d.ts +1 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/typesv2.d.ts +173 -0
- package/dist/src/typesv2.d.ts.map +1 -0
- package/dist/src/typesv2.js +8 -0
- package/dist/src/typesv2.js.map +1 -0
- 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"}
|
package/dist/src/idv2.js
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/image.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC"}
|
package/dist/src/ipfs.d.ts
CHANGED
|
@@ -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
|
package/dist/src/ipfs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../src/ipfs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
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('
|
|
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('
|
|
148
|
+
try: () => fetch(`${network === 'TESTNET' ? TESTNET_API_ORIGIN : MAINNET_API_ORIGIN}/ipfs/upload-file`, {
|
|
148
149
|
method: 'POST',
|
|
149
150
|
body: formData,
|
|
150
151
|
}),
|
package/dist/src/ipfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../src/ipfs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAW,SAAS,EAAE,MAAM,SAAS,CAAC;AAG7C,MAAM,eAAgB,SAAQ,KAAK;IACxB,IAAI,GAAG,iBAAiB,CAAC;CACnC;
|
|
1
|
+
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../src/ipfs.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ipfs.test.js
CHANGED
|
@@ -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;
|
|
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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"}
|