@pokepc/dataset 7.0.0 → 7.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 (320) hide show
  1. package/README.md +57 -1
  2. package/build/{box-preset-sanitizer-BE4i0vEj.mjs → box-preset-sanitizer-DRi4Ayrn.mjs} +2 -2
  3. package/build/{box-preset-sanitizer-BE4i0vEj.mjs.map → box-preset-sanitizer-DRi4Ayrn.mjs.map} +1 -1
  4. package/build/enums-Ajt5avHN.mjs +488 -0
  5. package/build/enums-Ajt5avHN.mjs.map +1 -0
  6. package/build/enums-DCL82p1t.d.mts +66 -0
  7. package/build/enums-DCL82p1t.d.mts.map +1 -0
  8. package/build/{evolution-schemas-BGAv7bJJ.d.mts → evolution-schemas-DSBLBAnK.d.mts} +7 -7
  9. package/build/{evolution-schemas-BGAv7bJJ.d.mts.map → evolution-schemas-DSBLBAnK.d.mts.map} +1 -1
  10. package/build/{evolution-schemas-BZQILLSQ.mjs → evolution-schemas-Db7-jivr.mjs} +2 -2
  11. package/build/{evolution-schemas-BZQILLSQ.mjs.map → evolution-schemas-Db7-jivr.mjs.map} +1 -1
  12. package/build/form-schemas-BjyAMPZU.mjs +166 -0
  13. package/build/form-schemas-BjyAMPZU.mjs.map +1 -0
  14. package/build/form-schemas-Cy2ODtBA.d.mts +1407 -0
  15. package/build/form-schemas-Cy2ODtBA.d.mts.map +1 -0
  16. package/build/lib/availability-sources.mjs +1 -1
  17. package/build/lib/availability-sources.mjs.map +1 -1
  18. package/build/lib/box-preset-sanitizer.mjs +1 -1
  19. package/build/lib/box-preset-transform.mjs +2 -2
  20. package/build/lib/enums.d.mts +2 -2
  21. package/build/lib/enums.mjs +2 -2
  22. package/build/lib/evolution-schemas.d.mts +1 -1
  23. package/build/lib/evolution-schemas.mjs +1 -1
  24. package/build/lib/form-methods.d.mts +11 -0
  25. package/build/lib/form-methods.d.mts.map +1 -0
  26. package/build/lib/form-methods.mjs +56 -0
  27. package/build/lib/form-methods.mjs.map +1 -0
  28. package/build/lib/form-schemas.d.mts +2 -0
  29. package/build/lib/form-schemas.mjs +2 -0
  30. package/build/lib/fs.d.mts +4 -4
  31. package/build/lib/schemas.d.mts +4 -3
  32. package/build/lib/schemas.mjs +4 -3
  33. package/build/lib/types.d.mts +8 -3
  34. package/build/lib/types.d.mts.map +1 -1
  35. package/build/{schemas-30DCmCcg.mjs → schemas-Bl5_UJHu.mjs} +6 -4
  36. package/build/schemas-Bl5_UJHu.mjs.map +1 -0
  37. package/build/{schemas-D2xLu3LV.d.mts → schemas-CxAD9vC9.d.mts} +627 -49
  38. package/build/schemas-CxAD9vC9.d.mts.map +1 -0
  39. package/data/items.json +140 -0
  40. package/data/pokemon/abomasnow-mega.json +26 -1
  41. package/data/pokemon/absol-mega-z.json +18 -1
  42. package/data/pokemon/absol-mega.json +26 -1
  43. package/data/pokemon/aegislash-blade.json +66 -0
  44. package/data/pokemon/aerodactyl-mega.json +34 -1
  45. package/data/pokemon/aggron-mega.json +26 -1
  46. package/data/pokemon/alakazam-mega.json +34 -1
  47. package/data/pokemon/alcremie-gmax.json +76 -0
  48. package/data/pokemon/altaria-mega.json +26 -1
  49. package/data/pokemon/ampharos-mega.json +26 -1
  50. package/data/pokemon/appletun-gmax.json +12 -0
  51. package/data/pokemon/arceus-bug.json +145 -1
  52. package/data/pokemon/arceus-dark.json +145 -1
  53. package/data/pokemon/arceus-dragon.json +145 -1
  54. package/data/pokemon/arceus-electric.json +145 -1
  55. package/data/pokemon/arceus-fairy.json +121 -1
  56. package/data/pokemon/arceus-fighting.json +145 -1
  57. package/data/pokemon/arceus-fire.json +145 -1
  58. package/data/pokemon/arceus-flying.json +145 -1
  59. package/data/pokemon/arceus-ghost.json +145 -1
  60. package/data/pokemon/arceus-grass.json +145 -1
  61. package/data/pokemon/arceus-ground.json +145 -1
  62. package/data/pokemon/arceus-ice.json +145 -1
  63. package/data/pokemon/arceus-legendary.json +55 -1
  64. package/data/pokemon/arceus-poison.json +145 -1
  65. package/data/pokemon/arceus-psychic.json +145 -1
  66. package/data/pokemon/arceus-rock.json +145 -1
  67. package/data/pokemon/arceus-steel.json +145 -1
  68. package/data/pokemon/arceus-water.json +145 -1
  69. package/data/pokemon/arceus.json +263 -0
  70. package/data/pokemon/audino-mega.json +26 -1
  71. package/data/pokemon/banette-mega.json +26 -1
  72. package/data/pokemon/barbaracle-mega.json +18 -1
  73. package/data/pokemon/basculin-blue-striped.json +1 -0
  74. package/data/pokemon/baxcalibur-mega.json +18 -1
  75. package/data/pokemon/beedrill-mega.json +34 -1
  76. package/data/pokemon/blastoise-gmax.json +12 -0
  77. package/data/pokemon/blastoise-mega.json +34 -1
  78. package/data/pokemon/blaziken-mega.json +26 -1
  79. package/data/pokemon/burmy-sandy.json +95 -0
  80. package/data/pokemon/burmy-trash.json +52 -0
  81. package/data/pokemon/burmy.json +52 -0
  82. package/data/pokemon/butterfree-gmax.json +12 -0
  83. package/data/pokemon/calyrex-ice.json +18 -0
  84. package/data/pokemon/calyrex-shadow.json +18 -0
  85. package/data/pokemon/camerupt-mega.json +26 -1
  86. package/data/pokemon/castform-rainy.json +64 -0
  87. package/data/pokemon/castform-snowy.json +64 -0
  88. package/data/pokemon/castform-sunny.json +64 -0
  89. package/data/pokemon/centiskorch-gmax.json +12 -0
  90. package/data/pokemon/chandelure-mega.json +18 -1
  91. package/data/pokemon/charizard-gmax.json +12 -0
  92. package/data/pokemon/charizard-mega-x.json +34 -1
  93. package/data/pokemon/charizard-mega-y.json +34 -1
  94. package/data/pokemon/cherrim-sunshine.json +219 -0
  95. package/data/pokemon/chesnaught-mega.json +18 -1
  96. package/data/pokemon/chimecho-mega.json +18 -1
  97. package/data/pokemon/cinderace-gmax.json +12 -0
  98. package/data/pokemon/clefable-mega.json +18 -1
  99. package/data/pokemon/coalossal-gmax.json +12 -0
  100. package/data/pokemon/copperajah-gmax.json +12 -0
  101. package/data/pokemon/corviknight-gmax.json +12 -0
  102. package/data/pokemon/crabominable-mega.json +18 -1
  103. package/data/pokemon/cramorant-gorging.json +67 -0
  104. package/data/pokemon/cramorant-gulping.json +67 -0
  105. package/data/pokemon/darkrai-mega.json +18 -0
  106. package/data/pokemon/darmanitan-galar-zen.json +24 -0
  107. package/data/pokemon/darmanitan-zen.json +31 -0
  108. package/data/pokemon/deerling-autumn.json +47 -0
  109. package/data/pokemon/deerling-summer.json +36 -0
  110. package/data/pokemon/deerling-winter.json +47 -0
  111. package/data/pokemon/deerling.json +47 -0
  112. package/data/pokemon/delphox-mega.json +18 -1
  113. package/data/pokemon/deoxys-attack.json +90 -0
  114. package/data/pokemon/deoxys-defense.json +90 -0
  115. package/data/pokemon/deoxys-speed.json +90 -0
  116. package/data/pokemon/deoxys.json +117 -0
  117. package/data/pokemon/dialga-origin.json +40 -1
  118. package/data/pokemon/diancie-mega.json +26 -1
  119. package/data/pokemon/dragalge-mega.json +18 -1
  120. package/data/pokemon/dragonite-mega.json +18 -1
  121. package/data/pokemon/drampa-mega.json +18 -1
  122. package/data/pokemon/drednaw-gmax.json +12 -0
  123. package/data/pokemon/duraludon-gmax.json +12 -0
  124. package/data/pokemon/eelektross-mega.json +18 -1
  125. package/data/pokemon/eevee-gmax.json +12 -0
  126. package/data/pokemon/eiscue-noice.json +32 -0
  127. package/data/pokemon/emboar-mega.json +18 -1
  128. package/data/pokemon/empoleon.json +1 -0
  129. package/data/pokemon/enamorus-therian.json +16 -0
  130. package/data/pokemon/excadrill-mega.json +18 -1
  131. package/data/pokemon/falinks-mega.json +18 -1
  132. package/data/pokemon/feraligatr-mega.json +18 -1
  133. package/data/pokemon/flapple-gmax.json +12 -0
  134. package/data/pokemon/floette-eternal-mega.json +18 -1
  135. package/data/pokemon/froslass-mega.json +18 -1
  136. package/data/pokemon/furfrou-dandy.json +191 -0
  137. package/data/pokemon/furfrou-debutante.json +191 -0
  138. package/data/pokemon/furfrou-diamond.json +191 -0
  139. package/data/pokemon/furfrou-heart.json +191 -0
  140. package/data/pokemon/furfrou-kabuki.json +191 -0
  141. package/data/pokemon/furfrou-la-reine.json +191 -0
  142. package/data/pokemon/furfrou-matron.json +191 -0
  143. package/data/pokemon/furfrou-pharaoh.json +191 -0
  144. package/data/pokemon/furfrou-star.json +191 -0
  145. package/data/pokemon/furfrou.json +99 -0
  146. package/data/pokemon/gallade-mega.json +26 -1
  147. package/data/pokemon/garbodor-gmax.json +12 -0
  148. package/data/pokemon/garchomp-mega-z.json +18 -1
  149. package/data/pokemon/garchomp-mega.json +26 -1
  150. package/data/pokemon/gardevoir-mega.json +26 -1
  151. package/data/pokemon/genesect-burn.json +25 -1
  152. package/data/pokemon/genesect-chill.json +25 -1
  153. package/data/pokemon/genesect-douse.json +25 -1
  154. package/data/pokemon/genesect-shock.json +25 -1
  155. package/data/pokemon/genesect.json +29 -0
  156. package/data/pokemon/gengar-gmax.json +12 -0
  157. package/data/pokemon/gengar-mega.json +34 -1
  158. package/data/pokemon/gengar.json +1 -0
  159. package/data/pokemon/giratina-origin.json +118 -1
  160. package/data/pokemon/glalie-mega.json +26 -1
  161. package/data/pokemon/glimmora-mega.json +18 -1
  162. package/data/pokemon/golisopod-mega.json +18 -1
  163. package/data/pokemon/golurk-mega.json +18 -1
  164. package/data/pokemon/greninja-ash.json +25 -0
  165. package/data/pokemon/greninja-mega.json +18 -1
  166. package/data/pokemon/grimmsnarl-gmax.json +12 -0
  167. package/data/pokemon/groudon-primal.json +40 -0
  168. package/data/pokemon/gyarados-mega.json +34 -1
  169. package/data/pokemon/hatterene-gmax.json +12 -0
  170. package/data/pokemon/hawlucha-mega.json +18 -1
  171. package/data/pokemon/heatran-mega.json +18 -0
  172. package/data/pokemon/heracross-mega.json +26 -1
  173. package/data/pokemon/hoopa-unbound.json +60 -0
  174. package/data/pokemon/houndoom-mega.json +26 -1
  175. package/data/pokemon/inteleon-gmax.json +12 -0
  176. package/data/pokemon/kangaskhan-mega.json +34 -1
  177. package/data/pokemon/keldeo-resolute.json +92 -0
  178. package/data/pokemon/kingler-gmax.json +12 -0
  179. package/data/pokemon/kyogre-primal.json +40 -0
  180. package/data/pokemon/kyurem-black.json +33 -0
  181. package/data/pokemon/kyurem-white.json +33 -0
  182. package/data/pokemon/landorus-therian.json +32 -0
  183. package/data/pokemon/lapras-gmax.json +12 -0
  184. package/data/pokemon/latias-mega.json +26 -1
  185. package/data/pokemon/latios-mega.json +26 -1
  186. package/data/pokemon/lopunny-mega.json +26 -1
  187. package/data/pokemon/lucario-mega-z.json +18 -1
  188. package/data/pokemon/lucario-mega.json +26 -1
  189. package/data/pokemon/machamp-gmax.json +12 -0
  190. package/data/pokemon/magearna-mega.json +18 -1
  191. package/data/pokemon/magearna-original-mega.json +18 -1
  192. package/data/pokemon/malamar-mega.json +18 -1
  193. package/data/pokemon/manectric-mega.json +26 -1
  194. package/data/pokemon/mawile-mega.json +26 -1
  195. package/data/pokemon/mawile.json +0 -1
  196. package/data/pokemon/medicham-mega.json +26 -1
  197. package/data/pokemon/meganium-mega.json +18 -1
  198. package/data/pokemon/melmetal-gmax.json +12 -0
  199. package/data/pokemon/meloetta-pirouette.json +29 -0
  200. package/data/pokemon/meowstic-mega.json +18 -1
  201. package/data/pokemon/meowth-alola.json +2 -0
  202. package/data/pokemon/meowth-gmax.json +12 -0
  203. package/data/pokemon/metagross-mega.json +26 -1
  204. package/data/pokemon/mewtwo-mega-x.json +34 -1
  205. package/data/pokemon/mewtwo-mega-y.json +34 -1
  206. package/data/pokemon/mimikyu-busted.json +53 -0
  207. package/data/pokemon/minior-blue.json +53 -0
  208. package/data/pokemon/minior-green.json +53 -0
  209. package/data/pokemon/minior-indigo.json +53 -0
  210. package/data/pokemon/minior-orange.json +53 -0
  211. package/data/pokemon/minior-red.json +53 -0
  212. package/data/pokemon/minior-violet.json +53 -0
  213. package/data/pokemon/minior-yellow.json +53 -0
  214. package/data/pokemon/morpeko-hangry.json +57 -0
  215. package/data/pokemon/necrozma-dawn-wings.json +18 -0
  216. package/data/pokemon/necrozma-dusk-mane.json +18 -0
  217. package/data/pokemon/necrozma-ultra.json +21 -0
  218. package/data/pokemon/ogerpon-cornerstone.json +9 -1
  219. package/data/pokemon/ogerpon-hearthflame.json +9 -1
  220. package/data/pokemon/ogerpon-wellspring.json +9 -1
  221. package/data/pokemon/ogerpon.json +13 -0
  222. package/data/pokemon/orbeetle-gmax.json +12 -0
  223. package/data/pokemon/oricorio-pau.json +9 -0
  224. package/data/pokemon/oricorio-pom-pom.json +9 -0
  225. package/data/pokemon/oricorio-sensu.json +9 -0
  226. package/data/pokemon/oricorio.json +9 -0
  227. package/data/pokemon/palafin-hero.json +16 -0
  228. package/data/pokemon/palkia-origin.json +40 -1
  229. package/data/pokemon/persian-alola.json +2 -0
  230. package/data/pokemon/pidgeot-mega.json +34 -1
  231. package/data/pokemon/pikachu-gmax.json +12 -0
  232. package/data/pokemon/pinsir-mega.json +34 -1
  233. package/data/pokemon/piplup.json +1 -0
  234. package/data/pokemon/prinplup.json +1 -0
  235. package/data/pokemon/pyroar-mega.json +18 -1
  236. package/data/pokemon/raichu-mega-x.json +18 -1
  237. package/data/pokemon/raichu-mega-y.json +18 -1
  238. package/data/pokemon/rayquaza-mega.json +29 -0
  239. package/data/pokemon/rillaboom-gmax.json +12 -0
  240. package/data/pokemon/rotom-fan.json +94 -0
  241. package/data/pokemon/rotom-frost.json +94 -0
  242. package/data/pokemon/rotom-heat.json +94 -0
  243. package/data/pokemon/rotom-mow.json +94 -0
  244. package/data/pokemon/rotom-wash.json +94 -0
  245. package/data/pokemon/rotom.json +112 -0
  246. package/data/pokemon/sableye-mega.json +26 -1
  247. package/data/pokemon/salamence-mega.json +26 -1
  248. package/data/pokemon/sandaconda-gmax.json +12 -0
  249. package/data/pokemon/sawsbuck-autumn.json +47 -0
  250. package/data/pokemon/sawsbuck-summer.json +36 -0
  251. package/data/pokemon/sawsbuck-winter.json +47 -0
  252. package/data/pokemon/sawsbuck.json +47 -0
  253. package/data/pokemon/sceptile-mega.json +26 -1
  254. package/data/pokemon/scizor-mega.json +26 -1
  255. package/data/pokemon/scolipede-mega.json +18 -1
  256. package/data/pokemon/scolipede.json +1 -0
  257. package/data/pokemon/scovillain-mega.json +18 -1
  258. package/data/pokemon/scrafty-mega.json +18 -1
  259. package/data/pokemon/sharpedo-mega.json +26 -1
  260. package/data/pokemon/shaymin-sky.json +151 -0
  261. package/data/pokemon/shiftry-f.json +1 -0
  262. package/data/pokemon/shiftry.json +1 -0
  263. package/data/pokemon/silvally-bug.json +27 -1
  264. package/data/pokemon/silvally-dark.json +27 -1
  265. package/data/pokemon/silvally-dragon.json +27 -1
  266. package/data/pokemon/silvally-electric.json +27 -1
  267. package/data/pokemon/silvally-fairy.json +27 -1
  268. package/data/pokemon/silvally-fighting.json +27 -1
  269. package/data/pokemon/silvally-fire.json +27 -1
  270. package/data/pokemon/silvally-flying.json +27 -1
  271. package/data/pokemon/silvally-ghost.json +27 -1
  272. package/data/pokemon/silvally-grass.json +27 -1
  273. package/data/pokemon/silvally-ground.json +27 -1
  274. package/data/pokemon/silvally-ice.json +27 -1
  275. package/data/pokemon/silvally-poison.json +27 -1
  276. package/data/pokemon/silvally-psychic.json +27 -1
  277. package/data/pokemon/silvally-rock.json +27 -1
  278. package/data/pokemon/silvally-steel.json +27 -1
  279. package/data/pokemon/silvally-water.json +27 -1
  280. package/data/pokemon/silvally.json +50 -0
  281. package/data/pokemon/skarmory-mega.json +18 -1
  282. package/data/pokemon/slowbro-mega.json +34 -1
  283. package/data/pokemon/snorlax-gmax.json +12 -0
  284. package/data/pokemon/staraptor-mega.json +18 -0
  285. package/data/pokemon/starmie-mega.json +18 -1
  286. package/data/pokemon/steelix-mega.json +26 -1
  287. package/data/pokemon/swampert-mega.json +26 -1
  288. package/data/pokemon/tatsugiri-droopy-mega.json +18 -1
  289. package/data/pokemon/tatsugiri-mega.json +18 -1
  290. package/data/pokemon/tatsugiri-stretchy-mega.json +18 -1
  291. package/data/pokemon/terapagos-stellar.json +15 -0
  292. package/data/pokemon/terapagos-terastal.json +15 -0
  293. package/data/pokemon/thundurus-therian.json +32 -0
  294. package/data/pokemon/tornadus-therian.json +32 -0
  295. package/data/pokemon/toxtricity-gmax.json +12 -0
  296. package/data/pokemon/toxtricity-low-key-gmax.json +12 -0
  297. package/data/pokemon/tyranitar-mega.json +26 -1
  298. package/data/pokemon/urshifu-gmax.json +12 -0
  299. package/data/pokemon/urshifu-rapid-strike-gmax.json +12 -0
  300. package/data/pokemon/venipede.json +1 -0
  301. package/data/pokemon/venusaur-gmax.json +12 -0
  302. package/data/pokemon/venusaur-mega.json +34 -1
  303. package/data/pokemon/victreebel-mega.json +18 -1
  304. package/data/pokemon/whirlipede.json +1 -0
  305. package/data/pokemon/wishiwashi-school.json +24 -0
  306. package/data/pokemon/xerneas-active.json +11 -0
  307. package/data/pokemon/zacian-crowned.json +19 -1
  308. package/data/pokemon/zamazenta-crowned.json +19 -1
  309. package/data/pokemon/zeraora-mega.json +18 -1
  310. package/data/pokemon/zygarde-10.json +19 -0
  311. package/data/pokemon/zygarde-complete-mega.json +18 -1
  312. package/data/pokemon/zygarde-complete.json +36 -0
  313. package/data/pokemon/zygarde.json +33 -0
  314. package/package.json +4 -1
  315. package/build/enums-CXl-yCW7.mjs +0 -274
  316. package/build/enums-CXl-yCW7.mjs.map +0 -1
  317. package/build/enums-DNGH357y.d.mts +0 -43
  318. package/build/enums-DNGH357y.d.mts.map +0 -1
  319. package/build/schemas-30DCmCcg.mjs.map +0 -1
  320. package/build/schemas-D2xLu3LV.d.mts.map +0 -1
