@kalamba/sdk 0.16.0 → 0.19.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.
@@ -0,0 +1,13 @@
1
+ /**
2
+ * BSD 3-Clause License
3
+ * Copyright (c) 2025, Kalamba Games Limited
4
+ */
5
+ const s = {
6
+ json: JSON.parse
7
+ }, e = {
8
+ json: JSON.stringify
9
+ };
10
+ export {
11
+ s as d,
12
+ e
13
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * BSD 3-Clause License
3
+ * Copyright (c) 2025, Kalamba Games Limited
4
+ */
5
+ "use strict";const s={json:JSON.parse},e={json:JSON.stringify};exports.decoders=s;exports.encoders=e;
package/dist/index.cjs CHANGED
@@ -2,4 +2,4 @@
2
2
  * BSD 3-Clause License
3
3
  * Copyright (c) 2025, Kalamba Games Limited
4
4
  */
5
- "use strict";var A=m=>{throw TypeError(m)};var N=(m,i,t)=>i.has(m)||A("Cannot "+t);var r=(m,i,t)=>(N(m,i,"read from private field"),t?t.call(m):i.get(m)),e=(m,i,t)=>i.has(m)?A("Cannot add the same private member more than once"):i instanceof WeakSet?i.add(m):i.set(m,t),u=(m,i,t,n)=>(N(m,i,"write to private field"),n?n.call(m,t):i.set(m,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./errors-BXO3dlhS.cjs");function I(m){const i=Object.prototype.toString.call(m);return m instanceof Date||typeof m=="object"&&i==="[object Date]"?new m.constructor(+m):typeof m=="number"||i==="[object Number]"||typeof m=="string"||i==="[object String]"?new Date(m):new Date(NaN)}function L(m){const i=I(m);return i.setHours(23,59,59,999),i}function H(){return L(Date.now())}function U(m){const i=I(m);return i.setHours(0,0,0,0),i}function k(){return U(Date.now())}const $=3e4;var F,S;class K{constructor(i){e(this,F);e(this,S,$);u(this,F,i)}buildHeaders(){const i={};return r(this,F).token&&(i.Authorization=`Bearer ${r(this,F).token}`),i}async request(i,t){const n=new URL(i,r(this,F).apiUrl??window.location.origin);return n.search=new URLSearchParams({...t}).toString(),await(await fetch(n,{signal:AbortSignal.timeout(r(this,S)),headers:this.buildHeaders()})).json()}async getRounds(i){return this.request("/rounds",i)}async getRound(i,t){return this.request(`/rounds/${i}`,t)}}F=new WeakMap,S=new WeakMap;const b={limit:100,page:0};var s,f;class O{constructor({config:i}){e(this,s);e(this,f);u(this,s,i),u(this,f,new K({apiUrl:i.api.gameHistoryUrl}))}async getRound(i,{pagination:t=b}={}){return r(this,f).getRound(i,{gameCode:r(this,s).api.game,operatorCode:r(this,s).api.brand,username:r(this,s).api.user,...t})}async getLastRound(){return r(this,s).api.lastRoundId?this.getRound(r(this,s).api.lastRoundId):null}async getRounds({searchPeriod:i={fromDateTime:k(),toDateTime:H()},pagination:t=b}={}){const n=r(this,s).api.user.replace(/^user_/,"").replace(new RegExp(`_${r(this,s).api.integration}$`),"");return r(this,f).getRounds({gameCode:r(this,s).api.game,operatorCode:r(this,s).api.integration,username:n,fromDataTime:i.fromDateTime.toISOString(),toDateTime:i.toDateTime.toISOString(),...t})}}s=new WeakMap,f=new WeakMap;function _(m,i){return m*i/100}function P(m,i,t){if(!["string","number"].includes(typeof i))return"NaN";const{locales:n}=m;try{return new Intl.NumberFormat(n,{...t,numberingSystem:"latn",style:"decimal"}).format(+i)}catch{return`${i}`}}const w="XTS";var y=(m=>(m.Currency="Currency",m.Number="Number",m))(y||{}),l=(m=>(m.Coins="Coins",m.Money="Money",m))(l||{});const T={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},"BK.":{maximumFractionDigits:2,minimumFractionDigits:2},"BT.":{maximumFractionDigits:2,minimumFractionDigits:2},"FC.":{maximumFractionDigits:2,minimumFractionDigits:2},"GC.":{maximumFractionDigits:2,minimumFractionDigits:2},"SC.":{maximumFractionDigits:2,minimumFractionDigits:2},GC:{maximumFractionDigits:2,minimumFractionDigits:2},SC:{maximumFractionDigits:2,minimumFractionDigits:2},GLD:{displayAs:"GC.",maximumFractionDigits:2,minimumFractionDigits:2},SS1:{displayAs:"SC.",maximumFractionDigits:2,minimumFractionDigits:2},SWEP:{displayAs:"SC.",maximumFractionDigits:2,minimumFractionDigits:2},GCLC:{displayAs:"GC.",maximumFractionDigits:2,minimumFractionDigits:2},SWPC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},LUKC:{displayAs:"LC",maximumFractionDigits:2,minimumFractionDigits:2},SVC:{maximumFractionDigits:2,minimumFractionDigits:2},DOT:{maximumFractionDigits:4,minimumFractionDigits:4},SOL:{maximumFractionDigits:4,minimumFractionDigits:4},XRP:{maximumFractionDigits:2,minimumFractionDigits:2},ADA:{maximumFractionDigits:2,minimumFractionDigits:2},TON:{maximumFractionDigits:4,minimumFractionDigits:4},FTN:{maximumFractionDigits:4,minimumFractionDigits:4},OMR:{maximumFractionDigits:2,minimumFractionDigits:2},JOD:{maximumFractionDigits:2,minimumFractionDigits:2},BHD:{maximumFractionDigits:2,minimumFractionDigits:2},KWD:{maximumFractionDigits:2,minimumFractionDigits:2},BNS:{maximumFractionDigits:2,minimumFractionDigits:2},GRSC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},GRGC:{displayAs:"GC",maximumFractionDigits:2,minimumFractionDigits:2},EEGP:{displayAs:"EP",maximumFractionDigits:2,minimumFractionDigits:2},EPGP:{displayAs:"PP",maximumFractionDigits:2,minimumFractionDigits:2},MMK:{maximumFractionDigits:2,minimumFractionDigits:2},XOF:{maximumFractionDigits:2,minimumFractionDigits:2},VND:{maximumFractionDigits:2,minimumFractionDigits:2},BIF:{maximumFractionDigits:2,minimumFractionDigits:2},CLP:{maximumFractionDigits:2,minimumFractionDigits:2},GNF:{maximumFractionDigits:2,minimumFractionDigits:2},IQD:{maximumFractionDigits:2,minimumFractionDigits:2},ISK:{maximumFractionDigits:2,minimumFractionDigits:2},PYG:{maximumFractionDigits:2,minimumFractionDigits:2},XAF:{maximumFractionDigits:2,minimumFractionDigits:2},LAK:{maximumFractionDigits:2,minimumFractionDigits:2},LBP:{maximumFractionDigits:2,minimumFractionDigits:2},MGA:{maximumFractionDigits:2,minimumFractionDigits:2},SOS:{maximumFractionDigits:2,minimumFractionDigits:2},UGX:{maximumFractionDigits:2,minimumFractionDigits:2},ALL:{maximumFractionDigits:2,minimumFractionDigits:2},IRR:{maximumFractionDigits:2,minimumFractionDigits:2}};function G(m){return m in T}function X(m){return G(m)?{...T[m],currency:w}:{currency:m}}function j(m,i,t){const n=i.format(+m);return G(t)?n.replace(w,T[t].displayAs??t):n}function q(m,i,t){const{maximumFractionDigits:n,minimumFractionDigits:a}=t.resolvedOptions();return P(m,i,{maximumFractionDigits:n,minimumFractionDigits:a})}function V(m,i,{as:t}={as:"Currency"}){const{canShowCurrency:n,currency:a}=m;return t==="Number"||!n?`${i}`:`${i} ${a}`}function W(m,i,{as:t,from:n}={as:"Currency",from:"Money"},a){if(!["string","number"].includes(typeof i))return"NaN";const{canShowCurrency:o=!0,coinValueInCents:g,currency:h,locales:R}=m;n==="Coins"&&(i=_(+i,g));try{const B=X(h),E=new Intl.NumberFormat(R,{...B,...a,currencyDisplay:"symbol",numberingSystem:"latn",style:"currency"});return t==="Number"||!o?q(m,i,E):j(i,E,h)}catch{return V(m,i,{as:t})}}var c;class M{constructor({config:i}){e(this,c);u(this,c,i)}formatNumber(i,t){const n={locales:[r(this,c).ui.language]};return P(n,i,t)}formatCurrency(i,t={as:y.Currency,from:l.Money},n){const a=r(this,c).ui.feature.showCurrency,o=r(this,c).api.coinValueInCents,g=r(this,c).api.currency||w,h=[r(this,c).ui.language];return W({canShowCurrency:a,coinValueInCents:o,currency:g,locales:h},i,t,n)}formatCoins(i,t){return this.formatCurrency(i,{as:y.Number,from:l.Coins},t)}formatCoinsWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:l.Coins},t)}formatMoney(i,t){return this.formatCurrency(i,{as:y.Number,from:l.Money},t)}formatMoneyWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:l.Money},t)}}c=new WeakMap;const v=()=>{};var x,C,d,p;class z{constructor({messagePort:i}){e(this,x);e(this,C);e(this,d);e(this,p);u(this,p,i),this.on("configured",t=>{u(this,x,t),u(this,d,new M({config:t})),u(this,C,new O({config:t}))}),this.on("playResponse",t=>{this.config.api.lastRoundId=t.contract.roundId})}get config(){if(!r(this,x))throw new Error("config is not initialized, you must open game first");return r(this,x)}get history(){if(!r(this,C))throw new Error("config is not initialized, you must open game first");return r(this,C)}get i18n(){if(!r(this,d))throw new Error("i18n is not initialized, you must open game first");return r(this,d)}request(i,...[t]){return new Promise(n=>{this.on(`${i}Response`,a=>n({type:"response",response:a}),{once:!0}),this.on(`${i}Error`,a=>n({type:"error",error:a}),{once:!0}),this.send(i,t)})}on(i,t,n){const a=function o(g){g.data.message===`kalamba:wrapper:${i}`&&(v("on",g.data.message.replace(/^kalamba:/,""),g.data.payload),t(g.data.payload),n!=null&&n.once&&window.removeEventListener("message",o))};window.addEventListener("message",a)}send(i,...[t]){r(this,p).postMessage({message:`kalamba:sdk:${i}`,payload:t},"*")}configure(i){this.send("configure",i)}async openGame(){const i=new Promise(n=>this.on("configured",n,{once:!0})),t=await this.request("openGame");if(t.type==="response")return await i,t.response;throw t.error.type==="timeout"?new D.TimeoutError:new D.RgsError(t.error.data)}async play(i,t,n="SPIN"){const a={contract:i,extra:t,actionType:n},o=await this.request("play",a);if(o.type==="response")return o.response;throw o.error.type==="timeout"?new D.TimeoutError:new D.RgsError(o.error.data)}}x=new WeakMap,C=new WeakMap,d=new WeakMap,p=new WeakMap;exports.RgsError=D.RgsError;exports.RgsErrorCode=D.RgsErrorCode;exports.TimeoutError=D.TimeoutError;exports.History=O;exports.I18n=M;exports.KalambaSdk=z;
5
+ "use strict";var A=m=>{throw TypeError(m)};var N=(m,i,t)=>i.has(m)||A("Cannot "+t);var r=(m,i,t)=>(N(m,i,"read from private field"),t?t.call(m):i.get(m)),e=(m,i,t)=>i.has(m)?A("Cannot add the same private member more than once"):i instanceof WeakSet?i.add(m):i.set(m,t),u=(m,i,t,n)=>(N(m,i,"write to private field"),n?n.call(m,t):i.set(m,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./errors-BXO3dlhS.cjs"),O=require("./encoders-DVHzIpWT.cjs"),U=3e4;var F,S;class k{constructor(i){e(this,F);e(this,S,U);u(this,F,i)}buildHeaders(){const i={};return r(this,F).token&&(i.Authorization=`Bearer ${r(this,F).token}`),i}async request(i,t){const n=new URL(i,r(this,F).apiUrl??window.location.origin);return n.search=new URLSearchParams({...t}).toString(),await(await fetch(n,{signal:AbortSignal.timeout(r(this,S)),headers:this.buildHeaders()})).json()}async getRounds(i){return this.request("/rounds",i)}async getRound(i,t){return this.request(`/rounds/${i}`,t)}}F=new WeakMap,S=new WeakMap;const I=Symbol.for("constructDateFrom");function $(m,i){return typeof m=="function"?m(i):m&&typeof m=="object"&&I in m?m[I](i):m instanceof Date?new m.constructor(i):new Date(i)}function P(m,i){return $(m,m)}function K(m,i){const t=P(m);return t.setHours(0,0,0,0),t}function _(m,i){const t=P(m);return t.setHours(23,59,59,999),t}function q(m){return _(Date.now())}function X(m){return K(Date.now())}const b={limit:100,page:0};var s,x;class G{constructor({config:i}){e(this,s);e(this,x);u(this,s,i),u(this,x,new k({apiUrl:i.api.gameHistoryUrl}))}async getRound(i,{pagination:t=b}={}){return r(this,x).getRound(i,{gameCode:r(this,s).api.game,operatorCode:r(this,s).api.brand,username:r(this,s).api.user,...t})}async getLastRound(){return r(this,s).api.lastRoundId?this.getRound(r(this,s).api.lastRoundId):null}async getRounds({searchPeriod:i={fromDateTime:X(),toDateTime:q()},pagination:t=b}={}){const n=r(this,s).api.user.replace(/^user_/,"").replace(new RegExp(`_${r(this,s).api.integration}$`),"");return r(this,x).getRounds({gameCode:r(this,s).api.game,operatorCode:r(this,s).api.integration,username:n,fromDataTime:i.fromDateTime.toISOString(),toDateTime:i.toDateTime.toISOString(),...t})}}s=new WeakMap,x=new WeakMap;function V(m,i){return m*i/100}function M(m,i,t){if(!["string","number"].includes(typeof i))return"NaN";const{locales:n}=m;try{return new Intl.NumberFormat(n,{...t,numberingSystem:"latn",style:"decimal"}).format(+i)}catch{return`${i}`}}const w="XTS";var y=(m=>(m.Currency="Currency",m.Number="Number",m))(y||{}),f=(m=>(m.Coins="Coins",m.Money="Money",m))(f||{});const T={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},"BK.":{maximumFractionDigits:2,minimumFractionDigits:2},"BT.":{maximumFractionDigits:2,minimumFractionDigits:2},"FC.":{maximumFractionDigits:2,minimumFractionDigits:2},"GC.":{maximumFractionDigits:2,minimumFractionDigits:2},"SC.":{maximumFractionDigits:2,minimumFractionDigits:2},GC:{maximumFractionDigits:2,minimumFractionDigits:2},SC:{maximumFractionDigits:2,minimumFractionDigits:2},GLD:{displayAs:"GC.",maximumFractionDigits:2,minimumFractionDigits:2},SS1:{displayAs:"SC.",maximumFractionDigits:2,minimumFractionDigits:2},SWEP:{displayAs:"SC.",maximumFractionDigits:2,minimumFractionDigits:2},GCLC:{displayAs:"GC.",maximumFractionDigits:2,minimumFractionDigits:2},SWPC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},LUKC:{displayAs:"LC",maximumFractionDigits:2,minimumFractionDigits:2},SVC:{maximumFractionDigits:2,minimumFractionDigits:2},DOT:{maximumFractionDigits:4,minimumFractionDigits:4},SOL:{maximumFractionDigits:4,minimumFractionDigits:4},XRP:{maximumFractionDigits:2,minimumFractionDigits:2},ADA:{maximumFractionDigits:2,minimumFractionDigits:2},TON:{maximumFractionDigits:4,minimumFractionDigits:4},FTN:{maximumFractionDigits:4,minimumFractionDigits:4},OMR:{maximumFractionDigits:2,minimumFractionDigits:2},JOD:{maximumFractionDigits:2,minimumFractionDigits:2},BHD:{maximumFractionDigits:2,minimumFractionDigits:2},KWD:{maximumFractionDigits:2,minimumFractionDigits:2},BNS:{maximumFractionDigits:2,minimumFractionDigits:2},GRSC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},GRGC:{displayAs:"GC",maximumFractionDigits:2,minimumFractionDigits:2},EEGP:{displayAs:"EP",maximumFractionDigits:2,minimumFractionDigits:2},EPGP:{displayAs:"PP",maximumFractionDigits:2,minimumFractionDigits:2},MMK:{maximumFractionDigits:2,minimumFractionDigits:2},XOF:{maximumFractionDigits:2,minimumFractionDigits:2},VND:{maximumFractionDigits:2,minimumFractionDigits:2},BIF:{maximumFractionDigits:2,minimumFractionDigits:2},CLP:{maximumFractionDigits:2,minimumFractionDigits:2},GNF:{maximumFractionDigits:2,minimumFractionDigits:2},IQD:{maximumFractionDigits:2,minimumFractionDigits:2},ISK:{maximumFractionDigits:2,minimumFractionDigits:2},PYG:{maximumFractionDigits:2,minimumFractionDigits:2},XAF:{maximumFractionDigits:2,minimumFractionDigits:2},LAK:{maximumFractionDigits:2,minimumFractionDigits:2},LBP:{maximumFractionDigits:2,minimumFractionDigits:2},MGA:{maximumFractionDigits:2,minimumFractionDigits:2},SOS:{maximumFractionDigits:2,minimumFractionDigits:2},UGX:{maximumFractionDigits:2,minimumFractionDigits:2},ALL:{maximumFractionDigits:2,minimumFractionDigits:2},IRR:{maximumFractionDigits:2,minimumFractionDigits:2}};function B(m){return m in T}function W(m){return B(m)?{...T[m],currency:w}:{currency:m}}function z(m,i,t){const n=i.format(+m);return B(t)?n.replace(w,T[t].displayAs??t):n}function j(m,i,t){const{maximumFractionDigits:n,minimumFractionDigits:o}=t.resolvedOptions();return M(m,i,{maximumFractionDigits:n,minimumFractionDigits:o})}function J(m,i,{as:t}={as:"Currency"}){const{canShowCurrency:n,currency:o}=m;return t==="Number"||!n?`${i}`:`${i} ${o}`}function v(m,i,{as:t,from:n}={as:"Currency",from:"Money"},o){if(!["string","number"].includes(typeof i))return"NaN";const{canShowCurrency:a=!0,coinValueInCents:g,currency:h,locales:R}=m;n==="Coins"&&(i=V(+i,g));try{const H=W(h),E=new Intl.NumberFormat(R,{...H,...o,currencyDisplay:"symbol",numberingSystem:"latn",style:"currency"});return t==="Number"||!a?j(m,i,E):z(i,E,h)}catch{return J(m,i,{as:t})}}var c;class L{constructor({config:i}){e(this,c);u(this,c,i)}formatNumber(i,t){const n={locales:[r(this,c).ui.language]};return M(n,i,t)}formatCurrency(i,t={as:y.Currency,from:f.Money},n){const o=r(this,c).ui.feature.showCurrency,a=r(this,c).api.coinValueInCents,g=r(this,c).api.currency||w,h=[r(this,c).ui.language];return v({canShowCurrency:o,coinValueInCents:a,currency:g,locales:h},i,t,n)}formatCoins(i,t){return this.formatCurrency(i,{as:y.Number,from:f.Coins},t)}formatCoinsWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:f.Coins},t)}formatMoney(i,t){return this.formatCurrency(i,{as:y.Number,from:f.Money},t)}formatMoneyWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:f.Money},t)}}c=new WeakMap;const Y=()=>{};var C,l,d,p;class Q{constructor({messagePort:i}){e(this,C);e(this,l);e(this,d);e(this,p);u(this,p,i),this.on("configured",t=>{u(this,C,t),u(this,d,new L({config:t})),u(this,l,new G({config:t}))}),this.on("playResponse",t=>{this.config.api.lastRoundId=t.contract.roundId})}get config(){if(!r(this,C))throw new Error("config is not initialized, you must open game first");return r(this,C)}get history(){if(!r(this,l))throw new Error("config is not initialized, you must open game first");return r(this,l)}get i18n(){if(!r(this,d))throw new Error("i18n is not initialized, you must open game first");return r(this,d)}request(i,...[t]){return new Promise(n=>{this.on(`${i}Response`,o=>n({type:"response",response:o}),{once:!0}),this.on(`${i}Error`,o=>n({type:"error",error:o}),{once:!0}),this.send(i,t)})}on(i,t,n){const o=function a(g){g.data.message===`kalamba:wrapper:${i}`&&(Y("on",g.data.message.replace(/^kalamba:/,""),g.data.payload),t(g.data.payload),n!=null&&n.once&&window.removeEventListener("message",a))};window.addEventListener("message",o)}send(i,...[t]){r(this,p).postMessage({message:`kalamba:sdk:${i}`,payload:t},"*")}configure(i){this.send("configure",i)}async openGame(){const i=new Promise(n=>this.on("configured",n,{once:!0})),t=await this.request("openGame");if(t.type==="response")return await i,t.response;throw t.error.type==="timeout"?new D.TimeoutError:new D.RgsError(t.error.data)}async play(i,t,n="SPIN"){const o={contract:i,extra:t,actionType:n},a=await this.request("play",o);if(a.type==="response")return a.response;throw a.error.type==="timeout"?new D.TimeoutError:new D.RgsError(a.error.data)}}C=new WeakMap,l=new WeakMap,d=new WeakMap,p=new WeakMap;exports.RgsError=D.RgsError;exports.RgsErrorCode=D.RgsErrorCode;exports.TimeoutError=D.TimeoutError;exports.decoders=O.decoders;exports.encoders=O.encoders;exports.History=G;exports.I18n=L;exports.KalambaSdk=Q;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { CurrencyFormat } from '@kalamba/common/src/utils/format/currency';
2
2
  import { CurrencyNumber } from '@kalamba/common/src/utils/format/currency';
3
3
  import { FormatCurrencyOptions } from '@kalamba/common/src/utils/format/currency';
4
+ import { OpenGameResponse as OpenGameResponse_2 } from '../types';
5
+ import { PlayResponse as PlayResponse_2 } from '../types';
4
6
 
5
7
  declare interface AddEventListenerOptions_2 {
6
8
  once: boolean;
@@ -62,6 +64,14 @@ export { CurrencyFormat }
62
64
 
63
65
  export { CurrencyNumber }
64
66
 
67
+ export declare type Decoder = (data: any) => unknown;
68
+
69
+ export declare type Decoders = keyof typeof decoders;
70
+
71
+ export declare const decoders: {
72
+ json: (text: string, reviver?: (this: any, key: string, value: any) => any) => any;
73
+ };
74
+
65
75
  export declare type DomainAllowedPayloadMap<P extends DomainPrefix> = DomainToMessagePayloadMap[P];
66
76
 
67
77
  export declare type DomainMessage<P extends DomainPrefix> = keyof DomainAllowedPayloadMap<P>;
@@ -83,6 +93,17 @@ export declare type DomainToMessagePayloadMap = {
83
93
  telemetry: TelemetryOnlyMessagePayloadMap;
84
94
  };
85
95
 
96
+ export declare type Encoder = (data: any) => unknown;
97
+
98
+ export declare type Encoders = keyof typeof encoders;
99
+
100
+ export declare const encoders: {
101
+ json: {
102
+ (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
103
+ (value: any, replacer?: (number | string)[] | null, space?: string | number): string;
104
+ };
105
+ };
106
+
86
107
  export { FormatCurrencyOptions }
87
108
 
88
109
  export declare type ForwardToPluginsMessage<P extends PluginDomain> = keyof ForwardToPluginsMessageMap<'sdk'>[P] | keyof ForwardToPluginsMessageMap<'rgs'>[P] | keyof ForwardToPluginsMessageMap<'casino'>[P] | keyof ForwardToPluginsMessageMap<'telemetry'>[P];
@@ -176,8 +197,8 @@ export declare class KalambaSdk {
176
197
  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;
177
198
  send<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [DomainMessagePayload<'sdk', M>]): void;
178
199
  configure(payload: DomainMessagePayload<'sdk', 'configure'>): void;
179
- openGame(): Promise<OpenGameResponse>;
180
- play(contract: ContractPlayPayload, extra?: unknown, actionType?: string): Promise<PlayResponse>;
200
+ openGame(): Promise<OpenGameResponse_2>;
201
+ play(contract: ContractPlayPayload, extra?: unknown, actionType?: string): Promise<PlayResponse_2>;
181
202
  }
182
203
 
183
204
  export declare type Message = keyof MessageMap;
@@ -565,6 +586,8 @@ export declare type ToTelemetryPluginsForwardedMessageMap = {
565
586
  };
566
587
 
567
588
  export declare type WrapperConfig = {
589
+ dataDecoder?: Decoders;
590
+ dataEncoder?: Encoders;
568
591
  gameName: string;
569
592
  gameVersion: string;
570
593
  gameHistoryUrl?: string;
package/dist/index.js CHANGED
@@ -5,35 +5,18 @@
5
5
  var A = (m) => {
6
6
  throw TypeError(m);
7
7
  };
8
- var N = (m, i, t) => i.has(m) || A("Cannot " + t);
9
- var r = (m, i, t) => (N(m, i, "read from private field"), t ? t.call(m) : i.get(m)), e = (m, i, t) => i.has(m) ? A("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(m) : i.set(m, t), u = (m, i, t, n) => (N(m, i, "write to private field"), n ? n.call(m, t) : i.set(m, t), t);
10
- import { T as E, R as b } from "./errors-NnLrKjTz.js";
11
- import { a as ti } from "./errors-NnLrKjTz.js";
12
- function O(m) {
13
- const i = Object.prototype.toString.call(m);
14
- return m instanceof Date || typeof m == "object" && i === "[object Date]" ? new m.constructor(+m) : typeof m == "number" || i === "[object Number]" || typeof m == "string" || i === "[object String]" ? new Date(m) : /* @__PURE__ */ new Date(NaN);
15
- }
16
- function L(m) {
17
- const i = O(m);
18
- return i.setHours(23, 59, 59, 999), i;
19
- }
20
- function M() {
21
- return L(Date.now());
22
- }
23
- function U(m) {
24
- const i = O(m);
25
- return i.setHours(0, 0, 0, 0), i;
26
- }
27
- function H() {
28
- return U(Date.now());
29
- }
30
- const k = 3e4;
8
+ var E = (m, i, t) => i.has(m) || A("Cannot " + t);
9
+ var r = (m, i, t) => (E(m, i, "read from private field"), t ? t.call(m) : i.get(m)), u = (m, i, t) => i.has(m) ? A("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(m) : i.set(m, t), e = (m, i, t, n) => (E(m, i, "write to private field"), n ? n.call(m, t) : i.set(m, t), t);
10
+ import { T as N, R as I } from "./errors-NnLrKjTz.js";
11
+ import { a as ni } from "./errors-NnLrKjTz.js";
12
+ import { d as ai, e as si } from "./encoders-BDr7fjKQ.js";
13
+ const M = 3e4;
31
14
  var D, h;
32
- class $ {
15
+ class U {
33
16
  constructor(i) {
34
- e(this, D);
35
- e(this, h, k);
36
- u(this, D, i);
17
+ u(this, D);
18
+ u(this, h, M);
19
+ e(this, D, i);
37
20
  }
38
21
  buildHeaders() {
39
22
  const i = {};
@@ -56,24 +39,36 @@ class $ {
56
39
  }
57
40
  }
58
41
  D = new WeakMap(), h = new WeakMap();
59
- const I = {
60
- limit: 100,
61
- page: 0
62
- };
42
+ const O = Symbol.for("constructDateFrom");
43
+ function H(m, i) {
44
+ return typeof m == "function" ? m(i) : m && typeof m == "object" && O in m ? m[O](i) : m instanceof Date ? new m.constructor(i) : new Date(i);
45
+ }
46
+ function G(m, i) {
47
+ return H(m, m);
48
+ }
49
+ function k(m, i) {
50
+ const t = G(m);
51
+ return t.setHours(0, 0, 0, 0), t;
52
+ }
53
+ function $(m, i) {
54
+ const t = G(m);
55
+ return t.setHours(23, 59, 59, 999), t;
56
+ }
57
+ function K(m) {
58
+ return $(Date.now());
59
+ }
60
+ function _(m) {
61
+ return k(Date.now());
62
+ }
63
+ const b = { limit: 100, page: 0 };
63
64
  var s, f;
64
- class K {
65
- constructor({
66
- config: i
67
- }) {
68
- e(this, s);
69
- e(this, f);
70
- u(this, s, i), u(this, f, new $({
71
- apiUrl: i.api.gameHistoryUrl
72
- }));
65
+ class X {
66
+ constructor({ config: i }) {
67
+ u(this, s);
68
+ u(this, f);
69
+ e(this, s, i), e(this, f, new U({ apiUrl: i.api.gameHistoryUrl }));
73
70
  }
74
- async getRound(i, {
75
- pagination: t = I
76
- } = {}) {
71
+ async getRound(i, { pagination: t = b } = {}) {
77
72
  return r(this, f).getRound(i, {
78
73
  gameCode: r(this, s).api.game,
79
74
  operatorCode: r(this, s).api.brand,
@@ -85,11 +80,8 @@ class K {
85
80
  return r(this, s).api.lastRoundId ? this.getRound(r(this, s).api.lastRoundId) : null;
86
81
  }
87
82
  async getRounds({
88
- searchPeriod: i = {
89
- fromDateTime: H(),
90
- toDateTime: M()
91
- },
92
- pagination: t = I
83
+ searchPeriod: i = { fromDateTime: _(), toDateTime: K() },
84
+ pagination: t = b
93
85
  } = {}) {
94
86
  const n = r(this, s).api.user.replace(/^user_/, "").replace(new RegExp(`_${r(this, s).api.integration}$`), "");
95
87
  return r(this, f).getRounds({
@@ -103,10 +95,10 @@ class K {
103
95
  }
104
96
  }
105
97
  s = new WeakMap(), f = new WeakMap();
106
- function _(m, i) {
98
+ function V(m, i) {
107
99
  return m * i / 100;
108
100
  }
109
- function G(m, i, t) {
101
+ function P(m, i, t) {
110
102
  if (!["string", "number"].includes(typeof i))
111
103
  return "NaN";
112
104
  const { locales: n } = m;
@@ -280,33 +272,33 @@ const w = {
280
272
  IRR: { maximumFractionDigits: 2, minimumFractionDigits: 2 }
281
273
  /* eslint-enable sort-keys-fix/sort-keys-fix */
282
274
  };
283
- function P(m) {
275
+ function B(m) {
284
276
  return m in w;
285
277
  }
286
- function X(m) {
287
- return P(m) ? {
278
+ function q(m) {
279
+ return B(m) ? {
288
280
  ...w[m],
289
281
  currency: S
290
282
  } : {
291
283
  currency: m
292
284
  };
293
285
  }
294
- function V(m, i, t) {
286
+ function W(m, i, t) {
295
287
  const n = i.format(+m);
296
- return P(t) ? n.replace(S, w[t].displayAs ?? t) : n;
288
+ return B(t) ? n.replace(S, w[t].displayAs ?? t) : n;
297
289
  }
298
- function j(m, i, t) {
290
+ function z(m, i, t) {
299
291
  const { maximumFractionDigits: n, minimumFractionDigits: a } = t.resolvedOptions();
300
- return G(m, i, { maximumFractionDigits: n, minimumFractionDigits: a });
292
+ return P(m, i, { maximumFractionDigits: n, minimumFractionDigits: a });
301
293
  }
302
- function q(m, i, { as: t } = {
294
+ function J(m, i, { as: t } = {
303
295
  as: "Currency"
304
296
  /* Currency */
305
297
  }) {
306
298
  const { canShowCurrency: n, currency: a } = m;
307
299
  return t === "Number" || !n ? `${i}` : `${i} ${a}`;
308
300
  }
309
- function W(m, i, { as: t, from: n } = {
301
+ function j(m, i, { as: t, from: n } = {
310
302
  as: "Currency",
311
303
  from: "Money"
312
304
  /* Money */
@@ -314,10 +306,10 @@ function W(m, i, { as: t, from: n } = {
314
306
  if (!["string", "number"].includes(typeof i))
315
307
  return "NaN";
316
308
  const { canShowCurrency: o = !0, coinValueInCents: g, currency: d, locales: T } = m;
317
- n === "Coins" && (i = _(+i, g));
309
+ n === "Coins" && (i = V(+i, g));
318
310
  try {
319
- const B = X(d), R = new Intl.NumberFormat(T, {
320
- ...B,
311
+ const L = q(d), R = new Intl.NumberFormat(T, {
312
+ ...L,
321
313
  ...a,
322
314
  currencyDisplay: "symbol",
323
315
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -325,24 +317,24 @@ function W(m, i, { as: t, from: n } = {
325
317
  numberingSystem: "latn",
326
318
  style: "currency"
327
319
  });
328
- return t === "Number" || !o ? j(m, i, R) : V(i, R, d);
320
+ return t === "Number" || !o ? z(m, i, R) : W(i, R, d);
329
321
  } catch {
330
- return q(m, i, { as: t });
322
+ return J(m, i, { as: t });
331
323
  }
332
324
  }
333
325
  var c;
334
- class v {
326
+ class Y {
335
327
  constructor({ config: i }) {
336
- e(this, c);
337
- u(this, c, i);
328
+ u(this, c);
329
+ e(this, c, i);
338
330
  }
339
331
  formatNumber(i, t) {
340
332
  const n = { locales: [r(this, c).ui.language] };
341
- return G(n, i, t);
333
+ return P(n, i, t);
342
334
  }
343
335
  formatCurrency(i, t = { as: F.Currency, from: y.Money }, n) {
344
336
  const a = r(this, c).ui.feature.showCurrency, o = r(this, c).api.coinValueInCents, g = r(this, c).api.currency || S, d = [r(this, c).ui.language];
345
- return W({
337
+ return j({
346
338
  canShowCurrency: a,
347
339
  coinValueInCents: o,
348
340
  currency: g,
@@ -363,17 +355,17 @@ class v {
363
355
  }
364
356
  }
365
357
  c = new WeakMap();
366
- const z = () => {
358
+ const v = () => {
367
359
  };
368
- var x, l, C, p;
369
- class Q {
360
+ var x, C, p, l;
361
+ class ii {
370
362
  constructor({ messagePort: i }) {
371
- e(this, x);
372
- e(this, l);
373
- e(this, C);
374
- e(this, p);
375
- u(this, p, i), this.on("configured", (t) => {
376
- u(this, x, t), u(this, C, new v({ config: t })), u(this, l, new K({ config: t }));
363
+ u(this, x);
364
+ u(this, C);
365
+ u(this, p);
366
+ u(this, l);
367
+ e(this, l, i), this.on("configured", (t) => {
368
+ e(this, x, t), e(this, p, new Y({ config: t })), e(this, C, new X({ config: t }));
377
369
  }), this.on("playResponse", (t) => {
378
370
  this.config.api.lastRoundId = t.contract.roundId;
379
371
  });
@@ -384,14 +376,14 @@ class Q {
384
376
  return r(this, x);
385
377
  }
386
378
  get history() {
387
- if (!r(this, l))
379
+ if (!r(this, C))
388
380
  throw new Error("config is not initialized, you must open game first");
389
- return r(this, l);
381
+ return r(this, C);
390
382
  }
391
383
  get i18n() {
392
- if (!r(this, C))
384
+ if (!r(this, p))
393
385
  throw new Error("i18n is not initialized, you must open game first");
394
- return r(this, C);
386
+ return r(this, p);
395
387
  }
396
388
  request(i, ...[t]) {
397
389
  return new Promise((n) => {
@@ -402,13 +394,13 @@ class Q {
402
394
  }
403
395
  on(i, t, n) {
404
396
  const a = function o(g) {
405
- g.data.message === `kalamba:wrapper:${i}` && (z("on", g.data.message.replace(/^kalamba:/, ""), g.data.payload), t(g.data.payload), n != null && n.once && window.removeEventListener("message", o));
397
+ g.data.message === `kalamba:wrapper:${i}` && (v("on", g.data.message.replace(/^kalamba:/, ""), g.data.payload), t(g.data.payload), n != null && n.once && window.removeEventListener("message", o));
406
398
  };
407
399
  window.addEventListener("message", a);
408
400
  }
409
401
  // TODO error messages
410
402
  send(i, ...[t]) {
411
- r(this, p).postMessage(
403
+ r(this, l).postMessage(
412
404
  {
413
405
  message: `kalamba:sdk:${i}`,
414
406
  payload: t
@@ -423,21 +415,23 @@ class Q {
423
415
  const i = new Promise((n) => this.on("configured", n, { once: !0 })), t = await this.request("openGame");
424
416
  if (t.type === "response")
425
417
  return await i, t.response;
426
- throw t.error.type === "timeout" ? new E() : new b(t.error.data);
418
+ throw t.error.type === "timeout" ? new N() : new I(t.error.data);
427
419
  }
428
420
  async play(i, t, n = "SPIN") {
429
421
  const a = { contract: i, extra: t, actionType: n }, o = await this.request("play", a);
430
422
  if (o.type === "response")
431
423
  return o.response;
432
- throw o.error.type === "timeout" ? new E() : new b(o.error.data);
424
+ throw o.error.type === "timeout" ? new N() : new I(o.error.data);
433
425
  }
434
426
  }
435
- x = new WeakMap(), l = new WeakMap(), C = new WeakMap(), p = new WeakMap();
427
+ x = new WeakMap(), C = new WeakMap(), p = new WeakMap(), l = new WeakMap();
436
428
  export {
437
- K as History,
438
- v as I18n,
439
- Q as KalambaSdk,
440
- b as RgsError,
441
- ti as RgsErrorCode,
442
- E as TimeoutError
429
+ X as History,
430
+ Y as I18n,
431
+ ii as KalambaSdk,
432
+ I as RgsError,
433
+ ni as RgsErrorCode,
434
+ N as TimeoutError,
435
+ ai as decoders,
436
+ si as encoders
443
437
  };