@dimes-dot-fi/sdk 1.5.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +88 -19
  3. package/dist/{aliases-ByZ2DcA5.d.cts → aliases-BJyM8ydu.d.cts} +54 -4
  4. package/dist/{aliases-ByZ2DcA5.d.ts → aliases-BJyM8ydu.d.ts} +54 -4
  5. package/dist/{chunk-UHQZSMUD.cjs → chunk-53U53KZ2.cjs} +5 -1
  6. package/dist/chunk-53U53KZ2.cjs.map +1 -0
  7. package/dist/chunk-5VHDXPRV.mjs +240 -0
  8. package/dist/chunk-5VHDXPRV.mjs.map +1 -0
  9. package/dist/{chunk-Y5WQ3UWF.cjs → chunk-7SAMK7CS.cjs} +18 -12
  10. package/dist/chunk-7SAMK7CS.cjs.map +1 -0
  11. package/dist/chunk-FAW2C5AM.cjs +240 -0
  12. package/dist/chunk-FAW2C5AM.cjs.map +1 -0
  13. package/dist/{chunk-4MO3HKMS.mjs → chunk-PK2PRTQW.mjs} +5 -1
  14. package/dist/chunk-PK2PRTQW.mjs.map +1 -0
  15. package/dist/{chunk-3OPRSKCY.mjs → chunk-T67Z74J3.mjs} +17 -11
  16. package/dist/chunk-T67Z74J3.mjs.map +1 -0
  17. package/dist/contract/index.cjs +5522 -293
  18. package/dist/contract/index.cjs.map +1 -1
  19. package/dist/contract/index.d.cts +68 -10
  20. package/dist/contract/index.d.ts +68 -10
  21. package/dist/contract/index.mjs +5523 -294
  22. package/dist/contract/index.mjs.map +1 -1
  23. package/dist/{dimes-client-B-thu7VQ.d.cts → dimes-client-DYFvnZUx.d.ts} +41 -9
  24. package/dist/{dimes-client-CerC9mTr.d.ts → dimes-client-DZPhU1CG.d.cts} +41 -9
  25. package/dist/{dimes-error-BY5qVGZC.d.cts → dimes-error-BlQWPqhQ.d.cts} +2 -2
  26. package/dist/{dimes-error-CrvPuFzB.d.ts → dimes-error-DBKV5bfr.d.ts} +2 -2
  27. package/dist/index.cjs +78 -8
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +23 -14
  30. package/dist/index.d.ts +23 -14
  31. package/dist/index.mjs +78 -8
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/quote-BFNgVsY-.d.ts +39 -0
  34. package/dist/quote-CanwfT9m.d.cts +39 -0
  35. package/dist/react/index.cjs +414 -16
  36. package/dist/react/index.cjs.map +1 -1
  37. package/dist/react/index.d.cts +165 -8
  38. package/dist/react/index.d.ts +165 -8
  39. package/dist/react/index.mjs +413 -15
  40. package/dist/react/index.mjs.map +1 -1
  41. package/dist/{types-2bGyrtqd.d.cts → types-ClHQbIcY.d.ts} +3 -3
  42. package/dist/{types-CAuPxEwO.d.ts → types-Co-2bQSi.d.cts} +3 -3
  43. package/dist/ws/index.cjs +4 -230
  44. package/dist/ws/index.cjs.map +1 -1
  45. package/dist/ws/index.d.cts +3 -3
  46. package/dist/ws/index.d.ts +3 -3
  47. package/dist/ws/index.mjs +5 -231
  48. package/dist/ws/index.mjs.map +1 -1
  49. package/package.json +43 -4
  50. package/dist/chunk-3OPRSKCY.mjs.map +0 -1
  51. package/dist/chunk-4MO3HKMS.mjs.map +0 -1
  52. package/dist/chunk-UHQZSMUD.cjs.map +0 -1
  53. package/dist/chunk-Y5WQ3UWF.cjs.map +0 -1
  54. package/dist/quote-Czq3Selh.d.ts +0 -30
  55. package/dist/quote-quIOosIv.d.cts +0 -30
package/dist/ws/index.cjs CHANGED
@@ -1,243 +1,17 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
+ var _chunkFAW2C5AMcjs = require('../chunk-FAW2C5AM.cjs');
4
5
 
5
- var _chunkUHQZSMUDcjs = require('../chunk-UHQZSMUD.cjs');
6
6
 
7
- // src/ws/position-socket.ts
8
- var _humps = require('humps');
9
- var _socketioclient = require('socket.io-client');
10
- var wsNamespace = "/v1/ws/prediction-markets/user-positions";
11
- function camelizeEnvelope(envelope) {
12
- return {
13
- id: envelope.id,
14
- type: envelope.type,
15
- createdAt: envelope.created_at,
16
- data: _humps.camelizeKeys.call(void 0, envelope.data)
17
- };
18
- }
19
- var PositionSocket = (_class = class {
20
- __init() {this.socket = null}
21
-
22
-
23
- __init2() {this.eventListeners = /* @__PURE__ */ new Map()}
24
- __init3() {this.connectListeners = /* @__PURE__ */ new Set()}
25
- __init4() {this.disconnectListeners = /* @__PURE__ */ new Set()}
26
- __init5() {this.errorListeners = /* @__PURE__ */ new Set()}
27
- __init6() {this.notificationListeners = /* @__PURE__ */ new Set()}
28
- constructor(options) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);
29
- this.baseUrl = _nullishCoalesce(options.baseUrl, () => ( "https://api.dimes.fi"));
30
- this.getToken = options.getToken;
31
- }
32
- get connected() {
33
- return _nullishCoalesce(_optionalChain([this, 'access', _ => _.socket, 'optionalAccess', _2 => _2.connected]), () => ( false));
34
- }
35
- connect() {
36
- if (_optionalChain([this, 'access', _3 => _3.socket, 'optionalAccess', _4 => _4.connected])) {
37
- return;
38
- }
39
- _optionalChain([this, 'access', _5 => _5.socket, 'optionalAccess', _6 => _6.disconnect, 'call', _7 => _7()]);
40
- const token = this.getToken();
41
- if (!token) {
42
- return;
43
- }
44
- const getToken = this.getToken;
45
- this.socket = _socketioclient.io.call(void 0, `${this.baseUrl}${wsNamespace}`, {
46
- auth: (cb) => cb({ token: getToken() }),
47
- transports: ["websocket"],
48
- reconnection: true,
49
- reconnectionDelay: 1e3,
50
- reconnectionDelayMax: 3e4
51
- });
52
- this.socket.on("connect", () => {
53
- for (const cb of this.connectListeners) {
54
- cb();
55
- }
56
- });
57
- this.socket.on("disconnect", () => {
58
- for (const cb of this.disconnectListeners) {
59
- cb();
60
- }
61
- });
62
- this.socket.on("error", (err) => {
63
- for (const cb of this.errorListeners) {
64
- cb(err);
65
- }
66
- });
67
- for (const eventType of _chunkUHQZSMUDcjs.positionEventTypes) {
68
- this.socket.on(eventType, (envelope) => {
69
- const event = camelizeEnvelope(envelope);
70
- this.emit(eventType, event);
71
- this.emit("*", event);
72
- });
73
- }
74
- this.socket.on("notification", (envelope) => {
75
- const event = {
76
- id: envelope.id,
77
- type: "notification",
78
- createdAt: envelope.created_at,
79
- data: envelope.data
80
- };
81
- for (const cb of this.notificationListeners) {
82
- cb(event);
83
- }
84
- });
85
- }
86
- disconnect() {
87
- _optionalChain([this, 'access', _8 => _8.socket, 'optionalAccess', _9 => _9.disconnect, 'call', _10 => _10()]);
88
- this.socket = null;
89
- }
90
- reconnectWithToken() {
91
- this.disconnect();
92
- this.connect();
93
- }
94
- on(event, cb) {
95
- let set = this.eventListeners.get(event);
96
- if (!set) {
97
- set = /* @__PURE__ */ new Set();
98
- this.eventListeners.set(event, set);
99
- }
100
- set.add(cb);
101
- return () => set.delete(cb);
102
- }
103
- onConnect(cb) {
104
- this.connectListeners.add(cb);
105
- return () => this.connectListeners.delete(cb);
106
- }
107
- onDisconnect(cb) {
108
- this.disconnectListeners.add(cb);
109
- return () => this.disconnectListeners.delete(cb);
110
- }
111
- onError(cb) {
112
- this.errorListeners.add(cb);
113
- return () => this.errorListeners.delete(cb);
114
- }
115
- onNotification(cb) {
116
- this.notificationListeners.add(cb);
117
- return () => this.notificationListeners.delete(cb);
118
- }
119
- emit(event, data) {
120
- const set = this.eventListeners.get(event);
121
- if (!set) {
122
- return;
123
- }
124
- for (const cb of set) {
125
- cb(data);
126
- }
127
- }
128
- }, _class);
129
7
 
