@dchighs/dbgames 0.1.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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/client.d.ts +10 -0
  4. package/dist/client.js +30 -0
  5. package/dist/dbgames.d.ts +28 -0
  6. package/dist/dbgames.js +175 -0
  7. package/dist/enums/alphabet.enum.d.ts +28 -0
  8. package/dist/enums/alphabet.enum.js +32 -0
  9. package/dist/enums/dragon-element.enum.d.ts +22 -0
  10. package/dist/enums/dragon-element.enum.js +26 -0
  11. package/dist/enums/dragon-rarity.enum.d.ts +8 -0
  12. package/dist/enums/dragon-rarity.enum.js +12 -0
  13. package/dist/enums/dragons-sort-by.enum.d.ts +10 -0
  14. package/dist/enums/dragons-sort-by.enum.js +14 -0
  15. package/dist/enums/index.d.ts +5 -0
  16. package/dist/enums/index.js +21 -0
  17. package/dist/enums/order-by.enum.d.ts +4 -0
  18. package/dist/enums/order-by.enum.js +8 -0
  19. package/dist/helpers/regex.helper.d.ts +7 -0
  20. package/dist/helpers/regex.helper.js +10 -0
  21. package/dist/index.d.ts +4 -0
  22. package/dist/index.js +23 -0
  23. package/dist/interfaces/dragons-list.interface.d.ts +24 -0
  24. package/dist/interfaces/dragons-list.interface.js +2 -0
  25. package/dist/interfaces/full-data-dragon.interface.d.ts +34 -0
  26. package/dist/interfaces/full-data-dragon.interface.js +2 -0
  27. package/dist/interfaces/index.d.ts +3 -0
  28. package/dist/interfaces/index.js +19 -0
  29. package/dist/interfaces/preview-dragon.interface.d.ts +21 -0
  30. package/dist/interfaces/preview-dragon.interface.js +2 -0
  31. package/dist/parsing-models/dragon-page.model.d.ts +70 -0
  32. package/dist/parsing-models/dragon-page.model.js +73 -0
  33. package/dist/parsing-models/dragon.model.d.ts +48 -0
  34. package/dist/parsing-models/dragon.model.js +51 -0
  35. package/dist/parsing-models/dragons-page.model.d.ts +54 -0
  36. package/dist/parsing-models/dragons-page.model.js +12 -0
  37. package/dist/transforming-models/dragon-page.model.d.ts +2 -0
  38. package/dist/transforming-models/dragon-page.model.js +257 -0
  39. package/dist/transforming-models/dragon.model.d.ts +2 -0
  40. package/dist/transforming-models/dragon.model.js +166 -0
  41. package/dist/transforming-models/dragons-page.model.d.ts +2 -0
  42. package/dist/transforming-models/dragons-page.model.js +12 -0
  43. package/dist/utils/extract-attack-id-from-name-key.util.d.ts +1 -0
  44. package/dist/utils/extract-attack-id-from-name-key.util.js +15 -0
  45. package/dist/utils/extract-dragon-page-slug.util.d.ts +1 -0
  46. package/dist/utils/extract-dragon-page-slug.util.js +10 -0
  47. package/dist/utils/extract-page-number-from-url.util.d.ts +1 -0
  48. package/dist/utils/extract-page-number-from-url.util.js +15 -0
  49. package/dist/utils/index.d.ts +7 -0
  50. package/dist/utils/index.js +23 -0
  51. package/dist/utils/pick-keys.util.d.ts +1 -0
  52. package/dist/utils/pick-keys.util.js +10 -0
  53. package/dist/utils/string-duration-to-seconds.util.d.ts +1 -0
  54. package/dist/utils/string-duration-to-seconds.util.js +22 -0
  55. package/dist/utils/string-time-to-seconds.util.d.ts +1 -0
  56. package/dist/utils/string-time-to-seconds.util.js +11 -0
  57. package/dist/utils/value-of-enum.util.d.ts +1 -0
  58. package/dist/utils/value-of-enum.util.js +2 -0
  59. package/package.json +46 -0
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dragonTransformingModel = void 0;
4
+ const transformer_1 = require("@xcrap/transformer");
5
+ const dc_core_1 = require("@dchighs/dc-core");
6
+ const regex_helper_1 = require("../helpers/regex.helper");
7
+ const utils_1 = require("../utils");
8
+ exports.dragonTransformingModel = new transformer_1.TransformingModel({
9
+ id: [
10
+ (0, transformer_1.transform)({
11
+ key: "heading",
12
+ transformer: transformer_1.StringTransformer.extract(regex_helper_1.regexHelper.dragonId, 1),
13
+ }),
14
+ (0, transformer_1.transform)({
15
+ key: "id",
16
+ transformer: transformer_1.StringTransformer.toNumber,
17
+ }),
18
+ ],
19
+ name: [
20
+ (0, transformer_1.transform)({
21
+ key: "heading",
22
+ transformer: transformer_1.StringTransformer.extract(regex_helper_1.regexHelper.dragonName, 1),
23
+ }),
24
+ ],
25
+ name_key: [
26
+ (0, transformer_1.transform)({
27
+ key: "id",
28
+ transformer: (id) => `tid_unit_${id}_name`,
29
+ }),
30
+ ],
31
+ description: [
32
+ (0, transformer_1.transform)({
33
+ key: "description",
34
+ transformer: transformer_1.StringTransformer.trim,
35
+ }),
36
+ ],
37
+ description_key: [
38
+ (0, transformer_1.transform)({
39
+ key: "id",
40
+ transformer: (id) => `tid_unit_${id}_description`,
41
+ }),
42
+ ],
43
+ dragon_rarity: [
44
+ (0, transformer_1.transform)({
45
+ key: "rarity",
46
+ transformer: transformer_1.StringTransformer.toUpperCase,
47
+ }),
48
+ (0, transformer_1.transform)({
49
+ key: "dragon_rarity",
50
+ transformer: transformer_1.StringTransformer.substr(0, 1),
51
+ }),
52
+ ],
53
+ attributes: [
54
+ (0, transformer_1.transform)({
55
+ key: "elements",
56
+ transformer: transformer_1.ArrayTransformer.map(transformer_1.StringTransformer.toLowerCase),
57
+ }),
58
+ (0, transformer_1.transform)({
59
+ key: "attributes",
60
+ transformer: (elements) => {
61
+ return elements.map((element) => dc_core_1.elementSettings[element].acronym);
62
+ },
63
+ }),
64
+ ],
65
+ img_name: [
66
+ (0, transformer_1.transform)({
67
+ key: "firstImageUrl",
68
+ condition: (value) => !!value,
69
+ transformer: dc_core_1.DragonStaticFileUrlParser.getImageName,
70
+ }),
71
+ (0, transformer_1.transform)({
72
+ key: "firstImageUrl",
73
+ condition: (value) => !value,
74
+ transformer: () => null,
75
+ }),
76
+ ],
77
+ hatching_time: [
78
+ (0, transformer_1.transform)({
79
+ key: "hatchingTime",
80
+ condition: (value) => value !== null,
81
+ transformer: transformer_1.StringTransformer.trim,
82
+ }),
83
+ (0, transformer_1.transform)({
84
+ key: "hatching_time",
85
+ condition: (value) => value !== null,
86
+ transformer: utils_1.stringTimeToSeconds,
87
+ }),
88
+ ],
89
+ breeding_time: [
90
+ (0, transformer_1.transform)({
91
+ key: "breedingTime",
92
+ condition: (value) => value !== null,
93
+ transformer: transformer_1.StringTransformer.trim,
94
+ }),
95
+ (0, transformer_1.transform)({
96
+ key: "breeding_time",
97
+ condition: (value) => value !== null,
98
+ transformer: utils_1.stringTimeToSeconds,
99
+ }),
100
+ ],
101
+ xp: [
102
+ (0, transformer_1.transform)({
103
+ key: "xpOnHatching",
104
+ condition: (value) => !!value,
105
+ transformer: transformer_1.StringTransformer.replace(/,/g, ""),
106
+ }),
107
+ (0, transformer_1.transform)({
108
+ key: "xp",
109
+ condition: (value) => !!value,
110
+ transformer: transformer_1.StringTransformer.toNumber,
111
+ }),
112
+ (0, transformer_1.transform)({
113
+ key: "xp",
114
+ condition: (value) => !value,
115
+ transformer: () => null,
116
+ }),
117
+ ],
118
+ starting_coins: [
119
+ (0, transformer_1.transform)({
120
+ key: "goldProductionInfo",
121
+ condition: (value) => !!value,
122
+ transformer: transformer_1.StringTransformer.extract(regex_helper_1.regexHelper.dragonStartingCoins, 1),
123
+ }),
124
+ (0, transformer_1.transform)({
125
+ key: "starting_coins",
126
+ condition: (value) => !!value,
127
+ transformer: transformer_1.StringTransformer.toNumber,
128
+ }),
129
+ (0, transformer_1.transform)({
130
+ key: "goldProductionInfo",
131
+ condition: (value) => !value,
132
+ transformer: () => null,
133
+ }),
134
+ ],
135
+ coins_added: [
136
+ (0, transformer_1.transform)({
137
+ key: "goldProductionInfo",
138
+ condition: (value) => !!value,
139
+ transformer: transformer_1.StringTransformer.extract(regex_helper_1.regexHelper.dragonCoinsIncome, 1),
140
+ }),
141
+ (0, transformer_1.transform)({
142
+ key: "coins_added",
143
+ condition: (value) => !!value,
144
+ transformer: transformer_1.StringTransformer.toNumber,
145
+ }),
146
+ (0, transformer_1.transform)({
147
+ key: "goldProductionInfo",
148
+ condition: (value) => !value,
149
+ transformer: () => null,
150
+ }),
151
+ ],
152
+ }).after({
153
+ delete: [
154
+ "heading",
155
+ "goldProductionInfo",
156
+ "hatchingExperience",
157
+ "xpOnHatching",
158
+ "firstImageUrl",
159
+ "elements",
160
+ "hatchingTime",
161
+ "breedingTime",
162
+ ],
163
+ append: {
164
+ group_type: "DRAGON",
165
+ },
166
+ });
@@ -0,0 +1,2 @@
1
+ import { TransformingModel } from "@xcrap/transformer";
2
+ export declare const dragonsPageTransformingModel: TransformingModel;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dragonsPageTransformingModel = void 0;
4
+ const transformer_1 = require("@xcrap/transformer");
5
+ const dragon_model_1 = require("./dragon.model");
6
+ exports.dragonsPageTransformingModel = new transformer_1.TransformingModel({
7
+ dragons: {
8
+ key: "dragons",
9
+ multiple: true,
10
+ model: dragon_model_1.dragonTransformingModel,
11
+ },
12
+ });
@@ -0,0 +1 @@
1
+ export declare function extractAttackIdFromNameKey(nameKey: string): number | null;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractAttackIdFromNameKey = extractAttackIdFromNameKey;
4
+ const regex_helper_1 = require("../helpers/regex.helper");
5
+ function extractAttackIdFromNameKey(nameKey) {
6
+ var _a;
7
+ const match = nameKey.match(regex_helper_1.regexHelper.dragonAttackId);
8
+ if (!((_a = match === null || match === void 0 ? void 0 : match.groups) === null || _a === void 0 ? void 0 : _a.id)) {
9
+ if (nameKey && nameKey.length > 1) {
10
+ return null;
11
+ }
12
+ throw new Error(`Attack id not found at: ${nameKey}`);
13
+ }
14
+ return Number(match.groups.id);
15
+ }
@@ -0,0 +1 @@
1
+ export declare function extractDragonPageSlug(pageUrl: string): string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractDragonPageSlug = extractDragonPageSlug;
4
+ function extractDragonPageSlug(pageUrl) {
5
+ const slug = pageUrl.split("/").pop();
6
+ if (!slug) {
7
+ throw new Error(`Not found dragon page slug at: ${pageUrl}`);
8
+ }
9
+ return slug;
10
+ }
@@ -0,0 +1 @@
1
+ export declare function extractPageNumberFromUrl(url: string | null): number | null;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractPageNumberFromUrl = extractPageNumberFromUrl;
4
+ function extractPageNumberFromUrl(url) {
5
+ if (!url)
6
+ return null;
7
+ try {
8
+ const urlObj = new URL(url);
9
+ const p = urlObj.searchParams.get("p");
10
+ return p ? parseInt(p, 10) : null;
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
@@ -0,0 +1,7 @@
1
+ export * from "./string-time-to-seconds.util";
2
+ export * from "./extract-dragon-page-slug.util";
3
+ export * from "./extract-page-number-from-url.util";
4
+ export * from "./value-of-enum.util";
5
+ export * from "./pick-keys.util";
6
+ export * from "./string-duration-to-seconds.util";
7
+ export * from "./extract-attack-id-from-name-key.util";
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./string-time-to-seconds.util"), exports);
18
+ __exportStar(require("./extract-dragon-page-slug.util"), exports);
19
+ __exportStar(require("./extract-page-number-from-url.util"), exports);
20
+ __exportStar(require("./value-of-enum.util"), exports);
21
+ __exportStar(require("./pick-keys.util"), exports);
22
+ __exportStar(require("./string-duration-to-seconds.util"), exports);
23
+ __exportStar(require("./extract-attack-id-from-name-key.util"), exports);
@@ -0,0 +1 @@
1
+ export declare function pickKeys<T extends Record<string, any>, const K extends readonly (keyof T)[]>(obj: T, keys: K): Pick<T, K[number]>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pickKeys = pickKeys;
4
+ function pickKeys(obj, keys) {
5
+ const out = {};
6
+ for (const key of keys) {
7
+ out[key] = obj[key];
8
+ }
9
+ return out;
10
+ }
@@ -0,0 +1 @@
1
+ export declare function stringDurationToSeconds(input: string): number;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringDurationToSeconds = stringDurationToSeconds;
4
+ function stringDurationToSeconds(input) {
5
+ const [valueStr, unit] = input.split(" ");
6
+ const value = Number(valueStr);
7
+ const unitMap = {
8
+ second: 1,
9
+ seconds: 1,
10
+ minute: 60,
11
+ minutes: 60,
12
+ hour: 3600,
13
+ hours: 3600,
14
+ day: 86400,
15
+ days: 86400,
16
+ };
17
+ const multiplier = unitMap[unit.toLowerCase()];
18
+ if (!multiplier) {
19
+ throw new Error(`Invalid time unit: ${unit}`);
20
+ }
21
+ return value * multiplier;
22
+ }
@@ -0,0 +1 @@
1
+ export declare function stringTimeToSeconds(time: string): number;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringTimeToSeconds = stringTimeToSeconds;
4
+ function stringTimeToSeconds(time) {
5
+ const secondsPerMinute = 60;
6
+ const minutesPerHour = 60;
7
+ const secondsPerHour = secondsPerMinute * minutesPerHour;
8
+ const [hours, minutes, seconds] = time.split(":").map(Number);
9
+ const totalSeconds = hours * secondsPerHour + minutes * secondsPerMinute + seconds;
10
+ return totalSeconds;
11
+ }
@@ -0,0 +1 @@
1
+ export type ValueOfEnum<T extends string | number | bigint | boolean | null | undefined> = T | `${T}`;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@dchighs/dbgames",
3
+ "version": "0.1.0",
4
+ "type": "commonjs",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist/*",
10
+ "!/**/__tests__"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "dev": "ts-node ./src/index.ts",
15
+ "format": "prettier --write \"src/**/*.ts\""
16
+ },
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "keywords": [
21
+ "dbgames",
22
+ "dbgames.info dragon city",
23
+ "dragon city data",
24
+ "dragon city api"
25
+ ],
26
+ "author": "Marcuth",
27
+ "license": "MIT",
28
+ "devDependencies": {
29
+ "@types/node": "^25.2.2",
30
+ "eslint": "^10.0.0",
31
+ "eslint-config-prettier": "^10.1.8",
32
+ "eslint-plugin-prettier": "^5.5.5",
33
+ "prettier": "^3.8.1",
34
+ "prettier-plugin-sort-imports": "^1.8.10",
35
+ "ts-node": "^10.9.2",
36
+ "typescript": "^5.9.3"
37
+ },
38
+ "dependencies": {
39
+ "@dchighs/dc-core": "^0.3.0",
40
+ "@dchighs/dc-localization": "^0.0.6",
41
+ "@xcrap/axios-client": "^0.0.8",
42
+ "@xcrap/core": "^0.2.3",
43
+ "@xcrap/extractor": "^0.3.1",
44
+ "@xcrap/transformer": "^0.3.1"
45
+ }
46
+ }