@cloudbet/market-helper
Version:
SDK to generate localized sport market information
75 lines • 2.93 kB
JavaScript
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
var _a, _b, _c;
import enMarketDefinitions from './markets/en.json';
import { Locale } from './sports-core-types';
import enSports from './sports/en.json';
var locales = (_a = {},
_a[Locale.en] = {
marketDefinitions: enMarketDefinitions,
sportsLocale: enSports,
},
_a);
export var getMarketDefinitions = function (locale) {
var _a;
var result = ((_a = locales[locale]) === null || _a === void 0 ? void 0 : _a.marketDefinitions) || {};
if (locale === Locale.en) {
return result;
}
// some locale's marketDefinitions are missing "{sportKey}.freetext" key, fill them in with the english ones
if (Object.keys(result).length > 0) {
var enData_1 = enMarketDefinitions;
Object.keys(enData_1).filter(function (key) { return key.includes('freetext'); }).forEach(function (key) {
result[key] = enData_1[key];
});
}
return result;
};
export var getSportsLocale = function (locale) {
return (locales[locale] || locales.en).sportsLocale;
};
var loadingLocales = (_b = {},
_b[Locale.en] = false,
_b);
export var isLoading = function (locale) { return !!loadingLocales[locale]; };
export var isLoaded = function (locale) { return !!locales[locale]; };
var localeAlias = (_c = {},
_c[Locale.zh] = [Locale.zh_CN],
_c[Locale.zh_CN] = [Locale.zh],
_c);
export var loadLocale = function (locale) {
return new Promise(function (res, rej) {
var marketDefinitions = undefined;
var sportsLocale = undefined;
loadingLocales[locale] = true;
var finish = function () {
if (!marketDefinitions || !sportsLocale) {
return;
}
loadingLocales[locale] = false;
var sportsMarketLocale = { marketDefinitions: marketDefinitions, sportsLocale: sportsLocale };
var aliases = __spreadArrays((localeAlias[locale] || []), [locale]);
aliases.forEach(function (l) { return locales[l] = sportsMarketLocale; });
res({ marketDefinitions: marketDefinitions, sportsLocale: sportsLocale });
};
var localeFileName = locale.replace('_', '-');
import("./markets/" + localeFileName + ".json")
.then(function (m) {
marketDefinitions = (m.default || m);
finish();
})
.catch(rej);
import("./sports/" + localeFileName + ".json")
.then(function (m) {
sportsLocale = (m.default || m);
finish();
})
.catch(rej);
});
};
//# sourceMappingURL=locales.js.map