@geoprotocol/geo-sdk 0.19.1 → 0.19.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.
Files changed (189) hide show
  1. package/dist/examples/ranks/create-ordinal-rank.d.ts +1 -1
  2. package/dist/examples/ranks/create-ordinal-rank.js +9 -6
  3. package/dist/examples/ranks/create-ordinal-rank.js.map +1 -1
  4. package/dist/examples/ranks/create-weighted-rank.d.ts +1 -1
  5. package/dist/examples/ranks/create-weighted-rank.js +9 -6
  6. package/dist/examples/ranks/create-weighted-rank.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/src/abis/dao-space-factory.d.ts +6 -43
  12. package/dist/src/abis/dao-space-factory.d.ts.map +1 -1
  13. package/dist/src/abis/dao-space-factory.js +27 -38
  14. package/dist/src/abis/dao-space-factory.js.map +1 -1
  15. package/dist/src/abis/dao-space.d.ts +7 -98
  16. package/dist/src/abis/dao-space.d.ts.map +1 -1
  17. package/dist/src/abis/dao-space.js +99 -61
  18. package/dist/src/abis/dao-space.js.map +1 -1
  19. package/dist/src/abis/index.d.ts +2 -2
  20. package/dist/src/abis/index.d.ts.map +1 -1
  21. package/dist/src/abis/index.js +2 -2
  22. package/dist/src/abis/index.js.map +1 -1
  23. package/dist/src/abis/space-registry.d.ts +0 -26
  24. package/dist/src/abis/space-registry.d.ts.map +1 -1
  25. package/dist/src/abis/space-registry.js +0 -33
  26. package/dist/src/abis/space-registry.js.map +1 -1
  27. package/dist/src/client/dao-spaces.d.ts +33 -93
  28. package/dist/src/client/dao-spaces.d.ts.map +1 -1
  29. package/dist/src/client/dao-spaces.js +42 -174
  30. package/dist/src/client/dao-spaces.js.map +1 -1
  31. package/dist/src/client/dao-spaces.test.js +79 -313
  32. package/dist/src/client/dao-spaces.test.js.map +1 -1
  33. package/dist/src/client/personal-spaces.d.ts +0 -74
  34. package/dist/src/client/personal-spaces.d.ts.map +1 -1
  35. package/dist/src/client/personal-spaces.js +2 -82
  36. package/dist/src/client/personal-spaces.js.map +1 -1
  37. package/dist/src/client/ranks.d.ts +36 -0
  38. package/dist/src/client/ranks.d.ts.map +1 -0
  39. package/dist/src/client/ranks.js +57 -0
  40. package/dist/src/client/ranks.js.map +1 -0
  41. package/dist/src/client/ranks.test.d.ts +2 -0
  42. package/dist/src/client/ranks.test.d.ts.map +1 -0
  43. package/dist/src/client/ranks.test.js +96 -0
  44. package/dist/src/client/ranks.test.js.map +1 -0
  45. package/dist/src/client/spaces.test.js +7 -27
  46. package/dist/src/client/spaces.test.js.map +1 -1
  47. package/dist/src/client.d.ts +21 -33
  48. package/dist/src/client.d.ts.map +1 -1
  49. package/dist/src/client.js +81 -102
  50. package/dist/src/client.js.map +1 -1
  51. package/dist/src/client.test.js +3 -8
  52. package/dist/src/client.test.js.map +1 -1
  53. package/dist/src/core/ids/system.d.ts +8 -0
  54. package/dist/src/core/ids/system.d.ts.map +1 -1
  55. package/dist/src/core/ids/system.js +8 -0
  56. package/dist/src/core/ids/system.js.map +1 -1
  57. package/dist/src/dao-space/constants.d.ts +0 -10
  58. package/dist/src/dao-space/constants.d.ts.map +1 -1
  59. package/dist/src/dao-space/constants.js +0 -10
  60. package/dist/src/dao-space/constants.js.map +1 -1
  61. package/dist/src/dao-space/execute-proposal.d.ts +1 -1
  62. package/dist/src/dao-space/execute-proposal.js +2 -2
  63. package/dist/src/dao-space/execute-proposal.js.map +1 -1
  64. package/dist/src/dao-space/index.d.ts +1 -2
  65. package/dist/src/dao-space/index.d.ts.map +1 -1
  66. package/dist/src/dao-space/index.js +0 -1
  67. package/dist/src/dao-space/index.js.map +1 -1
  68. package/dist/src/dao-space/propose-add-editor.d.ts +20 -1
  69. package/dist/src/dao-space/propose-add-editor.d.ts.map +1 -1
  70. package/dist/src/dao-space/propose-add-editor.js +87 -12
  71. package/dist/src/dao-space/propose-add-editor.js.map +1 -1
  72. package/dist/src/dao-space/propose-add-editor.test.js +4 -16
  73. package/dist/src/dao-space/propose-add-editor.test.js.map +1 -1
  74. package/dist/src/dao-space/propose-add-member.d.ts +20 -1
  75. package/dist/src/dao-space/propose-add-member.d.ts.map +1 -1
  76. package/dist/src/dao-space/propose-add-member.js +87 -12
  77. package/dist/src/dao-space/propose-add-member.js.map +1 -1
  78. package/dist/src/dao-space/propose-add-member.test.js +0 -13
  79. package/dist/src/dao-space/propose-add-member.test.js.map +1 -1
  80. package/dist/src/dao-space/propose-edit.test.js +0 -45
  81. package/dist/src/dao-space/propose-edit.test.js.map +1 -1
  82. package/dist/src/dao-space/propose-remove-editor.d.ts +22 -1
  83. package/dist/src/dao-space/propose-remove-editor.d.ts.map +1 -1
  84. package/dist/src/dao-space/propose-remove-editor.js +94 -12
  85. package/dist/src/dao-space/propose-remove-editor.js.map +1 -1
  86. package/dist/src/dao-space/propose-remove-editor.test.js +4 -22
  87. package/dist/src/dao-space/propose-remove-editor.test.js.map +1 -1
  88. package/dist/src/dao-space/propose-remove-member.d.ts +22 -1
  89. package/dist/src/dao-space/propose-remove-member.d.ts.map +1 -1
  90. package/dist/src/dao-space/propose-remove-member.js +94 -12
  91. package/dist/src/dao-space/propose-remove-member.js.map +1 -1
  92. package/dist/src/dao-space/propose-remove-member.test.js +0 -19
  93. package/dist/src/dao-space/propose-remove-member.test.js.map +1 -1
  94. package/dist/src/dao-space/types.d.ts +11 -72
  95. package/dist/src/dao-space/types.d.ts.map +1 -1
  96. package/dist/src/dao-space/vote-proposal.d.ts +1 -1
  97. package/dist/src/dao-space/vote-proposal.js +2 -2
  98. package/dist/src/dao-space/vote-proposal.js.map +1 -1
  99. package/dist/src/dao-space/vote-proposal.test.js +0 -54
  100. package/dist/src/dao-space/vote-proposal.test.js.map +1 -1
  101. package/dist/src/e2e-api-surface.test.d.ts +2 -0
  102. package/dist/src/e2e-api-surface.test.d.ts.map +1 -0
  103. package/dist/src/{api-surface.e2e.test.js → e2e-api-surface.test.js} +101 -286
  104. package/dist/src/e2e-api-surface.test.js.map +1 -0
  105. package/dist/src/e2e-legacy-api-surface.test.d.ts +2 -0
  106. package/dist/src/e2e-legacy-api-surface.test.d.ts.map +1 -0
  107. package/dist/src/{legacy-api-surface.e2e.test.js → e2e-legacy-api-surface.test.js} +70 -90
  108. package/dist/src/e2e-legacy-api-surface.test.js.map +1 -0
  109. package/dist/src/encodings/get-create-dao-space-calldata.d.ts +21 -34
  110. package/dist/src/encodings/get-create-dao-space-calldata.d.ts.map +1 -1
  111. package/dist/src/encodings/get-create-dao-space-calldata.js +35 -64
  112. package/dist/src/encodings/get-create-dao-space-calldata.js.map +1 -1
  113. package/dist/src/encodings/get-create-dao-space-calldata.test.js +64 -94
  114. package/dist/src/encodings/get-create-dao-space-calldata.test.js.map +1 -1
  115. package/dist/src/full-flow-test.test.js +2 -5
  116. package/dist/src/full-flow-test.test.js.map +1 -1
  117. package/dist/src/ops/index.d.ts +1 -0
  118. package/dist/src/ops/index.d.ts.map +1 -1
  119. package/dist/src/ops/index.js +1 -0
  120. package/dist/src/ops/index.js.map +1 -1
  121. package/dist/src/ops/ranks.d.ts +33 -0
  122. package/dist/src/ops/ranks.d.ts.map +1 -0
  123. package/dist/src/ops/ranks.js +33 -0
  124. package/dist/src/ops/ranks.js.map +1 -0
  125. package/dist/src/ops/ranks.test.d.ts +2 -0
  126. package/dist/src/ops/ranks.test.d.ts.map +1 -0
  127. package/dist/src/ops/ranks.test.js +36 -0
  128. package/dist/src/ops/ranks.test.js.map +1 -0
  129. package/dist/src/personal-space/constants.d.ts +1 -1
  130. package/dist/src/personal-space/constants.d.ts.map +1 -1
  131. package/dist/src/personal-space/constants.js +1 -1
  132. package/dist/src/personal-space/constants.js.map +1 -1
  133. package/dist/src/personal-space/create-space.d.ts +2 -2
  134. package/dist/src/personal-space/create-space.d.ts.map +1 -1
  135. package/dist/src/personal-space/create-space.js +3 -4
  136. package/dist/src/personal-space/create-space.js.map +1 -1
  137. package/dist/src/personal-space/types.d.ts +1 -4
  138. package/dist/src/personal-space/types.d.ts.map +1 -1
  139. package/dist/src/ranks/create-rank.d.ts +19 -9
  140. package/dist/src/ranks/create-rank.d.ts.map +1 -1
  141. package/dist/src/ranks/create-rank.js +34 -57
  142. package/dist/src/ranks/create-rank.js.map +1 -1
  143. package/dist/src/ranks/create-rank.test.js +151 -23
  144. package/dist/src/ranks/create-rank.test.js.map +1 -1
  145. package/dist/src/ranks/index.d.ts +0 -1
  146. package/dist/src/ranks/index.d.ts.map +1 -1
  147. package/dist/src/ranks/index.js +0 -1
  148. package/dist/src/ranks/index.js.map +1 -1
  149. package/dist/src/ranks/types.d.ts +30 -0
  150. package/dist/src/ranks/types.d.ts.map +1 -1
  151. package/dist/src/ranks/update-rank.d.ts +40 -0
  152. package/dist/src/ranks/update-rank.d.ts.map +1 -0
  153. package/dist/src/ranks/update-rank.js +61 -0
  154. package/dist/src/ranks/update-rank.js.map +1 -0
  155. package/dist/src/ranks/update-rank.test.d.ts +2 -0
  156. package/dist/src/ranks/update-rank.test.d.ts.map +1 -0
  157. package/dist/src/ranks/update-rank.test.js +120 -0
  158. package/dist/src/ranks/update-rank.test.js.map +1 -0
  159. package/dist/src/ranks/vote-ops.d.ts +37 -0
  160. package/dist/src/ranks/vote-ops.d.ts.map +1 -0
  161. package/dist/src/ranks/vote-ops.js +96 -0
  162. package/dist/src/ranks/vote-ops.js.map +1 -0
  163. package/package.json +1 -1
  164. package/dist/src/abis/dao-space-v2.test.d.ts +0 -2
  165. package/dist/src/abis/dao-space-v2.test.d.ts.map +0 -1
  166. package/dist/src/abis/dao-space-v2.test.js +0 -67
  167. package/dist/src/abis/dao-space-v2.test.js.map +0 -1
  168. package/dist/src/api-surface.e2e.test.d.ts +0 -2
  169. package/dist/src/api-surface.e2e.test.d.ts.map +0 -1
  170. package/dist/src/api-surface.e2e.test.js.map +0 -1
  171. package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts +0 -2
  172. package/dist/src/contracts-v2/local-geobrowser.e2e.test.d.ts.map +0 -1
  173. package/dist/src/contracts-v2/local-geobrowser.e2e.test.js +0 -239
  174. package/dist/src/contracts-v2/local-geobrowser.e2e.test.js.map +0 -1
  175. package/dist/src/dao-space/propose-update-voting-settings.d.ts +0 -8
  176. package/dist/src/dao-space/propose-update-voting-settings.d.ts.map +0 -1
  177. package/dist/src/dao-space/propose-update-voting-settings.js +0 -19
  178. package/dist/src/dao-space/propose-update-voting-settings.js.map +0 -1
  179. package/dist/src/dao-space/propose-update-voting-settings.test.d.ts +0 -2
  180. package/dist/src/dao-space/propose-update-voting-settings.test.d.ts.map +0 -1
  181. package/dist/src/dao-space/propose-update-voting-settings.test.js +0 -118
  182. package/dist/src/dao-space/propose-update-voting-settings.test.js.map +0 -1
  183. package/dist/src/e2e-test-environment.d.ts +0 -26
  184. package/dist/src/e2e-test-environment.d.ts.map +0 -1
  185. package/dist/src/e2e-test-environment.js +0 -150
  186. package/dist/src/e2e-test-environment.js.map +0 -1
  187. package/dist/src/legacy-api-surface.e2e.test.d.ts +0 -2
  188. package/dist/src/legacy-api-surface.e2e.test.d.ts.map +0 -1
  189. package/dist/src/legacy-api-surface.e2e.test.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ import type { CreateRankParams, CreateRankResult } from '../ranks/types.js';
