@tf2-automatic/tf2-format 9.3.0-dev.3 → 10.0.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 (53) hide show
  1. package/README.md +124 -7
  2. package/package.json +1 -1
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +1 -0
  5. package/src/index.js.map +1 -1
  6. package/src/lib/common.d.ts +29 -0
  7. package/src/lib/common.js +33 -0
  8. package/src/lib/common.js.map +1 -0
  9. package/src/lib/naming/index.d.ts +2 -1
  10. package/src/lib/naming/index.js +21 -26
  11. package/src/lib/naming/index.js.map +1 -1
  12. package/src/lib/parsing/bptf/parser.d.ts +8 -0
  13. package/src/lib/parsing/bptf/parser.js +89 -0
  14. package/src/lib/parsing/bptf/parser.js.map +1 -0
  15. package/src/lib/parsing/bptf/types.d.ts +94 -0
  16. package/src/lib/parsing/bptf/types.js +3 -0
  17. package/src/lib/parsing/bptf/types.js.map +1 -0
  18. package/src/lib/parsing/econ/parser.d.ts +3 -9
  19. package/src/lib/parsing/econ/parser.js +74 -138
  20. package/src/lib/parsing/econ/parser.js.map +1 -1
  21. package/src/lib/parsing/econ/types.d.ts +1 -1
  22. package/src/lib/parsing/helpers.d.ts +7 -0
  23. package/src/lib/parsing/helpers.js +105 -0
  24. package/src/lib/parsing/helpers.js.map +1 -0
  25. package/src/lib/parsing/index.d.ts +3 -1
  26. package/src/lib/parsing/index.js +3 -1
  27. package/src/lib/parsing/index.js.map +1 -1
  28. package/src/lib/parsing/parser.d.ts +4 -4
  29. package/src/lib/parsing/parser.js.map +1 -1
  30. package/src/lib/parsing/tf2/parser.d.ts +9 -10
  31. package/src/lib/parsing/tf2/parser.js +123 -384
  32. package/src/lib/parsing/tf2/parser.js.map +1 -1
  33. package/src/lib/parsing/tf2/types.d.ts +12 -59
  34. package/src/lib/parsing/tf2-api/parser.d.ts +10 -0
  35. package/src/lib/parsing/tf2-api/parser.js +128 -0
  36. package/src/lib/parsing/tf2-api/parser.js.map +1 -0
  37. package/src/lib/parsing/tf2-api/types.d.ts +47 -0
  38. package/src/lib/parsing/tf2-api/types.js +3 -0
  39. package/src/lib/parsing/tf2-api/types.js.map +1 -0
  40. package/src/lib/parsing/tf2-gc/constants.js.map +1 -0
  41. package/src/lib/parsing/tf2-gc/parser.d.ts +12 -0
  42. package/src/lib/parsing/tf2-gc/parser.js +277 -0
  43. package/src/lib/parsing/tf2-gc/parser.js.map +1 -0
  44. package/src/lib/parsing/tf2-gc/types.d.ts +43 -0
  45. package/src/lib/parsing/tf2-gc/types.js +3 -0
  46. package/src/lib/parsing/tf2-gc/types.js.map +1 -0
  47. package/src/lib/schemas.d.ts +65 -0
  48. package/src/lib/schemas.js +3 -0
  49. package/src/lib/schemas.js.map +1 -0
  50. package/src/lib/types.d.ts +11 -323
  51. package/src/lib/parsing/tf2/constants.js.map +0 -1
  52. /package/src/lib/parsing/{tf2 → tf2-gc}/constants.d.ts +0 -0
  53. /package/src/lib/parsing/{tf2 → tf2-gc}/constants.js +0 -0
@@ -1,11 +1,11 @@
1
- import { InventoryItem } from '../types';
1
+ import { InventoryItem, Item, PossibleInventoryItem } from '../types';
2
2
  /**
3
3
  * A parser that extracts information from an item and parses it into a common format
4
4
  *
5
5
  * @template Item A type for the raw item to parse.
6
6
  * @template ExtractedItem A type for the result of extracting information from the raw item.
7
7
  */