130
- // src/ws/market-socket.ts
131
8
 
9
+ var _chunk53U53KZ2cjs = require('../chunk-53U53KZ2.cjs');
132
10
 
133
- var wsNamespace2 = "/v1/ws/prediction-markets/user-markets";
134
- function camelizeEnvelope2(envelope) {
135
- return {
136
- id: envelope.id,
137
- type: envelope.type,
138
- createdAt: envelope.created_at,
139
- data: envelope.data.map((item) => _humps.camelizeKeys.call(void 0, item))
140
- };
141
- }
142
- var MarketSocket = (_class2 = class {
143
- __init7() {this.socket = null}
144
-
145
-
146
- __init8() {this.eventListeners = /* @__PURE__ */ new Map()}
147
- __init9() {this.connectListeners = /* @__PURE__ */ new Set()}
148
- __init10() {this.disconnectListeners = /* @__PURE__ */ new Set()}
149
- __init11() {this.errorListeners = /* @__PURE__ */ new Set()}
150
- constructor(options) {;_class2.prototype.__init7.call(this);_class2.prototype.__init8.call(this);_class2.prototype.__init9.call(this);_class2.prototype.__init10.call(this);_class2.prototype.__init11.call(this);
151
- this.baseUrl = _nullishCoalesce(options.baseUrl, () => ( "https://api.dimes.fi"));
152
- this.getToken = options.getToken;
153
- }
154
- get connected() {
155
- return _nullishCoalesce(_optionalChain([this, 'access', _11 => _11.socket, 'optionalAccess', _12 => _12.connected]), () => ( false));
156
- }
157
- connect() {
158
- if (_optionalChain([this, 'access', _13 => _13.socket, 'optionalAccess', _14 => _14.connected])) {
159
- return;
160
- }
161
- _optionalChain([this, 'access', _15 => _15.socket, 'optionalAccess', _16 => _16.disconnect, 'call', _17 => _17()]);
162
- const token = this.getToken();
163
- if (!token) {
164
- return;
165
- }
166
- const getToken = this.getToken;
167
- this.socket = _socketioclient.io.call(void 0, `${this.baseUrl}${wsNamespace2}`, {
168
- auth: (cb) => cb({ token: getToken() }),
169
- transports: ["websocket"],
170
- reconnection: true,
171
- reconnectionDelay: 1e3,
172
- reconnectionDelayMax: 3e4
173
- });
174
- this.socket.on("connect", () => {
175
- for (const cb of this.connectListeners) {
176
- cb();
177
- }
178
- });
179
- this.socket.on("disconnect", () => {
180
- for (const cb of this.disconnectListeners) {
181
- cb();
182
- }
183
- });
184
- this.socket.on("error", (err) => {
185
- for (const cb of this.errorListeners) {
186
- cb(err);
187
- }
188
- });
189
- for (const eventType of _chunkUHQZSMUDcjs.marketEventTypes) {
190
- this.socket.on(eventType, (envelope) => {
191
- const event = camelizeEnvelope2(envelope);
192
- this.emit(eventType, event);
193
- this.emit("*", event);
194
- });
195
- }
196
- }
197
- disconnect() {
198
- _optionalChain([this, 'access', _18 => _18.socket, 'optionalAccess', _19 => _19.disconnect, 'call', _20 => _20()]);
199
- this.socket = null;
200
- }
201
- reconnectWithToken() {
202
- this.disconnect();
203
- this.connect();
204
- }
205
- on(event, cb) {
206
- let set = this.eventListeners.get(event);
207
- if (!set) {
208
- set = /* @__PURE__ */ new Set();
209
- this.eventListeners.set(event, set);
210
- }
211
- set.add(cb);
212
- return () => set.delete(cb);
213
- }
214
- onConnect(cb) {
215
- this.connectListeners.add(cb);
216
- return () => this.connectListeners.delete(cb);
217
- }
218
- onDisconnect(cb) {
219
- this.disconnectListeners.add(cb);
220
- return () => this.disconnectListeners.delete(cb);
221
- }
222
- onError(cb) {
223
- this.errorListeners.add(cb);
224
- return () => this.errorListeners.delete(cb);
225
- }
226
- emit(event, data) {
227
- const set = this.eventListeners.get(event);
228
- if (!set) {
229
- return;
230
- }
231
- for (const cb of set) {
232
- cb(data);
233
- }
234
- }
235
- }, _class2);
236
11
 
237
12
 
238
13
 
239
14
 
240
15
 
