@geoprotocol/geo-sdk 0.4.0 → 0.5.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/dist/src/dao-space/constants.d.ts +34 -0
- package/dist/src/dao-space/constants.d.ts.map +1 -0
- package/dist/src/dao-space/constants.js +47 -0
- package/dist/src/dao-space/constants.js.map +1 -0
- package/dist/src/dao-space/index.d.ts +2 -1
- package/dist/src/dao-space/index.d.ts.map +1 -1
- package/dist/src/dao-space/index.js +1 -0
- package/dist/src/dao-space/index.js.map +1 -1
- package/dist/src/dao-space/propose-edit.d.ts +37 -0
- package/dist/src/dao-space/propose-edit.d.ts.map +1 -0
- package/dist/src/dao-space/propose-edit.js +116 -0
- package/dist/src/dao-space/propose-edit.js.map +1 -0
- package/dist/src/dao-space/propose-edit.test.d.ts +2 -0
- package/dist/src/dao-space/propose-edit.test.d.ts.map +1 -0
- package/dist/src/dao-space/propose-edit.test.js +196 -0
- package/dist/src/dao-space/propose-edit.test.js.map +1 -0
- package/dist/src/dao-space/types.d.ts +54 -0
- package/dist/src/dao-space/types.d.ts.map +1 -1
- package/dist/src/full-flow-test.test.js +57 -2
- package/dist/src/full-flow-test.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action hash for GOVERNANCE.PROPOSAL_CREATED
|
|
3
|
+
* Used when creating proposals via SpaceRegistry.enter()
|
|
4
|
+
*/
|
|
5
|
+
export declare const PROPOSAL_CREATED_ACTION: `0x${string}`;
|
|
6
|
+
/**
|
|
7
|
+
* Empty topic (bytes32(0)) used for proposals
|
|
8
|
+
*/
|
|
9
|
+
export declare const EMPTY_TOPIC: "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
10
|
+
/**
|
|
11
|
+
* Empty signature used when msg.sender == fromSpace
|
|
12
|
+
*/
|
|
13
|
+
export declare const EMPTY_SIGNATURE: "0x";
|
|
14
|
+
/**
|
|
15
|
+
* Regex for bytes16 hex: 0x prefix + 32 hex characters (16 bytes)
|
|
16
|
+
*/
|
|
17
|
+
export declare const BYTES16_HEX_REGEX: RegExp;
|
|
18
|
+
/**
|
|
19
|
+
* Regex for bytes32 hex: 0x prefix + 64 hex characters (32 bytes)
|
|
20
|
+
*/
|
|
21
|
+
export declare const BYTES32_HEX_REGEX: RegExp;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if a string is a valid bytes16 hex (0x prefix + 32 hex chars).
|
|
24
|
+
*/
|
|
25
|
+
export declare function isBytes16Hex(value: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Converts a bytes32 hex string to bytes16 by taking the first 16 bytes.
|
|
28
|
+
*/
|
|
29
|
+
export declare function toBytes16(hex32: `0x${string}`): `0x${string}`;
|
|
30
|
+
/**
|
|
31
|
+
* Converts a bytes16 hex string to bytes32 (left-aligned, right-padded with zeros).
|
|
32
|
+
*/
|
|
33
|
+
export declare function bytes16ToBytes32LeftAligned(bytes16Hex: `0x${string}`): `0x${string}`;
|
|
34
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/dao-space/constants.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,eAAkD,CAAC;AAEvF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAG,oEAA6E,CAAC;AAEzG;;GAEG;AACH,eAAO,MAAM,eAAe,EAAG,IAAa,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAwB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAwB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAI7D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAIpF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { keccak256, toHex } from 'viem';
|
|
2
|
+
/**
|
|
3
|
+
* Action hash for GOVERNANCE.PROPOSAL_CREATED
|
|
4
|
+
* Used when creating proposals via SpaceRegistry.enter()
|
|
5
|
+
*/
|
|
6
|
+
export const PROPOSAL_CREATED_ACTION = keccak256(toHex('GOVERNANCE.PROPOSAL_CREATED'));
|
|
7
|
+
/**
|
|
8
|
+
* Empty topic (bytes32(0)) used for proposals
|
|
9
|
+
*/
|
|
10
|
+
export const EMPTY_TOPIC = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
11
|
+
/**
|
|
12
|
+
* Empty signature used when msg.sender == fromSpace
|
|
13
|
+
*/
|
|
14
|
+
export const EMPTY_SIGNATURE = '0x';
|
|
15
|
+
/**
|
|
16
|
+
* Regex for bytes16 hex: 0x prefix + 32 hex characters (16 bytes)
|
|
17
|
+
*/
|
|
18
|
+
export const BYTES16_HEX_REGEX = /^0x[0-9a-fA-F]{32}$/;
|
|
19
|
+
/**
|
|
20
|
+
* Regex for bytes32 hex: 0x prefix + 64 hex characters (32 bytes)
|
|
21
|
+
*/
|
|
22
|
+
export const BYTES32_HEX_REGEX = /^0x[0-9a-fA-F]{64}$/;
|
|
23
|
+
/**
|
|
24
|
+
* Checks if a string is a valid bytes16 hex (0x prefix + 32 hex chars).
|
|
25
|
+
*/
|
|
26
|
+
export function isBytes16Hex(value) {
|
|
27
|
+
return BYTES16_HEX_REGEX.test(value);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Converts a bytes32 hex string to bytes16 by taking the first 16 bytes.
|
|
31
|
+
*/
|
|
32
|
+
export function toBytes16(hex32) {
|
|
33
|
+
const s = hex32.toLowerCase();
|
|
34
|
+
if (!BYTES32_HEX_REGEX.test(s))
|
|
35
|
+
throw new Error(`Invalid hex32: ${hex32}`);
|
|
36
|
+
return `0x${s.slice(2, 34)}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Converts a bytes16 hex string to bytes32 (left-aligned, right-padded with zeros).
|
|
40
|
+
*/
|
|
41
|
+
export function bytes16ToBytes32LeftAligned(bytes16Hex) {
|
|
42
|
+
const s = bytes16Hex.toLowerCase();
|
|
43
|
+
if (!BYTES16_HEX_REGEX.test(s))
|
|
44
|
+
throw new Error(`Invalid bytes16 hex: ${bytes16Hex}`);
|
|
45
|
+
return `0x${s.slice(2)}${'0'.repeat(32)}`;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dao-space/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAEvF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,oEAA6E,CAAC;AAEzG;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAoB;IAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAmB,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,UAAyB;IACnE,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;IACtF,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAmB,CAAC;AAC7D,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { createSpace } from './create-space.js';
|
|
2
|
-
export
|
|
2
|
+
export { proposeEdit } from './propose-edit.js';
|
|
3
|
+
export type { CreateSpaceParams, CreateSpaceResult, ProposeEditParams, ProposeEditResult, VotingMode, } from './types.js';
|
|
3
4
|
//# 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,
|
|
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,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC"}
|
|
@@ -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"}
|
|
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,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ProposeEditParams, ProposeEditResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a proposal to publish an edit to a DAO space.
|
|
4
|
+
*
|
|
5
|
+
* This function:
|
|
6
|
+
* 1. Publishes the ops to IPFS using the GRC-20 binary format
|
|
7
|
+
* 2. Generates a unique proposal ID (or uses the provided one)
|
|
8
|
+
* 3. Encodes the proposal data for the SpaceRegistry's `enter()` function
|
|
9
|
+
*
|
|
10
|
+
* The proposal, when executed, will call the DAO space's `publish()` function
|
|
11
|
+
* to publish the edit. Since `publish()` is a valid fast-path action, with
|
|
12
|
+
* FAST voting mode and sufficient votes, the proposal will auto-execute.
|
|
13
|
+
*
|
|
14
|
+
* @param params - The parameters for creating the proposal
|
|
15
|
+
* @returns Object containing `editId`, `cid`, `to` (Space Registry address),
|
|
16
|
+
* `calldata`, and `proposalId`
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { daoSpace, Graph } from '@geoprotocol/geo-sdk';
|
|
21
|
+
*
|
|
22
|
+
* const { ops } = Graph.createEntity({ name: 'New Entity' });
|
|
23
|
+
* const { editId, cid, to, calldata, proposalId } = await daoSpace.proposeEdit({
|
|
24
|
+
* name: 'Add new entity',
|
|
25
|
+
* ops,
|
|
26
|
+
* author: '0x1234...',
|
|
27
|
+
* daoSpaceAddress: '0xDAOSpaceContractAddress...',
|
|
28
|
+
* callerSpaceId: '0xCallerBytes16SpaceId...',
|
|
29
|
+
* daoSpaceId: '0xDAOBytes16SpaceId...',
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Submit the transaction using viem or another client
|
|
33
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function proposeEdit(params: ProposeEditParams): Promise<ProposeEditResult>;
|
|
37
|
+
//# sourceMappingURL=propose-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-edit.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-edit.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkGvF"}
|
|
@@ -0,0 +1,116 @@
|
|
|
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 * as Ipfs from '../ipfs.js';
|
|
6
|
+
import { bytes16ToBytes32LeftAligned, EMPTY_SIGNATURE, EMPTY_TOPIC, isBytes16Hex, PROPOSAL_CREATED_ACTION, } from './constants.js';
|
|
7
|
+
/**
|
|
8
|
+
* Creates a proposal to publish an edit to a DAO space.
|
|
9
|
+
*
|
|
10
|
+
* This function:
|
|
11
|
+
* 1. Publishes the ops to IPFS using the GRC-20 binary format
|
|
12
|
+
* 2. Generates a unique proposal ID (or uses the provided one)
|
|
13
|
+
* 3. Encodes the proposal data for the SpaceRegistry's `enter()` function
|
|
14
|
+
*
|
|
15
|
+
* The proposal, when executed, will call the DAO space's `publish()` function
|
|
16
|
+
* to publish the edit. Since `publish()` is a valid fast-path action, with
|
|
17
|
+
* FAST voting mode and sufficient votes, the proposal will auto-execute.
|
|
18
|
+
*
|
|
19
|
+
* @param params - The parameters for creating the proposal
|
|
20
|
+
* @returns Object containing `editId`, `cid`, `to` (Space Registry address),
|
|
21
|
+
* `calldata`, and `proposalId`
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { daoSpace, Graph } from '@geoprotocol/geo-sdk';
|
|
26
|
+
*
|
|
27
|
+
* const { ops } = Graph.createEntity({ name: 'New Entity' });
|
|
28
|
+
* const { editId, cid, to, calldata, proposalId } = await daoSpace.proposeEdit({
|
|
29
|
+
* name: 'Add new entity',
|
|
30
|
+
* ops,
|
|
31
|
+
* author: '0x1234...',
|
|
32
|
+
* daoSpaceAddress: '0xDAOSpaceContractAddress...',
|
|
33
|
+
* callerSpaceId: '0xCallerBytes16SpaceId...',
|
|
34
|
+
* daoSpaceId: '0xDAOBytes16SpaceId...',
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Submit the transaction using viem or another client
|
|
38
|
+
* await walletClient.sendTransaction({ to, data: calldata });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export async function proposeEdit(params) {
|
|
42
|
+
const { name, ops, author, daoSpaceAddress, callerSpaceId, daoSpaceId, votingMode = 'FAST', proposalId: proposalIdInput, network = 'TESTNET', } = params;
|
|
43
|
+
// Validate space IDs
|
|
44
|
+
if (!isBytes16Hex(callerSpaceId)) {
|
|
45
|
+
throw new Error(`callerSpaceId must be bytes16 hex (0x followed by 32 hex chars). Received: ${callerSpaceId}`);
|
|
46
|
+
}
|
|
47
|
+
if (!isBytes16Hex(daoSpaceId)) {
|
|
48
|
+
throw new Error(`daoSpaceId must be bytes16 hex (0x followed by 32 hex chars). Received: ${daoSpaceId}`);
|
|
49
|
+
}
|
|
50
|
+
// Publish the edit to IPFS
|
|
51
|
+
const { cid, editId } = await Ipfs.publishEdit({
|
|
52
|
+
name,
|
|
53
|
+
ops,
|
|
54
|
+
author,
|
|
55
|
+
network,
|
|
56
|
+
});
|
|
57
|
+
// Generate or use provided proposal ID (UUID v4 as bytes16 hex)
|
|
58
|
+
const proposalId = proposalIdInput ?? `0x${uuidv4().replaceAll('-', '')}`;
|
|
59
|
+
if (!isBytes16Hex(proposalId)) {
|
|
60
|
+
throw new Error(`proposalId must be bytes16 hex (0x followed by 32 hex chars). Received: ${proposalId}`);
|
|
61
|
+
}
|
|
62
|
+
// Encode the CID as bytes for the editsContentUri parameter
|
|
63
|
+
const editsContentUri = encodeAbiParameters([{ type: 'string' }], [cid]);
|
|
64
|
+
const editsMetadata = '0x';
|
|
65
|
+
// Encode the publish function call: publish(bytes32 _topic, bytes _editsContentUri, bytes _editsMetadata)
|
|
66
|
+
const proposalActionCalldata = encodeFunctionData({
|
|
67
|
+
abi: DaoSpaceAbi,
|
|
68
|
+
functionName: 'publish',
|
|
69
|
+
args: [EMPTY_TOPIC, editsContentUri, editsMetadata],
|
|
70
|
+
});
|
|
71
|
+
// Create the proposal action (calling publish on the DAO space)
|
|
72
|
+
const proposalActions = [
|
|
73
|
+
{
|
|
74
|
+
to: daoSpaceAddress,
|
|
75
|
+
value: 0n,
|
|
76
|
+
data: proposalActionCalldata,
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
// Encode the proposal data: abi.encode(bytes16 proposalId, VotingMode votingMode, Action[] actions)
|
|
80
|
+
const data = encodeAbiParameters([
|
|
81
|
+
{ type: 'bytes16', name: 'proposalId' },
|
|
82
|
+
{ type: 'uint8', name: 'votingMode' },
|
|
83
|
+
{
|
|
84
|
+
type: 'tuple[]',
|
|
85
|
+
name: 'actions',
|
|
86
|
+
components: [
|
|
87
|
+
{ type: 'address', name: 'to' },
|
|
88
|
+
{ type: 'uint256', name: 'value' },
|
|
89
|
+
{ type: 'bytes', name: 'data' },
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
], [proposalId, votingMode === 'FAST' ? 1 : 0, proposalActions]);
|
|
93
|
+
// Convert proposalId to bytes32 for the topic (left-aligned)
|
|
94
|
+
const topic = bytes16ToBytes32LeftAligned(proposalId);
|
|
95
|
+
// Encode the SpaceRegistry.enter() call
|
|
96
|
+
const calldata = encodeFunctionData({
|
|
97
|
+
abi: SpaceRegistryAbi,
|
|
98
|
+
functionName: 'enter',
|
|
99
|
+
args: [
|
|
100
|
+
callerSpaceId, // fromSpaceId
|
|
101
|
+
daoSpaceId, // toSpaceId
|
|
102
|
+
PROPOSAL_CREATED_ACTION, // action
|
|
103
|
+
topic, // topic (proposalId left-aligned to bytes32)
|
|
104
|
+
data, // data (encoded proposal)
|
|
105
|
+
EMPTY_SIGNATURE, // signature (unused when msg.sender == fromSpace)
|
|
106
|
+
],
|
|
107
|
+
});
|
|
108
|
+
return {
|
|
109
|
+
editId,
|
|
110
|
+
cid,
|
|
111
|
+
to: TESTNET.SPACE_REGISTRY_ADDRESS,
|
|
112
|
+
calldata,
|
|
113
|
+
proposalId,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=propose-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-edit.js","sourceRoot":"","sources":["../../../src/dao-space/propose-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-edit.test.d.ts","sourceRoot":"","sources":["../../../src/dao-space/propose-edit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { TESTNET } from '../../contracts.js';
|
|
3
|
+
import { createEntity } from '../graph/create-entity.js';
|
|
4
|
+
import { proposeEdit } from './propose-edit.js';
|
|
5
|
+
describe('proposeEdit', () => {
|
|
6
|
+
// Valid test values
|
|
7
|
+
const validCallerSpaceId = '0x0eed5491b917cf58b33ac81255fe7ae9';
|
|
8
|
+
const validDaoSpaceId = '0xabcdef12345678901234567890abcdef';
|
|
9
|
+
const validDaoSpaceAddress = '0x1234567890123456789012345678901234567890';
|
|
10
|
+
const validAuthor = '0x0000000000000000000000000000000000000000';
|
|
11
|
+
it('should return correct structure', async () => {
|
|
12
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
13
|
+
const result = await proposeEdit({
|
|
14
|
+
name: 'Test Edit',
|
|
15
|
+
ops,
|
|
16
|
+
author: validAuthor,
|
|
17
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
18
|
+
callerSpaceId: validCallerSpaceId,
|
|
19
|
+
daoSpaceId: validDaoSpaceId,
|
|
20
|
+
});
|
|
21
|
+
expect(result).toHaveProperty('editId');
|
|
22
|
+
expect(result).toHaveProperty('cid');
|
|
23
|
+
expect(result).toHaveProperty('to');
|
|
24
|
+
expect(result).toHaveProperty('calldata');
|
|
25
|
+
expect(result).toHaveProperty('proposalId');
|
|
26
|
+
});
|
|
27
|
+
it('should return the correct contract address (Space Registry)', async () => {
|
|
28
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
29
|
+
const { to } = await proposeEdit({
|
|
30
|
+
name: 'Test Edit',
|
|
31
|
+
ops,
|
|
32
|
+
author: validAuthor,
|
|
33
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
34
|
+
callerSpaceId: validCallerSpaceId,
|
|
35
|
+
daoSpaceId: validDaoSpaceId,
|
|
36
|
+
});
|
|
37
|
+
expect(to).toBe(TESTNET.SPACE_REGISTRY_ADDRESS);
|
|
38
|
+
});
|
|
39
|
+
it('should return valid calldata', async () => {
|
|
40
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
41
|
+
const { calldata } = await proposeEdit({
|
|
42
|
+
name: 'Test Edit',
|
|
43
|
+
ops,
|
|
44
|
+
author: validAuthor,
|
|
45
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
46
|
+
callerSpaceId: validCallerSpaceId,
|
|
47
|
+
daoSpaceId: validDaoSpaceId,
|
|
48
|
+
});
|
|
49
|
+
expect(calldata).toBeTypeOf('string');
|
|
50
|
+
expect(calldata.startsWith('0x')).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it('should return valid CID', async () => {
|
|
53
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
54
|
+
const { cid } = await proposeEdit({
|
|
55
|
+
name: 'Test Edit',
|
|
56
|
+
ops,
|
|
57
|
+
author: validAuthor,
|
|
58
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
59
|
+
callerSpaceId: validCallerSpaceId,
|
|
60
|
+
daoSpaceId: validDaoSpaceId,
|
|
61
|
+
});
|
|
62
|
+
expect(cid).toMatch(/^ipfs:\/\//);
|
|
63
|
+
});
|
|
64
|
+
it('should return valid editId', async () => {
|
|
65
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
66
|
+
const { editId } = await proposeEdit({
|
|
67
|
+
name: 'Test Edit',
|
|
68
|
+
ops,
|
|
69
|
+
author: validAuthor,
|
|
70
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
71
|
+
callerSpaceId: validCallerSpaceId,
|
|
72
|
+
daoSpaceId: validDaoSpaceId,
|
|
73
|
+
});
|
|
74
|
+
expect(editId).toBeTruthy();
|
|
75
|
+
expect(editId).toHaveLength(32);
|
|
76
|
+
});
|
|
77
|
+
it('should return valid proposalId (bytes16 hex)', async () => {
|
|
78
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
79
|
+
const { proposalId } = await proposeEdit({
|
|
80
|
+
name: 'Test Edit',
|
|
81
|
+
ops,
|
|
82
|
+
author: validAuthor,
|
|
83
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
84
|
+
callerSpaceId: validCallerSpaceId,
|
|
85
|
+
daoSpaceId: validDaoSpaceId,
|
|
86
|
+
});
|
|
87
|
+
expect(proposalId).toMatch(/^0x[0-9a-fA-F]{32}$/);
|
|
88
|
+
});
|
|
89
|
+
it('should accept custom proposalId', async () => {
|
|
90
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
91
|
+
const customProposalId = '0x11111111111111111111111111111111';
|
|
92
|
+
const { proposalId } = await proposeEdit({
|
|
93
|
+
name: 'Test Edit',
|
|
94
|
+
ops,
|
|
95
|
+
author: validAuthor,
|
|
96
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
97
|
+
callerSpaceId: validCallerSpaceId,
|
|
98
|
+
daoSpaceId: validDaoSpaceId,
|
|
99
|
+
proposalId: customProposalId,
|
|
100
|
+
});
|
|
101
|
+
expect(proposalId).toBe(customProposalId);
|
|
102
|
+
});
|
|
103
|
+
it('should default to FAST voting mode', async () => {
|
|
104
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
105
|
+
const result = await proposeEdit({
|
|
106
|
+
name: 'Test Edit',
|
|
107
|
+
ops,
|
|
108
|
+
author: validAuthor,
|
|
109
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
110
|
+
callerSpaceId: validCallerSpaceId,
|
|
111
|
+
daoSpaceId: validDaoSpaceId,
|
|
112
|
+
});
|
|
113
|
+
// The calldata should contain encoded data with votingMode = 1 (FAST)
|
|
114
|
+
expect(result.calldata).toBeTruthy();
|
|
115
|
+
});
|
|
116
|
+
it('should accept SLOW voting mode', async () => {
|
|
117
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
118
|
+
const result = await proposeEdit({
|
|
119
|
+
name: 'Test Edit',
|
|
120
|
+
ops,
|
|
121
|
+
author: validAuthor,
|
|
122
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
123
|
+
callerSpaceId: validCallerSpaceId,
|
|
124
|
+
daoSpaceId: validDaoSpaceId,
|
|
125
|
+
votingMode: 'SLOW',
|
|
126
|
+
});
|
|
127
|
+
expect(result.calldata).toBeTruthy();
|
|
128
|
+
});
|
|
129
|
+
it('should throw for invalid callerSpaceId format', async () => {
|
|
130
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
131
|
+
await expect(proposeEdit({
|
|
132
|
+
name: 'Test Edit',
|
|
133
|
+
ops,
|
|
134
|
+
author: validAuthor,
|
|
135
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
136
|
+
callerSpaceId: '0xinvalid',
|
|
137
|
+
daoSpaceId: validDaoSpaceId,
|
|
138
|
+
})).rejects.toThrow('callerSpaceId must be bytes16 hex');
|
|
139
|
+
});
|
|
140
|
+
it('should throw for callerSpaceId without 0x prefix', async () => {
|
|
141
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
142
|
+
await expect(proposeEdit({
|
|
143
|
+
name: 'Test Edit',
|
|
144
|
+
ops,
|
|
145
|
+
author: validAuthor,
|
|
146
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
147
|
+
callerSpaceId: '0eed5491b917cf58b33ac81255fe7ae9',
|
|
148
|
+
daoSpaceId: validDaoSpaceId,
|
|
149
|
+
})).rejects.toThrow('callerSpaceId must be bytes16 hex');
|
|
150
|
+
});
|
|
151
|
+
it('should throw for invalid daoSpaceId format', async () => {
|
|
152
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
153
|
+
await expect(proposeEdit({
|
|
154
|
+
name: 'Test Edit',
|
|
155
|
+
ops,
|
|
156
|
+
author: validAuthor,
|
|
157
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
158
|
+
callerSpaceId: validCallerSpaceId,
|
|
159
|
+
daoSpaceId: '0xtooshort',
|
|
160
|
+
})).rejects.toThrow('daoSpaceId must be bytes16 hex');
|
|
161
|
+
});
|
|
162
|
+
it('should throw for invalid proposalId format', async () => {
|
|
163
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
164
|
+
await expect(proposeEdit({
|
|
165
|
+
name: 'Test Edit',
|
|
166
|
+
ops,
|
|
167
|
+
author: validAuthor,
|
|
168
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
169
|
+
callerSpaceId: validCallerSpaceId,
|
|
170
|
+
daoSpaceId: validDaoSpaceId,
|
|
171
|
+
proposalId: '0xinvalidproposalid',
|
|
172
|
+
})).rejects.toThrow('proposalId must be bytes16 hex');
|
|
173
|
+
});
|
|
174
|
+
it('should generate unique proposalIds for the same input', async () => {
|
|
175
|
+
const { ops } = createEntity({ name: 'Test Entity' });
|
|
176
|
+
const result1 = await proposeEdit({
|
|
177
|
+
name: 'Test Edit',
|
|
178
|
+
ops,
|
|
179
|
+
author: validAuthor,
|
|
180
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
181
|
+
callerSpaceId: validCallerSpaceId,
|
|
182
|
+
daoSpaceId: validDaoSpaceId,
|
|
183
|
+
});
|
|
184
|
+
const result2 = await proposeEdit({
|
|
185
|
+
name: 'Test Edit',
|
|
186
|
+
ops,
|
|
187
|
+
author: validAuthor,
|
|
188
|
+
daoSpaceAddress: validDaoSpaceAddress,
|
|
189
|
+
callerSpaceId: validCallerSpaceId,
|
|
190
|
+
daoSpaceId: validDaoSpaceId,
|
|
191
|
+
});
|
|
192
|
+
// Proposal IDs should be unique because they are generated using UUID v4
|
|
193
|
+
expect(result1.proposalId).not.toBe(result2.proposalId);
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
//# sourceMappingURL=propose-edit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-edit.test.js","sourceRoot":"","sources":["../../../src/dao-space/propose-edit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Op } from '@geoprotocol/grc-20';
|
|
2
2
|
import type { VotingSettingsInput } from '../encodings/get-create-dao-space-calldata.js';
|
|
3
|
+
import type { Id } from '../id.js';
|
|
3
4
|
import type { Network } from '../types.js';
|
|
4
5
|
export type CreateSpaceParams = {
|
|
5
6
|
/** Name of the DAO space */
|
|
@@ -27,4 +28,57 @@ export type CreateSpaceResult = {
|
|
|
27
28
|
/** The IPFS CID of the initial edit */
|
|
28
29
|
cid: string;
|
|
29
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Voting mode for DAO proposals.
|
|
33
|
+
* - SLOW: Standard voting requiring percentage threshold
|
|
34
|
+
* - FAST: Fast-path voting requiring flat threshold (for valid fast-path actions)
|
|
35
|
+
*/
|
|
36
|
+
export type VotingMode = 'SLOW' | 'FAST';
|
|
37
|
+
export type ProposeEditParams = {
|
|
38
|
+
/** Name of the edit (used for IPFS metadata) */
|
|
39
|
+
name: string;
|
|
40
|
+
/** The ops to include in the edit */
|
|
41
|
+
ops: Op[];
|
|
42
|
+
/** Author address for the edit */
|
|
43
|
+
author: `0x${string}`;
|
|
44
|
+
/**
|
|
45
|
+
* The DAO space contract address.
|
|
46
|
+
* This is the target of the publish() call in the proposal.
|
|
47
|
+
*/
|
|
48
|
+
daoSpaceAddress: `0x${string}`;
|
|
49
|
+
/**
|
|
50
|
+
* The proposer's space ID (bytes16 hex).
|
|
51
|
+
* This is the fromSpaceId in the enter() call.
|
|
52
|
+
*/
|
|
53
|
+
callerSpaceId: `0x${string}`;
|
|
54
|
+
/**
|
|
55
|
+
* The DAO space ID (bytes16 hex).
|
|
56
|
+
* This is the toSpaceId in the enter() call.
|
|
57
|
+
*/
|
|
58
|
+
daoSpaceId: `0x${string}`;
|
|
59
|
+
/**
|
|
60
|
+
* Voting mode for the proposal.
|
|
61
|
+
* Defaults to 'FAST' since publish() is a valid fast-path action.
|
|
62
|
+
*/
|
|
63
|
+
votingMode?: VotingMode;
|
|
64
|
+
/**
|
|
65
|
+
* Optional bytes16 proposalId (0x + 32 hex chars).
|
|
66
|
+
* If omitted, a unique id is generated.
|
|
67
|
+
*/
|
|
68
|
+
proposalId?: `0x${string}`;
|
|
69
|
+
/** Network to use (defaults to TESTNET) */
|
|
70
|
+
network?: Network;
|
|
71
|
+
};
|
|
72
|
+
export type ProposeEditResult = {
|
|
73
|
+
/** The generated edit ID */
|
|
74
|
+
editId: Id;
|
|
75
|
+
/** The IPFS CID of the published edit */
|
|
76
|
+
cid: string;
|
|
77
|
+
/** The contract address to send the transaction to (Space Registry) */
|
|
78
|
+
to: `0x${string}`;
|
|
79
|
+
/** The calldata for the enter() function call */
|
|
80
|
+
calldata: `0x${string}`;
|
|
81
|
+
/** The proposal ID (bytes16 hex) */
|
|
82
|
+
proposalId: `0x${string}`;
|
|
83
|
+
};
|
|
30
84
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dao-space/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dao-space/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,cAAc,EAAE,mBAAmB,CAAC;IACpC,yFAAyF;IACzF,qBAAqB,EAAE,KAAK,MAAM,EAAE,EAAE,CAAC;IACvC,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,KAAK,MAAM,EAAE,EAAE,CAAC;IACxC,0CAA0C;IAC1C,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IACX,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACxB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,kCAAkC;IAClC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B;;;OAGG;IACH,aAAa,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4BAA4B;IAC5B,MAAM,EAAE,EAAE,CAAC;IACX,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACxB,oCAAoC;IACpC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;CAC3B,CAAC"}
|
|
@@ -126,7 +126,7 @@ it.skip('should create a space and publish an edit', async () => {
|
|
|
126
126
|
}
|
|
127
127
|
console.log('Successfully published edit to space', spaceId);
|
|
128
128
|
}, 60000);
|
|
129
|
-
it.skip('should create a DAO space', async () => {
|
|
129
|
+
it.skip('should create a DAO space and propose an edit', async () => {
|
|
130
130
|
// IMPORTANT: Replace with your actual private key for testing
|
|
131
131
|
// You can get your private key using https://www.geobrowser.io/export-wallet
|
|
132
132
|
const addressPrivateKey = '0xTODO';
|
|
@@ -214,5 +214,60 @@ it.skip('should create a DAO space', async () => {
|
|
|
214
214
|
throw new Error(`DAO space creation transaction reverted: ${createDaoSpaceTxHash}`);
|
|
215
215
|
}
|
|
216
216
|
console.log('Successfully created DAO space');
|
|
217
|
-
|
|
217
|
+
// Find the DAO space address from the transaction logs
|
|
218
|
+
// The Initialized event is emitted by the new DAO space proxy
|
|
219
|
+
// We find it by looking for logs from addresses other than the factory
|
|
220
|
+
const daoSpaceAddress = receipt.logs.find(log => log.address.toLowerCase() !== to.toLowerCase())?.address;
|
|
221
|
+
if (!daoSpaceAddress) {
|
|
222
|
+
throw new Error('Could not find DAO space address in transaction logs');
|
|
223
|
+
}
|
|
224
|
+
console.log('daoSpaceAddress:', daoSpaceAddress);
|
|
225
|
+
// Get the DAO space ID from the registry
|
|
226
|
+
const daoSpaceIdHex = (await publicClient.readContract({
|
|
227
|
+
address: SPACE_REGISTRY_ADDRESS,
|
|
228
|
+
abi: SpaceRegistryAbi,
|
|
229
|
+
functionName: 'addressToSpaceId',
|
|
230
|
+
args: [daoSpaceAddress],
|
|
231
|
+
}));
|
|
232
|
+
console.log('daoSpaceIdHex:', daoSpaceIdHex);
|
|
233
|
+
if (daoSpaceIdHex.toLowerCase() === EMPTY_SPACE_ID.toLowerCase()) {
|
|
234
|
+
throw new Error('DAO space was not registered in the Space Registry');
|
|
235
|
+
}
|
|
236
|
+
// Now propose an edit to the DAO space
|
|
237
|
+
console.log('Proposing edit to DAO space...');
|
|
238
|
+
const { ops, id: entityId } = createEntity({
|
|
239
|
+
name: 'DAO Entity',
|
|
240
|
+
description: 'Created via DAO space proposal',
|
|
241
|
+
});
|
|
242
|
+
console.log('entityId:', entityId);
|
|
243
|
+
const { editId, cid: proposalCid, to: proposalTo, calldata: proposalCalldata, proposalId, } = await daoSpace.proposeEdit({
|
|
244
|
+
name: 'Add new entity to DAO space',
|
|
245
|
+
ops,
|
|
246
|
+
author: account.address,
|
|
247
|
+
daoSpaceAddress,
|
|
248
|
+
callerSpaceId: spaceIdHex,
|
|
249
|
+
daoSpaceId: daoSpaceIdHex,
|
|
250
|
+
votingMode: 'FAST', // Fast path since we're the only editor and threshold is 1
|
|
251
|
+
});
|
|
252
|
+
console.log('editId:', editId);
|
|
253
|
+
console.log('proposalCid:', proposalCid);
|
|
254
|
+
console.log('proposalId:', proposalId.slice(2));
|
|
255
|
+
const proposeTxHash = await walletClient.sendTransaction({
|
|
256
|
+
// @ts-expect-error - viem type mismatch for account
|
|
257
|
+
account: walletClient.account,
|
|
258
|
+
chain: walletClient.chain ?? null,
|
|
259
|
+
to: proposalTo,
|
|
260
|
+
data: proposalCalldata,
|
|
261
|
+
});
|
|
262
|
+
console.log('proposeTxHash:', proposeTxHash);
|
|
263
|
+
const proposeReceipt = await publicClient.waitForTransactionReceipt({
|
|
264
|
+
hash: proposeTxHash,
|
|
265
|
+
});
|
|
266
|
+
console.log('proposeReceipt status:', proposeReceipt.status);
|
|
267
|
+
if (proposeReceipt.status === 'reverted') {
|
|
268
|
+
throw new Error(`Propose edit transaction reverted: ${proposeTxHash}`);
|
|
269
|
+
}
|
|
270
|
+
console.log('Successfully proposed edit to DAO space');
|
|
271
|
+
console.log('Proposal ID:', proposalId.slice(2));
|
|
272
|
+
}, 120000);
|
|
218
273
|
//# sourceMappingURL=full-flow-test.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full-flow-test.test.js","sourceRoot":"","sources":["../../src/full-flow-test.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"full-flow-test.test.js","sourceRoot":"","sources":["../../src/full-flow-test.test.ts"],"names":[],"mappings":"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"}
|