@geoprotocol/geo-sdk 0.18.1 → 0.18.3
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/dist/src/dao-space/index.d.ts +3 -1
- package/dist/src/dao-space/index.d.ts.map +1 -1
- package/dist/src/dao-space/index.js +2 -0
- package/dist/src/dao-space/index.js.map +1 -1
- package/dist/src/dao-space/propose-add-editor.d.ts +27 -0
- package/dist/src/dao-space/propose-add-editor.d.ts.map +1 -0
- package/dist/src/dao-space/propose-add-editor.js +97 -0
- package/dist/src/dao-space/propose-add-editor.js.map +1 -0
- package/dist/src/dao-space/propose-add-editor.test.d.ts +2 -0
- package/dist/src/dao-space/propose-add-editor.test.d.ts.map +1 -0
- package/dist/src/dao-space/propose-add-editor.test.js +105 -0
- package/dist/src/dao-space/propose-add-editor.test.js.map +1 -0
- package/dist/src/dao-space/propose-remove-editor.d.ts +29 -0
- package/dist/src/dao-space/propose-remove-editor.d.ts.map +1 -0
- package/dist/src/dao-space/propose-remove-editor.js +104 -0
- package/dist/src/dao-space/propose-remove-editor.js.map +1 -0
- package/dist/src/dao-space/propose-remove-editor.test.d.ts +2 -0
- package/dist/src/dao-space/propose-remove-editor.test.d.ts.map +1 -0
- package/dist/src/dao-space/propose-remove-editor.test.js +167 -0
- package/dist/src/dao-space/propose-remove-editor.test.js.map +1 -0
- package/dist/src/dao-space/types.d.ts +72 -0
- package/dist/src/dao-space/types.d.ts.map +1 -1
- package/dist/src/graph/entity-vote.d.ts +37 -0
- package/dist/src/graph/entity-vote.d.ts.map +1 -0
- package/dist/src/graph/entity-vote.js +69 -0
- package/dist/src/graph/entity-vote.js.map +1 -0
- package/dist/src/graph/entity-vote.test.d.ts +2 -0
- package/dist/src/graph/entity-vote.test.d.ts.map +1 -0
- package/dist/src/graph/entity-vote.test.js +123 -0
- package/dist/src/graph/entity-vote.test.js.map +1 -0
- package/dist/src/graph/index.d.ts +1 -0
- package/dist/src/graph/index.d.ts.map +1 -1
- package/dist/src/graph/index.js +1 -0
- package/dist/src/graph/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export { createSpace } from './create-space.js';
|
|
2
2
|
export { executeProposal } from './execute-proposal.js';
|
|
3
|
+
export { proposeAddEditor } from './propose-add-editor.js';
|
|
3
4
|
export { proposeAddMember } from './propose-add-member.js';
|
|
4
5
|
export { proposeEdit } from './propose-edit.js';
|
|
6
|
+
export { proposeRemoveEditor } from './propose-remove-editor.js';
|
|
5
7
|
export { proposeRemoveMember } from './propose-remove-member.js';
|
|
6
8
|
export { proposeRequestMembership } from './propose-request-membership.js';
|
|
7
|
-
export type { CreateSpaceParams, CreateSpaceResult, ExecuteProposalParams, ExecuteProposalResult, ProposeAddMemberParams, ProposeAddMemberResult, ProposeEditParams, ProposeEditResult, ProposeRemoveMemberParams, ProposeRemoveMemberResult, ProposeRequestMembershipParams, ProposeRequestMembershipResult, VoteOption, VoteProposalParams, VoteProposalResult, VotingMode, } from './types.js';
|
|
9
|
+
export type { CreateSpaceParams, CreateSpaceResult, ExecuteProposalParams, ExecuteProposalResult, ProposeAddEditorParams, ProposeAddEditorResult, ProposeAddMemberParams, ProposeAddMemberResult, ProposeEditParams, ProposeEditResult, ProposeRemoveEditorParams, ProposeRemoveEditorResult, ProposeRemoveMemberParams, ProposeRemoveMemberResult, ProposeRequestMembershipParams, ProposeRequestMembershipResult, VoteOption, VoteProposalParams, VoteProposalResult, VotingMode, } from './types.js';
|
|
8
10
|
export { voteProposal } from './vote-proposal.js';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dao-space/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,8BAA8B,EAC9B,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dao-space/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,8BAA8B,EAC9B,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { createSpace } from './create-space.js';
|
|
2
2
|
export { executeProposal } from './execute-proposal.js';
|
|
3
|
+
export { proposeAddEditor } from './propose-add-editor.js';
|
|
3
4
|
export { proposeAddMember } from './propose-add-member.js';
|
|
4
5
|
export { proposeEdit } from './propose-edit.js';
|
|
6
|
+
export { proposeRemoveEditor } from './propose-remove-editor.js';
|
|
5
7
|
export { proposeRemoveMember } from './propose-remove-member.js';
|
|
6
8
|
export { proposeRequestMembership } from './propose-request-membership.js';
|
|
7
9
|
export { voteProposal } from './vote-proposal.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dao-space/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dao-space/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAuB3E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ProposeAddEditorParams, ProposeAddEditorResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a proposal to add an editor to a DAO space.
|
|
4
|
+
*
|
|
5
|
+
* This function encodes a proposal that, when executed, will call the DAO
|
|
6
|
+
* space's `addEditor()` function to add the given editor space ID.
|
|
7
|
+
* The proposal is submitted via SpaceRegistry's `enter()` function.
|
|
8
|
+
*
|
|
9
|
+
* @param params - The parameters for creating the proposal
|
|
10
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
15
|
+
*
|
|
16
|
+
* const { to, calldata, proposalId } = daoSpace.proposeAddEditor({
|
|
17
|
+
* authorSpaceId: '0xProposerBytes16SpaceId...',
|
|
18
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
19
|
+
* newEditorSpaceId: '0xNewEditorBytes16SpaceId...',
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // Submit the transaction using viem or another client
|
|
23
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function proposeAddEditor(params: ProposeAddEditorParams): ProposeAddEditorResult;
|
|
27
|
+
//# sourceMappingURL=propose-add-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-add-editor.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-add-editor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,sBAAsB,CAyFvF"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import { encodeAbiParameters, encodeFunctionData } from 'viem';
|
|
3
|
+
import { DaoSpaceAbi, SpaceRegistryAbi } from '../abis/index.js';
|
|
4
|
+
import { bytes16ToBytes32LeftAligned, EMPTY_SIGNATURE, ensure0xPrefix, getContractAddressesBasedOnNetwork, isBytes16Hex, PROPOSAL_CREATED_ACTION, } from './constants.js';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a proposal to add an editor to a DAO space.
|
|
7
|
+
*
|
|
8
|
+
* This function encodes a proposal that, when executed, will call the DAO
|
|
9
|
+
* space's `addEditor()` function to add the given editor space ID.
|
|
10
|
+
* The proposal is submitted via SpaceRegistry's `enter()` function.
|
|
11
|
+
*
|
|
12
|
+
* @param params - The parameters for creating the proposal
|
|
13
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
18
|
+
*
|
|
19
|
+
* const { to, calldata, proposalId } = daoSpace.proposeAddEditor({
|
|
20
|
+
* authorSpaceId: '0xProposerBytes16SpaceId...',
|
|
21
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
22
|
+
* newEditorSpaceId: '0xNewEditorBytes16SpaceId...',
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Submit the transaction using viem or another client
|
|
26
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function proposeAddEditor(params) {
|
|
30
|
+
const { authorSpaceId: rawAuthorSpaceId, spaceId: rawSpaceId, newEditorSpaceId: rawNewEditorSpaceId, votingMode = 'SLOW', proposalId: rawProposalId, network = 'TESTNET', } = params;
|
|
31
|
+
// Validate inputs
|
|
32
|
+
const authorSpaceId = ensure0xPrefix(rawAuthorSpaceId);
|
|
33
|
+
const newEditorSpaceId = ensure0xPrefix(rawNewEditorSpaceId);
|
|
34
|
+
const spaceId = ensure0xPrefix(rawSpaceId);
|
|
35
|
+
if (!isBytes16Hex(authorSpaceId)) {
|
|
36
|
+
throw new Error(`authorSpaceId must be bytes16 hex (0x followed by 32 hex chars). Received: ${authorSpaceId}`);
|
|
37
|
+
}
|
|
38
|
+
if (!isBytes16Hex(spaceId)) {
|
|
39
|
+
throw new Error(`spaceId must be bytes16 hex (0x followed by 32 hex chars). Received: ${spaceId}`);
|
|
40
|
+
}
|
|
41
|
+
if (!isBytes16Hex(newEditorSpaceId)) {
|
|
42
|
+
throw new Error(`newEditorSpaceId must be bytes16 hex (0x followed by 32 hex chars). Received: ${newEditorSpaceId}`);
|
|
43
|
+
}
|
|
44
|
+
const proposalId = rawProposalId
|
|
45
|
+
? ensure0xPrefix(rawProposalId)
|
|
46
|
+
: `0x${uuidv4().replaceAll('-', '')}`;
|
|
47
|
+
// Encode the addEditor function call: addEditor(bytes16 _newEditorSpaceId)
|
|
48
|
+
const proposalActionCalldata = encodeFunctionData({
|
|
49
|
+
abi: DaoSpaceAbi,
|
|
50
|
+
functionName: 'addEditor',
|
|
51
|
+
args: [newEditorSpaceId],
|
|
52
|
+
});
|
|
53
|
+
const contracts = getContractAddressesBasedOnNetwork(network);
|
|
54
|
+
// Create the proposal action (calling addEditor on the DAO space)
|
|
55
|
+
const proposalActions = [
|
|
56
|
+
{
|
|
57
|
+
to: contracts.SPACE_REGISTRY_ADDRESS,
|
|
58
|
+
value: 0n,
|
|
59
|
+
data: proposalActionCalldata,
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
// Encode the proposal data: abi.encode(bytes16 proposalId, VotingMode votingMode, Action[] actions)
|
|
63
|
+
const data = encodeAbiParameters([
|
|
64
|
+
{ type: 'bytes16', name: 'proposalId' },
|
|
65
|
+
{ type: 'uint8', name: 'votingMode' },
|
|
66
|
+
{
|
|
67
|
+
type: 'tuple[]',
|
|
68
|
+
name: 'actions',
|
|
69
|
+
components: [
|
|
70
|
+
{ type: 'address', name: 'to' },
|
|
71
|
+
{ type: 'uint256', name: 'value' },
|
|
72
|
+
{ type: 'bytes', name: 'data' },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
], [proposalId, votingMode === 'FAST' ? 1 : 0, proposalActions]);
|
|
76
|
+
// Convert proposalId to bytes32 for the topic (left-aligned)
|
|
77
|
+
const topic = bytes16ToBytes32LeftAligned(proposalId);
|
|
78
|
+
// Encode the SpaceRegistry.enter() call
|
|
79
|
+
const calldata = encodeFunctionData({
|
|
80
|
+
abi: SpaceRegistryAbi,
|
|
81
|
+
functionName: 'enter',
|
|
82
|
+
args: [
|
|
83
|
+
authorSpaceId, // fromSpaceId
|
|
84
|
+
spaceId, // toSpaceId
|
|
85
|
+
PROPOSAL_CREATED_ACTION, // action
|
|
86
|
+
topic, // topic (proposalId left-aligned to bytes32)
|
|
87
|
+
data, // data (encoded proposal)
|
|
88
|
+
EMPTY_SIGNATURE, // signature (unused when msg.sender == fromSpace)
|
|
89
|
+
],
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
to: contracts.SPACE_REGISTRY_ADDRESS,
|
|
93
|
+
calldata,
|
|
94
|
+
proposalId,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=propose-add-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-add-editor.js","sourceRoot":"","sources":["../../../src/dao-space/propose-add-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-add-editor.test.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-add-editor.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { TESTNET } from '../../contracts.js';
|
|
3
|
+
import { proposeAddEditor } from './propose-add-editor.js';
|
|
4
|
+
describe('proposeAddEditor', () => {
|
|
5
|
+
const validAuthorSpaceId = '0x0eed5491b917cf58b33ac81255fe7ae9';
|
|
6
|
+
const validSpaceId = '0xabcdef12345678901234567890abcdef';
|
|
7
|
+
const validNewEditorSpaceId = '0x11111111111111111111111111111111';
|
|
8
|
+
it('should return correct structure', () => {
|
|
9
|
+
const result = proposeAddEditor({
|
|
10
|
+
authorSpaceId: validAuthorSpaceId,
|
|
11
|
+
spaceId: validSpaceId,
|
|
12
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
13
|
+
});
|
|
14
|
+
expect(result).toHaveProperty('to');
|
|
15
|
+
expect(result).toHaveProperty('calldata');
|
|
16
|
+
expect(result).toHaveProperty('proposalId');
|
|
17
|
+
});
|
|
18
|
+
it('should return the correct contract address (Space Registry)', () => {
|
|
19
|
+
const { to } = proposeAddEditor({
|
|
20
|
+
authorSpaceId: validAuthorSpaceId,
|
|
21
|
+
spaceId: validSpaceId,
|
|
22
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
23
|
+
});
|
|
24
|
+
expect(to).toBe(TESTNET.SPACE_REGISTRY_ADDRESS);
|
|
25
|
+
});
|
|
26
|
+
it('should return valid calldata', () => {
|
|
27
|
+
const { calldata } = proposeAddEditor({
|
|
28
|
+
authorSpaceId: validAuthorSpaceId,
|
|
29
|
+
spaceId: validSpaceId,
|
|
30
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
31
|
+
});
|
|
32
|
+
expect(calldata).toBeTypeOf('string');
|
|
33
|
+
expect(calldata.startsWith('0x')).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
it('should return valid proposalId (bytes16 hex)', () => {
|
|
36
|
+
const { proposalId } = proposeAddEditor({
|
|
37
|
+
authorSpaceId: validAuthorSpaceId,
|
|
38
|
+
spaceId: validSpaceId,
|
|
39
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
40
|
+
});
|
|
41
|
+
expect(proposalId).toMatch(/^0x[0-9a-fA-F]{32}$/);
|
|
42
|
+
});
|
|
43
|
+
it('should accept custom proposalId', () => {
|
|
44
|
+
const customProposalId = '0x22222222222222222222222222222222';
|
|
45
|
+
const { proposalId } = proposeAddEditor({
|
|
46
|
+
authorSpaceId: validAuthorSpaceId,
|
|
47
|
+
spaceId: validSpaceId,
|
|
48
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
49
|
+
proposalId: customProposalId,
|
|
50
|
+
});
|
|
51
|
+
expect(proposalId).toBe(customProposalId);
|
|
52
|
+
});
|
|
53
|
+
it('should default to SLOW voting mode and produce valid calldata', () => {
|
|
54
|
+
const result = proposeAddEditor({
|
|
55
|
+
authorSpaceId: validAuthorSpaceId,
|
|
56
|
+
spaceId: validSpaceId,
|
|
57
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
58
|
+
});
|
|
59
|
+
expect(result.calldata).toBeTruthy();
|
|
60
|
+
});
|
|
61
|
+
it('should accept FAST voting mode', () => {
|
|
62
|
+
const result = proposeAddEditor({
|
|
63
|
+
authorSpaceId: validAuthorSpaceId,
|
|
64
|
+
spaceId: validSpaceId,
|
|
65
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
66
|
+
votingMode: 'FAST',
|
|
67
|
+
});
|
|
68
|
+
expect(result.calldata).toBeTruthy();
|
|
69
|
+
});
|
|
70
|
+
it('should generate unique proposalIds for the same input', () => {
|
|
71
|
+
const result1 = proposeAddEditor({
|
|
72
|
+
authorSpaceId: validAuthorSpaceId,
|
|
73
|
+
spaceId: validSpaceId,
|
|
74
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
75
|
+
});
|
|
76
|
+
const result2 = proposeAddEditor({
|
|
77
|
+
authorSpaceId: validAuthorSpaceId,
|
|
78
|
+
spaceId: validSpaceId,
|
|
79
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
80
|
+
});
|
|
81
|
+
expect(result1.proposalId).not.toBe(result2.proposalId);
|
|
82
|
+
});
|
|
83
|
+
it('should throw for invalid spaceId format', () => {
|
|
84
|
+
expect(() => proposeAddEditor({
|
|
85
|
+
authorSpaceId: '0xinvalid',
|
|
86
|
+
spaceId: validSpaceId,
|
|
87
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
88
|
+
})).toThrow('authorSpaceId must be bytes16 hex');
|
|
89
|
+
});
|
|
90
|
+
it('should throw for invalid daoSpaceId format', () => {
|
|
91
|
+
expect(() => proposeAddEditor({
|
|
92
|
+
authorSpaceId: validAuthorSpaceId,
|
|
93
|
+
spaceId: '0xtooshort',
|
|
94
|
+
newEditorSpaceId: validNewEditorSpaceId,
|
|
95
|
+
})).toThrow('spaceId must be bytes16 hex');
|
|
96
|
+
});
|
|
97
|
+
it('should throw for invalid newEditorSpaceId format', () => {
|
|
98
|
+
expect(() => proposeAddEditor({
|
|
99
|
+
authorSpaceId: validAuthorSpaceId,
|
|
100
|
+
spaceId: validSpaceId,
|
|
101
|
+
newEditorSpaceId: '0xinvalid',
|
|
102
|
+
})).toThrow('newEditorSpaceId must be bytes16 hex');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=propose-add-editor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-add-editor.test.js","sourceRoot":"","sources":["../../../src/dao-space/propose-add-editor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ProposeRemoveEditorParams, ProposeRemoveEditorResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a proposal to remove an editor from a DAO space.
|
|
4
|
+
*
|
|
5
|
+
* This function:
|
|
6
|
+
* 1. Validates the author, DAO space, and editor IDs
|
|
7
|
+
* 2. Encodes the `removeEditor()` call as the proposal action
|
|
8
|
+
* 3. Encodes the SpaceRegistry's `enter()` call with the `PROPOSAL_CREATED` action
|
|
9
|
+
*
|
|
10
|
+
* @param params - The parameters for proposing editor removal
|
|
11
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
16
|
+
*
|
|
17
|
+
* const { to, calldata, proposalId } = daoSpace.proposeRemoveEditor({
|
|
18
|
+
* authorSpaceId: '0xAuthorBytes16SpaceId...',
|
|
19
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
20
|
+
* editorToRemoveSpaceId: '0xEditorBytes16SpaceId...',
|
|
21
|
+
* network: 'TESTNET',
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Submit the transaction using viem or another client
|
|
25
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function proposeRemoveEditor(params: ProposeRemoveEditorParams): ProposeRemoveEditorResult;
|
|
29
|
+
//# sourceMappingURL=propose-remove-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-remove-editor.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,yBAAyB,CA0FhG"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
import { encodeAbiParameters, encodeFunctionData } from 'viem';
|
|
3
|
+
import { TESTNET } from '../../contracts.js';
|
|
4
|
+
import { DaoSpaceAbi, SpaceRegistryAbi } from '../abis/index.js';
|
|
5
|
+
import { bytes16ToBytes32LeftAligned, EMPTY_SIGNATURE, ensure0xPrefix, isBytes16Hex, PROPOSAL_CREATED_ACTION, } from './constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* Creates a proposal to remove an editor from a DAO space.
|
|
8
|
+
*
|
|
9
|
+
* This function:
|
|
10
|
+
* 1. Validates the author, DAO space, and editor IDs
|
|
11
|
+
* 2. Encodes the `removeEditor()` call as the proposal action
|
|
12
|
+
* 3. Encodes the SpaceRegistry's `enter()` call with the `PROPOSAL_CREATED` action
|
|
13
|
+
*
|
|
14
|
+
* @param params - The parameters for proposing editor removal
|
|
15
|
+
* @returns Object containing `to` (Space Registry address), `calldata`, and `proposalId`
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { daoSpace } from '@geoprotocol/geo-sdk';
|
|
20
|
+
*
|
|
21
|
+
* const { to, calldata, proposalId } = daoSpace.proposeRemoveEditor({
|
|
22
|
+
* authorSpaceId: '0xAuthorBytes16SpaceId...',
|
|
23
|
+
* spaceId: '0xDAOBytes16SpaceId...',
|
|
24
|
+
* editorToRemoveSpaceId: '0xEditorBytes16SpaceId...',
|
|
25
|
+
* network: 'TESTNET',
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Submit the transaction using viem or another client
|
|
29
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function proposeRemoveEditor(params) {
|
|
33
|
+
const { authorSpaceId: rawAuthorSpaceId, spaceId: rawSpaceId, editorToRemoveSpaceId: rawEditorToRemoveSpaceId, votingMode = 'SLOW', proposalId: rawProposalId, } = params;
|
|
34
|
+
// Ensure 0x prefix on all IDs
|
|
35
|
+
const authorSpaceId = ensure0xPrefix(rawAuthorSpaceId);
|
|
36
|
+
const spaceId = ensure0xPrefix(rawSpaceId);
|
|
37
|
+
const editorToRemoveSpaceId = ensure0xPrefix(rawEditorToRemoveSpaceId);
|
|
38
|
+
// Validate inputs
|
|
39
|
+
if (!isBytes16Hex(authorSpaceId)) {
|
|
40
|
+
throw new Error(`authorSpaceId must be bytes16 hex (32 hex chars). Received: ${rawAuthorSpaceId}`);
|
|
41
|
+
}
|
|
42
|
+
if (!isBytes16Hex(spaceId)) {
|
|
43
|
+
throw new Error(`spaceId must be bytes16 hex (32 hex chars). Received: ${rawSpaceId}`);
|
|
44
|
+
}
|
|
45
|
+
if (!isBytes16Hex(editorToRemoveSpaceId)) {
|
|
46
|
+
throw new Error(`editorToRemoveSpaceId must be bytes16 hex (32 hex chars). Received: ${rawEditorToRemoveSpaceId}`);
|
|
47
|
+
}
|
|
48
|
+
// Generate or use provided proposal ID (UUID v4 as bytes16 hex)
|
|
49
|
+
const proposalId = rawProposalId
|
|
50
|
+
? ensure0xPrefix(rawProposalId)
|
|
51
|
+
: `0x${uuidv4().replaceAll('-', '')}`;
|
|
52
|
+
if (!isBytes16Hex(proposalId)) {
|
|
53
|
+
throw new Error(`proposalId must be bytes16 hex (32 hex chars). Received: ${rawProposalId}`);
|
|
54
|
+
}
|
|
55
|
+
// Encode the removeEditor function call: removeEditor(bytes16 _oldEditorSpaceId)
|
|
56
|
+
const proposalActionCalldata = encodeFunctionData({
|
|
57
|
+
abi: DaoSpaceAbi,
|
|
58
|
+
functionName: 'removeEditor',
|
|
59
|
+
args: [editorToRemoveSpaceId],
|
|
60
|
+
});
|
|
61
|
+
// Create the proposal action (calling removeEditor on the Space Registry)
|
|
62
|
+
const proposalActions = [
|
|
63
|
+
{
|
|
64
|
+
to: TESTNET.SPACE_REGISTRY_ADDRESS,
|
|
65
|
+
value: 0n,
|
|
66
|
+
data: proposalActionCalldata,
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
// Encode the proposal data: abi.encode(bytes16 proposalId, VotingMode votingMode, Action[] actions)
|
|
70
|
+
const data = encodeAbiParameters([
|
|
71
|
+
{ type: 'bytes16', name: 'proposalId' },
|
|
72
|
+
{ type: 'uint8', name: 'votingMode' },
|
|
73
|
+
{
|
|
74
|
+
type: 'tuple[]',
|
|
75
|
+
name: 'actions',
|
|
76
|
+
components: [
|
|
77
|
+
{ type: 'address', name: 'to' },
|
|
78
|
+
{ type: 'uint256', name: 'value' },
|
|
79
|
+
{ type: 'bytes', name: 'data' },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
], [proposalId, votingMode === 'FAST' ? 1 : 0, proposalActions]);
|
|
83
|
+
// Convert proposalId to bytes32 for the topic (left-aligned)
|
|
84
|
+
const topic = bytes16ToBytes32LeftAligned(proposalId);
|
|
85
|
+
// Encode the SpaceRegistry.enter() call
|
|
86
|
+
const calldata = encodeFunctionData({
|
|
87
|
+
abi: SpaceRegistryAbi,
|
|
88
|
+
functionName: 'enter',
|
|
89
|
+
args: [
|
|
90
|
+
authorSpaceId, // fromSpaceId
|
|
91
|
+
spaceId, // toSpaceId
|
|
92
|
+
PROPOSAL_CREATED_ACTION, // action
|
|
93
|
+
topic, // topic (proposalId left-aligned to bytes32)
|
|
94
|
+
data, // data (encoded proposal)
|
|
95
|
+
EMPTY_SIGNATURE, // signature (unused when msg.sender == fromSpace)
|
|
96
|
+
],
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
to: TESTNET.SPACE_REGISTRY_ADDRESS,
|
|
100
|
+
calldata,
|
|
101
|
+
proposalId,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=propose-remove-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-remove-editor.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-remove-editor.test.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { TESTNET } from '../../contracts.js';
|
|
3
|
+
import { BYTES16_HEX_REGEX } from './constants.js';
|
|
4
|
+
import { proposeRemoveEditor } from './propose-remove-editor.js';
|
|
5
|
+
describe('proposeRemoveEditor', () => {
|
|
6
|
+
// Valid test values
|
|
7
|
+
const validAuthorSpaceId = '0x0eed5491b917cf58b33ac81255fe7ae9';
|
|
8
|
+
const validSpaceId = '0xabcdef12345678901234567890abcdef';
|
|
9
|
+
const validEditorToRemove = '0x11111111111111111111111111111111';
|
|
10
|
+
it('should return correct structure', () => {
|
|
11
|
+
const result = proposeRemoveEditor({
|
|
12
|
+
authorSpaceId: validAuthorSpaceId,
|
|
13
|
+
spaceId: validSpaceId,
|
|
14
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
15
|
+
});
|
|
16
|
+
expect(result).toHaveProperty('to');
|
|
17
|
+
expect(result).toHaveProperty('calldata');
|
|
18
|
+
expect(result).toHaveProperty('proposalId');
|
|
19
|
+
});
|
|
20
|
+
it('should return the correct contract address (Space Registry)', () => {
|
|
21
|
+
const { to } = proposeRemoveEditor({
|
|
22
|
+
authorSpaceId: validAuthorSpaceId,
|
|
23
|
+
spaceId: validSpaceId,
|
|
24
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
25
|
+
});
|
|
26
|
+
expect(to).toBe(TESTNET.SPACE_REGISTRY_ADDRESS);
|
|
27
|
+
});
|
|
28
|
+
it('should return valid calldata', () => {
|
|
29
|
+
const { calldata } = proposeRemoveEditor({
|
|
30
|
+
authorSpaceId: validAuthorSpaceId,
|
|
31
|
+
spaceId: validSpaceId,
|
|
32
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
33
|
+
});
|
|
34
|
+
expect(calldata).toBeTypeOf('string');
|
|
35
|
+
expect(calldata.startsWith('0x')).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
it('should return valid proposalId (bytes16 hex)', () => {
|
|
38
|
+
const { proposalId } = proposeRemoveEditor({
|
|
39
|
+
authorSpaceId: validAuthorSpaceId,
|
|
40
|
+
spaceId: validSpaceId,
|
|
41
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
42
|
+
});
|
|
43
|
+
expect(proposalId).toMatch(BYTES16_HEX_REGEX);
|
|
44
|
+
});
|
|
45
|
+
it('should accept custom proposalId', () => {
|
|
46
|
+
const customProposalId = '0x22222222222222222222222222222222';
|
|
47
|
+
const { proposalId } = proposeRemoveEditor({
|
|
48
|
+
authorSpaceId: validAuthorSpaceId,
|
|
49
|
+
spaceId: validSpaceId,
|
|
50
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
51
|
+
proposalId: customProposalId,
|
|
52
|
+
});
|
|
53
|
+
expect(proposalId).toBe(customProposalId);
|
|
54
|
+
});
|
|
55
|
+
it('should default to SLOW voting mode', () => {
|
|
56
|
+
const result = proposeRemoveEditor({
|
|
57
|
+
authorSpaceId: validAuthorSpaceId,
|
|
58
|
+
spaceId: validSpaceId,
|
|
59
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
60
|
+
});
|
|
61
|
+
expect(result.calldata).toBeTruthy();
|
|
62
|
+
});
|
|
63
|
+
it('should accept FAST voting mode', () => {
|
|
64
|
+
const result = proposeRemoveEditor({
|
|
65
|
+
authorSpaceId: validAuthorSpaceId,
|
|
66
|
+
spaceId: validSpaceId,
|
|
67
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
68
|
+
votingMode: 'FAST',
|
|
69
|
+
});
|
|
70
|
+
expect(result.calldata).toBeTruthy();
|
|
71
|
+
});
|
|
72
|
+
it('should produce different calldata for different voting modes', () => {
|
|
73
|
+
const params = {
|
|
74
|
+
authorSpaceId: validAuthorSpaceId,
|
|
75
|
+
spaceId: validSpaceId,
|
|
76
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
77
|
+
};
|
|
78
|
+
const slowResult = proposeRemoveEditor({ ...params, votingMode: 'SLOW' });
|
|
79
|
+
const fastResult = proposeRemoveEditor({
|
|
80
|
+
...params,
|
|
81
|
+
votingMode: 'FAST',
|
|
82
|
+
proposalId: slowResult.proposalId,
|
|
83
|
+
});
|
|
84
|
+
expect(slowResult.calldata).not.toBe(fastResult.calldata);
|
|
85
|
+
});
|
|
86
|
+
it('should produce different calldata for different editors', () => {
|
|
87
|
+
const otherEditor = '0x33333333333333333333333333333333';
|
|
88
|
+
const sharedProposalId = '0x44444444444444444444444444444444';
|
|
89
|
+
const result1 = proposeRemoveEditor({
|
|
90
|
+
authorSpaceId: validAuthorSpaceId,
|
|
91
|
+
spaceId: validSpaceId,
|
|
92
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
93
|
+
proposalId: sharedProposalId,
|
|
94
|
+
});
|
|
95
|
+
const result2 = proposeRemoveEditor({
|
|
96
|
+
authorSpaceId: validAuthorSpaceId,
|
|
97
|
+
spaceId: validSpaceId,
|
|
98
|
+
editorToRemoveSpaceId: otherEditor,
|
|
99
|
+
proposalId: sharedProposalId,
|
|
100
|
+
});
|
|
101
|
+
expect(result1.calldata).not.toBe(result2.calldata);
|
|
102
|
+
});
|
|
103
|
+
it('should accept IDs without 0x prefix', () => {
|
|
104
|
+
const result = proposeRemoveEditor({
|
|
105
|
+
authorSpaceId: '0eed5491b917cf58b33ac81255fe7ae9',
|
|
106
|
+
spaceId: 'abcdef12345678901234567890abcdef',
|
|
107
|
+
editorToRemoveSpaceId: '11111111111111111111111111111111',
|
|
108
|
+
});
|
|
109
|
+
expect(result.calldata).toBeTruthy();
|
|
110
|
+
});
|
|
111
|
+
it('should produce same calldata with or without 0x prefix', () => {
|
|
112
|
+
const proposalId = '0x55555555555555555555555555555555';
|
|
113
|
+
const withPrefix = proposeRemoveEditor({
|
|
114
|
+
authorSpaceId: '0x0eed5491b917cf58b33ac81255fe7ae9',
|
|
115
|
+
spaceId: '0xabcdef12345678901234567890abcdef',
|
|
116
|
+
editorToRemoveSpaceId: '0x11111111111111111111111111111111',
|
|
117
|
+
proposalId,
|
|
118
|
+
});
|
|
119
|
+
const withoutPrefix = proposeRemoveEditor({
|
|
120
|
+
authorSpaceId: '0eed5491b917cf58b33ac81255fe7ae9',
|
|
121
|
+
spaceId: 'abcdef12345678901234567890abcdef',
|
|
122
|
+
editorToRemoveSpaceId: '11111111111111111111111111111111',
|
|
123
|
+
proposalId,
|
|
124
|
+
});
|
|
125
|
+
expect(withPrefix.calldata).toBe(withoutPrefix.calldata);
|
|
126
|
+
});
|
|
127
|
+
it('should generate unique proposalIds', () => {
|
|
128
|
+
const params = {
|
|
129
|
+
authorSpaceId: validAuthorSpaceId,
|
|
130
|
+
spaceId: validSpaceId,
|
|
131
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
132
|
+
};
|
|
133
|
+
const result1 = proposeRemoveEditor(params);
|
|
134
|
+
const result2 = proposeRemoveEditor(params);
|
|
135
|
+
expect(result1.proposalId).not.toBe(result2.proposalId);
|
|
136
|
+
});
|
|
137
|
+
it('should throw for invalid authorSpaceId format', () => {
|
|
138
|
+
expect(() => proposeRemoveEditor({
|
|
139
|
+
authorSpaceId: 'invalid',
|
|
140
|
+
spaceId: validSpaceId,
|
|
141
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
142
|
+
})).toThrow('authorSpaceId must be bytes16 hex');
|
|
143
|
+
});
|
|
144
|
+
it('should throw for invalid spaceId format', () => {
|
|
145
|
+
expect(() => proposeRemoveEditor({
|
|
146
|
+
authorSpaceId: validAuthorSpaceId,
|
|
147
|
+
spaceId: 'tooshort',
|
|
148
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
149
|
+
})).toThrow('spaceId must be bytes16 hex');
|
|
150
|
+
});
|
|
151
|
+
it('should throw for invalid editorToRemoveSpaceId format', () => {
|
|
152
|
+
expect(() => proposeRemoveEditor({
|
|
153
|
+
authorSpaceId: validAuthorSpaceId,
|
|
154
|
+
spaceId: validSpaceId,
|
|
155
|
+
editorToRemoveSpaceId: 'badid',
|
|
156
|
+
})).toThrow('editorToRemoveSpaceId must be bytes16 hex');
|
|
157
|
+
});
|
|
158
|
+
it('should throw for invalid proposalId format', () => {
|
|
159
|
+
expect(() => proposeRemoveEditor({
|
|
160
|
+
authorSpaceId: validAuthorSpaceId,
|
|
161
|
+
spaceId: validSpaceId,
|
|
162
|
+
editorToRemoveSpaceId: validEditorToRemove,
|
|
163
|
+
proposalId: 'badproposalid',
|
|
164
|
+
})).toThrow('proposalId must be bytes16 hex');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=propose-remove-editor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-remove-editor.test.js","sourceRoot":"","sources":["../../../src/dao-space/propose-remove-editor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -240,4 +240,76 @@ export type ProposeAddMemberResult = {
|
|
|
240
240
|
/** The proposal ID (bytes16 hex) */
|
|
241
241
|
proposalId: `0x${string}`;
|
|
242
242
|
};
|
|
243
|
+
export type ProposeRemoveEditorParams = {
|
|
244
|
+
/**
|
|
245
|
+
* The proposer's space ID (bytes16 hex, with or without 0x prefix).
|
|
246
|
+
* This is the fromSpaceId in the enter() call.
|
|
247
|
+
*/
|
|
248
|
+
authorSpaceId: string;
|
|
249
|
+
/**
|
|
250
|
+
* The DAO space ID (bytes16 hex, with or without 0x prefix).
|
|
251
|
+
* This is the toSpaceId in the enter() call.
|
|
252
|
+
*/
|
|
253
|
+
spaceId: string;
|
|
254
|
+
/**
|
|
255
|
+
* The space ID of the editor to remove (bytes16 hex, with or without 0x prefix).
|
|
256
|
+
*/
|
|
257
|
+
editorToRemoveSpaceId: string;
|
|
258
|
+
/**
|
|
259
|
+
* Voting mode for the proposal.
|
|
260
|
+
* Defaults to 'SLOW' since removeEditor is not a fast-path action.
|
|
261
|
+
*/
|
|
262
|
+
votingMode?: VotingMode;
|
|
263
|
+
/**
|
|
264
|
+
* Optional bytes16 proposalId (0x + 32 hex chars, with or without 0x prefix).
|
|
265
|
+
* If omitted, a unique id is generated.
|
|
266
|
+
*/
|
|
267
|
+
proposalId?: string;
|
|
268
|
+
/** Network to use (defaults to TESTNET) */
|
|
269
|
+
network?: Network;
|
|
270
|
+
};
|
|
271
|
+
export type ProposeRemoveEditorResult = {
|
|
272
|
+
/** The contract address to send the transaction to (Space Registry) */
|
|
273
|
+
to: `0x${string}`;
|
|
274
|
+
/** The calldata for the enter() function call */
|
|
275
|
+
calldata: `0x${string}`;
|
|
276
|
+
/** The proposal ID (bytes16 hex) */
|
|
277
|
+
proposalId: `0x${string}`;
|
|
278
|
+
};
|
|
279
|
+
export type ProposeAddEditorParams = {
|
|
280
|
+
/**
|
|
281
|
+
* The proposer's space ID (bytes16 hex).
|
|
282
|
+
* This is the fromSpaceId in the enter() call.
|
|
283
|
+
*/
|
|
284
|
+
authorSpaceId: string;
|
|
285
|
+
/**
|
|
286
|
+
* The DAO space ID (bytes16 hex).
|
|
287
|
+
* This is the toSpaceId in the enter() call.
|
|
288
|
+
*/
|
|
289
|
+
spaceId: string;
|
|
290
|
+
/**
|
|
291
|
+
* The space ID of the new editor to add (bytes16 hex).
|
|
292
|
+
*/
|
|
293
|
+
newEditorSpaceId: string;
|
|
294
|
+
/**
|
|
295
|
+
* Voting mode for the proposal.
|
|
296
|
+
* Defaults to 'SLOW' since addEditor() is a governance action.
|
|
297
|
+
*/
|
|
298
|
+
votingMode?: VotingMode;
|
|
299
|
+
/**
|
|
300
|
+
* Optional bytes16 proposalId (0x + 32 hex chars).
|
|
301
|
+
* If omitted, a unique id is generated.
|
|
302
|
+
*/
|
|
303
|
+
proposalId?: string;
|
|
304
|
+
/** Network to use (defaults to TESTNET) */
|
|
305
|
+
network?: Network;
|
|
306
|
+
};
|
|
307
|
+
export type ProposeAddEditorResult = {
|
|
308
|
+
/** The contract address to send the transaction to (Space Registry) */
|
|
309
|
+
to: `0x${string}`;
|
|
310
|
+
/** The calldata for the enter() function call */
|
|
311
|
+
calldata: `0x${string}`;
|
|
312
|
+
/** The proposal ID (bytes16 hex) */
|
|
313
|
+
proposalId: `0x${string}`;
|
|
314
|
+
};
|
|
243
315
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dao-space/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dao-space/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Id } from '../id.js';
|
|
2
|
+
import type { Network } from '../types.js';
|
|
3
|
+
export type EntityVoteParams = {
|
|
4
|
+
/** The author's personal space ID. */
|
|
5
|
+
authorSpaceId: Id | string;
|
|
6
|
+
/** The space ID where the entity is being voted on. */
|
|
7
|
+
spaceId: Id | string;
|
|
8
|
+
/** The entity ID being voted on. */
|
|
9
|
+
entityId: Id | string;
|
|
10
|
+
/** Network to use (defaults to TESTNET). */
|
|
11
|
+
network?: Network;
|
|
12
|
+
};
|
|
13
|
+
export type EntityVoteResult = {
|
|
14
|
+
/** The contract address to send the transaction to (Space Registry). */
|
|
15
|
+
to: `0x${string}`;
|
|
16
|
+
/** The calldata for the Space Registry `enter()` function call. */
|
|
17
|
+
calldata: `0x${string}`;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Creates calldata for upvoting an entity.
|
|
21
|
+
*
|
|
22
|
+
* No IPFS publish is needed. Submit the returned calldata to the Space Registry.
|
|
23
|
+
*/
|
|
24
|
+
export declare function upvoteEntity(params: EntityVoteParams): EntityVoteResult;
|
|
25
|
+
/**
|
|
26
|
+
* Creates calldata for downvoting an entity.
|
|
27
|
+
*
|
|
28
|
+
* No IPFS publish is needed. Submit the returned calldata to the Space Registry.
|
|
29
|
+
*/
|
|
30
|
+
export declare function downvoteEntity(params: EntityVoteParams): EntityVoteResult;
|
|
31
|
+
/**
|
|
32
|
+
* Creates calldata for withdrawing the author's vote on an entity.
|
|
33
|
+
*
|
|
34
|
+
* No IPFS publish is needed. Submit the returned calldata to the Space Registry.
|
|
35
|
+
*/
|
|
36
|
+
export declare function withdrawEntityVote(params: EntityVoteParams): EntityVoteResult;
|
|
37
|
+
//# sourceMappingURL=entity-vote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-vote.d.ts","sourceRoot":"","sources":["../../../src/graph/entity-vote.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAW3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sCAAsC;IACtC,aAAa,EAAE,EAAE,GAAG,MAAM,CAAC;IAC3B,uDAAuD;IACvD,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC;IACrB,oCAAoC;IACpC,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,wEAAwE;IACxE,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;CACzB,CAAC;AAiDF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAE7E"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { encodeAbiParameters, encodeFunctionData, keccak256, toHex } from 'viem';
|
|
2
|
+
import { TESTNET } from '../../contracts.js';
|
|
3
|
+
import { SpaceRegistryAbi } from '../abis/index.js';
|
|
4
|
+
import { assertValid } from '../id-utils.js';
|
|
5
|
+
const EMPTY_SIGNATURE = '0x';
|
|
6
|
+
const ENTITY_OBJECT_TYPE = '00000000';
|
|
7
|
+
const ENTITY_VOTE_VERSION = 0;
|
|
8
|
+
const UPVOTED_ACTION = keccak256(toHex('PERMISSIONLESS.UPVOTED'));
|
|
9
|
+
const DOWNVOTED_ACTION = keccak256(toHex('PERMISSIONLESS.DOWNVOTED'));
|
|
10
|
+
const UNVOTED_ACTION = keccak256(toHex('PERMISSIONLESS.UNVOTED'));
|
|
11
|
+
function idToBytes16(id, sourceHint) {
|
|
12
|
+
const normalized = id.startsWith('0x') ? id.slice(2) : id.replaceAll('-', '');
|
|
13
|
+
assertValid(normalized, sourceHint);
|
|
14
|
+
return `0x${normalized.toLowerCase()}`;
|
|
15
|
+
}
|
|
16
|
+
function encodeEntityVoteTopic(entityId) {
|
|
17
|
+
const normalizedEntityId = idToBytes16(entityId, '`entityId` in entity vote').slice(2);
|
|
18
|
+
return `0x${ENTITY_OBJECT_TYPE}${normalizedEntityId}${'0'.repeat(24)}`;
|
|
19
|
+
}
|
|
20
|
+
function encodeEntityVoteData(authorSpaceId, spaceId) {
|
|
21
|
+
return encodeAbiParameters([{ type: 'uint16' }, { type: 'bytes16' }, { type: 'bytes16' }], [ENTITY_VOTE_VERSION, authorSpaceId, spaceId]);
|
|
22
|
+
}
|
|
23
|
+
function getSpaceRegistryAddress(network) {
|
|
24
|
+
switch (network) {
|
|
25
|
+
case 'TESTNET':
|
|
26
|
+
return TESTNET.SPACE_REGISTRY_ADDRESS;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function createEntityVote(params, action) {
|
|
30
|
+
const { authorSpaceId: rawAuthorSpaceId, spaceId: rawSpaceId, entityId, network = 'TESTNET' } = params;
|
|
31
|
+
const authorSpaceId = idToBytes16(rawAuthorSpaceId, '`authorSpaceId` in entity vote');
|
|
32
|
+
const spaceId = idToBytes16(rawSpaceId, '`spaceId` in entity vote');
|
|
33
|
+
const topic = encodeEntityVoteTopic(entityId);
|
|
34
|
+
const data = encodeEntityVoteData(authorSpaceId, spaceId);
|
|
35
|
+
const calldata = encodeFunctionData({
|
|
36
|
+
abi: SpaceRegistryAbi,
|
|
37
|
+
functionName: 'enter',
|
|
38
|
+
args: [authorSpaceId, spaceId, action, topic, data, EMPTY_SIGNATURE],
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
to: getSpaceRegistryAddress(network),
|
|
42
|
+
calldata,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Creates calldata for upvoting an entity.
|
|
47
|
+
*
|
|
48
|
+
* No IPFS publish is needed. Submit the returned calldata to the Space Registry.
|
|
49
|
+
*/
|
|
50
|
+
export function upvoteEntity(params) {
|
|
51
|
+
return createEntityVote(params, UPVOTED_ACTION);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates calldata for downvoting an entity.
|
|
55
|
+
*
|
|
56
|
+
* No IPFS publish is needed. Submit the returned calldata to the Space Registry.
|
|
57
|
+
*/
|
|
58
|
+
export function downvoteEntity(params) {
|
|
59
|
+
return createEntityVote(params, DOWNVOTED_ACTION);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates calldata for withdrawing the author's vote on an entity.
|
|
63
|
+
*
|
|
64
|
+
* No IPFS publish is needed. Submit the returned calldata to the Space Registry.
|
|
65
|
+
*/
|
|
66
|
+
export function withdrawEntityVote(params) {
|
|
67
|
+
return createEntityVote(params, UNVOTED_ACTION);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=entity-vote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-vote.js","sourceRoot":"","sources":["../../../src/graph/entity-vote.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-vote.test.d.ts","sourceRoot":"","sources":["../../../src/graph/entity-vote.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { decodeAbiParameters, decodeFunctionData } from 'viem';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { TESTNET } from '../../contracts.js';
|
|
4
|
+
import { SpaceRegistryAbi } from '../abis/index.js';
|
|
5
|
+
import { downvoteEntity, upvoteEntity, withdrawEntityVote } from './entity-vote.js';
|
|
6
|
+
const AUTHOR_SPACE_ID = '0eed5491b917cf58b33ac81255fe7ae9';
|
|
7
|
+
const SPACE_ID = 'abcdef12345678901234567890abcdef';
|
|
8
|
+
const ENTITY_ID = '11111111111111111111111111111111';
|
|
9
|
+
const UPVOTED_ACTION = '0x1fc04a8d9387c7bd1199a2a77c8e531a7a7b11991df5dcc8c9acb6abcb481725';
|
|
10
|
+
const DOWNVOTED_ACTION = '0xde8b897ce7cc541dacb388d5aabb3dc0fb7856920284f41582c15b5fc31a8662';
|
|
11
|
+
const UNVOTED_ACTION = '0x3bd4c337382f79aa5007a91169bb57723b5dd59e6b4bb60d20362bcc0d9d998b';
|
|
12
|
+
function decodeEntityVote(calldata) {
|
|
13
|
+
const decoded = decodeFunctionData({
|
|
14
|
+
abi: SpaceRegistryAbi,
|
|
15
|
+
data: calldata,
|
|
16
|
+
});
|
|
17
|
+
expect(decoded.functionName).toBe('enter');
|
|
18
|
+
const [fromSpaceId, toSpaceId, action, topic, data, signature] = decoded.args;
|
|
19
|
+
const [version, authorSpaceId, spaceId] = decodeAbiParameters([{ type: 'uint16' }, { type: 'bytes16' }, { type: 'bytes16' }], data);
|
|
20
|
+
return {
|
|
21
|
+
fromSpaceId,
|
|
22
|
+
toSpaceId,
|
|
23
|
+
action,
|
|
24
|
+
topic,
|
|
25
|
+
data,
|
|
26
|
+
signature,
|
|
27
|
+
version,
|
|
28
|
+
authorSpaceId,
|
|
29
|
+
spaceId,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
describe('entity vote helpers', () => {
|
|
33
|
+
it('returns the Space Registry address and calldata', () => {
|
|
34
|
+
const result = upvoteEntity({
|
|
35
|
+
authorSpaceId: AUTHOR_SPACE_ID,
|
|
36
|
+
spaceId: SPACE_ID,
|
|
37
|
+
entityId: ENTITY_ID,
|
|
38
|
+
});
|
|
39
|
+
expect(result.to).toBe(TESTNET.SPACE_REGISTRY_ADDRESS);
|
|
40
|
+
expect(result.calldata).toBeTypeOf('string');
|
|
41
|
+
expect(result.calldata.startsWith('0x')).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
it('encodes an entity upvote action', () => {
|
|
44
|
+
const result = upvoteEntity({
|
|
45
|
+
authorSpaceId: AUTHOR_SPACE_ID,
|
|
46
|
+
spaceId: SPACE_ID,
|
|
47
|
+
entityId: ENTITY_ID,
|
|
48
|
+
});
|
|
49
|
+
const decoded = decodeEntityVote(result.calldata);
|
|
50
|
+
expect(decoded.fromSpaceId).toBe(`0x${AUTHOR_SPACE_ID}`);
|
|
51
|
+
expect(decoded.toSpaceId).toBe(`0x${SPACE_ID}`);
|
|
52
|
+
expect(decoded.action).toBe(UPVOTED_ACTION);
|
|
53
|
+
expect(decoded.topic).toBe(`0x00000000${ENTITY_ID}${'0'.repeat(24)}`);
|
|
54
|
+
expect(decoded.signature).toBe('0x');
|
|
55
|
+
expect(decoded.version).toBe(0);
|
|
56
|
+
expect(decoded.authorSpaceId).toBe(`0x${AUTHOR_SPACE_ID}`);
|
|
57
|
+
expect(decoded.spaceId).toBe(`0x${SPACE_ID}`);
|
|
58
|
+
});
|
|
59
|
+
it('encodes an entity downvote action', () => {
|
|
60
|
+
const result = downvoteEntity({
|
|
61
|
+
authorSpaceId: AUTHOR_SPACE_ID,
|
|
62
|
+
spaceId: SPACE_ID,
|
|
63
|
+
entityId: ENTITY_ID,
|
|
64
|
+
});
|
|
65
|
+
const decoded = decodeEntityVote(result.calldata);
|
|
66
|
+
expect(decoded.action).toBe(DOWNVOTED_ACTION);
|
|
67
|
+
});
|
|
68
|
+
it('encodes an entity vote withdrawal action', () => {
|
|
69
|
+
const result = withdrawEntityVote({
|
|
70
|
+
authorSpaceId: AUTHOR_SPACE_ID,
|
|
71
|
+
spaceId: SPACE_ID,
|
|
72
|
+
entityId: ENTITY_ID,
|
|
73
|
+
});
|
|
74
|
+
const decoded = decodeEntityVote(result.calldata);
|
|
75
|
+
expect(decoded.action).toBe(UNVOTED_ACTION);
|
|
76
|
+
});
|
|
77
|
+
it('accepts UUIDs with dashes', () => {
|
|
78
|
+
const result = upvoteEntity({
|
|
79
|
+
authorSpaceId: '0eed5491-b917-cf58-b33a-c81255fe7ae9',
|
|
80
|
+
spaceId: 'abcdef12-3456-7890-1234-567890abcdef',
|
|
81
|
+
entityId: '11111111-1111-1111-1111-111111111111',
|
|
82
|
+
});
|
|
83
|
+
const decoded = decodeEntityVote(result.calldata);
|
|
84
|
+
expect(decoded.fromSpaceId).toBe(`0x${AUTHOR_SPACE_ID}`);
|
|
85
|
+
expect(decoded.toSpaceId).toBe(`0x${SPACE_ID}`);
|
|
86
|
+
expect(decoded.topic).toBe(`0x00000000${ENTITY_ID}${'0'.repeat(24)}`);
|
|
87
|
+
});
|
|
88
|
+
it('accepts IDs with 0x prefixes', () => {
|
|
89
|
+
const withPrefix = upvoteEntity({
|
|
90
|
+
authorSpaceId: `0x${AUTHOR_SPACE_ID}`,
|
|
91
|
+
spaceId: `0x${SPACE_ID}`,
|
|
92
|
+
entityId: `0x${ENTITY_ID}`,
|
|
93
|
+
});
|
|
94
|
+
const withoutPrefix = upvoteEntity({
|
|
95
|
+
authorSpaceId: AUTHOR_SPACE_ID,
|
|
96
|
+
spaceId: SPACE_ID,
|
|
97
|
+
entityId: ENTITY_ID,
|
|
98
|
+
});
|
|
99
|
+
expect(withPrefix.calldata).toBe(withoutPrefix.calldata);
|
|
100
|
+
});
|
|
101
|
+
it('throws for an invalid authorSpaceId', () => {
|
|
102
|
+
expect(() => upvoteEntity({
|
|
103
|
+
authorSpaceId: 'invalid',
|
|
104
|
+
spaceId: SPACE_ID,
|
|
105
|
+
entityId: ENTITY_ID,
|
|
106
|
+
})).toThrow('Invalid id: "invalid" for `authorSpaceId` in entity vote');
|
|
107
|
+
});
|
|
108
|
+
it('throws for an invalid spaceId', () => {
|
|
109
|
+
expect(() => upvoteEntity({
|
|
110
|
+
authorSpaceId: AUTHOR_SPACE_ID,
|
|
111
|
+
spaceId: 'invalid',
|
|
112
|
+
entityId: ENTITY_ID,
|
|
113
|
+
})).toThrow('Invalid id: "invalid" for `spaceId` in entity vote');
|
|
114
|
+
});
|
|
115
|
+
it('throws for an invalid entityId', () => {
|
|
116
|
+
expect(() => upvoteEntity({
|
|
117
|
+
authorSpaceId: AUTHOR_SPACE_ID,
|
|
118
|
+
spaceId: SPACE_ID,
|
|
119
|
+
entityId: 'invalid',
|
|
120
|
+
})).toThrow('Invalid id: "invalid" for `entityId` in entity vote');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=entity-vote.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-vote.test.js","sourceRoot":"","sources":["../../../src/graph/entity-vote.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export * from './create-relation.js';
|
|
|
9
9
|
export * from './create-type.js';
|
|
10
10
|
export * from './delete-entity.js';
|
|
11
11
|
export * from './delete-relation.js';
|
|
12
|
+
export * from './entity-vote.js';
|
|
12
13
|
export * from './update-comment.js';
|
|
13
14
|
export * from './update-entity.js';
|
|
14
15
|
export * from './update-proposal-review.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graph/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC"}
|
package/dist/src/graph/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from './create-relation.js';
|
|
|
8
8
|
export * from './create-type.js';
|
|
9
9
|
export * from './delete-entity.js';
|
|
10
10
|
export * from './delete-relation.js';
|
|
11
|
+
export * from './entity-vote.js';
|
|
11
12
|
export * from './update-comment.js';
|
|
12
13
|
export * from './update-entity.js';
|
|
13
14
|
export * from './update-proposal-review.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC"}
|