2
+ /**
3
+ * Builds create-rank ops (pure, no network access).
4
+ *
5
+ * Each vote carries a `spaceId` (set as `to_space_id` on the vote relation), so
6
+ * a rank can include the same entity across multiple space perspectives; item
7
+ * uniqueness is keyed on `(entityId, spaceId)`. Pass an optional `blockId` to
8
+ * link the rank to a `Ranking Block`.
9
+ *
10
+ * For re-submissions use `geo.ranks.update(...)`, which fetches the rank's
11
+ * existing vote relations and supersedes them.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { Ops } from '@geoprotocol/geo-sdk';
16
+ *
17
+ * const { id, ops, voteIds } = Ops.ranks.create({
18
+ * name: 'My Favorite Movies',
19
+ * rankType: 'ORDINAL',
20
+ * blockId, // optional
21
+ * votes: [
22
+ * { entityId: movie1Id, spaceId },
23
+ * { entityId: movie2Id, spaceId },
24
+ * ],
25
+ * });
26
+ * ```
27
+ *
28
+ * @param params Rank name, type, optional block link, and ordered votes.
29
+ * @returns Rank entity ID, ops, and the created vote entity IDs.
30
+ * @throws When any supplied ID is invalid, or a `(entityId, spaceId)` pair is duplicated.
31
+ */
32
+ export declare const create: (params: CreateRankParams) => CreateRankResult;
33
+ //# sourceMappingURL=ranks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranks.d.ts","sourceRoot":"","sources":["../../../src/ops/ranks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,gBAAgB,KAAG,gBAAsC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { createRank } from '../ranks/create-rank.js';
2
+ /**
3
+ * Builds create-rank ops (pure, no network access).
4
+ *
5
+ * Each vote carries a `spaceId` (set as `to_space_id` on the vote relation), so
6
+ * a rank can include the same entity across multiple space perspectives; item
7
+ * uniqueness is keyed on `(entityId, spaceId)`. Pass an optional `blockId` to
8
+ * link the rank to a `Ranking Block`.
9
+ *
10
+ * For re-submissions use `geo.ranks.update(...)`, which fetches the rank's
11
+ * existing vote relations and supersedes them.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { Ops } from '@geoprotocol/geo-sdk';
16
+ *
17
+ * const { id, ops, voteIds } = Ops.ranks.create({
18
+ * name: 'My Favorite Movies',
19
+ * rankType: 'ORDINAL',
20
+ * blockId, // optional
21
+ * votes: [
22
+ * { entityId: movie1Id, spaceId },
23
+ * { entityId: movie2Id, spaceId },
24
+ * ],
25
+ * });
26
+ * ```
27
+ *
28
+ * @param params Rank name, type, optional block link, and ordered votes.
29
+ * @returns Rank entity ID, ops, and the created vote entity IDs.
30
+ * @throws When any supplied ID is invalid, or a `(entityId, spaceId)` pair is duplicated.
31
+ */
32
+ export const create = (params) => createRank(params);
33
+ //# sourceMappingURL=ranks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranks.js","sourceRoot":"","sources":["../../../src/ops/ranks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAoB,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ranks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranks.test.d.ts","sourceRoot":"","sources":["../../../src/ops/ranks.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { RANK_BLOCK_RELATION_TYPE, RANK_VOTES_RELATION_TYPE } from '../core/ids/system.js';
3
+ import { toGrcId } from '../id-utils.js';
4
+ import { create } from './ranks.js';
5
+ const MOVIE_1 = 'f47ac10b58cc4372a5670e02b2c3d479';
6
+ const MOVIE_2 = '550e8400e29b41d4a716446655440000';
7
+ const SPACE_ID = 'd4bc2f205e2d415e971eb0b9fbf6b6fc';
8
+ const BLOCK_ID = '9f8e7d6c5b4a49388271605f4e3d2c1b';
9
+ function relationsOfType(ops, typeId) {
10
+ return ops.filter((op) => op.type === 'createRelation' &&
11
+ op.relationType.every((byte, index) => byte === toGrcId(typeId)[index]));
12
+ }
13
+ describe('Ops.ranks.create', () => {
14
+ it('builds rank creation ops (pure, no network)', () => {
15
+ const result = create({
16
+ name: 'Top movies',
17
+ rankType: 'ORDINAL',
18
+ votes: [
19
+ { entityId: MOVIE_1, spaceId: SPACE_ID },
20
+ { entityId: MOVIE_2, spaceId: SPACE_ID },
21
+ ],
22
+ });
23
+ expect(result.voteIds).toHaveLength(2);
24
+ expect(relationsOfType(result.ops, RANK_VOTES_RELATION_TYPE)).toHaveLength(2);
25
+ });
26
+ it('links the rank to a Ranking Block when blockId is provided', () => {
27
+ const result = create({
28
+ name: 'Block-linked rank',
29
+ rankType: 'ORDINAL',
30
+ blockId: BLOCK_ID,
31
+ votes: [{ entityId: MOVIE_1, spaceId: SPACE_ID }],
32
+ });
33
+ expect(relationsOfType(result.ops, RANK_BLOCK_RELATION_TYPE)).toHaveLength(1);
34
+ });
35
+ });
36
+ //# sourceMappingURL=ranks.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranks.test.js","sourceRoot":"","sources":["../../../src/ops/ranks.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,OAAO,GAAG,kCAAkC,CAAC;AACnD,MAAM,OAAO,GAAG,kCAAkC,CAAC;AACnD,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACpD,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AAEpD,SAAS,eAAe,CAAC,GAA4B,EAAE,MAAc;IACnE,OAAO,GAAG,CAAC,MAAM,CACf,CAAC,EAAE,EAAwB,EAAE,CAC3B,EAAE,CAAC,IAAI,KAAK,gBAAgB;QAC3B,EAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC;YACpB,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE;gBACL,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;gBACxC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;aACzC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC;YACpB,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAClD,CAAC,CAAC;QAEH,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare const EDITS_PUBLISHED: `0x${string}`;
2
- export declare const TOPIC_SET: `0x${string}`;
2
+ export declare const TOPIC_DECLARED: `0x${string}`;
3
3
  export declare const EMPTY_TOPIC: "0x0000000000000000000000000000000000000000000000000000000000000000";
