@kalamba/sdk 0.3.0 → 0.4.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/dist/index.cjs +1 -1
- package/dist/index.d.ts +19 -7
- package/dist/index.js +266 -60
- package/dist/plugins.d.ts +1 -5
- package/dist/wrapper.d.ts +1 -5
- 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
|
}
|
|
@@ -81,10 +83,6 @@ declare type Error_2 = {
|
|
|
81
83
|
};
|
|
82
84
|
export { Error_2 as Error }
|
|
83
85
|
|
|
84
|
-
export declare type ExtraPlayPayload = {
|
|
85
|
-
[key: string]: any;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
86
|
export declare type ForwardToPluginsMessage<P extends PluginDomain> = keyof ForwardToPluginsMessageMap<'sdk'>[P] | keyof ForwardToPluginsMessageMap<'rgs'>[P] | keyof ForwardToPluginsMessageMap<'casino'>[P] | keyof ForwardToPluginsMessageMap<'telemetry'>[P];
|
|
89
87
|
|
|
90
88
|
export declare interface ForwardToPluginsMessageMap<SourceDomain extends DomainPrefix> {
|
|
@@ -104,17 +102,31 @@ declare type History_2 = {
|
|
|
104
102
|
};
|
|
105
103
|
export { History_2 as History }
|
|
106
104
|
|
|
105
|
+
export declare class i18n {
|
|
106
|
+
#private;
|
|
107
|
+
constructor({ config }: {
|
|
108
|
+
config: SdkConfig;
|
|
109
|
+
});
|
|
110
|
+
formatNumber(number: string | number, formatOptions?: Intl.NumberFormatOptions): string;
|
|
111
|
+
formatCurrency(number: string | number, options?: FormatCurrencyOptions, formatOptions?: Intl.NumberFormatOptions): string;
|
|
112
|
+
formatCoins(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
113
|
+
formatCoinsWithCurrency(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
114
|
+
formatMoney(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
115
|
+
formatMoneyWithCurrency(amount: number | string, formatOptions?: Intl.NumberFormatOptions): string;
|
|
116
|
+
}
|
|
117
|
+
|
|
107
118
|
export declare class KalambaSdk {
|
|
108
119
|
#private;
|
|
109
|
-
config: SdkConfig;
|
|
110
120
|
constructor({ messagePort }: {
|
|
111
121
|
messagePort: Window;
|
|
112
122
|
});
|
|
123
|
+
get config(): SdkConfig;
|
|
124
|
+
get i18n(): i18n;
|
|
113
125
|
protected request<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [payload: DomainMessagePayload<'sdk', M>]): Promise<RgsResponse<M>>;
|
|
114
126
|
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
127
|
send<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [DomainMessagePayload<'sdk', M>]): void;
|
|
116
128
|
openGame(payload: DomainMessagePayload<'sdk', 'openGame'>): Promise<OpenGameResponse>;
|
|
117
|
-
play(contract: ContractPlayPayload, extra?:
|
|
129
|
+
play(contract: ContractPlayPayload, extra?: unknown, actionType?: string): Promise<PlayResponse>;
|
|
118
130
|
}
|
|
119
131
|
|
|
120
132
|
export declare type Message = keyof MessageMap;
|
|
@@ -200,7 +212,7 @@ declare type PlayError_2 = {
|
|
|
200
212
|
|
|
201
213
|
export declare type PlayRequest = {
|
|
202
214
|
contract: ContractPlayPayload;
|
|
203
|
-
extra
|
|
215
|
+
extra?: unknown;
|
|
204
216
|
actionType: string;
|
|
205
217
|
};
|
|
206
218
|
|
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
|
};
|
package/dist/plugins.d.ts
CHANGED
|
@@ -91,10 +91,6 @@ declare type Error_2 = {
|
|
|
91
91
|
type: 'CLOSE' | 'RELOAD' | 'CONTINUE';
|
|
92
92
|
};
|
|
93
93
|
|
|
94
|
-
declare type ExtraPlayPayload = {
|
|
95
|
-
[key: string]: any;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
94
|
declare type ForwardToPluginsMessage<P extends PluginDomain> = keyof ForwardToPluginsMessageMap<'sdk'>[P] | keyof ForwardToPluginsMessageMap<'rgs'>[P] | keyof ForwardToPluginsMessageMap<'casino'>[P] | keyof ForwardToPluginsMessageMap<'telemetry'>[P];
|
|
99
95
|
|
|
100
96
|
declare interface ForwardToPluginsMessageMap<SourceDomain extends DomainPrefix> {
|
|
@@ -391,7 +387,7 @@ declare type PlayError = {
|
|
|
391
387
|
|
|
392
388
|
declare type PlayRequest = {
|
|
393
389
|
contract: ContractPlayPayload;
|
|
394
|
-
extra
|
|
390
|
+
extra?: unknown;
|
|
395
391
|
actionType: string;
|
|
396
392
|
};
|
|
397
393
|
|
package/dist/wrapper.d.ts
CHANGED
|
@@ -86,10 +86,6 @@ declare type Error_2 = {
|
|
|
86
86
|
type: 'CLOSE' | 'RELOAD' | 'CONTINUE';
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
declare type ExtraPlayPayload = {
|
|
90
|
-
[key: string]: any;
|
|
91
|
-
};
|
|
92
|
-
|
|
93
89
|
declare type ForwardToPluginsMessage<P extends PluginDomain> = keyof ForwardToPluginsMessageMap<'sdk'>[P] | keyof ForwardToPluginsMessageMap<'rgs'>[P] | keyof ForwardToPluginsMessageMap<'casino'>[P] | keyof ForwardToPluginsMessageMap<'telemetry'>[P];
|
|
94
90
|
|
|
95
91
|
declare interface ForwardToPluginsMessageMap<SourceDomain extends DomainPrefix> {
|
|
@@ -196,7 +192,7 @@ declare type PlayError = {
|
|
|
196
192
|
|
|
197
193
|
declare type PlayRequest = {
|
|
198
194
|
contract: ContractPlayPayload;
|
|
199
|
-
extra
|
|
195
|
+
extra?: unknown;
|
|
200
196
|
actionType: string;
|
|
201
197
|
};
|
|
202
198
|
|