@kalamba/sdk 0.3.0 → 0.4.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 +1 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.js +266 -60
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* BSD 3-Clause License
|
|
3
3
|
* Copyright (c) 2024, Kalamba Games Limited
|
|
4
4
|
*/
|
|
5
|
-
"use strict";var
|
|
5
|
+
"use strict";var P=Object.defineProperty;var A=(r,i,t)=>i in r?P(r,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[i]=t;var f=(r,i,t)=>(A(r,typeof i!="symbol"?i+"":i,t),t),E=(r,i,t)=>{if(!i.has(r))throw TypeError("Cannot "+t)};var o=(r,i,t)=>(E(r,i,"read from private field"),t?t.call(r):i.get(r)),F=(r,i,t)=>{if(i.has(r))throw TypeError("Cannot add the same private member more than once");i instanceof WeakSet?i.add(r):i.set(r,t)},y=(r,i,t,m)=>(E(r,i,"write to private field"),m?m.call(r,t):i.set(r,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function B(r,i){return r*i/100}function w(r,i,t){if(!["string","number"].includes(typeof i))return"NaN";const{locales:m}=r;try{return new Intl.NumberFormat(m,{...t,numberingSystem:"latn",style:"decimal"}).format(+i)}catch{return`${i}`}}const h="XTS";var u=(r=>(r.Currency="Currency",r.Number="Number",r))(u||{}),c=(r=>(r.Coins="Coins",r.Money="Money",r))(c||{});const p={ARSB:{displayAs:"ARS",maximumFractionDigits:2,minimumFractionDigits:2},CHIPS:{maximumFractionDigits:0,minimumFractionDigits:0},BNB:{maximumFractionDigits:6,minimumFractionDigits:6},BUSD:{maximumFractionDigits:4,minimumFractionDigits:4},BTC:{maximumFractionDigits:8,minimumFractionDigits:2},mBTC:{maximumFractionDigits:5,minimumFractionDigits:2},uBTC:{maximumFractionDigits:2,minimumFractionDigits:2},BCH:{maximumFractionDigits:8,minimumFractionDigits:2},mBCH:{maximumFractionDigits:2,minimumFractionDigits:2},ETH:{maximumFractionDigits:8,minimumFractionDigits:2},mETH:{maximumFractionDigits:5,minimumFractionDigits:2},uETH:{maximumFractionDigits:2,minimumFractionDigits:2},SOC:{maximumFractionDigits:8,minimumFractionDigits:2},LTC:{maximumFractionDigits:8,minimumFractionDigits:2},mLTC:{maximumFractionDigits:5,minimumFractionDigits:2},uLTC:{maximumFractionDigits:2,minimumFractionDigits:2},DOG:{maximumFractionDigits:4,minimumFractionDigits:2},USDC:{maximumFractionDigits:4,minimumFractionDigits:4},USDT:{maximumFractionDigits:4,minimumFractionDigits:2},TRX:{maximumFractionDigits:2,minimumFractionDigits:2},TUSD:{maximumFractionDigits:2,minimumFractionDigits:2},DAI:{maximumFractionDigits:2,minimumFractionDigits:2},XMR:{maximumFractionDigits:4,minimumFractionDigits:4},CBET:{maximumFractionDigits:0,minimumFractionDigits:0},kCBET:{maximumFractionDigits:2,minimumFractionDigits:2},SHIB:{maximumFractionDigits:0,minimumFractionDigits:0},kSHIB:{maximumFractionDigits:4,minimumFractionDigits:2},NEO:{maximumFractionDigits:4,minimumFractionDigits:4},BSV:{maximumFractionDigits:4,minimumFractionDigits:4},EOS:{maximumFractionDigits:4,minimumFractionDigits:4},DASH:{maximumFractionDigits:4,minimumFractionDigits:4},XLM:{maximumFractionDigits:2,minimumFractionDigits:2},KRW:{maximumFractionDigits:2,minimumFractionDigits:2},kVND:{maximumFractionDigits:4,minimumFractionDigits:2},kIDR:{maximumFractionDigits:4,minimumFractionDigits:2},RSD:{maximumFractionDigits:2,minimumFractionDigits:2},STAKEGC:{displayAs:"GC",maximumFractionDigits:0,minimumFractionDigits:0},STAKESC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},"FC.":{maximumFractionDigits:2,minimumFractionDigits:2},"GC.":{maximumFractionDigits:2,minimumFractionDigits:2},"SC.":{maximumFractionDigits:2,minimumFractionDigits:2},SVC:{maximumFractionDigits:2,minimumFractionDigits:2},DOT:{maximumFractionDigits:4,minimumFractionDigits:4},SOL:{maximumFractionDigits:4,minimumFractionDigits:4},XRP:{maximumFractionDigits:4,minimumFractionDigits:4},ADA:{maximumFractionDigits:4,minimumFractionDigits:4},TON:{maximumFractionDigits:4,minimumFractionDigits:4},FTN:{maximumFractionDigits:4,minimumFractionDigits:4}};function T(r){return r in p}function I(r){return T(r)?{...p[r],currency:h}:{currency:r}}function R(r,i,t){const m=i.format(+r);return T(t)?m.replace(h,p[t].displayAs??t):m}function k(r,i,t){const{maximumFractionDigits:m,minimumFractionDigits:n}=t.resolvedOptions();return w(r,i,{maximumFractionDigits:m,minimumFractionDigits:n})}function G(r,i,{as:t}={as:"Currency"}){const{canShowCurrency:m,currency:n}=r;return t==="Number"||!m?`${i}`:`${i} ${n}`}function H(r,i,{as:t,from:m}={as:"Currency",from:"Money"},n){if(!["string","number"].includes(typeof i))return"NaN";const{canShowCurrency:s=!0,coinValueInCents:a,currency:C,locales:S}=r;m==="Coins"&&(i=B(+i,a));try{const O=I(C),d=new Intl.NumberFormat(S,{...O,...n,currencyDisplay:"symbol",numberingSystem:"latn",style:"currency"});return t==="Number"||!s?k(r,i,d):R(i,d,C)}catch{return G(r,i,{as:t})}}var e;class N{constructor({config:i}){F(this,e,void 0);y(this,e,i)}formatNumber(i,t){const m={locales:[o(this,e).ui.language]};return w(m,i,t)}formatCurrency(i,t={as:u.Currency,from:c.Money},m){const n=o(this,e).ui.feature.showCurrency,s=o(this,e).api.coinValueInCents,a=o(this,e).api.currency||h,C=[o(this,e).ui.language];return H({canShowCurrency:n,coinValueInCents:s,currency:a,locales:C},i,t,m)}formatCoins(i,t){return this.formatCurrency(i,{as:u.Number,from:c.Coins},t)}formatCoinsWithCurrency(i,t){return this.formatCurrency(i,{as:u.Currency,from:c.Coins},t)}formatMoney(i,t){return this.formatCurrency(i,{as:u.Number,from:c.Money},t)}formatMoneyWithCurrency(i,t){return this.formatCurrency(i,{as:u.Currency,from:c.Money},t)}}e=new WeakMap;const U=()=>{};class b extends Error{constructor(t){super("OpenGameError");f(this,"error");this.name="OpenGameError",this.error=t}}class M extends Error{constructor(t){super("PlayError");f(this,"error");this.name="PlayError",this.error=t}}class x extends Error{constructor(){super("TimeoutError"),this.name="TimeoutError"}}var g,D,l;class ${constructor({messagePort:i}){F(this,g,void 0);F(this,D,void 0);F(this,l,void 0);y(this,l,i),this.on("configured",t=>{y(this,g,t),y(this,D,new N({config:t}))})}get config(){if(!o(this,g))throw new Error("config is not initialized, you must open game first");return o(this,g)}get i18n(){if(!o(this,D))throw new Error("i18n is not initialized, you must open game first");return o(this,D)}request(i,...[t]){return new Promise(m=>{this.on(`${i}Response`,n=>m({type:"response",response:n}),{once:!0}),this.on(`${i}Error`,n=>m({type:"error",error:n}),{once:!0}),this.send(i,t)})}on(i,t,m){const n=function s(a){a.data.message===`kalamba:wrapper:${i}`&&(U("on",a.data.message.replace(/^kalamba:/,""),a.data.payload),t(a.data.payload),m!=null&&m.once&&window.removeEventListener("message",s))};window.addEventListener("message",n)}send(i,...[t]){o(this,l).postMessage({message:`kalamba:sdk:${i}`,payload:t},"*")}async openGame(i){var m;const[,t]=await Promise.all([new Promise(n=>this.on("configured",n,{once:!0})),this.request("openGame",i)]);if(t.type==="response")return t.response;throw((m=t.error)==null?void 0:m.type)==="timeout"?new x:new b(t.error)}async play(i,t={},m="SPIN"){var a;const n={contract:i,extra:t,actionType:m},s=await this.request("play",n);if(s.type==="response")return s.response;throw((a=s.error)==null?void 0:a.type)==="timeout"?new x:new M(s.error)}}g=new WeakMap,D=new WeakMap,l=new WeakMap;exports.KalambaSdk=$;exports.OpenGameError=b;exports.PlayError=M;exports.TimeoutError=x;exports.i18n=N;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { FormatCurrencyOptions } from '@kalamba/common/src/utils/format/currency';
|
|
2
|
+
|
|
1
3
|
declare interface AddEventListenerOptions_2 {
|
|
2
4
|
once: boolean;
|
|
3
5
|
}
|
|
@@ -104,12 +106,26 @@ declare type History_2 = {
|
|
|
104
106
|
};
|
|
105
107
|
export { History_2 as History }
|
|
106
108
|
|
|
109
|
+
export declare class i18n {
|
|
110
|
+
#private;
|
|
111
|
+
constructor({ config }: {
|
|
112
|
+
config: SdkConfig;
|
|
113
|
+
});
|
|
114
|
+
formatNumber(number: string | number, formatOptions?: Intl.NumberFormatOptions): string;
|
|
115
|
+
formatCurrency(number: string | number, options?: FormatCurrencyOptions, formatOptions?: Intl.NumberFormatOptions): string;
|
|
116
|
+
formatCoins(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
117
|
+
formatCoinsWithCurrency(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
118
|
+
formatMoney(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
119
|
+
formatMoneyWithCurrency(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
120
|
+
}
|
|
121
|
+
|
|
107
122
|
export declare class KalambaSdk {
|
|
108
123
|
#private;
|
|
109
|
-
config: SdkConfig;
|
|
110
124
|
constructor({ messagePort }: {
|
|
111
125
|
messagePort: Window;
|
|
112
126
|
});
|
|
127
|
+
get config(): SdkConfig;
|
|
128
|
+
get i18n(): i18n;
|
|
113
129
|
protected request<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [payload: DomainMessagePayload<'sdk', M>]): Promise<RgsResponse<M>>;
|
|
114
130
|
on<M extends DomainMessage<'wrapper'> | ForwardToSdkMessage>(message: M, listener: (payload: M extends DomainMessage<'wrapper'> ? DomainMessagePayload<'wrapper', M> : M extends ForwardToSdkMessage ? ForwardToSdkMessagePayload<M> : never) => void, options?: AddEventListenerOptions_2): void;
|
|
115
131
|
send<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [DomainMessagePayload<'sdk', M>]): void;
|
package/dist/index.js
CHANGED
|
@@ -2,97 +2,303 @@
|
|
|
2
2
|
* BSD 3-Clause License
|
|
3
3
|
* Copyright (c) 2024, Kalamba Games Limited
|
|
4
4
|
*/
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
if (!
|
|
9
|
-
throw TypeError("Cannot " +
|
|
5
|
+
var b = Object.defineProperty;
|
|
6
|
+
var M = (r, i, t) => i in r ? b(r, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[i] = t;
|
|
7
|
+
var l = (r, i, t) => (M(r, typeof i != "symbol" ? i + "" : i, t), t), d = (r, i, t) => {
|
|
8
|
+
if (!i.has(r))
|
|
9
|
+
throw TypeError("Cannot " + t);
|
|
10
10
|
};
|
|
11
|
-
var
|
|
12
|
-
if (
|
|
11
|
+
var o = (r, i, t) => (d(r, i, "read from private field"), t ? t.call(r) : i.get(r)), F = (r, i, t) => {
|
|
12
|
+
if (i.has(r))
|
|
13
13
|
throw TypeError("Cannot add the same private member more than once");
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
|
|
14
|
+
i instanceof WeakSet ? i.add(r) : i.set(r, t);
|
|
15
|
+
}, y = (r, i, t, m) => (d(r, i, "write to private field"), m ? m.call(r, t) : i.set(r, t), t);
|
|
16
|
+
function A(r, i) {
|
|
17
|
+
return r * i / 100;
|
|
18
|
+
}
|
|
19
|
+
function w(r, i, t) {
|
|
20
|
+
if (!["string", "number"].includes(typeof i))
|
|
21
|
+
return "NaN";
|
|
22
|
+
const { locales: m } = r;
|
|
23
|
+
try {
|
|
24
|
+
return new Intl.NumberFormat(m, {
|
|
25
|
+
...t,
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
numberingSystem: "latn",
|
|
29
|
+
style: "decimal"
|
|
30
|
+
}).format(+i);
|
|
31
|
+
} catch {
|
|
32
|
+
return `${i}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const x = "XTS";
|
|
36
|
+
var u = /* @__PURE__ */ ((r) => (r.Currency = "Currency", r.Number = "Number", r))(u || {}), c = /* @__PURE__ */ ((r) => (r.Coins = "Coins", r.Money = "Money", r))(c || {});
|
|
37
|
+
const h = {
|
|
38
|
+
/* eslint-disable sort-keys-fix/sort-keys-fix */
|
|
39
|
+
// ARSB is the internal currency relevant for invoicing purposes, players should see it as ARS
|
|
40
|
+
ARSB: { displayAs: "ARS", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
41
|
+
// Social Casino chips
|
|
42
|
+
CHIPS: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
43
|
+
// Binance Coin
|
|
44
|
+
BNB: { maximumFractionDigits: 6, minimumFractionDigits: 6 },
|
|
45
|
+
// Binance USD
|
|
46
|
+
BUSD: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
47
|
+
// Bitcoin
|
|
48
|
+
BTC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
49
|
+
mBTC: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
|
|
50
|
+
uBTC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
51
|
+
// Bitcoin Cash
|
|
52
|
+
BCH: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
53
|
+
mBCH: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
54
|
+
// Ethereum
|
|
55
|
+
ETH: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
56
|
+
mETH: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
|
|
57
|
+
uETH: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
58
|
+
// SocialCoin
|
|
59
|
+
SOC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
60
|
+
// Litecoins
|
|
61
|
+
LTC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
62
|
+
mLTC: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
|
|
63
|
+
uLTC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
64
|
+
// Dogecoin
|
|
65
|
+
DOG: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
66
|
+
// USD Coin
|
|
67
|
+
USDC: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
68
|
+
// Tether
|
|
69
|
+
USDT: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
70
|
+
// Tron
|
|
71
|
+
TRX: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
72
|
+
// TrueUSD
|
|
73
|
+
TUSD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
74
|
+
// Dai
|
|
75
|
+
DAI: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
76
|
+
// Monero
|
|
77
|
+
XMR: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
78
|
+
// CBET
|
|
79
|
+
CBET: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
80
|
+
kCBET: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
81
|
+
// Shiba Inu
|
|
82
|
+
SHIB: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
83
|
+
kSHIB: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
84
|
+
// Neo
|
|
85
|
+
NEO: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
86
|
+
// Bitcoin SV
|
|
87
|
+
BSV: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
88
|
+
// EOS
|
|
89
|
+
EOS: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
90
|
+
// Dash
|
|
91
|
+
DASH: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
92
|
+
// Stellar
|
|
93
|
+
XLM: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
94
|
+
// South Korean Won
|
|
95
|
+
// While the jeon (1/100th of Won) is no longer used for everyday transactions,
|
|
96
|
+
// we received complaint from operator that we should show 2 fraction digits though, so we override it here.
|
|
97
|
+
KRW: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
98
|
+
// Vietnamese dong
|
|
99
|
+
kVND: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
100
|
+
// Indonesian rupiah
|
|
101
|
+
kIDR: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
102
|
+
// Serbian dinar
|
|
103
|
+
// There is a difference how browsers handle currency data:
|
|
104
|
+
// - Google Chrome uses CLDR, which defines 0 minor digits for RSD currency.
|
|
105
|
+
// - Firefox, Edge, Safari use ISO 4217, which defines 2 minor digits for RSD currency.
|
|
106
|
+
// We received complaint from operator that we should show 2 fraction digits though, so we override it here.
|
|
107
|
+
RSD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
108
|
+
// Social currency on Stake
|
|
109
|
+
STAKEGC: { displayAs: "GC", maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
110
|
+
STAKESC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
111
|
+
// Social currency on Relax
|
|
112
|
+
"FC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
113
|
+
"GC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
114
|
+
"SC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
115
|
+
// Silvercash
|
|
116
|
+
SVC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
117
|
+
// Polkadot
|
|
118
|
+
DOT: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
119
|
+
// Solana
|
|
120
|
+
SOL: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
121
|
+
// XRP
|
|
122
|
+
XRP: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
123
|
+
// Cardano
|
|
124
|
+
ADA: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
125
|
+
// Toncoin
|
|
126
|
+
TON: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
127
|
+
// Fasttoken
|
|
128
|
+
FTN: { maximumFractionDigits: 4, minimumFractionDigits: 4 }
|
|
129
|
+
/* eslint-enable sort-keys-fix/sort-keys-fix */
|
|
17
130
|
};
|
|
18
|
-
|
|
19
|
-
|
|
131
|
+
function T(r) {
|
|
132
|
+
return r in h;
|
|
133
|
+
}
|
|
134
|
+
function O(r) {
|
|
135
|
+
return T(r) ? {
|
|
136
|
+
...h[r],
|
|
137
|
+
currency: x
|
|
138
|
+
} : {
|
|
139
|
+
currency: r
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function B(r, i, t) {
|
|
143
|
+
const m = i.format(+r);
|
|
144
|
+
return T(t) ? m.replace(x, h[t].displayAs ?? t) : m;
|
|
145
|
+
}
|
|
146
|
+
function P(r, i, t) {
|
|
147
|
+
const { maximumFractionDigits: m, minimumFractionDigits: n } = t.resolvedOptions();
|
|
148
|
+
return w(r, i, { maximumFractionDigits: m, minimumFractionDigits: n });
|
|
149
|
+
}
|
|
150
|
+
function I(r, i, { as: t } = {
|
|
151
|
+
as: "Currency"
|
|
152
|
+
/* Currency */
|
|
153
|
+
}) {
|
|
154
|
+
const { canShowCurrency: m, currency: n } = r;
|
|
155
|
+
return t === "Number" || !m ? `${i}` : `${i} ${n}`;
|
|
156
|
+
}
|
|
157
|
+
function R(r, i, { as: t, from: m } = {
|
|
158
|
+
as: "Currency",
|
|
159
|
+
from: "Money"
|
|
160
|
+
/* Money */
|
|
161
|
+
}, n) {
|
|
162
|
+
if (!["string", "number"].includes(typeof i))
|
|
163
|
+
return "NaN";
|
|
164
|
+
const { canShowCurrency: s = !0, coinValueInCents: a, currency: f, locales: p } = r;
|
|
165
|
+
m === "Coins" && (i = A(+i, a));
|
|
166
|
+
try {
|
|
167
|
+
const N = O(f), S = new Intl.NumberFormat(p, {
|
|
168
|
+
...N,
|
|
169
|
+
...n,
|
|
170
|
+
currencyDisplay: "symbol",
|
|
171
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
172
|
+
// @ts-ignore
|
|
173
|
+
numberingSystem: "latn",
|
|
174
|
+
style: "currency"
|
|
175
|
+
});
|
|
176
|
+
return t === "Number" || !s ? P(r, i, S) : B(i, S, f);
|
|
177
|
+
} catch {
|
|
178
|
+
return I(r, i, { as: t });
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
var e;
|
|
182
|
+
class k {
|
|
183
|
+
constructor({ config: i }) {
|
|
184
|
+
F(this, e, void 0);
|
|
185
|
+
y(this, e, i);
|
|
186
|
+
}
|
|
187
|
+
formatNumber(i, t) {
|
|
188
|
+
const m = { locales: [o(this, e).ui.language] };
|
|
189
|
+
return w(m, i, t);
|
|
190
|
+
}
|
|
191
|
+
formatCurrency(i, t = { as: u.Currency, from: c.Money }, m) {
|
|
192
|
+
const n = o(this, e).ui.feature.showCurrency, s = o(this, e).api.coinValueInCents, a = o(this, e).api.currency || x, f = [o(this, e).ui.language];
|
|
193
|
+
return R({
|
|
194
|
+
canShowCurrency: n,
|
|
195
|
+
coinValueInCents: s,
|
|
196
|
+
currency: a,
|
|
197
|
+
locales: f
|
|
198
|
+
}, i, t, m);
|
|
199
|
+
}
|
|
200
|
+
formatCoins(i, t) {
|
|
201
|
+
return this.formatCurrency(i, { as: u.Number, from: c.Coins }, t);
|
|
202
|
+
}
|
|
203
|
+
formatCoinsWithCurrency(i, t) {
|
|
204
|
+
return this.formatCurrency(i, { as: u.Currency, from: c.Coins }, t);
|
|
205
|
+
}
|
|
206
|
+
formatMoney(i, t) {
|
|
207
|
+
return this.formatCurrency(i, { as: u.Number, from: c.Money }, t);
|
|
208
|
+
}
|
|
209
|
+
formatMoneyWithCurrency(i, t) {
|
|
210
|
+
return this.formatCurrency(i, { as: u.Currency, from: c.Money }, t);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
e = new WeakMap();
|
|
214
|
+
const G = () => {
|
|
215
|
+
};
|
|
216
|
+
class H extends Error {
|
|
217
|
+
constructor(t) {
|
|
20
218
|
super("OpenGameError");
|
|
21
|
-
|
|
22
|
-
this.name = "OpenGameError", this.error =
|
|
219
|
+
l(this, "error");
|
|
220
|
+
this.name = "OpenGameError", this.error = t;
|
|
23
221
|
}
|
|
24
222
|
}
|
|
25
|
-
class
|
|
26
|
-
constructor(
|
|
223
|
+
class U extends Error {
|
|
224
|
+
constructor(t) {
|
|
27
225
|
super("PlayError");
|
|
28
|
-
|
|
29
|
-
this.name = "PlayError", this.error =
|
|
226
|
+
l(this, "error");
|
|
227
|
+
this.name = "PlayError", this.error = t;
|
|
30
228
|
}
|
|
31
229
|
}
|
|
32
|
-
class
|
|
230
|
+
class E extends Error {
|
|
33
231
|
constructor() {
|
|
34
232
|
super("TimeoutError"), this.name = "TimeoutError";
|
|
35
233
|
}
|
|
36
234
|
}
|
|
37
|
-
var
|
|
38
|
-
class
|
|
39
|
-
constructor({ messagePort:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
u(this, i, void 0);
|
|
46
|
-
l(this, i, e), this.on("configured", (r) => {
|
|
47
|
-
this.config = r;
|
|
235
|
+
var g, D, C;
|
|
236
|
+
class L {
|
|
237
|
+
constructor({ messagePort: i }) {
|
|
238
|
+
F(this, g, void 0);
|
|
239
|
+
F(this, D, void 0);
|
|
240
|
+
F(this, C, void 0);
|
|
241
|
+
y(this, C, i), this.on("configured", (t) => {
|
|
242
|
+
y(this, g, t), y(this, D, new k({ config: t }));
|
|
48
243
|
});
|
|
49
244
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
245
|
+
get config() {
|
|
246
|
+
if (!o(this, g))
|
|
247
|
+
throw new Error("config is not initialized, you must open game first");
|
|
248
|
+
return o(this, g);
|
|
249
|
+
}
|
|
250
|
+
get i18n() {
|
|
251
|
+
if (!o(this, D))
|
|
252
|
+
throw new Error("i18n is not initialized, you must open game first");
|
|
253
|
+
return o(this, D);
|
|
254
|
+
}
|
|
255
|
+
request(i, ...[t]) {
|
|
256
|
+
return new Promise((m) => {
|
|
257
|
+
this.on(`${i}Response`, (n) => m({ type: "response", response: n }), {
|
|
53
258
|
once: !0
|
|
54
|
-
}), this.on(`${
|
|
259
|
+
}), this.on(`${i}Error`, (n) => m({ type: "error", error: n }), { once: !0 }), this.send(i, t);
|
|
55
260
|
});
|
|
56
261
|
}
|
|
57
|
-
on(
|
|
58
|
-
const
|
|
59
|
-
a.data.message === `kalamba:wrapper:${
|
|
262
|
+
on(i, t, m) {
|
|
263
|
+
const n = function s(a) {
|
|
264
|
+
a.data.message === `kalamba:wrapper:${i}` && (G("on", a.data.message.replace(/^kalamba:/, ""), a.data.payload), t(a.data.payload), m != null && m.once && window.removeEventListener("message", s));
|
|
60
265
|
};
|
|
61
|
-
window.addEventListener("message",
|
|
266
|
+
window.addEventListener("message", n);
|
|
62
267
|
}
|
|
63
268
|
// TODO error messages
|
|
64
|
-
send(
|
|
65
|
-
|
|
269
|
+
send(i, ...[t]) {
|
|
270
|
+
o(this, C).postMessage(
|
|
66
271
|
{
|
|
67
|
-
message: `kalamba:sdk:${
|
|
68
|
-
payload:
|
|
272
|
+
message: `kalamba:sdk:${i}`,
|
|
273
|
+
payload: t
|
|
69
274
|
},
|
|
70
275
|
"*"
|
|
71
276
|
);
|
|
72
277
|
}
|
|
73
|
-
async openGame(
|
|
74
|
-
var
|
|
75
|
-
const [,
|
|
278
|
+
async openGame(i) {
|
|
279
|
+
var m;
|
|
280
|
+
const [, t] = await Promise.all([
|
|
76
281
|
// TODO: return promise from call to this.on if listener is not provided
|
|
77
|
-
new Promise((
|
|
78
|
-
this.request("openGame",
|
|
282
|
+
new Promise((n) => this.on("configured", n, { once: !0 })),
|
|
283
|
+
this.request("openGame", i)
|
|
79
284
|
]);
|
|
80
|
-
if (
|
|
81
|
-
return
|
|
82
|
-
throw ((
|
|
285
|
+
if (t.type === "response")
|
|
286
|
+
return t.response;
|
|
287
|
+
throw ((m = t.error) == null ? void 0 : m.type) === "timeout" ? new E() : new H(t.error);
|
|
83
288
|
}
|
|
84
|
-
async play(
|
|
289
|
+
async play(i, t = {}, m = "SPIN") {
|
|
85
290
|
var a;
|
|
86
|
-
const
|
|
87
|
-
if (
|
|
88
|
-
return
|
|
89
|
-
throw ((a =
|
|
291
|
+
const n = { contract: i, extra: t, actionType: m }, s = await this.request("play", n);
|
|
292
|
+
if (s.type === "response")
|
|
293
|
+
return s.response;
|
|
294
|
+
throw ((a = s.error) == null ? void 0 : a.type) === "timeout" ? new E() : new U(s.error);
|
|
90
295
|
}
|
|
91
296
|
}
|
|
92
|
-
|
|
297
|
+
g = new WeakMap(), D = new WeakMap(), C = new WeakMap();
|
|
93
298
|
export {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
299
|
+
L as KalambaSdk,
|
|
300
|
+
H as OpenGameError,
|
|
301
|
+
U as PlayError,
|
|
302
|
+
E as TimeoutError,
|
|
303
|
+
k as i18n
|
|
98
304
|
};
|