@kalamba/sdk 0.30.0 → 0.35.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.js CHANGED
@@ -1,353 +1,77 @@
1
1
  /**
2
2
  * BSD 3-Clause License
3
- * Copyright (c) 2025, Kalamba Games Limited
3
+ * Copyright (c) 2026, Kalamba Games Limited
4
4
  */
5
- var S = (t) => {
6
- throw TypeError(t);
5
+ import { T as n, R as a } from "./errors-CyJnvnOm.js";
6
+ import { a as g } from "./errors-CyJnvnOm.js";
7
+ import { I as p } from "./encoders-BdN6uQHH.js";
8
+ import { d as y, e as E } from "./encoders-BdN6uQHH.js";
9
+ const d = () => {
7
10
  };
8
- var h = (t, i, m) => i.has(t) || S("Cannot " + m);
9
- var a = (t, i, m) => (h(t, i, "read from private field"), m ? m.call(t) : i.get(t)), F = (t, i, m) => i.has(t) ? S("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(t) : i.set(t, m), C = (t, i, m, n) => (h(t, i, "write to private field"), n ? n.call(t, m) : i.set(t, m), m);
10
- import { T as A, R as T } from "./errors-NnLrKjTz.js";
11
- import { a as X } from "./errors-NnLrKjTz.js";
12
- import { d as $, e as V } from "./encoders-BDr7fjKQ.js";
13
- function N(t, i) {
14
- return t * i / 100;
15
- }
16
- function w(t, i, m) {
17
- if (!["string", "number"].includes(typeof i))
18
- return "NaN";
19
- const { locales: n } = t;
20
- try {
21
- return new Intl.NumberFormat(n, {
22
- ...m,
23
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
24
- // @ts-ignore
25
- numberingSystem: "latn",
26
- style: "decimal"
27
- }).format(+i);
28
- } catch {
29
- return `${i}`;
30
- }
31
- }
32
- const l = "XTS";
33
- var u = /* @__PURE__ */ ((t) => (t.Currency = "Currency", t.Number = "Number", t))(u || {}), c = /* @__PURE__ */ ((t) => (t.Coins = "Coins", t.Money = "Money", t))(c || {});
34
- const f = {
35
- /* eslint-disable sort-keys-fix/sort-keys-fix */
36
- // ARSB is the internal currency relevant for invoicing purposes, players should see it as ARS
37
- ARSB: { displayAs: "ARS", maximumFractionDigits: 2, minimumFractionDigits: 2 },
38
- // Social Casino chips
39
- CHIPS: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
40
- // Binance Coin
41
- BNB: { maximumFractionDigits: 6, minimumFractionDigits: 6 },
42
- // Binance USD
43
- BUSD: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
44
- // Bitcoin
45
- BTC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
46
- mBTC: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
47
- uBTC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
48
- // Bitcoin Cash
49
- BCH: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
50
- mBCH: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
51
- // Ethereum
52
- ETH: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
53
- mETH: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
54
- uETH: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
55
- // SocialCoin
56
- SOC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
57
- // Litecoins
58
- LTC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
59
- mLTC: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
60
- uLTC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
61
- // Dogecoin
62
- DOG: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
63
- // USD Coin
64
- USDC: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
65
- // Tether
66
- USDT: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
67
- // Tron
68
- TRX: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
69
- // TrueUSD
70
- TUSD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
71
- // Dai
72
- DAI: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
73
- // Monero
74
- XMR: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
75
- // CBET
76
- CBET: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
77
- kCBET: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
78
- // Shiba Inu
79
- SHIB: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
80
- kSHIB: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
81
- // Neo
82
- NEO: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
83
- // Bitcoin SV
84
- BSV: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
85
- // EOS
86
- EOS: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
87
- // Dash
88
- DASH: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
89
- // Stellar
90
- XLM: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
91
- // South Korean Won
92
- // While the jeon (1/100th of Won) is no longer used for everyday transactions,
93
- // we received complaint from operator that we should show 2 fraction digits though, so we override it here.
94
- KRW: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
95
- // Vietnamese dong
96
- kVND: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
97
- // Indonesian rupiah
98
- kIDR: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
99
- // Serbian dinar
100
- // There is a difference how browsers handle currency data:
101
- // - Google Chrome uses CLDR, which defines 0 minor digits for RSD currency.
102
- // - Firefox, Edge, Safari use ISO 4217, which defines 2 minor digits for RSD currency.
103
- // We received complaint from operator that we should show 2 fraction digits though, so we override it here.
104
- RSD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
105
- // Social currency on Stake
106
- STAKEGC: { displayAs: "GC", maximumFractionDigits: 0, minimumFractionDigits: 0 },
107
- STAKESC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
108
- // Social currency on Relax
109
- "BK.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
110
- "BT.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
111
- "FC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
112
- "GC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
113
- "SC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
114
- GC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
115
- SC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
116
- GLD: { displayAs: "GC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
117
- SS1: { displayAs: "SC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
118
- // Softswiss
119
- SWEP: { displayAs: "SC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
120
- GCLC: { displayAs: "GC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
121
- SWPC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
122
- LUKC: { displayAs: "LC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
123
- TTSC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
124
- TTGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
125
- // Silvercash
126
- SVC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
127
- // Polkadot
128
- DOT: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
129
- // Solana
130
- SOL: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
131
- // XRP
132
- XRP: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
133
- // Cardano
134
- ADA: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
135
- // Toncoin
136
- TON: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
137
- // Fasttoken
138
- FTN: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
139
- // Omani Rial
140
- OMR: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
141
- // Jordanian Dinar
142
- JOD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
143
- // Bahraini Dinar
144
- BHD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
145
- // Kuwaiti Dinar
146
- KWD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
147
- // MicroGame
148
- BNS: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
149
- // Quanta
150
- GRSC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
151
- GRGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
152
- // Softswiss
153
- EEGP: { displayAs: "EP", maximumFractionDigits: 2, minimumFractionDigits: 2 },
154
- EPGP: { displayAs: "PP", maximumFractionDigits: 2, minimumFractionDigits: 2 },
155
- LUCK: { displayAs: "LUCK", maximumFractionDigits: 2, minimumFractionDigits: 2 },
156
- CXCO: { displayAs: "CC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
157
- GZCO: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
158
- // gametech
159
- FC: { displayAs: "", maximumFractionDigits: 2, minimumFractionDigits: 2 },
160
- RC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
161
- MWSC: { displayAs: "MC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
162
- MWGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
163
- // https://kalamba.atlassian.net/browse/FRAM-1829
164
- // Myanmar Kyat
165
- MMK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
166
- // West African CFA franc
167
- XOF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
168
- // Vietnamese dong
169
- VND: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
170
- // Burundian franc
171
- BIF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
172
- // Chilean peso
173
- CLP: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
174
- // Guinean franc
175
- GNF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
176
- // Iraqi dinar
177
- IQD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
178
- // Icelandic króna
179
- ISK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
180
- // Paraguayan guaraní
181
- PYG: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
182
- // Central African CFA franc
183
- XAF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
184
- // Lao kip
185
- LAK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
186
- // Lebanese pound
187
- LBP: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
188
- // Malagasy ariary
189
- MGA: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
190
- // Somali shilling
191
- SOS: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
192
- // Ugandan shilling
193
- UGX: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
194
- // Albanian lek
195
- ALL: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
196
- // Iranian rial
197
- IRR: { maximumFractionDigits: 2, minimumFractionDigits: 2 }
198
- /* eslint-enable sort-keys-fix/sort-keys-fix */
199
- };
200
- function G(t) {
201
- return t in f;
202
- }
203
- function M(t) {
204
- return G(t) ? {
205
- ...f[t],
206
- currency: l
207
- } : {
208
- currency: t
209
- };
210
- }
211
- function R(t, i, m) {
212
- const n = i.format(+t);
213
- return G(m) ? n.replace(l, f[m].displayAs ?? m) : n;
214
- }
215
- function P(t, i, m) {
216
- const { maximumFractionDigits: n, minimumFractionDigits: r } = m.resolvedOptions();
217
- return w(t, i, { maximumFractionDigits: n, minimumFractionDigits: r });
218
- }
219
- function B(t, i, { as: m } = {
220
- as: "Currency"
221
- /* Currency */
222
- }) {
223
- const { canShowCurrency: n, currency: r } = t;
224
- return m === "Number" || !n ? `${i}` : `${i} ${r}`;
225
- }
226
- function L(t, i, { as: m, from: n } = {
227
- as: "Currency",
228
- from: "Money"
229
- /* Money */
230
- }, r) {
231
- if (!["string", "number"].includes(typeof i))
232
- return "NaN";
233
- const { canShowCurrency: D = !0, coinValueInCents: o, currency: y, locales: p } = t;
234
- n === "Coins" && (i = N(+i, o));
235
- try {
236
- const E = M(y), d = new Intl.NumberFormat(p, {
237
- ...E,
238
- ...r,
239
- currencyDisplay: "symbol",
240
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
241
- // @ts-ignore
242
- numberingSystem: "latn",
243
- style: "currency"
244
- });
245
- return m === "Number" || !D ? P(t, i, d) : R(i, d, y);
246
- } catch {
247
- return B(t, i, { as: m });
248
- }
249
- }
250
- var s;
251
- class O {
252
- constructor({ config: i }) {
253
- F(this, s);
254
- C(this, s, i);
255
- }
256
- formatNumber(i, m) {
257
- const n = { locales: [a(this, s).ui.language] };
258
- return w(n, i, m);
259
- }
260
- formatCurrency(i, m = { as: u.Currency, from: c.Money }, n) {
261
- const r = a(this, s).ui.feature.showCurrency, D = a(this, s).api.coinValueInCents, o = a(this, s).api.currency || l, y = [a(this, s).ui.language];
262
- return L({
263
- canShowCurrency: r,
264
- coinValueInCents: D,
265
- currency: o,
266
- locales: y
267
- }, i, m, n);
268
- }
269
- formatCoins(i, m) {
270
- return this.formatCurrency(i, { as: u.Number, from: c.Coins }, m);
271
- }
272
- formatCoinsWithCurrency(i, m) {
273
- return this.formatCurrency(i, { as: u.Currency, from: c.Coins }, m);
274
- }
275
- formatMoney(i, m) {
276
- return this.formatCurrency(i, { as: u.Number, from: c.Money }, m);
277
- }
278
- formatMoneyWithCurrency(i, m) {
279
- return this.formatCurrency(i, { as: u.Currency, from: c.Money }, m);
280
- }
281
- }
282
- s = new WeakMap();
283
- const I = () => {
284
- };
285
- var e, g, x;
286
- class U {
287
- constructor({ messagePort: i }) {
288
- F(this, e);
289
- F(this, g);
290
- F(this, x);
291
- C(this, x, i), this.on("configured", (m) => {
292
- C(this, e, m), C(this, g, new O({ config: m }));
11
+ class w {
12
+ #e;
13
+ #r;
14
+ #s;
15
+ constructor({ messagePort: e }) {
16
+ this.#s = e, this.on("configured", (r) => {
17
+ this.#e = r, this.#r = new p({ config: r });
293
18
  });
294
19
  }
295
20
  get config() {
296
- if (!a(this, e))
21
+ if (!this.#e)
297
22
  throw new Error("config is not initialized, you must open game first");
298
- return a(this, e);
23
+ return this.#e;
299
24
  }
300
25
  get i18n() {
301
- if (!a(this, g))
26
+ if (!this.#r)
302
27
  throw new Error("i18n is not initialized, you must open game first");
303
- return a(this, g);
28
+ return this.#r;
304
29
  }
305
- request(i, ...[m]) {
306
- return new Promise((n) => {
307
- this.on(`${i}Response`, (r) => n({ type: "response", response: r }), {
30
+ request(e, ...[r]) {
31
+ return new Promise((o) => {
32
+ this.on(`${e}Response`, (s) => o({ type: "response", response: s }), {
308
33
  once: !0
309
- }), this.on(`${i}Error`, (r) => n({ type: "error", error: r }), { once: !0 }), this.send(i, m);
34
+ }), this.on(`${e}Error`, (s) => o({ type: "error", error: s }), { once: !0 }), this.send(e, r);
310
35
  });
311
36
  }
312
- on(i, m, n) {
313
- const r = function D(o) {
314
- o.data.message === `kalamba:wrapper:${i}` && (I("on", o.data.message.replace(/^kalamba:/, ""), o.data.payload), m(o.data.payload), n != null && n.once && window.removeEventListener("message", D));
37
+ on(e, r, o) {
38
+ const s = function i(t) {
39
+ t.data.message === `kalamba:wrapper:${e}` && (d("on", t.data.message.replace(/^kalamba:/, ""), t.data.payload), r(t.data.payload), o?.once && window.removeEventListener("message", i));
315
40
  };
316
- window.addEventListener("message", r);
41
+ window.addEventListener("message", s);
317
42
  }
318
43
  // TODO error messages
319
- send(i, ...[m]) {
320
- a(this, x).postMessage(
44
+ send(e, ...[r]) {
45
+ this.#s.postMessage(
321
46
  {
322
- message: `kalamba:sdk:${i}`,
323
- payload: m
47
+ message: `kalamba:sdk:${e}`,
48
+ payload: r
324
49
  },
325
50
  "*"
326
51
  );
327
52
  }
328
- configure(i) {
329
- this.send("configure", i);
53
+ configure(e) {
54
+ this.send("configure", e);
330
55
  }
331
56
  async openGame() {
332
- const i = new Promise((n) => this.on("configured", n, { once: !0 })), m = await this.request("openGame");
333
- if (m.type === "response")
334
- return await i, m.response;
335
- throw m.error.type === "timeout" ? new A() : new T(m.error.data);
336
- }
337
- async play(i, m) {
338
- const n = { contract: i, extra: m }, r = await this.request("play", n);
57
+ const e = new Promise((o) => this.on("configured", o, { once: !0 })), r = await this.request("openGame");
339
58
  if (r.type === "response")
340
- return r.response;
341
- throw r.error.type === "timeout" ? new A() : new T(r.error.data);
59
+ return await e, r.response;
60
+ throw r.error.type === "timeout" ? new n() : new a(r.error.data);
61
+ }
62
+ async play(e, r) {
63
+ const o = { contract: e, extra: r }, s = await this.request("play", o);
64
+ if (s.type === "response")
65
+ return s.response;
66
+ throw s.error.type === "timeout" ? new n() : new a(s.error.data);
342
67
  }
343
68
  }
344
- e = new WeakMap(), g = new WeakMap(), x = new WeakMap();
345
69
  export {
346
- O as I18n,
347
- U as KalambaSdk,
348
- T as RgsError,
349
- X as RgsErrorCode,
350
- A as TimeoutError,
351
- $ as decoders,
352
- V as encoders
70
+ p as I18n,
71
+ w as KalambaSdk,
72
+ a as RgsError,
73
+ g as RgsErrorCode,
74
+ n as TimeoutError,
75
+ y as decoders,
76
+ E as encoders
353
77
  };