bitbadgesjs-sdk 0.31.1 → 0.31.2

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 (99) hide show
  1. package/dist/cjs/api-indexer/BitBadgesCollection.d.ts +1 -0
  2. package/dist/cjs/api-indexer/BitBadgesCollection.d.ts.map +1 -1
  3. package/dist/cjs/api-indexer/BitBadgesCollection.js +4 -1
  4. package/dist/cjs/api-indexer/BitBadgesCollection.js.map +1 -1
  5. package/dist/cjs/core/approval-utils.spec.d.ts +2 -0
  6. package/dist/cjs/core/approval-utils.spec.d.ts.map +1 -0
  7. package/dist/cjs/core/approval-utils.spec.js +240 -0
  8. package/dist/cjs/core/approval-utils.spec.js.map +1 -0
  9. package/dist/cjs/core/approvals.spec.js +96 -0
  10. package/dist/cjs/core/approvals.spec.js.map +1 -1
  11. package/dist/cjs/core/bids.spec.d.ts +2 -0
  12. package/dist/cjs/core/bids.spec.d.ts.map +1 -0
  13. package/dist/cjs/core/bids.spec.js +201 -0
  14. package/dist/cjs/core/bids.spec.js.map +1 -0
  15. package/dist/cjs/core/blockin.spec.d.ts +2 -0
  16. package/dist/cjs/core/blockin.spec.d.ts.map +1 -0
  17. package/dist/cjs/core/blockin.spec.js +163 -0
  18. package/dist/cjs/core/blockin.spec.js.map +1 -0
  19. package/dist/cjs/core/coin.spec.d.ts +2 -0
  20. package/dist/cjs/core/coin.spec.d.ts.map +1 -0
  21. package/dist/cjs/core/coin.spec.js +80 -0
  22. package/dist/cjs/core/coin.spec.js.map +1 -0
  23. package/dist/cjs/core/cosmos-wrappers.spec.d.ts +2 -0
  24. package/dist/cjs/core/cosmos-wrappers.spec.d.ts.map +1 -0
  25. package/dist/cjs/core/cosmos-wrappers.spec.js +623 -0
  26. package/dist/cjs/core/cosmos-wrappers.spec.js.map +1 -0
  27. package/dist/cjs/core/managersplitter.spec.d.ts +2 -0
  28. package/dist/cjs/core/managersplitter.spec.d.ts.map +1 -0
  29. package/dist/cjs/core/managersplitter.spec.js +170 -0
  30. package/dist/cjs/core/managersplitter.spec.js.map +1 -0
  31. package/dist/cjs/core/overlaps.spec.js +201 -0
  32. package/dist/cjs/core/overlaps.spec.js.map +1 -1
  33. package/dist/cjs/core/permission-utils.spec.d.ts +2 -0
  34. package/dist/cjs/core/permission-utils.spec.d.ts.map +1 -0
  35. package/dist/cjs/core/permission-utils.spec.js +192 -0
  36. package/dist/cjs/core/permission-utils.spec.js.map +1 -0
  37. package/dist/cjs/core/permissions.spec.js +1069 -0
  38. package/dist/cjs/core/permissions.spec.js.map +1 -1
  39. package/dist/cjs/core/transfers.spec.js +524 -0
  40. package/dist/cjs/core/transfers.spec.js.map +1 -1
  41. package/dist/cjs/core/userBalances.spec.d.ts +2 -0
  42. package/dist/cjs/core/userBalances.spec.d.ts.map +1 -0
  43. package/dist/cjs/core/userBalances.spec.js +184 -0
  44. package/dist/cjs/core/userBalances.spec.js.map +1 -0
  45. package/dist/cjs/core/validate-utils.spec.d.ts +2 -0
  46. package/dist/cjs/core/validate-utils.spec.d.ts.map +1 -0
  47. package/dist/cjs/core/validate-utils.spec.js +202 -0
  48. package/dist/cjs/core/validate-utils.spec.js.map +1 -0
  49. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
  50. package/dist/esm/api-indexer/BitBadgesCollection.d.ts +1 -0
  51. package/dist/esm/api-indexer/BitBadgesCollection.d.ts.map +1 -1
  52. package/dist/esm/api-indexer/BitBadgesCollection.js +4 -1
  53. package/dist/esm/api-indexer/BitBadgesCollection.js.map +1 -1
  54. package/dist/esm/core/approval-utils.spec.d.ts +2 -0
  55. package/dist/esm/core/approval-utils.spec.d.ts.map +1 -0
  56. package/dist/esm/core/approval-utils.spec.js +238 -0
  57. package/dist/esm/core/approval-utils.spec.js.map +1 -0
  58. package/dist/esm/core/approvals.spec.js +97 -1
  59. package/dist/esm/core/approvals.spec.js.map +1 -1
  60. package/dist/esm/core/bids.spec.d.ts +2 -0
  61. package/dist/esm/core/bids.spec.d.ts.map +1 -0
  62. package/dist/esm/core/bids.spec.js +199 -0
  63. package/dist/esm/core/bids.spec.js.map +1 -0
  64. package/dist/esm/core/blockin.spec.d.ts +2 -0
  65. package/dist/esm/core/blockin.spec.d.ts.map +1 -0
  66. package/dist/esm/core/blockin.spec.js +161 -0
  67. package/dist/esm/core/blockin.spec.js.map +1 -0
  68. package/dist/esm/core/coin.spec.d.ts +2 -0
  69. package/dist/esm/core/coin.spec.d.ts.map +1 -0
  70. package/dist/esm/core/coin.spec.js +78 -0
  71. package/dist/esm/core/coin.spec.js.map +1 -0
  72. package/dist/esm/core/cosmos-wrappers.spec.d.ts +2 -0
  73. package/dist/esm/core/cosmos-wrappers.spec.d.ts.map +1 -0
  74. package/dist/esm/core/cosmos-wrappers.spec.js +621 -0
  75. package/dist/esm/core/cosmos-wrappers.spec.js.map +1 -0
  76. package/dist/esm/core/managersplitter.spec.d.ts +2 -0
  77. package/dist/esm/core/managersplitter.spec.d.ts.map +1 -0
  78. package/dist/esm/core/managersplitter.spec.js +168 -0
  79. package/dist/esm/core/managersplitter.spec.js.map +1 -0
  80. package/dist/esm/core/overlaps.spec.js +202 -1
  81. package/dist/esm/core/overlaps.spec.js.map +1 -1
  82. package/dist/esm/core/permission-utils.spec.d.ts +2 -0
  83. package/dist/esm/core/permission-utils.spec.d.ts.map +1 -0
  84. package/dist/esm/core/permission-utils.spec.js +190 -0
  85. package/dist/esm/core/permission-utils.spec.js.map +1 -0
  86. package/dist/esm/core/permissions.spec.js +1069 -0
  87. package/dist/esm/core/permissions.spec.js.map +1 -1
  88. package/dist/esm/core/transfers.spec.js +525 -1
  89. package/dist/esm/core/transfers.spec.js.map +1 -1
  90. package/dist/esm/core/userBalances.spec.d.ts +2 -0
  91. package/dist/esm/core/userBalances.spec.d.ts.map +1 -0
  92. package/dist/esm/core/userBalances.spec.js +182 -0
  93. package/dist/esm/core/userBalances.spec.js.map +1 -0
  94. package/dist/esm/core/validate-utils.spec.d.ts +2 -0
  95. package/dist/esm/core/validate-utils.spec.d.ts.map +1 -0
  96. package/dist/esm/core/validate-utils.spec.js +200 -0
  97. package/dist/esm/core/validate-utils.spec.js.map +1 -0
  98. package/dist/esm/tsconfig-esm.build.tsbuildinfo +1 -1
  99. package/package.json +4 -5
