@graphprotocol/grc-20 0.28.0 → 0.30.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.
Files changed (57) hide show
  1. package/dist/contracts.d.ts +2 -2
  2. package/dist/contracts.js +2 -2
  3. package/dist/examples/ranks/create-ordinal-rank.d.ts +8 -0
  4. package/dist/examples/ranks/create-ordinal-rank.d.ts.map +1 -0
  5. package/dist/examples/ranks/create-ordinal-rank.js +42 -0
  6. package/dist/examples/ranks/create-ordinal-rank.js.map +1 -0
  7. package/dist/examples/ranks/create-weighted-rank.d.ts +8 -0
  8. package/dist/examples/ranks/create-weighted-rank.d.ts.map +1 -0
  9. package/dist/examples/ranks/create-weighted-rank.js +42 -0
  10. package/dist/examples/ranks/create-weighted-rank.js.map +1 -0
  11. package/dist/index.d.ts +5 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +5 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/scripts/setup-rank-types.d.ts +15 -0
  16. package/dist/scripts/setup-rank-types.d.ts.map +1 -0
  17. package/dist/scripts/setup-rank-types.js +62 -0
  18. package/dist/scripts/setup-rank-types.js.map +1 -0
  19. package/dist/src/abis/dao-space-factory.d.ts +12 -4
  20. package/dist/src/abis/dao-space-factory.d.ts.map +1 -1
  21. package/dist/src/abis/dao-space-factory.js +14 -4
  22. package/dist/src/abis/dao-space-factory.js.map +1 -1
  23. package/dist/src/abis/dao-space.d.ts +42 -46
  24. package/dist/src/abis/dao-space.d.ts.map +1 -1
  25. package/dist/src/abis/dao-space.js +42 -47
  26. package/dist/src/abis/dao-space.js.map +1 -1
  27. package/dist/src/abis/space-registry.d.ts +11 -7
  28. package/dist/src/abis/space-registry.d.ts.map +1 -1
  29. package/dist/src/abis/space-registry.js +13 -7
  30. package/dist/src/abis/space-registry.js.map +1 -1
  31. package/dist/src/core/ids/system.d.ts +6 -0
  32. package/dist/src/core/ids/system.d.ts.map +1 -1
  33. package/dist/src/core/ids/system.js +6 -0
  34. package/dist/src/core/ids/system.js.map +1 -1
  35. package/dist/src/encodings/get-create-dao-space-calldata.d.ts +9 -7
  36. package/dist/src/encodings/get-create-dao-space-calldata.d.ts.map +1 -1
  37. package/dist/src/encodings/get-create-dao-space-calldata.js +18 -11
  38. package/dist/src/encodings/get-create-dao-space-calldata.js.map +1 -1
  39. package/dist/src/encodings/get-create-dao-space-calldata.test.js +9 -10
  40. package/dist/src/encodings/get-create-dao-space-calldata.test.js.map +1 -1
  41. package/dist/src/ranks/create-rank.d.ts +42 -0
  42. package/dist/src/ranks/create-rank.d.ts.map +1 -0
  43. package/dist/src/ranks/create-rank.js +139 -0
  44. package/dist/src/ranks/create-rank.js.map +1 -0
  45. package/dist/src/ranks/create-rank.test.d.ts +2 -0
  46. package/dist/src/ranks/create-rank.test.d.ts.map +1 -0
  47. package/dist/src/ranks/create-rank.test.js +246 -0
  48. package/dist/src/ranks/create-rank.test.js.map +1 -0
  49. package/dist/src/ranks/index.d.ts +3 -0
  50. package/dist/src/ranks/index.d.ts.map +1 -0
  51. package/dist/src/ranks/index.js +3 -0
  52. package/dist/src/ranks/index.js.map +1 -0
  53. package/dist/src/ranks/types.d.ts +30 -0
  54. package/dist/src/ranks/types.d.ts.map +1 -0
  55. package/dist/src/ranks/types.js +2 -0
  56. package/dist/src/ranks/types.js.map +1 -0
  57. package/package.json +1 -1