@@ -0,0 +1,66 @@
1
+ //#region src/lib/enums.d.ts
2
+ declare const gameType: readonly ["superset", "set", "game", "dlc"];
3
+ declare const gamePlatforms: readonly ["gb", "gbc", "gba", "nds", "3ds", "mobile", "ngc", "wii", "wiiu", "switch", "switch2"];
4
+ declare const gameSeries: readonly ["main", "spinoff", "storage", "legends"];
5
+ declare const itemCategory: readonly ["ball", "medicine", "battle", "berry", "machine", "megastone", "zcrystal", "treasure", "ingredient", "material", "key", "other"];
6
+ declare const pokeballCategory: readonly ["regular", "special", "hisuian", "other"];
7
+ declare const languageIds: readonly ["en", "es", "esla", "fr", "de", "it", "ja", "ko", "chs", "cht", "pt"];
8
+ declare const languageAlpha3Codes: readonly ["eng", "esp", "esla", "fra", "deu", "ita", "jap", "kor", "chs", "cht", "por"];
9
+ /**
10
+ * @deprecated use gameLocales from lib-next/languages
11
+ */
12
+ declare const languageInGameCodes: readonly ["ENG", "ES-ES", "ES-LA", "FRA", "DEU", "ITA", "JPN", "KOR", "CHT", "CHS", "PT-BR"];
13
+ declare const ribbonCategory: readonly ["league", "contest", "tower", "memory", "gift"];
14
+ declare const typeIds: readonly ["normal", "fire", "water", "electric", "grass", "ice", "fighting", "poison", "ground", "flying", "psychic", "bug", "rock", "ghost", "dragon", "dark", "steel", "fairy", "stellar"];
15
+ /** Category tags on abilities (data/abilities.json `tags`). */
16
+ declare const abilityTagIds: readonly ["alert", "ally-helper", "stat-boost", "move-boost", "bypass", "defense", "handicap", "heal", "items", "priority-control", "damage", "target-weaken", "status-trigger", "status-immunity", "steal", "weather", "terrain", "trap", "ability-change", "type-change", "species-specific", "other"];
17
+ declare const statIds: readonly ["hp", "atk", "def", "spa", "spd", "spe", "acc", "eva"];
18
+ declare const moveCategory: readonly ["physical", "special", "status"];
19
+ declare const genders: readonly ["m", "f"];
20
+ declare const titleTypes: readonly ["ribbon", "mark", "custom"];
21
+ declare const pokemonSizes: readonly ["xs", "s", "m", "l", "xl"];
22
+ declare const ivJudgeValues: readonly ["nogood", "decent", "good", "verygood", "fantastic", "best"];
23
+ declare const battleStyles: readonly ["singles", "doubles", "triples", "rotation", "royale"];
24
+ declare const raidStyles: readonly ["dynamax", "tera"];
25
+ /** Evolution vocabulary, also used by the evolution schemas. */
26
+ declare const evoTriggers: readonly ["level_up", "trade", "use_item", "special"];
27
+ declare const evoItemRoles: readonly ["held", "used", "bag"];
28
+ declare const evoActivations: readonly ["automatic", "manual"];
29
+ declare const evoConditionKeys: readonly ["friendship", "affection", "beauty", "gender", "time_of_day", "known_move", "known_move_type", "ability", "party_pokemon", "party_type", "trade_partner", "attack_defense_comparison", "overworld_weather", "location", "region", "device_upside_down", "union_circle", "walk_steps", "outside_poke_ball", "battle_experience", "use_move", "hit_with_move", "recoil_damage_without_fainting", "damage_without_fainting", "critical_hits_in_one_battle", "defeat_pokemon_holding_item", "spin", "hidden_value_branch", "nature", "spare_party_slot", "spare_poke_ball", "evolve_other", "full_moon", "interact_with_scroll", "vivillon_pattern", "candy"];
30
+ declare const evoGenders: readonly ["male", "female", "genderless"];
31
+ declare const evoTimesOfDay: readonly ["day", "night", "dusk"];
32
+ declare const evoStatComparisons: readonly ["lt", "eq", "gt"];
33
+ declare const evoWeather: readonly ["rain", "fog"];
34
+ declare const evoLocations: readonly ["magnetic_field", "moss_rock", "ice_rock", "mount_lanakila", "dusty_bowl_arch", "coulant_waterway_bridge"];
35
+ declare const evoRegionRelations: readonly ["in", "outside"];
36
+ declare const evoWalkModes: readonly ["lets_go"];
37
+ declare const evoMoveStyles: readonly ["agile", "strong"];
38
+ declare const evoSpinDirections: readonly ["clockwise", "counterclockwise", "either"];
39
+ declare const evoSpinComparisons: readonly ["lt", "gt"];
40
+ declare const evoScrolls: readonly ["darkness", "waters"];
41
+ /** Form transition vocabulary, also used by the form schemas. */
42
+ declare const formTriggers: readonly ["use_item", "equip_item", "remove_item", "learn_move", "forget_move", "use_move", "interact", "fuse", "separate", "automatic", "special"];
43
+ declare const formItemRoles: readonly ["held", "used", "bag"];
44
+ declare const formConditionKeys: readonly ["ability", "known_move", "move_used", "move_category", "time_of_day", "status", "fusion_partner", "interaction", "location", "environment", "season", "elapsed_time", "storage_event", "transfer", "battle_event", "original_form", "intrinsic_form", "spare_party_slot", "mechanic", "hp", "weather", "held_item_absent", "battle_condition"];
45
+ declare const formMoveRelations: readonly ["knows", "does_not_know"];
46
+ declare const formTimesOfDay: readonly ["morning", "day", "dusk", "evening", "night"];
47
+ declare const formStatuses: readonly ["frozen", "frostbite", "fainted"];
48
+ declare const formStatusRelations: readonly ["is", "not"];
49
+ declare const formInteractions: readonly ["contest_spectacular_ends", "deoxys_meteorite", "electric_fan", "enter_contest_spectacular", "enter_union_room", "enter_wifi_club", "furfrou_groom", "furfrou_restore_natural", "lawn_mower", "leave_distortion_world", "light_bulb", "load_game", "microwave_oven", "reassembly_unit", "recall_outside_battle", "refrigerator", "return_appliance", "washing_machine"];
50
+ declare const formLocations: readonly ["alabaster_icelands", "ambrette_fossil_lab_meteorites", "bell_tower", "burned_tower", "cobalt_coastlands", "coronet_highlands", "crimson_mirelands", "dalizapa_passage", "distortion_world", "east_province_area_one", "east_province_area_two", "friseur_furfrou", "glaseado_mountain", "hauoli_city_salon", "hokulani_observatory_meteorite", "jaune_sector_6", "jubilife_village", "jubilife_village_player_quarters", "kanto_route_3_meteorites", "malie_city_salon", "nacrene_museum_meteorite", "north_province_area_one", "obsidian_fieldlands", "professor_birchs_lab", "professor_cozmos_house_meteorite", "professor_kukuis_lab", "shopping_mall_nine_basement", "silph_co_rotom_room", "slateport_pokemon_fan_club", "socarrat_trail", "south_province_area_five", "south_province_area_four", "south_province_area_one", "sprout_tower", "sycamore_pokemon_lab", "team_galactic_eterna_building_rotom_room", "veilstone_city_meteorites", "west_province_area_three", "west_province_area_two"];
51
+ declare const formEnvironments: readonly ["building", "cave_or_beach", "outdoors_or_tall_grass", "outside_distortion_world", "snowstorm"];
52
+ declare const formSeasons: readonly ["spring", "summer", "autumn", "winter"];
53
+ declare const formTimeUnits: readonly ["turns", "days", "seconds"];
54
+ declare const formStorageEvents: readonly ["deposit", "withdrawal"];
55
+ declare const formStorageServices: readonly ["bank", "day_care", "home", "nursery", "pc"];
56
+ declare const formBattleEvents: readonly ["battle_start", "battle_end", "switch_in", "switch_out", "end_of_turn", "before_move", "after_move", "damaging_hit", "physical_hit", "faint"];
57
+ /** Event shorthand accepted by formMethods[].revert. */
58
+ declare const formRevertEvents: readonly ["battle_start", "battle_end", "switch_in", "switch_out", "end_of_turn", "before_move", "after_move", "damaging_hit", "physical_hit", "faint"];
59
+ declare const formMechanics: readonly ["change_a_move_other_than_secret_sword", "dynamax", "gigantamax", "in_party", "legend_plate", "mega_evolution", "not_holding_griseous_orb", "participated_in_battle", "terastallization", "ultra_burst"];
60
+ declare const formComparisons: readonly ["lt", "lte", "eq", "gte", "gt"];
61
+ declare const formWeather: readonly ["sun", "rain", "hail", "snow", "none"];
62
+ declare const formWeatherRelations: readonly ["in", "outside"];
63
+ declare const formBattleConditions: readonly ["ability_is_not_sheer_force", "at_least_40_additional_zygarde_cells", "battle_bond_not_previously_used", "battle_continues", "confusion_self_hit", "directly_knock_out_opponent", "disguise_not_bypassed", "forecast_suppressed_or_replaced", "gigantamax_factor", "hail_or_snow_begins", "ice_face_not_bypassed", "in_battle", "judgment_type_match", "legends_arceus_sunshine_conditions_ended", "mega_gauge_full", "mega_power_depleted", "move_affects_at_least_one_target", "move_deals_damage", "not_dynamaxed", "not_terastallized", "rayquaza_mega_eligible", "sunlight_effect_or_flower_gift_inactive", "ultra_burst_unused_by_trainer", "weather_effects_active", "weather_effects_negated", "zen_mode_suppressed_or_replaced"];
64
+ //#endregion
65
+ export { statIds as $, formStatusRelations as A, gameSeries as B, formInteractions as C, formMoveRelations as D, formMechanics as E, formTimesOfDay as F, languageAlpha3Codes as G, genders as H, formTriggers as I, moveCategory as J, languageIds as K, formWeather as L, formStorageEvents as M, formStorageServices as N, formRevertEvents as O, formTimeUnits as P, ribbonCategory as Q, formWeatherRelations as R, formEnvironments as S, formLocations as T, itemCategory as U, gameType as V, ivJudgeValues as W, pokemonSizes as X, pokeballCategory as Y, raidStyles as Z, evoWeather as _, evoGenders as a, formComparisons as b, evoMoveStyles as c, evoSpinComparisons as d, titleTypes as et, evoSpinDirections as f, evoWalkModes as g, evoTriggers as h, evoConditionKeys as i, formStatuses as j, formSeasons as k, evoRegionRelations as l, evoTimesOfDay as m, battleStyles as n, evoItemRoles as o, evoStatComparisons as p, languageInGameCodes as q, evoActivations as r, evoLocations as s, abilityTagIds as t, typeIds as tt, evoScrolls as u, formBattleConditions as v, formItemRoles as w, formConditionKeys as x, formBattleEvents as y, gamePlatforms as z };
66
+ //# sourceMappingURL=enums-DCL82p1t.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums-DCL82p1t.d.mts","names":[],"sources":["../src/lib/enums.ts"],"mappings":";cAAa;cACA;cAaA;cACA;cAcA;cACA;cAaA;;;;cAiBA;cAcA;cACA;;cAyBA;cAyBA;cACA;cACA;cACA;cACA;cAWA;cAEA;cACA;;cAGA;cACA;cACA;cACA;cAsCA;cACA;cACA;cACA;cACA;cAQA;cACA;cACA;cACA;cACA;cACA;;cAGA;cAaA;cACA;cAyBA;cACA;cACA;cACA;cACA;cAoBA;cAyCA;cAOA;cACA;cACA;cACA;cACA;;cAaA;cACA;cAYA;cACA;cACA;cACA"}
@@ -20,8 +20,8 @@ declare const evolutionConditionSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject
20
20
  key: z$1.ZodLiteral<"time_of_day">;
