guildwars2-ts 1.0.4 → 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/dist/index.js CHANGED
@@ -114,8 +114,6 @@ var ApiBase = class {
114
114
  }
115
115
  /**
116
116
  * Parameters for the api response, at top level
117
- *
118
- * @returns Api parameters
119
117
  */
120
118
  getParams() {
121
119
  return {
@@ -163,49 +161,62 @@ var ApiBase = class {
163
161
  }
164
162
  return data;
165
163
  } catch (error) {
166
- return await this.retryRequest(endpoint, options, responseType, apiParams, error);
164
+ return await this.retryRequest(endpoint, options, responseType, apiParams, 0, error);
167
165
  }
168
166
  }
169
167
  /**
170
168
  * Retries failed requests
171
- * TODO: Fix logic. Rate-limits are almost impossible hit, but other generic requests will fail and loop forever
172
169
  *
173
170
  * @param endpoint - Endpoint to which a request was originally made
174
171
  * @param prevOptions - Axios request options
175
172
  * @param responseType - Originally requested schema
176
173
  * @param apiParams - Query string
174
+ * @param rateLimitAttempt - Current rate-limit retry counter
177
175
  * @param prevError - Error that caused a retry
178
- * @returns Successful request, or error
179
176
  */
180
- async retryRequest(endpoint, prevOptions, responseType, apiParams, prevError) {
181
- if (prevError instanceof axios.AxiosError) {
182
- if (prevError.response) {
183
- const { status } = prevError.response;
184
- if (status === 401) {
177
+ async retryRequest(endpoint, prevOptions, responseType, apiParams, rateLimitAttempt = 0, prevError) {
178
+ if (prevError instanceof axios.AxiosError && prevError.response) {
179
+ const { status } = prevError.response;
180
+ switch (true) {
181
+ case status === 401: {
185
182
  logger.warn(`Request to ${prevOptions.url} failed.`);
186
183
  throw new ApiTokenError();
187
184
  }
188
- if (status === 403) {
189
- const requiredScope = (
190
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-plus-operands
191
- prevError.response.data.text.slice(0, 1).toUpperCase() + prevError.response.data.text.slice(1)
192
- );
185
+ case status === 403: {
186
+ const requiredScope = prevError.response.data.text.slice(0, 1).toUpperCase() + prevError.response.data.text.slice(1);
193
187
  logger.warn(`Request to ${prevOptions.url} failed. ${requiredScope}.`);
194
188
  throw new ApiPermissionsError(requiredScope);
195
189
  }
196
- if (status === 404) {
190
+ case status === 404: {
197
191
  logger.warn(`Request to ${prevOptions.url} returned no data.`);
198
192
  throw new ApiNotFoundError();
199
193
  }
200
- if (status === 504) {
194
+ case (status === 429 && this._rateLimitRetry): {
195
+ logger.warn("Rate-limit has been reached. Request will be repeated soon.");
196
+ if (rateLimitAttempt < 3) {
197
+ setTimeout(async () => {
198
+ return await this.retryRequest(
199
+ endpoint,
200
+ prevOptions,
201
+ responseType,
202
+ apiParams,
203
+ rateLimitAttempt++,
204
+ prevError
205
+ );
206
+ }, 1e3);
207
+ break;
208
+ } else {
209
+ logger.error(`Rate-limit retries failed. Aborting request to ${prevOptions.url}`);
210
+ throw new ApiRetryFailedError();
211
+ }
212
+ }
213
+ case status === 504: {
201
214
  logger.warn(`Request to ${prevOptions.url} timed out.`);
202
215
  throw new ApiTimeoutError();
203
216
  }
217
+ default:
218
+ logger.warn(`Request to ${prevOptions.url} failed. ${prevError.message}`);
204
219
  }
205
- logger.warn(`Request to ${prevOptions.url} failed. ${prevError.message}`);
206
- } else if (this._rateLimitRetry) {
207
- logger.info(`Rate-limit retries failed. Aborting request to ${prevOptions.url}`);
208
- throw new ApiRetryFailedError();
209
220
  }
210
221
  throw new ApiGenericError();
211
222
  }
@@ -214,7 +225,6 @@ var ApiBase = class {
214
225
  *
215
226
  * @param endpoint - Api endpoint
216
227
  * @param urlParams - Parameters
217
- * @returns Finalized endpoint Url
218
228
  */
219
229
  _getApiUrl(endpoint, urlParams) {
220
230
  const { path } = endpoint;
@@ -232,875 +242,6 @@ var ApiBase = class {
232
242
  return fullUrl;
233
243
  }
234
244
  };
235
-
236
- // src/apis/endpoints.ts
237
- var endpoints = {
238
- account: {
239
- base: {
240
- path: "v2/account",
241
- tokenRequired: true
242
- },
243
- achievements: {
244
- path: "v2/account/achievements",
245
- tokenRequired: true
246
- },
247
- bank: {
248
- path: "v2/account/bank",
249
- tokenRequired: true
250
- },
251
- buildStorage: {
252
- path: "v2/account/buildstorage?ids=all",
253
- tokenRequired: true
254
- },
255
- dailyCrafting: {
256
- path: "v2/account/dailycrafting",
257
- tokenRequired: true
258
- },
259
- dungeons: {
260
- path: "v2/account/dungeons",
261
- tokenRequired: true
262
- },
263
- dyes: {
264
- path: "v2/account/dyes",
265
- tokenRequired: true
266
- },
267
- emotes: {
268
- path: "v2/account/emotes",
269
- tokenRequired: true
270
- },
271
- finishers: {
272
- path: "v2/account/finishers",
273
- tokenRequired: true
274
- },
275
- gliders: {
276
- path: "v2/account/gliders",
277
- tokenRequired: true
278
- },
279
- homeCats: {
280
- path: "v2/account/home/cats",
281
- tokenRequired: true
282
- },
283
- homeNodes: {
284
- path: "v2/account/home/nodes",
285
- tokenRequired: true
286
- },
287
- inventory: {
288
- path: "v2/account/inventory",
289
- tokenRequired: true
290
- },
291
- jadebots: {
292
- path: "v2/account/jadebots",
293
- tokenRequired: true
294
- },
295
- legendaryArmory: {
296
- path: "v2/account/legendaryarmory",
297
- tokenRequired: true
298
- },
299
- luck: {
300
- path: "v2/account/luck",
301
- tokenRequired: true
302
- },
303
- mailCarriers: {
304
- path: "v2/account/mailcarriers",
305
- tokenRequired: true
306
- },
307
- mapChests: {
308
- path: "v2/account/mapchests",
309
- tokenRequired: true
310
- },
311
- masteries: {
312
- path: "v2/account/masteries",
313
- tokenRequired: true
314
- },
315
- masteryPoints: {
316
- path: "v2/account/mastery/points",
317
- tokenRequired: true
318
- },
319
- materials: {
320
- path: "v2/account/materials",
321
- tokenRequired: true
322
- },
323
- minis: {
324
- path: "v2/account/minis",
325
- tokenRequired: true
326
- },
327
- mountsSkins: {
328
- path: "v2/account/mounts/skins",
329
- tokenRequired: true
330
- },
331
- mountsTypes: {
332
- path: "v2/account/mounts/types",
333
- tokenRequired: true
334
- },
335
- novelties: {
336
- path: "v2/account/novelties",
337
- tokenRequired: true
338
- },
339
- outfits: {
340
- path: "v2/account/outfits",
341
- tokenRequired: true
342
- },
343
- progression: {
344
- path: "v2/account/progression",
345
- tokenRequired: true
346
- },
347
- pvpHeroes: {
348
- path: "v2/account/pvp/heroes",
349
- tokenRequired: true
350
- },
351
- raids: {
352
- path: "v2/account/raids",
353
- tokenRequired: true
354
- },
355
- recipes: {
356
- path: "v2/account/recipes",
357
- tokenRequired: true
358
- },
359
- skiffs: {
360
- path: "v2/account/skiffs",
361
- tokenRequired: true
362
- },
363
- skins: {
364
- path: "v2/account/skins",
365
- tokenRequired: true
366
- },
367
- titles: {
368
- path: "v2/account/titles",
369
- tokenRequired: true
370
- },
371
- wallet: {
372
- path: "v2/account/wallet",
373
- tokenRequired: true
374
- },
375
- worldBosses: {
376
- path: "v2/account/worldbosses",
377
- tokenRequired: true
378
- }
379
- },
380
- achievements: {
381
- categoryIds: {
382
- path: "v2/achievements/categories",
383
- tokenRequired: false
384
- },
385
- categories: {
386
- path: "v2/achievements/categories?ids=$(ids)",
387
- tokenRequired: false
388
- },
389
- groupsAll: {
390
- path: "v2/achievements/groups",
391
- tokenRequired: false
392
- },
393
- groupsById: {
394
- path: "v2/achievements/groups/$(id)",
395
- tokenRequired: false
396
- }
397
- },
398
- backstory: {
399
- answersAll: {
400
- path: "v2/backstory/answers",
401
- tokenRequired: false
402
- },
403
- answersById: {
404
- path: "v2/backstory/answers?ids=$(ids)",
405
- tokenRequired: false
406
- },
407
- questionsAll: {
408
- path: "v2/backstory/questions",
409
- tokenRequired: false
410
- },
411
- questionsById: {
412
- path: "v2/backstory/questions?ids=$(ids)",
413
- tokenRequired: false
414
- }
415
- },
416
- build: {
417
- path: "v2/build",
418
- tokenRequired: false
419
- },
420
- characters: {
421
- base: {
422
- path: "v2/characters",
423
- tokenRequired: true
424
- },
425
- backstory: {
426
- path: "v2/characters/$(id)/backstory",
427
- tokenRequired: true
428
- },
429
- buildTabs: {
430
- path: "v2/characters/$(id)/buildtabs?tabs=$(tabs)",
431
- tokenRequired: true
432
- },
433
- core: {
434
- path: "v2/characters/$(id)/core",
435
- tokenRequired: true
436
- },
437
- crafting: {
438
- path: "v2/characters/$(id)/crafting",
439
- tokenRequired: true
440
- },
441
- equipment: {
442
- path: "v2/characters/$(id)/equipment",
443
- tokenRequired: true
444
- },
445
- equipmentTabsById: {
446
- path: "v2/characters/$(id)/equipmenttabs?tabs=$(tabs)",
447
- tokenRequired: true
448
- },
449
- equipmentTabActive: {
450
- path: "v2/characters/$(id)/equipmenttabs/active",
451
- tokenRequired: true
452
- },
453
- heroPoints: {
454
- path: "v2/characters/$(id)/heropoints",
455
- tokenRequired: true
456
- },
457
- inventory: {
458
- path: "v2/characters/$(id)/inventory",
459
- tokenRequired: true
460
- },
461
- quests: {
462
- path: "v2/characters/$(id)/quests",
463
- tokenRequired: true
464
- },
465
- recipes: {
466
- path: "v2/characters/$(id)/recipes",
467
- tokenRequired: true
468
- },
469
- sab: {
470
- path: "v2/characters/$(id)/sab",
471
- tokenRequired: true
472
- },
473
- skills: {
474
- path: "v2/characters/$(id)/skills",
475
- tokenRequired: true
476
- },
477
- specializations: {
478
- path: "v2/characters/$(id)/specializations",
479
- tokenRequired: true
480
- },
481
- training: {
482
- path: "v2/characters/$(id)/training",
483
- tokenRequired: true
484
- }
485
- },
486
- colors: {
487
- all: {
488
- path: "v2/colors",
489
- tokenRequired: false
490
- },
491
- byId: {
492
- path: "v2/colors?ids=$(ids)",
493
- tokenRequired: false
494
- }
495
- },
496
- commerce: {
497
- delivery: {
498
- path: "v2/commerce/delivery",
499
- tokenRequired: true
500
- },
501
- exchange: {
502
- path: "v2/commerce/exchange/$(type)?quantity=$(quantity)",
503
- tokenRequired: false
504
- },
505
- listings: {
506
- path: "v2/commerce/listings?ids=$(ids)",
507
- tokenRequired: false
508
- },
509
- prices: {
510
- path: "v2/commerce/prices?ids=$(ids)",
511
- tokenRequired: false
512
- },
513
- transactions: {
514
- path: "v2/commerce/transactions/$(status)/$(type)",
515
- tokenRequired: true
516
- }
517
- },
518
- continents: {
519
- core: {
520
- path: "v2/continents",
521
- tokenRequired: false
522
- },
523
- continents: {
524
- path: "v2/continents?ids=$(continents)",
525
- tokenRequired: false
526
- },
527
- floors: {
528
- path: "v2/continents/$(continents)/floors?ids=$(floors)",
529
- tokenRequired: false
530
- },
531
- regions: {
532
- path: "v2/continents/$(continents)/floors/$(floors)/regions?ids=$(regions)",
533
- tokenRequired: false
534
- },
535
- maps: {
536
- path: "v2/continents/$(continents)/floors/$(floors)/regions/$(regions)/maps?ids=$(maps)",
537
- tokenRequired: false
538
- }
539
- },
540
- createSubtoken: {
541
- noUrl: {
542
- path: "v2/createsubtoken?expire=$(expire)&permissions=$(permissions)",
543
- tokenRequired: true
544
- },
545
- url: {
546
- path: "v2/createsubtoken?expire=$(expire)&permissions=$(permissions)&urls=$(urls)",
547
- tokenRequired: true
548
- }
549
- },
550
- currencies: {
551
- all: {
552
- path: "v2/currencies",
553
- tokenRequired: false
554
- },
555
- byId: {
556
- path: "v2/currencies?ids=$(ids)",
557
- tokenRequired: false
558
- }
559
- },
560
- dailyCrafting: {
561
- path: "v2/dailycrafting",
562
- tokenRequired: false
563
- },
564
- dungeons: {
565
- all: {
566
- path: "v2/dungeons",
567
- tokenRequired: false
568
- },
569
- byId: {
570
- path: "v2/dungeons?ids=$(ids)",
571
- tokenRequired: false
572
- }
573
- },
574
- emblem: {
575
- path: "v2/emblem/$(type)?ids=$(ids)",
576
- tokenRequired: false
577
- },
578
- emotes: {
579
- all: {
580
- path: "v2/emotes",
581
- tokenRequired: false
582
- },
583
- byId: {
584
- path: "v2/emotes?ids=$(ids)",
585
- tokenRequired: false
586
- }
587
- },
588
- files: {
589
- all: {
590
- path: "v2/files",
591
- tokenRequired: false
592
- },
593
- byId: {
594
- path: "v2/files?ids=$(ids)",
595
- tokenRequired: false
596
- }
597
- },
598
- finishers: {
599
- all: {
600
- path: "v2/finishers",
601
- tokenRequired: false
602
- },
603
- byId: {
604
- path: "v2/finishers?ids=$(ids)",
605
- tokenRequired: false
606
- }
607
- },
608
- gliders: {
609
- all: {
610
- path: "v2/gliders",
611
- tokenRequired: false
612
- },
613
- byId: {
614
- path: "v2/gliders?ids=$(ids)",
615
- tokenRequired: false
616
- },
617
- paginated: {
618
- path: "v2/gliders?ids=$(ids)&page=$(page)&page_size=$(page_size)",
619
- tokenRequired: false
620
- }
621
- },
622
- guild: {
623
- core: {
624
- path: "v2/guild/$(id)",
625
- tokenRequired: false
626
- },
627
- log: {
628
- path: "v2/guild/$(id)/log?since=$(since)",
629
- tokenRequired: true
630
- },
631
- members: {
632
- path: "v2/guild/$(id)/members",
633
- tokenRequired: true
634
- },
635
- ranks: {
636
- path: "v2/guild/$(id)/ranks",
637
- tokenRequired: true
638
- },
639
- stash: {
640
- path: "v2/guild/$(id)/stash",
641
- tokenRequired: true
642
- },
643
- storage: {
644
- path: "v2/guild/$(id)/storage",
645
- tokenRequired: true
646
- },
647
- teams: {
648
- path: "v2/guild/$(id)/teams",
649
- tokenRequired: true
650
- },
651
- treasury: {
652
- path: "v2/guild/$(id)/treasury",
653
- tokenRequired: true
654
- },
655
- upgrades: {
656
- path: "v2/guild/$(id)/upgrades",
657
- tokenRequired: true
658
- },
659
- upgradesInfo: {
660
- path: "v2/guild/upgrades?ids=$(ids)",
661
- tokenRequired: false
662
- },
663
- permissionsAll: {
664
- path: "v2/guild/permissions",
665
- tokenRequired: false
666
- },
667
- permissionsById: {
668
- path: "v2/guild/permissions?ids=$(ids)",
669
- tokenRequired: false
670
- },
671
- search: {
672
- path: "v2/guild/search?name=$(name)",
673
- tokenRequired: false
674
- }
675
- },
676
- home: {
677
- cats: {
678
- path: "v2/home/cats?ids=$(ids)",
679
- tokenRequired: false
680
- },
681
- nodes: {
682
- path: "v2/home/nodes?ids=$(ids)",
683
- tokenRequired: false
684
- }
685
- },
686
- items: {
687
- all: {
688
- path: "v2/items",
689
- tokenRequired: false
690
- },
691
- byId: {
692
- path: "v2/items?ids=$(ids)",
693
- tokenRequired: false
694
- }
695
- },
696
- itemstats: {
697
- all: {
698
- path: "v2/itemstats",
699
- tokenRequired: false
700
- },
701
- byId: {
702
- path: "v2/itemstats?ids=$(ids)",
703
- tokenRequired: false
704
- }
705
- },
706
- jadebots: {
707
- all: {
708
- path: "v2/jadebots",
709
- tokenRequired: false
710
- },
711
- byId: {
712
- path: "v2/jadebots?ids=$(ids)",
713
- tokenRequired: false
714
- }
715
- },
716
- legendaryArmory: {
717
- all: {
718
- path: "v2/legendaryarmory",
719
- tokenRequired: false
720
- },
721
- byId: {
722
- path: "v2/legendaryarmory?ids=$(ids)",
723
- tokenRequired: false
724
- }
725
- },
726
- legends: {
727
- all: {
728
- path: "v2/legends",
729
- tokenRequired: false
730
- },
731
- byId: {
732
- path: "v2/legends?ids=$(ids)",
733
- tokenRequired: false
734
- }
735
- },
736
- mailCarriers: {
737
- all: {
738
- path: "v2/mailcarriers",
739
- tokenRequired: false
740
- },
741
- byId: {
742
- path: "v2/mailcarriers?ids=$(ids)",
743
- tokenRequired: false
744
- }
745
- },
746
- mapChests: {
747
- path: "v2/mapchests",
748
- tokenRequired: false
749
- },
750
- maps: {
751
- all: {
752
- path: "v2/maps",
753
- tokenRequired: false
754
- },
755
- byId: {
756
- path: "v2/maps?ids=$(ids)",
757
- tokenRequired: false
758
- }
759
- },
760
- masteries: {
761
- all: {
762
- path: "v2/masteries",
763
- tokenRequired: false
764
- },
765
- byId: {
766
- path: "v2/masteries?ids=$(ids)",
767
- tokenRequired: false
768
- }
769
- },
770
- materials: {
771
- all: {
772
- path: "v2/materials",
773
- tokenRequired: false
774
- },
775
- byId: {
776
- path: "v2/materials?ids=$(ids)",
777
- tokenRequired: false
778
- }
779
- },
780
- minis: {
781
- all: {
782
- path: "v2/minis",
783
- tokenRequired: false
784
- },
785
- byId: {
786
- path: "v2/minis?ids=$(ids)",
787
- tokenRequired: false
788
- }
789
- },
790
- mountsSkins: {
791
- all: {
792
- path: "v2/mounts/skins",
793
- tokenRequired: false
794
- },
795
- byId: {
796
- path: "v2/mounts/skins?ids=$(ids)",
797
- tokenRequired: false
798
- }
799
- },
800
- mountsTypes: {
801
- all: {
802
- path: "v2/mounts/types",
803
- tokenRequired: false
804
- },
805
- byId: {
806
- path: "v2/mounts/types?ids=$(ids)",
807
- tokenRequired: false
808
- }
809
- },
810
- novelties: {
811
- all: {
812
- path: "v2/novelties",
813
- tokenRequired: false
814
- },
815
- byId: {
816
- path: "v2/novelties?ids=$(ids)",
817
- tokenRequired: false
818
- }
819
- },
820
- outfits: {
821
- all: {
822
- path: "v2/outfits",
823
- tokenRequired: false
824
- },
825
- byId: {
826
- path: "v2/outfits?ids=$(ids)",
827
- tokenRequired: false
828
- }
829
- },
830
- pets: {
831
- all: {
832
- path: "v2/pets",
833
- tokenRequired: false
834
- },
835
- byId: {
836
- path: "v2/pets?ids=$(ids)",
837
- tokenRequired: false
838
- }
839
- },
840
- professions: {
841
- all: {
842
- path: "v2/professions",
843
- tokenRequired: false
844
- },
845
- byId: {
846
- path: "v2/professions?ids=$(ids)",
847
- tokenRequired: false
848
- }
849
- },
850
- pvp: {
851
- amuletsAll: {
852
- path: "v2/pvp/amulets",
853
- tokenRequired: false
854
- },
855
- amuletsById: {
856
- path: `v2/pvp/amulets?ids=$(ids)`,
857
- tokenRequired: false
858
- },
859
- gamesAll: {
860
- path: `v2/pvp/games`,
861
- tokenRequired: true
862
- },
863
- gamesById: {
864
- path: `v2/pvp/games?ids=$(ids)`,
865
- tokenRequired: true
866
- },
867
- heroesAll: {
868
- path: `v2/pvp/heroes`,
869
- tokenRequired: false
870
- },
871
- heroesById: {
872
- path: `v2/pvp/heroes?ids=$(ids)`,
873
- tokenRequired: false
874
- },
875
- ranksAll: {
876
- path: `v2/pvp/ranks`,
877
- tokenRequired: false
878
- },
879
- ranksById: {
880
- path: `v2/pvp/ranks?ids=$(ids)`,
881
- tokenRequired: false
882
- },
883
- seasonsAll: {
884
- path: `v2/pvp/seasons`,
885
- tokenRequired: false
886
- },
887
- seasonsById: {
888
- path: `v2/pvp/seasons?ids=$(ids)`,
889
- tokenRequired: false
890
- },
891
- leaderboards: {
892
- path: `v2/pvp/seasons/$(id)/leaderboards/$(type)/$(region)`,
893
- tokenRequired: false
894
- },
895
- leaderboardsNoType: {
896
- path: `v2/pvp/seasons/$(id)/leaderboards`,
897
- tokenRequired: false
898
- },
899
- standings: {
900
- path: `v2/pvp/standings`,
901
- tokenRequired: true
902
- },
903
- stats: {
904
- path: `v2/pvp/stats`,
905
- tokenRequired: true
906
- }
907
- },
908
- quaggans: {
909
- all: {
910
- path: "v2/quaggans",
911
- tokenRequired: false
912
- },
913
- byId: {
914
- path: "v2/quaggans?ids=$(ids)",
915
- tokenRequired: false
916
- }
917
- },
918
- quests: {
919
- all: {
920
- path: "v2/quests",
921
- tokenRequired: false
922
- },
923
- byId: {
924
- path: "v2/quests?ids=$(ids)",
925
- tokenRequired: false
926
- }
927
- },
928
- races: {
929
- all: {
930
- path: "v2/races",
931
- tokenRequired: false
932
- },
933
- byId: {
934
- path: "v2/races?ids=$(ids)",
935
- tokenRequired: false
936
- }
937
- },
938
- raids: {
939
- all: {
940
- path: "v2/raids",
941
- tokenRequired: false
942
- },
943
- byId: {
944
- path: "v2/raids?ids=$(ids)",
945
- tokenRequired: false
946
- }
947
- },
948
- recipes: {
949
- byId: {
950
- /**
951
- * TODO: The hardcoded schema could use some work
952
- */
953
- path: "v2/recipes?ids=$(ids)&v=2022-03-09T02:00:00.000Z",
954
- tokenRequired: false
955
- },
956
- all: {
957
- path: "v2/recipes",
958
- tokenRequired: false
959
- },
960
- search: {
961
- path: "v2/recipes/search?$(type)=$(ids)",
962
- tokenRequired: false
963
- }
964
- },
965
- skiffs: {
966
- all: {
967
- path: "v2/skiffs",
968
- tokenRequired: false
969
- },
970
- byId: {
971
- path: "v2/skiffs?ids=$(ids)",
972
- tokenRequired: false
973
- }
974
- },
975
- skills: {
976
- path: "v2/skills?ids=$(ids)",
977
- tokenRequired: false
978
- },
979
- skins: {
980
- all: {
981
- path: "v2/skins",
982
- tokenRequired: false
983
- },
984
- byId: {
985
- path: "v2/skins?ids=$(ids)",
986
- tokenRequired: false
987
- }
988
- },
989
- specializations: {
990
- all: {
991
- path: "v2/specializations",
992
- tokenRequired: false
993
- },
994
- byId: {
995
- path: "v2/specializations?ids=$(ids)",
996
- tokenRequired: false
997
- }
998
- },
999
- stories: {
1000
- all: {
1001
- path: "v2/stories",
1002
- tokenRequired: false
1003
- },
1004
- byId: {
1005
- path: "v2/stories?ids=$(ids)",
1006
- tokenRequired: false
1007
- }
1008
- },
1009
- seasons: {
1010
- all: {
1011
- path: "v2/stories/seasons",
1012
- tokenRequired: false
1013
- },
1014
- byId: {
1015
- path: "v2/stories/seasons?ids=$(ids)",
1016
- tokenRequired: false
1017
- }
1018
- },
1019
- titles: {
1020
- all: {
1021
- path: "v2/titles",
1022
- tokenRequired: false
1023
- },
1024
- byId: {
1025
- path: "v2/titles?ids=$(ids)",
1026
- tokenRequired: false
1027
- }
1028
- },
1029
- tokenInfo: {
1030
- path: "v2/tokeninfo",
1031
- tokenRequired: true
1032
- },
1033
- traits: {
1034
- all: {
1035
- path: "v2/traits",
1036
- tokenRequired: false
1037
- },
1038
- byId: {
1039
- path: "v2/traits?ids=$(ids)",
1040
- tokenRequired: false
1041
- }
1042
- },
1043
- worldBosses: {
1044
- path: "v2/worldbosses",
1045
- tokenRequired: false
1046
- },
1047
- worlds: {
1048
- all: {
1049
- path: "v2/worlds",
1050
- tokenRequired: false
1051
- },
1052
- byId: {
1053
- path: "v2/worlds?ids=$(ids)",
1054
- tokenRequired: false
1055
- }
1056
- },
1057
- wvw: {
1058
- abilities: {
1059
- path: "v2/wvw/abilities",
1060
- tokenRequired: false
1061
- },
1062
- abilitiesById: {
1063
- path: "v2/wvw/abilities?ids=$(ids)",
1064
- tokenRequired: false
1065
- },
1066
- matches: {
1067
- path: "v2/wvw/matches",
1068
- tokenRequired: false
1069
- },
1070
- matchesById: {
1071
- path: "v2/wvw/matches?ids=$(ids)",
1072
- tokenRequired: false
1073
- },
1074
- matchesByWorld: {
1075
- path: "v2/wvw/matches/$(type)?world=$(world)",
1076
- tokenRequired: false
1077
- },
1078
- objectives: {
1079
- path: "v2/wvw/objectives",
1080
- tokenRequired: false
1081
- },
1082
- objectivesById: {
1083
- path: "v2/wvw/objectives?ids=$(ids)",
1084
- tokenRequired: false
1085
- },
1086
- ranks: {
1087
- path: "v2/wvw/ranks",
1088
- tokenRequired: false
1089
- },
1090
- ranksById: {
1091
- path: "v2/wvw/ranks?ids=$(ids)",
1092
- tokenRequired: false
1093
- },
1094
- upgradesById: {
1095
- path: "v2/wvw/upgrades?ids=$(ids)",
1096
- tokenRequired: false
1097
- },
1098
- upgradesAll: {
1099
- path: "v2/wvw/upgrades",
1100
- tokenRequired: false
1101
- }
1102
- }
1103
- };
1104
245
  var AccountDTO = zod.z.object({
1105
246
  /** Account id. */
1106
247
  id: zod.z.string(),
@@ -2422,9 +1563,9 @@ var GuildTeamsDTO = zod.z.array(
2422
1563
  /** Team ladder statistics aggregates. */
2423
1564
  ladders: zod.z.object({
2424
1565
  /** Ranked arena stats. */
2425
- ranked: PvPAggregate,
1566
+ ranked: PvPAggregate.optional(),
2426
1567
  /** Unranked arena stats. */
2427
- unranked: PvPAggregate
1568
+ unranked: PvPAggregate.optional()
2428
1569
  }),
2429
1570
  /** Team games. */
2430
1571
  games: zod.z.array(PvPGame),
@@ -2440,7 +1581,7 @@ var GuildTeamsDTO = zod.z.array(
2440
1581
  /** Seasonal rating. */
2441
1582
  rating: zod.z.number()
2442
1583
  })
2443
- )
1584
+ ).optional()
2444
1585
  })
2445
1586
  );
2446
1587
  var GuildTreasuryDTO = zod.z.array(
@@ -3437,16 +2578,11 @@ var ProfessionsDTO = zod.z.array(
3437
2578
  /** The skill id. Can be resolved against /v2/skills. */
3438
2579
  id: zod.z.number(),
3439
2580
  /** The skill bar slot that this weapon skill can be used in. */
3440
- slot: zod.z.enum([
3441
- "Profession_1",
3442
- "Weapon_1",
3443
- "Weapon_2",
3444
- "Weapon_3",
3445
- "Weapon_4",
3446
- "Weapon_5",
3447
- "Utility",
3448
- "Heal",
3449
- "Elite"
2581
+ slot: zod.z.union([
2582
+ zod.z.enum(["Profession_1", "Utility", "Heal", "Elite"]),
2583
+ zod.z.custom(
2584
+ (val) => typeof val === "string" ? /^Weapon_[1-5]$/.test(val) : false
2585
+ )
3450
2586
  ]),
3451
2587
  /** The name of the offhand weapon this skill requires to be equipped. This field is usually only present for Thief skills. */
3452
2588
  offhand: zod.z.string().optional(),
@@ -4757,6 +3893,875 @@ var WvWUpgradesDTO = zod.z.array(
4757
3893
  })
4758
3894
  );
4759
3895
 
3896
+ // src/apis/endpoints.ts
3897
+ var endpoints = {
3898
+ account: {
3899
+ base: {
3900
+ path: "v2/account",
3901
+ tokenRequired: true
3902
+ },
3903
+ achievements: {
3904
+ path: "v2/account/achievements",
3905
+ tokenRequired: true
3906
+ },
3907
+ bank: {
3908
+ path: "v2/account/bank",
3909
+ tokenRequired: true
3910
+ },
3911
+ buildStorage: {
3912
+ path: "v2/account/buildstorage?ids=all",
3913
+ tokenRequired: true
3914
+ },
3915
+ dailyCrafting: {
3916
+ path: "v2/account/dailycrafting",
3917
+ tokenRequired: true
3918
+ },
3919
+ dungeons: {
3920
+ path: "v2/account/dungeons",
3921
+ tokenRequired: true
3922
+ },
3923
+ dyes: {
3924
+ path: "v2/account/dyes",
3925
+ tokenRequired: true
3926
+ },
3927
+ emotes: {
3928
+ path: "v2/account/emotes",
3929
+ tokenRequired: true
3930
+ },
3931
+ finishers: {
3932
+ path: "v2/account/finishers",
3933
+ tokenRequired: true
3934
+ },
3935
+ gliders: {
3936
+ path: "v2/account/gliders",
3937
+ tokenRequired: true
3938
+ },
3939
+ homeCats: {
3940
+ path: "v2/account/home/cats",
3941
+ tokenRequired: true
3942
+ },
3943
+ homeNodes: {
3944
+ path: "v2/account/home/nodes",
3945
+ tokenRequired: true
3946
+ },
3947
+ inventory: {
3948
+ path: "v2/account/inventory",
3949
+ tokenRequired: true
3950
+ },
3951
+ jadebots: {
3952
+ path: "v2/account/jadebots",
3953
+ tokenRequired: true
3954
+ },
3955
+ legendaryArmory: {
3956
+ path: "v2/account/legendaryarmory",
3957
+ tokenRequired: true
3958
+ },
3959
+ luck: {
3960
+ path: "v2/account/luck",
3961
+ tokenRequired: true
3962
+ },
3963
+ mailCarriers: {
3964
+ path: "v2/account/mailcarriers",
3965
+ tokenRequired: true
3966
+ },
3967
+ mapChests: {
3968
+ path: "v2/account/mapchests",
3969
+ tokenRequired: true
3970
+ },
3971
+ masteries: {
3972
+ path: "v2/account/masteries",
3973
+ tokenRequired: true
3974
+ },
3975
+ masteryPoints: {
3976
+ path: "v2/account/mastery/points",
3977
+ tokenRequired: true
3978
+ },
3979
+ materials: {
3980
+ path: "v2/account/materials",
3981
+ tokenRequired: true
3982
+ },
3983
+ minis: {
3984
+ path: "v2/account/minis",
3985
+ tokenRequired: true
3986
+ },
3987
+ mountsSkins: {
3988
+ path: "v2/account/mounts/skins",
3989
+ tokenRequired: true
3990
+ },
3991
+ mountsTypes: {
3992
+ path: "v2/account/mounts/types",
3993
+ tokenRequired: true
3994
+ },
3995
+ novelties: {
3996
+ path: "v2/account/novelties",
3997
+ tokenRequired: true
3998
+ },
3999
+ outfits: {
4000
+ path: "v2/account/outfits",
4001
+ tokenRequired: true
4002
+ },
4003
+ progression: {
4004
+ path: "v2/account/progression",
4005
+ tokenRequired: true
4006
+ },
4007
+ pvpHeroes: {
4008
+ path: "v2/account/pvp/heroes",
4009
+ tokenRequired: true
4010
+ },
4011
+ raids: {
4012
+ path: "v2/account/raids",
4013
+ tokenRequired: true
4014
+ },
4015
+ recipes: {
4016
+ path: "v2/account/recipes",
4017
+ tokenRequired: true
4018
+ },
4019
+ skiffs: {
4020
+ path: "v2/account/skiffs",
4021
+ tokenRequired: true
4022
+ },
4023
+ skins: {
4024
+ path: "v2/account/skins",
4025
+ tokenRequired: true
4026
+ },
4027
+ titles: {
4028
+ path: "v2/account/titles",
4029
+ tokenRequired: true
4030
+ },
4031
+ wallet: {
4032
+ path: "v2/account/wallet",
4033
+ tokenRequired: true
4034
+ },
4035
+ worldBosses: {
4036
+ path: "v2/account/worldbosses",
4037
+ tokenRequired: true
4038
+ }
4039
+ },
4040
+ achievements: {
4041
+ categoryIds: {
4042
+ path: "v2/achievements/categories",
4043
+ tokenRequired: false
4044
+ },
4045
+ categories: {
4046
+ path: "v2/achievements/categories?ids=$(ids)",
4047
+ tokenRequired: false
4048
+ },
4049
+ groupsAll: {
4050
+ path: "v2/achievements/groups",
4051
+ tokenRequired: false
4052
+ },
4053
+ groupsById: {
4054
+ path: "v2/achievements/groups/$(id)",
4055
+ tokenRequired: false
4056
+ }
4057
+ },
4058
+ backstory: {
4059
+ answersAll: {
4060
+ path: "v2/backstory/answers",
4061
+ tokenRequired: false
4062
+ },
4063
+ answersById: {
4064
+ path: "v2/backstory/answers?ids=$(ids)",
4065
+ tokenRequired: false
4066
+ },
4067
+ questionsAll: {
4068
+ path: "v2/backstory/questions",
4069
+ tokenRequired: false
4070
+ },
4071
+ questionsById: {
4072
+ path: "v2/backstory/questions?ids=$(ids)",
4073
+ tokenRequired: false
4074
+ }
4075
+ },
4076
+ build: {
4077
+ path: "v2/build",
4078
+ tokenRequired: false
4079
+ },
4080
+ characters: {
4081
+ base: {
4082
+ path: "v2/characters",
4083
+ tokenRequired: true
4084
+ },
4085
+ backstory: {
4086
+ path: "v2/characters/$(id)/backstory",
4087
+ tokenRequired: true
4088
+ },
4089
+ buildTabs: {
4090
+ path: "v2/characters/$(id)/buildtabs?tabs=$(tabs)",
4091
+ tokenRequired: true
4092
+ },
4093
+ core: {
4094
+ path: "v2/characters/$(id)/core",
4095
+ tokenRequired: true
4096
+ },
4097
+ crafting: {
4098
+ path: "v2/characters/$(id)/crafting",
4099
+ tokenRequired: true
4100
+ },
4101
+ equipment: {
4102
+ path: "v2/characters/$(id)/equipment",
4103
+ tokenRequired: true
4104
+ },
4105
+ equipmentTabsById: {
4106
+ path: "v2/characters/$(id)/equipmenttabs?tabs=$(tabs)",
4107
+ tokenRequired: true
4108
+ },
4109
+ equipmentTabActive: {
4110
+ path: "v2/characters/$(id)/equipmenttabs/active",
4111
+ tokenRequired: true
4112
+ },
4113
+ heroPoints: {
4114
+ path: "v2/characters/$(id)/heropoints",
4115
+ tokenRequired: true
4116
+ },
4117
+ inventory: {
4118
+ path: "v2/characters/$(id)/inventory",
4119
+ tokenRequired: true
4120
+ },
4121
+ quests: {
4122
+ path: "v2/characters/$(id)/quests",
4123
+ tokenRequired: true
4124
+ },
4125
+ recipes: {
4126
+ path: "v2/characters/$(id)/recipes",
4127
+ tokenRequired: true
4128
+ },
4129
+ sab: {
4130
+ path: "v2/characters/$(id)/sab",
4131
+ tokenRequired: true
4132
+ },
4133
+ skills: {
4134
+ path: "v2/characters/$(id)/skills",
4135
+ tokenRequired: true
4136
+ },
4137
+ specializations: {
4138
+ path: "v2/characters/$(id)/specializations",
4139
+ tokenRequired: true
4140
+ },
4141
+ training: {
4142
+ path: "v2/characters/$(id)/training",
4143
+ tokenRequired: true
4144
+ }
4145
+ },
4146
+ colors: {
4147
+ all: {
4148
+ path: "v2/colors",
4149
+ tokenRequired: false
4150
+ },
4151
+ byId: {
4152
+ path: "v2/colors?ids=$(ids)",
4153
+ tokenRequired: false
4154
+ }
4155
+ },
4156
+ commerce: {
4157
+ delivery: {
4158
+ path: "v2/commerce/delivery",
4159
+ tokenRequired: true
4160
+ },
4161
+ exchange: {
4162
+ path: "v2/commerce/exchange/$(type)?quantity=$(quantity)",
4163
+ tokenRequired: false
4164
+ },
4165
+ listings: {
4166
+ path: "v2/commerce/listings?ids=$(ids)",
4167
+ tokenRequired: false
4168
+ },
4169
+ prices: {
4170
+ path: "v2/commerce/prices?ids=$(ids)",
4171
+ tokenRequired: false
4172
+ },
4173
+ transactions: {
4174
+ path: "v2/commerce/transactions/$(status)/$(type)",
4175
+ tokenRequired: true
4176
+ }
4177
+ },
4178
+ continents: {
4179
+ core: {
4180
+ path: "v2/continents",
4181
+ tokenRequired: false
4182
+ },
4183
+ continents: {
4184
+ path: "v2/continents?ids=$(continents)",
4185
+ tokenRequired: false
4186
+ },
4187
+ floors: {
4188
+ path: "v2/continents/$(continents)/floors?ids=$(floors)",
4189
+ tokenRequired: false
4190
+ },
4191
+ regions: {
4192
+ path: "v2/continents/$(continents)/floors/$(floors)/regions?ids=$(regions)",
4193
+ tokenRequired: false
4194
+ },
4195
+ maps: {
4196
+ path: "v2/continents/$(continents)/floors/$(floors)/regions/$(regions)/maps?ids=$(maps)",
4197
+ tokenRequired: false
4198
+ }
4199
+ },
4200
+ createSubtoken: {
4201
+ noUrl: {
4202
+ path: "v2/createsubtoken?expire=$(expire)&permissions=$(permissions)",
4203
+ tokenRequired: true
4204
+ },
4205
+ url: {
4206
+ path: "v2/createsubtoken?expire=$(expire)&permissions=$(permissions)&urls=$(urls)",
4207
+ tokenRequired: true
4208
+ }
4209
+ },
4210
+ currencies: {
4211
+ all: {
4212
+ path: "v2/currencies",
4213
+ tokenRequired: false
4214
+ },
4215
+ byId: {
4216
+ path: "v2/currencies?ids=$(ids)",
4217
+ tokenRequired: false
4218
+ }
4219
+ },
4220
+ dailyCrafting: {
4221
+ path: "v2/dailycrafting",
4222
+ tokenRequired: false
4223
+ },
4224
+ dungeons: {
4225
+ all: {
4226
+ path: "v2/dungeons",
4227
+ tokenRequired: false
4228
+ },
4229
+ byId: {
4230
+ path: "v2/dungeons?ids=$(ids)",
4231
+ tokenRequired: false
4232
+ }
4233
+ },
4234
+ emblem: {
4235
+ path: "v2/emblem/$(type)?ids=$(ids)",
4236
+ tokenRequired: false
4237
+ },
4238
+ emotes: {
4239
+ all: {
4240
+ path: "v2/emotes",
4241
+ tokenRequired: false
4242
+ },
4243
+ byId: {
4244
+ path: "v2/emotes?ids=$(ids)",
4245
+ tokenRequired: false
4246
+ }
4247
+ },
4248
+ files: {
4249
+ all: {
4250
+ path: "v2/files",
4251
+ tokenRequired: false
4252
+ },
4253
+ byId: {
4254
+ path: "v2/files?ids=$(ids)",
4255
+ tokenRequired: false
4256
+ }
4257
+ },
4258
+ finishers: {
4259
+ all: {
4260
+ path: "v2/finishers",
4261
+ tokenRequired: false
4262
+ },
4263
+ byId: {
4264
+ path: "v2/finishers?ids=$(ids)",
4265
+ tokenRequired: false
4266
+ }
4267
+ },
4268
+ gliders: {
4269
+ all: {
4270
+ path: "v2/gliders",
4271
+ tokenRequired: false
4272
+ },
4273
+ byId: {
4274
+ path: "v2/gliders?ids=$(ids)",
4275
+ tokenRequired: false
4276
+ },
4277
+ paginated: {
4278
+ path: "v2/gliders?ids=$(ids)&page=$(page)&page_size=$(page_size)",
4279
+ tokenRequired: false
4280
+ }
4281
+ },
4282
+ guild: {
4283
+ core: {
4284
+ path: "v2/guild/$(id)",
4285
+ tokenRequired: false
4286
+ },
4287
+ log: {
4288
+ path: "v2/guild/$(id)/log?since=$(since)",
4289
+ tokenRequired: true
4290
+ },
4291
+ members: {
4292
+ path: "v2/guild/$(id)/members",
4293
+ tokenRequired: true
4294
+ },
4295
+ ranks: {
4296
+ path: "v2/guild/$(id)/ranks",
4297
+ tokenRequired: true
4298
+ },
4299
+ stash: {
4300
+ path: "v2/guild/$(id)/stash",
4301
+ tokenRequired: true
4302
+ },
4303
+ storage: {
4304
+ path: "v2/guild/$(id)/storage",
4305
+ tokenRequired: true
4306
+ },
4307
+ teams: {
4308
+ path: "v2/guild/$(id)/teams",
4309
+ tokenRequired: true
4310
+ },
4311
+ treasury: {
4312
+ path: "v2/guild/$(id)/treasury",
4313
+ tokenRequired: true
4314
+ },
4315
+ upgrades: {
4316
+ path: "v2/guild/$(id)/upgrades",
4317
+ tokenRequired: true
4318
+ },
4319
+ upgradesInfo: {
4320
+ path: "v2/guild/upgrades?ids=$(ids)",
4321
+ tokenRequired: false
4322
+ },
4323
+ permissionsAll: {
4324
+ path: "v2/guild/permissions",
4325
+ tokenRequired: false
4326
+ },
4327
+ permissionsById: {
4328
+ path: "v2/guild/permissions?ids=$(ids)",
4329
+ tokenRequired: false
4330
+ },
4331
+ search: {
4332
+ path: "v2/guild/search?name=$(name)",
4333
+ tokenRequired: false
4334
+ }
4335
+ },
4336
+ home: {
4337
+ cats: {
4338
+ path: "v2/home/cats?ids=$(ids)",
4339
+ tokenRequired: false
4340
+ },
4341
+ nodes: {
4342
+ path: "v2/home/nodes?ids=$(ids)",
4343
+ tokenRequired: false
4344
+ }
4345
+ },
4346
+ items: {
4347
+ all: {
4348
+ path: "v2/items",
4349
+ tokenRequired: false
4350
+ },
4351
+ byId: {
4352
+ path: "v2/items?ids=$(ids)",
4353
+ tokenRequired: false
4354
+ }
4355
+ },
4356
+ itemstats: {
4357
+ all: {
4358
+ path: "v2/itemstats",
4359
+ tokenRequired: false
4360
+ },
4361
+ byId: {
4362
+ path: "v2/itemstats?ids=$(ids)",
4363
+ tokenRequired: false
4364
+ }
4365
+ },
4366
+ jadebots: {
4367
+ all: {
4368
+ path: "v2/jadebots",
4369
+ tokenRequired: false
4370
+ },
4371
+ byId: {
4372
+ path: "v2/jadebots?ids=$(ids)",
4373
+ tokenRequired: false
4374
+ }
4375
+ },
4376
+ legendaryArmory: {
4377
+ all: {
4378
+ path: "v2/legendaryarmory",
4379
+ tokenRequired: false
4380
+ },
4381
+ byId: {
4382
+ path: "v2/legendaryarmory?ids=$(ids)",
4383
+ tokenRequired: false
4384
+ }
4385
+ },
4386
+ legends: {
4387
+ all: {
4388
+ path: "v2/legends",
4389
+ tokenRequired: false
4390
+ },
4391
+ byId: {
4392
+ path: "v2/legends?ids=$(ids)",
4393
+ tokenRequired: false
4394
+ }
4395
+ },
4396
+ mailCarriers: {
4397
+ all: {
4398
+ path: "v2/mailcarriers",
4399
+ tokenRequired: false
4400
+ },
4401
+ byId: {
4402
+ path: "v2/mailcarriers?ids=$(ids)",
4403
+ tokenRequired: false
4404
+ }
4405
+ },
4406
+ mapChests: {
4407
+ path: "v2/mapchests",
4408
+ tokenRequired: false
4409
+ },
4410
+ maps: {
4411
+ all: {
4412
+ path: "v2/maps",
4413
+ tokenRequired: false
4414
+ },
4415
+ byId: {
4416
+ path: "v2/maps?ids=$(ids)",
4417
+ tokenRequired: false
4418
+ }
4419
+ },
4420
+ masteries: {
4421
+ all: {
4422
+ path: "v2/masteries",
4423
+ tokenRequired: false
4424
+ },
4425
+ byId: {
4426
+ path: "v2/masteries?ids=$(ids)",
4427
+ tokenRequired: false
4428
+ }
4429
+ },
4430
+ materials: {
4431
+ all: {
4432
+ path: "v2/materials",
4433
+ tokenRequired: false
4434
+ },
4435
+ byId: {
4436
+ path: "v2/materials?ids=$(ids)",
4437
+ tokenRequired: false
4438
+ }
4439
+ },
4440
+ minis: {
4441
+ all: {
4442
+ path: "v2/minis",
4443
+ tokenRequired: false
4444
+ },
4445
+ byId: {
4446
+ path: "v2/minis?ids=$(ids)",
4447
+ tokenRequired: false
4448
+ }
4449
+ },
4450
+ mountsSkins: {
4451
+ all: {
4452
+ path: "v2/mounts/skins",
4453
+ tokenRequired: false
4454
+ },
4455
+ byId: {
4456
+ path: "v2/mounts/skins?ids=$(ids)",
4457
+ tokenRequired: false
4458
+ }
4459
+ },
4460
+ mountsTypes: {
4461
+ all: {
4462
+ path: "v2/mounts/types",
4463
+ tokenRequired: false
4464
+ },
4465
+ byId: {
4466
+ path: "v2/mounts/types?ids=$(ids)",
4467
+ tokenRequired: false
4468
+ }
4469
+ },
4470
+ novelties: {
4471
+ all: {
4472
+ path: "v2/novelties",
4473
+ tokenRequired: false
4474
+ },
4475
+ byId: {
4476
+ path: "v2/novelties?ids=$(ids)",
4477
+ tokenRequired: false
4478
+ }
4479
+ },
4480
+ outfits: {
4481
+ all: {
4482
+ path: "v2/outfits",
4483
+ tokenRequired: false
4484
+ },
4485
+ byId: {
4486
+ path: "v2/outfits?ids=$(ids)",
4487
+ tokenRequired: false
4488
+ }
4489
+ },
4490
+ pets: {
4491
+ all: {
4492
+ path: "v2/pets",
4493
+ tokenRequired: false
4494
+ },
4495
+ byId: {
4496
+ path: "v2/pets?ids=$(ids)",
4497
+ tokenRequired: false
4498
+ }
4499
+ },
4500
+ professions: {
4501
+ all: {
4502
+ path: "v2/professions",
4503
+ tokenRequired: false
4504
+ },
4505
+ byId: {
4506
+ path: "v2/professions?ids=$(ids)",
4507
+ tokenRequired: false
4508
+ }
4509
+ },
4510
+ pvp: {
4511
+ amuletsAll: {
4512
+ path: "v2/pvp/amulets",
4513
+ tokenRequired: false
4514
+ },
4515
+ amuletsById: {
4516
+ path: "v2/pvp/amulets?ids=$(ids)",
4517
+ tokenRequired: false
4518
+ },
4519
+ gamesAll: {
4520
+ path: "v2/pvp/games",
4521
+ tokenRequired: true
4522
+ },
4523
+ gamesById: {
4524
+ path: "v2/pvp/games?ids=$(ids)",
4525
+ tokenRequired: true
4526
+ },
4527
+ heroesAll: {
4528
+ path: "v2/pvp/heroes",
4529
+ tokenRequired: false
4530
+ },
4531
+ heroesById: {
4532
+ path: "v2/pvp/heroes?ids=$(ids)",
4533
+ tokenRequired: false
4534
+ },
4535
+ ranksAll: {
4536
+ path: "v2/pvp/ranks",
4537
+ tokenRequired: false
4538
+ },
4539
+ ranksById: {
4540
+ path: "v2/pvp/ranks?ids=$(ids)",
4541
+ tokenRequired: false
4542
+ },
4543
+ seasonsAll: {
4544
+ path: "v2/pvp/seasons",
4545
+ tokenRequired: false
4546
+ },
4547
+ seasonsById: {
4548
+ path: "v2/pvp/seasons?ids=$(ids)",
4549
+ tokenRequired: false
4550
+ },
4551
+ leaderboards: {
4552
+ path: "v2/pvp/seasons/$(id)/leaderboards/$(type)/$(region)",
4553
+ tokenRequired: false
4554
+ },
4555
+ leaderboardsNoType: {
4556
+ path: "v2/pvp/seasons/$(id)/leaderboards",
4557
+ tokenRequired: false
4558
+ },
4559
+ standings: {
4560
+ path: "v2/pvp/standings",
4561
+ tokenRequired: true
4562
+ },
4563
+ stats: {
4564
+ path: "v2/pvp/stats",
4565
+ tokenRequired: true
4566
+ }
4567
+ },
4568
+ quaggans: {
4569
+ all: {
4570
+ path: "v2/quaggans",
4571
+ tokenRequired: false
4572
+ },
4573
+ byId: {
4574
+ path: "v2/quaggans?ids=$(ids)",
4575
+ tokenRequired: false
4576
+ }
4577
+ },
4578
+ quests: {
4579
+ all: {
4580
+ path: "v2/quests",
4581
+ tokenRequired: false
4582
+ },
4583
+ byId: {
4584
+ path: "v2/quests?ids=$(ids)",
4585
+ tokenRequired: false
4586
+ }
4587
+ },
4588
+ races: {
4589
+ all: {
4590
+ path: "v2/races",
4591
+ tokenRequired: false
4592
+ },
4593
+ byId: {
4594
+ path: "v2/races?ids=$(ids)",
4595
+ tokenRequired: false
4596
+ }
4597
+ },
4598
+ raids: {
4599
+ all: {
4600
+ path: "v2/raids",
4601
+ tokenRequired: false
4602
+ },
4603
+ byId: {
4604
+ path: "v2/raids?ids=$(ids)",
4605
+ tokenRequired: false
4606
+ }
4607
+ },
4608
+ recipes: {
4609
+ byId: {
4610
+ /**
4611
+ * TODO: The hardcoded schema could use some work
4612
+ */
4613
+ path: "v2/recipes?ids=$(ids)&v=2022-03-09T02:00:00.000Z",
4614
+ tokenRequired: false
4615
+ },
4616
+ all: {
4617
+ path: "v2/recipes",
4618
+ tokenRequired: false
4619
+ },
4620
+ search: {
4621
+ path: "v2/recipes/search?$(type)=$(ids)",
4622
+ tokenRequired: false
4623
+ }
4624
+ },
4625
+ skiffs: {
4626
+ all: {
4627
+ path: "v2/skiffs",
4628
+ tokenRequired: false
4629
+ },
4630
+ byId: {
4631
+ path: "v2/skiffs?ids=$(ids)",
4632
+ tokenRequired: false
4633
+ }
4634
+ },
4635
+ skills: {
4636
+ path: "v2/skills?ids=$(ids)",
4637
+ tokenRequired: false
4638
+ },
4639
+ skins: {
4640
+ all: {
4641
+ path: "v2/skins",
4642
+ tokenRequired: false
4643
+ },
4644
+ byId: {
4645
+ path: "v2/skins?ids=$(ids)",
4646
+ tokenRequired: false
4647
+ }
4648
+ },
4649
+ specializations: {
4650
+ all: {
4651
+ path: "v2/specializations",
4652
+ tokenRequired: false
4653
+ },
4654
+ byId: {
4655
+ path: "v2/specializations?ids=$(ids)",
4656
+ tokenRequired: false
4657
+ }
4658
+ },
4659
+ stories: {
4660
+ all: {
4661
+ path: "v2/stories",
4662
+ tokenRequired: false
4663
+ },
4664
+ byId: {
4665
+ path: "v2/stories?ids=$(ids)",
4666
+ tokenRequired: false
4667
+ }
4668
+ },
4669
+ seasons: {
4670
+ all: {
4671
+ path: "v2/stories/seasons",
4672
+ tokenRequired: false
4673
+ },
4674
+ byId: {
4675
+ path: "v2/stories/seasons?ids=$(ids)",
4676
+ tokenRequired: false
4677
+ }
4678
+ },
4679
+ titles: {
4680
+ all: {
4681
+ path: "v2/titles",
4682
+ tokenRequired: false
4683
+ },
4684
+ byId: {
4685
+ path: "v2/titles?ids=$(ids)",
4686
+ tokenRequired: false
4687
+ }
4688
+ },
4689
+ tokenInfo: {
4690
+ path: "v2/tokeninfo",
4691
+ tokenRequired: true
4692
+ },
4693
+ traits: {
4694
+ all: {
4695
+ path: "v2/traits",
4696
+ tokenRequired: false
4697
+ },
4698
+ byId: {
4699
+ path: "v2/traits?ids=$(ids)",
4700
+ tokenRequired: false
4701
+ }
4702
+ },
4703
+ worldBosses: {
4704
+ path: "v2/worldbosses",
4705
+ tokenRequired: false
4706
+ },
4707
+ worlds: {
4708
+ all: {
4709
+ path: "v2/worlds",
4710
+ tokenRequired: false
4711
+ },
4712
+ byId: {
4713
+ path: "v2/worlds?ids=$(ids)",
4714
+ tokenRequired: false
4715
+ }
4716
+ },
4717
+ wvw: {
4718
+ abilities: {
4719
+ path: "v2/wvw/abilities",
4720
+ tokenRequired: false
4721
+ },
4722
+ abilitiesById: {
4723
+ path: "v2/wvw/abilities?ids=$(ids)",
4724
+ tokenRequired: false
4725
+ },
4726
+ matches: {
4727
+ path: "v2/wvw/matches",
4728
+ tokenRequired: false
4729
+ },
4730
+ matchesById: {
4731
+ path: "v2/wvw/matches?ids=$(ids)",
4732
+ tokenRequired: false
4733
+ },
4734
+ matchesByWorld: {
4735
+ path: "v2/wvw/matches/$(type)?world=$(world)",
4736
+ tokenRequired: false
4737
+ },
4738
+ objectives: {
4739
+ path: "v2/wvw/objectives",
4740
+ tokenRequired: false
4741
+ },
4742
+ objectivesById: {
4743
+ path: "v2/wvw/objectives?ids=$(ids)",
4744
+ tokenRequired: false
4745
+ },
4746
+ ranks: {
4747
+ path: "v2/wvw/ranks",
4748
+ tokenRequired: false
4749
+ },
4750
+ ranksById: {
4751
+ path: "v2/wvw/ranks?ids=$(ids)",
4752
+ tokenRequired: false
4753
+ },
4754
+ upgradesById: {
4755
+ path: "v2/wvw/upgrades?ids=$(ids)",
4756
+ tokenRequired: false
4757
+ },
4758
+ upgradesAll: {
4759
+ path: "v2/wvw/upgrades",
4760
+ tokenRequired: false
4761
+ }
4762
+ }
4763
+ };
4764
+
4760
4765
  // src/apis/account/account.ts
4761
4766
  var AccountApi = class extends ApiBase {
4762
4767
  /**
@@ -5099,12 +5104,12 @@ var CharactersApi = class extends ApiBase {
5099
5104
  */
5100
5105
  async getBuildTabs(id, tabs = "all") {
5101
5106
  if (Array.isArray(tabs)) {
5102
- tabs.forEach((tab) => {
5107
+ for (const tab of tabs) {
5103
5108
  if (tab < 1 || tab > 8) {
5104
5109
  logger.warn("Build tab ids must be between 1 and 8. Returning all tabs");
5105
5110
  tabs = "all";
5106
5111
  }
5107
- });
5112
+ }
5108
5113
  }
5109
5114
  return await this.buildRequest(
5110
5115
  endpoints.characters.buildTabs,
@@ -5155,12 +5160,12 @@ var CharactersApi = class extends ApiBase {
5155
5160
  */
5156
5161
  async getEquipmentTabs(id, tabs = "all") {
5157
5162
  if (Array.isArray(tabs)) {
5158
- tabs.forEach((tab) => {
5163
+ for (const tab of tabs) {
5159
5164
  if (tab < 1 || tab > 8) {
5160
5165
  logger.warn("Equipment tab ids must be between 1 and 8. Returning all tabs.");
5161
5166
  tabs = "all";
5162
5167
  }
5163
- });
5168
+ }
5164
5169
  }
5165
5170
  return await this.buildRequest(
5166
5171
  endpoints.characters.equipmentTabsById,
@@ -5577,7 +5582,7 @@ var ContinentsApi = class extends ApiBase {
5577
5582
  ContinentsMapsDTO
5578
5583
  );
5579
5584
  }
5580
- } else if (regions instanceof Array || regions === "all") {
5585
+ } else if (Array.isArray(regions) || regions === "all") {
5581
5586
  return await this.buildRequest(
5582
5587
  endpoints.continents.regions,
5583
5588
  {
@@ -5588,7 +5593,7 @@ var ContinentsApi = class extends ApiBase {
5588
5593
  ContinentsRegionsDTO
5589
5594
  );
5590
5595
  }
5591
- } else if (floors instanceof Array || floors === "all") {
5596
+ } else if (Array.isArray(floors) || floors === "all") {
5592
5597
  return await this.buildRequest(
5593
5598
  endpoints.continents.floors,
5594
5599
  {
@@ -5598,7 +5603,7 @@ var ContinentsApi = class extends ApiBase {
5598
5603
  ContinentsFloorsDTO
5599
5604
  );
5600
5605
  }
5601
- } else if (continents instanceof Array || continents === "all") {
5606
+ } else if (Array.isArray(continents) || continents === "all") {
5602
5607
  return await this.buildRequest(
5603
5608
  endpoints.continents.continents,
5604
5609
  {
@@ -5645,7 +5650,7 @@ var EmotesApi = class extends ApiBase {
5645
5650
  if (ids && Array.isArray(ids)) {
5646
5651
  ids = ids.map((id) => {
5647
5652
  if (["shiverplus", "stretch"].includes(id.toLocaleLowerCase()))
5648
- return id[0].toLocaleUpperCase() + id.substring(1);
5653
+ return id[0]?.toLocaleUpperCase() + id.substring(1);
5649
5654
  return id.toLocaleLowerCase();
5650
5655
  });
5651
5656
  return await this.buildRequest(endpoints.emotes.byId, { ids }, EmotesDTO);
@@ -6177,213 +6182,109 @@ var WorldVsWorldApi = class extends ApiBase {
6177
6182
 
6178
6183
  // src/api.ts
6179
6184
  var GW2Api = class extends ApiBase {
6180
- /**
6181
- * /v2/account Api
6182
- */
6185
+ /** /v2/account Api */
6183
6186
  account = new AccountApi(this.getParams());
6184
- /**
6185
- * /v2/achievements Api
6186
- */
6187
+ /** /v2/achievements Api */
6187
6188
  achievements = new AchievementsApi(this.getParams());
6188
- /**
6189
- * /v2/backstory Api
6190
- */
6189
+ /** /v2/backstory Api */
6191
6190
  backstory = new BackstoryApi(this.getParams());
6192
- /**
6193
- * /v2/build Api
6194
- */
6191
+ /** /v2/build Api */
6195
6192
  build = new BuildApi(this.getParams());
6196
- /**
6197
- * /v2/characters Api
6198
- */
6193
+ /** /v2/characters Api */
6199
6194
  characters = new CharactersApi(this.getParams());
6200
- /**
6201
- * /v2/colors Api
6202
- */
6195
+ /** /v2/colors Api */
6203
6196
  colors = new ColorsApi(this.getParams());
6204
- /**
6205
- * /v2/commerce Api
6206
- */
6197
+ /** /v2/commerce Api */
6207
6198
  commerce = new CommerceApi(this.getParams());
6208
- /**
6209
- * /v2/continents Api
6210
- */
6199
+ /** /v2/continents Api */
6211
6200
  continents = new ContinentsApi(this.getParams());
6212
- /**
6213
- * /v2/currencies Api
6214
- */
6201
+ /** /v2/currencies Api */
6215
6202
  currencies = new CurrenciesApi(this.getParams());
6216
- /**
6217
- * /v2/dailycrafting Api
6218
- */
6203
+ /** /v2/dailycrafting Api */
6219
6204
  dailyCrafting = new DailyCraftingApi(this.getParams());
6220
- /**
6221
- * /v2/dungeons Api
6222
- */
6205
+ /** /v2/dungeons Api */
6223
6206
  dungeons = new DungeonsApi(this.getParams());
6224
- /**
6225
- * /v2/emblem Api
6226
- */
6207
+ /** /v2/emblem Api */
6227
6208
  emblem = new EmblemApi(this.getParams());
6228
- /**
6229
- * /v2/emotes Api
6230
- */
6209
+ /** /v2/emotes Api */
6231
6210
  emotes = new EmotesApi(this.getParams());
6232
- /**
6233
- * /v2/files Api
6234
- */
6211
+ /** /v2/files Api */
6235
6212
  files = new FilesApi(this.getParams());
6236
- /**
6237
- * /v2/finishers Api
6238
- */
6213
+ /** /v2/finishers Api */
6239
6214
  finishers = new FinishersApi(this.getParams());
6240
- /**
6241
- * /v2/gliders Api
6242
- */
6215
+ /** /v2/gliders Api */
6243
6216
  gliders = new GlidersApi(this.getParams());
6244
- /**
6245
- * /v2/guild Api
6246
- */
6217
+ /** /v2/guild Api */
6247
6218
  guild = new GuildApi(this.getParams());
6248
- /**
6249
- * /v2/home Api
6250
- */
6219
+ /** /v2/home Api */
6251
6220
  home = new HomeApi(this.getParams());
6252
- /**
6253
- * /v2/items Api
6254
- */
6221
+ /** /v2/items Api */
6255
6222
  items = new ItemsApi(this.getParams());
6256
- /**
6257
- * /v2/itemstats Api
6258
- */
6223
+ /** /v2/itemstats Api */
6259
6224
  itemstats = new ItemStatsApi(this.getParams());
6260
- /**
6261
- * /v2/jadebots Api
6262
- */
6225
+ /** /v2/jadebots Api */
6263
6226
  jadebots = new JadebotsApi(this.getParams());
6264
- /**
6265
- * /v2/legendaryarmory Api
6266
- */
6227
+ /** /v2/legendaryarmory Api */
6267
6228
  legendaryArmory = new LegendaryArmoryApi(this.getParams());
6268
- /**
6269
- * /v2/legends Api
6270
- */
6229
+ /** /v2/legends Api */
6271
6230
  legends = new LegendsApi(this.getParams());
6272
- /**
6273
- * /v2/mailcarriers Api
6274
- */
6231
+ /** /v2/mailcarriers Api */
6275
6232
  mailCarriers = new MailCarriersApi(this.getParams());
6276
- /**
6277
- * /v2/mapchests Api
6278
- */
6233
+ /** /v2/mapchests Api */
6279
6234
  mapChests = new MapChestsApi(this.getParams());
6280
- /**
6281
- * /v2/maps Api
6282
- */
6235
+ /** /v2/maps Api */
6283
6236
  maps = new MapsApi(this.getParams());
6284
- /**
6285
- * /v2/masteries Api
6286
- */
6237
+ /** /v2/masteries Api */
6287
6238
  masteries = new MasteriesApi(this.getParams());
6288
- /**
6289
- * /v2/materials Api
6290
- */
6239
+ /** /v2/materials Api */
6291
6240
  materials = new MaterialsApi(this.getParams());
6292
- /**
6293
- * /v2/minis Api
6294
- */
6241
+ /** /v2/minis Api */
6295
6242
  minis = new MinisApi(this.getParams());
6296
- /**
6297
- * /v2/mounts Api
6298
- */
6243
+ /** /v2/mounts Api */
6299
6244
  mounts = new MountsApi(this.getParams());
6300
- /**
6301
- * /v2/novelties Api
6302
- */
6245
+ /** /v2/novelties Api */
6303
6246
  novelties = new NoveltiesApi(this.getParams());
6304
- /**
6305
- * /v2/outfits Api
6306
- */
6247
+ /** /v2/outfits Api */
6307
6248
  outfits = new OutfitsApi(this.getParams());
6308
- /**
6309
- * /v2/pets Api
6310
- */
6249
+ /** /v2/pets Api */
6311
6250
  pets = new PetsApi(this.getParams());
6312
- /**
6313
- * /v2/professions Api
6314
- */
6251
+ /** /v2/professions Api */
6315
6252
  professions = new ProfessionsApi(this.getParams());
6316
- /**
6317
- * /v2/pvp Api
6318
- */
6253
+ /** /v2/pvp Api */
6319
6254
  pvp = new PvPApi(this.getParams());
6320
- /**
6321
- * /v2/quaggans Api
6322
- */
6255
+ /** /v2/quaggans Api */
6323
6256
  quaggans = new QuaggansApi(this.getParams());
6324
- /**
6325
- * /v2/quests Api
6326
- */
6257
+ /** /v2/quests Api */
6327
6258
  quests = new QuestsApi(this.getParams());
6328
- /**
6329
- * /v2/races Api
6330
- */
6259
+ /** /v2/races Api */
6331
6260
  races = new RacesApi(this.getParams());
6332
- /**
6333
- * /v2/raids Api
6334
- */
6261
+ /** /v2/raids Api */
6335
6262
  raids = new RaidsApi(this.getParams());
6336
- /**
6337
- * /v2/recipes Api
6338
- */
6263
+ /** /v2/recipes Api */
6339
6264
  recipes = new RecipesApi(this.getParams());
6340
- /**
6341
- * /v2/skiffs Api
6342
- */
6265
+ /** /v2/skiffs Api */
6343
6266
  skiffs = new SkiffsApi(this.getParams());
6344
- /**
6345
- * /v2/skills Api
6346
- */
6267
+ /** /v2/skills Api */
6347
6268
  skills = new SkillsApi(this.getParams());
6348
- /**
6349
- * /v2/skins Api
6350
- */
6269
+ /** /v2/skins Api */
6351
6270
  skins = new SkinsApi(this.getParams());
6352
- /**
6353
- * /v2/specializations Api
6354
- */
6271
+ /** /v2/specializations Api */
6355
6272
  specializations = new SpecializationsApi(this.getParams());
6356
- /**
6357
- * /v2/stories Api
6358
- */
6273
+ /** /v2/stories Api */
6359
6274
  stories = new StoriesApi(this.getParams());
6360
- /**
6361
- * /v2/subtoken Api
6362
- */
6275
+ /** /v2/subtoken Api */
6363
6276
  subtoken = new SubtokenApi(this.getParams());
6364
- /**
6365
- * /v2/titles Api
6366
- */
6277
+ /** /v2/titles Api */
6367
6278
  titles = new TitlesApi(this.getParams());
6368
- /**
6369
- * /v2/tokeninfo Api
6370
- */
6279
+ /** /v2/tokeninfo Api */
6371
6280
  tokenInfo = new TokenInfoApi(this.getParams());
6372
- /**
6373
- * /v2/traits Api
6374
- */
6281
+ /** /v2/traits Api */
6375
6282
  traits = new TraitsApi(this.getParams());
6376
- /**
6377
- * /v2/worldbosses Api
6378
- */
6283
+ /** /v2/worldbosses Api */
6379
6284
  worldBosses = new WorldBossesApi(this.getParams());
6380
- /**
6381
- * /v2/worlds Api
6382
- */
6285
+ /** /v2/worlds Api */
6383
6286
  worlds = new WorldsApi(this.getParams());
6384
- /**
6385
- * /v2/wvw Api
6386
- */
6287
+ /** /v2/wvw Api */
6387
6288
  wvw = new WorldVsWorldApi(this.getParams());
6388
6289
  };
6389
6290