arifa-client 1.1.14 → 1.3.15

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.
@@ -2,73 +2,31 @@ class ArifaClient {
2
2
  constructor({ apiKey, client, wsUrl, apiEndpoint }) {
3
3
  this.ws = null;
4
4
  this.isConnected = false;
5
- this.reconnectAttempts = 0;
6
5
  this.reconnectTimer = null;
6
+ this.reconnectAttempts = 0;
7
7
  this.reconnectScheduled = false;
8
- this.internetOnline = true;
9
- this.internetTimer = null;
8
+ this.MAX_BACKOFF = 60000;
9
+ this.MAX_RECONNECTS = 5;
10
10
  this.recipient = null;
11
11
  this.listeners = new Set();
12
12
  this.connectionListeners = new Set();
13
- this.HEALTH_URL = "https://notifications.arifa.dev/health";
14
- this.MAX_BACKOFF = 60000;
13
+ this.ackedEvents = new Set();
15
14
  this.apiKey = apiKey;
16
15
  this.client = client;
17
16
  this.wsUrl = wsUrl || "wss://notifications.arifa.dev/ws";
18
17
  this.apiEndpoint = apiEndpoint || "https://notifications.arifa.dev/notify";
19
- if (typeof window !== "undefined") {
20
- this.startInternetMonitor();
21
- }
22
18
  }
19
+ /* ---------------- UTIL ---------------- */
23
20
  safeParse(input) {
24
21
  try {
25
22
  if (typeof input === "object")
26
23
  return input;
27
- const parsed = JSON.parse(String(input));
28
- return typeof parsed === "string" ? JSON.parse(parsed) : parsed;
24
+ return JSON.parse(String(input));
29
25
  }
30
26
  catch (_a) {
31
27
  return null;
32
28
  }
33
29
  }
34
- /* ---------------- INTERNET DETECTION ---------------- */
35
- async checkInternet() {
36
- try {
37
- const controller = new AbortController();
38
- const timeout = setTimeout(() => controller.abort(), 3000);
39
- await fetch(this.HEALTH_URL, {
40
- method: "HEAD",
41
- cache: "no-store",
42
- signal: controller.signal,
43
- });
44
- clearTimeout(timeout);
45
- return true;
46
- }
47
- catch (_a) {
48
- return false;
49
- }
50
- }
51
- startInternetMonitor() {
52
- const update = async () => {
53
- var _a;
54
- const online = await this.checkInternet();
55
- if (online !== this.internetOnline) {
56
- this.internetOnline = online;
57
- if (online) {
58
- this.reconnectAttempts = 0;
59
- this.connect();
60
- }
61
- else {
62
- (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
63
- this.emitConnection("disconnected");
64
- }
65
- }
66
- };
67
- update();
68
- window.addEventListener("online", update);
69
- window.addEventListener("offline", update);
70
- this.internetTimer = window.setInterval(update, 5000);
71
- }
72
30
  /* ---------------- PUBLIC API ---------------- */
73
31
  subscribe(recipient) {
74
32
  if (!this.recipient) {
@@ -80,11 +38,8 @@ class ArifaClient {
80
38
  this.listeners.add(callback);
81
39
  return () => this.listeners.delete(callback);
82
40
  },
83
- unsubscribe: (callback) => {
84
- if (callback)
85
- this.listeners.delete(callback);
86
- else
87
- this.listeners.clear();
41
+ unsubscribe: () => {
42
+ this.listeners.clear();
88
43
  },
89
44
  };
90
45
  }
@@ -92,27 +47,28 @@ class ArifaClient {
92
47
  this.connectionListeners.add(callback);
93
48
  return () => this.connectionListeners.delete(callback);
94
49
  }
50
+ connected() {
51
+ return this.isConnected;
52
+ }
95
53
  emitConnection(state) {
96
54
  this.connectionListeners.forEach((cb) => cb(state));
97
55
  }
98
56
  /* ---------------- WEBSOCKET ---------------- */
99
57
  connect() {
100
- if (!this.recipient || !this.internetOnline)
58
+ if (!this.recipient)
101
59
  return;
102
60
  if (this.ws &&
103
61
  (this.ws.readyState === WebSocket.OPEN ||
104
- this.ws.readyState === WebSocket.CONNECTING)) {
62
+ this.ws.readyState === WebSocket.CONNECTING))
105
63
  return;
106
- }
107
64
  this.ws = new WebSocket(`${this.wsUrl}/connect?api_key=${encodeURIComponent(this.apiKey)}&recipient=${encodeURIComponent(this.recipient)}&client=${this.client}`);
108
65
  this.ws.onopen = () => {
109
66
  this.isConnected = true;
110
67
  this.reconnectAttempts = 0;
111
68
  this.reconnectScheduled = false;
112
- if (this.reconnectTimer) {
69
+ this.ackedEvents.clear();
70
+ if (this.reconnectTimer)
113
71
  clearTimeout(this.reconnectTimer);
114
- this.reconnectTimer = null;
115
- }
116
72
  this.emitConnection("connected");
117
73
  };
118
74
  this.ws.onmessage = (event) => {
@@ -120,15 +76,13 @@ class ArifaClient {
120
76
  const parsed = this.safeParse(event.data);
121
77
  if (!parsed)
122
78
  return;
123
- if ((_a = parsed === null || parsed === void 0 ? void 0 : parsed.ack) === null || _a === void 0 ? void 0 : _a.event_id) {
124
- (_b = this.ws) === null || _b === void 0 ? void 0 : _b.send(JSON.stringify({
125
- kind: "ack",
126
- event_id: parsed.ack.event_id,
127
- }));
79
+ // ACK exactly once
80
+ if (((_a = parsed.ack) === null || _a === void 0 ? void 0 : _a.event_id) && !this.ackedEvents.has(parsed.ack.event_id)) {
81
+ this.ackedEvents.add(parsed.ack.event_id);
82
+ (_b = this.ws) === null || _b === void 0 ? void 0 : _b.send(JSON.stringify({ kind: "ack", event_id: parsed.ack.event_id }));
128
83
  }
129
- if (parsed.event) {
84
+ if (parsed.event)
130
85
  this.listeners.forEach((fn) => fn(parsed.event));
131
- }
132
86
  };
133
87
  this.ws.onclose = () => {
134
88
  this.isConnected = false;
@@ -141,7 +95,8 @@ class ArifaClient {
141
95
  };
142
96
  }
143
97
  scheduleReconnect() {
144
- if (!this.internetOnline || this.reconnectScheduled)
98
+ if (this.reconnectScheduled ||
99
+ this.reconnectAttempts >= this.MAX_RECONNECTS)
145
100
  return;
146
101
  this.reconnectScheduled = true;
147
102
  const base = Math.min(this.MAX_BACKOFF, 1000 * 2 ** this.reconnectAttempts);
@@ -160,10 +115,7 @@ class ArifaClient {
160
115
  try {
161
116
  res = await fetch(this.apiEndpoint, {
162
117
  method: "POST",
163
- headers: {
164
- "Content-Type": "application/json",
165
- },
166
- signal: controller.signal,
118
+ headers: { "Content-Type": "application/json" },
167
119
  body: JSON.stringify({
168
120
  recipient,
169
121
  payload,
@@ -171,15 +123,15 @@ class ArifaClient {
171
123
  client: client || this.client,
172
124
  origin,
173
125
  }),
126
+ signal: controller.signal,
174
127
  });
175
128
  }
176
129
  finally {
177
130
  clearTimeout(timeout);
178
131
  }
179
132
  const json = await res.json();
180
- if (!res.ok) {
133
+ if (!res.ok)
181
134
  throw new Error((json === null || json === void 0 ? void 0 : json.message) || "Notification failed");
182
- }
183
135
  return json;
184
136
  }
185
137
  /* ---------------- LIFECYCLE ---------------- */
@@ -187,16 +139,11 @@ class ArifaClient {
187
139
  var _a;
188
140
  if (this.reconnectTimer)
189
141
  clearTimeout(this.reconnectTimer);
190
- if (this.internetTimer)
191
- clearInterval(this.internetTimer);
192
142
  (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
193
143
  this.ws = null;
194
144
  this.isConnected = false;
195
145
  this.emitConnection("disconnected");
196
146
  }
197
- connected() {
198
- return this.isConnected;
199
- }
200
147
  }
201
148
 
202
149
  export { ArifaClient as default };
@@ -5,73 +5,31 @@ var ArifaClient = (function () {
5
5
  constructor({ apiKey, client, wsUrl, apiEndpoint }) {
6
6
  this.ws = null;
7
7
  this.isConnected = false;
8
- this.reconnectAttempts = 0;
9
8
  this.reconnectTimer = null;
9
+ this.reconnectAttempts = 0;
10
10
  this.reconnectScheduled = false;
11
- this.internetOnline = true;
12
- this.internetTimer = null;
11
+ this.MAX_BACKOFF = 60000;
12
+ this.MAX_RECONNECTS = 5;
13
13
  this.recipient = null;
14
14
  this.listeners = new Set();
15
15
  this.connectionListeners = new Set();
16
- this.HEALTH_URL = "https://notifications.arifa.dev/health";
17
- this.MAX_BACKOFF = 60000;
16
+ this.ackedEvents = new Set();
18
17
  this.apiKey = apiKey;
19
18
  this.client = client;
20
19
  this.wsUrl = wsUrl || "wss://notifications.arifa.dev/ws";
21
20
  this.apiEndpoint = apiEndpoint || "https://notifications.arifa.dev/notify";
22
- if (typeof window !== "undefined") {
23
- this.startInternetMonitor();
24
- }
25
21
  }
22
+ /* ---------------- UTIL ---------------- */
26
23
  safeParse(input) {
27
24
  try {
28
25
  if (typeof input === "object")
29
26
  return input;
30
- const parsed = JSON.parse(String(input));
31
- return typeof parsed === "string" ? JSON.parse(parsed) : parsed;
27
+ return JSON.parse(String(input));
32
28
  }
33
29
  catch (_a) {
34
30
  return null;
35
31
  }
36
32
  }
37
- /* ---------------- INTERNET DETECTION ---------------- */
38
- async checkInternet() {
39
- try {
40
- const controller = new AbortController();
41
- const timeout = setTimeout(() => controller.abort(), 3000);
42
- await fetch(this.HEALTH_URL, {
43
- method: "HEAD",
44
- cache: "no-store",
45
- signal: controller.signal,
46
- });
47
- clearTimeout(timeout);
48
- return true;
49
- }
50
- catch (_a) {
51
- return false;
52
- }
53
- }
54
- startInternetMonitor() {
55
- const update = async () => {
56
- var _a;
57
- const online = await this.checkInternet();
58
- if (online !== this.internetOnline) {
59
- this.internetOnline = online;
60
- if (online) {
61
- this.reconnectAttempts = 0;
62
- this.connect();
63
- }
64
- else {
65
- (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
66
- this.emitConnection("disconnected");
67
- }
68
- }
69
- };
70
- update();
71
- window.addEventListener("online", update);
72
- window.addEventListener("offline", update);
73
- this.internetTimer = window.setInterval(update, 5000);
74
- }
75
33
  /* ---------------- PUBLIC API ---------------- */
76
34
  subscribe(recipient) {
77
35
  if (!this.recipient) {
@@ -83,11 +41,8 @@ var ArifaClient = (function () {
83
41
  this.listeners.add(callback);
84
42
  return () => this.listeners.delete(callback);
85
43
  },
86
- unsubscribe: (callback) => {
87
- if (callback)
88
- this.listeners.delete(callback);
89
- else
90
- this.listeners.clear();
44
+ unsubscribe: () => {
45
+ this.listeners.clear();
91
46
  },
92
47
  };
93
48
  }
@@ -95,27 +50,28 @@ var ArifaClient = (function () {
95
50
  this.connectionListeners.add(callback);
96
51
  return () => this.connectionListeners.delete(callback);
97
52
  }
53
+ connected() {
54
+ return this.isConnected;
55
+ }
98
56
  emitConnection(state) {
99
57
  this.connectionListeners.forEach((cb) => cb(state));
100
58
  }
101
59
  /* ---------------- WEBSOCKET ---------------- */
102
60
  connect() {
103
- if (!this.recipient || !this.internetOnline)
61
+ if (!this.recipient)
104
62
  return;
105
63
  if (this.ws &&
106
64
  (this.ws.readyState === WebSocket.OPEN ||
107
- this.ws.readyState === WebSocket.CONNECTING)) {
65
+ this.ws.readyState === WebSocket.CONNECTING))
108
66
  return;
109
- }
110
67
  this.ws = new WebSocket(`${this.wsUrl}/connect?api_key=${encodeURIComponent(this.apiKey)}&recipient=${encodeURIComponent(this.recipient)}&client=${this.client}`);
111
68
  this.ws.onopen = () => {
112
69
  this.isConnected = true;
113
70
  this.reconnectAttempts = 0;
114
71
  this.reconnectScheduled = false;
115
- if (this.reconnectTimer) {
72
+ this.ackedEvents.clear();
73
+ if (this.reconnectTimer)
116
74
  clearTimeout(this.reconnectTimer);
117
- this.reconnectTimer = null;
118
- }
119
75
  this.emitConnection("connected");
120
76
  };
121
77
  this.ws.onmessage = (event) => {
@@ -123,15 +79,13 @@ var ArifaClient = (function () {
123
79
  const parsed = this.safeParse(event.data);
124
80
  if (!parsed)
125
81
  return;
126
- if ((_a = parsed === null || parsed === void 0 ? void 0 : parsed.ack) === null || _a === void 0 ? void 0 : _a.event_id) {
127
- (_b = this.ws) === null || _b === void 0 ? void 0 : _b.send(JSON.stringify({
128
- kind: "ack",
129
- event_id: parsed.ack.event_id,
130
- }));
82
+ // ACK exactly once
83
+ if (((_a = parsed.ack) === null || _a === void 0 ? void 0 : _a.event_id) && !this.ackedEvents.has(parsed.ack.event_id)) {
84
+ this.ackedEvents.add(parsed.ack.event_id);
85
+ (_b = this.ws) === null || _b === void 0 ? void 0 : _b.send(JSON.stringify({ kind: "ack", event_id: parsed.ack.event_id }));
131
86
  }
132
- if (parsed.event) {
87
+ if (parsed.event)
133
88
  this.listeners.forEach((fn) => fn(parsed.event));
134
- }
135
89
  };
136
90
  this.ws.onclose = () => {
137
91
  this.isConnected = false;
@@ -144,7 +98,8 @@ var ArifaClient = (function () {
144
98
  };
145
99
  }
146
100
  scheduleReconnect() {
147
- if (!this.internetOnline || this.reconnectScheduled)
101
+ if (this.reconnectScheduled ||
102
+ this.reconnectAttempts >= this.MAX_RECONNECTS)
148
103
  return;
149
104
  this.reconnectScheduled = true;
150
105
  const base = Math.min(this.MAX_BACKOFF, 1000 * 2 ** this.reconnectAttempts);
@@ -163,10 +118,7 @@ var ArifaClient = (function () {
163
118
  try {
164
119
  res = await fetch(this.apiEndpoint, {
165
120
  method: "POST",
166
- headers: {
167
- "Content-Type": "application/json",
168
- },
169
- signal: controller.signal,
121
+ headers: { "Content-Type": "application/json" },
170
122
  body: JSON.stringify({
171
123
  recipient,
172
124
  payload,
@@ -174,15 +126,15 @@ var ArifaClient = (function () {
174
126
  client: client || this.client,
175
127
  origin,
176
128
  }),
129
+ signal: controller.signal,
177
130
  });
178
131
  }
179
132
  finally {
180
133
  clearTimeout(timeout);
181
134
  }
182
135
  const json = await res.json();
183
- if (!res.ok) {
136
+ if (!res.ok)
184
137
  throw new Error((json === null || json === void 0 ? void 0 : json.message) || "Notification failed");
185
- }
186
138
  return json;
187
139
  }
188
140
  /* ---------------- LIFECYCLE ---------------- */
@@ -190,16 +142,11 @@ var ArifaClient = (function () {
190
142
  var _a;
191
143
  if (this.reconnectTimer)
192
144
  clearTimeout(this.reconnectTimer);
193
- if (this.internetTimer)
194
- clearInterval(this.internetTimer);
195
145
  (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
196
146
  this.ws = null;
197
147
  this.isConnected = false;
198
148
  this.emitConnection("disconnected");
199
149
  }
200
- connected() {
201
- return this.isConnected;
202
- }
203
150
  }
204
151
 
205
152
  return ArifaClient;
@@ -24,31 +24,28 @@ export declare class ArifaClient {
24
24
  private apiEndpoint;
25
25
  private ws;
26
26
  private isConnected;
27
- private reconnectAttempts;
28
27
  private reconnectTimer;
28
+ private reconnectAttempts;
29
29
  private reconnectScheduled;
30
- private internetOnline;
31
- private internetTimer;
30
+ private readonly MAX_BACKOFF;
31
+ private readonly MAX_RECONNECTS;
32
32
  private recipient;
33
33
  private listeners;
34
34
  private connectionListeners;
35
- private readonly HEALTH_URL;
36
- private readonly MAX_BACKOFF;
35
+ private ackedEvents;
37
36
  constructor({ apiKey, client, wsUrl, apiEndpoint }: ArifaClientOptions);
38
37
  private safeParse;
39
- private checkInternet;
40
- private startInternetMonitor;
41
38
  subscribe(recipient: string): {
42
39
  listen: (callback: (event: ArifaEvent) => void) => () => boolean;
43
- unsubscribe: (callback?: (event: ArifaEvent) => void) => void;
40
+ unsubscribe: () => void;
44
41
  };
45
42
  onConnectionChange(callback: ConnectionCallback): () => boolean;
43
+ connected(): boolean;
46
44
  private emitConnection;
47
45
  private connect;
48
46
  private scheduleReconnect;
49
47
  notify({ recipient, payload, client, origin, }: NotifyPayload): Promise<NotifyResponse>;
50
48
  disconnect(): void;
51
- connected(): boolean;
52
49
  }
53
50
  export {};
54
51
  //# sourceMappingURL=ArifaClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArifaClient.d.ts","sourceRoot":"","sources":["../../src/ArifaClient.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,eAAe,GAAG,WAAW,GAAG,cAAc,CAAC;AAEpD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAE3D,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,kBAAkB,CAAS;IAEnC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4C;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;gBAE1B,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,kBAAkB;IAWtE,OAAO,CAAC,SAAS;YAYH,aAAa;IAkB3B,OAAO,CAAC,oBAAoB;IA2B5B,SAAS,CAAC,SAAS,EAAE,MAAM;2BAOJ,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;iCAIrB,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;;IAOxD,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB;IAK/C,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,OAAO;IA2Df,OAAO,CAAC,iBAAiB;IAkBnB,MAAM,CAAC,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAoC1C,UAAU;IAUV,SAAS;CAGV"}
1
+ {"version":3,"file":"ArifaClient.d.ts","sourceRoot":"","sources":["../../src/ArifaClient.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,eAAe,GAAG,WAAW,GAAG,cAAc,CAAC;AAEpD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAE3D,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAK;IAEpC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,mBAAmB,CAAiC;IAE5D,OAAO,CAAC,WAAW,CAAqB;gBAE5B,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,kBAAkB;IAQtE,OAAO,CAAC,SAAS;IAUjB,SAAS,CAAC,SAAS,EAAE,MAAM;2BAOJ,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;;;IAUlD,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB;IAK/C,SAAS;IAIT,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,OAAO;IAmDf,OAAO,CAAC,iBAAiB;IAmBnB,MAAM,CAAC,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA4B1C,UAAU;CAQX"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arifa-client",
3
- "version": "1.1.14",
3
+ "version": "1.3.15",
4
4
  "description": "JavaScript/TypeScript client SDK for Arifa Realtime Notification Service",
5
5
  "main": "dist/arifa-client.iife.js",
6
6
  "module": "dist/arifa-client.esm.js",