warframe-public-export-plus 0.6.1 → 0.6.3

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 (45) hide show
  1. package/ExportAchievements.json +4 -0
  2. package/ExportArcanes.json +13719 -0
  3. package/ExportBoosterPacks.json +54 -54
  4. package/ExportBundles.json +242 -84
  5. package/ExportChallenges.json +10 -1
  6. package/ExportCodex.json +5 -0
  7. package/ExportCustoms.json +488 -20
  8. package/ExportDojoRecipes.json +1580 -0
  9. package/ExportEmailItems.json +5 -3
  10. package/ExportEnemies.json +2459 -699
  11. package/ExportFlavour.json +481 -0
  12. package/ExportImages.json +360 -18
  13. package/ExportKeys.json +227 -42
  14. package/ExportRailjackWeapons.json +2135 -167
  15. package/ExportRecipes.json +761 -0
  16. package/ExportRelics.json +693 -9
  17. package/ExportResources.json +484 -12
  18. package/ExportRewards.json +616 -4
  19. package/ExportSyndicates.json +56 -0
  20. package/ExportTilesets.json +16 -0
  21. package/ExportUpgrades.json +2925 -1468
  22. package/ExportVendors.json +1423 -254
  23. package/ExportVirtuals.json +3 -0
  24. package/ExportWarframes.json +163 -2
  25. package/ExportWeapons.json +592 -42
  26. package/README.md +2 -2
  27. package/dict.de.json +743 -63
  28. package/dict.en.json +755 -75
  29. package/dict.es.json +782 -102
  30. package/dict.fr.json +712 -32
  31. package/dict.it.json +730 -50
  32. package/dict.ja.json +714 -34
  33. package/dict.ko.json +747 -67
  34. package/dict.pl.json +1007 -327
  35. package/dict.pt.json +752 -72
  36. package/dict.ru.json +725 -45
  37. package/dict.tc.json +724 -44
  38. package/dict.th.json +741 -61
  39. package/dict.tr.json +1332 -652
  40. package/dict.uk.json +1203 -523
  41. package/dict.zh.json +758 -78
  42. package/index.d.ts +19 -4
  43. package/package.json +3 -4
  44. package/supplementals/getScaledPowersuitValues.pluto +17 -0
  45. package/validate-typings.js +17 -17
package/index.d.ts CHANGED
@@ -112,6 +112,13 @@ export interface IArcane {
112
112
  codexSecret: boolean;
113
113
  excludeFromCodex?: true;
114
114
  rarity: TRarity;
115
+ levelStats?: {
116
+ tag: string;
117
+ sub: Record<string,
118
+ { tag: string; sub: Record<string, string> }
119
+ | string // note: substitute itself may be a loctag
120
+ >;
121
+ }[][];
115
122
  fusionLimit: number;
116
123
  distillPointValue?: number;
117
124
  }
@@ -451,10 +458,12 @@ export interface IColour {
451
458
  value: string;
452
459
  }
453
460
 
