@rg-dev/tzevaadom-api 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +540 -0
- package/dist/index.d.cts +56 -0
- package/package.json +40 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var src_exports = {};
|
|
31
|
+
__export(src_exports, {
|
|
32
|
+
createClient: () => createClient
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(src_exports);
|
|
35
|
+
var import_ws = __toESM(require("ws"), 1);
|
|
36
|
+
|
|
37
|
+
// node_modules/emittery/maps.js
|
|
38
|
+
var anyMap = /* @__PURE__ */ new WeakMap();
|
|
39
|
+
var eventsMap = /* @__PURE__ */ new WeakMap();
|
|
40
|
+
var producersMap = /* @__PURE__ */ new WeakMap();
|
|
41
|
+
|
|
42
|
+
// node_modules/emittery/index.js
|
|
43
|
+
var anyProducer = Symbol("anyProducer");
|
|
44
|
+
var resolvedPromise = Promise.resolve();
|
|
45
|
+
var listenerAdded = Symbol("listenerAdded");
|
|
46
|
+
var listenerRemoved = Symbol("listenerRemoved");
|
|
47
|
+
var canEmitMetaEvents = false;
|
|
48
|
+
var isGlobalDebugEnabled = false;
|
|
49
|
+
var isEventKeyType = (key) => typeof key === "string" || typeof key === "symbol" || typeof key === "number";
|
|
50
|
+
function assertEventName(eventName) {
|
|
51
|
+
if (!isEventKeyType(eventName)) {
|
|
52
|
+
throw new TypeError("`eventName` must be a string, symbol, or number");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function assertListener(listener) {
|
|
56
|
+
if (typeof listener !== "function") {
|
|
57
|
+
throw new TypeError("listener must be a function");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function getListeners(instance, eventName) {
|
|
61
|
+
const events = eventsMap.get(instance);
|
|
62
|
+
if (!events.has(eventName)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
return events.get(eventName);
|
|
66
|
+
}
|
|
67
|
+
function getEventProducers(instance, eventName) {
|
|
68
|
+
const key = isEventKeyType(eventName) ? eventName : anyProducer;
|
|
69
|
+
const producers = producersMap.get(instance);
|
|
70
|
+
if (!producers.has(key)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
return producers.get(key);
|
|
74
|
+
}
|
|
75
|
+
function enqueueProducers(instance, eventName, eventData) {
|
|
76
|
+
const producers = producersMap.get(instance);
|
|
77
|
+
if (producers.has(eventName)) {
|
|
78
|
+
for (const producer of producers.get(eventName)) {
|
|
79
|
+
producer.enqueue(eventData);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (producers.has(anyProducer)) {
|
|
83
|
+
const item = Promise.all([eventName, eventData]);
|
|
84
|
+
for (const producer of producers.get(anyProducer)) {
|
|
85
|
+
producer.enqueue(item);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function iterator(instance, eventNames) {
|
|
90
|
+
eventNames = Array.isArray(eventNames) ? eventNames : [eventNames];
|
|
91
|
+
let isFinished = false;
|
|
92
|
+
let flush = () => {
|
|
93
|
+
};
|
|
94
|
+
let queue = [];
|
|
95
|
+
const producer = {
|
|
96
|
+
enqueue(item) {
|
|
97
|
+
queue.push(item);
|
|
98
|
+
flush();
|
|
99
|
+
},
|
|
100
|
+
finish() {
|
|
101
|
+
isFinished = true;
|
|
102
|
+
flush();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
for (const eventName of eventNames) {
|
|
106
|
+
let set = getEventProducers(instance, eventName);
|
|
107
|
+
if (!set) {
|
|
108
|
+
set = /* @__PURE__ */ new Set();
|
|
109
|
+
const producers = producersMap.get(instance);
|
|
110
|
+
producers.set(eventName, set);
|
|
111
|
+
}
|
|
112
|
+
set.add(producer);
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
async next() {
|
|
116
|
+
if (!queue) {
|
|
117
|
+
return { done: true };
|
|
118
|
+
}
|
|
119
|
+
if (queue.length === 0) {
|
|
120
|
+
if (isFinished) {
|
|
121
|
+
queue = void 0;
|
|
122
|
+
return this.next();
|
|
123
|
+
}
|
|
124
|
+
await new Promise((resolve) => {
|
|
125
|
+
flush = resolve;
|
|
126
|
+
});
|
|
127
|
+
return this.next();
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
done: false,
|
|
131
|
+
value: await queue.shift()
|
|
132
|
+
};
|
|
133
|
+
},
|
|
134
|
+
async return(value) {
|
|
135
|
+
queue = void 0;
|
|
136
|
+
for (const eventName of eventNames) {
|
|
137
|
+
const set = getEventProducers(instance, eventName);
|
|
138
|
+
if (set) {
|
|
139
|
+
set.delete(producer);
|
|
140
|
+
if (set.size === 0) {
|
|
141
|
+
const producers = producersMap.get(instance);
|
|
142
|
+
producers.delete(eventName);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
flush();
|
|
147
|
+
return arguments.length > 0 ? { done: true, value: await value } : { done: true };
|
|
148
|
+
},
|
|
149
|
+
[Symbol.asyncIterator]() {
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function defaultMethodNamesOrAssert(methodNames) {
|
|
155
|
+
if (methodNames === void 0) {
|
|
156
|
+
return allEmitteryMethods;
|
|
157
|
+
}
|
|
158
|
+
if (!Array.isArray(methodNames)) {
|
|
159
|
+
throw new TypeError("`methodNames` must be an array of strings");
|
|
160
|
+
}
|
|
161
|
+
for (const methodName of methodNames) {
|
|
162
|
+
if (!allEmitteryMethods.includes(methodName)) {
|
|
163
|
+
if (typeof methodName !== "string") {
|
|
164
|
+
throw new TypeError("`methodNames` element must be a string");
|
|
165
|
+
}
|
|
166
|
+
throw new Error(`${methodName} is not Emittery method`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return methodNames;
|
|
170
|
+
}
|
|
171
|
+
var isMetaEvent = (eventName) => eventName === listenerAdded || eventName === listenerRemoved;
|
|
172
|
+
function emitMetaEvent(emitter, eventName, eventData) {
|
|
173
|
+
if (!isMetaEvent(eventName)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
canEmitMetaEvents = true;
|
|
178
|
+
emitter.emit(eventName, eventData);
|
|
179
|
+
} finally {
|
|
180
|
+
canEmitMetaEvents = false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
var Emittery = class _Emittery {
|
|
184
|
+
static mixin(emitteryPropertyName, methodNames) {
|
|
185
|
+
methodNames = defaultMethodNamesOrAssert(methodNames);
|
|
186
|
+
return (target) => {
|
|
187
|
+
if (typeof target !== "function") {
|
|
188
|
+
throw new TypeError("`target` must be function");
|
|
189
|
+
}
|
|
190
|
+
for (const methodName of methodNames) {
|
|
191
|
+
if (target.prototype[methodName] !== void 0) {
|
|
192
|
+
throw new Error(`The property \`${methodName}\` already exists on \`target\``);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function getEmitteryProperty() {
|
|
196
|
+
Object.defineProperty(this, emitteryPropertyName, {
|
|
197
|
+
enumerable: false,
|
|
198
|
+
value: new _Emittery()
|
|
199
|
+
});
|
|
200
|
+
return this[emitteryPropertyName];
|
|
201
|
+
}
|
|
202
|
+
Object.defineProperty(target.prototype, emitteryPropertyName, {
|
|
203
|
+
enumerable: false,
|
|
204
|
+
get: getEmitteryProperty
|
|
205
|
+
});
|
|
206
|
+
const emitteryMethodCaller = (methodName) => function(...args) {
|
|
207
|
+
return this[emitteryPropertyName][methodName](...args);
|
|
208
|
+
};
|
|
209
|
+
for (const methodName of methodNames) {
|
|
210
|
+
Object.defineProperty(target.prototype, methodName, {
|
|
211
|
+
enumerable: false,
|
|
212
|
+
value: emitteryMethodCaller(methodName)
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
return target;
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
static get isDebugEnabled() {
|
|
219
|
+
var _a;
|
|
220
|
+
if (typeof ((_a = globalThis.process) == null ? void 0 : _a.env) !== "object") {
|
|
221
|
+
return isGlobalDebugEnabled;
|
|
222
|
+
}
|
|
223
|
+
const { env } = globalThis.process ?? { env: {} };
|
|
224
|
+
return env.DEBUG === "emittery" || env.DEBUG === "*" || isGlobalDebugEnabled;
|
|
225
|
+
}
|
|
226
|
+
static set isDebugEnabled(newValue) {
|
|
227
|
+
isGlobalDebugEnabled = newValue;
|
|
228
|
+
}
|
|
229
|
+
constructor(options = {}) {
|
|
230
|
+
anyMap.set(this, /* @__PURE__ */ new Set());
|
|
231
|
+
eventsMap.set(this, /* @__PURE__ */ new Map());
|
|
232
|
+
producersMap.set(this, /* @__PURE__ */ new Map());
|
|
233
|
+
producersMap.get(this).set(anyProducer, /* @__PURE__ */ new Set());
|
|
234
|
+
this.debug = options.debug ?? {};
|
|
235
|
+
if (this.debug.enabled === void 0) {
|
|
236
|
+
this.debug.enabled = false;
|
|
237
|
+
}
|
|
238
|
+
if (!this.debug.logger) {
|
|
239
|
+
this.debug.logger = (type, debugName, eventName, eventData) => {
|
|
240
|
+
try {
|
|
241
|
+
eventData = JSON.stringify(eventData);
|
|
242
|
+
} catch {
|
|
243
|
+
eventData = `Object with the following keys failed to stringify: ${Object.keys(eventData).join(",")}`;
|
|
244
|
+
}
|
|
245
|
+
if (typeof eventName === "symbol" || typeof eventName === "number") {
|
|
246
|
+
eventName = eventName.toString();
|
|
247
|
+
}
|
|
248
|
+
const currentTime = /* @__PURE__ */ new Date();
|
|
249
|
+
const logTime = `${currentTime.getHours()}:${currentTime.getMinutes()}:${currentTime.getSeconds()}.${currentTime.getMilliseconds()}`;
|
|
250
|
+
console.log(`[${logTime}][emittery:${type}][${debugName}] Event Name: ${eventName}
|
|
251
|
+
data: ${eventData}`);
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
logIfDebugEnabled(type, eventName, eventData) {
|
|
256
|
+
if (_Emittery.isDebugEnabled || this.debug.enabled) {
|
|
257
|
+
this.debug.logger(type, this.debug.name, eventName, eventData);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
on(eventNames, listener, { signal } = {}) {
|
|
261
|
+
assertListener(listener);
|
|
262
|
+
eventNames = Array.isArray(eventNames) ? eventNames : [eventNames];
|
|
263
|
+
for (const eventName of eventNames) {
|
|
264
|
+
assertEventName(eventName);
|
|
265
|
+
let set = getListeners(this, eventName);
|
|
266
|
+
if (!set) {
|
|
267
|
+
set = /* @__PURE__ */ new Set();
|
|
268
|
+
const events = eventsMap.get(this);
|
|
269
|
+
events.set(eventName, set);
|
|
270
|
+
}
|
|
271
|
+
set.add(listener);
|
|
272
|
+
this.logIfDebugEnabled("subscribe", eventName, void 0);
|
|
273
|
+
if (!isMetaEvent(eventName)) {
|
|
274
|
+
emitMetaEvent(this, listenerAdded, { eventName, listener });
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
const off = () => {
|
|
278
|
+
this.off(eventNames, listener);
|
|
279
|
+
signal == null ? void 0 : signal.removeEventListener("abort", off);
|
|
280
|
+
};
|
|
281
|
+
signal == null ? void 0 : signal.addEventListener("abort", off, { once: true });
|
|
282
|
+
if (signal == null ? void 0 : signal.aborted) {
|
|
283
|
+
off();
|
|
284
|
+
}
|
|
285
|
+
return off;
|
|
286
|
+
}
|
|
287
|
+
off(eventNames, listener) {
|
|
288
|
+
assertListener(listener);
|
|
289
|
+
eventNames = Array.isArray(eventNames) ? eventNames : [eventNames];
|
|
290
|
+
for (const eventName of eventNames) {
|
|
291
|
+
assertEventName(eventName);
|
|
292
|
+
const set = getListeners(this, eventName);
|
|
293
|
+
if (set) {
|
|
294
|
+
set.delete(listener);
|
|
295
|
+
if (set.size === 0) {
|
|
296
|
+
const events = eventsMap.get(this);
|
|
297
|
+
events.delete(eventName);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
this.logIfDebugEnabled("unsubscribe", eventName, void 0);
|
|
301
|
+
if (!isMetaEvent(eventName)) {
|
|
302
|
+
emitMetaEvent(this, listenerRemoved, { eventName, listener });
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
once(eventNames, predicate) {
|
|
307
|
+
if (predicate !== void 0 && typeof predicate !== "function") {
|
|
308
|
+
throw new TypeError("predicate must be a function");
|
|
309
|
+
}
|
|
310
|
+
let off_;
|
|
311
|
+
const promise = new Promise((resolve) => {
|
|
312
|
+
off_ = this.on(eventNames, (data) => {
|
|
313
|
+
if (predicate && !predicate(data)) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
off_();
|
|
317
|
+
resolve(data);
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
promise.off = off_;
|
|
321
|
+
return promise;
|
|
322
|
+
}
|
|
323
|
+
events(eventNames) {
|
|
324
|
+
eventNames = Array.isArray(eventNames) ? eventNames : [eventNames];
|
|
325
|
+
for (const eventName of eventNames) {
|
|
326
|
+
assertEventName(eventName);
|
|
327
|
+
}
|
|
328
|
+
return iterator(this, eventNames);
|
|
329
|
+
}
|
|
330
|
+
async emit(eventName, eventData) {
|
|
331
|
+
assertEventName(eventName);
|
|
332
|
+
if (isMetaEvent(eventName) && !canEmitMetaEvents) {
|
|
333
|
+
throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");
|
|
334
|
+
}
|
|
335
|
+
this.logIfDebugEnabled("emit", eventName, eventData);
|
|
336
|
+
enqueueProducers(this, eventName, eventData);
|
|
337
|
+
const listeners = getListeners(this, eventName) ?? /* @__PURE__ */ new Set();
|
|
338
|
+
const anyListeners = anyMap.get(this);
|
|
339
|
+
const staticListeners = [...listeners];
|
|
340
|
+
const staticAnyListeners = isMetaEvent(eventName) ? [] : [...anyListeners];
|
|
341
|
+
await resolvedPromise;
|
|
342
|
+
await Promise.all([
|
|
343
|
+
...staticListeners.map(async (listener) => {
|
|
344
|
+
if (listeners.has(listener)) {
|
|
345
|
+
return listener(eventData);
|
|
346
|
+
}
|
|
347
|
+
}),
|
|
348
|
+
...staticAnyListeners.map(async (listener) => {
|
|
349
|
+
if (anyListeners.has(listener)) {
|
|
350
|
+
return listener(eventName, eventData);
|
|
351
|
+
}
|
|
352
|
+
})
|
|
353
|
+
]);
|
|
354
|
+
}
|
|
355
|
+
async emitSerial(eventName, eventData) {
|
|
356
|
+
assertEventName(eventName);
|
|
357
|
+
if (isMetaEvent(eventName) && !canEmitMetaEvents) {
|
|
358
|
+
throw new TypeError("`eventName` cannot be meta event `listenerAdded` or `listenerRemoved`");
|
|
359
|
+
}
|
|
360
|
+
this.logIfDebugEnabled("emitSerial", eventName, eventData);
|
|
361
|
+
enqueueProducers(this, eventName, eventData);
|
|
362
|
+
const listeners = getListeners(this, eventName) ?? /* @__PURE__ */ new Set();
|
|
363
|
+
const anyListeners = anyMap.get(this);
|
|
364
|
+
const staticListeners = [...listeners];
|
|
365
|
+
const staticAnyListeners = isMetaEvent(eventName) ? [] : [...anyListeners];
|
|
366
|
+
await resolvedPromise;
|
|
367
|
+
for (const listener of staticListeners) {
|
|
368
|
+
if (listeners.has(listener)) {
|
|
369
|
+
await listener(eventData);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
for (const listener of staticAnyListeners) {
|
|
373
|
+
if (anyListeners.has(listener)) {
|
|
374
|
+
await listener(eventName, eventData);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
onAny(listener, { signal } = {}) {
|
|
379
|
+
assertListener(listener);
|
|
380
|
+
this.logIfDebugEnabled("subscribeAny", void 0, void 0);
|
|
381
|
+
anyMap.get(this).add(listener);
|
|
382
|
+
emitMetaEvent(this, listenerAdded, { listener });
|
|
383
|
+
const offAny = () => {
|
|
384
|
+
this.offAny(listener);
|
|
385
|
+
signal == null ? void 0 : signal.removeEventListener("abort", offAny);
|
|
386
|
+
};
|
|
387
|
+
signal == null ? void 0 : signal.addEventListener("abort", offAny, { once: true });
|
|
388
|
+
if (signal == null ? void 0 : signal.aborted) {
|
|
389
|
+
offAny();
|
|
390
|
+
}
|
|
391
|
+
return offAny;
|
|
392
|
+
}
|
|
393
|
+
anyEvent() {
|
|
394
|
+
return iterator(this);
|
|
395
|
+
}
|
|
396
|
+
offAny(listener) {
|
|
397
|
+
assertListener(listener);
|
|
398
|
+
this.logIfDebugEnabled("unsubscribeAny", void 0, void 0);
|
|
399
|
+
emitMetaEvent(this, listenerRemoved, { listener });
|
|
400
|
+
anyMap.get(this).delete(listener);
|
|
401
|
+
}
|
|
402
|
+
clearListeners(eventNames) {
|
|
403
|
+
eventNames = Array.isArray(eventNames) ? eventNames : [eventNames];
|
|
404
|
+
for (const eventName of eventNames) {
|
|
405
|
+
this.logIfDebugEnabled("clear", eventName, void 0);
|
|
406
|
+
if (isEventKeyType(eventName)) {
|
|
407
|
+
const set = getListeners(this, eventName);
|
|
408
|
+
if (set) {
|
|
409
|
+
set.clear();
|
|
410
|
+
}
|
|
411
|
+
const producers = getEventProducers(this, eventName);
|
|
412
|
+
if (producers) {
|
|
413
|
+
for (const producer of producers) {
|
|
414
|
+
producer.finish();
|
|
415
|
+
}
|
|
416
|
+
producers.clear();
|
|
417
|
+
}
|
|
418
|
+
} else {
|
|
419
|
+
anyMap.get(this).clear();
|
|
420
|
+
for (const [eventName2, listeners] of eventsMap.get(this).entries()) {
|
|
421
|
+
listeners.clear();
|
|
422
|
+
eventsMap.get(this).delete(eventName2);
|
|
423
|
+
}
|
|
424
|
+
for (const [eventName2, producers] of producersMap.get(this).entries()) {
|
|
425
|
+
for (const producer of producers) {
|
|
426
|
+
producer.finish();
|
|
427
|
+
}
|
|
428
|
+
producers.clear();
|
|
429
|
+
producersMap.get(this).delete(eventName2);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
listenerCount(eventNames) {
|
|
435
|
+
var _a, _b, _c;
|
|
436
|
+
eventNames = Array.isArray(eventNames) ? eventNames : [eventNames];
|
|
437
|
+
let count = 0;
|
|
438
|
+
for (const eventName of eventNames) {
|
|
439
|
+
if (isEventKeyType(eventName)) {
|
|
440
|
+
count += anyMap.get(this).size + (((_a = getListeners(this, eventName)) == null ? void 0 : _a.size) ?? 0) + (((_b = getEventProducers(this, eventName)) == null ? void 0 : _b.size) ?? 0) + (((_c = getEventProducers(this)) == null ? void 0 : _c.size) ?? 0);
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
if (eventName !== void 0) {
|
|
444
|
+
assertEventName(eventName);
|
|
445
|
+
}
|
|
446
|
+
count += anyMap.get(this).size;
|
|
447
|
+
for (const value of eventsMap.get(this).values()) {
|
|
448
|
+
count += value.size;
|
|
449
|
+
}
|
|
450
|
+
for (const value of producersMap.get(this).values()) {
|
|
451
|
+
count += value.size;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return count;
|
|
455
|
+
}
|
|
456
|
+
bindMethods(target, methodNames) {
|
|
457
|
+
if (typeof target !== "object" || target === null) {
|
|
458
|
+
throw new TypeError("`target` must be an object");
|
|
459
|
+
}
|
|
460
|
+
methodNames = defaultMethodNamesOrAssert(methodNames);
|
|
461
|
+
for (const methodName of methodNames) {
|
|
462
|
+
if (target[methodName] !== void 0) {
|
|
463
|
+
throw new Error(`The property \`${methodName}\` already exists on \`target\``);
|
|
464
|
+
}
|
|
465
|
+
Object.defineProperty(target, methodName, {
|
|
466
|
+
enumerable: false,
|
|
467
|
+
value: this[methodName].bind(this)
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
var allEmitteryMethods = Object.getOwnPropertyNames(Emittery.prototype).filter((v) => v !== "constructor");
|
|
473
|
+
Object.defineProperty(Emittery, "listenerAdded", {
|
|
474
|
+
value: listenerAdded,
|
|
475
|
+
writable: false,
|
|
476
|
+
enumerable: true,
|
|
477
|
+
configurable: false
|
|
478
|
+
});
|
|
479
|
+
Object.defineProperty(Emittery, "listenerRemoved", {
|
|
480
|
+
value: listenerRemoved,
|
|
481
|
+
writable: false,
|
|
482
|
+
enumerable: true,
|
|
483
|
+
configurable: false
|
|
484
|
+
});
|
|
485
|
+
|
|
486
|
+
// src/index.ts
|
|
487
|
+
var WS_URL = "wss://ws.tzevaadom.co.il/socket?platform=WEB";
|
|
488
|
+
var HEADERS = { Origin: "https://www.tzevaadom.co.il" };
|
|
489
|
+
var MAX_DELAY = 1e4;
|
|
490
|
+
var TzevaadomClient = class extends Emittery {
|
|
491
|
+
attempt = 0;
|
|
492
|
+
ws = null;
|
|
493
|
+
constructor() {
|
|
494
|
+
super();
|
|
495
|
+
this.connect();
|
|
496
|
+
}
|
|
497
|
+
connect() {
|
|
498
|
+
this.ws = new import_ws.default(WS_URL, { headers: HEADERS });
|
|
499
|
+
this.ws.on("open", () => {
|
|
500
|
+
this.attempt = 0;
|
|
501
|
+
this.emit("connected", void 0);
|
|
502
|
+
});
|
|
503
|
+
this.ws.on("message", (raw) => {
|
|
504
|
+
if (typeof raw !== "string" && !Buffer.isBuffer(raw))
|
|
505
|
+
return;
|
|
506
|
+
try {
|
|
507
|
+
const { type, data } = JSON.parse(raw.toString());
|
|
508
|
+
this.emit(type, data);
|
|
509
|
+
} catch {
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
this.ws.on(
|
|
513
|
+
"error",
|
|
514
|
+
(err) => {
|
|
515
|
+
console.error("ws error", err);
|
|
516
|
+
this.emit("error", err);
|
|
517
|
+
}
|
|
518
|
+
);
|
|
519
|
+
this.ws.on(
|
|
520
|
+
"close",
|
|
521
|
+
(code) => {
|
|
522
|
+
const delay = Math.min(1e3 * 2 ** this.attempt++, MAX_DELAY);
|
|
523
|
+
this.emit("disconnected", void 0);
|
|
524
|
+
console.log(`Closed (${code}) \u2014 reconnecting in ${delay}ms...`);
|
|
525
|
+
setTimeout(() => this.connect(), delay);
|
|
526
|
+
}
|
|
527
|
+
);
|
|
528
|
+
}
|
|
529
|
+
disconnect() {
|
|
530
|
+
var _a, _b;
|
|
531
|
+
(_a = this.ws) == null ? void 0 : _a.removeAllListeners();
|
|
532
|
+
(_b = this.ws) == null ? void 0 : _b.close();
|
|
533
|
+
this.ws = null;
|
|
534
|
+
}
|
|
535
|
+
};
|
|
536
|
+
var createClient = () => new TzevaadomClient();
|
|
537
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
538
|
+
0 && (module.exports = {
|
|
539
|
+
createClient
|
|
540
|
+
});
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Emittery from 'emittery';
|
|
2
|
+
|
|
3
|
+
interface AlertData {
|
|
4
|
+
notificationId: string;
|
|
5
|
+
time: number;
|
|
6
|
+
threat: number;
|
|
7
|
+
isDrill: boolean;
|
|
8
|
+
cities: string[];
|
|
9
|
+
}
|
|
10
|
+
interface ListsVersionsData {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
interface SystemMessageData {
|
|
14
|
+
id: number;
|
|
15
|
+
time: string;
|
|
16
|
+
titleHe: string;
|
|
17
|
+
titleAr: string;
|
|
18
|
+
titleEn: string;
|
|
19
|
+
titleEs: string;
|
|
20
|
+
titleRu: string;
|
|
21
|
+
bodyHe: string;
|
|
22
|
+
bodyAr: string;
|
|
23
|
+
bodyEn: string;
|
|
24
|
+
bodyEs: string;
|
|
25
|
+
bodyRu: string;
|
|
26
|
+
forIos: boolean;
|
|
27
|
+
forAndroid: boolean;
|
|
28
|
+
display: boolean;
|
|
29
|
+
untilVersionIos: string | null;
|
|
30
|
+
untilVersionAndroid: string | null;
|
|
31
|
+
instruction: boolean;
|
|
32
|
+
areasIds: number[];
|
|
33
|
+
citiesIds: number[];
|
|
34
|
+
instructionType: number;
|
|
35
|
+
pinUntil: string | null;
|
|
36
|
+
notificationId: string;
|
|
37
|
+
instructionReadingDescName: string;
|
|
38
|
+
}
|
|
39
|
+
type EventMap = {
|
|
40
|
+
ALERT: AlertData;
|
|
41
|
+
LISTS_VERSIONS: ListsVersionsData;
|
|
42
|
+
SYSTEM_MESSAGE: SystemMessageData;
|
|
43
|
+
connected: undefined;
|
|
44
|
+
disconnected: undefined;
|
|
45
|
+
error: Error;
|
|
46
|
+
};
|
|
47
|
+
declare class TzevaadomClient extends Emittery<EventMap> {
|
|
48
|
+
private attempt;
|
|
49
|
+
private ws;
|
|
50
|
+
constructor();
|
|
51
|
+
private connect;
|
|
52
|
+
disconnect(): void;
|
|
53
|
+
}
|
|
54
|
+
declare const createClient: () => TzevaadomClient;
|
|
55
|
+
|
|
56
|
+
export { type AlertData, type ListsVersionsData, type SystemMessageData, createClient };
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rg-dev/tzevaadom-api",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"test": "tsup && node dist/index.cjs",
|
|
7
|
+
"build": "tsup"
|
|
8
|
+
},
|
|
9
|
+
"author": "",
|
|
10
|
+
"license": "ISC",
|
|
11
|
+
"main": "./dist/index.cjs",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
15
|
+
"module": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"type": "module",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"import": "./dist/index.js",
|
|
21
|
+
"require": "./dist/index.cjs"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^14.18.36",
|
|
26
|
+
"@types/ws": "^8.18.1",
|
|
27
|
+
"builtin-modules": "^3.3.0",
|
|
28
|
+
"execa": "^8.0.1",
|
|
29
|
+
"tsup": "^8.0.2",
|
|
30
|
+
"emittery": "^1.2.1",
|
|
31
|
+
|
|
32
|
+
"typescript": "^5.4.5"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"ws": "^8.19.0"
|
|
39
|
+
}
|
|
40
|
+
}
|