4
4
  export declare const EMPTY_SIGNATURE: "0x";
5
5
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/personal-space/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,eAAiD,CAAC;AAC9E,eAAO,MAAM,SAAS,eAA2C,CAAC;AAClE,eAAO,MAAM,WAAW,EAAG,oEAA6E,CAAC;AACzG,eAAO,MAAM,eAAe,EAAG,IAAa,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/personal-space/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,eAAiD,CAAC;AAC9E,eAAO,MAAM,cAAc,eAAgD,CAAC;AAC5E,eAAO,MAAM,WAAW,EAAG,oEAA6E,CAAC;AACzG,eAAO,MAAM,eAAe,EAAG,IAAa,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { keccak256, toHex } from 'viem';
2
2
  export const EDITS_PUBLISHED = keccak256(toHex('GOVERNANCE.EDITS_PUBLISHED'));
3
- export const TOPIC_SET = keccak256(toHex('GOVERNANCE.TOPIC_SET'));
3
+ export const TOPIC_DECLARED = keccak256(toHex('GOVERNANCE.TOPIC_DECLARED'));
4
4
  export const EMPTY_TOPIC = '0x0000000000000000000000000000000000000000000000000000000000000000';
5
5
  export const EMPTY_SIGNATURE = '0x';
6
6
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/personal-space/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,oEAA6E,CAAC;AACzG,MAAM,CAAC,MAAM,eAAe,GAAG,IAAa,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/personal-space/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,WAAW,GAAG,oEAA6E,CAAC;AACzG,MAAM,CAAC,MAAM,eAAe,GAAG,IAAa,CAAC"}
@@ -1,8 +1,8 @@
1
- import type { CreateSpaceParams, CreateSpaceResult } from './types.js';
1
+ import type { CreateSpaceResult } from './types.js';
2
2
  /**
3
3
  * Get the target address and calldata for creating a personal space.
4
4
  *
5
5
  * @deprecated Use `createGeoClient({ network }).personalSpaces.create(...)`.
6
6
  */
