@geoprotocol/geo-sdk 0.19.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +2 -2
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/abis/dao-space-factory.d.ts +43 -6
  7. package/dist/src/abis/dao-space-factory.d.ts.map +1 -1
  8. package/dist/src/abis/dao-space-factory.js +38 -27
  9. package/dist/src/abis/dao-space-factory.js.map +1 -1
  10. package/dist/src/abis/dao-space.d.ts +98 -7
  11. package/dist/src/abis/dao-space.d.ts.map +1 -1
  12. package/dist/src/abis/dao-space.js +61 -99
  13. package/dist/src/abis/dao-space.js.map +1 -1
  14. package/dist/src/abis/index.d.ts +2 -2
  15. package/dist/src/abis/index.d.ts.map +1 -1
  16. package/dist/src/abis/index.js +2 -2
  17. package/dist/src/abis/index.js.map +1 -1
  18. package/dist/src/abis/space-registry.d.ts +26 -0
  19. package/dist/src/abis/space-registry.d.ts.map +1 -1
  20. package/dist/src/abis/space-registry.js +33 -0
  21. package/dist/src/abis/space-registry.js.map +1 -1
  22. package/dist/src/api-surface.e2e.test.d.ts +2 -0
  23. package/dist/src/api-surface.e2e.test.d.ts.map +1 -0
  24. package/dist/src/{e2e-api-surface.test.js → api-surface.e2e.test.js} +287 -102
  25. package/dist/src/api-surface.e2e.test.js.map +1 -0
  26. package/dist/src/client/dao-spaces.d.ts +93 -33
  27. package/dist/src/client/dao-spaces.d.ts.map +1 -1
  28. package/dist/src/client/dao-spaces.js +174 -42
  29. package/dist/src/client/dao-spaces.js.map +1 -1
  30. package/dist/src/client/dao-spaces.test.js +313 -79
  31. package/dist/src/client/dao-spaces.test.js.map +1 -1
  32. package/dist/src/client/personal-spaces.d.ts +74 -0
  33. package/dist/src/client/personal-spaces.d.ts.map +1 -1
  34. package/dist/src/client/personal-spaces.js +82 -2
  35. package/dist/src/client/personal-spaces.js.map +1 -1
  36. package/dist/src/client/spaces.test.js +27 -7
  37. package/dist/src/client/spaces.test.js.map +1 -1
  38. package/dist/src/client.d.ts +29 -16
  39. package/dist/src/client.d.ts.map +1 -1
  40. package/dist/src/client.js +101 -59
  41. package/dist/src/client.js.map +1 -1
  42. package/dist/src/client.test.js +8 -3
  43. package/dist/src/client.test.js.map +1 -1
  44. package/dist/src/dao-space/constants.d.ts +10 -0
  45. package/dist/src/dao-space/constants.d.ts.map +1 -1
  46. package/dist/src/dao-space/constants.js +10 -0
  47. package/dist/src/dao-space/constants.js.map +1 -1
  48. package/dist/src/dao-space/execute-proposal.d.ts +1 -1
  49. package/dist/src/dao-space/execute-proposal.js +2 -2
  50. package/dist/src/dao-space/execute-proposal.js.map +1 -1
  51. package/dist/src/dao-space/index.d.ts +2 -1
  52. package/dist/src/dao-space/index.d.ts.map +1 -1
  53. package/dist/src/dao-space/index.js +1 -0
  54. package/dist/src/dao-space/index.js.map +1 -1
  55. package/dist/src/dao-space/propose-add-editor.d.ts +1 -20
  56. package/dist/src/dao-space/propose-add-editor.d.ts.map +1 -1
  57. package/dist/src/dao-space/propose-add-editor.js +12 -87
  58. package/dist/src/dao-space/propose-add-editor.js.map +1 -1
  59. package/dist/src/dao-space/propose-add-editor.test.js +16 -4
  60. package/dist/src/dao-space/propose-add-editor.test.js.map +1 -1
  61. package/dist/src/dao-space/propose-add-member.d.ts +1 -20
  62. package/dist/src/dao-space/propose-add-member.d.ts.map +1 -1
  63. package/dist/src/dao-space/propose-add-member.js +12 -87
  64. package/dist/src/dao-space/propose-add-member.js.map +1 -1
  65. package/dist/src/dao-space/propose-add-member.test.js +13 -0
  66. package/dist/src/dao-space/propose-add-member.test.js.map +1 -1
  67. package/dist/src/dao-space/propose-edit.test.js +45 -0
  68. package/dist/src/dao-space/propose-edit.test.js.map +1 -1
  69. package/dist/src/dao-space/propose-remove-editor.d.ts +1 -22
  70. package/dist/src/dao-space/propose-remove-editor.d.ts.map +1 -1
  71. package/dist/src/dao-space/propose-remove-editor.js +12 -94
  72. package/dist/src/dao-space/propose-remove-editor.js.map +1 -1
  73. package/dist/src/dao-space/propose-remove-editor.test.js +22 -4
  74. package/dist/src/dao-space/propose-remove-editor.test.js.map +1 -1
  75. package/dist/src/dao-space/propose-remove-member.d.ts +1 -22
  76. package/dist/src/dao-space/propose-remove-member.d.ts.map +1 -1
  77. package/dist/src/dao-space/propose-remove-member.js +12 -94
  78. package/dist/src/dao-space/propose-remove-member.js.map +1 -1
  79. package/dist/src/dao-space/propose-remove-member.test.js +19 -0
  80. package/dist/src/dao-space/propose-remove-member.test.js.map +1 -1
  81. package/dist/src/dao-space/types.d.ts +72 -11
  82. package/dist/src/dao-space/types.d.ts.map +1 -1
  83. package/dist/src/dao-space/vote-proposal.d.ts +1 -1
  84. package/dist/src/dao-space/vote-proposal.js +2 -2
  85. package/dist/src/dao-space/vote-proposal.js.map +1 -1
  86. package/dist/src/dao-space/vote-proposal.test.js +54 -0
  87. package/dist/src/dao-space/vote-proposal.test.js.map +1 -1
  88. package/dist/src/e2e-test-environment.d.ts +26 -0
  89. package/dist/src/e2e-test-environment.d.ts.map +1 -0
  90. package/dist/src/e2e-test-environment.js +150 -0
  91. package/dist/src/e2e-test-environment.js.map +1 -0
  92. package/dist/src/encodings/get-create-dao-space-calldata.d.ts +32 -9
  93. package/dist/src/encodings/get-create-dao-space-calldata.d.ts.map +1 -1
  94. package/dist/src/encodings/get-create-dao-space-calldata.js +63 -16
  95. package/dist/src/encodings/get-create-dao-space-calldata.js.map +1 -1
  96. package/dist/src/encodings/get-create-dao-space-calldata.test.js +90 -23
  97. package/dist/src/encodings/get-create-dao-space-calldata.test.js.map +1 -1
  98. package/dist/src/full-flow-test.test.js +5 -2
  99. package/dist/src/full-flow-test.test.js.map +1 -1
  100. package/dist/src/legacy-api-surface.e2e.test.d.ts +2 -0
  101. package/dist/src/legacy-api-surface.e2e.test.d.ts.map +1 -0
  102. package/dist/src/{e2e-legacy-api-surface.test.js → legacy-api-surface.e2e.test.js} +91 -71
  103. package/dist/src/legacy-api-surface.e2e.test.js.map +1 -0
  104. package/dist/src/personal-space/constants.d.ts +1 -1
  105. package/dist/src/personal-space/constants.d.ts.map +1 -1
  106. package/dist/src/personal-space/constants.js +1 -1
  107. package/dist/src/personal-space/constants.js.map +1 -1
  108. package/dist/src/personal-space/create-space.d.ts +2 -2
  109. package/dist/src/personal-space/create-space.d.ts.map +1 -1
  110. package/dist/src/personal-space/create-space.js +4 -3
  111. package/dist/src/personal-space/create-space.js.map +1 -1
  112. package/dist/src/personal-space/types.d.ts +4 -1
  113. package/dist/src/personal-space/types.d.ts.map +1 -1
  114. package/package.json +1 -1
  115. package/dist/proto.d.ts +0 -5
  116. package/dist/proto.d.ts.map +0 -1
  117. package/dist/proto.js +0 -5
  118. package/dist/proto.js.map +0 -1
  119. package/dist/src/client/proposals.d.ts +0 -185
  120. package/dist/src/client/proposals.d.ts.map +0 -1
  121. package/dist/src/client/proposals.js +0 -294
  122. package/dist/src/client/proposals.js.map +0 -1
  123. package/dist/src/client/proposals.test.d.ts +0 -2
  124. package/dist/src/client/proposals.test.d.ts.map +0 -1
  125. package/dist/src/client/proposals.test.js +0 -243
  126. package/dist/src/client/proposals.test.js.map +0 -1
  127. package/dist/src/contracts-v2/abis.d.ts +0 -196
  128. package/dist/src/contracts-v2/abis.d.ts.map +0 -1
  129. package/dist/src/contracts-v2/abis.js +0 -110
  130. package/dist/src/contracts-v2/abis.js.map +0 -1
  131. package/dist/src/contracts-v2/actions.d.ts +0 -56
  132. package/dist/src/contracts-v2/actions.d.ts.map +0 -1
  133. package/dist/src/contracts-v2/actions.js +0 -83
  134. package/dist/src/contracts-v2/actions.js.map +0 -1
  135. package/dist/src/contracts-v2/encoding.d.ts +0 -80
  136. package/dist/src/contracts-v2/encoding.d.ts.map +0 -1
  137. package/dist/src/contracts-v2/encoding.js +0 -193
  138. package/dist/src/contracts-v2/encoding.js.map +0 -1
  139. package/dist/src/contracts-v2/encoding.test.d.ts +0 -2
  140. package/dist/src/contracts-v2/encoding.test.d.ts.map +0 -1
  141. package/dist/src/contracts-v2/encoding.test.js +0 -93
  142. package/dist/src/contracts-v2/encoding.test.js.map +0 -1
  143. package/dist/src/contracts-v2/voting-settings.d.ts +0 -48
  144. package/dist/src/contracts-v2/voting-settings.d.ts.map +0 -1
  145. package/dist/src/contracts-v2/voting-settings.js +0 -69
  146. package/dist/src/contracts-v2/voting-settings.js.map +0 -1
  147. package/dist/src/e2e/local-geobrowser.d.ts +0 -9
  148. package/dist/src/e2e/local-geobrowser.d.ts.map +0 -1
  149. package/dist/src/e2e/local-geobrowser.js +0 -35
  150. package/dist/src/e2e/local-geobrowser.js.map +0 -1
  151. package/dist/src/e2e/v2-contracts.test.d.ts +0 -2
  152. package/dist/src/e2e/v2-contracts.test.d.ts.map +0 -1
  153. package/dist/src/e2e/v2-contracts.test.js +0 -25
  154. package/dist/src/e2e/v2-contracts.test.js.map +0 -1
  155. package/dist/src/e2e-api-surface.test.d.ts +0 -2
  156. package/dist/src/e2e-api-surface.test.d.ts.map +0 -1
  157. package/dist/src/e2e-api-surface.test.js.map +0 -1
  158. package/dist/src/e2e-flows.test.d.ts +0 -2
  159. package/dist/src/e2e-flows.test.d.ts.map +0 -1
  160. package/dist/src/e2e-flows.test.js +0 -445
  161. package/dist/src/e2e-flows.test.js.map +0 -1
  162. package/dist/src/e2e-legacy-api-surface.test.d.ts +0 -2
  163. package/dist/src/e2e-legacy-api-surface.test.d.ts.map +0 -1
  164. package/dist/src/e2e-legacy-api-surface.test.js.map +0 -1
  165. package/dist/src/graph/create-space.d.ts +0 -37
  166. package/dist/src/graph/create-space.d.ts.map +0 -1
  167. package/dist/src/graph/create-space.js +0 -67
  168. package/dist/src/graph/create-space.js.map +0 -1
  169. package/dist/src/ops/images.d.ts +0 -37
  170. package/dist/src/ops/images.d.ts.map +0 -1
  171. package/dist/src/ops/images.js +0 -69
  172. package/dist/src/ops/images.js.map +0 -1
  173. package/dist/src/proto/index.d.ts +0 -7
  174. package/dist/src/proto/index.d.ts.map +0 -1
  175. package/dist/src/proto/index.js +0 -7
  176. package/dist/src/proto/index.js.map +0 -1