@@ -0,0 +1,161 @@
1
+ import { SiwbbChallenge, generateBitBadgesAuthUrl } from './blockin.js';
2
+ import { SupportedChain } from '../common/types.js';
3
+ BigInt.prototype.toJSON = function () {
4
+ return this.toString();
5
+ };
6
+ describe('SiwbbChallenge', () => {
7
+ describe('constructor', () => {
8
+ it('should construct with minimal data (no ownershipRequirements)', () => {
9
+ const challenge = new SiwbbChallenge({
10
+ address: '0xabc123',
11
+ chain: SupportedChain.ETH,
12
+ bitbadgesAddress: 'bb1abc'
13
+ });
14
+ expect(challenge.address).toBe('0xabc123');
15
+ expect(challenge.chain).toBe(SupportedChain.ETH);
16
+ expect(challenge.bitbadgesAddress).toBe('bb1abc');
17
+ expect(challenge.ownershipRequirements).toBeUndefined();
18
+ expect(challenge.verificationResponse).toBeUndefined();
19
+ });
20
+ it('should construct with verificationResponse', () => {
21
+ const challenge = new SiwbbChallenge({
22
+ address: '0xabc123',
23
+ chain: SupportedChain.ETH,
24
+ bitbadgesAddress: 'bb1abc',
25
+ verificationResponse: { success: true }
26
+ });
27
+ expect(challenge.verificationResponse?.success).toBe(true);
28
+ expect(challenge.verificationResponse?.errorMessage).toBeUndefined();
29
+ });
30
+ it('should construct with verificationResponse containing error', () => {
31
+ const challenge = new SiwbbChallenge({
32
+ address: '0xabc123',
33
+ chain: SupportedChain.ETH,
34
+ bitbadgesAddress: 'bb1abc',
35
+ verificationResponse: { success: false, errorMessage: 'Asset not owned' }
36
+ });
37
+ expect(challenge.verificationResponse?.success).toBe(false);
38
+ expect(challenge.verificationResponse?.errorMessage).toBe('Asset not owned');
39
+ });
40
+ it('should construct with $and ownershipRequirements', () => {
41
+ const challenge = new SiwbbChallenge({
42
+ address: '0xabc123',
43
+ chain: SupportedChain.ETH,
44
+ bitbadgesAddress: 'bb1abc',
45
+ ownershipRequirements: {
46
+ $and: [
47
+ {
48
+ assets: [],
49
+ options: { numMatchesForVerification: 0n }
50
+ }
51
+ ]
52
+ }
53
+ });
54
+ expect(challenge.ownershipRequirements).toBeDefined();
55
+ });
56
+ it('should construct with $or ownershipRequirements', () => {
57
+ const challenge = new SiwbbChallenge({
58
+ address: '0xabc123',
59
+ chain: SupportedChain.ETH,
60
+ bitbadgesAddress: 'bb1abc',
61
+ ownershipRequirements: {
62
+ $or: [
63
+ {
64
+ assets: [],
65
+ options: { numMatchesForVerification: 0n }
66
+ }
67
+ ]
68
+ }
69
+ });
70
+ expect(challenge.ownershipRequirements).toBeDefined();
71
+ });
72
+ it('should construct with direct OwnershipRequirements (no $and/$or)', () => {
73
+ const challenge = new SiwbbChallenge({
74
+ address: '0xabc123',
75
+ chain: SupportedChain.ETH,
76
+ bitbadgesAddress: 'bb1abc',
77
+ ownershipRequirements: {
78
+ assets: [],
79
+ options: { numMatchesForVerification: 0n }
80
+ }
81
+ });
82
+ expect(challenge.ownershipRequirements).toBeDefined();
83
+ });
84
+ });
85
+ describe('convert', () => {
86
+ it('should convert number types', () => {
87
+ const challenge = new SiwbbChallenge({
88
+ address: '0xabc123',
89
+ chain: SupportedChain.ETH,
90
+ bitbadgesAddress: 'bb1abc'
91
+ });
92
+ const converted = challenge.convert(String);
93
+ expect(converted.address).toBe('0xabc123');
94
+ expect(converted.chain).toBe(SupportedChain.ETH);
95
+ });
96
+ });
97
+ });
98
+ describe('generateBitBadgesAuthUrl', () => {
99
+ it('should generate URL with client_id', () => {
100
+ const url = generateBitBadgesAuthUrl({ client_id: 'my-app' });
101
+ expect(url).toContain('https://bitbadges.io/siwbb/authorize?');
102
+ expect(url).toContain('client_id=my-app');
103
+ });
104
+ it('should include redirect_uri when provided', () => {
105
+ const url = generateBitBadgesAuthUrl({
106
+ client_id: 'my-app',
107
+ redirect_uri: 'https://example.com/callback'
108
+ });
109
+ expect(url).toContain('redirect_uri=https://example.com/callback');
110
+ });
111
+ it('should include state when provided', () => {
112
+ const url = generateBitBadgesAuthUrl({
113
+ client_id: 'my-app',
114
+ state: 'random-state-123'
115
+ });
116
+ expect(url).toContain('state=random-state-123');
117
+ });
118
+ it('should include scope when provided', () => {
119
+ const url = generateBitBadgesAuthUrl({
120
+ client_id: 'my-app',
121
+ scope: 'completeClaims,approveSignInWithBitBadges'
122
+ });
123
+ expect(url).toContain('scope=completeClaims,approveSignInWithBitBadges');
124
+ });
125
+ it('should omit falsy values', () => {
126
+ const url = generateBitBadgesAuthUrl({
127
+ client_id: 'my-app',
128
+ redirect_uri: undefined,
129
+ state: undefined
130
+ });
131
+ expect(url).not.toContain('redirect_uri');
132
+ expect(url).not.toContain('state');
133
+ });
134
+ it('should JSON-encode object values', () => {
135
+ const url = generateBitBadgesAuthUrl({
136
+ client_id: 'my-app',
137
+ claimId: 'claim-1'
138
+ });
139
+ expect(url).toContain('claimId=claim-1');
140
+ });
141
+ it('should include all params together', () => {
142
+ const url = generateBitBadgesAuthUrl({
143
+ client_id: 'app-id',
144
+ redirect_uri: 'https://example.com/cb',
145
+ state: 'abc',
146
+ scope: 'read'
147
+ });
148
+ expect(url).toContain('client_id=app-id');
149
+ expect(url).toContain('redirect_uri=https://example.com/cb');
150
+ expect(url).toContain('state=abc');
151
+ expect(url).toContain('scope=read');
152
+ });
153
+ it('should URL-encode object params', () => {
154
+ const url = generateBitBadgesAuthUrl({
155
+ client_id: 'my-app',
156
+ hideIfAlreadyClaimed: true
157
+ });
158
+ expect(url).toContain('hideIfAlreadyClaimed=true');
159
+ });
160
+ });
161
+ //# sourceMappingURL=blockin.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockin.spec.js","sourceRoot":"","sources":["../../../src/core/blockin.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=coin.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coin.spec.d.ts","sourceRoot":"","sources":["../../../src/core/coin.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { CosmosCoin } from './coin.js';
2
+ BigInt.prototype.toJSON = function () {
3
+ return this.toString();
4
+ };
5
+ describe('CosmosCoin', () => {
6
+ describe('constructor', () => {
7
+ it('should construct with bigint amount', () => {
8
+ const coin = new CosmosCoin({ amount: 1000000n, denom: 'ubadge' });
9
+ expect(coin.amount).toBe(1000000n);
10
+ expect(coin.denom).toBe('ubadge');
11
+ });
12
+ it('should construct with string amount', () => {
13
+ const coin = new CosmosCoin({ amount: '500', denom: 'uatom' });
14
+ expect(coin.amount).toBe('500');
15
+ expect(coin.denom).toBe('uatom');
16
+ });
17
+ it('should construct with number amount', () => {
18
+ const coin = new CosmosCoin({ amount: 42, denom: 'ustake' });
19
+ expect(coin.amount).toBe(42);
20
+ expect(coin.denom).toBe('ustake');
21
+ });
22
+ it('should construct with zero amount', () => {
23
+ const coin = new CosmosCoin({ amount: 0n, denom: 'ubadge' });
24
+ expect(coin.amount).toBe(0n);
25
+ });
26
+ });
27
+ describe('getNumberFieldNames', () => {
28
+ it('should return ["amount"]', () => {
29
+ const coin = new CosmosCoin({ amount: 1n, denom: 'ubadge' });
30
+ expect(coin.getNumberFieldNames()).toEqual(['amount']);
31
+ });
32
+ });
33
+ describe('convert', () => {
34
+ it('should convert bigint to string', () => {
35
+ const coin = new CosmosCoin({ amount: 1000000n, denom: 'ubadge' });
36
+ const stringCoin = coin.convert(String);
37
+ expect(stringCoin.amount).toBe('1000000');
38
+ expect(stringCoin.denom).toBe('ubadge');
39
+ });
40
+ it('should convert bigint to number', () => {
41
+ const coin = new CosmosCoin({ amount: 42n, denom: 'ubadge' });
42
+ const numCoin = coin.convert(Number);
43
+ expect(numCoin.amount).toBe(42);
44
+ expect(numCoin.denom).toBe('ubadge');
45
+ });
46
+ it('should convert string to bigint', () => {
47
+ const coin = new CosmosCoin({ amount: '999', denom: 'ubadge' });
48
+ const bigintCoin = coin.convert(BigInt);
49
+ expect(bigintCoin.amount).toBe(999n);
50
+ expect(bigintCoin.denom).toBe('ubadge');
51
+ });
52
+ });
53
+ describe('fromProto', () => {
54
+ it('should create CosmosCoin from proto data with BigInt converter', () => {
55
+ const proto = { amount: '5000000', denom: 'ubadge' };
56
+ const coin = CosmosCoin.fromProto(proto, BigInt);
57
+ expect(coin.amount).toBe(5000000n);
58
+ expect(coin.denom).toBe('ubadge');
59
+ });
60
+ it('should create CosmosCoin from proto data with Number converter', () => {
61
+ const proto = { amount: '123', denom: 'uatom' };
62
+ const coin = CosmosCoin.fromProto(proto, Number);
63
+ expect(coin.amount).toBe(123);
64
+ expect(coin.denom).toBe('uatom');
65
+ });
66
+ it('should handle zero amount from proto', () => {
67
+ const proto = { amount: '0', denom: 'ubadge' };
68
+ const coin = CosmosCoin.fromProto(proto, BigInt);
69
+ expect(coin.amount).toBe(0n);
70
+ });
71
+ it('should handle large amounts from proto', () => {
72
+ const proto = { amount: '18446744073709551615', denom: 'ubadge' };
73
+ const coin = CosmosCoin.fromProto(proto, BigInt);
74
+ expect(coin.amount).toBe(18446744073709551615n);
75
+ });
76
+ });
77
+ });
78
+ //# sourceMappingURL=coin.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coin.spec.js","sourceRoot":"","sources":["../../../src/core/coin.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cosmos-wrappers.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-wrappers.spec.d.ts","sourceRoot":"","sources":["../../../src/core/cosmos-wrappers.spec.ts"],"names":[],"mappings":""}