@@ -99,12 +99,12 @@ describe('getCreateDaoSpaceCalldata', () => {
99
99
  quorum: 1,
100
100
  durationInDays: 7,
101
101
  },
102
- initialEditors: [
103
- '0x1234567890123456789012345678901234567890',
104
- '0x2234567890123456789012345678901234567890',
105
- '0x3234567890123456789012345678901234567890',
102
+ initialEditorSpaceIds: [
103
+ '0x12345678901234567890123456789012',
104
+ '0x22345678901234567890123456789012',
105
+ '0x32345678901234567890123456789012',
106
106
  ],
107
- initialMembers: ['0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'],
107
+ initialMemberSpaceIds: ['0xabcdefabcdefabcdefabcdefabcdefab'],
108
108
  };
109
109
  it('should generate valid calldata', () => {
110
110
  const calldata = getCreateDaoSpaceCalldata(validArgs);
@@ -112,8 +112,8 @@ describe('getCreateDaoSpaceCalldata', () => {
112
112
  expect(calldata.startsWith('0x')).toBe(true);
113
113
  });
114
114
  it('should throw if no initial editors provided', () => {
115
- const args = { ...validArgs, initialEditors: [] };
116
- expect(() => getCreateDaoSpaceCalldata(args)).toThrow('At least one initial editor is required');
115
+ const args = { ...validArgs, initialEditorSpaceIds: [] };
116
+ expect(() => getCreateDaoSpaceCalldata(args)).toThrow('At least one initial editor space ID is required');
117
117
  });
118
118
  it('should throw if voting settings are invalid', () => {
119
119
  const args = {
@@ -130,13 +130,12 @@ describe('getCreateDaoSpaceCalldata', () => {
130
130
  expect(() => getCreateDaoSpaceCalldata(args)).toThrow(`durationInDays must be at least ${MINIMUM_VOTING_DURATION_DAYS} days`);
131
131
  });
132
132
  it('should accept empty initial members', () => {
133
- const args = { ...validArgs, initialMembers: [] };
133
+ const args = { ...validArgs, initialMemberSpaceIds: [] };
134
134
  const calldata = getCreateDaoSpaceCalldata(args);
135
135
  expect(calldata).toBeTypeOf('string');
136
136
  expect(calldata.startsWith('0x')).toBe(true);
137
137
  });
138
- it('should checksum addresses', () => {
139
- // Should not throw with lowercase addresses - uses validArgs which has 3 editors
138
+ it('should accept space IDs', () => {
140
139
  const calldata = getCreateDaoSpaceCalldata(validArgs);
141
140
  expect(calldata).toBeTypeOf('string');
142
141
  });
@@ -1 +1 @@
1
- {"version":3,"file":"get-create-dao-space-calldata.test.js","sourceRoot":"","sources":["../../../src/encodings/get-create-dao-space-calldata.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-create-dao-space-calldata.test.js","sourceRoot":"","sources":["../../../src/encodings/get-create-dao-space-calldata.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { CreateRankParams, CreateRankResult } from './types.js';
2
+ /**
3
+ * Creates a rank entity with the given name, description, rankType, and votes.
4
+ * All IDs passed to this function are validated. If any invalid ID is provided,
5
+ * the function will throw an error.
6
+ *
7
+ * For ORDINAL ranks, the position is derived from the array order and fractional
8
+ * indexing strings are generated internally.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // Create an ordinal rank (ordered list) - position derived from array order
13
+ * const { id, ops, voteIds } = createRank({
14
+ * id: rankId, // optional, will be generated if not provided
15
+ * name: 'My Favorite Movies',
16
+ * description: 'A ranked list of my favorite movies', // optional
17
+ * rankType: 'ORDINAL',
18
+ * votes: [
19
+ * { entityId: movie1Id }, // 1st place
20
+ * { entityId: movie2Id }, // 2nd place
21
+ * { entityId: movie3Id }, // 3rd place
22
+ * ],
23
+ * });
24
+ *
25
+ * // Create a weighted rank (scored list)
26
+ * const { id, ops, voteIds } = createRank({
27
+ * name: 'Restaurant Ratings',
28
+ * rankType: 'WEIGHTED',
29
+ * votes: [
30
+ * { entityId: restaurant1Id, value: 4.5 }, // numeric score
31
+ * { entityId: restaurant2Id, value: 3.8 },
32
+ * ],
33
+ * });
34
+ * ```
35
+ *
36
+ * @param params – {@link CreateRankParams}
37
+ * @returns – {@link CreateRankResult}
38
+ * @throws Will throw an error if any provided ID is invalid
39
+ * @throws Will throw an error if any entityId is duplicated in votes
40
+ */
41
+ export declare const createRank: ({ id: providedId, name, description, rankType, votes, }: CreateRankParams) => CreateRankResult;
42
+ //# sourceMappingURL=create-rank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rank.d.ts","sourceRoot":"","sources":["../../../src/ranks/create-rank.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAgB,MAAM,YAAY,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,UAAU,GAAI,yDAMxB,gBAAgB,KAAG,gBA2GrB,CAAC"}
@@ -0,0 +1,139 @@
1
+ import { generateNJitteredKeysBetween } from 'fractional-indexing-jittered';
2
+ 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';
3
+ import { serializeNumber } from '../graph/serialize.js';
4
+ import { Id } from '../id.js';
5
+ import { assertValid, generate } from '../id-utils.js';
6
+ /**
7
+ * Creates a rank entity with the given name, description, rankType, and votes.
8
+ * All IDs passed to this function are validated. If any invalid ID is provided,
9
+ * the function will throw an error.
10
+ *
11
+ * For ORDINAL ranks, the position is derived from the array order and fractional
12
+ * indexing strings are generated internally.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // Create an ordinal rank (ordered list) - position derived from array order
17
+ * const { id, ops, voteIds } = createRank({
18
+ * id: rankId, // optional, will be generated if not provided
19
+ * name: 'My Favorite Movies',
20
+ * description: 'A ranked list of my favorite movies', // optional
21
+ * rankType: 'ORDINAL',
22
+ * votes: [
23
+ * { entityId: movie1Id }, // 1st place
24
+ * { entityId: movie2Id }, // 2nd place
25
+ * { entityId: movie3Id }, // 3rd place
26
+ * ],
27
+ * });
28
+ *
29
+ * // Create a weighted rank (scored list)
30
+ * const { id, ops, voteIds } = createRank({
31
+ * name: 'Restaurant Ratings',
32
+ * rankType: 'WEIGHTED',
33
+ * votes: [
34
+ * { entityId: restaurant1Id, value: 4.5 }, // numeric score
35
+ * { entityId: restaurant2Id, value: 3.8 },
36
+ * ],
37
+ * });
38
+ * ```
39
+ *
40
+ * @param params – {@link CreateRankParams}
41
+ * @returns – {@link CreateRankResult}
42
+ * @throws Will throw an error if any provided ID is invalid
43
+ * @throws Will throw an error if any entityId is duplicated in votes
44
+ */
45
+ export const createRank = ({ id: providedId, name, description, rankType, votes, }) => {
46
+ // Validate all input IDs
47
+ if (providedId) {
48
+ assertValid(providedId, '`id` in `createRank`');
49
+ }
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);
61
+ }
62
+ const id = providedId ?? generate();
63
+ const ops = [];
64
+ const voteIds = [];
65
+ // Create rank entity values
66
+ const rankValues = [
67
+ {
68
+ property: NAME_PROPERTY,
69
+ value: name,
70
+ },
71
+ {
72
+ property: RANK_TYPE_PROPERTY,
73
+ value: rankType,
74
+ },
75
+ ];
76
+ if (description) {
77
+ rankValues.push({
78
+ property: DESCRIPTION_PROPERTY,
79
+ value: description,
80
+ });
81
+ }
82
+ // Create UPDATE_ENTITY op for the rank
83
+ ops.push({
84
+ type: 'UPDATE_ENTITY',
85
+ entity: {
86
+ id: Id(id),
87
+ values: rankValues,
88
+ },
89
+ });
90
+ // Create relation linking rank to RANK_TYPE (type relation)
91
+ ops.push({
92
+ type: 'CREATE_RELATION',
93
+ relation: {
94
+ id: generate(),
95
+ entity: generate(),
96
+ fromEntity: Id(id),
97
+ toEntity: RANK_TYPE,
98
+ type: TYPES_PROPERTY,
99
+ },
100
+ });
101
+ // Generate fractional indices for ordinal ranks
102
+ const fractionalIndices = rankType === 'ORDINAL' ? generateNJitteredKeysBetween(null, null, votes.length) : [];
103
+ // Create votes
104
+ votes.forEach((vote, i) => {
105
+ const voteEntityId = generate();
106
+ const relationId = generate();
107
+ voteIds.push(voteEntityId);
108
+ // Create relation from rank to voted entity
109
+ ops.push({
110
+ type: 'CREATE_RELATION',
111
+ relation: {
112
+ id: relationId,
113
+ entity: voteEntityId,
114
+ fromEntity: Id(id),
115
+ toEntity: Id(vote.entityId),
116
+ type: RANK_VOTES_RELATION_TYPE,
117
+ },
118
+ });
119
+ // Create vote entity with the appropriate value property
120
+ const voteValue = rankType === 'ORDINAL'
121
+ ? {
122
+ property: VOTE_ORDINAL_VALUE_PROPERTY,
123
+ value: fractionalIndices[i],
124
+ }
125
+ : {
126
+ property: VOTE_WEIGHTED_VALUE_PROPERTY,
127
+ value: serializeNumber(vote.value),
128
+ };
129
+ ops.push({
130
+ type: 'UPDATE_ENTITY',
131
+ entity: {
132
+ id: voteEntityId,
133
+ values: [voteValue],
134
+ },
135
+ });
136
+ });
137
+ return { id: Id(id), ops, voteIds };
138
+ };
139
+ //# sourceMappingURL=create-rank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rank.js","sourceRoot":"","sources":["../../../src/ranks/create-rank.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-rank.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rank.test.d.ts","sourceRoot":"","sources":["../../../src/ranks/create-rank.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ 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';
3
+ import { Id, isValid } from '../id.js';
4
+ import { createRank } from './create-rank.js';
5
+ describe('createRank', () => {
6
+ const movie1Id = Id('f47ac10b-58cc-4372-a567-0e02b2c3d479');
7
+ const movie2Id = Id('550e8400-e29b-41d4-a716-446655440000');
8
+ const movie3Id = Id('6ba7b810-9dad-11d1-80b4-00c04fd430c8');
9
+ describe('ordinal ranks', () => {
10
+ it('creates a basic ordinal rank with one vote', () => {
11
+ const rank = createRank({
12
+ name: 'My Favorite Movie',
13
+ rankType: 'ORDINAL',
14
+ votes: [{ entityId: movie1Id }],
15
+ });
16
+ expect(rank).toBeDefined();
17
+ expect(typeof rank.id).toBe('string');
18
+ expect(rank.ops).toBeDefined();
19
+ expect(rank.voteIds).toHaveLength(1);
20
+ // 1 UPDATE_ENTITY (rank) + 1 CREATE_RELATION (type) + 1 CREATE_RELATION (vote) + 1 UPDATE_ENTITY (vote value)
21
+ expect(rank.ops).toHaveLength(4);
22
+ // Check rank entity creation
23
+ expect(rank.ops[0]).toMatchObject({
24
+ type: 'UPDATE_ENTITY',
25
+ entity: {
26
+ id: rank.id,
27
+ values: expect.arrayContaining([
28
+ { property: NAME_PROPERTY, value: 'My Favorite Movie' },
29
+ { property: RANK_TYPE_PROPERTY, value: 'ORDINAL' },
30
+ ]),
31
+ },
32
+ });
33
+ // Check type relation to RANK_TYPE
34
+ expect(rank.ops[1]).toMatchObject({
35
+ type: 'CREATE_RELATION',
36
+ relation: {
37
+ fromEntity: rank.id,
38
+ toEntity: RANK_TYPE,
39
+ type: TYPES_PROPERTY,
40
+ },
41
+ });
42
+ // Check vote relation
43
+ expect(rank.ops[2]).toMatchObject({
44
+ type: 'CREATE_RELATION',
45
+ relation: {
46
+ fromEntity: rank.id,
47
+ toEntity: movie1Id,
48
+ type: RANK_VOTES_RELATION_TYPE,
49
+ },
50
+ });
51
+ // Check vote entity with ordinal value
52
+ expect(rank.ops[3]).toMatchObject({
53
+ type: 'UPDATE_ENTITY',
54
+ entity: {
55
+ id: rank.voteIds[0],
56
+ values: [
57
+ {
58
+ property: VOTE_ORDINAL_VALUE_PROPERTY,
59
+ value: expect.any(String), // fractional index
60
+ },
61
+ ],
62
+ },
63
+ });
64
+ });
65
+ it('creates an ordinal rank with multiple votes in order', () => {
66
+ const rank = createRank({
67
+ name: 'Top 3 Movies',
68
+ rankType: 'ORDINAL',
69
+ votes: [{ entityId: movie1Id }, { entityId: movie2Id }, { entityId: movie3Id }],
70
+ });
71
+ expect(rank.voteIds).toHaveLength(3);
72
+ // 1 UPDATE_ENTITY + 1 type relation + 3 vote relations + 3 vote entities = 8 ops
73
+ expect(rank.ops).toHaveLength(8);
74
+ // Verify fractional indices are in ascending order
75
+ const ordinalValue1 = rank.ops[3].entity.values[0]?.value;
76
+ const ordinalValue2 = rank.ops[5].entity.values[0]?.value;
77
+ const ordinalValue3 = rank.ops[7].entity.values[0]?.value;
78
+ expect(ordinalValue1 && ordinalValue2 && ordinalValue1 < ordinalValue2).toBe(true);
79
+ expect(ordinalValue2 && ordinalValue3 && ordinalValue2 < ordinalValue3).toBe(true);
80
+ });
81
+ it('creates an ordinal rank with optional description', () => {
82
+ const rank = createRank({
83
+ name: 'My Movies',
84
+ description: 'A ranked list of my favorite movies',
85
+ rankType: 'ORDINAL',
86
+ votes: [{ entityId: movie1Id }],
87
+ });
88
+ expect(rank.ops[0]).toMatchObject({
89
+ type: 'UPDATE_ENTITY',
90
+ entity: {
91
+ id: rank.id,
92
+ values: expect.arrayContaining([
93
+ { property: NAME_PROPERTY, value: 'My Movies' },
94
+ { property: RANK_TYPE_PROPERTY, value: 'ORDINAL' },
95
+ { property: DESCRIPTION_PROPERTY, value: 'A ranked list of my favorite movies' },
96
+ ]),
97
+ },
98
+ });
99
+ });
100
+ });
101
+ describe('weighted ranks', () => {
102
+ it('creates a basic weighted rank with one vote', () => {
103
+ const rank = createRank({
104
+ name: 'Restaurant Rating',
105
+ rankType: 'WEIGHTED',
106
+ votes: [{ entityId: movie1Id, value: 4.5 }],
107
+ });
108
+ expect(rank).toBeDefined();
109
+ expect(rank.voteIds).toHaveLength(1);
110
+ expect(rank.ops).toHaveLength(4);
111
+ // Check rank entity has WEIGHTED type
112
+ expect(rank.ops[0]).toMatchObject({
113
+ type: 'UPDATE_ENTITY',
114
+ entity: {
115
+ values: expect.arrayContaining([{ property: RANK_TYPE_PROPERTY, value: 'WEIGHTED' }]),
116
+ },
117
+ });
118
+ // Check vote entity with weighted value (serialized as string)
119
+ expect(rank.ops[3]).toMatchObject({
120
+ type: 'UPDATE_ENTITY',
121
+ entity: {
122
+ id: rank.voteIds[0],
123
+ values: [
124
+ {
125
+ property: VOTE_WEIGHTED_VALUE_PROPERTY,
126
+ value: '4.5', // serialized number
127
+ },
128
+ ],
129
+ },
130
+ });
131
+ });
132
+ it('creates a weighted rank with multiple votes', () => {
133
+ const rank = createRank({
134
+ name: 'Movie Scores',
135
+ rankType: 'WEIGHTED',
136
+ votes: [
137
+ { entityId: movie1Id, value: 9.2 },
138
+ { entityId: movie2Id, value: 8.5 },
139
+ { entityId: movie3Id, value: 7.8 },
140
+ ],
141
+ });
142
+ expect(rank.voteIds).toHaveLength(3);
143
+ expect(rank.ops).toHaveLength(8);
144
+ // Verify weighted values are correct
145
+ expect(rank.ops[3]).toMatchObject({
146
+ type: 'UPDATE_ENTITY',
147
+ entity: {
148
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '9.2' }],
149
+ },
150
+ });
151
+ expect(rank.ops[5]).toMatchObject({
152
+ type: 'UPDATE_ENTITY',
153
+ entity: {
154
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '8.5' }],
155
+ },
156
+ });
157
+ expect(rank.ops[7]).toMatchObject({
158
+ type: 'UPDATE_ENTITY',
159
+ entity: {
160
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '7.8' }],
161
+ },
162
+ });
163
+ });
164
+ it('handles integer weighted values', () => {
165
+ const rank = createRank({
166
+ name: 'Star Ratings',
167
+ rankType: 'WEIGHTED',
168
+ votes: [{ entityId: movie1Id, value: 5 }],
169
+ });
170
+ expect(rank.ops[3]).toMatchObject({
171
+ type: 'UPDATE_ENTITY',
172
+ entity: {
173
+ values: [{ property: VOTE_WEIGHTED_VALUE_PROPERTY, value: '5' }],
174
+ },
175
+ });
176
+ });
177
+ });
178
+ describe('provided id', () => {
179
+ it('uses provided id when specified', () => {
180
+ const providedId = Id('b1dc6e5c-63e1-43ba-b3d4-755b251a4ea1');
181
+ const rank = createRank({
182
+ id: providedId,
183
+ name: 'My Rank',
184
+ rankType: 'ORDINAL',
185
+ votes: [{ entityId: movie1Id }],
186
+ });
187
+ expect(rank.id).toBe(providedId);
188
+ });
189
+ it('generates id when not provided', () => {
190
+ const rank = createRank({
191
+ name: 'My Rank',
192
+ rankType: 'ORDINAL',
193
+ votes: [{ entityId: movie1Id }],
194
+ });
195
+ expect(typeof rank.id).toBe('string');
196
+ expect(isValid(rank.id)).toBe(true);
197
+ });
198
+ });
199
+ describe('error handling', () => {
200
+ it('throws an error if the provided id is invalid', () => {
201
+ expect(() => createRank({
202
+ id: 'invalid',
203
+ name: 'My Rank',
204
+ rankType: 'ORDINAL',
205
+ votes: [{ entityId: movie1Id }],
206
+ })).toThrow('Invalid id: "invalid" for `id` in `createRank`');
207
+ });
208
+ it('throws an error if a vote entityId is invalid', () => {
209
+ expect(() => createRank({
210
+ name: 'My Rank',
211
+ rankType: 'ORDINAL',
212
+ votes: [{ entityId: 'invalid-entity-id' }],
213
+ })).toThrow('Invalid id: "invalid-entity-id" for `entityId` in `votes` in `createRank`');
214
+ });
215
+ it('throws an error if duplicate entity IDs are in votes', () => {
216
+ expect(() => createRank({
217
+ name: 'My Rank',
218
+ rankType: 'ORDINAL',
219
+ votes: [{ entityId: movie1Id }, { entityId: movie2Id }, { entityId: movie1Id }],
220
+ })).toThrow(`Duplicate entityId in votes: "${movie1Id}". Each entity can only be voted once per rank.`);
221
+ });
222
+ it('throws an error for duplicate entity IDs in weighted ranks', () => {
223
+ expect(() => createRank({
224
+ name: 'My Scores',
225
+ rankType: 'WEIGHTED',
226
+ votes: [
227
+ { entityId: movie1Id, value: 5 },
228
+ { entityId: movie1Id, value: 3 },
229
+ ],
230
+ })).toThrow(`Duplicate entityId in votes: "${movie1Id}". Each entity can only be voted once per rank.`);
231
+ });
232
+ });
233
+ describe('empty votes', () => {
234
+ it('creates a rank with no votes', () => {
235
+ const rank = createRank({
236
+ name: 'Empty Rank',
237
+ rankType: 'ORDINAL',
238
+ votes: [],
239
+ });
240
+ expect(rank.voteIds).toHaveLength(0);
241
+ // Only UPDATE_ENTITY (rank) + CREATE_RELATION (type)
242
+ expect(rank.ops).toHaveLength(2);
243
+ });
244
+ });
245
+ });
246
+ //# sourceMappingURL=create-rank.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rank.test.js","sourceRoot":"","sources":["../../../src/ranks/create-rank.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACd,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,EAAE,CAAC,sCAAsC,CAAC,CAAC;IAE5D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAErC,8GAA8G;YAC9G,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjC,6BAA6B;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;wBAC7B,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE;wBACvD,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;qBACnD,CAAC;iBACH;aACF,CAAC,CAAC;YAEH,mCAAmC;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE;oBACR,UAAU,EAAE,IAAI,CAAC,EAAE;oBACnB,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,cAAc;iBACrB;aACF,CAAC,CAAC;YAEH,sBAAsB;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE;oBACR,UAAU,EAAE,IAAI,CAAC,EAAE;oBACnB,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,wBAAwB;iBAC/B;aACF,CAAC,CAAC;YAEH,uCAAuC;YACvC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnB,MAAM,EAAE;wBACN;4BACE,QAAQ,EAAE,2BAA2B;4BACrC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,mBAAmB;yBAC/C;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAChF,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,iFAAiF;YACjF,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjC,mDAAmD;YACnD,MAAM,aAAa,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAiD,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAC3G,MAAM,aAAa,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAiD,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAC3G,MAAM,aAAa,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAiD,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAE3G,MAAM,CAAC,aAAa,IAAI,aAAa,IAAI,aAAa,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnF,MAAM,CAAC,aAAa,IAAI,aAAa,IAAI,aAAa,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,qCAAqC;gBAClD,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;wBAC7B,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;wBAC/C,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;wBAClD,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,qCAAqC,EAAE;qBACjF,CAAC;iBACH;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;aAC5C,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjC,sCAAsC;YACtC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;iBACtF;aACF,CAAC,CAAC;YAEH,+DAA+D;YAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnB,MAAM,EAAE;wBACN;4BACE,QAAQ,EAAE,4BAA4B;4BACtC,KAAK,EAAE,KAAK,EAAE,oBAAoB;yBACnC;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE;oBACL,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAClC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAClC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;iBACnC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjC,qCAAqC;YACrC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;iBACnE;aACF,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;iBACnE;aACF,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;iBACnE;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAC1C,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;iBACjE;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,UAAU,GAAG,EAAE,CAAC,sCAAsC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,GAAG,EAAE,CACV,UAAU,CAAC;gBACT,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC,CACH,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,GAAG,EAAE,CACV,UAAU,CAAC;gBACT,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;aAC3C,CAAC,CACH,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,GAAG,EAAE,CACV,UAAU,CAAC;gBACT,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAChF,CAAC,CACH,CAAC,OAAO,CAAC,iCAAiC,QAAQ,iDAAiD,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,CAAC,GAAG,EAAE,CACV,UAAU,CAAC;gBACT,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE;oBACL,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;oBAChC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;iBACjC;aACF,CAAC,CACH,CAAC,OAAO,CAAC,iCAAiC,QAAQ,iDAAiD,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,qDAAqD;YACrD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './create-rank.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ranks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './create-rank.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ranks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { Id } from '../id.js';
2
+ import type { CreateResult } from '../types.js';
3
+ export type RankType = 'ORDINAL' | 'WEIGHTED';
4
+ /**
5
+ * Vote with ordinal positioning.
6
+ * Position is derived from the array order; fractional indexing is generated internally.
7
+ */
8
+ export type VoteOrdinal = {
9
+ entityId: Id | string;
10
+ };
11
+ /**
12
+ * Vote with weighted numeric scoring.
13
+ * Used for ranked lists where the magnitude of the score matters.
14
+ */
15
+ export type VoteWeighted = {
16
+ entityId: Id | string;
17
+ value: number;
18
+ };
19
+ export type Vote = VoteOrdinal | VoteWeighted;
20
+ export type CreateRankParams = {
21
+ id?: Id | string;
22
+ name: string;
23
+ description?: string;
24
+ rankType: RankType;
25
+ votes: Vote[];
26
+ };
27
+ export type CreateRankResult = CreateResult & {
28
+ voteIds: Id[];
29
+ };
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ranks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,WAAW,GAAG,YAAY,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C,OAAO,EAAE,EAAE,EAAE,CAAC;CACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ranks/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphprotocol/grc-20",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "license": "MIT",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",