241
-
242
- exports.MarketSocket = MarketSocket; exports.PositionSocket = PositionSocket; exports.marketEventTypes = _chunkUHQZSMUDcjs.marketEventTypes; exports.notificationCodes = _chunkUHQZSMUDcjs.notificationCodes; exports.positionEventTypes = _chunkUHQZSMUDcjs.positionEventTypes;
16
+ exports.MarketSocket = _chunkFAW2C5AMcjs.MarketSocket; exports.PositionSocket = _chunkFAW2C5AMcjs.PositionSocket; exports.marketEventTypes = _chunk53U53KZ2cjs.marketEventTypes; exports.notificationCodes = _chunk53U53KZ2cjs.notificationCodes; exports.positionEventTypes = _chunk53U53KZ2cjs.positionEventTypes;
243
17
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/alexemery/bl/dimes-sdk/dist/ws/index.cjs","../../src/ws/position-socket.ts","../../src/ws/market-socket.ts"],"names":["io","camelizeEnvelope"],"mappings":"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","file":"/Users/alexemery/bl/dimes-sdk/dist/ws/index.cjs","sourcesContent":[null,"import { camelizeKeys } from \"humps\";\nimport { io, type Socket } from \"socket.io-client\";\nimport type { Position } from \"../types\";\nimport {\n positionEventTypes,\n type NotificationEvent,\n type NotificationEventEnvelope,\n type PositionEvent,\n type PositionEventEnvelope,\n type PositionEventType,\n} from \"./types\";\n\nexport interface PositionSocketOptions {\n baseUrl?: string;\n getToken: () => string | null;\n}\n\ntype EventCallback = (event: PositionEvent) => void;\ntype NotificationCallback = (event: NotificationEvent) => void;\ntype ConnectionCallback = () => void;\ntype ErrorCallback = (error: unknown) => void;\n\nconst wsNamespace = \"/v1/ws/prediction-markets/user-positions\";\n\nfunction camelizeEnvelope(envelope: PositionEventEnvelope): PositionEvent {\n return {\n id: envelope.id,\n type: envelope.type,\n createdAt: envelope.created_at,\n data: camelizeKeys(envelope.data) as unknown as Position,\n };\n}\n\nexport class PositionSocket {\n private socket: Socket | null = null;\n\n private readonly baseUrl: string;\n\n private readonly getToken: () => string | null;\n\n private readonly eventListeners = new Map<string, Set<EventCallback>>();\n\n private readonly connectListeners = new Set<ConnectionCallback>();\n\n private readonly disconnectListeners = new Set<ConnectionCallback>();\n\n private readonly errorListeners = new Set<ErrorCallback>();\n\n private readonly notificationListeners = new Set<NotificationCallback>();\n\n constructor(options: PositionSocketOptions) {\n this.baseUrl = options.baseUrl ?? \"https://api.dimes.fi\";\n this.getToken = options.getToken;\n }\n\n public get connected(): boolean {\n return this.socket?.connected ?? false;\n }\n\n public connect(): void {\n if (this.socket?.connected) {\n return;\n }\n\n this.socket?.disconnect();\n\n const token = this.getToken();\n if (!token) {\n return;\n }\n\n const getToken = this.getToken;\n this.socket = io(`${this.baseUrl}${wsNamespace}`, {\n auth: (cb) => cb({ token: getToken() }),\n transports: [\"websocket\"],\n reconnection: true,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 30000,\n });\n\n this.socket.on(\"connect\", () => {\n for (const cb of this.connectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"disconnect\", () => {\n for (const cb of this.disconnectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"error\", (err: unknown) => {\n for (const cb of this.errorListeners) {\n cb(err);\n }\n });\n\n for (const eventType of positionEventTypes) {\n this.socket.on(eventType, (envelope: PositionEventEnvelope) => {\n const event = camelizeEnvelope(envelope);\n this.emit(eventType, event);\n this.emit(\"*\", event);\n });\n }\n\n this.socket.on(\"notification\", (envelope: NotificationEventEnvelope) => {\n const event: NotificationEvent = {\n id: envelope.id,\n type: \"notification\",\n createdAt: envelope.created_at,\n data: envelope.data,\n };\n for (const cb of this.notificationListeners) {\n cb(event);\n }\n });\n }\n\n public disconnect(): void {\n this.socket?.disconnect();\n this.socket = null;\n }\n\n public reconnectWithToken(): void {\n this.disconnect();\n this.connect();\n }\n\n public on(event: PositionEventType | \"*\", cb: EventCallback): () => void {\n let set = this.eventListeners.get(event);\n if (!set) {\n set = new Set();\n this.eventListeners.set(event, set);\n }\n set.add(cb);\n return () => set.delete(cb);\n }\n\n public onConnect(cb: ConnectionCallback): () => void {\n this.connectListeners.add(cb);\n return () => this.connectListeners.delete(cb);\n }\n\n public onDisconnect(cb: ConnectionCallback): () => void {\n this.disconnectListeners.add(cb);\n return () => this.disconnectListeners.delete(cb);\n }\n\n public onError(cb: ErrorCallback): () => void {\n this.errorListeners.add(cb);\n return () => this.errorListeners.delete(cb);\n }\n\n public onNotification(cb: NotificationCallback): () => void {\n this.notificationListeners.add(cb);\n return () => this.notificationListeners.delete(cb);\n }\n\n private emit(event: string, data: PositionEvent): void {\n const set = this.eventListeners.get(event);\n if (!set) {\n return;\n }\n for (const cb of set) {\n cb(data);\n }\n }\n}\n","import { camelizeKeys } from \"humps\";\nimport { io, type Socket } from \"socket.io-client\";\nimport type { Market } from \"../types\";\nimport {\n marketEventTypes,\n type MarketDelta,\n type MarketEvent,\n type MarketEventEnvelope,\n type MarketEventType,\n} from \"./types\";\n\nexport interface MarketSocketOptions {\n baseUrl?: string;\n getToken: () => string | null;\n}\n\ntype EventCallback = (event: MarketEvent) => void;\ntype ConnectionCallback = () => void;\ntype ErrorCallback = (error: unknown) => void;\n\nconst wsNamespace = \"/v1/ws/prediction-markets/user-markets\";\n\nfunction camelizeEnvelope(envelope: MarketEventEnvelope): MarketEvent {\n return {\n id: envelope.id,\n type: envelope.type,\n createdAt: envelope.created_at,\n data: envelope.data.map((item) => camelizeKeys(item)) as unknown as Market[] | MarketDelta[],\n };\n}\n\nexport class MarketSocket {\n private socket: Socket | null = null;\n\n private readonly baseUrl: string;\n\n private readonly getToken: () => string | null;\n\n private readonly eventListeners = new Map<string, Set<EventCallback>>();\n\n private readonly connectListeners = new Set<ConnectionCallback>();\n\n private readonly disconnectListeners = new Set<ConnectionCallback>();\n\n private readonly errorListeners = new Set<ErrorCallback>();\n\n constructor(options: MarketSocketOptions) {\n this.baseUrl = options.baseUrl ?? \"https://api.dimes.fi\";\n this.getToken = options.getToken;\n }\n\n public get connected(): boolean {\n return this.socket?.connected ?? false;\n }\n\n public connect(): void {\n if (this.socket?.connected) {\n return;\n }\n\n this.socket?.disconnect();\n\n const token = this.getToken();\n if (!token) {\n return;\n }\n\n const getToken = this.getToken;\n this.socket = io(`${this.baseUrl}${wsNamespace}`, {\n auth: (cb) => cb({ token: getToken() }),\n transports: [\"websocket\"],\n reconnection: true,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 30000,\n });\n\n this.socket.on(\"connect\", () => {\n for (const cb of this.connectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"disconnect\", () => {\n for (const cb of this.disconnectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"error\", (err: unknown) => {\n for (const cb of this.errorListeners) {\n cb(err);\n }\n });\n\n for (const eventType of marketEventTypes) {\n this.socket.on(eventType, (envelope: MarketEventEnvelope) => {\n const event = camelizeEnvelope(envelope);\n this.emit(eventType, event);\n this.emit(\"*\", event);\n });\n }\n }\n\n public disconnect(): void {\n this.socket?.disconnect();\n this.socket = null;\n }\n\n public reconnectWithToken(): void {\n this.disconnect();\n this.connect();\n }\n\n public on(event: MarketEventType | \"*\", cb: EventCallback): () => void {\n let set = this.eventListeners.get(event);\n if (!set) {\n set = new Set();\n this.eventListeners.set(event, set);\n }\n set.add(cb);\n return () => set.delete(cb);\n }\n\n public onConnect(cb: ConnectionCallback): () => void {\n this.connectListeners.add(cb);\n return () => this.connectListeners.delete(cb);\n }\n\n public onDisconnect(cb: ConnectionCallback): () => void {\n this.disconnectListeners.add(cb);\n return () => this.disconnectListeners.delete(cb);\n }\n\n public onError(cb: ErrorCallback): () => void {\n this.errorListeners.add(cb);\n return () => this.errorListeners.delete(cb);\n }\n\n private emit(event: string, data: MarketEvent): void {\n const set = this.eventListeners.get(event);\n if (!set) {\n return;\n }\n for (const cb of set) {\n cb(data);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/alexemery/bl/dimes-sdk/dist/ws/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACF,oTAAC","file":"/Users/alexemery/bl/dimes-sdk/dist/ws/index.cjs"}
@@ -1,6 +1,6 @@
1
- import { a as PositionEventType, P as PositionEvent, N as NotificationEvent, M as MarketEventType, b as MarketEvent } from '../types-2bGyrtqd.cjs';
2
- export { c as MarketDelta, d as MarketEventEnvelope, e as NotificationCode, f as NotificationEventEnvelope, g as PositionEventEnvelope, m as marketEventTypes, n as notificationCodes, p as positionEventTypes } from '../types-2bGyrtqd.cjs';
3
- import '../aliases-ByZ2DcA5.cjs';
1
+ import { a as PositionEventType, P as PositionEvent, N as NotificationEvent, b as MarketEventType, M as MarketEvent } from '../types-Co-2bQSi.cjs';
2
+ export { c as MarketDelta, d as MarketEventEnvelope, e as NotificationCode, f as NotificationEventEnvelope, g as PositionEventEnvelope, m as marketEventTypes, n as notificationCodes, p as positionEventTypes } from '../types-Co-2bQSi.cjs';
3
+ import '../aliases-BJyM8ydu.cjs';
4
4
 
