ts-client-lib 0.0.7

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.
Files changed (64) hide show
  1. package/README.md +76 -0
  2. package/auth/TSJWT.d.ts +29 -0
  3. package/auth/TSJWT.js +44 -0
  4. package/auth/TSOAuth.d.ts +132 -0
  5. package/auth/TSOAuth.js +230 -0
  6. package/devices/TSCordova.d.ts +5 -0
  7. package/devices/TSCordova.js +52 -0
  8. package/entities/TSCountries.d.ts +14 -0
  9. package/entities/TSCountries.js +1188 -0
  10. package/entities/TSCurrencies.d.ts +35 -0
  11. package/entities/TSCurrencies.js +604 -0
  12. package/entities/TSMobilePhones.d.ts +167 -0
  13. package/entities/TSMobilePhones.js +206 -0
  14. package/entities/TSMoney.d.ts +149 -0
  15. package/entities/TSMoney.js +311 -0
  16. package/entities/currency-amount.d.ts +13 -0
  17. package/entities/currency-amount.js +43 -0
  18. package/finance/TSBonus.d.ts +197 -0
  19. package/finance/TSBonus.js +530 -0
  20. package/finance/TSKYC.d.ts +563 -0
  21. package/finance/TSKYC.js +1066 -0
  22. package/finance/TSTax.d.ts +49 -0
  23. package/finance/TSTax.js +106 -0
  24. package/finance/bonus-money.d.ts +41 -0
  25. package/finance/bonus-money.js +61 -0
  26. package/games/TSBetSlip.d.ts +72 -0
  27. package/games/TSBetSlip.js +179 -0
  28. package/games/TSBetSystem.d.ts +4 -0
  29. package/games/TSBetSystem.js +48 -0
  30. package/games/TSLotto.d.ts +35 -0
  31. package/games/TSLotto.js +205 -0
  32. package/games/TSPool.d.ts +28 -0
  33. package/games/TSPool.js +88 -0
  34. package/package.json +93 -0
  35. package/utils/TSArray.d.ts +9 -0
  36. package/utils/TSArray.js +87 -0
  37. package/utils/TSBoolean.d.ts +4 -0
  38. package/utils/TSBoolean.js +24 -0
  39. package/utils/TSCache.d.ts +167 -0
  40. package/utils/TSCache.js +531 -0
  41. package/utils/TSDate.d.ts +8 -0
  42. package/utils/TSDate.js +67 -0
  43. package/utils/TSHeuristic.d.ts +20 -0
  44. package/utils/TSHeuristic.js +197 -0
  45. package/utils/TSLZS.d.ts +42 -0
  46. package/utils/TSLZS.js +343 -0
  47. package/utils/TSLog.d.ts +40 -0
  48. package/utils/TSLog.js +110 -0
  49. package/utils/TSNumber.d.ts +6 -0
  50. package/utils/TSNumber.js +68 -0
  51. package/utils/TSObject.d.ts +29 -0
  52. package/utils/TSObject.js +312 -0
  53. package/utils/TSPagination.d.ts +282 -0
  54. package/utils/TSPagination.js +425 -0
  55. package/utils/TSPaginationMulti.d.ts +77 -0
  56. package/utils/TSPaginationMulti.js +356 -0
  57. package/utils/TSString.d.ts +10 -0
  58. package/utils/TSString.js +107 -0
  59. package/utils/TSValidator.d.ts +16 -0
  60. package/utils/TSValidator.js +74 -0
  61. package/utils/TSWorker.d.ts +3 -0
  62. package/utils/TSWorker.js +32 -0
  63. package/utils/diacritics-removal-map.d.ts +5 -0
  64. package/utils/diacritics-removal-map.js +341 -0
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-feed cursor pagination — client-side emulation of legacy paginateMulti.
4
+ *
5
+ * Each feed keeps its own PGN-1 cursor; this module k-way merges by a shared sort field.
6
+ * Use for "All orders" / recent-activity views. Per-product tabs should use TSPagination alone.
7
+ *
8
+ * @see TSPagination.ts — single-feed cursor UI helpers
9
+ */
10
+ var __assign = (this && this.__assign) || function () {
11
+ __assign = Object.assign || function(t) {
12
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
13
+ s = arguments[i];
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
15
+ t[p] = s[p];
16
+ }
17
+ return t;
18
+ };
19
+ return __assign.apply(this, arguments);
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __generator = (this && this.__generator) || function (thisArg, body) {
31
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
32
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
33
+ function verb(n) { return function (v) { return step([n, v]); }; }
34
+ function step(op) {
35
+ if (f) throw new TypeError("Generator is already executing.");
36
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
37
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
38
+ if (y = 0, t) op = [op[0] & 2, t.value];
39
+ switch (op[0]) {
40
+ case 0: case 1: t = op; break;
41
+ case 4: _.label++; return { value: op[1], done: false };
42
+ case 5: _.label++; y = op[1]; op = [0]; continue;
43
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
44
+ default:
45
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
46
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
47
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
48
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
49
+ if (t[2]) _.ops.pop();
50
+ _.trys.pop(); continue;
51
+ }
52
+ op = body.call(thisArg, _);
53
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
54
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
55
+ }
56
+ };
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ exports.TSPaginationMulti = exports.MultiFeedMergePaginator = void 0;
59
+ exports.mergeConnectionsFirstPage = mergeConnectionsFirstPage;
60
+ exports.toMergedCursorConnection = toMergedCursorConnection;
61
+ var TSPagination_js_1 = require("./TSPagination.js");
62
+ // ═══════════════════════════════════════════════════════════════════
63
+ // Pure merge (first page / stateless)
64
+ // ═══════════════════════════════════════════════════════════════════
65
+ function sortValue(raw) {
66
+ if (raw == null)
67
+ return 0;
68
+ if (raw instanceof Date)
69
+ return raw.getTime();
70
+ if (typeof raw === 'number' && Number.isFinite(raw))
71
+ return raw;
72
+ if (typeof raw === 'string') {
73
+ var parsed = Date.parse(raw);
74
+ return Number.isNaN(parsed) ? 0 : parsed;
75
+ }
76
+ return 0;
77
+ }
78
+ function compareNodes(a, b, sortField, sortDir) {
79
+ var _a, _b, _c, _d;
80
+ var av = sortValue(a[sortField]);
81
+ var bv = sortValue(b[sortField]);
82
+ if (av !== bv)
83
+ return sortDir === 'desc' ? bv - av : av - bv;
84
+ var aid = String((_b = (_a = a['id']) !== null && _a !== void 0 ? _a : a['orderId']) !== null && _b !== void 0 ? _b : '');
85
+ var bid = String((_d = (_c = b['id']) !== null && _c !== void 0 ? _c : b['orderId']) !== null && _d !== void 0 ? _d : '');
86
+ return aid.localeCompare(bid);
87
+ }
88
+ /**
89
+ * Stateless merge — legacy paginateMulti page-1 equivalent.
90
+ * Parallel responses are merged, sorted, and sliced to `limit`.
91
+ */
92
+ function mergeConnectionsFirstPage(responses, opts) {
93
+ var _a;
94
+ var sortDir = (_a = opts.sortDir) !== null && _a !== void 0 ? _a : 'desc';
95
+ var merged = [];
96
+ var feeds = {};
97
+ var totalSum = 0;
98
+ var allTotals = true;
99
+ for (var _i = 0, responses_1 = responses; _i < responses_1.length; _i++) {
100
+ var _b = responses_1[_i], key = _b.key, connection = _b.connection;
101
+ feeds[key] = {
102
+ pageInfo: connection.pageInfo,
103
+ buffered: connection.nodes.length
104
+ };
105
+ if (typeof connection.totalCount !== 'number')
106
+ allTotals = false;
107
+ else
108
+ totalSum += connection.totalCount;
109
+ for (var _c = 0, _d = connection.nodes; _c < _d.length; _c++) {
110
+ var node = _d[_c];
111
+ merged.push(__assign(__assign({}, node), { feedKey: key }));
112
+ }
113
+ }
114
+ merged.sort(function (a, b) { return compareNodes(a, b, opts.sortField, sortDir); });
115
+ var nodes = merged.slice(0, opts.limit);
116
+ var hasMore = merged.length > opts.limit ||
117
+ responses.some(function (_a) {
118
+ var connection = _a.connection;
119
+ return connection.pageInfo.hasNextPage;
120
+ });
121
+ return {
122
+ nodes: nodes,
123
+ totalCount: allTotals ? totalSum : undefined,
124
+ hasMore: hasMore,
125
+ feeds: feeds
126
+ };
127
+ }
128
+ /** Adapt merge result to ConnectionList / GraphQL connection shape. */
129
+ function toMergedCursorConnection(result) {
130
+ var _a;
131
+ return {
132
+ nodes: result.nodes,
133
+ totalCount: (_a = result.totalCount) !== null && _a !== void 0 ? _a : result.nodes.length,
134
+ pageInfo: {
135
+ hasNextPage: result.hasMore,
136
+ hasPreviousPage: false,
137
+ startCursor: null,
138
+ endCursor: null
139
+ }
140
+ };
141
+ }
142
+ // ═══════════════════════════════════════════════════════════════════
143
+ // Stateful k-way merge (page 2+)
144
+ // ═══════════════════════════════════════════════════════════════════
145
+ /**
146
+ * Maintains per-feed buffers and cursors; fetches the next globally sorted page.
147
+ */
148
+ var MultiFeedMergePaginator = /** @class */ (function () {
149
+ function MultiFeedMergePaginator(sources, pageSize, sortField, sortDir) {
150
+ if (sortDir === void 0) { sortDir = 'desc'; }
151
+ this.sources = sources;
152
+ this.pageSize = pageSize;
153
+ this.sortField = sortField;
154
+ this.sortDir = sortDir;
155
+ this.buffers = [];
156
+ this.pageIndex = 0;
157
+ }
158
+ MultiFeedMergePaginator.prototype.reset = function () {
159
+ var _this = this;
160
+ this.buffers = this.sources.map(function (source) { return ({
161
+ key: source.key,
162
+ pending: [],
163
+ pageInfo: TSPaginationMulti.initialPageInfo(),
164
+ pagination: { first: _this.pageSize },
165
+ exhausted: false,
166
+ totalCount: undefined,
167
+ fetch: source.fetch,
168
+ mapNode: source.mapNode
169
+ }); });
170
+ this.pageIndex = 0;
171
+ };
172
+ /** Fetch the next merged page (call reset() before the first page). */
173
+ MultiFeedMergePaginator.prototype.fetchNextPage = function () {
174
+ return __awaiter(this, void 0, void 0, function () {
175
+ var page, head, feeds, totalSum, allTotals, _i, _a, buf, hasMore;
176
+ return __generator(this, function (_b) {
177
+ switch (_b.label) {
178
+ case 0:
179
+ if (this.buffers.length === 0)
180
+ this.reset();
181
+ page = [];
182
+ _b.label = 1;
183
+ case 1:
184
+ if (!(page.length < this.pageSize)) return [3 /*break*/, 3];
185
+ return [4 /*yield*/, this.peekBestHead()];
186
+ case 2:
187
+ head = _b.sent();
188
+ if (!head)
189
+ return [3 /*break*/, 3];
190
+ page.push(__assign(__assign({}, head.node), { feedKey: head.buffer.key }));
191
+ head.buffer.pending.shift();
192
+ return [3 /*break*/, 1];
193
+ case 3:
194
+ this.pageIndex += 1;
195
+ feeds = {};
196
+ totalSum = 0;
197
+ allTotals = true;
198
+ for (_i = 0, _a = this.buffers; _i < _a.length; _i++) {
199
+ buf = _a[_i];
200
+ feeds[buf.key] = { pageInfo: buf.pageInfo, buffered: buf.pending.length };
201
+ if (typeof buf.totalCount !== 'number')
202
+ allTotals = false;
203
+ else
204
+ totalSum += buf.totalCount;
205
+ }
206
+ hasMore = this.buffers.some(function (b) { return b.pending.length > 0 || (!b.exhausted && b.pageInfo.hasNextPage); });
207
+ return [2 /*return*/, {
208
+ nodes: page,
209
+ totalCount: allTotals ? totalSum : undefined,
210
+ hasMore: hasMore,
211
+ feeds: feeds
212
+ }];
213
+ }
214
+ });
215
+ });
216
+ };
217
+ Object.defineProperty(MultiFeedMergePaginator.prototype, "currentPageIndex", {
218
+ get: function () {
219
+ return this.pageIndex;
220
+ },
221
+ enumerable: false,
222
+ configurable: true
223
+ });
224
+ MultiFeedMergePaginator.prototype.peekBestHead = function () {
225
+ return __awaiter(this, void 0, void 0, function () {
226
+ var best, _i, _a, buffer, node;
227
+ return __generator(this, function (_b) {
228
+ switch (_b.label) {
229
+ case 0: return [4 /*yield*/, this.refillBuffersWhereNeeded()];
230
+ case 1:
231
+ _b.sent();
232
+ best = null;
233
+ for (_i = 0, _a = this.buffers; _i < _a.length; _i++) {
234
+ buffer = _a[_i];
235
+ node = buffer.pending[0];
236
+ if (!node)
237
+ continue;
238
+ if (!best || compareNodes(node, best.node, this.sortField, this.sortDir) < 0) {
239
+ best = { buffer: buffer, node: node };
240
+ }
241
+ }
242
+ return [2 /*return*/, best];
243
+ }
244
+ });
245
+ });
246
+ };
247
+ MultiFeedMergePaginator.prototype.refillBuffersWhereNeeded = function () {
248
+ return __awaiter(this, void 0, void 0, function () {
249
+ var needsFetch, emptyActive;
250
+ var _this = this;
251
+ return __generator(this, function (_a) {
252
+ switch (_a.label) {
253
+ case 0:
254
+ needsFetch = this.buffers.filter(function (b) { return !b.exhausted && b.pending.length === 0 && b.pageInfo.hasNextPage !== false; });
255
+ if (!(needsFetch.length === 0)) return [3 /*break*/, 2];
256
+ emptyActive = this.buffers.filter(function (b) { return !b.exhausted && b.pending.length === 0; });
257
+ if (emptyActive.length === 0)
258
+ return [2 /*return*/];
259
+ return [4 /*yield*/, Promise.all(emptyActive.map(function (b) { return _this.fetchMore(b); }))];
260
+ case 1:
261
+ _a.sent();
262
+ return [2 /*return*/];
263
+ case 2:
264
+ if (!(this.pageIndex === 0)) return [3 /*break*/, 4];
265
+ return [4 /*yield*/, Promise.all(this.buffers.map(function (b) { return _this.fetchMore(b); }))];
266
+ case 3:
267
+ _a.sent();
268
+ return [3 /*break*/, 6];
269
+ case 4: return [4 /*yield*/, Promise.all(needsFetch.map(function (b) { return _this.fetchMore(b); }))];
270
+ case 5:
271
+ _a.sent();
272
+ _a.label = 6;
273
+ case 6: return [2 /*return*/];
274
+ }
275
+ });
276
+ });
277
+ };
278
+ MultiFeedMergePaginator.prototype.resolveFetchPagination = function (buffer, isFirstFetch) {
279
+ if (isFirstFetch)
280
+ return { first: this.pageSize };
281
+ if (buffer.pageInfo.hasNextPage && buffer.pageInfo.endCursor) {
282
+ return { first: this.pageSize, after: buffer.pageInfo.endCursor };
283
+ }
284
+ return { first: this.pageSize };
285
+ };
286
+ MultiFeedMergePaginator.prototype.fetchMore = function (buffer) {
287
+ return __awaiter(this, void 0, void 0, function () {
288
+ var isFirstFetch, pagination, connection, mapped;
289
+ var _a;
290
+ return __generator(this, function (_b) {
291
+ switch (_b.label) {
292
+ case 0:
293
+ if (buffer.exhausted)
294
+ return [2 /*return*/];
295
+ isFirstFetch = buffer.pending.length === 0 && !buffer.pageInfo.endCursor;
296
+ pagination = this.resolveFetchPagination(buffer, isFirstFetch);
297
+ if (!isFirstFetch && !buffer.pageInfo.hasNextPage) {
298
+ buffer.exhausted = true;
299
+ return [2 /*return*/];
300
+ }
301
+ return [4 /*yield*/, buffer.fetch(pagination)];
302
+ case 1:
303
+ connection = _b.sent();
304
+ buffer.pageInfo = connection.pageInfo;
305
+ buffer.pagination = pagination;
306
+ if (typeof connection.totalCount === 'number')
307
+ buffer.totalCount = connection.totalCount;
308
+ mapped = connection.nodes.map(function (n) { return (buffer.mapNode ? buffer.mapNode(n) : n); });
309
+ (_a = buffer.pending).push.apply(_a, mapped);
310
+ if (!connection.pageInfo.hasNextPage && mapped.length === 0) {
311
+ buffer.exhausted = true;
312
+ }
313
+ return [2 /*return*/];
314
+ }
315
+ });
316
+ });
317
+ };
318
+ return MultiFeedMergePaginator;
319
+ }());
320
+ exports.MultiFeedMergePaginator = MultiFeedMergePaginator;
321
+ // ═══════════════════════════════════════════════════════════════════
322
+ // Facade
323
+ // ═══════════════════════════════════════════════════════════════════
324
+ var TSPaginationMulti = /** @class */ (function () {
325
+ function TSPaginationMulti() {
326
+ }
327
+ TSPaginationMulti.initialPageInfo = function () {
328
+ return {
329
+ hasNextPage: false,
330
+ hasPreviousPage: false,
331
+ startCursor: null,
332
+ endCursor: null
333
+ };
334
+ };
335
+ /** One CursorPaginationState per feed key (tab mode). */
336
+ TSPaginationMulti.createFeedStates = function (keys, defaultPageSize) {
337
+ if (defaultPageSize === void 0) { defaultPageSize = 25; }
338
+ var out = {};
339
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
340
+ var key = keys_1[_i];
341
+ out[key] = { first: defaultPageSize };
342
+ }
343
+ return out;
344
+ };
345
+ TSPaginationMulti.createPaginator = function (sources, pageSize, sortField, sortDir) {
346
+ if (sortDir === void 0) { sortDir = 'desc'; }
347
+ return new MultiFeedMergePaginator(sources, pageSize, sortField, sortDir);
348
+ };
349
+ TSPaginationMulti.mergeFirstPage = mergeConnectionsFirstPage;
350
+ TSPaginationMulti.toCursorConnection = toMergedCursorConnection;
351
+ /** Re-export for merged views that share the same pagination bar helpers. */
352
+ TSPaginationMulti.getDisplay = TSPagination_js_1.TSPagination.getDisplay.bind(TSPagination_js_1.TSPagination);
353
+ TSPaginationMulti.getRangeStartAfterMove = TSPagination_js_1.TSPagination.getRangeStartAfterMove.bind(TSPagination_js_1.TSPagination);
354
+ return TSPaginationMulti;
355
+ }());
356
+ exports.TSPaginationMulti = TSPaginationMulti;
@@ -0,0 +1,10 @@
1
+ export declare class TSString {
2
+ static slugify(text: string, join?: string, cut?: string): string;
3
+ static parseAndReplace(text: string, data?: any, cb?: (k: any, t?: any) => any, masks?: Array<string>): string;
4
+ static masks(kind: string, key?: string): RegExp;
5
+ static pad(string: string | number, length?: number, char?: any, append?: boolean): string;
6
+ static cfChar(string: string, char?: string): string;
7
+ static paramToJson(text: string): string;
8
+ static isJson(text: string): boolean;
9
+ static splitBy(term: string, match: string, kind?: 'first' | 'last'): string[];
10
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TSString = void 0;
13
+ var TSString = /** @class */ (function () {
14
+ function TSString() {
15
+ }
16
+ TSString.slugify = function (text, join, cut) {
17
+ if (join === void 0) { join = '-'; }
18
+ if (cut) {
19
+ text = text.toString().split(cut)[0];
20
+ }
21
+ text = text.toString().replace(/[^\w\s]/g, '');
22
+ if (join === 'cc') {
23
+ return text.split(/\.|_|\s+|\d+/).map(function (v, i) {
24
+ v = v.toLowerCase();
25
+ if (i > 0) {
26
+ v = TSString.cfChar(v);
27
+ }
28
+ return v.length > 1 ? v : '';
29
+ }).filter(Boolean).join('');
30
+ }
31
+ return text.replace(/\s+/g, join).toLowerCase();
32
+ };
33
+ TSString.parseAndReplace = function (text, data, cb, masks) {
34
+ if (masks === void 0) { masks = ['braces']; }
35
+ if (data && Array.isArray(data)) {
36
+ data.forEach(function (v, i) { return text = text.replace(RegExp(('{' + i + '}').replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), v); });
37
+ }
38
+ else if (data && typeof data === 'object') {
39
+ var keys = masks.reduce(function (a, k) { return Object.assign.apply(Object, __spreadArray([a], (text.match(TSString.masks(k, '.+?')) || []).map(function (s) {
40
+ var _a;
41
+ return (_a = {}, _a[s.slice(1, -1)] = s, _a);
42
+ }), false)); }, {});
43
+ for (var k in keys) {
44
+ if (Object.hasOwn(keys, k)) {
45
+ var _a = k.split(/:(.+)/), key = _a[0], type = _a[1];
46
+ text = text.replace(new RegExp(keys[k].replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), cb ? cb(key, type) : data[key]);
47
+ }
48
+ }
49
+ }
50
+ masks.forEach(function (k) { return text = text.replace(TSString.masks(k), ''); });
51
+ return text;
52
+ };
53
+ TSString.masks = function (kind, key) {
54
+ if (key === void 0) { key = '.*'; }
55
+ if (kind === 'braces') {
56
+ return /(?:^|)\{([^{}]*)(\}(?!\}))/g;
57
+ }
58
+ else if (kind === 'parentheses') {
59
+ return new RegExp('\\(' + key + '\\)', 'g');
60
+ }
61
+ else if (kind === 'brackets') {
62
+ return new RegExp('\\[' + key + '\\]', 'g');
63
+ }
64
+ return new RegExp('%' + key + '%', 'g');
65
+ };
66
+ TSString.pad = function (string, length, char, append) {
67
+ if (length === void 0) { length = 2; }
68
+ if (char === void 0) { char = ' '; }
69
+ string = string.toString();
70
+ char = char.toString();
71
+ while (string.length < length) {
72
+ string = append ? string + char : char + string;
73
+ }
74
+ return string;
75
+ };
76
+ TSString.cfChar = function (string, char) {
77
+ string = string.toString();
78
+ if (char && string.indexOf(char) !== 0) {
79
+ string = char + string;
80
+ }
81
+ else {
82
+ string = string.charAt(0).toUpperCase() + string.slice(1);
83
+ }
84
+ return string;
85
+ };
86
+ TSString.paramToJson = function (text) {
87
+ return '{"' + text.replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}';
88
+ };
89
+ TSString.isJson = function (text) {
90
+ return /^[\],:{}\s]*$/.test(text.replace(/\\["\\/bfnrtu]/g, '@')
91
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g, ']')
92
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, ''));
93
+ };
94
+ TSString.splitBy = function (term, match, kind) {
95
+ if (kind === void 0) { kind = 'last'; }
96
+ var index;
97
+ if (kind === 'last') {
98
+ index = term.lastIndexOf(match);
99
+ }
100
+ else {
101
+ index = term.indexOf(match);
102
+ }
103
+ return [term.substring(0, index), term.substring(index + 1)];
104
+ };
105
+ return TSString;
106
+ }());
107
+ exports.TSString = TSString;
@@ -0,0 +1,16 @@
1
+ export interface ITSValidator {
2
+ amount: number;
3
+ unit?: string;
4
+ min?: number;
5
+ max?: number;
6
+ balance?: number;
7
+ }
8
+ export declare class TSValidator {
9
+ options: ITSValidator;
10
+ constructor(options?: any);
11
+ static compareProperties(source: Record<string, unknown>, target: Record<string, unknown>): Record<string, unknown>[];
12
+ compare(prefix?: string): Array<any>;
13
+ compareOption(option: string, compare: (o: number, c: number) => boolean): any;
14
+ static condition(value: any, criteria?: any): boolean;
15
+ static message(option: string): string;
16
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.TSValidator = void 0;
15
+ var TSObject_1 = require("./TSObject");
16
+ var TSValidator = /** @class */ (function () {
17
+ function TSValidator(options) {
18
+ if (options === void 0) { options = {}; }
19
+ this.options = { amount: 0 };
20
+ if (options) {
21
+ this.options = __assign(__assign({}, this.options), options);
22
+ }
23
+ }
24
+ TSValidator.compareProperties = function (source, target) {
25
+ var validations = [];
26
+ TSObject_1.TSObject.forOwn(source, function (v, k) {
27
+ var _a;
28
+ if (!(k in target)) {
29
+ validations.push((_a = { message: TSValidator.message(String(k)) + 'IsMissed' }, _a[k] = v, _a));
30
+ }
31
+ else if (target[String(k)] !== v) {
32
+ validations.push({ message: TSValidator.message(String(k)) + 'NotMet', property: k, source: v, target: target[String(k)] });
33
+ }
34
+ });
35
+ return validations;
36
+ };
37
+ TSValidator.prototype.compare = function (prefix) {
38
+ if (prefix === void 0) { prefix = ''; }
39
+ return [
40
+ this.compareOption('amount', function (o) { return o > 0; }),
41
+ this.compareOption('balance', function (o, c) { return c <= o; }),
42
+ this.compareOption('min', function (o, c) { return c >= o; }),
43
+ this.compareOption('max', function (o, c) { return c <= o; })
44
+ ].filter(function (v) {
45
+ if (v) {
46
+ v.message = prefix + v.message;
47
+ }
48
+ return v;
49
+ });
50
+ };
51
+ TSValidator.prototype.compareOption = function (option, compare) {
52
+ var _a;
53
+ var opt = this.options;
54
+ var amount = (_a = this.options.amount) !== null && _a !== void 0 ? _a : 0;
55
+ if (typeof opt[option] !== 'undefined' && !compare(opt[option], amount)) {
56
+ return __assign({ message: "".concat(TSValidator.message(option), "VsAmountNotMet") }, this.options);
57
+ }
58
+ return false;
59
+ };
60
+ TSValidator.condition = function (value, criteria) {
61
+ if (value === undefined || value === null) {
62
+ return true;
63
+ }
64
+ if (criteria === undefined || criteria === null) {
65
+ return Boolean(value);
66
+ }
67
+ return value == criteria;
68
+ };
69
+ TSValidator.message = function (option) {
70
+ return option.charAt(0).toUpperCase() + option.slice(1);
71
+ };
72
+ return TSValidator;
73
+ }());
74
+ exports.TSValidator = TSValidator;
@@ -0,0 +1,3 @@
1
+ export declare class TSWorker {
2
+ static create(WorkerFunction: new () => Worker): ((params: unknown) => Promise<unknown>) | undefined;
3
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TSWorker = void 0;
4
+ var TSWorker = /** @class */ (function () {
5
+ function TSWorker() {
6
+ }
7
+ TSWorker.create = function (WorkerFunction) {
8
+ if ('Worker' in window) {
9
+ var worker_1 = new WorkerFunction();
10
+ var lastRequestId_1 = 0;
11
+ var pendingPromises_1 = new Map();
12
+ worker_1.onmessage = function (event) {
13
+ var _a = event.data, id = _a.id, result = _a.result;
14
+ if (pendingPromises_1.has(id)) {
15
+ var resolve = pendingPromises_1.get(id);
16
+ resolve(result);
17
+ pendingPromises_1.delete(id);
18
+ }
19
+ };
20
+ return function (params) {
21
+ var requestId = ++lastRequestId_1;
22
+ var promise = new Promise(function (resolve) {
23
+ pendingPromises_1.set(requestId, resolve);
24
+ worker_1.postMessage({ id: requestId, params: params });
25
+ });
26
+ return promise;
27
+ };
28
+ }
29
+ };
30
+ return TSWorker;
31
+ }());
32
+ exports.TSWorker = TSWorker;
@@ -0,0 +1,5 @@
1
+ export interface DiacriticsRemovalRule {
2
+ base: string;
3
+ letters: RegExp;
4
+ }
5
+ export declare const DIACRITICS_REMOVAL_MAP: DiacriticsRemovalRule[];