@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.
- package/LICENSE +21 -0
- package/README.md +88 -19
- package/dist/{aliases-ByZ2DcA5.d.cts → aliases-BJyM8ydu.d.cts} +54 -4
- package/dist/{aliases-ByZ2DcA5.d.ts → aliases-BJyM8ydu.d.ts} +54 -4
- package/dist/{chunk-UHQZSMUD.cjs → chunk-53U53KZ2.cjs} +5 -1
- package/dist/chunk-53U53KZ2.cjs.map +1 -0
- package/dist/chunk-5VHDXPRV.mjs +240 -0
- package/dist/chunk-5VHDXPRV.mjs.map +1 -0
- package/dist/{chunk-Y5WQ3UWF.cjs → chunk-7SAMK7CS.cjs} +18 -12
- package/dist/chunk-7SAMK7CS.cjs.map +1 -0
- package/dist/chunk-FAW2C5AM.cjs +240 -0
- package/dist/chunk-FAW2C5AM.cjs.map +1 -0
- package/dist/{chunk-4MO3HKMS.mjs → chunk-PK2PRTQW.mjs} +5 -1
- package/dist/chunk-PK2PRTQW.mjs.map +1 -0
- package/dist/{chunk-3OPRSKCY.mjs → chunk-T67Z74J3.mjs} +17 -11
- package/dist/chunk-T67Z74J3.mjs.map +1 -0
- package/dist/contract/index.cjs +5522 -293
- package/dist/contract/index.cjs.map +1 -1
- package/dist/contract/index.d.cts +68 -10
- package/dist/contract/index.d.ts +68 -10
- package/dist/contract/index.mjs +5523 -294
- package/dist/contract/index.mjs.map +1 -1
- package/dist/{dimes-client-B-thu7VQ.d.cts → dimes-client-DYFvnZUx.d.ts} +41 -9
- package/dist/{dimes-client-CerC9mTr.d.ts → dimes-client-DZPhU1CG.d.cts} +41 -9
- package/dist/{dimes-error-BY5qVGZC.d.cts → dimes-error-BlQWPqhQ.d.cts} +2 -2
- package/dist/{dimes-error-CrvPuFzB.d.ts → dimes-error-DBKV5bfr.d.ts} +2 -2
- package/dist/index.cjs +78 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -14
- package/dist/index.d.ts +23 -14
- package/dist/index.mjs +78 -8
- package/dist/index.mjs.map +1 -1
- package/dist/quote-BFNgVsY-.d.ts +39 -0
- package/dist/quote-CanwfT9m.d.cts +39 -0
- package/dist/react/index.cjs +414 -16
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +165 -8
- package/dist/react/index.d.ts +165 -8
- package/dist/react/index.mjs +413 -15
- package/dist/react/index.mjs.map +1 -1
- package/dist/{types-2bGyrtqd.d.cts → types-ClHQbIcY.d.ts} +3 -3
- package/dist/{types-CAuPxEwO.d.ts → types-Co-2bQSi.d.cts} +3 -3
- package/dist/ws/index.cjs +4 -230
- package/dist/ws/index.cjs.map +1 -1
- package/dist/ws/index.d.cts +3 -3
- package/dist/ws/index.d.ts +3 -3
- package/dist/ws/index.mjs +5 -231
- package/dist/ws/index.mjs.map +1 -1
- package/package.json +43 -4
- package/dist/chunk-3OPRSKCY.mjs.map +0 -1
- package/dist/chunk-4MO3HKMS.mjs.map +0 -1
- package/dist/chunk-UHQZSMUD.cjs.map +0 -1
- package/dist/chunk-Y5WQ3UWF.cjs.map +0 -1
- package/dist/quote-Czq3Selh.d.ts +0 -30
- 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});
|
|
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
|
package/dist/ws/index.cjs.map
CHANGED
|
@@ -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"}
|
package/dist/ws/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as PositionEventType, P as PositionEvent, N as NotificationEvent,
|
|
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-
|
|
3
|
-
import '../aliases-
|
|
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;
|
package/dist/ws/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as PositionEventType, P as PositionEvent, N as NotificationEvent,
|
|
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-
|
|
3
|
-
import '../aliases-
|
|
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-
|
|
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,
|
package/dist/ws/index.mjs.map
CHANGED
|
@@ -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":"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","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": "
|
|
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",
|