@vlydev/cs2-masked-inspect-ts 1.0.1 → 1.1.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/README.md CHANGED
@@ -45,6 +45,31 @@ InspectLink.isMasked('steam://...csgo_econ_action_preview%20A0011...'); // true
45
45
  InspectLink.isClassic('steam://...csgo_econ_action_preview%20S123A456D789'); // true — classic S/A/D format
46
46
  ```
47
47
 
48
+ ## Gen codes
49
+
50
+ Generate a Steam inspect URL from item parameters (defindex, paintindex, paintseed, paintwear):
51
+
52
+ ```ts
53
+ import { generate, toGenCode, parseGenCode, ItemPreviewData } from '@vlydev/cs2-masked-inspect-ts';
54
+
55
+ // Generate a Steam inspect URL from item parameters
56
+ const url = generate(7, 474, 306, 0.22540508);
57
+ // steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20...
58
+
59
+ // Convert ItemPreviewData to a gen code string
60
+ const item = new ItemPreviewData({ defIndex: 7, paintIndex: 474, paintSeed: 306, paintWear: 0.22540508 });
61
+ toGenCode(item); // "!gen 7 474 306 0.22540508"
62
+ toGenCode(item, '!g'); // "!g 7 474 306 0.22540508"
63
+
64
+ // Parse a gen code back to ItemPreviewData
65
+ parseGenCode('!gen 7 474 306 0.22540508');
66
+
67
+ // Convert an existing inspect link directly to a gen code
68
+ import { genCodeFromLink } from '@vlydev/cs2-masked-inspect-ts';
69
+ const code = genCodeFromLink('steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20001A...');
70
+ // "!gen 7 474 306 0.22540508"
71
+ ```
72
+
48
73
  ## API
49
74
 
50
75
  ### `InspectLink`
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Gen code utilities for CS2 inspect links.
3
+ *
4
+ * Gen codes are space-separated command strings used on community servers:
5
+ * !gen {defindex} {paintindex} {paintseed} {paintwear}
6
+ * !gen ... {s0_id} {s0_wear} {s1_id} {s1_wear} {s2_id} {s2_wear} {s3_id} {s3_wear} {s4_id} {s4_wear} [{kc_id} {kc_wear} ...]
7
+ *
8
+ * Stickers are always padded to 5 slot pairs. Keychains follow without padding.
9
+ */
10
+ import { ItemPreviewData } from './ItemPreviewData.ts';
11
+ import { Sticker } from './Sticker.ts';
12
+ export declare const INSPECT_BASE = "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20";
13
+ /**
14
+ * Convert an ItemPreviewData to a gen code string.
15
+ * @param item - The item to convert.
16
+ * @param prefix - The command prefix, defaults to `"!gen"`.
17
+ * @returns A gen code like `"!gen 7 474 306 0.22540508"`.
18
+ */
19
+ export declare function toGenCode(item: ItemPreviewData, prefix?: string): string;
20
+ export interface GenerateOptions {
21
+ rarity?: number;
22
+ quality?: number;
23
+ stickers?: Sticker[];
24
+ keychains?: Sticker[];
25
+ }
26
+ /**
27
+ * Generate a full Steam inspect URL from item parameters.
28
+ * @param defIndex - Weapon definition ID (e.g. 7 = AK-47)
29
+ * @param paintIndex - Skin/paint ID
30
+ * @param paintSeed - Pattern index (0-1000)
31
+ * @param paintWear - Float value (0.0-1.0)
32
+ * @param opts - Optional item properties
33
+ * @returns Full `steam://rungame/...` inspect URL
34
+ */
35
+ export declare function generate(defIndex: number, paintIndex: number, paintSeed: number, paintWear: number, opts?: GenerateOptions): string;
36
+ /**
37
+ * Parse a gen code string into an ItemPreviewData.
38
+ * @param genCode - A gen code string like `"!gen 7 474 306 0.22540508"`
39
+ * @returns Parsed ItemPreviewData
40
+ * @throws {Error} If the code has fewer than 4 tokens.
41
+ */
42
+ /**
43
+ * Generate a gen code string from an existing CS2 inspect link.
44
+ * @param hexOrUrl - A hex payload or full steam:// inspect URL.
45
+ * @param prefix - The command prefix (default "!gen").
46
+ */
47
+ export declare function genCodeFromLink(hexOrUrl: string, prefix?: string): string;
48
+ export declare function parseGenCode(genCode: string): ItemPreviewData;
49
+ //# sourceMappingURL=GenCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenCode.d.ts","sourceRoot":"","sources":["../../src/GenCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,eAAO,MAAM,YAAY,uEAAuE,CAAC;AAkCjG;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,GAAE,MAAe,GAAG,MAAM,CAmBhF;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,eAAoB,GACzB,MAAM,CAQR;AAED;;;;;GAKG;AACH;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAe,GAAG,MAAM,CAGjF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAwC7D"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ /**
3
+ * Gen code utilities for CS2 inspect links.
4
+ *
5
+ * Gen codes are space-separated command strings used on community servers:
6
+ * !gen {defindex} {paintindex} {paintseed} {paintwear}
7
+ * !gen ... {s0_id} {s0_wear} {s1_id} {s1_wear} {s2_id} {s2_wear} {s3_id} {s3_wear} {s4_id} {s4_wear} [{kc_id} {kc_wear} ...]
8
+ *
9
+ * Stickers are always padded to 5 slot pairs. Keychains follow without padding.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.INSPECT_BASE = void 0;
13
+ exports.toGenCode = toGenCode;
14
+ exports.generate = generate;
15
+ exports.genCodeFromLink = genCodeFromLink;
16
+ exports.parseGenCode = parseGenCode;
17
+ const ItemPreviewData_ts_1 = require("./ItemPreviewData.js");
18
+ const Sticker_ts_1 = require("./Sticker.js");
19
+ const InspectLink_ts_1 = require("./InspectLink.js");
20
+ exports.INSPECT_BASE = 'steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20';
21
+ /** Format a float, stripping trailing zeros (max 8 decimal places). */
22
+ function formatFloat(value) {
23
+ let s = value.toFixed(8).replace(/0+$/, '').replace(/\.$/, '');
24
+ return s || '0';
25
+ }
26
+ function serializeStickerPairs(stickers, padTo) {
27
+ const result = [];
28
+ const filtered = stickers.filter(s => s.stickerId !== 0);
29
+ if (padTo !== undefined) {
30
+ const slotMap = new Map(filtered.map(s => [s.slot, s]));
31
+ for (let slot = 0; slot < padTo; slot++) {
32
+ const s = slotMap.get(slot);
33
+ if (s) {
34
+ result.push(String(s.stickerId));
35
+ result.push(formatFloat(s.wear !== null ? s.wear : 0));
36
+ }
37
+ else {
38
+ result.push('0', '0');
39
+ }
40
+ }
41
+ }
42
+ else {
43
+ const sorted = [...filtered].sort((a, b) => a.slot - b.slot);
44
+ for (const s of sorted) {
45
+ result.push(String(s.stickerId));
46
+ result.push(formatFloat(s.wear !== null ? s.wear : 0));
47
+ }
48
+ }
49
+ return result;
50
+ }
51
+ /**
52
+ * Convert an ItemPreviewData to a gen code string.
53
+ * @param item - The item to convert.
54
+ * @param prefix - The command prefix, defaults to `"!gen"`.
55
+ * @returns A gen code like `"!gen 7 474 306 0.22540508"`.
56
+ */
57
+ function toGenCode(item, prefix = '!gen') {
58
+ const wearStr = item.paintWear !== null ? formatFloat(item.paintWear) : '0';
59
+ const parts = [
60
+ String(item.defIndex),
61
+ String(item.paintIndex),
62
+ String(item.paintSeed),
63
+ wearStr,
64
+ ];
65
+ const hasStickers = item.stickers.some(s => s.stickerId !== 0);
66
+ const hasKeychains = item.keychains.some(s => s.stickerId !== 0);
67
+ if (hasStickers || hasKeychains) {
68
+ parts.push(...serializeStickerPairs(item.stickers, 5));
69
+ parts.push(...serializeStickerPairs(item.keychains));
70
+ }
71
+ const payload = parts.join(' ');
72
+ return prefix ? `${prefix} ${payload}` : payload;
73
+ }
74
+ /**
75
+ * Generate a full Steam inspect URL from item parameters.
76
+ * @param defIndex - Weapon definition ID (e.g. 7 = AK-47)
77
+ * @param paintIndex - Skin/paint ID
78
+ * @param paintSeed - Pattern index (0-1000)
79
+ * @param paintWear - Float value (0.0-1.0)
80
+ * @param opts - Optional item properties
81
+ * @returns Full `steam://rungame/...` inspect URL
82
+ */
83
+ function generate(defIndex, paintIndex, paintSeed, paintWear, opts = {}) {
84
+ const { rarity = 0, quality = 0, stickers = [], keychains = [] } = opts;
85
+ const data = new ItemPreviewData_ts_1.ItemPreviewData({
86
+ defIndex, paintIndex, paintSeed, paintWear,
87
+ rarity, quality, stickers, keychains,
88
+ });
89
+ const hex = InspectLink_ts_1.InspectLink.serialize(data);
90
+ return `${exports.INSPECT_BASE}${hex}`;
91
+ }
92
+ /**
93
+ * Parse a gen code string into an ItemPreviewData.
94
+ * @param genCode - A gen code string like `"!gen 7 474 306 0.22540508"`
95
+ * @returns Parsed ItemPreviewData
96
+ * @throws {Error} If the code has fewer than 4 tokens.
97
+ */
98
+ /**
99
+ * Generate a gen code string from an existing CS2 inspect link.
100
+ * @param hexOrUrl - A hex payload or full steam:// inspect URL.
101
+ * @param prefix - The command prefix (default "!gen").
102
+ */
103
+ function genCodeFromLink(hexOrUrl, prefix = '!gen') {
104
+ const item = InspectLink_ts_1.InspectLink.deserialize(hexOrUrl);
105
+ return toGenCode(item, prefix);
106
+ }
107
+ function parseGenCode(genCode) {
108
+ let tokens = genCode.trim().split(/\s+/);
109
+ if (tokens[0] && tokens[0].startsWith('!')) {
110
+ tokens = tokens.slice(1);
111
+ }
112
+ if (tokens.length < 4) {
113
+ throw new Error(`Gen code must have at least 4 tokens, got: "${genCode}"`);
114
+ }
115
+ const defIndex = parseInt(tokens[0], 10);
116
+ const paintIndex = parseInt(tokens[1], 10);
117
+ const paintSeed = parseInt(tokens[2], 10);
118
+ const paintWear = parseFloat(tokens[3]);
119
+ let rest = tokens.slice(4);
120
+ const stickers = [];
121
+ const keychains = [];
122
+ if (rest.length >= 10) {
123
+ const stickerTokens = rest.slice(0, 10);
124
+ for (let slot = 0; slot < 5; slot++) {
125
+ const sid = parseInt(stickerTokens[slot * 2], 10);
126
+ const wear = parseFloat(stickerTokens[slot * 2 + 1]);
127
+ if (sid !== 0) {
128
+ stickers.push(new Sticker_ts_1.Sticker({ slot, stickerId: sid, wear }));
129
+ }
130
+ }
131
+ rest = rest.slice(10);
132
+ }
133
+ for (let i = 0; i + 1 < rest.length; i += 2) {
134
+ const sid = parseInt(rest[i], 10);
135
+ const wear = parseFloat(rest[i + 1]);
136
+ if (sid !== 0) {
137
+ keychains.push(new Sticker_ts_1.Sticker({ slot: i / 2, stickerId: sid, wear }));
138
+ }
139
+ }
140
+ return new ItemPreviewData_ts_1.ItemPreviewData({ defIndex, paintIndex, paintSeed, paintWear, stickers, keychains });
141
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"InspectLink.d.ts","sourceRoot":"","sources":["../../src/InspectLink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA6PvD,qBAAa,WAAW;IACtB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAiB/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;CA+BnD"}
1
+ {"version":3,"file":"InspectLink.d.ts","sourceRoot":"","sources":["../../src/InspectLink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA+PvD,qBAAa,WAAW;IACtB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAiB/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;CA+BnD"}
@@ -125,6 +125,8 @@ function encodeSticker(s) {
125
125
  w.writeUint32(10, s.pattern);
126
126
  if (s.highlightReel != null)
127
127
  w.writeUint32(11, s.highlightReel);
128
+ if (s.paintKit !== null)
129
+ w.writeUint32(12, s.paintKit);
128
130
  return w.toBytes();
129
131
  }
130
132
  function decodeSticker(data) {
@@ -183,6 +185,9 @@ function decodeSticker(data) {
183
185
  case 11:
184
186
  s.highlightReel = Number(f.value);
185
187
  break;
188
+ case 12:
189
+ s.paintKit = Number(f.value);
190
+ break;
186
191
  default: break;
187
192
  }
188
193
  }
@@ -16,6 +16,7 @@ export interface StickerInit {
16
16
  offsetZ?: number | null;
17
17
  pattern?: number;
18
18
  highlightReel?: number | null;
19
+ paintKit?: number | null;
19
20
  }
20
21
  export declare class Sticker {
21
22
  slot: number;
@@ -29,6 +30,7 @@ export declare class Sticker {
29
30
  offsetZ: number | null;
30
31
  pattern: number;
31
32
  highlightReel: number | null;
32
- constructor({ slot, stickerId, wear, scale, rotation, tintId, offsetX, offsetY, offsetZ, pattern, highlightReel, }?: StickerInit);
33
+ paintKit: number | null;
34
+ constructor({ slot, stickerId, wear, scale, rotation, tintId, offsetX, offsetY, offsetZ, pattern, highlightReel, paintKit, }?: StickerInit);
33
35
  }
34
36
  //# sourceMappingURL=Sticker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sticker.d.ts","sourceRoot":"","sources":["../../src/Sticker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,qBAAa,OAAO;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEjB,EACV,IAAQ,EACR,SAAa,EACb,IAAW,EACX,KAAY,EACZ,QAAe,EACf,MAAU,EACV,OAAc,EACd,OAAc,EACd,OAAc,EACd,OAAW,EACX,aAAoB,GACrB,GAAE,WAAgB;CAapB"}
1
+ {"version":3,"file":"Sticker.d.ts","sourceRoot":"","sources":["../../src/Sticker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,OAAO;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEZ,EACV,IAAQ,EACR,SAAa,EACb,IAAW,EACX,KAAY,EACZ,QAAe,EACf,MAAU,EACV,OAAc,EACd,OAAc,EACd,OAAc,EACd,OAAW,EACX,aAAoB,EACpB,QAAe,GAChB,GAAE,WAAgB;CAcpB"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Sticker = void 0;
4
4
  class Sticker {
5
- constructor({ slot = 0, stickerId = 0, wear = null, scale = null, rotation = null, tintId = 0, offsetX = null, offsetY = null, offsetZ = null, pattern = 0, highlightReel = null, } = {}) {
5
+ constructor({ slot = 0, stickerId = 0, wear = null, scale = null, rotation = null, tintId = 0, offsetX = null, offsetY = null, offsetZ = null, pattern = 0, highlightReel = null, paintKit = null, } = {}) {
6
6
  this.slot = slot;
7
7
  this.stickerId = stickerId;
8
8
  this.wear = wear;
@@ -14,6 +14,7 @@ class Sticker {
14
14
  this.offsetZ = offsetZ;
15
15
  this.pattern = pattern;
16
16
  this.highlightReel = highlightReel;
17
+ this.paintKit = paintKit;
17
18
  }
18
19
  }
19
20
  exports.Sticker = Sticker;
@@ -7,4 +7,6 @@ export { crc32 } from './crc32.ts';
7
7
  export { ProtoReader } from './proto/reader.ts';
8
8
  export type { ProtoField } from './proto/reader.ts';
9
9
  export { ProtoWriter } from './proto/writer.ts';
10
+ export { toGenCode, generate, parseGenCode, genCodeFromLink, INSPECT_BASE } from './GenCode.ts';
11
+ export type { GenerateOptions } from './GenCode.ts';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProtoWriter = exports.ProtoReader = exports.crc32 = exports.Sticker = exports.ItemPreviewData = exports.InspectLink = void 0;
3
+ exports.INSPECT_BASE = exports.genCodeFromLink = exports.parseGenCode = exports.generate = exports.toGenCode = exports.ProtoWriter = exports.ProtoReader = exports.crc32 = exports.Sticker = exports.ItemPreviewData = exports.InspectLink = void 0;
4
4
  var InspectLink_ts_1 = require("./InspectLink.js");
5
5
  Object.defineProperty(exports, "InspectLink", { enumerable: true, get: function () { return InspectLink_ts_1.InspectLink; } });
6
6
  var ItemPreviewData_ts_1 = require("./ItemPreviewData.js");
@@ -13,3 +13,9 @@ var reader_ts_1 = require("./proto/reader.js");
13
13
  Object.defineProperty(exports, "ProtoReader", { enumerable: true, get: function () { return reader_ts_1.ProtoReader; } });
14
14
  var writer_ts_1 = require("./proto/writer.js");
15
15
  Object.defineProperty(exports, "ProtoWriter", { enumerable: true, get: function () { return writer_ts_1.ProtoWriter; } });
16
+ var GenCode_ts_1 = require("./GenCode.js");
17
+ Object.defineProperty(exports, "toGenCode", { enumerable: true, get: function () { return GenCode_ts_1.toGenCode; } });
18
+ Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return GenCode_ts_1.generate; } });
19
+ Object.defineProperty(exports, "parseGenCode", { enumerable: true, get: function () { return GenCode_ts_1.parseGenCode; } });
20
+ Object.defineProperty(exports, "genCodeFromLink", { enumerable: true, get: function () { return GenCode_ts_1.genCodeFromLink; } });
21
+ Object.defineProperty(exports, "INSPECT_BASE", { enumerable: true, get: function () { return GenCode_ts_1.INSPECT_BASE; } });
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Gen code utilities for CS2 inspect links.
3
+ *
4
+ * Gen codes are space-separated command strings used on community servers:
5
+ * !gen {defindex} {paintindex} {paintseed} {paintwear}
6
+ * !gen ... {s0_id} {s0_wear} {s1_id} {s1_wear} {s2_id} {s2_wear} {s3_id} {s3_wear} {s4_id} {s4_wear} [{kc_id} {kc_wear} ...]
7
+ *
8
+ * Stickers are always padded to 5 slot pairs. Keychains follow without padding.
9
+ */
10
+ import { ItemPreviewData } from './ItemPreviewData.ts';
11
+ import { Sticker } from './Sticker.ts';
12
+ export declare const INSPECT_BASE = "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20";
13
+ /**
14
+ * Convert an ItemPreviewData to a gen code string.
15
+ * @param item - The item to convert.
16
+ * @param prefix - The command prefix, defaults to `"!gen"`.
17
+ * @returns A gen code like `"!gen 7 474 306 0.22540508"`.
18
+ */
19
+ export declare function toGenCode(item: ItemPreviewData, prefix?: string): string;
20
+ export interface GenerateOptions {
21
+ rarity?: number;
22
+ quality?: number;
23
+ stickers?: Sticker[];
24
+ keychains?: Sticker[];
25
+ }
26
+ /**
27
+ * Generate a full Steam inspect URL from item parameters.
28
+ * @param defIndex - Weapon definition ID (e.g. 7 = AK-47)
29
+ * @param paintIndex - Skin/paint ID
30
+ * @param paintSeed - Pattern index (0-1000)
31
+ * @param paintWear - Float value (0.0-1.0)
32
+ * @param opts - Optional item properties
33
+ * @returns Full `steam://rungame/...` inspect URL
34
+ */
35
+ export declare function generate(defIndex: number, paintIndex: number, paintSeed: number, paintWear: number, opts?: GenerateOptions): string;
36
+ /**
37
+ * Parse a gen code string into an ItemPreviewData.
38
+ * @param genCode - A gen code string like `"!gen 7 474 306 0.22540508"`
39
+ * @returns Parsed ItemPreviewData
40
+ * @throws {Error} If the code has fewer than 4 tokens.
41
+ */
42
+ /**
43
+ * Generate a gen code string from an existing CS2 inspect link.
44
+ * @param hexOrUrl - A hex payload or full steam:// inspect URL.
45
+ * @param prefix - The command prefix (default "!gen").
46
+ */
47
+ export declare function genCodeFromLink(hexOrUrl: string, prefix?: string): string;
48
+ export declare function parseGenCode(genCode: string): ItemPreviewData;
49
+ //# sourceMappingURL=GenCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenCode.d.ts","sourceRoot":"","sources":["../../src/GenCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,eAAO,MAAM,YAAY,uEAAuE,CAAC;AAkCjG;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,GAAE,MAAe,GAAG,MAAM,CAmBhF;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,eAAoB,GACzB,MAAM,CAQR;AAED;;;;;GAKG;AACH;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAe,GAAG,MAAM,CAGjF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAwC7D"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Gen code utilities for CS2 inspect links.
3
+ *
4
+ * Gen codes are space-separated command strings used on community servers:
5
+ * !gen {defindex} {paintindex} {paintseed} {paintwear}
6
+ * !gen ... {s0_id} {s0_wear} {s1_id} {s1_wear} {s2_id} {s2_wear} {s3_id} {s3_wear} {s4_id} {s4_wear} [{kc_id} {kc_wear} ...]
7
+ *
8
+ * Stickers are always padded to 5 slot pairs. Keychains follow without padding.
9
+ */
10
+ import { ItemPreviewData } from "./ItemPreviewData.js";
11
+ import { Sticker } from "./Sticker.js";
12
+ import { InspectLink } from "./InspectLink.js";
13
+ export const INSPECT_BASE = 'steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20';
14
+ /** Format a float, stripping trailing zeros (max 8 decimal places). */
15
+ function formatFloat(value) {
16
+ let s = value.toFixed(8).replace(/0+$/, '').replace(/\.$/, '');
17
+ return s || '0';
18
+ }
19
+ function serializeStickerPairs(stickers, padTo) {
20
+ const result = [];
21
+ const filtered = stickers.filter(s => s.stickerId !== 0);
22
+ if (padTo !== undefined) {
23
+ const slotMap = new Map(filtered.map(s => [s.slot, s]));
24
+ for (let slot = 0; slot < padTo; slot++) {
25
+ const s = slotMap.get(slot);
26
+ if (s) {
27
+ result.push(String(s.stickerId));
28
+ result.push(formatFloat(s.wear !== null ? s.wear : 0));
29
+ }
30
+ else {
31
+ result.push('0', '0');
32
+ }
33
+ }
34
+ }
35
+ else {
36
+ const sorted = [...filtered].sort((a, b) => a.slot - b.slot);
37
+ for (const s of sorted) {
38
+ result.push(String(s.stickerId));
39
+ result.push(formatFloat(s.wear !== null ? s.wear : 0));
40
+ }
41
+ }
42
+ return result;
43
+ }
44
+ /**
45
+ * Convert an ItemPreviewData to a gen code string.
46
+ * @param item - The item to convert.
47
+ * @param prefix - The command prefix, defaults to `"!gen"`.
48
+ * @returns A gen code like `"!gen 7 474 306 0.22540508"`.
49
+ */
50
+ export function toGenCode(item, prefix = '!gen') {
51
+ const wearStr = item.paintWear !== null ? formatFloat(item.paintWear) : '0';
52
+ const parts = [
53
+ String(item.defIndex),
54
+ String(item.paintIndex),
55
+ String(item.paintSeed),
56
+ wearStr,
57
+ ];
58
+ const hasStickers = item.stickers.some(s => s.stickerId !== 0);
59
+ const hasKeychains = item.keychains.some(s => s.stickerId !== 0);
60
+ if (hasStickers || hasKeychains) {
61
+ parts.push(...serializeStickerPairs(item.stickers, 5));
62
+ parts.push(...serializeStickerPairs(item.keychains));
63
+ }
64
+ const payload = parts.join(' ');
65
+ return prefix ? `${prefix} ${payload}` : payload;
66
+ }
67
+ /**
68
+ * Generate a full Steam inspect URL from item parameters.
69
+ * @param defIndex - Weapon definition ID (e.g. 7 = AK-47)
70
+ * @param paintIndex - Skin/paint ID
71
+ * @param paintSeed - Pattern index (0-1000)
72
+ * @param paintWear - Float value (0.0-1.0)
73
+ * @param opts - Optional item properties
74
+ * @returns Full `steam://rungame/...` inspect URL
75
+ */
76
+ export function generate(defIndex, paintIndex, paintSeed, paintWear, opts = {}) {
77
+ const { rarity = 0, quality = 0, stickers = [], keychains = [] } = opts;
78
+ const data = new ItemPreviewData({
79
+ defIndex, paintIndex, paintSeed, paintWear,
80
+ rarity, quality, stickers, keychains,
81
+ });
82
+ const hex = InspectLink.serialize(data);
83
+ return `${INSPECT_BASE}${hex}`;
84
+ }
85
+ /**
86
+ * Parse a gen code string into an ItemPreviewData.
87
+ * @param genCode - A gen code string like `"!gen 7 474 306 0.22540508"`
88
+ * @returns Parsed ItemPreviewData
89
+ * @throws {Error} If the code has fewer than 4 tokens.
90
+ */
91
+ /**
92
+ * Generate a gen code string from an existing CS2 inspect link.
93
+ * @param hexOrUrl - A hex payload or full steam:// inspect URL.
94
+ * @param prefix - The command prefix (default "!gen").
95
+ */
96
+ export function genCodeFromLink(hexOrUrl, prefix = '!gen') {
97
+ const item = InspectLink.deserialize(hexOrUrl);
98
+ return toGenCode(item, prefix);
99
+ }
100
+ export function parseGenCode(genCode) {
101
+ let tokens = genCode.trim().split(/\s+/);
102
+ if (tokens[0] && tokens[0].startsWith('!')) {
103
+ tokens = tokens.slice(1);
104
+ }
105
+ if (tokens.length < 4) {
106
+ throw new Error(`Gen code must have at least 4 tokens, got: "${genCode}"`);
107
+ }
108
+ const defIndex = parseInt(tokens[0], 10);
109
+ const paintIndex = parseInt(tokens[1], 10);
110
+ const paintSeed = parseInt(tokens[2], 10);
111
+ const paintWear = parseFloat(tokens[3]);
112
+ let rest = tokens.slice(4);
113
+ const stickers = [];
114
+ const keychains = [];
115
+ if (rest.length >= 10) {
116
+ const stickerTokens = rest.slice(0, 10);
117
+ for (let slot = 0; slot < 5; slot++) {
118
+ const sid = parseInt(stickerTokens[slot * 2], 10);
119
+ const wear = parseFloat(stickerTokens[slot * 2 + 1]);
120
+ if (sid !== 0) {
121
+ stickers.push(new Sticker({ slot, stickerId: sid, wear }));
122
+ }
123
+ }
124
+ rest = rest.slice(10);
125
+ }
126
+ for (let i = 0; i + 1 < rest.length; i += 2) {
127
+ const sid = parseInt(rest[i], 10);
128
+ const wear = parseFloat(rest[i + 1]);
129
+ if (sid !== 0) {
130
+ keychains.push(new Sticker({ slot: i / 2, stickerId: sid, wear }));
131
+ }
132
+ }
133
+ return new ItemPreviewData({ defIndex, paintIndex, paintSeed, paintWear, stickers, keychains });
134
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"InspectLink.d.ts","sourceRoot":"","sources":["../../src/InspectLink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA6PvD,qBAAa,WAAW;IACtB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAiB/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;CA+BnD"}
1
+ {"version":3,"file":"InspectLink.d.ts","sourceRoot":"","sources":["../../src/InspectLink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA+PvD,qBAAa,WAAW;IACtB;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAiB/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;CA+BnD"}
@@ -122,6 +122,8 @@ function encodeSticker(s) {
122
122
  w.writeUint32(10, s.pattern);
123
123
  if (s.highlightReel != null)
124
124
  w.writeUint32(11, s.highlightReel);
125
+ if (s.paintKit !== null)
126
+ w.writeUint32(12, s.paintKit);
125
127
  return w.toBytes();
126
128
  }
127
129
  function decodeSticker(data) {
@@ -180,6 +182,9 @@ function decodeSticker(data) {
180
182
  case 11:
181
183
  s.highlightReel = Number(f.value);
182
184
  break;
185
+ case 12:
186
+ s.paintKit = Number(f.value);
187
+ break;
183
188
  default: break;
184
189
  }
185
190
  }
@@ -16,6 +16,7 @@ export interface StickerInit {
16
16
  offsetZ?: number | null;
17
17
  pattern?: number;
18
18
  highlightReel?: number | null;
19
+ paintKit?: number | null;
19
20
  }
20
21
  export declare class Sticker {
21
22
  slot: number;
@@ -29,6 +30,7 @@ export declare class Sticker {
29
30
  offsetZ: number | null;
30
31
  pattern: number;
31
32
  highlightReel: number | null;
32
- constructor({ slot, stickerId, wear, scale, rotation, tintId, offsetX, offsetY, offsetZ, pattern, highlightReel, }?: StickerInit);
33
+ paintKit: number | null;
34
+ constructor({ slot, stickerId, wear, scale, rotation, tintId, offsetX, offsetY, offsetZ, pattern, highlightReel, paintKit, }?: StickerInit);
33
35
  }
34
36
  //# sourceMappingURL=Sticker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sticker.d.ts","sourceRoot":"","sources":["../../src/Sticker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,qBAAa,OAAO;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEjB,EACV,IAAQ,EACR,SAAa,EACb,IAAW,EACX,KAAY,EACZ,QAAe,EACf,MAAU,EACV,OAAc,EACd,OAAc,EACd,OAAc,EACd,OAAW,EACX,aAAoB,GACrB,GAAE,WAAgB;CAapB"}
1
+ {"version":3,"file":"Sticker.d.ts","sourceRoot":"","sources":["../../src/Sticker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAAa,OAAO;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEZ,EACV,IAAQ,EACR,SAAa,EACb,IAAW,EACX,KAAY,EACZ,QAAe,EACf,MAAU,EACV,OAAc,EACd,OAAc,EACd,OAAc,EACd,OAAW,EACX,aAAoB,EACpB,QAAe,GAChB,GAAE,WAAgB;CAcpB"}
@@ -1,5 +1,5 @@
1
1
  export class Sticker {
2
- constructor({ slot = 0, stickerId = 0, wear = null, scale = null, rotation = null, tintId = 0, offsetX = null, offsetY = null, offsetZ = null, pattern = 0, highlightReel = null, } = {}) {
2
+ constructor({ slot = 0, stickerId = 0, wear = null, scale = null, rotation = null, tintId = 0, offsetX = null, offsetY = null, offsetZ = null, pattern = 0, highlightReel = null, paintKit = null, } = {}) {
3
3
  this.slot = slot;
4
4
  this.stickerId = stickerId;
5
5
  this.wear = wear;
@@ -11,5 +11,6 @@ export class Sticker {
11
11
  this.offsetZ = offsetZ;
12
12
  this.pattern = pattern;
13
13
  this.highlightReel = highlightReel;
14
+ this.paintKit = paintKit;
14
15
  }
15
16
  }
@@ -7,4 +7,6 @@ export { crc32 } from './crc32.ts';
7
7
  export { ProtoReader } from './proto/reader.ts';
8
8
  export type { ProtoField } from './proto/reader.ts';
9
9
  export { ProtoWriter } from './proto/writer.ts';
10
+ export { toGenCode, generate, parseGenCode, genCodeFromLink, INSPECT_BASE } from './GenCode.ts';
11
+ export type { GenerateOptions } from './GenCode.ts';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
package/dist/esm/index.js CHANGED
@@ -4,3 +4,4 @@ export { Sticker } from "./Sticker.js";
4
4
  export { crc32 } from "./crc32.js";
5
5
  export { ProtoReader } from "./proto/reader.js";
6
6
  export { ProtoWriter } from "./proto/writer.js";
7
+ export { toGenCode, generate, parseGenCode, genCodeFromLink, INSPECT_BASE } from "./GenCode.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vlydev/cs2-masked-inspect-ts",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "description": "Offline encoder/decoder for CS2 masked inspect URLs — TypeScript, fully typed, no dependencies",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "scripts": {
22
22
  "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json",
23
- "test": "node --experimental-strip-types --test tests/inspect_link.test.ts",
23
+ "test": "node --experimental-strip-types --test tests/*.test.ts",
24
24
  "prepublishOnly": "npm run build"
25
25
  },
26
26
  "keywords": [