hive-stream 3.0.2 → 3.0.4

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 (202) hide show
  1. package/DOCUMENTATION.md +50 -2
  2. package/README.md +282 -4
  3. package/dist/adapters/base.adapter.d.ts +5 -0
  4. package/dist/adapters/base.adapter.js +9 -0
  5. package/dist/adapters/base.adapter.js.map +1 -1
  6. package/dist/adapters/mongodb.adapter.d.ts +6 -6
  7. package/dist/adapters/mongodb.adapter.js +36 -21
  8. package/dist/adapters/mongodb.adapter.js.map +1 -1
  9. package/dist/adapters/postgresql.adapter.d.ts +7 -0
  10. package/dist/adapters/postgresql.adapter.js +46 -19
  11. package/dist/adapters/postgresql.adapter.js.map +1 -1
  12. package/dist/adapters/sqlite.adapter.d.ts +4 -0
  13. package/dist/adapters/sqlite.adapter.js +10 -0
  14. package/dist/adapters/sqlite.adapter.js.map +1 -1
  15. package/dist/api.d.ts +13 -3
  16. package/dist/api.js +96 -62
  17. package/dist/api.js.map +1 -1
  18. package/dist/builders.d.ts +176 -0
  19. package/dist/builders.js +727 -0
  20. package/dist/builders.js.map +1 -0
  21. package/dist/config.d.ts +16 -1
  22. package/dist/config.js +95 -3
  23. package/dist/config.js.map +1 -1
  24. package/dist/contracts/auctionhouse.contract.d.ts +4 -0
  25. package/dist/contracts/auctionhouse.contract.js +234 -0
  26. package/dist/contracts/auctionhouse.contract.js.map +1 -0
  27. package/dist/contracts/booking.contract.d.ts +4 -0
  28. package/dist/contracts/booking.contract.js +225 -0
  29. package/dist/contracts/booking.contract.js.map +1 -0
  30. package/dist/contracts/bountyboard.contract.d.ts +4 -0
  31. package/dist/contracts/bountyboard.contract.js +233 -0
  32. package/dist/contracts/bountyboard.contract.js.map +1 -0
  33. package/dist/contracts/bundlemarketplace.contract.d.ts +4 -0
  34. package/dist/contracts/bundlemarketplace.contract.js +195 -0
  35. package/dist/contracts/bundlemarketplace.contract.js.map +1 -0
  36. package/dist/contracts/charitymatch.contract.d.ts +4 -0
  37. package/dist/contracts/charitymatch.contract.js +172 -0
  38. package/dist/contracts/charitymatch.contract.js.map +1 -0
  39. package/dist/contracts/coinflip.contract.js +25 -22
  40. package/dist/contracts/coinflip.contract.js.map +1 -1
  41. package/dist/contracts/crowdfund.contract.d.ts +4 -0
  42. package/dist/contracts/crowdfund.contract.js +290 -0
  43. package/dist/contracts/crowdfund.contract.js.map +1 -0
  44. package/dist/contracts/dcabot.contract.d.ts +4 -0
  45. package/dist/contracts/dcabot.contract.js +217 -0
  46. package/dist/contracts/dcabot.contract.js.map +1 -0
  47. package/dist/contracts/dice.contract.js +25 -22
  48. package/dist/contracts/dice.contract.js.map +1 -1
  49. package/dist/contracts/domainregistry.contract.d.ts +4 -0
  50. package/dist/contracts/domainregistry.contract.js +232 -0
  51. package/dist/contracts/domainregistry.contract.js.map +1 -0
  52. package/dist/contracts/exchange.contract.js +209 -168
  53. package/dist/contracts/exchange.contract.js.map +1 -1
  54. package/dist/contracts/fanclub.contract.d.ts +4 -0
  55. package/dist/contracts/fanclub.contract.js +193 -0
  56. package/dist/contracts/fanclub.contract.js.map +1 -0
  57. package/dist/contracts/giftcard.contract.d.ts +4 -0
  58. package/dist/contracts/giftcard.contract.js +158 -0
  59. package/dist/contracts/giftcard.contract.js.map +1 -0
  60. package/dist/contracts/grantrounds.contract.d.ts +4 -0
  61. package/dist/contracts/grantrounds.contract.js +265 -0
  62. package/dist/contracts/grantrounds.contract.js.map +1 -0
  63. package/dist/contracts/groupbuy.contract.d.ts +4 -0
  64. package/dist/contracts/groupbuy.contract.js +198 -0
  65. package/dist/contracts/groupbuy.contract.js.map +1 -0
  66. package/dist/contracts/helpers.d.ts +66 -0
  67. package/dist/contracts/helpers.js +166 -0
  68. package/dist/contracts/helpers.js.map +1 -0
  69. package/dist/contracts/insurancepool.contract.d.ts +4 -0
  70. package/dist/contracts/insurancepool.contract.js +281 -0
  71. package/dist/contracts/insurancepool.contract.js.map +1 -0
  72. package/dist/contracts/invoice.contract.d.ts +4 -0
  73. package/dist/contracts/invoice.contract.js +193 -0
  74. package/dist/contracts/invoice.contract.js.map +1 -0
  75. package/dist/contracts/launchpad.contract.d.ts +4 -0
  76. package/dist/contracts/launchpad.contract.js +225 -0
  77. package/dist/contracts/launchpad.contract.js.map +1 -0
  78. package/dist/contracts/lotto.contract.js +53 -37
  79. package/dist/contracts/lotto.contract.js.map +1 -1
  80. package/dist/contracts/multisigtreasury.contract.d.ts +4 -0
  81. package/dist/contracts/multisigtreasury.contract.js +245 -0
  82. package/dist/contracts/multisigtreasury.contract.js.map +1 -0
  83. package/dist/contracts/nft.contract.d.ts +1 -0
  84. package/dist/contracts/nft.contract.js +234 -195
  85. package/dist/contracts/nft.contract.js.map +1 -1
  86. package/dist/contracts/oraclebounty.contract.d.ts +4 -0
  87. package/dist/contracts/oraclebounty.contract.js +250 -0
  88. package/dist/contracts/oraclebounty.contract.js.map +1 -0
  89. package/dist/contracts/payroll.contract.d.ts +4 -0
  90. package/dist/contracts/payroll.contract.js +232 -0
  91. package/dist/contracts/payroll.contract.js.map +1 -0
  92. package/dist/contracts/paywall.contract.d.ts +4 -0
  93. package/dist/contracts/paywall.contract.js +185 -0
  94. package/dist/contracts/paywall.contract.js.map +1 -0
  95. package/dist/contracts/poll.contract.js +2 -0
  96. package/dist/contracts/poll.contract.js.map +1 -1
  97. package/dist/contracts/predictionmarket.contract.d.ts +4 -0
  98. package/dist/contracts/predictionmarket.contract.js +213 -0
  99. package/dist/contracts/predictionmarket.contract.js.map +1 -0
  100. package/dist/contracts/proposaltimelock.contract.d.ts +4 -0
  101. package/dist/contracts/proposaltimelock.contract.js +250 -0
  102. package/dist/contracts/proposaltimelock.contract.js.map +1 -0
  103. package/dist/contracts/questpass.contract.d.ts +4 -0
  104. package/dist/contracts/questpass.contract.js +214 -0
  105. package/dist/contracts/questpass.contract.js.map +1 -0
  106. package/dist/contracts/referral.contract.d.ts +4 -0
  107. package/dist/contracts/referral.contract.js +238 -0
  108. package/dist/contracts/referral.contract.js.map +1 -0
  109. package/dist/contracts/rental.contract.d.ts +4 -0
  110. package/dist/contracts/rental.contract.js +221 -0
  111. package/dist/contracts/rental.contract.js.map +1 -0
  112. package/dist/contracts/revenuesplit.contract.d.ts +4 -0
  113. package/dist/contracts/revenuesplit.contract.js +211 -0
  114. package/dist/contracts/revenuesplit.contract.js.map +1 -0
  115. package/dist/contracts/rps.contract.js +48 -20
  116. package/dist/contracts/rps.contract.js.map +1 -1
  117. package/dist/contracts/savings.contract.d.ts +4 -0
  118. package/dist/contracts/savings.contract.js +208 -0
  119. package/dist/contracts/savings.contract.js.map +1 -0
  120. package/dist/contracts/subscription.contract.d.ts +4 -0
  121. package/dist/contracts/subscription.contract.js +241 -0
  122. package/dist/contracts/subscription.contract.js.map +1 -0
  123. package/dist/contracts/sweepstakes.contract.d.ts +4 -0
  124. package/dist/contracts/sweepstakes.contract.js +209 -0
  125. package/dist/contracts/sweepstakes.contract.js.map +1 -0
  126. package/dist/contracts/ticketing.contract.d.ts +4 -0
  127. package/dist/contracts/ticketing.contract.js +185 -0
  128. package/dist/contracts/ticketing.contract.js.map +1 -0
  129. package/dist/contracts/tipjar.contract.js +2 -0
  130. package/dist/contracts/tipjar.contract.js.map +1 -1
  131. package/dist/contracts/token.contract.js +135 -125
  132. package/dist/contracts/token.contract.js.map +1 -1
  133. package/dist/index.d.ts +40 -0
  134. package/dist/index.js +72 -1
  135. package/dist/index.js.map +1 -1
  136. package/dist/metadata.d.ts +20 -0
  137. package/dist/metadata.js +320 -1
  138. package/dist/metadata.js.map +1 -1
  139. package/dist/providers/block-provider.d.ts +22 -0
  140. package/dist/providers/block-provider.js +3 -0
  141. package/dist/providers/block-provider.js.map +1 -0
  142. package/dist/providers/haf-client.d.ts +30 -0
  143. package/dist/providers/haf-client.js +119 -0
  144. package/dist/providers/haf-client.js.map +1 -0
  145. package/dist/providers/haf-provider.d.ts +49 -0
  146. package/dist/providers/haf-provider.js +256 -0
  147. package/dist/providers/haf-provider.js.map +1 -0
  148. package/dist/providers/hive-provider.d.ts +13 -0
  149. package/dist/providers/hive-provider.js +25 -0
  150. package/dist/providers/hive-provider.js.map +1 -0
  151. package/dist/providers/index.d.ts +4 -0
  152. package/dist/providers/index.js +21 -0
  153. package/dist/providers/index.js.map +1 -0
  154. package/dist/streamer.d.ts +65 -4
  155. package/dist/streamer.js +768 -72
  156. package/dist/streamer.js.map +1 -1
  157. package/dist/types/hive-stream.d.ts +317 -0
  158. package/dist/utils.d.ts +33 -0
  159. package/dist/utils.js +198 -2
  160. package/dist/utils.js.map +1 -1
  161. package/package.json +16 -1
  162. package/.claude/settings.local.json +0 -12
  163. package/.env.example +0 -3
  164. package/.travis.yml +0 -11
  165. package/AGENTS.md +0 -35
  166. package/CLAUDE.md +0 -75
  167. package/ecosystem.config.js +0 -17
  168. package/examples/contracts/README.md +0 -8
  169. package/examples/contracts/exchange.ts +0 -38
  170. package/examples/contracts/poll.ts +0 -21
  171. package/examples/contracts/rps.ts +0 -19
  172. package/examples/contracts/tipjar.ts +0 -19
  173. package/jest.config.js +0 -9
  174. package/test-contract-block.md +0 -19
  175. package/tests/actions.spec.ts +0 -252
  176. package/tests/adapters/actions-persistence.spec.ts +0 -144
  177. package/tests/adapters/postgresql.adapter.spec.ts +0 -127
  178. package/tests/adapters/sqlite.adapter.spec.ts +0 -181
  179. package/tests/config-input.spec.ts +0 -90
  180. package/tests/contracts/coinflip.contract.spec.ts +0 -94
  181. package/tests/contracts/dice.contract.spec.ts +0 -87
  182. package/tests/contracts/entrants.json +0 -729
  183. package/tests/contracts/exchange.contract.spec.ts +0 -84
  184. package/tests/contracts/lotto.contract.spec.ts +0 -59
  185. package/tests/contracts/nft.contract.spec.ts +0 -948
  186. package/tests/contracts/token.contract.spec.ts +0 -90
  187. package/tests/exchanges/coingecko.exchange.spec.ts +0 -169
  188. package/tests/exchanges/exchange.base.spec.ts +0 -246
  189. package/tests/helpers/mock-adapter.ts +0 -214
  190. package/tests/helpers/mock-fetch.ts +0 -165
  191. package/tests/hive-chain-features.spec.ts +0 -319
  192. package/tests/hive-rates.spec.ts +0 -443
  193. package/tests/integration/hive-rates.integration.spec.ts +0 -35
  194. package/tests/metadata.spec.ts +0 -63
  195. package/tests/setup.ts +0 -30
  196. package/tests/streamer-actions.spec.ts +0 -274
  197. package/tests/streamer.spec.ts +0 -342
  198. package/tests/types/rates.spec.ts +0 -216
  199. package/tests/utils.spec.ts +0 -113
  200. package/tsconfig.build.json +0 -4
  201. package/tslint.json +0 -21
  202. package/wallaby.js +0 -26
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTicketingContract = createTicketingContract;
4
+ const zod_1 = require("zod");
5
+ const contract_1 = require("./contract");
6
+ const helpers_1 = require("./helpers");
7
+ const DEFAULT_NAME = 'ticketing';
8
+ function createTicketingContract(options = {}) {
9
+ const name = options.name || DEFAULT_NAME;
10
+ const state = (0, helpers_1.createContractState)();
11
+ const createEventSchema = zod_1.z.object({
12
+ eventId: helpers_1.identifierSchema,
13
+ title: zod_1.z.string().min(3).max(140),
14
+ venue: zod_1.z.string().min(2).max(140),
15
+ startsAt: zod_1.z.string(),
16
+ ticketPrice: helpers_1.amountSchema,
17
+ asset: helpers_1.assetSchema,
18
+ capacity: zod_1.z.number().int().min(1).max(1000000),
19
+ metadata: zod_1.z.record(zod_1.z.any()).optional()
20
+ });
21
+ const purchaseSchema = zod_1.z.object({
22
+ eventId: helpers_1.identifierSchema,
23
+ ticketId: helpers_1.identifierSchema
24
+ });
25
+ const ticketIdSchema = zod_1.z.object({
26
+ ticketId: helpers_1.identifierSchema,
27
+ note: zod_1.z.string().max(280).optional()
28
+ });
29
+ const initialize = async () => {
30
+ await (0, helpers_1.initializeTables)(state.adapter, [
31
+ `
32
+ CREATE TABLE IF NOT EXISTS ticket_events (
33
+ event_id TEXT PRIMARY KEY,
34
+ owner TEXT NOT NULL,
35
+ title TEXT NOT NULL,
36
+ venue TEXT NOT NULL,
37
+ starts_at DATETIME NOT NULL,
38
+ ticket_price TEXT NOT NULL,
39
+ asset TEXT NOT NULL,
40
+ capacity INTEGER NOT NULL,
41
+ sold_count INTEGER NOT NULL,
42
+ status TEXT NOT NULL,
43
+ metadata TEXT,
44
+ created_at DATETIME NOT NULL
45
+ )
46
+ `,
47
+ `
48
+ CREATE TABLE IF NOT EXISTS tickets (
49
+ ticket_id TEXT PRIMARY KEY,
50
+ event_id TEXT NOT NULL,
51
+ owner TEXT NOT NULL,
52
+ status TEXT NOT NULL,
53
+ note TEXT,
54
+ created_at DATETIME NOT NULL,
55
+ updated_at DATETIME NOT NULL
56
+ )
57
+ `
58
+ ]);
59
+ };
60
+ const createEvent = async (payload, ctx) => {
61
+ const owner = (0, helpers_1.requireSender)(ctx);
62
+ const existing = await state.adapter.query('SELECT event_id FROM ticket_events WHERE event_id = ?', [payload.eventId]);
63
+ if (existing.length > 0) {
64
+ throw new Error(`Event ${payload.eventId} already exists`);
65
+ }
66
+ const startsAt = (0, helpers_1.parseDateValue)(payload.startsAt);
67
+ if (!startsAt || startsAt <= new Date()) {
68
+ throw new Error('Event start time must be in the future');
69
+ }
70
+ await state.adapter.query(`INSERT INTO ticket_events (
71
+ event_id, owner, title, venue, starts_at, ticket_price, asset, capacity, sold_count, status, metadata, created_at
72
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [payload.eventId, owner, payload.title, payload.venue, startsAt, payload.ticketPrice, payload.asset, payload.capacity, 0, 'active', JSON.stringify(payload.metadata || {}), new Date()]);
73
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'createEvent', payload, {
74
+ action: 'ticket_event_created',
75
+ data: {
76
+ eventId: payload.eventId,
77
+ owner
78
+ }
79
+ });
80
+ };
81
+ const purchaseTicket = async (payload, ctx) => {
82
+ const buyer = (0, helpers_1.requireSender)(ctx);
83
+ const payment = (0, helpers_1.getIncomingPayment)(ctx);
84
+ const eventRows = await state.adapter.query('SELECT * FROM ticket_events WHERE event_id = ?', [payload.eventId]);
85
+ if (eventRows.length === 0) {
86
+ throw new Error(`Event ${payload.eventId} does not exist`);
87
+ }
88
+ const event = eventRows[0];
89
+ if (event.status !== 'active') {
90
+ throw new Error('Event is not active');
91
+ }
92
+ if (((0, helpers_1.parseDateValue)(event.starts_at) || new Date()) <= new Date()) {
93
+ throw new Error('Ticket sales are closed for this event');
94
+ }
95
+ (0, helpers_1.assertAssetMatches)(payment.asset, event.asset);
96
+ if (!(0, helpers_1.toBigNumber)(payment.amount).eq(event.ticket_price)) {
97
+ throw new Error(`Ticket price is ${event.ticket_price} ${event.asset}`);
98
+ }
99
+ if (Number(event.sold_count) >= Number(event.capacity)) {
100
+ throw new Error('Event is sold out');
101
+ }
102
+ const existing = await state.adapter.query('SELECT ticket_id FROM tickets WHERE ticket_id = ?', [payload.ticketId]);
103
+ if (existing.length > 0) {
104
+ throw new Error(`Ticket ${payload.ticketId} already exists`);
105
+ }
106
+ await state.adapter.query('INSERT INTO tickets (ticket_id, event_id, owner, status, note, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)', [payload.ticketId, payload.eventId, buyer, 'valid', '', new Date(), new Date()]);
107
+ await state.adapter.query('UPDATE ticket_events SET sold_count = ? WHERE event_id = ?', [Number(event.sold_count) + 1, payload.eventId]);
108
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'purchaseTicket', payload, {
109
+ action: 'ticket_purchased',
110
+ data: {
111
+ ticketId: payload.ticketId,
112
+ eventId: payload.eventId,
113
+ buyer
114
+ }
115
+ });
116
+ };
117
+ const checkInTicket = async (payload, ctx) => {
118
+ const sender = (0, helpers_1.requireSender)(ctx);
119
+ const ticketRows = await state.adapter.query('SELECT * FROM tickets WHERE ticket_id = ?', [payload.ticketId]);
120
+ if (ticketRows.length === 0) {
121
+ throw new Error(`Ticket ${payload.ticketId} does not exist`);
122
+ }
123
+ const ticket = ticketRows[0];
124
+ const eventRows = await state.adapter.query('SELECT * FROM ticket_events WHERE event_id = ?', [ticket.event_id]);
125
+ const event = eventRows[0];
126
+ if (event.owner !== sender) {
127
+ throw new Error('Only the event owner can check in tickets');
128
+ }
129
+ if (ticket.status !== 'valid') {
130
+ throw new Error('Ticket is not valid for check-in');
131
+ }
132
+ await state.adapter.query('UPDATE tickets SET status = ?, note = ?, updated_at = ? WHERE ticket_id = ?', ['checked_in', payload.note || '', new Date(), payload.ticketId]);
133
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'checkInTicket', payload, {
134
+ action: 'ticket_checked_in',
135
+ data: {
136
+ ticketId: payload.ticketId,
137
+ eventId: ticket.event_id,
138
+ owner: ticket.owner
139
+ }
140
+ });
141
+ };
142
+ const refundTicket = async (payload, ctx) => {
143
+ const sender = (0, helpers_1.requireSender)(ctx);
144
+ const ticketRows = await state.adapter.query('SELECT * FROM tickets WHERE ticket_id = ?', [payload.ticketId]);
145
+ if (ticketRows.length === 0) {
146
+ throw new Error(`Ticket ${payload.ticketId} does not exist`);
147
+ }
148
+ const ticket = ticketRows[0];
149
+ const eventRows = await state.adapter.query('SELECT * FROM ticket_events WHERE event_id = ?', [ticket.event_id]);
150
+ const event = eventRows[0];
151
+ if (sender !== event.owner && sender !== ticket.owner) {
152
+ throw new Error('Only the event owner or ticket owner can request a refund');
153
+ }
154
+ if (ticket.status !== 'valid') {
155
+ throw new Error('Only valid tickets can be refunded');
156
+ }
157
+ await state.adapter.query('UPDATE tickets SET status = ?, note = ?, updated_at = ? WHERE ticket_id = ?', ['refunded', payload.note || '', new Date(), payload.ticketId]);
158
+ await (0, helpers_1.emitContractEvent)(state.adapter, name, 'refundTicket', payload, {
159
+ action: 'ticket_refund_requested',
160
+ data: {
161
+ ticketId: payload.ticketId,
162
+ eventId: ticket.event_id,
163
+ owner: ticket.owner,
164
+ amount: event.ticket_price,
165
+ asset: event.asset
166
+ }
167
+ });
168
+ };
169
+ return (0, contract_1.defineContract)({
170
+ name,
171
+ hooks: {
172
+ create: async ({ adapter }) => {
173
+ state.adapter = adapter;
174
+ await initialize();
175
+ }
176
+ },
177
+ actions: {
178
+ createEvent: (0, contract_1.action)(createEvent, { schema: createEventSchema, trigger: 'custom_json' }),
179
+ purchaseTicket: (0, contract_1.action)(purchaseTicket, { schema: purchaseSchema, trigger: ['transfer', 'recurrent_transfer'] }),
180
+ checkInTicket: (0, contract_1.action)(checkInTicket, { schema: ticketIdSchema, trigger: 'custom_json' }),
181
+ refundTicket: (0, contract_1.action)(refundTicket, { schema: ticketIdSchema, trigger: 'custom_json' })
182
+ }
183
+ });
184
+ }
185
+ //# sourceMappingURL=ticketing.contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticketing.contract.js","sourceRoot":"","sources":["../../src/contracts/ticketing.contract.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createTipJarContract = createTipJarContract;
4
4
  const zod_1 = require("zod");
5
5
  const contract_1 = require("./contract");
6
+ const helpers_1 = require("./helpers");
6
7
  const DEFAULT_NAME = 'tipjar';
7
8
  function createTipJarContract(options = {}) {
8
9
  const name = options.name || DEFAULT_NAME;
@@ -45,6 +46,7 @@ function createTipJarContract(options = {}) {
45
46
  name,
46
47
  hooks: {
47
48
  create: async ({ adapter }) => {
49
+ (0, helpers_1.ensureSqlAdapter)(adapter);
48
50
  state.adapter = adapter;
49
51
  await initializeTables();
50
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tipjar.contract.js","sourceRoot":"","sources":["../../src/contracts/tipjar.contract.ts"],"names":[],"mappings":";;AASA,oDA8DC;AAvED,6BAAwB;AACxB,yCAAoD;AAEpD,MAAM,YAAY,GAAG,QAAQ,CAAC;AAM9B,SAAgB,oBAAoB,CAAC,UAAiC,EAAE;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAE1C,MAAM,KAAK,GAAG;QACV,OAAO,EAAE,IAAW;KACvB,CAAC;IAEF,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;QACvB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KAC1C,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;;;;;;;;;;SAWzB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,KAAK,EAAE,OAA6B,EAAE,GAAQ,EAAE,EAAE;QAC1D,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,uIAAuI,EACvI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CACjI,CAAC;QAEF,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;YAC3D,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE;gBACF,IAAI,EAAE,GAAG,CAAC,MAAM;gBAChB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;gBAC3B,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK;gBACzB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;aACjC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,IAAA,yBAAc,EAAC;QAClB,IAAI;QACJ,KAAK,EAAE;YACH,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBACxB,MAAM,gBAAgB,EAAE,CAAC;YAC7B,CAAC;SACJ;QACD,OAAO,EAAE;YACL,GAAG,EAAE,IAAA,iBAAM,EAAC,GAAG,EAAE;gBACb,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,UAAU;aACtB,CAAC;SACL;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"tipjar.contract.js","sourceRoot":"","sources":["../../src/contracts/tipjar.contract.ts"],"names":[],"mappings":";;AAUA,oDA+DC;AAzED,6BAAwB;AACxB,yCAAoD;AACpD,uCAA6C;AAE7C,MAAM,YAAY,GAAG,QAAQ,CAAC;AAM9B,SAAgB,oBAAoB,CAAC,UAAiC,EAAE;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAE1C,MAAM,KAAK,GAAG;QACV,OAAO,EAAE,IAAW;KACvB,CAAC;IAEF,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;QACvB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;KAC1C,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;;;;;;;;;;SAWzB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,KAAK,EAAE,OAA6B,EAAE,GAAQ,EAAE,EAAE;QAC1D,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CACrB,uIAAuI,EACvI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CACjI,CAAC;QAEF,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;YAC3D,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE;gBACF,IAAI,EAAE,GAAG,CAAC,MAAM;gBAChB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;gBAC3B,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK;gBACzB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;aACjC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,IAAA,yBAAc,EAAC;QAClB,IAAI;QACJ,KAAK,EAAE;YACH,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC1B,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC;gBAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBACxB,MAAM,gBAAgB,EAAE,CAAC;YAC7B,CAAC;SACJ;QACD,OAAO,EAAE;YACL,GAAG,EAAE,IAAA,iBAAM,EAAC,GAAG,EAAE;gBACb,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,UAAU;aACtB,CAAC;SACL;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -7,6 +7,7 @@ exports.createTokenContract = createTokenContract;
7
7
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
8
  const zod_1 = require("zod");
9
9
  const contract_1 = require("./contract");
10
+ const helpers_1 = require("./helpers");
10
11
  const DEFAULT_NAME = 'hivetoken';
11
12
  function createTokenContract(options = {}) {
12
13
  const name = options.name || DEFAULT_NAME;
@@ -41,46 +42,47 @@ function createTokenContract(options = {}) {
41
42
  symbol: zod_1.z.string().min(1)
42
43
  });
43
44
  const initializeTokenTables = async () => {
44
- try {
45
- await state.adapter.query(`
46
- CREATE TABLE IF NOT EXISTS tokens (
47
- symbol TEXT PRIMARY KEY,
48
- name TEXT NOT NULL,
49
- url TEXT,
50
- precision INTEGER NOT NULL DEFAULT 3,
51
- max_supply TEXT NOT NULL,
52
- current_supply TEXT NOT NULL DEFAULT '0',
53
- creator TEXT NOT NULL,
54
- created_at DATETIME NOT NULL
55
- )
56
- `);
57
- await state.adapter.query(`
58
- CREATE TABLE IF NOT EXISTS token_balances (
59
- account TEXT NOT NULL,
60
- symbol TEXT NOT NULL,
61
- balance TEXT NOT NULL DEFAULT '0',
62
- PRIMARY KEY (account, symbol),
63
- FOREIGN KEY (symbol) REFERENCES tokens(symbol)
64
- )
65
- `);
66
- await state.adapter.query(`
67
- CREATE TABLE IF NOT EXISTS token_transfers (
68
- id INTEGER PRIMARY KEY AUTOINCREMENT,
69
- from_account TEXT NOT NULL,
70
- to_account TEXT NOT NULL,
71
- amount TEXT NOT NULL,
72
- symbol TEXT NOT NULL,
73
- memo TEXT,
74
- block_number INTEGER NOT NULL,
75
- transaction_id TEXT NOT NULL,
76
- timestamp DATETIME NOT NULL,
77
- FOREIGN KEY (symbol) REFERENCES tokens(symbol)
78
- )
79
- `);
80
- }
81
- catch (error) {
82
- console.error('[TokenContract] Error initializing tables:', error);
45
+ await state.adapter.query(`
46
+ CREATE TABLE IF NOT EXISTS tokens (
47
+ symbol TEXT PRIMARY KEY,
48
+ name TEXT NOT NULL,
49
+ url TEXT,
50
+ precision INTEGER NOT NULL DEFAULT 3,
51
+ max_supply TEXT NOT NULL,
52
+ current_supply TEXT NOT NULL DEFAULT '0',
53
+ creator TEXT NOT NULL,
54
+ created_at DATETIME NOT NULL
55
+ )
56
+ `);
57
+ await state.adapter.query(`
58
+ CREATE TABLE IF NOT EXISTS token_balances (
59
+ account TEXT NOT NULL,
60
+ symbol TEXT NOT NULL,
61
+ balance TEXT NOT NULL DEFAULT '0',
62
+ PRIMARY KEY (account, symbol),
63
+ FOREIGN KEY (symbol) REFERENCES tokens(symbol)
64
+ )
65
+ `);
66
+ await state.adapter.query(`
67
+ CREATE TABLE IF NOT EXISTS token_transfers (
68
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
69
+ from_account TEXT NOT NULL,
70
+ to_account TEXT NOT NULL,
71
+ amount TEXT NOT NULL,
72
+ symbol TEXT NOT NULL,
73
+ memo TEXT,
74
+ block_number INTEGER NOT NULL,
75
+ transaction_id TEXT NOT NULL,
76
+ timestamp DATETIME NOT NULL,
77
+ FOREIGN KEY (symbol) REFERENCES tokens(symbol)
78
+ )
79
+ `);
80
+ };
81
+ const withTransaction = async (work) => {
82
+ if (typeof state.adapter?.runInTransaction === 'function') {
83
+ return state.adapter.runInTransaction(work);
83
84
  }
85
+ return work(state.adapter);
84
86
  };
85
87
  const createToken = async (payload, ctx) => {
86
88
  try {
@@ -101,23 +103,25 @@ function createTokenContract(options = {}) {
101
103
  if (url && url.length > 256) {
102
104
  throw new Error('URL must be 256 characters or less');
103
105
  }
104
- const existingToken = await state.adapter.query('SELECT symbol FROM tokens WHERE symbol = ?', [symbol]);
105
- if (existingToken && existingToken.length > 0) {
106
- throw new Error(`Token with symbol ${symbol} already exists`);
107
- }
108
- await state.adapter.query(`
109
- INSERT INTO tokens (symbol, name, url, precision, max_supply, current_supply, creator, created_at)
110
- VALUES (?, ?, ?, ?, ?, '0', ?, ?)
111
- `, [symbol, tokenName, url, precision, maxSupply, ctx.sender, new Date()]);
112
- await state.adapter.addEvent(new Date(), name, 'createToken', payload, {
113
- action: 'token_created',
114
- data: {
115
- symbol,
116
- name: tokenName,
117
- creator: ctx.sender,
118
- maxSupply,
119
- precision
106
+ await withTransaction(async (adapter) => {
107
+ const existingToken = await adapter.query('SELECT symbol FROM tokens WHERE symbol = ?', [symbol]);
108
+ if (existingToken && existingToken.length > 0) {
109
+ throw new Error(`Token with symbol ${symbol} already exists`);
120
110
  }
111
+ await adapter.query(`
112
+ INSERT INTO tokens (symbol, name, url, precision, max_supply, current_supply, creator, created_at)
113
+ VALUES (?, ?, ?, ?, ?, '0', ?, ?)
114
+ `, [symbol, tokenName, url, precision, maxSupply, ctx.sender, new Date()]);
115
+ await adapter.addEvent(new Date(), name, 'createToken', payload, {
116
+ action: 'token_created',
117
+ data: {
118
+ symbol,
119
+ name: tokenName,
120
+ creator: ctx.sender,
121
+ maxSupply,
122
+ precision
123
+ }
124
+ });
121
125
  });
122
126
  console.log(`[TokenContract] Token ${symbol} created by ${ctx.sender}`);
123
127
  }
@@ -129,47 +133,49 @@ function createTokenContract(options = {}) {
129
133
  const issueTokens = async (payload, ctx) => {
130
134
  try {
131
135
  const { symbol, to, amount, memo = '' } = payload;
132
- const token = await state.adapter.query('SELECT * FROM tokens WHERE symbol = ?', [symbol]);
133
- if (!token || token.length === 0) {
134
- throw new Error(`Token ${symbol} does not exist`);
135
- }
136
- const tokenData = token[0];
137
- if (tokenData.creator !== ctx.sender) {
138
- throw new Error('Only the token creator can issue new tokens');
139
- }
140
136
  const amountBN = new bignumber_js_1.default(amount);
141
137
  if (amountBN.isNaN() || amountBN.lte(0)) {
142
138
  throw new Error('Amount must be a positive number');
143
139
  }
144
- const currentSupplyBN = new bignumber_js_1.default(tokenData.current_supply);
145
- const maxSupplyBN = new bignumber_js_1.default(tokenData.max_supply);
146
- const newSupplyBN = currentSupplyBN.plus(amountBN);
147
- if (newSupplyBN.gt(maxSupplyBN)) {
148
- throw new Error('Cannot issue tokens: would exceed maximum supply');
149
- }
150
- await state.adapter.query(`
151
- UPDATE tokens SET current_supply = ? WHERE symbol = ?
152
- `, [newSupplyBN.toString(), symbol]);
153
- const existingBalance = await state.adapter.query('SELECT balance FROM token_balances WHERE account = ? AND symbol = ?', [to, symbol]);
154
- if (existingBalance && existingBalance.length > 0) {
155
- const balanceBN = new bignumber_js_1.default(existingBalance[0].balance);
156
- const newBalanceBN = balanceBN.plus(amountBN);
157
- await state.adapter.query('UPDATE token_balances SET balance = ? WHERE account = ? AND symbol = ?', [newBalanceBN.toString(), to, symbol]);
158
- }
159
- else {
160
- await state.adapter.query('INSERT INTO token_balances (account, symbol, balance) VALUES (?, ?, ?)', [to, symbol, amountBN.toString()]);
161
- }
162
- await state.adapter.query(`
163
- INSERT INTO token_transfers (from_account, to_account, amount, symbol, memo, block_number, transaction_id, timestamp)
164
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
165
- `, ['null', to, amount, symbol, memo, ctx.block.number, ctx.transaction.id, new Date()]);
166
- await state.adapter.addEvent(new Date(), name, 'issueTokens', payload, {
167
- action: 'tokens_issued',
168
- data: {
169
- to,
170
- amount,
171
- symbol
140
+ await withTransaction(async (adapter) => {
141
+ const token = await adapter.query('SELECT * FROM tokens WHERE symbol = ?', [symbol]);
142
+ if (!token || token.length === 0) {
143
+ throw new Error(`Token ${symbol} does not exist`);
172
144
  }
145
+ const tokenData = token[0];
146
+ if (tokenData.creator !== ctx.sender) {
147
+ throw new Error('Only the token creator can issue new tokens');
148
+ }
149
+ const currentSupplyBN = new bignumber_js_1.default(tokenData.current_supply);
150
+ const maxSupplyBN = new bignumber_js_1.default(tokenData.max_supply);
151
+ const newSupplyBN = currentSupplyBN.plus(amountBN);
152
+ if (newSupplyBN.gt(maxSupplyBN)) {
153
+ throw new Error('Cannot issue tokens: would exceed maximum supply');
154
+ }
155
+ await adapter.query(`
156
+ UPDATE tokens SET current_supply = ? WHERE symbol = ?
157
+ `, [newSupplyBN.toString(), symbol]);
158
+ const existingBalance = await adapter.query('SELECT balance FROM token_balances WHERE account = ? AND symbol = ?', [to, symbol]);
159
+ if (existingBalance && existingBalance.length > 0) {
160
+ const balanceBN = new bignumber_js_1.default(existingBalance[0].balance);
161
+ const newBalanceBN = balanceBN.plus(amountBN);
162
+ await adapter.query('UPDATE token_balances SET balance = ? WHERE account = ? AND symbol = ?', [newBalanceBN.toString(), to, symbol]);
163
+ }
164
+ else {
165
+ await adapter.query('INSERT INTO token_balances (account, symbol, balance) VALUES (?, ?, ?)', [to, symbol, amountBN.toString()]);
166
+ }
167
+ await adapter.query(`
168
+ INSERT INTO token_transfers (from_account, to_account, amount, symbol, memo, block_number, transaction_id, timestamp)
169
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
170
+ `, ['null', to, amount, symbol, memo, ctx.block.number, ctx.transaction.id, new Date()]);
171
+ await adapter.addEvent(new Date(), name, 'issueTokens', payload, {
172
+ action: 'tokens_issued',
173
+ data: {
174
+ to,
175
+ amount,
176
+ symbol
177
+ }
178
+ });
173
179
  });
174
180
  console.log(`[TokenContract] Issued ${amount} ${symbol} to ${to}`);
175
181
  }
@@ -184,45 +190,48 @@ function createTokenContract(options = {}) {
184
190
  if (ctx.sender === to) {
185
191
  throw new Error('Cannot transfer tokens to yourself');
186
192
  }
187
- const token = await state.adapter.query('SELECT * FROM tokens WHERE symbol = ?', [symbol]);
188
- if (!token || token.length === 0) {
189
- throw new Error(`Token ${symbol} does not exist`);
190
- }
191
193
  const amountBN = new bignumber_js_1.default(amount);
192
194
  if (amountBN.isNaN() || amountBN.lte(0)) {
193
195
  throw new Error('Amount must be a positive number');
194
196
  }
195
- const senderBalance = await state.adapter.query('SELECT balance FROM token_balances WHERE account = ? AND symbol = ?', [ctx.sender, symbol]);
196
- if (!senderBalance || senderBalance.length === 0) {
197
- throw new Error(`Account ${ctx.sender} does not have any ${symbol} tokens`);
198
- }
199
- const senderBalanceBN = new bignumber_js_1.default(senderBalance[0].balance);
200
- if (senderBalanceBN.lt(amountBN)) {
201
- throw new Error('Insufficient balance');
202
- }
203
- const newSenderBalanceBN = senderBalanceBN.minus(amountBN);
204
- await state.adapter.query('UPDATE token_balances SET balance = ? WHERE account = ? AND symbol = ?', [newSenderBalanceBN.toString(), ctx.sender, symbol]);
205
- const receiverBalance = await state.adapter.query('SELECT balance FROM token_balances WHERE account = ? AND symbol = ?', [to, symbol]);
206
- if (receiverBalance && receiverBalance.length > 0) {
207
- const receiverBalanceBN = new bignumber_js_1.default(receiverBalance[0].balance);
208
- const newReceiverBalanceBN = receiverBalanceBN.plus(amountBN);
209
- await state.adapter.query('UPDATE token_balances SET balance = ? WHERE account = ? AND symbol = ?', [newReceiverBalanceBN.toString(), to, symbol]);
210
- }
211
- else {
212
- await state.adapter.query('INSERT INTO token_balances (account, symbol, balance) VALUES (?, ?, ?)', [to, symbol, amountBN.toString()]);
213
- }
214
- await state.adapter.query(`
215
- INSERT INTO token_transfers (from_account, to_account, amount, symbol, memo, block_number, transaction_id, timestamp)
216
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
217
- `, [ctx.sender, to, amount, symbol, memo, ctx.block.number, ctx.transaction.id, new Date()]);
218
- await state.adapter.addEvent(new Date(), name, 'transferTokens', payload, {
219
- action: 'tokens_transferred',
220
- data: {
221
- from: ctx.sender,
222
- to,
223
- amount,
224
- symbol
197
+ await withTransaction(async (adapter) => {
198
+ // Token existence check inside transaction to prevent TOCTOU
199
+ const token = await adapter.query('SELECT * FROM tokens WHERE symbol = ?', [symbol]);
200
+ if (!token || token.length === 0) {
201
+ throw new Error(`Token ${symbol} does not exist`);
202
+ }
203
+ const senderBalance = await adapter.query('SELECT balance FROM token_balances WHERE account = ? AND symbol = ?', [ctx.sender, symbol]);
204
+ if (!senderBalance || senderBalance.length === 0) {
205
+ throw new Error(`Account ${ctx.sender} does not have any ${symbol} tokens`);
206
+ }
207
+ const senderBalanceBN = new bignumber_js_1.default(senderBalance[0].balance);
208
+ if (senderBalanceBN.lt(amountBN)) {
209
+ throw new Error('Insufficient balance');
210
+ }
211
+ const newSenderBalanceBN = senderBalanceBN.minus(amountBN);
212
+ await adapter.query('UPDATE token_balances SET balance = ? WHERE account = ? AND symbol = ?', [newSenderBalanceBN.toString(), ctx.sender, symbol]);
213
+ const receiverBalance = await adapter.query('SELECT balance FROM token_balances WHERE account = ? AND symbol = ?', [to, symbol]);
214
+ if (receiverBalance && receiverBalance.length > 0) {
215
+ const receiverBalanceBN = new bignumber_js_1.default(receiverBalance[0].balance);
216
+ const newReceiverBalanceBN = receiverBalanceBN.plus(amountBN);
217
+ await adapter.query('UPDATE token_balances SET balance = ? WHERE account = ? AND symbol = ?', [newReceiverBalanceBN.toString(), to, symbol]);
218
+ }
219
+ else {
220
+ await adapter.query('INSERT INTO token_balances (account, symbol, balance) VALUES (?, ?, ?)', [to, symbol, amountBN.toString()]);
225
221
  }
222
+ await adapter.query(`
223
+ INSERT INTO token_transfers (from_account, to_account, amount, symbol, memo, block_number, transaction_id, timestamp)
224
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
225
+ `, [ctx.sender, to, amount, symbol, memo, ctx.block.number, ctx.transaction.id, new Date()]);
226
+ await adapter.addEvent(new Date(), name, 'transferTokens', payload, {
227
+ action: 'tokens_transferred',
228
+ data: {
229
+ from: ctx.sender,
230
+ to,
231
+ amount,
232
+ symbol
233
+ }
234
+ });
226
235
  });
227
236
  console.log(`[TokenContract] Transferred ${amount} ${symbol} from ${ctx.sender} to ${to}`);
228
237
  }
@@ -279,6 +288,7 @@ function createTokenContract(options = {}) {
279
288
  name,
280
289
  hooks: {
281
290
  create: async ({ streamer, adapter }) => {
291
+ (0, helpers_1.ensureSqlAdapter)(adapter);
282
292
  state.streamer = streamer;
283
293
  state.adapter = adapter;
284
294
  await initializeTokenTables();
@@ -1 +1 @@
1
- {"version":3,"file":"token.contract.js","sourceRoot":"","sources":["../../src/contracts/token.contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.contract.js","sourceRoot":"","sources":["../../src/contracts/token.contract.ts"],"names":[],"mappings":"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"}