@ticktockbent/rogue-ts 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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +175 -0
  3. package/dist/armor.d.ts +18 -0
  4. package/dist/armor.d.ts.map +1 -0
  5. package/dist/armor.js +84 -0
  6. package/dist/armor.js.map +1 -0
  7. package/dist/chase.d.ts +15 -0
  8. package/dist/chase.d.ts.map +1 -0
  9. package/dist/chase.js +152 -0
  10. package/dist/chase.js.map +1 -0
  11. package/dist/command.d.ts +12 -0
  12. package/dist/command.d.ts.map +1 -0
  13. package/dist/command.js +761 -0
  14. package/dist/command.js.map +1 -0
  15. package/dist/curses.d.ts +102 -0
  16. package/dist/curses.d.ts.map +1 -0
  17. package/dist/curses.js +47 -0
  18. package/dist/curses.js.map +1 -0
  19. package/dist/daemon.d.ts +43 -0
  20. package/dist/daemon.d.ts.map +1 -0
  21. package/dist/daemon.js +116 -0
  22. package/dist/daemon.js.map +1 -0
  23. package/dist/daemons.d.ts +47 -0
  24. package/dist/daemons.d.ts.map +1 -0
  25. package/dist/daemons.js +194 -0
  26. package/dist/daemons.js.map +1 -0
  27. package/dist/fight.d.ts +52 -0
  28. package/dist/fight.d.ts.map +1 -0
  29. package/dist/fight.js +508 -0
  30. package/dist/fight.js.map +1 -0
  31. package/dist/globals.d.ts +387 -0
  32. package/dist/globals.d.ts.map +1 -0
  33. package/dist/globals.js +935 -0
  34. package/dist/globals.js.map +1 -0
  35. package/dist/index.d.ts +11 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +9 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/init.d.ts +30 -0
  40. package/dist/init.d.ts.map +1 -0
  41. package/dist/init.js +159 -0
  42. package/dist/init.js.map +1 -0
  43. package/dist/io.d.ts +48 -0
  44. package/dist/io.d.ts.map +1 -0
  45. package/dist/io.js +248 -0
  46. package/dist/io.js.map +1 -0
  47. package/dist/list.d.ts +37 -0
  48. package/dist/list.d.ts.map +1 -0
  49. package/dist/list.js +109 -0
  50. package/dist/list.js.map +1 -0
  51. package/dist/main.d.ts +23 -0
  52. package/dist/main.d.ts.map +1 -0
  53. package/dist/main.js +207 -0
  54. package/dist/main.js.map +1 -0
  55. package/dist/misc.d.ts +53 -0
  56. package/dist/misc.d.ts.map +1 -0
  57. package/dist/misc.js +296 -0
  58. package/dist/misc.js.map +1 -0
  59. package/dist/monsters.d.ts +55 -0
  60. package/dist/monsters.d.ts.map +1 -0
  61. package/dist/monsters.js +211 -0
  62. package/dist/monsters.js.map +1 -0
  63. package/dist/move.d.ts +23 -0
  64. package/dist/move.d.ts.map +1 -0
  65. package/dist/move.js +270 -0
  66. package/dist/move.js.map +1 -0
  67. package/dist/new_level.d.ts +17 -0
  68. package/dist/new_level.d.ts.map +1 -0
  69. package/dist/new_level.js +173 -0
  70. package/dist/new_level.js.map +1 -0
  71. package/dist/pack.d.ts +47 -0
  72. package/dist/pack.d.ts.map +1 -0
  73. package/dist/pack.js +359 -0
  74. package/dist/pack.js.map +1 -0
  75. package/dist/passages.d.ts +23 -0
  76. package/dist/passages.d.ts.map +1 -0
  77. package/dist/passages.js +277 -0
  78. package/dist/passages.js.map +1 -0
  79. package/dist/potions.d.ts +13 -0
  80. package/dist/potions.d.ts.map +1 -0
  81. package/dist/potions.js +239 -0
  82. package/dist/potions.js.map +1 -0
  83. package/dist/rings.d.ts +13 -0
  84. package/dist/rings.d.ts.map +1 -0
  85. package/dist/rings.js +173 -0
  86. package/dist/rings.js.map +1 -0
  87. package/dist/rip.d.ts +22 -0
  88. package/dist/rip.d.ts.map +1 -0
  89. package/dist/rip.js +216 -0
  90. package/dist/rip.js.map +1 -0
  91. package/dist/rooms.d.ts +62 -0
  92. package/dist/rooms.d.ts.map +1 -0
  93. package/dist/rooms.js +432 -0
  94. package/dist/rooms.js.map +1 -0
  95. package/dist/save.d.ts +25 -0
  96. package/dist/save.d.ts.map +1 -0
  97. package/dist/save.js +565 -0
  98. package/dist/save.js.map +1 -0
  99. package/dist/scrolls.d.ts +13 -0
  100. package/dist/scrolls.d.ts.map +1 -0
  101. package/dist/scrolls.js +305 -0
  102. package/dist/scrolls.js.map +1 -0
  103. package/dist/sticks.d.ts +9 -0
  104. package/dist/sticks.d.ts.map +1 -0
  105. package/dist/sticks.js +379 -0
  106. package/dist/sticks.js.map +1 -0
  107. package/dist/things.d.ts +28 -0
  108. package/dist/things.d.ts.map +1 -0
  109. package/dist/things.js +307 -0
  110. package/dist/things.js.map +1 -0
  111. package/dist/types.d.ts +113 -0
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +10 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/util.d.ts +36 -0
  116. package/dist/util.d.ts.map +1 -0
  117. package/dist/util.js +198 -0
  118. package/dist/util.js.map +1 -0
  119. package/dist/weapons.d.ts +22 -0
  120. package/dist/weapons.d.ts.map +1 -0
  121. package/dist/weapons.js +185 -0
  122. package/dist/weapons.js.map +1 -0
  123. package/package.json +31 -0