21
21
  time: z$1.ZodEnum<{
22
22
  day: "day";
23
- night: "night";
24
23
  dusk: "dusk";
24
+ night: "night";
25
25
  }>;
26
26
  }, z$1.core.$strict>, z$1.ZodObject<{
27
27
  key: z$1.ZodLiteral<"known_move">;
@@ -197,9 +197,9 @@ declare const evolutionMethodSchema: z$1.ZodObject<{
197
197
  games: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
198
198
  trigger: z$1.ZodEnum<{
199
199
  special: "special";
200
+ use_item: "use_item";
200
201
  level_up: "level_up";
201
202
  trade: "trade";
202
- use_item: "use_item";
203
203
  }>;
204
204
  minLevel: z$1.ZodOptional<z$1.ZodNumber>;
205
205
  item: z$1.ZodOptional<z$1.ZodObject<{
@@ -230,8 +230,8 @@ declare const evolutionMethodSchema: z$1.ZodObject<{
230
230
  key: z$1.ZodLiteral<"time_of_day">;
231
231
  time: z$1.ZodEnum<{
232
232
  day: "day";
233
- night: "night";
234
233
  dusk: "dusk";
234
+ night: "night";
235
235
  }>;
236
236
  }, z$1.core.$strict>, z$1.ZodObject<{
237
237
  key: z$1.ZodLiteral<"known_move">;
@@ -408,16 +408,16 @@ declare const evolutionMethodSchema: z$1.ZodObject<{
408
408
  manual: "manual";
409
409
  }>>;
410
410
  notes: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{
411
- esla: "esla";
412
- chs: "chs";
413
- cht: "cht";
414
411
  eng: "eng";
415
412
  esp: "esp";
413
+ esla: "esla";
416
414
  fra: "fra";
417
415
  deu: "deu";
418
416
  ita: "ita";
419
417
  jap: "jap";
420
418
  kor: "kor";
419
+ chs: "chs";
420
+ cht: "cht";
421
421
  por: "por";
422
422
  }> & z$1.core.$partial, z$1.ZodString>>;
423
423
  }, z$1.core.$strict>;
@@ -425,4 +425,4 @@ type EvolutionCondition = z$1.infer<typeof evolutionConditionSchema>;
425
425
  type EvolutionMethod = z$1.infer<typeof evolutionMethodSchema>;
426
426
  //#endregion
427
427
  export { evolutionMethodSchema as i, EvolutionMethod as n, evolutionConditionSchema as r, EvolutionCondition as t };
428
- //# sourceMappingURL=evolution-schemas-BGAv7bJJ.d.mts.map
428
+ //# sourceMappingURL=evolution-schemas-DSBLBAnK.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evolution-schemas-BGAv7bJJ.d.mts","names":[],"sources":["../src/lib/evolution-schemas.ts"],"mappings":";;;cAqCa,0BAAwB,IAAA,uBAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EnC,IAAA,KAAA;cAEW,uBAAqB,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4C9B,IAAA,KAAA;KAEQ,qBAAqB,IAAE,aAAa;KACpC,kBAAkB,IAAE,aAAa"}
1
+ {"version":3,"file":"evolution-schemas-DSBLBAnK.d.mts","names":[],"sources":["../src/lib/evolution-schemas.ts"],"mappings":";;;cAqCa,0BAAwB,IAAA,uBAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EnC,IAAA,KAAA;cAEW,uBAAqB,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4C9B,IAAA,KAAA;KAEQ,qBAAqB,IAAE,aAAa;KACpC,kBAAkB,IAAE,aAAa"}
@@ -1,4 +1,4 @@
1
- import { P as typeIds, _ as evoWeather, a as evoGenders, c as evoMoveStyles, d as evoSpinComparisons, f as evoSpinDirections, g as evoWalkModes, h as evoTriggers, i as evoConditionKeys, l as evoRegionRelations, m as evoTimesOfDay, o as evoItemRoles, p as evoStatComparisons, r as evoActivations, s as evoLocations, u as evoScrolls, w as languageAlpha3Codes } from "./enums-CXl-yCW7.mjs";
1
+ import { G as languageAlpha3Codes, _ as evoWeather, a as evoGenders, c as evoMoveStyles, d as evoSpinComparisons, f as evoSpinDirections, g as evoWalkModes, h as evoTriggers, i as evoConditionKeys, l as evoRegionRelations, m as evoTimesOfDay, o as evoItemRoles, p as evoStatComparisons, r as evoActivations, s as evoLocations, tt as typeIds, u as evoScrolls } from "./enums-Ajt5avHN.mjs";
2
2
  import { z as z$1 } from "zod";
3
3
  //#region src/lib/evolution-schemas.ts
4
4
  const id = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/);
@@ -179,4 +179,4 @@ const evolutionMethodSchema = z$1.strictObject({
179
179
  //#endregion
180
180
  export { evolutionMethodSchema as n, evolutionConditionSchema as t };
181
181
 
182
- //# sourceMappingURL=evolution-schemas-BZQILLSQ.mjs.map
182
+ //# sourceMappingURL=evolution-schemas-Db7-jivr.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"evolution-schemas-BZQILLSQ.mjs","names":["z"],"sources":["../src/lib/evolution-schemas.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n evoActivations,\n evoConditionKeys,\n evoGenders,\n evoItemRoles,\n evoLocations,\n evoMoveStyles,\n evoRegionRelations,\n evoScrolls,\n evoSpinComparisons,\n evoSpinDirections,\n evoStatComparisons,\n evoTimesOfDay,\n evoTriggers,\n evoWalkModes,\n evoWeather,\n languageAlpha3Codes,\n typeIds,\n} from './enums.ts'\n\nconst id = z\n .string()\n .min(1)\n .max(50)\n .regex(/^[a-z0-9-]+$/)\nconst ids = z\n .array(id)\n .min(1)\n .refine((values) => new Set(values).size === values.length, 'Duplicate IDs')\nconst count = z.number().int().positive()\nconst localizedText = z\n .partialRecord(z.enum(languageAlpha3Codes), z.string().min(1))\n .refine((text) => Object.values(text).some(Boolean), 'Provide at least one translation')\nconst conditionKey = z.enum(evoConditionKeys).enum\n\n/** Stable translation keys with validated parameters, not an executable expression language. */\nexport const evolutionConditionSchema = z.discriminatedUnion('key', [\n z.strictObject({ key: z.literal(conditionKey.friendship) }),\n z.strictObject({ key: z.literal(conditionKey.affection), minLevel: count }),\n z.strictObject({\n key: z.literal(conditionKey.beauty),\n minValue: z.number().int().min(0).max(255),\n }),\n z.strictObject({ key: z.literal(conditionKey.gender), gender: z.enum(evoGenders) }),\n z.strictObject({ key: z.literal(conditionKey.time_of_day), time: z.enum(evoTimesOfDay) }),\n z.strictObject({ key: z.literal(conditionKey.known_move), move: id }),\n z.strictObject({ key: z.literal(conditionKey.known_move_type), type: z.enum(typeIds) }),\n z.strictObject({ key: z.literal(conditionKey.ability), abilities: ids }),\n z.strictObject({ key: z.literal(conditionKey.party_pokemon), pokemon: id }),\n z.strictObject({ key: z.literal(conditionKey.party_type), type: z.enum(typeIds) }),\n z.strictObject({ key: z.literal(conditionKey.trade_partner), pokemon: id }),\n z.strictObject({\n key: z.literal(conditionKey.attack_defense_comparison),\n comparison: z.enum(evoStatComparisons),\n }),\n z.strictObject({\n key: z.literal(conditionKey.overworld_weather),\n weather: z.array(z.enum(evoWeather)).min(1),\n }),\n z.strictObject({\n key: z.literal(conditionKey.location),\n location: z.enum(evoLocations),\n }),\n z.strictObject({\n key: z.literal(conditionKey.region),\n region: id,\n relation: z.enum(evoRegionRelations),\n }),\n z.strictObject({ key: z.literal(conditionKey.device_upside_down) }),\n z.strictObject({ key: z.literal(conditionKey.union_circle) }),\n z.strictObject({ key: z.literal(conditionKey.walk_steps), count, mode: z.enum(evoWalkModes) }),\n z.strictObject({ key: z.literal(conditionKey.outside_poke_ball) }),\n z.strictObject({ key: z.literal(conditionKey.battle_experience) }),\n z.strictObject({\n key: z.literal(conditionKey.use_move),\n move: id,\n count,\n style: z.enum(evoMoveStyles).optional(),\n }),\n z.strictObject({ key: z.literal(conditionKey.hit_with_move), move: id, count }),\n z.strictObject({ key: z.literal(conditionKey.recoil_damage_without_fainting), amount: count }),\n z.strictObject({ key: z.literal(conditionKey.damage_without_fainting), amount: count }),\n z.strictObject({ key: z.literal(conditionKey.critical_hits_in_one_battle), count }),\n z.strictObject({\n key: z.literal(conditionKey.defeat_pokemon_holding_item),\n pokemon: id,\n item: id,\n count,\n }),\n z.strictObject({\n key: z.literal(conditionKey.spin),\n direction: z.enum(evoSpinDirections),\n seconds: z.number().positive(),\n comparison: z.enum(evoSpinComparisons),\n }),\n z.strictObject({\n key: z.literal(conditionKey.hidden_value_branch),\n percentage: z.number().positive().max(100),\n }),\n z.strictObject({ key: z.literal(conditionKey.nature), natures: ids }),\n z.strictObject({ key: z.literal(conditionKey.spare_party_slot) }),\n z.strictObject({ key: z.literal(conditionKey.spare_poke_ball) }),\n z.strictObject({ key: z.literal(conditionKey.evolve_other), pokemon: id }),\n z.strictObject({ key: z.literal(conditionKey.full_moon) }),\n z.strictObject({\n key: z.literal(conditionKey.interact_with_scroll),\n scroll: z.enum(evoScrolls),\n }),\n z.strictObject({ key: z.literal(conditionKey.vivillon_pattern), pattern: id }),\n z.strictObject({ key: z.literal(conditionKey.candy), pokemon: id, count }),\n])\n\nexport const evolutionMethodSchema = z\n .strictObject({\n // Alternatives between entries, conjunction within an entry; `from` is a choice of source forms.\n from: ids,\n games: ids.optional(),\n trigger: z.enum(evoTriggers),\n minLevel: z.number().int().min(1).max(100).optional(),\n item: z.strictObject({ id, role: z.enum(evoItemRoles), quantity: count.optional() }).optional(),\n conditions: z.array(evolutionConditionSchema),\n additionalResult: z.boolean().optional(),\n // PLA exposes an Evolve action instead of automatically evolving when requirements are met.\n activation: z.enum(evoActivations).optional(),\n notes: localizedText.optional(),\n })\n .superRefine((method, ctx) => {\n if (method.trigger === 'use_item' && method.item?.role !== 'used') {\n ctx.addIssue({\n code: 'custom',\n path: ['item'],\n message: 'Item-use methods require a used item',\n })\n }\n if (method.item?.role === 'used' && method.trigger !== 'use_item') {\n ctx.addIssue({\n code: 'custom',\n path: ['trigger'],\n message: 'Used items require the use_item trigger',\n })\n }\n if (method.trigger === 'special' && method.conditions.length === 0 && !method.notes) {\n ctx.addIssue({\n code: 'custom',\n path: ['conditions'],\n message: 'Special methods require a condition or explanatory note',\n })\n }\n const keys = method.conditions.map((condition) => condition.key)\n if (new Set(keys).size !== keys.length) {\n ctx.addIssue({\n code: 'custom',\n path: ['conditions'],\n message: 'Use one condition per key; separate alternatives into methods',\n })\n }\n })\n\nexport type EvolutionCondition = z.infer<typeof evolutionConditionSchema>\nexport type EvolutionMethod = z.infer<typeof evolutionMethodSchema>\n"],"mappings":"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"}
1
+ {"version":3,"file":"evolution-schemas-Db7-jivr.mjs","names":["z"],"sources":["../src/lib/evolution-schemas.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n evoActivations,\n evoConditionKeys,\n evoGenders,\n evoItemRoles,\n evoLocations,\n evoMoveStyles,\n evoRegionRelations,\n evoScrolls,\n evoSpinComparisons,\n evoSpinDirections,\n evoStatComparisons,\n evoTimesOfDay,\n evoTriggers,\n evoWalkModes,\n evoWeather,\n languageAlpha3Codes,\n typeIds,\n} from './enums.ts'\n\nconst id = z\n .string()\n .min(1)\n .max(50)\n .regex(/^[a-z0-9-]+$/)\nconst ids = z\n .array(id)\n .min(1)\n .refine((values) => new Set(values).size === values.length, 'Duplicate IDs')\nconst count = z.number().int().positive()\nconst localizedText = z\n .partialRecord(z.enum(languageAlpha3Codes), z.string().min(1))\n .refine((text) => Object.values(text).some(Boolean), 'Provide at least one translation')\nconst conditionKey = z.enum(evoConditionKeys).enum\n\n/** Stable translation keys with validated parameters, not an executable expression language. */\nexport const evolutionConditionSchema = z.discriminatedUnion('key', [\n z.strictObject({ key: z.literal(conditionKey.friendship) }),\n z.strictObject({ key: z.literal(conditionKey.affection), minLevel: count }),\n z.strictObject({\n key: z.literal(conditionKey.beauty),\n minValue: z.number().int().min(0).max(255),\n }),\n z.strictObject({ key: z.literal(conditionKey.gender), gender: z.enum(evoGenders) }),\n z.strictObject({ key: z.literal(conditionKey.time_of_day), time: z.enum(evoTimesOfDay) }),\n z.strictObject({ key: z.literal(conditionKey.known_move), move: id }),\n z.strictObject({ key: z.literal(conditionKey.known_move_type), type: z.enum(typeIds) }),\n z.strictObject({ key: z.literal(conditionKey.ability), abilities: ids }),\n z.strictObject({ key: z.literal(conditionKey.party_pokemon), pokemon: id }),\n z.strictObject({ key: z.literal(conditionKey.party_type), type: z.enum(typeIds) }),\n z.strictObject({ key: z.literal(conditionKey.trade_partner), pokemon: id }),\n z.strictObject({\n key: z.literal(conditionKey.attack_defense_comparison),\n comparison: z.enum(evoStatComparisons),\n }),\n z.strictObject({\n key: z.literal(conditionKey.overworld_weather),\n weather: z.array(z.enum(evoWeather)).min(1),\n }),\n z.strictObject({\n key: z.literal(conditionKey.location),\n location: z.enum(evoLocations),\n }),\n z.strictObject({\n key: z.literal(conditionKey.region),\n region: id,\n relation: z.enum(evoRegionRelations),\n }),\n z.strictObject({ key: z.literal(conditionKey.device_upside_down) }),\n z.strictObject({ key: z.literal(conditionKey.union_circle) }),\n z.strictObject({ key: z.literal(conditionKey.walk_steps), count, mode: z.enum(evoWalkModes) }),\n z.strictObject({ key: z.literal(conditionKey.outside_poke_ball) }),\n z.strictObject({ key: z.literal(conditionKey.battle_experience) }),\n z.strictObject({\n key: z.literal(conditionKey.use_move),\n move: id,\n count,\n style: z.enum(evoMoveStyles).optional(),\n }),\n z.strictObject({ key: z.literal(conditionKey.hit_with_move), move: id, count }),\n z.strictObject({ key: z.literal(conditionKey.recoil_damage_without_fainting), amount: count }),\n z.strictObject({ key: z.literal(conditionKey.damage_without_fainting), amount: count }),\n z.strictObject({ key: z.literal(conditionKey.critical_hits_in_one_battle), count }),\n z.strictObject({\n key: z.literal(conditionKey.defeat_pokemon_holding_item),\n pokemon: id,\n item: id,\n count,\n }),\n z.strictObject({\n key: z.literal(conditionKey.spin),\n direction: z.enum(evoSpinDirections),\n seconds: z.number().positive(),\n comparison: z.enum(evoSpinComparisons),\n }),\n z.strictObject({\n key: z.literal(conditionKey.hidden_value_branch),\n percentage: z.number().positive().max(100),\n }),\n z.strictObject({ key: z.literal(conditionKey.nature), natures: ids }),\n z.strictObject({ key: z.literal(conditionKey.spare_party_slot) }),\n z.strictObject({ key: z.literal(conditionKey.spare_poke_ball) }),\n z.strictObject({ key: z.literal(conditionKey.evolve_other), pokemon: id }),\n z.strictObject({ key: z.literal(conditionKey.full_moon) }),\n z.strictObject({\n key: z.literal(conditionKey.interact_with_scroll),\n scroll: z.enum(evoScrolls),\n }),\n z.strictObject({ key: z.literal(conditionKey.vivillon_pattern), pattern: id }),\n z.strictObject({ key: z.literal(conditionKey.candy), pokemon: id, count }),\n])\n\nexport const evolutionMethodSchema = z\n .strictObject({\n // Alternatives between entries, conjunction within an entry; `from` is a choice of source forms.\n from: ids,\n games: ids.optional(),\n trigger: z.enum(evoTriggers),\n minLevel: z.number().int().min(1).max(100).optional(),\n item: z.strictObject({ id, role: z.enum(evoItemRoles), quantity: count.optional() }).optional(),\n conditions: z.array(evolutionConditionSchema),\n additionalResult: z.boolean().optional(),\n // PLA exposes an Evolve action instead of automatically evolving when requirements are met.\n activation: z.enum(evoActivations).optional(),\n notes: localizedText.optional(),\n })\n .superRefine((method, ctx) => {\n if (method.trigger === 'use_item' && method.item?.role !== 'used') {\n ctx.addIssue({\n code: 'custom',\n path: ['item'],\n message: 'Item-use methods require a used item',\n })\n }\n if (method.item?.role === 'used' && method.trigger !== 'use_item') {\n ctx.addIssue({\n code: 'custom',\n path: ['trigger'],\n message: 'Used items require the use_item trigger',\n })\n }\n if (method.trigger === 'special' && method.conditions.length === 0 && !method.notes) {\n ctx.addIssue({\n code: 'custom',\n path: ['conditions'],\n message: 'Special methods require a condition or explanatory note',\n })\n }\n const keys = method.conditions.map((condition) => condition.key)\n if (new Set(keys).size !== keys.length) {\n ctx.addIssue({\n code: 'custom',\n path: ['conditions'],\n message: 'Use one condition per key; separate alternatives into methods',\n })\n }\n })\n\nexport type EvolutionCondition = z.infer<typeof evolutionConditionSchema>\nexport type EvolutionMethod = z.infer<typeof evolutionMethodSchema>\n"],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import { A as formStatusRelations, C as formInteractions, D as formMoveRelations, E as formMechanics, F as formTimesOfDay, G as languageAlpha3Codes, I as formTriggers, J as moveCategory, L as formWeather, M as formStorageEvents, N as formStorageServices, O as formRevertEvents, P as formTimeUnits, R as formWeatherRelations, S as formEnvironments, T as formLocations, b as formComparisons, j as formStatuses, k as formSeasons, v as formBattleConditions, w as formItemRoles, x as formConditionKeys, y as formBattleEvents } from "./enums-Ajt5avHN.mjs";
2
+ import { z as z$1 } from "zod";
3
+ //#region src/lib/form-schemas.ts
4
+ const id = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/);
5
+ const ids = z$1.array(id).min(1).refine((values) => new Set(values).size === values.length, "Duplicate IDs");
6
+ const key = z$1.enum(formConditionKeys).enum;
7
+ /** Requirements for a transition, with stable translation keys and typed parameters. */
8
+ const formConditionSchema = z$1.discriminatedUnion("key", [
9
+ z$1.strictObject({
10
+ key: z$1.literal(key.ability),
11
+ abilities: ids
12
+ }),
13
+ z$1.strictObject({
14
+ key: z$1.literal(key.known_move),
15
+ move: id,
16
+ relation: z$1.enum(formMoveRelations).optional()
17
+ }),
18
+ z$1.strictObject({
19
+ key: z$1.literal(key.move_used),
20
+ move: id
21
+ }),
22
+ z$1.strictObject({
23
+ key: z$1.literal(key.move_category),
24
+ categories: z$1.array(z$1.enum(moveCategory)).min(1)
25
+ }),
26
+ z$1.strictObject({
27
+ key: z$1.literal(key.time_of_day),
28
+ time: z$1.enum(formTimesOfDay)
29
+ }),
30
+ z$1.strictObject({
31
+ key: z$1.literal(key.status),
32
+ status: z$1.enum(formStatuses),
33
+ relation: z$1.enum(formStatusRelations)
34
+ }),
35
+ z$1.strictObject({
36
+ key: z$1.literal(key.fusion_partner),
37
+ pokemon: id
38
+ }),
39
+ z$1.strictObject({
40
+ key: z$1.literal(key.interaction),
41
+ interaction: z$1.enum(formInteractions)
42
+ }),
43
+ z$1.strictObject({
44
+ key: z$1.literal(key.location),
45
+ location: z$1.enum(formLocations)
46
+ }),
47
+ z$1.strictObject({
48
+ key: z$1.literal(key.environment),
49
+ environment: z$1.enum(formEnvironments)
50
+ }),
51
+ z$1.strictObject({
52
+ key: z$1.literal(key.season),
53
+ season: z$1.enum(formSeasons)
54
+ }),
55
+ z$1.strictObject({
56
+ key: z$1.literal(key.elapsed_time),
57
+ amount: z$1.number().positive(),
58
+ unit: z$1.enum(formTimeUnits)
59
+ }),
60
+ z$1.strictObject({
61
+ key: z$1.literal(key.storage_event),
62
+ event: z$1.enum(formStorageEvents),
63
+ service: z$1.enum(formStorageServices).optional()
64
+ }),
65
+ z$1.strictObject({
66
+ key: z$1.literal(key.transfer),
67
+ destination: id
68
+ }),
69
+ z$1.strictObject({
70
+ key: z$1.literal(key.battle_event),
71
+ events: z$1.array(z$1.enum(formBattleEvents)).min(1)
72
+ }),
73
+ z$1.strictObject({
74
+ key: z$1.literal(key.original_form),
75
+ forms: ids
76
+ }),
77
+ z$1.strictObject({
78
+ key: z$1.literal(key.intrinsic_form),
79
+ forms: ids
80
+ }),
81
+ z$1.strictObject({ key: z$1.literal(key.spare_party_slot) }),
82
+ z$1.strictObject({
83
+ key: z$1.literal(key.mechanic),
84
+ mechanic: z$1.enum(formMechanics)
85
+ }),
86
+ z$1.strictObject({
87
+ key: z$1.literal(key.hp),
88
+ comparison: z$1.enum(formComparisons),
89
+ percent: z$1.number().min(0).max(100)
90
+ }),
91
+ z$1.strictObject({
92
+ key: z$1.literal(key.weather),
93
+ weather: z$1.array(z$1.enum(formWeather)).min(1),
94
+ relation: z$1.enum(formWeatherRelations)
95
+ }),
96
+ z$1.strictObject({
97
+ key: z$1.literal(key.held_item_absent),
98
+ items: ids
99
+ }),
100
+ z$1.strictObject({
101
+ key: z$1.literal(key.battle_condition),
102
+ condition: z$1.enum(formBattleConditions)
103
+ })
104
+ ]);
105
+ const actionShape = {
106
+ trigger: z$1.enum(formTriggers),
107
+ minLevel: z$1.number().int().min(1).max(100).optional(),
108
+ item: z$1.strictObject({
109
+ id,
110
+ role: z$1.enum(formItemRoles),
111
+ consumed: z$1.boolean().optional()
112
+ }).optional(),
113
+ conditions: z$1.array(formConditionSchema),
114
+ notes: z$1.partialRecord(z$1.enum(languageAlpha3Codes), z$1.string().min(1)).refine((text) => Object.values(text).some(Boolean), "Provide at least one translation").optional()
115
+ };
116
+ function validateAction(method, ctx) {
117
+ const requiredRole = method.trigger === "use_item" ? "used" : method.trigger === "equip_item" ? "held" : void 0;
118
+ if (requiredRole && method.item?.role !== requiredRole) ctx.addIssue({
119
+ code: "custom",
120
+ path: ["item"],
121
+ message: `${method.trigger} requires a ${requiredRole} item`
122
+ });
123
+ if (method.item?.consumed && method.item.role !== "used") ctx.addIssue({
124
+ code: "custom",
125
+ path: ["item", "consumed"],
126
+ message: "Only used items can be consumed"
127
+ });
128
+ if (method.trigger === "fuse" && !method.conditions.some((condition) => condition.key === "fusion_partner")) ctx.addIssue({
129
+ code: "custom",
130
+ path: ["conditions"],
131
+ message: "Fusion requires a partner"
132
+ });
133
+ if (method.trigger === "special" && method.conditions.length === 0 && !method.notes) ctx.addIssue({
134
+ code: "custom",
135
+ path: ["conditions"],
136
+ message: "Special methods require a condition or explanatory note"
137
+ });
138
+ const conditions = method.conditions.map((condition) => JSON.stringify(condition));
139
+ if (new Set(conditions).size !== conditions.length) ctx.addIssue({
140
+ code: "custom",
141
+ path: ["conditions"],
142
+ message: "Duplicate condition"
143
+ });
144
+ }
145
+ z$1.strictObject(actionShape);
146
+ /** Missing games inherits the forward method; null explicitly retains unknown scope. */
147
+ const formRevertDetailSchema = z$1.strictObject({
148
+ to: id.optional(),
149
+ games: ids.nullable().optional(),
150
+ ...actionShape
151
+ }).superRefine(validateAction);
152
+ const formRevertSchema = z$1.union([
153
+ z$1.enum(formRevertEvents),
154
+ z$1.strictObject({ afterTurns: z$1.number().int().positive() }),
155
+ formRevertDetailSchema
156
+ ]);
157
+ const formMethodSchema = z$1.strictObject({
158
+ from: ids,
159
+ games: ids.optional(),
160
+ ...actionShape,
161
+ revert: z$1.array(formRevertSchema).min(1).optional()
162
+ }).superRefine(validateAction);
163
+ //#endregion
164
+ export { formRevertSchema as i, formMethodSchema as n, formRevertDetailSchema as r, formConditionSchema as t };
165
+
166
+ //# sourceMappingURL=form-schemas-BjyAMPZU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-schemas-BjyAMPZU.mjs","names":["z"],"sources":["../src/lib/form-schemas.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n formBattleConditions,\n formBattleEvents,\n formComparisons,\n formConditionKeys,\n formEnvironments,\n formInteractions,\n formItemRoles,\n formLocations,\n formMechanics,\n formMoveRelations,\n formRevertEvents,\n formSeasons,\n formStatusRelations,\n formStatuses,\n formStorageEvents,\n formStorageServices,\n formTimesOfDay,\n formTimeUnits,\n formTriggers,\n formWeather,\n formWeatherRelations,\n languageAlpha3Codes,\n moveCategory,\n} from './enums.ts'\n\nconst id = z\n .string()\n .min(1)\n .max(50)\n .regex(/^[a-z0-9-]+$/)\nconst ids = z\n .array(id)\n .min(1)\n .refine((values) => new Set(values).size === values.length, 'Duplicate IDs')\nconst key = z.enum(formConditionKeys).enum\n\n/** Requirements for a transition, with stable translation keys and typed parameters. */\nexport const formConditionSchema = z.discriminatedUnion('key', [\n z.strictObject({ key: z.literal(key.ability), abilities: ids }),\n z.strictObject({\n key: z.literal(key.known_move),\n move: id,\n relation: z.enum(formMoveRelations).optional(),\n }),\n z.strictObject({ key: z.literal(key.move_used), move: id }),\n z.strictObject({\n key: z.literal(key.move_category),\n categories: z.array(z.enum(moveCategory)).min(1),\n }),\n z.strictObject({ key: z.literal(key.time_of_day), time: z.enum(formTimesOfDay) }),\n z.strictObject({\n key: z.literal(key.status),\n status: z.enum(formStatuses),\n relation: z.enum(formStatusRelations),\n }),\n z.strictObject({ key: z.literal(key.fusion_partner), pokemon: id }),\n z.strictObject({ key: z.literal(key.interaction), interaction: z.enum(formInteractions) }),\n z.strictObject({ key: z.literal(key.location), location: z.enum(formLocations) }),\n z.strictObject({ key: z.literal(key.environment), environment: z.enum(formEnvironments) }),\n z.strictObject({ key: z.literal(key.season), season: z.enum(formSeasons) }),\n z.strictObject({\n key: z.literal(key.elapsed_time),\n amount: z.number().positive(),\n unit: z.enum(formTimeUnits),\n }),\n z.strictObject({\n key: z.literal(key.storage_event),\n event: z.enum(formStorageEvents),\n service: z.enum(formStorageServices).optional(),\n }),\n z.strictObject({ key: z.literal(key.transfer), destination: id }),\n z.strictObject({\n key: z.literal(key.battle_event),\n events: z.array(z.enum(formBattleEvents)).min(1),\n }),\n z.strictObject({ key: z.literal(key.original_form), forms: ids }),\n z.strictObject({ key: z.literal(key.intrinsic_form), forms: ids }),\n z.strictObject({ key: z.literal(key.spare_party_slot) }),\n z.strictObject({ key: z.literal(key.mechanic), mechanic: z.enum(formMechanics) }),\n z.strictObject({\n key: z.literal(key.hp),\n comparison: z.enum(formComparisons),\n percent: z.number().min(0).max(100),\n }),\n z.strictObject({\n key: z.literal(key.weather),\n weather: z.array(z.enum(formWeather)).min(1),\n relation: z.enum(formWeatherRelations),\n }),\n z.strictObject({ key: z.literal(key.held_item_absent), items: ids }),\n z.strictObject({ key: z.literal(key.battle_condition), condition: z.enum(formBattleConditions) }),\n])\n\nconst actionShape = {\n trigger: z.enum(formTriggers),\n minLevel: z.number().int().min(1).max(100).optional(),\n item: z\n .strictObject({ id, role: z.enum(formItemRoles), consumed: z.boolean().optional() })\n .optional(),\n conditions: z.array(formConditionSchema),\n notes: z\n .partialRecord(z.enum(languageAlpha3Codes), z.string().min(1))\n .refine((text) => Object.values(text).some(Boolean), 'Provide at least one translation')\n .optional(),\n}\n\nfunction validateAction(method: z.infer<typeof formActionSchema>, ctx: z.RefinementCtx) {\n const requiredRole =\n method.trigger === 'use_item' ? 'used' : method.trigger === 'equip_item' ? 'held' : undefined\n if (requiredRole && method.item?.role !== requiredRole) {\n ctx.addIssue({\n code: 'custom',\n path: ['item'],\n message: `${method.trigger} requires a ${requiredRole} item`,\n })\n }\n if (method.item?.consumed && method.item.role !== 'used') {\n ctx.addIssue({\n code: 'custom',\n path: ['item', 'consumed'],\n message: 'Only used items can be consumed',\n })\n }\n if (\n method.trigger === 'fuse' &&\n !method.conditions.some((condition) => condition.key === 'fusion_partner')\n ) {\n ctx.addIssue({ code: 'custom', path: ['conditions'], message: 'Fusion requires a partner' })\n }\n if (method.trigger === 'special' && method.conditions.length === 0 && !method.notes) {\n ctx.addIssue({\n code: 'custom',\n path: ['conditions'],\n message: 'Special methods require a condition or explanatory note',\n })\n }\n const conditions = method.conditions.map((condition) => JSON.stringify(condition))\n if (new Set(conditions).size !== conditions.length) {\n ctx.addIssue({ code: 'custom', path: ['conditions'], message: 'Duplicate condition' })\n }\n}\n\nconst formActionSchema = z.strictObject(actionShape)\n\n/** Missing games inherits the forward method; null explicitly retains unknown scope. */\nexport const formRevertDetailSchema = z\n .strictObject({\n to: id.optional(),\n games: ids.nullable().optional(),\n ...actionShape,\n })\n .superRefine(validateAction)\n\nexport const formRevertSchema = z.union([\n z.enum(formRevertEvents),\n z.strictObject({ afterTurns: z.number().int().positive() }),\n formRevertDetailSchema,\n])\n\nexport const formMethodSchema = z\n .strictObject({\n from: ids,\n games: ids.optional(),\n ...actionShape,\n revert: z.array(formRevertSchema).min(1).optional(),\n })\n .superRefine(validateAction)\n\nexport type FormCondition = z.infer<typeof formConditionSchema>\nexport type FormRevertDetail = z.infer<typeof formRevertDetailSchema>\nexport type FormRevert = z.infer<typeof formRevertSchema>\nexport type FormMethod = z.infer<typeof formMethodSchema>\n"],"mappings":"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"}