@wfcd/relics 2.0.30 → 2.0.31

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/index.d.mts CHANGED
@@ -1,18 +1,90 @@
1
1
  import { t as __name } from "./rolldown-runtime-C0LytTxp.mjs";
2
-
3
2
  //#region src/Types.d.ts
4
- interface WarframeMarketRoot {
5
- data: Array<WarframeMarketItem>;
3
+ type Rarity = 'Common' | 'Legendary' | 'Rare' | 'Uncommon';
4
+ interface TitaniaRelic {
5
+ /**
6
+ * Drop Locations for the relics
7
+ */
8
+ locations: TitaniaRelicLocation[];
9
+ /**
10
+ * Relic Combined Name (Ex: Axi A1)
11
+ */
12
+ name: string;
13
+ /**
14
+ * Relic Rewards when opened
15
+ */
16
+ rewards: TitaniaRelicReward[];
17
+ /** unique name for corresponding warframe-items Item */
18
+ uniqueName: string;
19
+ /**
20
+ * Relic Vault Information
21
+ */
22
+ vaultInfo: TitaniaRelicVaultedInfo;
23
+ /**
24
+ * Warframe Market Information
25
+ * undefined for untradable
26
+ */
27
+ warframeMarket?: TitaniaWFMInfo;
6
28
  }
7
- interface WarframeMarketItem {
29
+ interface TitaniaRelicLocation {
8
30
  /**
9
- * WFM Item ID
31
+ * Dropchance in %
32
+ */
33
+ chance: number;
34
+ /** Location Info $planet-$node (Ex: Eris - Phalan) */
35
+ location: string;
36
+ /**
37
+ * Rarity (Uncommon, Rare ?)
38
+ */
39
+ rarity: Rarity;
40
+ }
41
+ interface TitaniaRelicReward {
42
+ /**
43
+ * Reward Drop Chance in %
44
+ */
45
+ chance: number;
46
+ /**
47
+ * Item Information
48
+ */
49
+ item: TitaniaRelicRewardItem;
50
+ /**
51
+ * Relic Rarity (Uncommon,Rare ?)
52
+ */
53
+ rarity: 'Rare' | 'Uncommon';
54
+ }
55
+ interface TitaniaRelicRewardItem {
56
+ /**
57
+ * Item Name
58
+ */
59
+ name: string;
60
+ /** unique name for corresponding warframe-items Item */
61
+ uniqueName: string;
62
+ /**
63
+ * WarframeMarket Info
64
+ */
65
+ warframeMarket?: TitaniaWFMInfo;
66
+ }
67
+ interface TitaniaRelicVaultedInfo {
68
+ /**
69
+ * If the relic is vaulted
70
+ */
71
+ vaulted: boolean;
72
+ }
73
+ interface TitaniaWFMInfo {
74
+ /**
75
+ * Warframe Market ID
10
76
  */
11
77
  id: string;
12
78
  /**
13
- * Url name for querying WFM
79
+ * Warframe market URL parameter
14
80
  */
15
- slug: string;
81
+ urlName: string;
82
+ }
83
+ interface WarframeMarketItem {
84
+ /**
85
+ * Unique reference name (Lotus path)
86
+ */
87
+ gameRef: string;
16
88
  /**
17
89
  * WFM language object
18
90
  */
@@ -31,58 +103,29 @@ interface WarframeMarketItem {
31
103
  thumb: string;
32
104
  };
33
105
  };
34
- }
35
- interface WFCDRelic {
36
106
  /**
37
- * Relic Tier (Axi, Neo, etc.)
38
- */
39
- tier: string;
40
- /**
41
- * Relic Name (A1, A10, etc.)
42
- */
43
- relicName: string;
44
- /**
45
- * Relic Refinement state
46
- */
47
- state: 'Intact' | 'Exceptional' | 'Flawless' | 'Radiant';
48
- /**
49
- * Relic Rewards
107
+ * WFM Item ID
50
108
  */
51
- rewards: Array<WFCDRelicReward>;
109
+ id: string;
52
110
  /**
53
- * Internal WFCD id
111
+ * Url name for querying WFM
54
112
  */
55
- _id: string;
113
+ slug: string;
56
114
  }
57
- interface WFCDRelicReward {
58
- /**
59
- * Dropped Item name
60
- */
61
- itemName: string;
62
- /**
63
- * Dropchance Rarity (Uncommon/Rare ?)
64
- */
65
- rarity: 'Uncommon' | 'Rare';
66
- /**
67
- * Actual Dropchance in %
68
- */
69
- chance: number;
70
- /**
71
- * Internal ID
72
- */
73
- _id: string;
115
+ interface WarframeMarketRoot {
116
+ data: WarframeMarketItem[];
74
117
  }
75
118
  interface WFCDItem {
119
+ /**
120
+ * Item Drop Location
121
+ */
122
+ drops?: WFCDItemDropLocation[];
76
123
  /**
77
124
  * Item Name
78
125
  */
79
126
  name: string;
80
127
  /** Unique identifying name */
81
128
  uniqueName: string;
82
- /**
83
- * Item Drop Location
84
- */
85
- drops?: Array<WFCDItemDropLocation>;
86
129
  }
87
130
  interface WFCDItemDropLocation {
88
131
  /**
@@ -102,103 +145,75 @@ interface WFCDItemDropLocation {
102
145
  */
103
146
  type: string;
104
147
  }
105
- interface TitaniaRelic {
148
+ interface WFCDRelic {
106
149
  /**
107
- * Relic Combined Name (Ex: Axi A1)
150
+ * Internal WFCD id
108
151
  */
109
- name: string;
152
+ _id: string;
110
153
  /**
111
- * Relic Rewards when opened
154
+ * Relic Name (A1, A10, etc.)
112
155
  */
113
- rewards: Array<TitaniaRelicReward>;
156
+ relicName: string;
114
157
  /**
115
- * Drop Locations for the relics
158
+ * Relic Rewards
116
159
  */
117
- locations: Array<TitaniaRelicLocation>;
160
+ rewards: WFCDRelicReward[];
118
161
  /**
119
- * Warframe Market Information
120
- * undefined for untradable
162
+ * Relic Refinement state
121
163
  */
122
- warframeMarket?: TitaniaWFMInfo;
164
+ state: 'Exceptional' | 'Flawless' | 'Intact' | 'Radiant';
123
165
  /**
124
- * Relic Vault Information
166
+ * Relic Tier (Axi, Neo, etc.)
125
167
  */
126
- vaultInfo: TitaniaRelicVaultedInfo;
127
- /** unique name for corresponding warframe-items Item */
128
- uniqueName: string;
168
+ tier: string;
129
169
  }
130
- interface TitaniaRelicReward {
170
+ interface WFCDRelicReward {
131
171
  /**
132
- * Relic Rarity (Uncommon,Rare ?)
172
+ * Internal ID
133
173
  */
134
- rarity: 'Uncommon' | 'Rare';
174
+ _id: string;
135
175
  /**
136
- * Reward Drop Chance in %
176
+ * Actual Dropchance in %
137
177
  */
138
178
  chance: number;
139
179
  /**
140
- * Item Information
180
+ * Dropped Item name
141
181
  */
142
- item: TitaniaRelicRewardItem;
143
- }
144
- interface TitaniaRelicRewardItem {
182
+ itemName: string;
145
183
  /**
146
- * Item Name
184
+ * Dropchance Rarity (Uncommon/Rare ?)
147
185
  */
186
+ rarity: 'Rare' | 'Uncommon';
187
+ }
188
+ interface WFCDSparseComponent {
148
189
  name: string;
149
- /** unique name for corresponding warframe-items Item */
150
190
  uniqueName: string;
151
- /**
152
- * WarframeMarket Info
153
- */
154
- warframeMarket?: TitaniaWFMInfo;
155
191
  }
156
- type Rarity = 'Uncommon' | 'Rare' | 'Legendary' | 'Common';
157
- interface TitaniaRelicLocation {
158
- /** Location Info $planet-$node (Ex: Eris - Phalan) */
159
- location: string;
160
- /**
161
- * Rarity (Uncommon, Rare ?)
162
- */
163
- rarity: Rarity;
164
- /**
165
- * Dropchance in %
166
- */
167
- chance: number;
168
- }
169
- interface TitaniaWFMInfo {
170
- /**
171
- * Warframe Market ID
172
- */
173
- id: string;
174
- /**
175
- * Warframe market URL parameter
176
- */
177
- urlName: string;
178
- }
179
- interface TitaniaRelicVaultedInfo {
180
- /**
181
- * If the relic is vaulted
182
- */
183
- vaulted: boolean;
192
+ /** Sparse warframestat item (name + uniqueName, optional components) */
193
+ interface WFCDSparseItem {
194
+ components?: WFCDSparseComponent[];
195
+ name: string;
196
+ uniqueName: string;
184
197
  }
185
198
  //#endregion
186
199
  //#region src/Generator.d.ts
187
200
  declare class Generator {
188
- relicsRaw: Array<WFCDRelic> | undefined;
189
- wfcdItems: Array<WFCDItem> | undefined;
190
- wfmItems: WarframeMarketRoot | undefined;
191
- relics: Array<TitaniaRelic>;
201
+ /** Lowercase item name → uniqueName from sparse warframestat index (+ Blueprint follow-ups) */
202
+ itemUniqueNames: Map<string, string>;
203
+ relics: TitaniaRelic[];
204
+ relicsRaw: undefined | WFCDRelic[];
205
+ wfcdItems: undefined | WFCDItem[];
206
+ wfmItems: undefined | WarframeMarketRoot;
192
207
  constructor();
193
- /**
194
- * Main function to fetch and generate the relic data
195
- * @returns {Promise<Array<TitaniaRelic>>} The Relics data array
196
- */
197
- generate(): Promise<Array<TitaniaRelic>>;
198
208
  /**
199
209
  * Fetches all required data from WFCD and WFM.
200
210
  */
201
211
  fetchRawData(): Promise<void>;
212
+ /**
213
+ * Main function to fetch and generate the relic data
214
+ * @returns {Promise<Array<TitaniaRelic>>} The Relics data array
215
+ */
216
+ generate(): Promise<TitaniaRelic[]>;
202
217
  /**
203
218
  * Generates the relic data
204
219
  * uses WFCD/warframe-drop-data to check what relics exist,
@@ -212,6 +227,16 @@ declare class Generator {
212
227
  * @param {boolean} generateMin True if a minified json should be generated too. Default: true
213
228
  */
214
229
  writeData(dataDir?: string, fileName?: string, generateMin?: boolean): Promise<void>;
230
+ /**
231
+ * Fetch a single warframestat item by name with components for Blueprint resolution.
232
+ * @param {string} name Item display name
233
+ * @returns {Promise<WFCDSparseItem|undefined>} Item or undefined on failure
234
+ */
235
+ private fetchItemByName;
236
+ /**
237
+ * Filters WFCD's relic data to only include Intact variants, since we just need the base.
238
+ */
239
+ private filterWFCDRelics;
215
240
  /**
216
241
  * Generates a single relic from all available data
217
242
  * @param {WFCDRelic} rawRelic relic to pull Titania data from
@@ -219,16 +244,22 @@ declare class Generator {
219
244
  */
220
245
  private generateTitaniaRelic;
221
246
  /**
222
- * Filters WFCD's relic data to only include Intact variants, since we just need the base.
247
+ * Index sparse warframestat items by lowercase name, preferring /Lotus/Types/ paths.
248
+ * @param {Array<WFCDSparseItem>} items Sparse item list from warframestat
223
249
  */
224
- private filterWFCDRelics;
250
+ private indexSparseItems;
251
+ /**
252
+ * For reward names missing WFM, resolve uniqueNames from sparse index.
253
+ * Blueprint-suffixed names need a parent item fetch for the Blueprint component.
254
+ */
255
+ private resolveSpecialRewardUniqueNames;
225
256
  }
226
257
  //#endregion
227
258
  //#region src/VersionManager.d.ts
228
259
  declare class VersionManager {
260
+ hashPath: string;
229
261
  versionPath: string;
230
262
  versionRawPath: string;
231
- hashPath: string;
232
263
  /**
233
264
  * Creates a new VersionManager instance.
234
265
  * @param {string} dataDir Folder to write version information to.
@@ -246,4 +277,4 @@ declare class VersionManager {
246
277
  writeVersion(timestamp: number): Promise<void>;
247
278
  }
248
279
  //#endregion
249
- export { Generator, Rarity, TitaniaRelic, TitaniaRelicLocation, TitaniaRelicReward, TitaniaRelicRewardItem, TitaniaRelicVaultedInfo, TitaniaWFMInfo, VersionManager, WFCDItem, WFCDItemDropLocation, WFCDRelic, WFCDRelicReward, WarframeMarketItem, WarframeMarketRoot };
280
+ export { Generator, Rarity, TitaniaRelic, TitaniaRelicLocation, TitaniaRelicReward, TitaniaRelicRewardItem, TitaniaRelicVaultedInfo, TitaniaWFMInfo, VersionManager, WFCDItem, WFCDItemDropLocation, WFCDRelic, WFCDRelicReward, WFCDSparseComponent, WFCDSparseItem, WarframeMarketItem, WarframeMarketRoot };
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { n as Generator, t as VersionManager } from "./VersionManager-W7wuuPML.mjs";
1
+ import { n as Generator, t as VersionManager } from "./VersionManager-BckuXhbh.mjs";
2
2
  export { Generator, VersionManager };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wfcd/relics",
3
- "version": "2.0.30",
3
+ "version": "2.0.31",
4
4
  "description": "Relic Data for Warframe",
5
5
  "main": "dist/index.cjs",
6
6
  "exports": {
@@ -16,9 +16,9 @@
16
16
  "coverage": "npm test && nyc report --reporter=text-lcov | coveralls",
17
17
  "lint": "eslint .",
18
18
  "lint:fix": "eslint . --fix",
19
- "postinstall": "npx install-peerdeps @wfcd/eslint-config@latest -S",
20
19
  "prepack": "npm run build",
21
- "start": "npm run build && node dist/Build.js",
20
+ "prepare": "husky",
21
+ "start": "npm run build && node dist/Build.cjs",
22
22
  "test": "nyc mocha",
23
23
  "validate": "tsc --noEmit"
24
24
  },
@@ -34,33 +34,36 @@
34
34
  },
35
35
  "homepage": "https://github.com/WFCD/warframe-relic-data#readme",
36
36
  "devDependencies": {
37
+ "@commitlint/cli": "^21.2.1",
38
+ "@commitlint/config-conventional": "^21.2.0",
39
+ "@eslint/js": "^10.0.1",
40
+ "@stylistic/eslint-plugin": "^5.10.0",
37
41
  "@types/chai": "^4.3.3",
38
42
  "@types/mocha": "^10.0.0",
39
43
  "@types/node": "^26.0.0",
40
44
  "@types/node-fetch": "^2.6.2",
41
- "@wfcd/eslint-config": "^1.2.0",
42
45
  "chai": "^4.3.6",
43
46
  "coveralls": "^3.1.1",
47
+ "eslint": "^10.1.0",
48
+ "eslint-plugin-perfectionist": "^5.10.1",
49
+ "globals": "^17.0.0",
50
+ "husky": "^9.1.7",
51
+ "lint-staged": "^17.3.0",
44
52
  "mocha": "^10.0.0",
45
53
  "nyc": "^18.0.0",
46
- "precommit-hook": "^3.0.0",
47
54
  "ts-mocha": "^11.1.0",
48
55
  "tsconfig-paths": "^4.1.0",
49
56
  "tsdown": "^0.22.0",
50
57
  "tsx": "^4.21.0",
51
- "typescript": "^5.0.4"
58
+ "typescript": "^5.0.4",
59
+ "typescript-eslint": "^8.58.0"
52
60
  },
53
61
  "dependencies": {
54
- "@semantic-release/changelog": "^6.0.3",
55
- "@semantic-release/git": "^10.0.1",
62
+ "@semantic-release/changelog": "^7.0.0",
63
+ "@semantic-release/git": "^11.0.1",
56
64
  "node-fetch": "^2.6.7",
57
65
  "warframe-patchlogs": "^2.3.3"
58
66
  },
59
- "pre-commit": [
60
- "lint",
61
- "test",
62
- "validate"
63
- ],
64
67
  "publishConfig": {
65
68
  "provenance": true
66
69
  }