@@ -1,9 +1,10 @@
1
- import { createPublicClient, createWalletClient, http } from 'viem';
2
- import { privateKeyToAccount } from 'viem/accounts';
1
+ import { createPublicClient, createWalletClient, http, parseEther } from 'viem';
2
+ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
3
3
  import { describe, expect, it } from 'vitest';
4
- import { createGeoClient, defineGeoNetworkConfig, GeoTestnetConfig, Ops } from '../index.js';
4
+ import { createGeoClient, Ops } from '../index.js';
5
5
  import { SpaceRegistryAbi } from './abis/index.js';
6
6
  import { DESCRIPTION_PROPERTY, RELATION_TYPE, REPLY_TO_PROPERTY } from './core/ids/system.js';
7
+ import { createE2ETestEnvironment } from './e2e-test-environment.js';
7
8
  import { deriveCommentName } from './graph/comment-utils.js';
8
9
  import { generate, toGrcId } from './id-utils.js';
9
10
  const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
@@ -11,48 +12,38 @@ const EMPTY_SPACE_ID = '0x00000000000000000000000000000000';
11
12
  const INDEXER_TIMEOUT_MS = 120_000;
12
13
  const TEST_TIMEOUT_MS = 600_000;
13
14
  const replyToGrcId = toGrcId(REPLY_TO_PROPERTY);