8
- export declare abstract class Parser<SchemaType, Item, ExtractedItem, Context = null> {
8
+ export declare abstract class Parser<SchemaType, RawItem, ExtractedItem, Context = null> {
9
9
  protected readonly schema: SchemaType;
10
10
  constructor(schema: SchemaType);
11
11
  /**
@@ -13,12 +13,12 @@ export declare abstract class Parser<SchemaType, Item, ExtractedItem, Context =
13
13
  * @param raw The raw item to extract information from.
14
14
  * @returns The extracted information.
15
15
  */
16
- abstract extract(raw: Item): Context extends null ? ExtractedItem : [ExtractedItem, Context];
16
+ abstract extract(raw: RawItem): Context extends null ? ExtractedItem : [ExtractedItem, Context];
17
17
  /**
18
18
  * This method parses the extracted information into a common format.
19
19
  * @param extracted The result from the `extract` method.
20
20
  * @returns The parsed inventory item.
21
21
  * @throws If something goes wrong fetching values using the schema.
22
22
  */
23
- abstract parse(extracted: ExtractedItem, context?: Context extends null ? never : Context): Promise<InventoryItem>;
23
+ abstract parse(extracted: ExtractedItem, context?: Context extends null ? never : Context): Promise<PossibleInventoryItem | InventoryItem | Item>;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../../libs/tf2-format/src/lib/parsing/parser.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,MAAsB,MAAM;IAC1B,YAA+B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;CAqBtD;AAtBD,wBAsBC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../../libs/tf2-format/src/lib/parsing/parser.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,MAAsB,MAAM;IAM1B,YAA+B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;CAqBtD;AA3BD,wBA2BC"}
@@ -1,12 +1,11 @@
1
+ import { TF2ParserSchema } from '../../schemas';
2
+ import { InventoryItem, Item } from '../../types';
1
3
  import { Parser } from '../parser';
2
- import { InventoryItem, TF2ParserSchema } from '../../types';
3
- import { Attributes, Context, ExtractedTF2Item, TF2Item } from './types';
4
- export declare class TF2Parser extends Parser<TF2ParserSchema, TF2Item, ExtractedTF2Item, Context> {
5
- extract(item: TF2Item): [ExtractedTF2Item, Context];
6
- static getAttributes(item: TF2Item): [Attributes, Set<number>];
7
- private static isCraftable;
8
- private static isTradable;
9
- private static hasAttribute;
10
- parse(extracted: ExtractedTF2Item, context: Context): Promise<InventoryItem>;
4
+ import { Context as APIContext, TF2APIItem } from '../tf2-api/types';
5
+ import { Context as GCContext, TF2GCItem } from '../tf2-gc/types';
6
+ import { Attributes, ExtractedTF2Item } from './types';
7
+ export declare abstract class TF2Parser<RawItem extends TF2GCItem | TF2APIItem, Context = RawItem extends TF2APIItem ? APIContext : GCContext> extends Parser<TF2ParserSchema, RawItem, ExtractedTF2Item, Context> {
8
+ protected createExtractedItem(item: RawItem, attributes: Partial<Attributes>): ExtractedTF2Item;
9
+ protected createParsedItem(extracted: ExtractedTF2Item, parts: Item['parts'], paint: Item['paint'], crateSeries: Item['crateSeries'], quantity: Item['quantity'], tradable: Item['tradable'], craftable: Item['craftable']): InventoryItem;
10
+ static extractSimpleAttribute(defindex: number, value: Buffer, result: Partial<Attributes>): void;
11
11
  }
12
- export * from './types';
@@ -1,401 +1,140 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TF2Parser = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const parser_1 = require("../parser");
6
- const constants_1 = require("./constants");
7
- const light_1 = tslib_1.__importDefault(require("protobufjs/light"));
8
- const assert_1 = tslib_1.__importDefault(require("assert"));
9
- var AttributeTokens;
10
- (function (AttributeTokens) {
11
- AttributeTokens[AttributeTokens["cannot trade"] = 153] = "cannot trade";
12
- AttributeTokens[AttributeTokens["always tradable"] = 195] = "always tradable";
13
- AttributeTokens[AttributeTokens["expiration date"] = 302] = "expiration date";
14
- AttributeTokens[AttributeTokens["never craftable"] = 449] = "never craftable";
15
- AttributeTokens[AttributeTokens["non economy"] = 777] = "non economy";
16
- AttributeTokens[AttributeTokens["tool target item"] = 2012] = "tool target item";
17
- AttributeTokens[AttributeTokens["killstreak effect"] = 2013] = "killstreak effect";
18
- AttributeTokens[AttributeTokens["killstreak idleeffect"] = 2014] = "killstreak idleeffect";
19
- AttributeTokens[AttributeTokens["killstreak tier"] = 2025] = "killstreak tier";
20
- })(AttributeTokens || (AttributeTokens = {}));
21
- const PROTO = {
22
- nested: {
23
- CAttribute_DynamicRecipeComponent: {
24
- fields: {
25
- defIndex: { type: 'uint32', id: 1 },
26
- itemQuality: { type: 'uint32', id: 2 },
27
- componentFlags: { type: 'uint32', id: 3 },
28
- attributesString: { type: 'string', id: 4 },
29
- numRequired: { type: 'uint32', id: 5 },
30
- numFulfilled: { type: 'uint32', id: 6 },
31
- },
32
- },
33
- },
34
- };
35
- const root = light_1.default.Root.fromJSON(PROTO);
36
- const recipeComponentType = root.lookupType('CAttribute_DynamicRecipeComponent');
37
- const ATTRIBUTE_SEPERATOR = '|\x01\x02\x01\x03|\x01\x02\x01\x03|';
38
5
  class TF2Parser extends parser_1.Parser {
39
- extract(item) {
40
- const [attributes, defindexes] = TF2Parser.getAttributes(item);
41
- const data = {
42
- assetid: item.id,
43
- originalId: item.original_id,
44
- defindex: item.def_index,
6
+ createExtractedItem(item, attributes) {
7
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
8
+ return {
9
+ assetid: item.id.toString(),
10
+ originalId: (_b = (_a = item.original_id) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : null,
11
+ defindex: (_c = item.def_index) !== null && _c !== void 0 ? _c : item.defindex,
45
12
  quality: item.quality,
46
- quantity: item.quantity,
13
+ quantity: (_d = attributes.quantity) !== null && _d !== void 0 ? _d : item.quantity,
47
14
  level: item.level,
48
- elevated: attributes.elevated,
49
- australium: attributes.australium,
50
- festivized: attributes.festivized,
51
- effect: attributes.effect,
52
- wear: attributes.wear,
53
- paintkit: attributes.paintkit,
54
- primaryPaint: attributes.primaryPaint,
55
- secondaryPaint: attributes.secondaryPaint,
56
- killstreak: attributes.killstreak,
57
- sheen: attributes.sheen,
58
- killstreaker: attributes.killstreaker,
59
- spells: attributes.spells,
60
- parts: attributes.parts,
61
- inputs: attributes.inputs,
62
- output: attributes.output,
63
- outputQuality: attributes.outputQuality,
64
- target: attributes.target,
65
- crateSeries: null,
15
+ elevated: attributes.killEater === true && item.quality !== 11,
16
+ australium: (_e = attributes.australium) !== null && _e !== void 0 ? _e : false,
17
+ festivized: (_f = attributes.festivized) !== null && _f !== void 0 ? _f : false,
18
+ effect: (_g = attributes.effect) !== null && _g !== void 0 ? _g : null,
19
+ wear: (_h = attributes.wear) !== null && _h !== void 0 ? _h : null,
20
+ paintkit: (_j = attributes.paintkit) !== null && _j !== void 0 ? _j : null,
21
+ primaryPaint: (_k = attributes.primaryPaint) !== null && _k !== void 0 ? _k : null,
22
+ secondaryPaint: (_l = attributes.secondaryPaint) !== null && _l !== void 0 ? _l : null,
23
+ killstreak: (_m = attributes.killstreak) !== null && _m !== void 0 ? _m : 0,
24
+ sheen: (_o = attributes.sheen) !== null && _o !== void 0 ? _o : null,
25
+ killstreaker: (_p = attributes.killstreaker) !== null && _p !== void 0 ? _p : null,
26
+ spells: (_q = attributes.spells) !== null && _q !== void 0 ? _q : [],
27
+ parts: (_r = attributes.parts) !== null && _r !== void 0 ? _r : [],
28
+ inputs: (_s = attributes.inputs) !== null && _s !== void 0 ? _s : null,
29
+ output: (_t = attributes.output) !== null && _t !== void 0 ? _t : null,
30
+ outputQuality: (_u = attributes.outputQuality) !== null && _u !== void 0 ? _u : null,
31
+ target: (_v = attributes.target) !== null && _v !== void 0 ? _v : null,
32
+ crateSeries: (_w = attributes.crateSeries) !== null && _w !== void 0 ? _w : null,
66
33
  };
67
- const context = {
68
- flags: item.flags,
69
- origin: item.origin,
70
- attributes: defindexes,
71
- };
72
- const result = [data, context];
73
- return result;
74
34
  }
75
- static getAttributes(item) {
76
- var _a, _b, _c;
77
- const attributes = {
78
- effect: null,
79
- primaryPaint: null,
80
- secondaryPaint: null,
81
- parts: [],
82
- spells: [],
83
- wear: null,
84
- paintkit: null,
85
- killstreaker: null,
86
- sheen: null,
87
- killstreak: 0,
88
- australium: false,
89
- festivized: false,
90
- target: null,
91
- inputs: null,
92
- output: null,
93
- outputQuality: null,
94
- elevated: false,
35
+ createParsedItem(extracted, parts, paint, crateSeries, quantity, tradable, craftable) {
36
+ return {
37
+ assetid: extracted.assetid,
38
+ defindex: extracted.defindex,
39
+ quality: extracted.quality,
40
+ craftable: craftable,
41
+ tradable: tradable,
42
+ australium: extracted.australium,
43
+ festivized: extracted.festivized,
44
+ effect: extracted.effect,
45
+ wear: extracted.wear,
46
+ paintkit: extracted.paintkit,
47
+ killstreak: extracted.killstreak,
48
+ target: extracted.target,
49
+ output: extracted.output,
50
+ outputQuality: extracted.outputQuality,
51
+ elevated: extracted.elevated,
52
+ crateSeries,
53
+ paint: paint,
54
+ parts: parts,
55
+ spells: extracted.spells,
56
+ sheen: extracted.sheen,
57
+ killstreaker: extracted.killstreaker,
58
+ inputs: extracted.inputs,
59
+ quantity,
95
60
  };
96
- const defindexes = new Set();
97
- for (let i = 0; i < item.attribute.length; i++) {
98
- const attribute = item.attribute[i];
99
- defindexes.add(attribute.def_index);
100
- /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
101
- const value = Buffer.from(attribute.value_bytes);
102
- switch (attribute.def_index) {
103
- case 142:
104
- // Paint color for RED/BLU if universal and RED if team color
105
- attributes.primaryPaint = value.readFloatLE(0);
106
- break;
107
- case 261:
108
- // Paint color for BLU
109
- attributes.secondaryPaint = value.readFloatLE(0);
110
- break;
111
- case 214:
112
- case 294:
113
- case 494:
114
- if (item.quality !== 11) {
115
- attributes.elevated = true;
116
- }
117
- break;
118
- case 134:
119
- case 2041:
120
- attributes.effect = value.readFloatLE(0);
121
- break;
122
- case 2053:
123
- attributes.festivized = value.readFloatLE(0) > 0;
124
- break;
125
- case 380:
126
- case 382:
127
- case 384:
128
- attributes.parts.push(Math.round(value.readFloatLE(0)));
129
- break;
130
- case 1004:
131
- case 1005:
132
- attributes.spells.push([attribute.def_index, value.readFloatLE(0)]);
133
- break;
134
- case 1006:
135
- case 1007:
136
- case 1008:
137
- case 1009:
138
- // Spells
139
- attributes.spells.push(attribute.def_index);
140
- break;
141
- case 2000:
142
- case 2001:
143
- case 2002:
144
- case 2003:
145
- case 2004:
146
- case 2005:
147
- case 2006:
148
- case 2007:
149
- case 2008:
150
- case 2009: {
151
- if (attributes.inputs === null) {
152
- attributes.inputs = [];
153
- }
154
- // Fabricator inputs
155
- const component = recipeComponentType
156
- .decode(value)
157
- .toJSON();
158
- component.componentFlags = (_a = component.componentFlags) !== null && _a !== void 0 ? _a : 0;
159
- const attribs = component.attributesString
160
- ? component.attributesString.split(ATTRIBUTE_SEPERATOR)
161
- : [];
162
- const attribsMap = {};
163
- for (let i = 0; i < attribs.length; i += 2) {
164
- attribsMap[attribs[i]] = parseFloat(attribs[i + 1]);
165
- }
166
- const isOutput = component.componentFlags & constants_1.DynamicRecipeFlags.IS_OUTPUT;
167
- if (!isOutput) {
168
- const input = {
169
- quality: 6,
170
- amount: ((_b = component.numRequired) !== null && _b !== void 0 ? _b : 0) - ((_c = component.numFulfilled) !== null && _c !== void 0 ? _c : 0),
171
- };
172
- if (component.componentFlags & constants_1.DynamicRecipeFlags.PARAM_ITEM_DEF_SET) {
173
- (0, assert_1.default)(component.defIndex !== undefined, 'defIndex is undefined');
174
- input.defindex = component.defIndex;
175
- }
176
- if (component.componentFlags & constants_1.DynamicRecipeFlags.PARAM_QUALITY_SET) {
177
- (0, assert_1.default)(component.itemQuality !== undefined, 'itemQuality is undefined');
178
- input.quality = component.itemQuality;
179
- }
180
- if (attribsMap[AttributeTokens['killstreak tier']]) {
181
- input.killstreak = attribsMap[AttributeTokens['killstreak tier']];
182
- }
183
- attributes.inputs.push(input);
184
- }
185
- else {
186
- if (attribsMap[AttributeTokens['tool target item']]) {
187
- attributes.target =
188
- attribsMap[AttributeTokens['tool target item']];
189
- }
190
- if (attribsMap[AttributeTokens['killstreak idleeffect']]) {
191
- attributes.sheen =
192
- attribsMap[AttributeTokens['killstreak idleeffect']];
193
- attributes.killstreak = 2;
194
- }
195
- if (attribsMap[AttributeTokens['killstreak effect']]) {
196
- attributes.killstreaker =
197
- attribsMap[AttributeTokens['killstreak effect']];
198
- attributes.killstreak = 3;
199
- }
200
- (0, assert_1.default)(component.itemQuality !== undefined, 'itemQuality is undefined');
201
- (0, assert_1.default)(component.defIndex !== undefined, 'defIndex is undefined');
202
- attributes.outputQuality = component.itemQuality;
203
- attributes.output = component.defIndex;
204
- }
205
- break;
206
- }
207
- case 2012:
208
- attributes.target = value.readFloatLE(0);
209
- break;
210
- case 2013:
211
- attributes.killstreaker = value.readFloatLE(0);
212
- break;
213
- case 2014:
214
- attributes.sheen = value.readFloatLE(0);
215
- break;
216
- case 2025:
217
- attributes.killstreak = value.readFloatLE(0);
218
- break;
219
- case 2027:
220
- attributes.australium = value.readFloatLE(0) > 0;
221
- break;
222
- case 725:
223
- attributes.wear = Math.round(value.readFloatLE(0) / 0.2);
224
- break;
225
- case 834:
226
- attributes.paintkit = value.readUInt32LE(0);
227
- break;
228
- default:
229
- break;
230
- }
231
- }
232
- const killstreak = constants_1.KILLSTREAK_FABRICATORS[item.def_index];
233
- if (killstreak) {
234
- attributes.killstreak = killstreak;
235
- }
236
- return [attributes, defindexes];
237
61
  }
238
- static isCraftable(schemaItem, context) {
239
- // Always craftable
240
- if (context.attributes.has(AttributeTokens['always tradable']) ||
241
- TF2Parser.hasAttribute('always tradable', schemaItem)) {
242
- return true;
243
- }
244
- // Never craftable
245
- if (context.attributes.has(AttributeTokens['never craftable']) ||
246
- TF2Parser.hasAttribute('never craftable', schemaItem)) {
247
- return false;
248
- }
249
- // Temporary item
250
- if (context.attributes.has(AttributeTokens['expiration date']) ||
251
- TF2Parser.hasAttribute('expiration date', schemaItem)) {
252
- return false;
253
- }
254
- switch (context.origin) {
255
- case constants_1.eEconItemOrigin.kEconItemOrigin_Invalid:
256
- case constants_1.eEconItemOrigin.kEconItemOrigin_Foreign:
257
- case constants_1.eEconItemOrigin.kEconItemOrigin_StorePromotion:
258
- case constants_1.eEconItemOrigin.kEconItemOrigin_SteamWorkshopContribution:
259
- return false;
260
- case constants_1.eEconItemOrigin.kEconItemOrigin_Purchased:
261
- if ((context.flags &
262
- constants_1.eEconItemFlags.kEconItemFlag_PurchasedAfterStoreCraftabilityChanges2012) ===
263
- 0) {
264
- return false;
265
- }
266
- if (schemaItem.capabilities &&
267
- schemaItem.capabilities['can_craft_if_purchased'] === '0') {
268
- return false;
269
- }
62
+ static extractSimpleAttribute(defindex, value, result) {
63
+ var _a, _b;
64
+ switch (defindex) {
65
+ case 142:
66
+ // Paint color for RED/BLU if universal and RED if team color
67
+ result.primaryPaint = value.readFloatLE(0);
68
+ break;
69
+ case 187:
70
+ result.crateSeries = Math.round(value.readFloatLE(0));
71
+ break;
72
+ case 261:
73
+ // Paint color for BLU
74
+ result.secondaryPaint = value.readFloatLE(0);
75
+ break;
76
+ case 311:
77
+ result.quantity = -1;
78
+ break;
79
+ case 380:
80
+ case 382:
81
+ case 384:
82
+ ((_a = result.parts) !== null && _a !== void 0 ? _a : (result.parts = [])).push(Math.round(value.readFloatLE(0)));
83
+ break;
84
+ case 214:
85
+ case 294:
86
+ case 494:
87
+ result.killEater = true;
88
+ break;
89
+ case 134:
90
+ result.effect = value.readFloatLE(0);
91
+ break;
92
+ case 2041:
93
+ result.effect = value.readUInt32LE(0);
94
+ break;
95
+ case 2053:
96
+ result.festivized = value.readFloatLE(0) > 0;
97
+ break;
98
+ case 1004:
99
+ case 1005:
100
+ case 1006:
101
+ case 1007:
102
+ case 1008:
103
+ case 1009:
104
+ ((_b = result.spells) !== null && _b !== void 0 ? _b : (result.spells = [])).push([defindex, value.readFloatLE(0)]);
105
+ break;
106
+ case 2012:
107
+ result.target = value.readFloatLE(0);
108
+ break;
109
+ case 2013:
110
+ result.killstreaker = value.readFloatLE(0);
111
+ result.killstreak = 3;
112
+ break;
113
+ case 2014:
114
+ result.sheen = value.readFloatLE(0);
115
+ result.killstreak =
116
+ result.killstreak > 2 ? result.killstreak : 2;
117
+ break;
118
+ case 2025:
119
+ result.killstreak = value.readFloatLE(0);
120
+ result.killstreak =
121
+ result.killstreak > 1 ? result.killstreak : 1;
122
+ break;
123
+ case 2027:
124
+ result.australium = value.readFloatLE(0) > 0;
125
+ break;
126
+ case 725: {
127
+ const raw = value.readFloatLE(0);
128
+ result.wear = raw === 0 ? 1 : Math.round(raw / 0.2);
270
129
  break;
271
- }
272
- return true;
273
- }
274
- static isTradable(schemaItem, extracted, context) {
275
- if (context.attributes.has(AttributeTokens['non economy']) ||
276
- this.hasAttribute('non economy', schemaItem)) {
277
- return false;
278
- }
279
- if (context.attributes.has(AttributeTokens['always tradable']) ||
280
- this.hasAttribute('always tradable', schemaItem)) {
281
- return true;
282
- }
283
- if (context.attributes.has(AttributeTokens['cannot trade']) ||
284
- this.hasAttribute('cannot trade', schemaItem)) {
285
- return false;
286
- }
287
- switch (context.origin) {
288
- case constants_1.eEconItemOrigin.kEconItemOrigin_Invalid:
289
- case constants_1.eEconItemOrigin.kEconItemOrigin_Achievement:
290
- case constants_1.eEconItemOrigin.kEconItemOrigin_Foreign:
291
- case constants_1.eEconItemOrigin.kEconItemOrigin_PreviewItem:
292
- case constants_1.eEconItemOrigin.kEconItemOrigin_SteamWorkshopContribution:
293
- return false;
294
- }
295
- if (context.origin === constants_1.eEconItemOrigin.kEconItemOrigin_PreviewItem) {
296
- return false;
297
- }
298
- if (extracted.quality >= 7 && extracted.quality <= 9) {
299
- return false;
300
- }
301
- if ((context.flags & constants_1.eEconItemFlags.kEconItemFlag_CannotTrade) !== 0) {
302
- return false;
303
- }
304
- return true;
305
- }
306
- static hasAttribute(attribute, schemaItem) {
307
- var _a;
308
- if (schemaItem.attributes &&
309
- ((_a = schemaItem.attributes[attribute]) === null || _a === void 0 ? void 0 : _a.value) === '1') {
310
- return true;
311
- }
312
- if (schemaItem.static_attrs && schemaItem.static_attrs[attribute] === '1') {
313
- return true;
314
- }
315
- return false;
316
- }
317
- parse(extracted, context) {
318
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
319
- let schemaItem = this.schema.getItemByDefindex(extracted.defindex);
320
- if (schemaItem === undefined) {
321
- schemaItem = yield this.schema.fetchItemByDefindex(extracted.defindex);
322
- }
323
- else if (schemaItem instanceof Error) {
324
- throw schemaItem;
325
- }
326
- let paint = null;
327
- if (extracted.primaryPaint) {
328
- const hex = extracted.primaryPaint.toString(16);
329
- paint = this.schema.getPaintByColor(hex);
330
- if (paint === undefined) {
331
- paint = yield this.schema.fetchPaintByColor(hex);
332
- }
333
- else if (paint instanceof Error) {
334
- throw paint;
335
- }
336
- }
337
- const spells = [];
338
- if (extracted.spells.length > 0) {
339
- for (let i = 0; i < extracted.spells.length; i++) {
340
- const spell = extracted.spells[i];
341
- if (!Array.isArray(spell)) {
342
- spells.push(spell);
343
- }
344
- else {
345
- let match = this.schema.getSpellById(spell[0], spell[1]);
346
- if (match instanceof Error) {
347
- throw match;
348
- }
349
- else if (match === undefined) {
350
- match = yield this.schema.fetchSpellById(spell[0], spell[1]);
351
- }
352
- spells.push(match);
353
- }
354
- }
355
- }
356
- const parts = [];
357
- if (extracted.parts.length > 0) {
358
- for (let i = 0; i < extracted.parts.length; i++) {
359
- const part = extracted.parts[i];
360
- let match = this.schema.getStrangePartById(part);
361
- if (match instanceof Error) {
362
- throw match;
363
- }
364
- else if (match === undefined) {
365
- match = yield this.schema.fetchStrangePartById(part);
366
- }
367
- parts.push(match);
368
- }
369
130
  }
370
- const parsed = {
371
- assetid: extracted.assetid,
372
- defindex: extracted.defindex,
373
- quality: extracted.quality,
374
- craftable: TF2Parser.isCraftable(schemaItem, context),
375
- tradable: TF2Parser.isTradable(schemaItem, extracted, context),
376
- australium: extracted.australium,
377
- festivized: extracted.festivized,
378
- effect: extracted.effect,
379
- wear: extracted.wear,
380
- paintkit: extracted.paintkit,
381
- killstreak: extracted.killstreak,
382
- target: extracted.target,
383
- output: extracted.output,
384
- outputQuality: extracted.outputQuality,
385
- elevated: extracted.elevated,
386
- crateSeries: extracted.crateSeries,
387
- paint,
388
- parts,
389
- spells,
390
- sheen: extracted.sheen,
391
- killstreaker: extracted.killstreaker,
392
- inputs: extracted.inputs,
393
- quantity: extracted.quantity,
394
- };
395
- return parsed;
396
- });
131
+ case 834:
132
+ result.paintkit = value.readUInt32LE(0);
133
+ break;
134
+ default:
135
+ break;
136
+ }
397
137
  }
398
138
  }
399
139
  exports.TF2Parser = TF2Parser;
400
- tslib_1.__exportStar(require("./types"), exports);
401
140
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../../../libs/tf2-format/src/lib/parsing/tf2/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../../../libs/tf2-format/src/lib/parsing/tf2/parser.ts"],"names":[],"mappings":"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"}