package/dist/things.js ADDED
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Item creation and naming.
3
+ * Ported from things.c
4
+ */
5
+ import { state, NUMTHINGS, POTION, SCROLL, FOOD, WEAPON, ARMOR, RING, STICK, AMULET, GOLD, MAXPOTIONS, MAXSCROLLS, MAXWEAPONS, MAXARMORS, MAXRINGS, MAXSTICKS, ISCURSED, ISKNOW, R_ADDSTR, R_PROTECT, R_ADDHIT, R_ADDDAM, R_AGGR, R_TELEPORT, things, pot_info, scr_info, weap_info, arm_info, ring_info, ws_info, a_class, LEFT, RIGHT, } from "./globals.js";
6
+ import { rnd } from "./util.js";
7
+ import { new_item } from "./list.js";
8
+ import { init_weapon, num } from "./weapons.js";
9
+ /**
10
+ * pick_one: Pick an item out of a list of nitems possible objects.
11
+ * Uses cumulative probability (after init_probs has been called).
12
+ */
13
+ export function pick_one(info, nitems) {
14
+ const randomValue = rnd(100);
15
+ for (let idx = 0; idx < nitems; idx++) {
16
+ if (randomValue < info[idx].oi_prob) {
17
+ return idx;
18
+ }
19
+ }
20
+ // Fallback to first item
21
+ return 0;
22
+ }
23
+ /**
24
+ * new_thing: Return a new thing.
25
+ */
26
+ export function new_thing() {
27
+ const cur = new_item();
28
+ cur.o_hplus = 0;
29
+ cur.o_dplus = 0;
30
+ cur.o_damage = "0x0";
31
+ cur.o_hurldmg = "0x0";
32
+ cur.o_arm = 11;
33
+ cur.o_count = 1;
34
+ cur.o_group = 0;
35
+ cur.o_flags = 0;
36
+ // If no food for a while, force food
37
+ const choice = state.no_food > 3 ? 2 : pick_one(things, NUMTHINGS);
38
+ switch (choice) {
39
+ case 0: // Potion
40
+ cur.o_type = POTION.charCodeAt(0);
41
+ cur.o_which = pick_one(pot_info, MAXPOTIONS);
42
+ break;
43
+ case 1: // Scroll
44
+ cur.o_type = SCROLL.charCodeAt(0);
45
+ cur.o_which = pick_one(scr_info, MAXSCROLLS);
46
+ break;
47
+ case 2: // Food
48
+ cur.o_type = FOOD.charCodeAt(0);
49
+ state.no_food = 0;
50
+ cur.o_which = rnd(10) !== 0 ? 0 : 1;
51
+ break;
52
+ case 3: { // Weapon
53
+ init_weapon(cur, pick_one(weap_info, MAXWEAPONS));
54
+ const weaponRoll = rnd(100);
55
+ if (weaponRoll < 10) {
56
+ cur.o_flags |= ISCURSED;
57
+ cur.o_hplus -= rnd(3) + 1;
58
+ }
59
+ else if (weaponRoll < 15) {
60
+ cur.o_hplus += rnd(3) + 1;
61
+ }
62
+ break;
63
+ }
64
+ case 4: { // Armor
65
+ cur.o_type = ARMOR.charCodeAt(0);
66
+ cur.o_which = pick_one(arm_info, MAXARMORS);
67
+ cur.o_arm = a_class[cur.o_which];
68
+ const armorRoll = rnd(100);
69
+ if (armorRoll < 20) {
70
+ cur.o_flags |= ISCURSED;
71
+ cur.o_arm += rnd(3) + 1;
72
+ }
73
+ else if (armorRoll < 28) {
74
+ cur.o_arm -= rnd(3) + 1;
75
+ }
76
+ break;
77
+ }
78
+ case 5: // Ring
79
+ cur.o_type = RING.charCodeAt(0);
80
+ cur.o_which = pick_one(ring_info, MAXRINGS);
81
+ switch (cur.o_which) {
82
+ case R_ADDSTR:
83
+ case R_PROTECT:
84
+ case R_ADDHIT:
85
+ case R_ADDDAM:
86
+ cur.o_arm = rnd(3);
87
+ if (cur.o_arm === 0) {
88
+ cur.o_arm = -1;
89
+ cur.o_flags |= ISCURSED;
90
+ }
91
+ break;
92
+ case R_AGGR:
93
+ case R_TELEPORT:
94
+ cur.o_flags |= ISCURSED;
95
+ break;
96
+ }
97
+ break;
98
+ case 6: // Stick
99
+ cur.o_type = STICK.charCodeAt(0);
100
+ cur.o_which = pick_one(ws_info, MAXSTICKS);
101
+ fix_stick(cur);
102
+ break;
103
+ }
104
+ return cur;
105
+ }
106
+ /**
107
+ * fix_stick: Set up stick charges.
108
+ */
109
+ export function fix_stick(cur) {
110
+ cur.o_type = STICK.charCodeAt(0);
111
+ // Differentiate wand (1x1) vs staff (2x3) damage
112
+ if (state.ws_type[cur.o_which] === "staff") {
113
+ cur.o_damage = "2x3";
114
+ cur.o_hurldmg = "1x1";
115
+ }
116
+ else {
117
+ cur.o_damage = "1x1";
118
+ cur.o_hurldmg = "1x1";
119
+ }
120
+ // WS_LIGHT gets 10-19 charges; others get 3-7
121
+ if (cur.o_which === 0) { // WS_LIGHT
122
+ cur.o_arm = rnd(10) + 10;
123
+ }
124
+ else {
125
+ cur.o_arm = rnd(5) + 3;
126
+ }
127
+ cur.o_flags = 0;
128
+ }
129
+ /**
130
+ * inv_name: Return the name of something as it would appear in inventory.
131
+ * Simplified for now — full implementation in Phase 7.
132
+ */
133
+ export function inv_name(obj, drop) {
134
+ let result = "";
135
+ const which = obj.o_which;
136
+ switch (String.fromCharCode(obj.o_type)) {
137
+ case POTION: {
138
+ const info = pot_info[which];
139
+ if (obj.o_count === 1) {
140
+ if (info.oi_know) {
141
+ result = `A potion of ${info.oi_name}`;
142
+ }
143
+ else if (info.oi_guess) {
144
+ result = `A ${state.p_colors[which]} potion called ${info.oi_guess}`;
145
+ }
146
+ else {
147
+ result = `A ${state.p_colors[which]} potion`;
148
+ }
149
+ }
150
+ else {
151
+ if (info.oi_know) {
152
+ result = `${obj.o_count} potions of ${info.oi_name}`;
153
+ }
154
+ else if (info.oi_guess) {
155
+ result = `${obj.o_count} ${state.p_colors[which]} potions called ${info.oi_guess}`;
156
+ }
157
+ else {
158
+ result = `${obj.o_count} ${state.p_colors[which]} potions`;
159
+ }
160
+ }
161
+ break;
162
+ }
163
+ case SCROLL: {
164
+ const info = scr_info[which];
165
+ if (obj.o_count === 1) {
166
+ if (info.oi_know) {
167
+ result = `A scroll of ${info.oi_name}`;
168
+ }
169
+ else if (info.oi_guess) {
170
+ result = `A scroll called ${info.oi_guess}`;
171
+ }
172
+ else {
173
+ result = `A scroll titled '${state.s_names[which]}'`;
174
+ }
175
+ }
176
+ else {
177
+ if (info.oi_know) {
178
+ result = `${obj.o_count} scrolls of ${info.oi_name}`;
179
+ }
180
+ else {
181
+ result = `${obj.o_count} scrolls titled '${state.s_names[which]}'`;
182
+ }
183
+ }
184
+ break;
185
+ }
186
+ case FOOD:
187
+ if (which === 1) {
188
+ result = obj.o_count === 1 ? `A ${state.fruit}` : `${obj.o_count} ${state.fruit}s`;
189
+ }
190
+ else {
191
+ result = obj.o_count === 1 ? "Some food" : `${obj.o_count} rations of food`;
192
+ }
193
+ break;
194
+ case WEAPON: {
195
+ const weapName = weap_info[which].oi_name || "weapon";
196
+ if (obj.o_count > 1) {
197
+ result = `${obj.o_count} `;
198
+ }
199
+ else {
200
+ result = vowelstr(weapName) + " ";
201
+ }
202
+ if (obj.o_flags & ISKNOW) {
203
+ result += `${num(obj.o_hplus, obj.o_dplus, obj.o_type)} ${weapName}`;
204
+ }
205
+ else {
206
+ result += weapName;
207
+ }
208
+ if (obj.o_count > 1)
209
+ result += "s";
210
+ if (obj.o_label !== null)
211
+ result += ` called ${obj.o_label}`;
212
+ break;
213
+ }
214
+ case ARMOR: {
215
+ const armName = arm_info[which].oi_name || "armor";
216
+ if (obj.o_flags & ISKNOW) {
217
+ const protection = a_class[which] - obj.o_arm;
218
+ result = `${num(protection, 0, obj.o_type)} ${armName} [protection ${10 - obj.o_arm}]`;
219
+ }
220
+ else {
221
+ result = armName;
222
+ }
223
+ if (obj.o_label !== null)
224
+ result += ` called ${obj.o_label}`;
225
+ break;
226
+ }
227
+ case RING: {
228
+ const info = ring_info[which];
229
+ if (info.oi_know) {
230
+ // Show ring bonus for rings that have a numeric value
231
+ const hasNum = which === R_PROTECT || which === R_ADDSTR ||
232
+ which === R_ADDHIT || which === R_ADDDAM;
233
+ if (hasNum && (obj.o_flags & ISKNOW)) {
234
+ const sign = obj.o_arm >= 0 ? "+" : "";
235
+ result = `A ${sign}${obj.o_arm} ring of ${info.oi_name}`;
236
+ }
237
+ else {
238
+ result = `A ring of ${info.oi_name}`;
239
+ }
240
+ }
241
+ else if (info.oi_guess) {
242
+ result = `A ${state.r_stones[which]} ring called ${info.oi_guess}`;
243
+ }
244
+ else {
245
+ result = `A ${state.r_stones[which]} ring`;
246
+ }
247
+ break;
248
+ }
249
+ case STICK: {
250
+ const info = ws_info[which];
251
+ const stickType = state.ws_type[which] || "staff";
252
+ const stickMade = state.ws_made[which] || "wooden";
253
+ if (info.oi_know) {
254
+ result = `A ${stickType} of ${info.oi_name}`;
255
+ if (obj.o_flags & ISKNOW) {
256
+ result += ` [${obj.o_arm} charges]`;
257
+ }
258
+ }
259
+ else if (info.oi_guess) {
260
+ result = `A ${stickMade} ${stickType} called ${info.oi_guess}`;
261
+ }
262
+ else {
263
+ result = `A ${stickMade} ${stickType}`;
264
+ }
265
+ break;
266
+ }
267
+ case AMULET:
268
+ result = "The Amulet of Yendor";
269
+ break;
270
+ case GOLD:
271
+ result = `${obj.o_arm} Gold pieces`;
272
+ break;
273
+ default:
274
+ result = "Something bizarre";
275
+ break;
276
+ }
277
+ // Add equipment status
278
+ if (state.inv_describe) {
279
+ if (obj === state.cur_armor)
280
+ result += " (being worn)";
281
+ if (obj === state.cur_weapon)
282
+ result += " (weapon in hand)";
283
+ if (obj === state.cur_ring[LEFT])
284
+ result += " (on left hand)";
285
+ else if (obj === state.cur_ring[RIGHT])
286
+ result += " (on right hand)";
287
+ }
288
+ // Adjust case
289
+ if (drop && result.length > 0 && result[0] >= "A" && result[0] <= "Z") {
290
+ result = result[0].toLowerCase() + result.slice(1);
291
+ }
292
+ else if (!drop && result.length > 0 && result[0] >= "a" && result[0] <= "z") {
293
+ result = result[0].toUpperCase() + result.slice(1);
294
+ }
295
+ return result;
296
+ }
297
+ /**
298
+ * vowelstr: Return "An" or "A" depending on whether the string starts with a vowel.
299
+ */
300
+ export function vowelstr(str) {
301
+ const vowels = "aeiouAEIOU";
302
+ if (str.length > 0 && vowels.includes(str[0])) {
303
+ return "An " + str;
304
+ }
305
+ return "A " + str;
306
+ }
307
+ //# sourceMappingURL=things.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"things.js","sourceRoot":"","sources":["../src/things.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Core game data structures.
3
+ * Faithfully ported from rogue.h structs and unions.
4
+ */
5
+ export interface Coord {
6
+ x: number;
7
+ y: number;
8
+ }
9
+ export interface Stats {
10
+ s_str: number;
11
+ s_exp: number;
12
+ s_lvl: number;
13
+ s_arm: number;
14
+ s_hpt: number;
15
+ s_dmg: string;
16
+ s_maxhp: number;
17
+ }
18
+ export interface Room {
19
+ r_pos: Coord;
20
+ r_max: Coord;
21
+ r_gold: Coord;
22
+ r_goldval: number;
23
+ r_flags: number;
24
+ r_nexits: number;
25
+ r_exit: Coord[];
26
+ }
27
+ interface ThingBase {
28
+ l_next: Thing | null;
29
+ l_prev: Thing | null;
30
+ }
31
+ export interface Monster extends ThingBase {
32
+ _kind: "monster";
33
+ t_pos: Coord;
34
+ t_turn: boolean;
35
+ t_type: string;
36
+ t_disguise: string;
37
+ t_oldch: string;
38
+ t_dest: Coord | null;
39
+ t_flags: number;
40
+ t_stats: Stats;
41
+ t_room: Room | null;
42
+ t_pack: Thing | null;
43
+ t_reserved: number;
44
+ }
45
+ export interface GameObj extends ThingBase {
46
+ _kind: "object";
47
+ o_type: number;
48
+ o_pos: Coord;
49
+ o_text: string | null;
50
+ o_launch: number;
51
+ o_packch: string;
52
+ o_damage: string;
53
+ o_hurldmg: string;
54
+ o_count: number;
55
+ o_which: number;
56
+ o_hplus: number;
57
+ o_dplus: number;
58
+ o_arm: number;
59
+ o_flags: number;
60
+ o_group: number;
61
+ o_label: string | null;
62
+ }
63
+ export type Thing = Monster | GameObj;
64
+ export interface Place {
65
+ p_ch: string;
66
+ p_flags: number;
67
+ p_monst: Thing | null;
68
+ }
69
+ export interface MonsterTemplate {
70
+ m_name: string;
71
+ m_carry: number;
72
+ m_flags: number;
73
+ m_stats: Stats;
74
+ }
75
+ export interface ObjInfo {
76
+ oi_name: string | null;
77
+ oi_prob: number;
78
+ oi_worth: number;
79
+ oi_guess: string | null;
80
+ oi_know: boolean;
81
+ }
82
+ export interface Stone {
83
+ st_name: string;
84
+ st_value: number;
85
+ }
86
+ export interface HelpEntry {
87
+ h_ch: number;
88
+ h_desc: string;
89
+ h_print: boolean;
90
+ }
91
+ export interface DelayedAction {
92
+ d_type: number;
93
+ d_func: ((arg: number) => Promise<void>) | null;
94
+ d_arg: number;
95
+ d_time: number;
96
+ }
97
+ export declare class RogueExit {
98
+ code: number;
99
+ constructor(code: number);
100
+ }
101
+ export interface RogueOptions {
102
+ playerName?: string;
103
+ seed?: number;
104
+ }
105
+ export interface RogueResult {
106
+ outcome: "death" | "quit" | "victory" | "save";
107
+ gold: number;
108
+ level: number;
109
+ killer?: string;
110
+ saveData?: string;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core game data structures.
3
+ * Faithfully ported from rogue.h structs and unions.
4
+ */
5
+ export class RogueExit {
6
+ constructor(code) {
7
+ this.code = code;
8
+ }
9
+ }
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4GH,MAAM,OAAO,SAAS;IACpB,YAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CACpC"}
package/dist/util.d.ts ADDED
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Utility functions: RNG, dice, sprintf, and macro functions.
3
+ * Ported from rogue's RNG (mdport.c) and various macros in rogue.h.
4
+ */
5
+ import type { Coord, Thing } from "./types.js";
6
+ export declare function setRNGSeed(newSeed: number): void;
7
+ export declare function getRNGSeed(): number;
8
+ /**
9
+ * Linear congruential RNG matching the original Rogue 5.4.4.
10
+ * From extern.h: #define RN (((seed = seed*11109+13849) >> 16) & 0xffff)
11
+ * Uses 32-bit integer math with high-bit extraction for quality output.
12
+ */
13
+ export declare function RN(): number;
14
+ export declare function rnd(range: number): number;
15
+ export declare function roll(number: number, sides: number): number;
16
+ export declare function sign(nm: number): number;
17
+ export declare function spread(nm: number): number;
18
+ export declare function ce(a: Coord, b: Coord): boolean;
19
+ export declare function on(thing: {
20
+ t_flags?: number;
21
+ o_flags?: number;
22
+ flags?: number;
23
+ }, flag: number): boolean;
24
+ export declare function off(thing: {
25
+ t_flags?: number;
26
+ o_flags?: number;
27
+ flags?: number;
28
+ }, flag: number): boolean;
29
+ export declare function isMonster(thing: Thing): thing is import("./types.js").Monster;
30
+ export declare function isObject(thing: Thing): thing is import("./types.js").GameObj;
31
+ export declare function CTRL(ch: string): number;
32
+ /**
33
+ * C-style sprintf supporting: %d, %s, %c, %ld, %-Nd, %*d, %%, %x, %o
34
+ */
35
+ export declare function sprintf(fmt: string, ...args: unknown[]): string;
36
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAS,MAAM,YAAY,CAAC;AAMtD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;;GAIG;AACH,wBAAgB,EAAE,IAAI,MAAM,CAG3B;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM1D;AAID,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIvC;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAID,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAE9C;AAED,wBAAgB,EAAE,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMvG;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAExG;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,YAAY,EAAE,OAAO,CAE7E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,YAAY,EAAE,OAAO,CAE5E;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEvC;AAID;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAqI/D"}