14
- const geo = createGeoClient({
15
- network: defineGeoNetworkConfig(GeoTestnetConfig),
15
+ let cachedE2E;
16
+ function getE2E() {
17
+ cachedE2E ??= createE2ETestEnvironment();
18
+ return cachedE2E;
19
+ }
20
+ const e2e = new Proxy({}, {
21
+ get(_target, property) {
22
+ return getE2E()[property];
23
+ },
16
24
  });
17
- function sleep(ms) {
18
- return new Promise(resolve => setTimeout(resolve, ms));
25
+ let cachedGeo;
26
+ function getGeo() {
27
+ cachedGeo ??= createGeoClient({ network: getE2E().network });
28
+ return cachedGeo;
19
29
  }
20
- function requireTestnetContract(name) {
21
- const address = GeoTestnetConfig.contracts?.[name];
22
- if (!address) {
23
- throw new Error(`GeoTestnetConfig is missing ${name}`);
30
+ const geo = new Proxy({}, {
31
+ get(_target, property) {
32
+ return getGeo()[property];
33
+ },
34
+ });
35
+ class GraphQlRequestError extends Error {
36
+ errors;
37
+ constructor(errors) {
38
+ super(`GraphQL errors: ${JSON.stringify(errors)}`);
39
+ this.errors = errors;
24
40
  }
25
- return address;
26
- }
27
- function requireTestnetRpcUrl() {
28
- const rpcUrl = GeoTestnetConfig.chain?.rpcUrl;
29
- if (!rpcUrl) {
30
- throw new Error('GeoTestnetConfig is missing an RPC URL');
41
+ hasValidationError() {
42
+ return JSON.stringify(this.errors).includes('GRAPHQL_VALIDATION_FAILED');
31
43
  }
32
- return rpcUrl;
33
44
  }
34
- function createTestnetChain(rpcUrl) {
35
- const chainConfig = GeoTestnetConfig.chain;
36
- if (!chainConfig) {
37
- throw new Error('GeoTestnetConfig is missing chain config');
38
- }
39
- return {
40
- id: chainConfig.id,
41
- name: chainConfig.name,
42
- nativeCurrency: {
43
- name: 'Ethereum',
44
- symbol: 'ETH',
45
- decimals: 18,
46
- },
47
- rpcUrls: {
48
- default: {
49
- http: [rpcUrl],
50
- },
51
- public: {
52
- http: [rpcUrl],
53
- },
54
- },
55
- };
45
+ function sleep(ms) {
46
+ return new Promise(resolve => setTimeout(resolve, ms));
56
47
  }
57
48
  function filterReplyToRelations(ops) {
58
49
  return ops.filter((op) => op.type === 'createRelation' &&
@@ -112,14 +103,19 @@ function proposalQuery(proposalId) {
112
103
  id
113
104
  spaceId
114
105
  proposedBy
115
- votingMode
116
- name
117
- yesCount
118
- noCount
119
- abstainCount
106
+ currentVersion
107
+ proposalVersions {
108
+ proposalVersion
109
+ votingMode
110
+ name
111
+ yesCount
112
+ noCount
113
+ abstainCount
114
+ }
120
115
  }
121
116
  proposalActions(condition: { proposalId: ${JSON.stringify(id)} }) {
122
117
  proposalId
118
+ proposalVersion
123
119
  actionType
124
120
  targetId
125
121
  contentUri
@@ -167,7 +163,7 @@ function spaceTopicQuery(spaceId) {
167
163
  async function queryGraph(query) {
168
164
  const response = await geo.api.graphql(query);
169
165
  if (response.errors) {
170
- throw new Error(`GraphQL errors: ${JSON.stringify(response.errors)}`);
166
+ throw new GraphQlRequestError(response.errors);
171
167
  }
172
168
  if (response.data === undefined) {
173
169
  throw new Error('GraphQL response did not include data');
@@ -187,6 +183,9 @@ async function waitFor(label, read, predicate) {
187
183
  }
188
184
  }
189
185
  catch (error) {
186
+ if (error instanceof GraphQlRequestError && error.hasValidationError()) {
187
+ throw error;
188
+ }
190
189
  lastError = error;
191
190
  }
192
191
  await sleep(3_000);
@@ -221,19 +220,22 @@ async function waitForProposal(proposalId, expected) {
221
220
  if (proposal.proposedBy !== expected.proposedBy.replaceAll('-', '')) {
222
221
  return false;
223
222
  }
224
- if (expected.votingMode && proposal.votingMode !== expected.votingMode) {
223
+ const currentVersion = proposal.proposalVersions.find(version => version.proposalVersion === proposal.currentVersion);
224
+ if (expected.votingMode && currentVersion?.votingMode !== expected.votingMode) {
225
225
  return false;
226
226
  }
227
227
  if (!expected.actionType)
228
228
  return true;
229
- return value.proposalActions.some(action => action.actionType === expected.actionType &&
229
+ const expectedActionTypes = Array.isArray(expected.actionType) ? expected.actionType : [expected.actionType];
230
+ return value.proposalActions.some(action => expectedActionTypes.includes(action.actionType) &&
230
231
  (expected.targetId === undefined ||
231
232
  action.targetId === expected.targetId.replace(/^0x/, '').replaceAll('-', '')) &&
232
233
  (expected.contentUri === undefined || action.contentUri === expected.contentUri));
233
234
  });
234
235
  expect(data.proposals[0]?.id).toBe(proposalUuid(proposalId));
235
236
  if (expected.actionType) {
236
- expect(data.proposalActions.map(action => action.actionType)).toContain(expected.actionType);
237
+ const expectedActionTypes = Array.isArray(expected.actionType) ? expected.actionType : [expected.actionType];
238
+ expect(data.proposalActions.some(action => expectedActionTypes.includes(action.actionType))).toBe(true);
237
239
  }
238
240
  return data;
239
241
  }
@@ -256,9 +258,17 @@ async function readSpaceTopicId(spaceId) {
256
258
  const data = await queryGraph(spaceTopicQuery(spaceId));
257
259
  return data.spaces[0]?.topicId ?? null;
258
260
  }
261
+ async function readArchivedSpaceId(publicClient, spaceId) {
262
+ return (await publicClient.readContract({
263
+ address: e2e.contracts.SPACE_REGISTRY_ADDRESS,
264
+ abi: SpaceRegistryAbi,
265
+ functionName: 'archivedSpaceIds',
266
+ args: [spaceId],
267
+ }));
268
+ }
259
269
  async function getSpaceIdHex(publicClient, address) {
260
270
  return (await publicClient.readContract({
261
- address: requireTestnetContract('SPACE_REGISTRY_ADDRESS'),
271
+ address: e2e.contracts.SPACE_REGISTRY_ADDRESS,
262
272
  abi: SpaceRegistryAbi,
263
273
  functionName: 'addressToSpaceId',
264
274
  args: [address],
@@ -315,28 +325,65 @@ async function ensurePersonalSpace({ accountAddress, account, publicClient, wall
315
325
  spaceId: hexToUuid(spaceIdHex),
316
326
  };
317
327
  }
318
- async function setupWallet() {
319
- const privateKey = process.env.PRIVATE_KEY;
320
- if (!privateKey) {
321
- throw new Error('PRIVATE_KEY environment variable is required.');
322
- }
323
- if (!privateKey.startsWith('0x')) {
324
- throw new Error('PRIVATE_KEY must be a hex string starting with 0x.');
325
- }
326
- const rpcUrl = requireTestnetRpcUrl();
328
+ async function setupWallet(privateKey = e2e.privateKey) {
327
329
  const account = privateKeyToAccount(privateKey);
328
- const chain = createTestnetChain(rpcUrl);
329
330
  const walletClient = createWalletClient({
330
331
  account,
331
- chain,
332
- transport: http(rpcUrl),
332
+ chain: e2e.chain,
333
+ transport: http(e2e.rpcUrl),
333
334
  });
334
335
  const publicClient = createPublicClient({
335
- chain,
336
- transport: http(rpcUrl),
336
+ chain: e2e.chain,
337
+ transport: http(e2e.rpcUrl),
337
338
  });
338
339
  return { account, publicClient, walletClient };
339
340
  }
341
+ async function advanceLocalTime(seconds) {
342
+ for (const [index, request] of [
343
+ { method: 'evm_increaseTime', params: [seconds] },
344
+ { method: 'evm_mine', params: [] },
345
+ ].entries()) {
346
+ const response = await fetch(e2e.rpcUrl, {
347
+ method: 'POST',
348
+ headers: { 'Content-Type': 'application/json' },
349
+ body: JSON.stringify({
350
+ jsonrpc: '2.0',
351
+ id: Date.now() + index,
352
+ ...request,
353
+ }),
354
+ });
355
+ const body = (await response.json());
356
+ if (!response.ok || body.error) {
357
+ throw new Error(`Local RPC ${request.method} failed: ${body.error?.message ?? response.statusText}`);
358
+ }
359
+ }
360
+ }
361
+ async function createDisposablePersonalSpace(context, name = uniqueName('E2E Disposable Personal Space')) {
362
+ const disposable = await setupWallet(generatePrivateKey());
363
+ await sendTransactionAndWait(context, {
364
+ label: 'fund disposable personal space account',
365
+ to: disposable.account.address,
366
+ calldata: '0x',
367
+ value: parseEther('1'),
368
+ });
369
+ const createSpace = geo.personalSpaces.create({
370
+ name,
371
+ accountAddress: disposable.account.address,
372
+ });
373
+ await sendTransactionAndWait(disposable, {
374
+ label: 'create disposable personal space',
375
+ to: createSpace.to,
376
+ calldata: createSpace.calldata,
377
+ });
378
+ const spaceIdHex = await getSpaceIdHex(disposable.publicClient, disposable.account.address);
379
+ expect(spaceIdHex.toLowerCase()).not.toBe(EMPTY_SPACE_ID.toLowerCase());
380
+ return {
381
+ ...disposable,
382
+ spaceIdHex,
383
+ spaceId: hexToUuid(spaceIdHex),
384
+ authorSpaceId: hexToUuid(spaceIdHex),
385
+ };
386
+ }
340
387
  async function sendTransactionAndWait({ account, publicClient, walletClient }, { label, to, calldata, value = 0n, }) {
341
388
  const [latestNonce, pendingNonce] = await Promise.all([
342
389
  publicClient.getTransactionCount({
@@ -424,10 +471,13 @@ async function getDaoContext() {
424
471
  const daoSpace = await geo.daoSpaces.create({
425
472
  name: daoName,
426
473
  votingSettings: {
427
- slowPathPercentageThreshold: 50,
428
- fastPathFlatThreshold: 1,
474
+ partialPercentageSupportThreshold: 50,
475
+ universalPercentageSupportThreshold: 90,
476
+ flatSupportThreshold: 1,
429
477
  quorum: 1,
430
478
  durationInDays: 2,
479
+ disableFastPathAccessForNewMembers: true,
480
+ executionGracePeriodInDays: 14,
431
481
  },
432
482
  initialEditorSpaceIds: [context.spaceIdHex],
433
483
  author: context.authorSpaceId,
@@ -456,6 +506,42 @@ async function getDaoContext() {
456
506
  })();
457
507
  return daoContextPromise;
458
508
  }
509
+ async function createDisposableDaoContext(context) {
510
+ const daoName = uniqueName('E2E Disposable DAO Space');
511
+ const daoSpace = await geo.daoSpaces.create({
512
+ name: daoName,
513
+ votingSettings: {
514
+ partialPercentageSupportThreshold: 50,
515
+ universalPercentageSupportThreshold: 90,
516
+ flatSupportThreshold: 1,
517
+ quorum: 1,
518
+ durationInDays: 2,
519
+ disableFastPathAccessForNewMembers: true,
520
+ executionGracePeriodInDays: 14,
521
+ },
522
+ initialEditorSpaceIds: [context.spaceIdHex],
523
+ author: context.authorSpaceId,
524
+ });
525
+ const daoCreateTx = await sendTransactionAndWait(context, {
526
+ label: 'create disposable new API DAO space',
527
+ to: daoSpace.to,
528
+ calldata: daoSpace.calldata,
529
+ });
530
+ const daoSpaceAddress = daoCreateTx.receipt.logs.find(log => log.address.toLowerCase() !== daoSpace.to.toLowerCase())
531
+ ?.address;
532
+ if (!daoSpaceAddress) {
533
+ throw new Error('Could not find disposable DAO space address in creation logs');
534
+ }
535
+ const daoSpaceIdHex = await getSpaceIdHex(context.publicClient, daoSpaceAddress);
536
+ expect(daoSpaceIdHex.toLowerCase()).not.toBe(EMPTY_SPACE_ID.toLowerCase());
537
+ return {
538
+ ...context,
539
+ daoSpaceAddress,
540
+ daoSpaceId: hexToUuid(daoSpaceIdHex),
541
+ daoSpaceIdHex,
542
+ daoSpaceEntityId: daoSpace.spaceEntityId,
543
+ };
544
+ }
459
545
  async function createAddMemberProposal(context, label) {
460
546
  const proposal = geo.daoSpaces.proposeAddMember({
461
547
  authorSpaceId: context.spaceIdHex,
@@ -477,8 +563,7 @@ async function createAddMemberProposal(context, label) {
477
563
  });
478
564
  return proposal;
479
565
  }
480
- describe.skip('new API e2e surface', () => {
481
- // describe.sequential("new API e2e surface", () => {
566
+ describe.sequential('new API e2e surface', () => {
482
567
  it('geo.personalSpaces.hasSpace validates the account space onchain', async () => {
483
568
  const context = await getTestContext();
484
569
  const hasSpace = await geo.personalSpaces.hasSpace({
@@ -486,13 +571,83 @@ describe.skip('new API e2e surface', () => {
486
571
  });
487
572
  expect(hasSpace).toBe(true);
488
573
  const spaceAddress = (await context.publicClient.readContract({
489
- address: requireTestnetContract('SPACE_REGISTRY_ADDRESS'),
574
+ address: e2e.contracts.SPACE_REGISTRY_ADDRESS,
490
575
  abi: SpaceRegistryAbi,
491
576
  functionName: 'spaceIdToAddress',
492
577
  args: [context.spaceIdHex],
493
578
  }));
494
579
  expect(spaceAddress.toLowerCase()).not.toBe(ZERO_ADDRESS.toLowerCase());
495
580
  }, TEST_TIMEOUT_MS);
581
+ it('geo.personalSpaces.archiveSpace and recoverSpace update the caller space archive status', async () => {
582
+ const context = await getTestContext();
583
+ if (await readArchivedSpaceId(context.publicClient, context.spaceIdHex)) {
584
+ const recoverExisting = geo.personalSpaces.recoverSpace();
585
+ await sendTransactionAndWait(context, {
586
+ label: 'recover pre-archived personal space',
587
+ to: recoverExisting.to,
588
+ calldata: recoverExisting.calldata,
589
+ });
590
+ }
591
+ let shouldRecover = false;
592
+ try {
593
+ const archive = geo.personalSpaces.archiveSpace();
594
+ await sendTransactionAndWait(context, {
595
+ label: 'archive personal space',
596
+ to: archive.to,
597
+ calldata: archive.calldata,
598
+ });
599
+ shouldRecover = true;
600
+ expect(await readArchivedSpaceId(context.publicClient, context.spaceIdHex)).toBe(true);
601
+ const recover = geo.personalSpaces.recoverSpace();
602
+ await sendTransactionAndWait(context, {
603
+ label: 'recover personal space',
604
+ to: recover.to,
605
+ calldata: recover.calldata,
606
+ });
607
+ shouldRecover = false;
608
+ expect(await readArchivedSpaceId(context.publicClient, context.spaceIdHex)).toBe(false);
609
+ }
610
+ finally {
611
+ if (shouldRecover) {
612
+ const recover = geo.personalSpaces.recoverSpace();
613
+ await sendTransactionAndWait(context, {
614
+ label: 'recover personal space after failed archive test',
615
+ to: recover.to,
616
+ calldata: recover.calldata,
617
+ });
618
+ }
619
+ }
620
+ }, TEST_TIMEOUT_MS);
621
+ it('geo.personalSpaces.clearSpace unregisters a disposable archived personal space locally', async () => {
622
+ if (!e2e.localGeobrowserPath) {
623
+ return;
624
+ }
625
+ const context = await getTestContext();
626
+ const disposable = await createDisposablePersonalSpace(context);
627
+ const archive = geo.personalSpaces.archiveSpace();
628
+ await sendTransactionAndWait(disposable, {
629
+ label: 'archive disposable personal space',
630
+ to: archive.to,
631
+ calldata: archive.calldata,
632
+ });
633
+ expect(await readArchivedSpaceId(disposable.publicClient, disposable.spaceIdHex)).toBe(true);
634
+ const clear = geo.personalSpaces.clearSpace();
635
+ await sendTransactionAndWait(disposable, {
636
+ label: 'clear disposable personal space',
637
+ to: clear.to,
638
+ calldata: clear.calldata,
639
+ });
640
+ const registeredSpaceId = await getSpaceIdHex(disposable.publicClient, disposable.account.address);
641
+ const registeredAddress = (await disposable.publicClient.readContract({
642
+ address: e2e.contracts.SPACE_REGISTRY_ADDRESS,
643
+ abi: SpaceRegistryAbi,
644
+ functionName: 'spaceIdToAddress',
645
+ args: [disposable.spaceIdHex],
646
+ }));
647
+ expect(registeredSpaceId.toLowerCase()).toBe(EMPTY_SPACE_ID.toLowerCase());
648
+ expect(registeredAddress.toLowerCase()).toBe(ZERO_ADDRESS.toLowerCase());
649
+ expect(await readArchivedSpaceId(disposable.publicClient, disposable.spaceIdHex)).toBe(false);
650
+ }, TEST_TIMEOUT_MS);
496
651
  it('geo.personalSpaces.setTopic updates the indexed space topic and restores the previous topic', async () => {
497
652
  const context = await getTestContext();
498
653
  const previousTopicId = await readSpaceTopicId(context.spaceId);
@@ -831,6 +986,45 @@ describe.skip('new API e2e surface', () => {
831
986
  expect(dao.daoSpaceIdHex.toLowerCase()).not.toBe(EMPTY_SPACE_ID.toLowerCase());
832
987
  expect(await readSpaceTopicId(dao.daoSpaceId)).toBe(dao.daoSpaceEntityId);
833
988
  }, TEST_TIMEOUT_MS);
989
+ it('geo.daoSpaces.proposeArchiveSpace archives a disposable DAO space locally', async () => {
990
+ if (!e2e.localGeobrowserPath) {
991
+ return;
992
+ }
993
+ const context = await getTestContext();
994
+ const dao = await createDisposableDaoContext(context);
995
+ const proposal = geo.daoSpaces.proposeArchiveSpace({
996
+ authorSpaceId: dao.spaceIdHex,
997
+ spaceId: dao.daoSpaceIdHex,
998
+ });
999
+ await sendTransactionAndWait(dao, {
1000
+ label: 'new API DAO propose archive space',
1001
+ to: proposal.to,
1002
+ calldata: proposal.calldata,
1003
+ });
1004
+ const vote = geo.daoSpaces.voteProposal({
1005
+ authorSpaceId: dao.spaceIdHex,
1006
+ spaceId: dao.daoSpaceIdHex,
1007
+ proposalId: proposal.proposalId,
1008
+ vote: 'YES',
1009
+ });
1010
+ await sendTransactionAndWait(dao, {
1011
+ label: 'new API DAO vote archive space',
1012
+ to: vote.to,
1013
+ calldata: vote.calldata,
1014
+ });
1015
+ await advanceLocalTime(2 * 24 * 60 * 60 + 60);
1016
+ const execute = geo.daoSpaces.executeProposal({
1017
+ authorSpaceId: dao.spaceIdHex,
1018
+ spaceId: dao.daoSpaceIdHex,
1019
+ proposalId: proposal.proposalId,
1020
+ });
1021
+ await sendTransactionAndWait(dao, {
1022
+ label: 'new API DAO execute archive space',
1023
+ to: execute.to,
1024
+ calldata: execute.calldata,
1025
+ });
1026
+ expect(await readArchivedSpaceId(dao.publicClient, dao.daoSpaceIdHex)).toBe(true);
1027
+ }, TEST_TIMEOUT_MS);
834
1028
  it('geo.daoSpaces.proposeEdit creates an indexed publish proposal', async () => {
835
1029
  const dao = await getDaoContext();
836
1030
  const daoEntity = Ops.entities.create({
@@ -854,8 +1048,7 @@ describe.skip('new API e2e surface', () => {
854
1048
  daoSpaceId: dao.daoSpaceId,
855
1049
  proposedBy: dao.authorSpaceId,
856
1050
  votingMode: 'FAST',
857
- actionType: 'PUBLISH',
858
- contentUri: proposal.cid,
1051
+ actionType: ['PUBLISH', 'UNKNOWN'],
859
1052
  });
860
1053
  }, TEST_TIMEOUT_MS);
861
1054
  it('geo.daoSpaces.proposeAddMember creates an indexed add-member proposal', async () => {
@@ -954,30 +1147,38 @@ describe.skip('new API e2e surface', () => {
954
1147
  targetId: dao.authorSpaceId,
955
1148
  });
956
1149
  }, TEST_TIMEOUT_MS);
957
- it('geo.daoSpaces.proposals.create creates an indexed custom proposal', async () => {
1150
+ it('geo.daoSpaces.proposeUpdateVotingSettings creates an indexed update-voting-settings proposal', async () => {
958
1151
  const dao = await getDaoContext();
959
- const proposal = geo.daoSpaces.proposals.create({
960
- fromSpaceId: dao.spaceIdHex,
961
- daoSpaceId: dao.daoSpaceIdHex,
962
- actions: [geo.daoSpaces.proposals.actions.addMember(dao.daoSpaceAddress, dao.spaceIdHex)],
1152
+ const proposal = geo.daoSpaces.proposeUpdateVotingSettings({
1153
+ authorSpaceId: dao.spaceIdHex,
1154
+ spaceId: dao.daoSpaceIdHex,
1155
+ daoSpaceAddress: dao.daoSpaceAddress,
1156
+ votingSettings: {
1157
+ partialPercentageSupportThreshold: 50,
1158
+ universalPercentageSupportThreshold: 90,
1159
+ flatSupportThreshold: 1,
1160
+ quorum: 1,
1161
+ durationInDays: 2,
1162
+ disableFastPathAccessForNewMembers: true,
1163
+ executionGracePeriodInDays: 14,
1164
+ },
963
1165
  });
964
1166
  await sendTransactionAndWait(dao, {
965
- label: 'new API DAO custom proposal',
1167
+ label: 'new API DAO propose update voting settings',
966
1168
  to: proposal.to,
967
1169
  calldata: proposal.calldata,
968
1170
  });
969
1171
  await waitForProposal(proposal.proposalId, {
970
1172
  daoSpaceId: dao.daoSpaceId,
971
1173
  proposedBy: dao.authorSpaceId,
972
- votingMode: 'FAST',
973
- actionType: 'ADD_MEMBER',
974
- targetId: dao.spaceId,
1174
+ votingMode: 'SLOW',
1175
+ actionType: 'UPDATE_VOTING_SETTINGS',
975
1176
  });
976
1177
  }, TEST_TIMEOUT_MS);
977
- it('geo.daoSpaces.proposals.vote creates an indexed proposal vote', async () => {
1178
+ it('geo.daoSpaces.voteProposal creates an indexed proposal vote', async () => {
978
1179
  const dao = await getDaoContext();
979
1180
  const proposal = await createAddMemberProposal(dao, 'new API DAO proposal for vote');
980
- const vote = geo.daoSpaces.proposals.vote({
1181
+ const vote = geo.daoSpaces.voteProposal({
981
1182
  authorSpaceId: dao.spaceIdHex,
982
1183
  spaceId: dao.daoSpaceIdHex,
983
1184
  proposalId: proposal.proposalId,
@@ -990,32 +1191,16 @@ describe.skip('new API e2e surface', () => {
990
1191
  });
991
1192
  await waitForProposalVote(proposal.proposalId, dao.authorSpaceId, dao.daoSpaceId, 'YES');
992
1193
  }, TEST_TIMEOUT_MS);
993
- it('geo.daoSpaces.proposals.execute builds execute calldata for an indexed proposal', async () => {
1194
+ it('geo.daoSpaces.executeProposal builds execute calldata for an indexed proposal', async () => {
994
1195
  const dao = await getDaoContext();
995
1196
  const proposal = await createAddMemberProposal(dao, 'new API DAO proposal for execute calldata');
996
- const execute = geo.daoSpaces.proposals.execute({
1197
+ const execute = geo.daoSpaces.executeProposal({
997
1198
  authorSpaceId: dao.spaceIdHex,
998
1199
  spaceId: dao.daoSpaceIdHex,
999
1200
  proposalId: proposal.proposalId,
1000
1201
  });
1001
- expect(execute.to).toBe(requireTestnetContract('SPACE_REGISTRY_ADDRESS'));
1202
+ expect(execute.to).toBe(e2e.contracts.SPACE_REGISTRY_ADDRESS);
1002
1203
  expect(execute.calldata).toMatch(/^0x[0-9a-fA-F]+$/);
1003
1204
  }, TEST_TIMEOUT_MS);
1004
- it('geo.daoSpaces.proposals.actions build proposal actions for custom proposals', async () => {
1005
- const dao = await getDaoContext();
1006
- const publishAction = geo.daoSpaces.proposals.actions.publishEdit(dao.daoSpaceAddress, 'ipfs://QmP6aJhM3SgoRSPUccBQK9VMHNqqezixG1Qvjy2xPWvPh5');
1007
- const updateVotingAction = geo.daoSpaces.proposals.actions.updateVotingSettings(dao.daoSpaceAddress, {
1008
- slowPathPercentageThreshold: 50,
1009
- fastPathFlatThreshold: 1,
1010
- quorum: 1,
1011
- durationInDays: 2,
1012
- });
1013
- expect(publishAction.to).toBe(dao.daoSpaceAddress);
1014
- expect(updateVotingAction.to).toBe(dao.daoSpaceAddress);
1015
- expect(geo.daoSpaces.proposals.actions.addMember(dao.daoSpaceAddress, dao.spaceIdHex).data).toMatch(/^0x/);
1016
- expect(geo.daoSpaces.proposals.actions.removeMember(dao.daoSpaceAddress, dao.spaceIdHex).data).toMatch(/^0x/);
1017
- expect(geo.daoSpaces.proposals.actions.addEditor(dao.daoSpaceAddress, dao.spaceIdHex).data).toMatch(/^0x/);
1018
- expect(geo.daoSpaces.proposals.actions.removeEditor(dao.daoSpaceAddress, dao.spaceIdHex).data).toMatch(/^0x/);
1019
- }, TEST_TIMEOUT_MS);
1020
1205
  });
1021
- //# sourceMappingURL=e2e-api-surface.test.js.map
1206
+ //# sourceMappingURL=api-surface.e2e.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-surface.e2e.test.js","sourceRoot":"","sources":["../../src/api-surface.e2e.test.ts"],"names":[],"mappings":"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"}