461
+ export type TFocusSchool = "AP_ATTACK" | "AP_DEFENSE" | "AP_POWER" | "AP_TACTIC" | "AP_WARD";
462
+
454
463
  export interface IFocusUpgrade {
455
464
  name: string;
456
465
  icon: string;
457
- polarity: "AP_ATTACK" | "AP_DEFENSE" | "AP_POWER" | "AP_TACTIC" | "AP_WARD";
466
+ polarity: TFocusSchool;
458
467
  rarity: TRarity;
459
468
  codexSecret: boolean;
460
469
  baseDrain: number;
@@ -905,8 +914,8 @@ export interface ITextIcon {
905
914
 
906
915
  export interface ITileset {
907
916
  uniqueName: string;
908
- faction?: TFaction;
909
- missions: Record<TMissionType, ITilesetMission>;
917
+ faction: TFaction;
918
+ missions: Partial<Record<TMissionType, ITilesetMission>>; // Only contains mission types supported by the tileset.
910
919
  }
911
920
 
912
921
  export interface ITilesetMission {
@@ -969,6 +978,7 @@ export interface IUpgrade {
969
978
  levelStats?: {
970
979
  stats: string[];
971
980
  }[];
981
+ introducedAt?: number;
972
982
  }
973
983
 
974
984
  export interface IVendor {
@@ -1010,6 +1020,10 @@ export interface IVendorOffer {
1010
1020
  reductionPerPositiveRank: number;
1011
1021
  increasePerNegativeRank: number;
1012
1022
  };
1023
+ focusXpCost?: {
1024
+ polarity: TFocusSchool;
1025
+ cost: number;
1026
+ };
1013
1027
  }
1014
1028
 
1015
1029
  export interface IVirtual {
@@ -1029,10 +1043,11 @@ export interface IPowersuit {
1029
1043
  power: number;
1030
1044
  codexSecret: boolean;
1031
1045
  masteryReq: number;
1046
+ excludeFromCodex?: true;
1032
1047
  sprintSpeed: number;
1033
1048
  abilities: ({ uniqueName: string } & IAbility)[];
1034
1049
  passiveDescription?: string;
1035
- productCategory: "Suits" | "SpaceSuits" | "MechSuits";
1050
+ productCategory: "Suits" | "SpaceSuits" | "MechSuits" | "SpecialItems";
1036
1051
  exalted?: string[];
1037
1052
  longDescription?: string;
1038
1053
  variantType: "VT_NORMAL" | "VT_PRIME" | "VT_VARIANT";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "warframe-public-export-plus",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "exports": {
@@ -15,8 +15,7 @@
15
15
  "url": "git+https://github.com/calamity-inc/warframe-public-export-plus.git"
16
16
  },
17
17
  "devDependencies": {
18
- "ts-node": "^10.9.2",
19
- "ts-to-zod": "^3.15.0",
20
- "zod": "^3.24.2"
18
+ "ts-to-zod": "^5",
19
+ "zod": "^4"
21
20
  }
22
21
  }
@@ -0,0 +1,17 @@
1
+ local { crypto, json, wasm } = require "pluto:*"
2
+
3
+ local ExportWarframes = json.decode(io.contents("../ExportWarframes.json"))
4
+ local utilInstance = wasm.instantiate(io.contents("util.wasm"))
5
+
6
+ return function(uniqueName, rank)
7
+ local health_add, shield_add, power_add, armor_add, ability_strength, heal_rate = utilInstance:call("get_powersuit_scaling_values", crypto.joaat(uniqueName), rank)
8
+ local powersuit = ExportWarframes[uniqueName]
9
+ return {
10
+ health = powersuit.health + health_add,
11
+ shield = powersuit.shield + shield_add,
12
+ power = powersuit.power + power_add,
13
+ armor = powersuit.armor + armor_add,
14
+ ability_strength = ability_strength,
15
+ heal_rate = heal_rate,
16
+ }
17
+ end
@@ -11,33 +11,32 @@ for (const line of indexTypes.split(/\r?\n/)) {
11
11
  }
12
12
  types += "\n}";
13
13
 
14
- console.log("🕐 Generating schemas...");
14
+ console.log("Generating schemas...");
15
15
  fs.writeFileSync("tmp-types.ts", types);
16
- execSync("npx ts-to-zod tmp-types.ts tmp-schemas.ts --skipValidation", {
17
- stdio: "inherit",
18
- });
16
+ execSync("npx ts-to-zod tmp-types.ts tmp-schemas.js --skipValidation");
19
17
 
20
18
  const schemas = fs
21
- .readFileSync("tmp-schemas.ts", "utf8")
22
- .replace(/z\.object/g, "z.strictObject")
23
- .replace("iAbilitySchema = z.strictObject({", "iAbilitySchema = z.object({");
24
- fs.writeFileSync("tmp-schemas.ts", schemas);
19
+ .readFileSync("tmp-schemas.js", "utf8")
20
+ .replaceAll("z.object", "z.strictObject")
21
+ .replace("iAbilitySchema = z.strictObject({", "iAbilitySchema = z.object({")
22
+ .replace("z.record(tMissionTypeSchema, iTilesetMissionSchema).partial()", "z.partialRecord(tMissionTypeSchema, iTilesetMissionSchema)");
23
+ fs.writeFileSync("tmp-schemas.mjs", schemas);
25
24
 
26
- console.log("🕐 Validating schemas...");
25
+ console.log("Validating schemas...");
27
26
  const test = `import { z } from "zod";
28
- import { iPublicExportPlusSchema } from "./tmp-schemas";
29
- import publicExportPlus from "./index";
27
+ import { iPublicExportPlusSchema } from "./tmp-schemas.mjs";
28
+ import publicExportPlus from "./index.js";
30
29
  try {
31
30
  iPublicExportPlusSchema.parse(publicExportPlus);
32
- console.log("Schemas validated successfully.");
31
+ console.log("Schemas validated successfully.");
33
32
  } catch (e) {
34
- console.error((e as Error).message);
33
+ console.error(e.message);
35
34
  process.exit(1);
36
35
  }`;
37
- fs.writeFileSync("tmp-test.ts", test);
36
+ fs.writeFileSync("tmp-test.mjs", test);
38
37
 
39
38
  try {
40
- execSync("npx ts-node tmp-test.ts", {
39
+ execSync("node tmp-test.mjs", {
41
40
  stdio: "inherit",
42
41
  env: {
43
42
  ...process.env,
@@ -51,7 +50,8 @@ try {
51
50
  process.exitCode = 1;
52
51
  }
53
52
  } finally {
54
- fs.unlinkSync("tmp-schemas.ts");
55
53
  fs.unlinkSync("tmp-types.ts");
56
- fs.unlinkSync("tmp-test.ts");
54
+ fs.unlinkSync("tmp-schemas.mjs");
55
+ fs.unlinkSync("tmp-schemas.js");
56
+ fs.unlinkSync("tmp-test.mjs");
57
57
  }