7
- export declare function createSpace({ network }?: CreateSpaceParams): CreateSpaceResult;
7
+ export declare function createSpace(): CreateSpaceResult;
8
8
  //# sourceMappingURL=create-space.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-space.d.ts","sourceRoot":"","sources":["../../../src/personal-space/create-space.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAmB,EAAE,GAAE,iBAAsB,GAAG,iBAAiB,CAO9F"}
1
+ {"version":3,"file":"create-space.d.ts","sourceRoot":"","sources":["../../../src/personal-space/create-space.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,iBAAiB,CAK/C"}
@@ -1,14 +1,13 @@
1
+ import { TESTNET } from '../../contracts.js';
1
2
  import { getCreatePersonalSpaceCalldata } from '../encodings/index.js';
2
- import { requireGeoContract, resolveGeoNetwork } from '../networks.js';
3
3
  /**
4
4
  * Get the target address and calldata for creating a personal space.
5
5
  *
6
6
  * @deprecated Use `createGeoClient({ network }).personalSpaces.create(...)`.
7
7
  */
8
- export function createSpace({ network = 'TESTNET' } = {}) {
9
- const config = resolveGeoNetwork(network);
8
+ export function createSpace() {
10
9
  return {
11
- to: requireGeoContract(config, 'SPACE_REGISTRY_ADDRESS'),
10
+ to: TESTNET.SPACE_REGISTRY_ADDRESS,
12
11
  calldata: getCreatePersonalSpaceCalldata(),
13
12
  };
14
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-space.js","sourceRoot":"","sources":["../../../src/personal-space/create-space.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGvE;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,KAAwB,EAAE;IACzE,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE1C,OAAO;QACL,EAAE,EAAE,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,CAAC;QACxD,QAAQ,EAAE,8BAA8B,EAAE;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create-space.js","sourceRoot":"","sources":["../../../src/personal-space/create-space.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAGvE;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,sBAAsB;QAClC,QAAQ,EAAE,8BAA8B,EAAE;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,9 +1,6 @@
1
1
  import type { Op } from '@geoprotocol/grc-20';
2
2
  import type { Id } from '../id.js';
3
- import type { Network, Networkish } from '../types.js';
4
- export type CreateSpaceParams = {
5
- network?: Networkish;
6
- };
3
+ import type { Network } from '../types.js';
7
4
  export type CreateSpaceResult = {
8
5
  to: `0x${string}`;
9
6
  calldata: `0x${string}`;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/personal-space/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC;IACrB,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,sCAAsC;IACtC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,EAAE,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/personal-space/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC;IACrB,GAAG,EAAE,EAAE,EAAE,CAAC;IACV,sCAAsC;IACtC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,EAAE,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;CACzB,CAAC"}
@@ -4,8 +4,17 @@ import type { CreateRankParams, CreateRankResult } from './types.js';
4
4
  * All IDs passed to this function are validated. If any invalid ID is provided,
5
5
  * the function will throw an error.
6
6
  *
7
- * For ORDINAL ranks, the position is derived from the array order and fractional
8
- * indexing strings are generated internally.
7
+ * Each vote must carry a `spaceId` that scopes the ranked entity to a space
8
+ * perspective (set as `to_space_id` on the vote relation). A rank may therefore
9
+ * include the same entity across multiple spaces; item uniqueness is keyed on
10
+ * `(entityId, spaceId)`.
11
+ *
12
+ * A fractional index is generated from the array order and set as each vote
13
+ * relation's `position`, so clients can order votes natively. For ORDINAL ranks
14
+ * the same fractional index is stored on the reified vote entity.
15
+ *
16
+ * When `blockId` is provided, a `Rank → Ranking Block` relation is emitted to
17
+ * associate the rank with a ranking block. The link may also be added later.
9
18
  *
10
19
  * @example
11
20
  * ```ts
@@ -15,10 +24,11 @@ import type { CreateRankParams, CreateRankResult } from './types.js';
15
24
  * name: 'My Favorite Movies',
16
25
  * description: 'A ranked list of my favorite movies', // optional
17
26
  * rankType: 'ORDINAL',
27
+ * blockId, // optional, links the rank to a Ranking Block
18
28
  * votes: [
19
- * { entityId: movie1Id }, // 1st place
20
- * { entityId: movie2Id }, // 2nd place
21
- * { entityId: movie3Id }, // 3rd place
29
+ * { entityId: movie1Id, spaceId }, // 1st place
30
+ * { entityId: movie2Id, spaceId }, // 2nd place
31
+ * { entityId: movie3Id, spaceId }, // 3rd place
22
32
  * ],
23
33
  * });
24
34
  *
@@ -27,8 +37,8 @@ import type { CreateRankParams, CreateRankResult } from './types.js';
27
37
  * name: 'Restaurant Ratings',
28
38
  * rankType: 'WEIGHTED',
29
39
  * votes: [
30
- * { entityId: restaurant1Id, value: 4.5 }, // numeric score
31
- * { entityId: restaurant2Id, value: 3.8 },
40
+ * { entityId: restaurant1Id, spaceId, value: 4.5 }, // numeric score
41
+ * { entityId: restaurant2Id, spaceId, value: 3.8 },
32
42
  * ],
33
43
  * });
34
44
  * ```
@@ -36,7 +46,7 @@ import type { CreateRankParams, CreateRankResult } from './types.js';
36
46
  * @param params – {@link CreateRankParams}
37
47
  * @returns – {@link CreateRankResult}
38
48
  * @throws Will throw an error if any provided ID is invalid
39
- * @throws Will throw an error if any entityId is duplicated in votes
49
+ * @throws Will throw an error if any `(entityId, spaceId)` pair is duplicated in votes
40
50
  */
41
- export declare const createRank: ({ id: providedId, name, description, rankType, votes, }: CreateRankParams) => CreateRankResult;
51
+ export declare const createRank: ({ id: providedId, name, description, rankType, blockId, votes, }: CreateRankParams) => CreateRankResult;
42
52
  //# sourceMappingURL=create-rank.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-rank.d.ts","sourceRoot":"","sources":["../../../src/ranks/create-rank.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAgB,MAAM,YAAY,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,UAAU,GAAI,yDAMxB,gBAAgB,KAAG,gBA0HrB,CAAC"}
1
+ {"version":3,"file":"create-rank.d.ts","sourceRoot":"","sources":["../../../src/ranks/create-rank.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,UAAU,GAAI,kEAOxB,gBAAgB,KAAG,gBAiFrB,CAAC"}
@@ -1,15 +1,24 @@
1
1
  import { createEntity as grcCreateEntity, createRelation as grcCreateRelation, languages, } from '@geoprotocol/grc-20';
2
- import { generateNJitteredKeysBetween } from 'fractional-indexing-jittered';
3
- import { DESCRIPTION_PROPERTY, NAME_PROPERTY, RANK_TYPE, RANK_TYPE_PROPERTY, RANK_VOTES_RELATION_TYPE, TYPES_PROPERTY, VOTE_ORDINAL_VALUE_PROPERTY, VOTE_WEIGHTED_VALUE_PROPERTY, } from '../core/ids/system.js';
2
+ import { DESCRIPTION_PROPERTY, NAME_PROPERTY, RANK_BLOCK_RELATION_TYPE, RANK_TYPE, RANK_TYPE_PROPERTY, TYPES_PROPERTY, } from '../core/ids/system.js';
4
3
  import { Id } from '../id.js';
5
4
  import { assertValid, generate, toGrcId } from '../id-utils.js';
5
+ import { buildVoteOps, validateVotes } from './vote-ops.js';
6
6
  /**
7
7
  * Creates a rank entity with the given name, description, rankType, and votes.
8
8
  * All IDs passed to this function are validated. If any invalid ID is provided,
9
9
  * the function will throw an error.
10
10
  *
11
- * For ORDINAL ranks, the position is derived from the array order and fractional
12
- * indexing strings are generated internally.
11
+ * Each vote must carry a `spaceId` that scopes the ranked entity to a space
12
+ * perspective (set as `to_space_id` on the vote relation). A rank may therefore
13
+ * include the same entity across multiple spaces; item uniqueness is keyed on
14
+ * `(entityId, spaceId)`.
15
+ *
16
+ * A fractional index is generated from the array order and set as each vote
17
+ * relation's `position`, so clients can order votes natively. For ORDINAL ranks
18
+ * the same fractional index is stored on the reified vote entity.
19
+ *
20
+ * When `blockId` is provided, a `Rank → Ranking Block` relation is emitted to
21
+ * associate the rank with a ranking block. The link may also be added later.
13
22
  *
14
23
  * @example
15
24
  * ```ts
@@ -19,10 +28,11 @@ import { assertValid, generate, toGrcId } from '../id-utils.js';
19
28
  * name: 'My Favorite Movies',
20
29
  * description: 'A ranked list of my favorite movies', // optional
21
30
  * rankType: 'ORDINAL',
31
+ * blockId, // optional, links the rank to a Ranking Block
22
32
  * votes: [
23
- * { entityId: movie1Id }, // 1st place
24
- * { entityId: movie2Id }, // 2nd place
25
- * { entityId: movie3Id }, // 3rd place
33
+ * { entityId: movie1Id, spaceId }, // 1st place
34
+ * { entityId: movie2Id, spaceId }, // 2nd place
35
+ * { entityId: movie3Id, spaceId }, // 3rd place
26
36
  * ],
27
37
  * });
28
38
  *
@@ -31,8 +41,8 @@ import { assertValid, generate, toGrcId } from '../id-utils.js';
31
41
  * name: 'Restaurant Ratings',
32
42
  * rankType: 'WEIGHTED',
33
43
  * votes: [
34
- * { entityId: restaurant1Id, value: 4.5 }, // numeric score
35
- * { entityId: restaurant2Id, value: 3.8 },
44
+ * { entityId: restaurant1Id, spaceId, value: 4.5 }, // numeric score
45
+ * { entityId: restaurant2Id, spaceId, value: 3.8 },
36
46
  * ],
37
47
  * });
38
48
  * ```
@@ -40,28 +50,19 @@ import { assertValid, generate, toGrcId } from '../id-utils.js';
40
50
  * @param params – {@link CreateRankParams}
41
51
  * @returns – {@link CreateRankResult}
42
52
  * @throws Will throw an error if any provided ID is invalid
43
- * @throws Will throw an error if any entityId is duplicated in votes
53
+ * @throws Will throw an error if any `(entityId, spaceId)` pair is duplicated in votes
44
54
  */
45
- export const createRank = ({ id: providedId, name, description, rankType, votes, }) => {
55
+ export const createRank = ({ id: providedId, name, description, rankType, blockId, votes, }) => {
46
56
  // Validate all input IDs
47
57
  if (providedId) {
48
58
  assertValid(providedId, '`id` in `createRank`');
49
59
  }
50
- for (const vote of votes) {
51
- assertValid(vote.entityId, '`entityId` in `votes` in `createRank`');
52
- }
53
- // Validate no duplicate entity IDs in votes
54
- const seenEntityIds = new Set();
55
- for (const vote of votes) {
56
- const entityId = String(vote.entityId);
57
- if (seenEntityIds.has(entityId)) {
58
- throw new Error(`Duplicate entityId in votes: "${entityId}". Each entity can only be voted once per rank.`);
59
- }
60
- seenEntityIds.add(entityId);
60
+ if (blockId) {
61
+ assertValid(blockId, '`blockId` in `createRank`');
61
62
  }
63
+ validateVotes(votes, rankType, 'createRank');
62
64
  const id = providedId ?? generate();
63
65
  const ops = [];
64
- const voteIds = [];
65
66
  // Create rank entity values
66
67
  const rankValues = [
67
68
  {
@@ -104,43 +105,19 @@ export const createRank = ({ id: providedId, name, description, rankType, votes,
104
105
  to: toGrcId(RANK_TYPE),
105
106
  relationType: toGrcId(TYPES_PROPERTY),
106
107
  }));
107
- // Generate fractional indices for ordinal ranks
108
- const fractionalIndices = rankType === 'ORDINAL' ? generateNJitteredKeysBetween(null, null, votes.length) : [];
109
- // Create votes
110
- votes.forEach((vote, i) => {
111
- const voteEntityId = generate();
112
- const relationId = generate();
113
- voteIds.push(voteEntityId);
114
- // Create relation from rank to voted entity
108
+ // Optionally link the rank to its Ranking Block
109
+ if (blockId) {
115
110
  ops.push(grcCreateRelation({
116
- id: toGrcId(relationId),
117
- entity: toGrcId(voteEntityId),
111
+ id: toGrcId(generate()),
112
+ entity: toGrcId(generate()),
118
113
  from: toGrcId(id),
119
- to: toGrcId(vote.entityId),
120
- relationType: toGrcId(RANK_VOTES_RELATION_TYPE),
114
+ to: toGrcId(blockId),
115
+ relationType: toGrcId(RANK_BLOCK_RELATION_TYPE),
121
116
  }));
122
- // Create vote entity with the appropriate value property
123
- const voteValue = rankType === 'ORDINAL'
124
- ? {
125
- property: toGrcId(VOTE_ORDINAL_VALUE_PROPERTY),
126
- value: {
127
- type: 'text',
128
- value: fractionalIndices[i],
129
- language: languages.english(),
130
- },
131
- }
132
- : {
133
- property: toGrcId(VOTE_WEIGHTED_VALUE_PROPERTY),
134
- value: {
135
- type: 'float',
136
- value: vote.value,
137
- },
138
- };
139
- ops.push(grcCreateEntity({
140
- id: toGrcId(voteEntityId),
141
- values: [voteValue],
142
- }));
143
- });
117
+ }
118
+ // Create vote relations + reified vote entities
119
+ const { ops: voteOps, voteIds } = buildVoteOps(id, rankType, votes);
120
+ ops.push(...voteOps);
144
121
  return { id: Id(id), ops, voteIds };
145
122
  };
146
123
  //# sourceMappingURL=create-rank.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-rank.js","sourceRoot":"","sources":["../../../src/ranks/create-rank.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-rank.js","sourceRoot":"","sources":["../../../src/ranks/create-rank.ts"],"names":[],"mappings":"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"}