@everymatrix/lottery-hakuna-ticket-history 0.0.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/cjs/app-globals-3a1e7e63.js +5 -0
- package/dist/cjs/index-dc95b9af.js +1336 -0
- package/dist/cjs/index.cjs.js +10 -0
- package/dist/cjs/loader.cjs.js +15 -0
- package/dist/cjs/lottery-button_8.cjs.entry.js +1427 -0
- package/dist/cjs/lottery-hakuna-ticket-history-84d9a41b.js +2697 -0
- package/dist/cjs/lottery-hakuna-ticket-history.cjs.js +25 -0
- package/dist/collection/collection-manifest.json +50 -0
- package/dist/collection/components/lottery-hakuna-ticket-history/index.js +1 -0
- package/dist/collection/components/lottery-hakuna-ticket-history/lottery-hakuna-ticket-history.css +74 -0
- package/dist/collection/components/lottery-hakuna-ticket-history/lottery-hakuna-ticket-history.js +589 -0
- package/dist/collection/components/lottery-infinite-scroll/lottery-infinite-scroll.css +69 -0
- package/dist/collection/components/lottery-infinite-scroll/lottery-infinite-scroll.js +556 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/models/index.js +21 -0
- package/dist/collection/utils/api.js +149 -0
- package/dist/collection/utils/locale.utils.js +42 -0
- package/dist/collection/utils/utils.js +3 -0
- package/dist/esm/app-globals-0f993ce5.js +3 -0
- package/dist/esm/index-50addd47.js +1307 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/loader.js +11 -0
- package/dist/esm/lottery-button_8.entry.js +1417 -0
- package/dist/esm/lottery-hakuna-ticket-history-cdab50d9.js +2691 -0
- package/dist/esm/lottery-hakuna-ticket-history.js +20 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/lottery-hakuna-ticket-history/app-globals-0f993ce5.js +1 -0
- package/dist/lottery-hakuna-ticket-history/index-50addd47.js +2 -0
- package/dist/lottery-hakuna-ticket-history/index.esm.js +1 -0
- package/dist/lottery-hakuna-ticket-history/lottery-button_8.entry.js +1 -0
- package/dist/lottery-hakuna-ticket-history/lottery-hakuna-ticket-history-cdab50d9.js +1 -0
- package/dist/lottery-hakuna-ticket-history/lottery-hakuna-ticket-history.esm.js +1 -0
- package/dist/stencil.config.dev.js +19 -0
- package/dist/stencil.config.js +19 -0
- package/dist/storybook/main.js +43 -0
- package/dist/storybook/preview.js +9 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/libs/common/src/storybook/storybook-utils.d.ts +39 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/packages/stencil/lottery-hakuna-ticket-history/stencil.config.d.ts +2 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/packages/stencil/lottery-hakuna-ticket-history/stencil.config.dev.d.ts +2 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/packages/stencil/lottery-hakuna-ticket-history/storybook/main.d.ts +3 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/packages/stencil/lottery-hakuna-ticket-history/storybook/preview.d.ts +70 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/tools/plugins/index.d.ts +4 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/tools/plugins/lazy-load-chunk-plugin.d.ts +12 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/tools/plugins/stencil-clean-deps-plugin.d.ts +5 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/tools/plugins/vite-chunk-plugin.d.ts +6 -0
- package/dist/types/builds/emfe-widgets/widgets-monorepo/packages/stencil/lottery-hakuna-ticket-history/.stencil/tools/plugins/vite-clean-deps-plugin.d.ts +4 -0
- package/dist/types/components/lottery-hakuna-ticket-history/index.d.ts +1 -0
- package/dist/types/components/lottery-hakuna-ticket-history/lottery-hakuna-ticket-history.d.ts +131 -0
- package/dist/types/components/lottery-infinite-scroll/lottery-infinite-scroll.d.ts +106 -0
- package/dist/types/components.d.ts +362 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/models/index.d.ts +199 -0
- package/dist/types/stencil-public-runtime.d.ts +1674 -0
- package/dist/types/utils/api.d.ts +8 -0
- package/dist/types/utils/locale.utils.d.ts +3 -0
- package/dist/types/utils/utils.d.ts +1 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/loader/package.json +11 -0
- package/package.json +27 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { format } from "date-fns";
|
|
2
|
+
const generateUUID = () => {
|
|
3
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
4
|
+
var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
|
|
5
|
+
return v.toString(16);
|
|
6
|
+
});
|
|
7
|
+
};
|
|
8
|
+
function fetchRequest(url, method = 'GET', body = null, headers = {}) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
const uuid = generateUUID();
|
|
11
|
+
const headersOrigin = Object.assign({ 'Content-Type': 'application/json' }, headers);
|
|
12
|
+
if (method !== 'GET' && method !== 'HEAD') {
|
|
13
|
+
headersOrigin['X-Idempotency-Key'] = uuid;
|
|
14
|
+
}
|
|
15
|
+
const options = {
|
|
16
|
+
method,
|
|
17
|
+
headers: headersOrigin,
|
|
18
|
+
body: null
|
|
19
|
+
};
|
|
20
|
+
if (body && method !== 'GET' && method !== 'HEAD') {
|
|
21
|
+
options.body = JSON.stringify(body);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
delete options.body;
|
|
25
|
+
}
|
|
26
|
+
fetch(url, options)
|
|
27
|
+
.then((response) => {
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
return response.json().then((errorData) => {
|
|
30
|
+
const error = {
|
|
31
|
+
status: response.status,
|
|
32
|
+
statusText: response.statusText,
|
|
33
|
+
code: errorData.code || 'UNKNOWN_ERROR',
|
|
34
|
+
message: errorData.message || 'An unknown error occurred',
|
|
35
|
+
data: errorData.data || null
|
|
36
|
+
};
|
|
37
|
+
reject(error);
|
|
38
|
+
}, () => reject({
|
|
39
|
+
status: response.status,
|
|
40
|
+
statusText: response.statusText,
|
|
41
|
+
code: 'PARSE_ERROR',
|
|
42
|
+
message: 'Failed to parse error response'
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return response.json();
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
.then((data) => resolve(data), (error) => reject(error));
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function isEmptyValueOfArray(arr) {
|
|
53
|
+
if (arr.length === 0) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
const len = arr.length;
|
|
57
|
+
let count = 0;
|
|
58
|
+
for (let i = 0; i < len; i++) {
|
|
59
|
+
if (isEmptyValue(arr[i])) {
|
|
60
|
+
count++;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (count === len) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
function isEmptyValueOfObject(obj) {
|
|
72
|
+
if (Object.keys(obj).length === 0) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
const len = Object.keys(obj).length;
|
|
76
|
+
let count = 0;
|
|
77
|
+
for (const val of Object.values(obj)) {
|
|
78
|
+
if (isEmptyValue(val)) {
|
|
79
|
+
count++;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (count === len) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
function isEmptyValue(value, allowZero) {
|
|
91
|
+
if (value === null || value === undefined || value === '') {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
else if (value === 0 && allowZero) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
else if (Array.isArray(value)) {
|
|
98
|
+
return isEmptyValueOfArray(value);
|
|
99
|
+
}
|
|
100
|
+
else if (Object.prototype.toString.call(value) === '[object Object]') {
|
|
101
|
+
return isEmptyValueOfObject(value);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return !value;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function toQueryParams(params) {
|
|
108
|
+
const finalParams = {};
|
|
109
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
110
|
+
if (!isEmptyValue(value, true)) {
|
|
111
|
+
finalParams[key] = value;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
const queryString = Object.entries(finalParams)
|
|
115
|
+
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
116
|
+
.join('&');
|
|
117
|
+
return queryString ? `?${queryString}` : '';
|
|
118
|
+
}
|
|
119
|
+
const SPLIT_CHAR = '?';
|
|
120
|
+
export function transformResults(results, meta) {
|
|
121
|
+
if (results && results.length > 0) {
|
|
122
|
+
return results.map((item) => {
|
|
123
|
+
const [date, time] = format(new Date(item.createdAt), `MMM d,yyyy${SPLIT_CHAR}HH:mm:ss a 'UTC'`).split(SPLIT_CHAR);
|
|
124
|
+
return {
|
|
125
|
+
id: item.id,
|
|
126
|
+
name: (meta === null || meta === void 0 ? void 0 : meta.name) || item.gameName,
|
|
127
|
+
imageSrc: meta === null || meta === void 0 ? void 0 : meta.imageSrc,
|
|
128
|
+
totalAmount: (meta === null || meta === void 0 ? void 0 : meta.currency) ? `${meta === null || meta === void 0 ? void 0 : meta.currency} ${item.amount}` : item.amount,
|
|
129
|
+
date,
|
|
130
|
+
time,
|
|
131
|
+
selectedNumbers: item.selection
|
|
132
|
+
.map((item) => {
|
|
133
|
+
return item.selections;
|
|
134
|
+
})
|
|
135
|
+
.join(',')
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
export async function fetchTicketList({ endpoint, filterData, sessionId, meta }) {
|
|
142
|
+
const { items = [], total } = (await fetchRequest(`${endpoint}/tickets${toQueryParams(filterData)}`, 'GET', null, {
|
|
143
|
+
Authorization: `Bearer ${sessionId}`
|
|
144
|
+
})) || { items: [], total: 0 };
|
|
145
|
+
return {
|
|
146
|
+
items: transformResults(items, meta),
|
|
147
|
+
total: total
|
|
148
|
+
};
|
|
149
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const DEFAULT_LANGUAGE = 'en';
|
|
2
|
+
const SUPPORTED_LANGUAGES = ['ro', 'en', 'fr', 'ar', 'hr'];
|
|
3
|
+
const TRANSLATIONS = {
|
|
4
|
+
en: {
|
|
5
|
+
releaseToRefresh: 'Release to refresh...',
|
|
6
|
+
youHaveReachedTheEnd: 'You have reached the end.',
|
|
7
|
+
failToShowTicketList: 'Fail to show ticket list.',
|
|
8
|
+
unauthorized: 'Unauthorized, please login.'
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export const translate = (key, customLang, replacements) => {
|
|
12
|
+
const lang = customLang;
|
|
13
|
+
let translation = TRANSLATIONS[lang !== undefined && SUPPORTED_LANGUAGES.includes(lang) ? lang : DEFAULT_LANGUAGE][key];
|
|
14
|
+
if (replacements) {
|
|
15
|
+
Object.keys(replacements).forEach((placeholder) => {
|
|
16
|
+
translation = translation.replace(`{${placeholder}}`, replacements[placeholder]);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return translation;
|
|
20
|
+
};
|
|
21
|
+
export const getTranslations = (data) => {
|
|
22
|
+
Object.keys(data).forEach((item) => {
|
|
23
|
+
for (let key in data[item]) {
|
|
24
|
+
TRANSLATIONS[item][key] = data[item][key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
export const resolveTranslationUrl = async (translationUrl) => {
|
|
29
|
+
if (translationUrl) {
|
|
30
|
+
try {
|
|
31
|
+
const response = await fetch(translationUrl);
|
|
32
|
+
if (!response.ok) {
|
|
33
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
34
|
+
}
|
|
35
|
+
const translations = await response.json();
|
|
36
|
+
getTranslations(translations);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error('Failed to fetch or parse translations from URL:', error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|