5
5
  interface PositionSocketOptions {
6
6
  baseUrl?: string;
@@ -1,6 +1,6 @@
1
- import { a as PositionEventType, P as PositionEvent, N as NotificationEvent, M as MarketEventType, b as MarketEvent } from '../types-CAuPxEwO.js';
2
- export { c as MarketDelta, d as MarketEventEnvelope, e as NotificationCode, f as NotificationEventEnvelope, g as PositionEventEnvelope, m as marketEventTypes, n as notificationCodes, p as positionEventTypes } from '../types-CAuPxEwO.js';
3
- import '../aliases-ByZ2DcA5.js';
1
+ import { a as PositionEventType, P as PositionEvent, N as NotificationEvent, b as MarketEventType, M as MarketEvent } from '../types-ClHQbIcY.js';
2
+ export { c as MarketDelta, d as MarketEventEnvelope, e as NotificationCode, f as NotificationEventEnvelope, g as PositionEventEnvelope, m as marketEventTypes, n as notificationCodes, p as positionEventTypes } from '../types-ClHQbIcY.js';
3
+ import '../aliases-BJyM8ydu.js';
4
4
 
5
5
  interface PositionSocketOptions {
6
6
  baseUrl?: string;
package/dist/ws/index.mjs CHANGED
@@ -1,238 +1,12 @@
1
+ import {
2
+ MarketSocket,
3
+ PositionSocket
4
+ } from "../chunk-5VHDXPRV.mjs";
1
5
  import {
2
6
  marketEventTypes,
3
7
  notificationCodes,
4
8
  positionEventTypes
5
- } from "../chunk-4MO3HKMS.mjs";
6
-
7
- // src/ws/position-socket.ts
8
- import { camelizeKeys } from "humps";
9
- import { io } from "socket.io-client";
10
- var wsNamespace = "/v1/ws/prediction-markets/user-positions";
11
- function camelizeEnvelope(envelope) {
12
- return {
13
- id: envelope.id,
14
- type: envelope.type,
15
- createdAt: envelope.created_at,
16
- data: camelizeKeys(envelope.data)
17
- };
18
- }
19
- var PositionSocket = class {
20
- socket = null;
21
- baseUrl;
22
- getToken;
23
- eventListeners = /* @__PURE__ */ new Map();
24
- connectListeners = /* @__PURE__ */ new Set();
25
- disconnectListeners = /* @__PURE__ */ new Set();
26
- errorListeners = /* @__PURE__ */ new Set();
27
- notificationListeners = /* @__PURE__ */ new Set();
28
- constructor(options) {
29
- this.baseUrl = options.baseUrl ?? "https://api.dimes.fi";
30
- this.getToken = options.getToken;
31
- }
32
- get connected() {
33
- return this.socket?.connected ?? false;
34
- }
35
- connect() {
36
- if (this.socket?.connected) {
37
- return;
38
- }
39
- this.socket?.disconnect();
40
- const token = this.getToken();
41
- if (!token) {
42
- return;
43
- }
44
- const getToken = this.getToken;
45
- this.socket = io(`${this.baseUrl}${wsNamespace}`, {
46
- auth: (cb) => cb({ token: getToken() }),
47
- transports: ["websocket"],
48
- reconnection: true,
49
- reconnectionDelay: 1e3,
50
- reconnectionDelayMax: 3e4
51
- });
52
- this.socket.on("connect", () => {
53
- for (const cb of this.connectListeners) {
54
- cb();
55
- }
56
- });
57
- this.socket.on("disconnect", () => {
58
- for (const cb of this.disconnectListeners) {
59
- cb();
60
- }
61
- });
62
- this.socket.on("error", (err) => {
63
- for (const cb of this.errorListeners) {
64
- cb(err);
65
- }
66
- });
67
- for (const eventType of positionEventTypes) {
68
- this.socket.on(eventType, (envelope) => {
69
- const event = camelizeEnvelope(envelope);
70
- this.emit(eventType, event);
71
- this.emit("*", event);
72
- });
73
- }
74
- this.socket.on("notification", (envelope) => {
75
- const event = {
76
- id: envelope.id,
77
- type: "notification",
78
- createdAt: envelope.created_at,
79
- data: envelope.data
80
- };
81
- for (const cb of this.notificationListeners) {
82
- cb(event);
83
- }
84
- });
85
- }
86
- disconnect() {
87
- this.socket?.disconnect();
88
- this.socket = null;
89
- }
90
- reconnectWithToken() {
91
- this.disconnect();
92
- this.connect();
93
- }
94
- on(event, cb) {
95
- let set = this.eventListeners.get(event);
96
- if (!set) {
97
- set = /* @__PURE__ */ new Set();
98
- this.eventListeners.set(event, set);
99
- }
100
- set.add(cb);
101
- return () => set.delete(cb);
102
- }
103
- onConnect(cb) {
104
- this.connectListeners.add(cb);
105
- return () => this.connectListeners.delete(cb);
106
- }
107
- onDisconnect(cb) {
108
- this.disconnectListeners.add(cb);
109
- return () => this.disconnectListeners.delete(cb);
110
- }
111
- onError(cb) {
112
- this.errorListeners.add(cb);
113
- return () => this.errorListeners.delete(cb);
114
- }
115
- onNotification(cb) {
116
- this.notificationListeners.add(cb);
117
- return () => this.notificationListeners.delete(cb);
118
- }
119
- emit(event, data) {
120
- const set = this.eventListeners.get(event);
121
- if (!set) {
122
- return;
123
- }
124
- for (const cb of set) {
125
- cb(data);
126
- }
127
- }
128
- };
129
-
130
- // src/ws/market-socket.ts
131
- import { camelizeKeys as camelizeKeys2 } from "humps";
132
- import { io as io2 } from "socket.io-client";
133
- var wsNamespace2 = "/v1/ws/prediction-markets/user-markets";
134
- function camelizeEnvelope2(envelope) {
135
- return {
136
- id: envelope.id,
137
- type: envelope.type,
138
- createdAt: envelope.created_at,
139
- data: envelope.data.map((item) => camelizeKeys2(item))
140
- };
141
- }
142
- var MarketSocket = class {
143
- socket = null;
144
- baseUrl;
145
- getToken;
146
- eventListeners = /* @__PURE__ */ new Map();
147
- connectListeners = /* @__PURE__ */ new Set();
148
- disconnectListeners = /* @__PURE__ */ new Set();
149
- errorListeners = /* @__PURE__ */ new Set();
150
- constructor(options) {
151
- this.baseUrl = options.baseUrl ?? "https://api.dimes.fi";
152
- this.getToken = options.getToken;
153
- }
154
- get connected() {
155
- return this.socket?.connected ?? false;
156
- }
157
- connect() {
158
- if (this.socket?.connected) {
159
- return;
160
- }
161
- this.socket?.disconnect();
162
- const token = this.getToken();
163
- if (!token) {
164
- return;
165
- }
166
- const getToken = this.getToken;
167
- this.socket = io2(`${this.baseUrl}${wsNamespace2}`, {
168
- auth: (cb) => cb({ token: getToken() }),
169
- transports: ["websocket"],
170
- reconnection: true,
171
- reconnectionDelay: 1e3,
172
- reconnectionDelayMax: 3e4
173
- });
174
- this.socket.on("connect", () => {
175
- for (const cb of this.connectListeners) {
176
- cb();
177
- }
178
- });
179
- this.socket.on("disconnect", () => {
180
- for (const cb of this.disconnectListeners) {
181
- cb();
182
- }
183
- });
184
- this.socket.on("error", (err) => {
185
- for (const cb of this.errorListeners) {
186
- cb(err);
187
- }
188
- });
189
- for (const eventType of marketEventTypes) {
190
- this.socket.on(eventType, (envelope) => {
191
- const event = camelizeEnvelope2(envelope);
192
- this.emit(eventType, event);
193
- this.emit("*", event);
194
- });
195
- }
196
- }
197
- disconnect() {
198
- this.socket?.disconnect();
199
- this.socket = null;
200
- }
201
- reconnectWithToken() {
202
- this.disconnect();
203
- this.connect();
204
- }
205
- on(event, cb) {
206
- let set = this.eventListeners.get(event);
207
- if (!set) {
208
- set = /* @__PURE__ */ new Set();
209
- this.eventListeners.set(event, set);
210
- }
211
- set.add(cb);
212
- return () => set.delete(cb);
213
- }
214
- onConnect(cb) {
215
- this.connectListeners.add(cb);
216
- return () => this.connectListeners.delete(cb);
217
- }
218
- onDisconnect(cb) {
219
- this.disconnectListeners.add(cb);
220
- return () => this.disconnectListeners.delete(cb);
221
- }
222
- onError(cb) {
223
- this.errorListeners.add(cb);
224
- return () => this.errorListeners.delete(cb);
225
- }
226
- emit(event, data) {
227
- const set = this.eventListeners.get(event);
228
- if (!set) {
229
- return;
230
- }
231
- for (const cb of set) {
232
- cb(data);
233
- }
234
- }
235
- };
9
+ } from "../chunk-PK2PRTQW.mjs";
236
10
  export {
237
11
  MarketSocket,
238
12
  PositionSocket,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ws/position-socket.ts","../../src/ws/market-socket.ts"],"sourcesContent":["import { camelizeKeys } from \"humps\";\nimport { io, type Socket } from \"socket.io-client\";\nimport type { Position } from \"../types\";\nimport {\n positionEventTypes,\n type NotificationEvent,\n type NotificationEventEnvelope,\n type PositionEvent,\n type PositionEventEnvelope,\n type PositionEventType,\n} from \"./types\";\n\nexport interface PositionSocketOptions {\n baseUrl?: string;\n getToken: () => string | null;\n}\n\ntype EventCallback = (event: PositionEvent) => void;\ntype NotificationCallback = (event: NotificationEvent) => void;\ntype ConnectionCallback = () => void;\ntype ErrorCallback = (error: unknown) => void;\n\nconst wsNamespace = \"/v1/ws/prediction-markets/user-positions\";\n\nfunction camelizeEnvelope(envelope: PositionEventEnvelope): PositionEvent {\n return {\n id: envelope.id,\n type: envelope.type,\n createdAt: envelope.created_at,\n data: camelizeKeys(envelope.data) as unknown as Position,\n };\n}\n\nexport class PositionSocket {\n private socket: Socket | null = null;\n\n private readonly baseUrl: string;\n\n private readonly getToken: () => string | null;\n\n private readonly eventListeners = new Map<string, Set<EventCallback>>();\n\n private readonly connectListeners = new Set<ConnectionCallback>();\n\n private readonly disconnectListeners = new Set<ConnectionCallback>();\n\n private readonly errorListeners = new Set<ErrorCallback>();\n\n private readonly notificationListeners = new Set<NotificationCallback>();\n\n constructor(options: PositionSocketOptions) {\n this.baseUrl = options.baseUrl ?? \"https://api.dimes.fi\";\n this.getToken = options.getToken;\n }\n\n public get connected(): boolean {\n return this.socket?.connected ?? false;\n }\n\n public connect(): void {\n if (this.socket?.connected) {\n return;\n }\n\n this.socket?.disconnect();\n\n const token = this.getToken();\n if (!token) {\n return;\n }\n\n const getToken = this.getToken;\n this.socket = io(`${this.baseUrl}${wsNamespace}`, {\n auth: (cb) => cb({ token: getToken() }),\n transports: [\"websocket\"],\n reconnection: true,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 30000,\n });\n\n this.socket.on(\"connect\", () => {\n for (const cb of this.connectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"disconnect\", () => {\n for (const cb of this.disconnectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"error\", (err: unknown) => {\n for (const cb of this.errorListeners) {\n cb(err);\n }\n });\n\n for (const eventType of positionEventTypes) {\n this.socket.on(eventType, (envelope: PositionEventEnvelope) => {\n const event = camelizeEnvelope(envelope);\n this.emit(eventType, event);\n this.emit(\"*\", event);\n });\n }\n\n this.socket.on(\"notification\", (envelope: NotificationEventEnvelope) => {\n const event: NotificationEvent = {\n id: envelope.id,\n type: \"notification\",\n createdAt: envelope.created_at,\n data: envelope.data,\n };\n for (const cb of this.notificationListeners) {\n cb(event);\n }\n });\n }\n\n public disconnect(): void {\n this.socket?.disconnect();\n this.socket = null;\n }\n\n public reconnectWithToken(): void {\n this.disconnect();\n this.connect();\n }\n\n public on(event: PositionEventType | \"*\", cb: EventCallback): () => void {\n let set = this.eventListeners.get(event);\n if (!set) {\n set = new Set();\n this.eventListeners.set(event, set);\n }\n set.add(cb);\n return () => set.delete(cb);\n }\n\n public onConnect(cb: ConnectionCallback): () => void {\n this.connectListeners.add(cb);\n return () => this.connectListeners.delete(cb);\n }\n\n public onDisconnect(cb: ConnectionCallback): () => void {\n this.disconnectListeners.add(cb);\n return () => this.disconnectListeners.delete(cb);\n }\n\n public onError(cb: ErrorCallback): () => void {\n this.errorListeners.add(cb);\n return () => this.errorListeners.delete(cb);\n }\n\n public onNotification(cb: NotificationCallback): () => void {\n this.notificationListeners.add(cb);\n return () => this.notificationListeners.delete(cb);\n }\n\n private emit(event: string, data: PositionEvent): void {\n const set = this.eventListeners.get(event);\n if (!set) {\n return;\n }\n for (const cb of set) {\n cb(data);\n }\n }\n}\n","import { camelizeKeys } from \"humps\";\nimport { io, type Socket } from \"socket.io-client\";\nimport type { Market } from \"../types\";\nimport {\n marketEventTypes,\n type MarketDelta,\n type MarketEvent,\n type MarketEventEnvelope,\n type MarketEventType,\n} from \"./types\";\n\nexport interface MarketSocketOptions {\n baseUrl?: string;\n getToken: () => string | null;\n}\n\ntype EventCallback = (event: MarketEvent) => void;\ntype ConnectionCallback = () => void;\ntype ErrorCallback = (error: unknown) => void;\n\nconst wsNamespace = \"/v1/ws/prediction-markets/user-markets\";\n\nfunction camelizeEnvelope(envelope: MarketEventEnvelope): MarketEvent {\n return {\n id: envelope.id,\n type: envelope.type,\n createdAt: envelope.created_at,\n data: envelope.data.map((item) => camelizeKeys(item)) as unknown as Market[] | MarketDelta[],\n };\n}\n\nexport class MarketSocket {\n private socket: Socket | null = null;\n\n private readonly baseUrl: string;\n\n private readonly getToken: () => string | null;\n\n private readonly eventListeners = new Map<string, Set<EventCallback>>();\n\n private readonly connectListeners = new Set<ConnectionCallback>();\n\n private readonly disconnectListeners = new Set<ConnectionCallback>();\n\n private readonly errorListeners = new Set<ErrorCallback>();\n\n constructor(options: MarketSocketOptions) {\n this.baseUrl = options.baseUrl ?? \"https://api.dimes.fi\";\n this.getToken = options.getToken;\n }\n\n public get connected(): boolean {\n return this.socket?.connected ?? false;\n }\n\n public connect(): void {\n if (this.socket?.connected) {\n return;\n }\n\n this.socket?.disconnect();\n\n const token = this.getToken();\n if (!token) {\n return;\n }\n\n const getToken = this.getToken;\n this.socket = io(`${this.baseUrl}${wsNamespace}`, {\n auth: (cb) => cb({ token: getToken() }),\n transports: [\"websocket\"],\n reconnection: true,\n reconnectionDelay: 1000,\n reconnectionDelayMax: 30000,\n });\n\n this.socket.on(\"connect\", () => {\n for (const cb of this.connectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"disconnect\", () => {\n for (const cb of this.disconnectListeners) {\n cb();\n }\n });\n\n this.socket.on(\"error\", (err: unknown) => {\n for (const cb of this.errorListeners) {\n cb(err);\n }\n });\n\n for (const eventType of marketEventTypes) {\n this.socket.on(eventType, (envelope: MarketEventEnvelope) => {\n const event = camelizeEnvelope(envelope);\n this.emit(eventType, event);\n this.emit(\"*\", event);\n });\n }\n }\n\n public disconnect(): void {\n this.socket?.disconnect();\n this.socket = null;\n }\n\n public reconnectWithToken(): void {\n this.disconnect();\n this.connect();\n }\n\n public on(event: MarketEventType | \"*\", cb: EventCallback): () => void {\n let set = this.eventListeners.get(event);\n if (!set) {\n set = new Set();\n this.eventListeners.set(event, set);\n }\n set.add(cb);\n return () => set.delete(cb);\n }\n\n public onConnect(cb: ConnectionCallback): () => void {\n this.connectListeners.add(cb);\n return () => this.connectListeners.delete(cb);\n }\n\n public onDisconnect(cb: ConnectionCallback): () => void {\n this.disconnectListeners.add(cb);\n return () => this.disconnectListeners.delete(cb);\n }\n\n public onError(cb: ErrorCallback): () => void {\n this.errorListeners.add(cb);\n return () => this.errorListeners.delete(cb);\n }\n\n private emit(event: string, data: MarketEvent): void {\n const set = this.eventListeners.get(event);\n if (!set) {\n return;\n }\n for (const cb of set) {\n cb(data);\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,UAAuB;AAqBhC,IAAM,cAAc;AAEpB,SAAS,iBAAiB,UAAgD;AACxE,SAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,MAAM,SAAS;AAAA,IACf,WAAW,SAAS;AAAA,IACpB,MAAM,aAAa,SAAS,IAAI;AAAA,EAClC;AACF;AAEO,IAAM,iBAAN,MAAqB;AAAA,EAClB,SAAwB;AAAA,EAEf;AAAA,EAEA;AAAA,EAEA,iBAAiB,oBAAI,IAAgC;AAAA,EAErD,mBAAmB,oBAAI,IAAwB;AAAA,EAE/C,sBAAsB,oBAAI,IAAwB;AAAA,EAElD,iBAAiB,oBAAI,IAAmB;AAAA,EAExC,wBAAwB,oBAAI,IAA0B;AAAA,EAEvE,YAAY,SAAgC;AAC1C,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,WAAW,QAAQ;AAAA,EAC1B;AAAA,EAEA,IAAW,YAAqB;AAC9B,WAAO,KAAK,QAAQ,aAAa;AAAA,EACnC;AAAA,EAEO,UAAgB;AACrB,QAAI,KAAK,QAAQ,WAAW;AAC1B;AAAA,IACF;AAEA,SAAK,QAAQ,WAAW;AAExB,UAAM,QAAQ,KAAK,SAAS;AAC5B,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,UAAM,WAAW,KAAK;AACtB,SAAK,SAAS,GAAG,GAAG,KAAK,OAAO,GAAG,WAAW,IAAI;AAAA,MAChD,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,SAAS,EAAE,CAAC;AAAA,MACtC,YAAY,CAAC,WAAW;AAAA,MACxB,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,sBAAsB;AAAA,IACxB,CAAC;AAED,SAAK,OAAO,GAAG,WAAW,MAAM;AAC9B,iBAAW,MAAM,KAAK,kBAAkB;AACtC,WAAG;AAAA,MACL;AAAA,IACF,CAAC;AAED,SAAK,OAAO,GAAG,cAAc,MAAM;AACjC,iBAAW,MAAM,KAAK,qBAAqB;AACzC,WAAG;AAAA,MACL;AAAA,IACF,CAAC;AAED,SAAK,OAAO,GAAG,SAAS,CAAC,QAAiB;AACxC,iBAAW,MAAM,KAAK,gBAAgB;AACpC,WAAG,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAED,eAAW,aAAa,oBAAoB;AAC1C,WAAK,OAAO,GAAG,WAAW,CAAC,aAAoC;AAC7D,cAAM,QAAQ,iBAAiB,QAAQ;AACvC,aAAK,KAAK,WAAW,KAAK;AAC1B,aAAK,KAAK,KAAK,KAAK;AAAA,MACtB,CAAC;AAAA,IACH;AAEA,SAAK,OAAO,GAAG,gBAAgB,CAAC,aAAwC;AACtE,YAAM,QAA2B;AAAA,QAC/B,IAAI,SAAS;AAAA,QACb,MAAM;AAAA,QACN,WAAW,SAAS;AAAA,QACpB,MAAM,SAAS;AAAA,MACjB;AACA,iBAAW,MAAM,KAAK,uBAAuB;AAC3C,WAAG,KAAK;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,aAAmB;AACxB,SAAK,QAAQ,WAAW;AACxB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEO,qBAA2B;AAChC,SAAK,WAAW;AAChB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEO,GAAG,OAAgC,IAA+B;AACvE,QAAI,MAAM,KAAK,eAAe,IAAI,KAAK;AACvC,QAAI,CAAC,KAAK;AACR,YAAM,oBAAI,IAAI;AACd,WAAK,eAAe,IAAI,OAAO,GAAG;AAAA,IACpC;AACA,QAAI,IAAI,EAAE;AACV,WAAO,MAAM,IAAI,OAAO,EAAE;AAAA,EAC5B;AAAA,EAEO,UAAU,IAAoC;AACnD,SAAK,iBAAiB,IAAI,EAAE;AAC5B,WAAO,MAAM,KAAK,iBAAiB,OAAO,EAAE;AAAA,EAC9C;AAAA,EAEO,aAAa,IAAoC;AACtD,SAAK,oBAAoB,IAAI,EAAE;AAC/B,WAAO,MAAM,KAAK,oBAAoB,OAAO,EAAE;AAAA,EACjD;AAAA,EAEO,QAAQ,IAA+B;AAC5C,SAAK,eAAe,IAAI,EAAE;AAC1B,WAAO,MAAM,KAAK,eAAe,OAAO,EAAE;AAAA,EAC5C;AAAA,EAEO,eAAe,IAAsC;AAC1D,SAAK,sBAAsB,IAAI,EAAE;AACjC,WAAO,MAAM,KAAK,sBAAsB,OAAO,EAAE;AAAA,EACnD;AAAA,EAEQ,KAAK,OAAe,MAA2B;AACrD,UAAM,MAAM,KAAK,eAAe,IAAI,KAAK;AACzC,QAAI,CAAC,KAAK;AACR;AAAA,IACF;AACA,eAAW,MAAM,KAAK;AACpB,SAAG,IAAI;AAAA,IACT;AAAA,EACF;AACF;;;ACxKA,SAAS,gBAAAA,qBAAoB;AAC7B,SAAS,MAAAC,WAAuB;AAmBhC,IAAMC,eAAc;AAEpB,SAASC,kBAAiB,UAA4C;AACpE,SAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,MAAM,SAAS;AAAA,IACf,WAAW,SAAS;AAAA,IACpB,MAAM,SAAS,KAAK,IAAI,CAAC,SAASC,cAAa,IAAI,CAAC;AAAA,EACtD;AACF;AAEO,IAAM,eAAN,MAAmB;AAAA,EAChB,SAAwB;AAAA,EAEf;AAAA,EAEA;AAAA,EAEA,iBAAiB,oBAAI,IAAgC;AAAA,EAErD,mBAAmB,oBAAI,IAAwB;AAAA,EAE/C,sBAAsB,oBAAI,IAAwB;AAAA,EAElD,iBAAiB,oBAAI,IAAmB;AAAA,EAEzD,YAAY,SAA8B;AACxC,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,WAAW,QAAQ;AAAA,EAC1B;AAAA,EAEA,IAAW,YAAqB;AAC9B,WAAO,KAAK,QAAQ,aAAa;AAAA,EACnC;AAAA,EAEO,UAAgB;AACrB,QAAI,KAAK,QAAQ,WAAW;AAC1B;AAAA,IACF;AAEA,SAAK,QAAQ,WAAW;AAExB,UAAM,QAAQ,KAAK,SAAS;AAC5B,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,UAAM,WAAW,KAAK;AACtB,SAAK,SAASC,IAAG,GAAG,KAAK,OAAO,GAAGH,YAAW,IAAI;AAAA,MAChD,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,SAAS,EAAE,CAAC;AAAA,MACtC,YAAY,CAAC,WAAW;AAAA,MACxB,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,sBAAsB;AAAA,IACxB,CAAC;AAED,SAAK,OAAO,GAAG,WAAW,MAAM;AAC9B,iBAAW,MAAM,KAAK,kBAAkB;AACtC,WAAG;AAAA,MACL;AAAA,IACF,CAAC;AAED,SAAK,OAAO,GAAG,cAAc,MAAM;AACjC,iBAAW,MAAM,KAAK,qBAAqB;AACzC,WAAG;AAAA,MACL;AAAA,IACF,CAAC;AAED,SAAK,OAAO,GAAG,SAAS,CAAC,QAAiB;AACxC,iBAAW,MAAM,KAAK,gBAAgB;AACpC,WAAG,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAED,eAAW,aAAa,kBAAkB;AACxC,WAAK,OAAO,GAAG,WAAW,CAAC,aAAkC;AAC3D,cAAM,QAAQC,kBAAiB,QAAQ;AACvC,aAAK,KAAK,WAAW,KAAK;AAC1B,aAAK,KAAK,KAAK,KAAK;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEO,aAAmB;AACxB,SAAK,QAAQ,WAAW;AACxB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEO,qBAA2B;AAChC,SAAK,WAAW;AAChB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEO,GAAG,OAA8B,IAA+B;AACrE,QAAI,MAAM,KAAK,eAAe,IAAI,KAAK;AACvC,QAAI,CAAC,KAAK;AACR,YAAM,oBAAI,IAAI;AACd,WAAK,eAAe,IAAI,OAAO,GAAG;AAAA,IACpC;AACA,QAAI,IAAI,EAAE;AACV,WAAO,MAAM,IAAI,OAAO,EAAE;AAAA,EAC5B;AAAA,EAEO,UAAU,IAAoC;AACnD,SAAK,iBAAiB,IAAI,EAAE;AAC5B,WAAO,MAAM,KAAK,iBAAiB,OAAO,EAAE;AAAA,EAC9C;AAAA,EAEO,aAAa,IAAoC;AACtD,SAAK,oBAAoB,IAAI,EAAE;AAC/B,WAAO,MAAM,KAAK,oBAAoB,OAAO,EAAE;AAAA,EACjD;AAAA,EAEO,QAAQ,IAA+B;AAC5C,SAAK,eAAe,IAAI,EAAE;AAC1B,WAAO,MAAM,KAAK,eAAe,OAAO,EAAE;AAAA,EAC5C;AAAA,EAEQ,KAAK,OAAe,MAAyB;AACnD,UAAM,MAAM,KAAK,eAAe,IAAI,KAAK;AACzC,QAAI,CAAC,KAAK;AACR;AAAA,IACF;AACA,eAAW,MAAM,KAAK;AACpB,SAAG,IAAI;AAAA,IACT;AAAA,EACF;AACF;","names":["camelizeKeys","io","wsNamespace","camelizeEnvelope","camelizeKeys","io"]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,7 +1,25 @@
1
1
  {
2
2
  "name": "@dimes-dot-fi/sdk",
3
- "version": "1.5.0",
3
+ "version": "2.0.1",
4
4
  "description": "TypeScript SDK for the Dimes prediction market API",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/dimes-fi/dimes-sdk#readme",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/dimes-fi/dimes-sdk.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/dimes-fi/dimes-sdk/issues"
13
+ },
14
+ "keywords": [
15
+ "dimes",
16
+ "prediction-markets",
17
+ "sdk",
18
+ "typescript",
19
+ "react",
20
+ "viem",
21
+ "web3"
22
+ ],
5
23
  "type": "module",
6
24
  "sideEffects": false,
7
25
  "files": [
@@ -51,8 +69,10 @@
51
69
  },
52
70
  "scripts": {
53
71
  "build": "tsup",
54
- "generate:types": "tsx scripts/generate-types.ts",
72
+ "generate:types": "tsx scripts/generate-types.ts && prettier --write src/types/generated.ts",
55
73
  "typecheck": "tsc --noEmit",
74
+ "examples:typecheck": "tsc --noEmit -p examples/tsconfig.json",
75
+ "pre-commit": "lint-staged && pnpm typecheck && pnpm examples:typecheck",
56
76
  "test": "vitest run",
57
77
  "test:watch": "vitest",
58
78
  "test:coverage": "vitest run --coverage",
@@ -61,10 +81,26 @@
61
81
  "format": "prettier --write src tests scripts",
62
82
  "format:check": "prettier --check src tests scripts",
63
83
  "knip": "knip",
64
- "prepublishOnly": "pnpm lint:fix && pnpm typecheck && pnpm test && pnpm build",
84
+ "prepublishOnly": "pnpm lint:fix && pnpm typecheck && pnpm examples:typecheck && pnpm test && pnpm build",
65
85
  "release": "pnpm version patch && npm publish --access public",
66
86
  "release:minor": "pnpm version minor && npm publish --access public",
67
- "release:major": "pnpm version major && npm publish --access public"
87
+ "release:major": "pnpm version major && npm publish --access public",
88
+ "prepare": "husky"
89
+ },
90
+ "lint-staged": {
91
+ "{src,tests}/**/*.ts": [
92
+ "eslint --fix",
93
+ "prettier --write"
94
+ ],
95
+ "examples/**/*.{ts,tsx}": [
96
+ "prettier --write"
97
+ ],
98
+ "scripts/**/*.ts": [
99
+ "prettier --write"
100
+ ],
101
+ "*.{json,md,mjs}": [
102
+ "prettier --write"
103
+ ]
68
104
  },
69
105
  "peerDependencies": {
70
106
  "@tanstack/react-query": ">=5",
@@ -88,6 +124,7 @@
88
124
  "@eslint/js": "^10.0.0",
89
125
  "@tanstack/react-query": "^5.0.0",
90
126
  "@types/humps": "^2.0.6",
127
+ "@types/node": "^22.0.0",
91
128
  "@types/react": "^19.0.0",
92
129
  "@typescript-eslint/eslint-plugin": "^8.0.0",
93
130
  "@typescript-eslint/parser": "^8.0.0",
@@ -99,7 +136,9 @@
99
136
  "eslint-plugin-import-x": "^4.0.0",
100
137
  "eslint-plugin-simple-import-sort": "^12.0.0",
101
138
  "globals": "^17.0.0",
139
+ "husky": "^9.1.7",
102
140
  "knip": "^6.4.0",
141
+ "lint-staged": "^17.0.8",
103
142
  "openapi-typescript": "^7.0.0",
104
143
  "prettier": "^3.8.0",
105
144
  "react": "^19.0.0",