@pokepc/dataset 6.6.0 → 6.7.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.
- package/build/{box-preset-sanitizer-GjGde3eW.mjs → box-preset-sanitizer-DHGv5TJj.mjs} +2 -2
- package/build/{box-preset-sanitizer-GjGde3eW.mjs.map → box-preset-sanitizer-DHGv5TJj.mjs.map} +1 -1
- package/build/box-preset-sanitizer-kg68JZPB.d.mts.map +1 -1
- package/build/{build-DeFbpXmN.mjs → build-DvGzwIK8.mjs} +74 -17
- package/build/build-DvGzwIK8.mjs.map +1 -0
- package/build/{build-GIV09lTc.mjs → build-bE_0_-0H.mjs} +4 -10
- package/build/{build-GIV09lTc.mjs.map → build-bE_0_-0H.mjs.map} +1 -1
- package/build/enums-CCbmORM6.d.mts.map +1 -1
- package/build/lib/box-preset-sanitizer.mjs +1 -1
- package/build/lib/box-preset-transform.d.mts +4 -6
- package/build/lib/box-preset-transform.d.mts.map +1 -1
- package/build/lib/box-preset-transform.mjs +2 -2
- package/build/lib/constants.d.mts +3 -4
- package/build/lib/constants.d.mts.map +1 -1
- package/build/lib/fs.d.mts +48 -49
- package/build/lib/fs.d.mts.map +1 -1
- package/build/lib/fs.mjs +3 -3
- package/build/lib/fs.mjs.map +1 -1
- package/build/lib/languages.d.mts +11 -12
- package/build/lib/languages.d.mts.map +1 -1
- package/build/lib/schemas.d.mts +1 -1
- package/build/lib/schemas.mjs +1 -1
- package/build/lib/search.d.mts +2 -3
- package/build/lib/search.d.mts.map +1 -1
- package/build/lib/search.mjs.map +1 -1
- package/build/lib/types.d.mts +34 -34
- package/build/lib/types.d.mts.map +1 -1
- package/build/lib/utils.d.mts +16 -17
- package/build/lib/utils.d.mts.map +1 -1
- package/build/lib/validators.d.mts +1 -1
- package/build/lib-next/_build.d.mts +1 -1
- package/build/lib-next/_build.mjs +2 -2
- package/build/lib-next/enums.d.mts +41 -42
- package/build/lib-next/enums.d.mts.map +1 -1
- package/build/lib-next/fs.d.mts +3 -4
- package/build/lib-next/fs.d.mts.map +1 -1
- package/build/lib-next/languages.d.mts +17 -18
- package/build/lib-next/languages.d.mts.map +1 -1
- package/build/lib-next/schemas.d.mts +222 -224
- package/build/lib-next/schemas.d.mts.map +1 -1
- package/build/lib-next/schemas.mjs +1 -1
- package/build/schemas-Bj1AIX0P.mjs +93 -0
- package/build/schemas-Bj1AIX0P.mjs.map +1 -0
- package/build/schemas-CDSWgtoj.d.mts +804 -0
- package/build/schemas-CDSWgtoj.d.mts.map +1 -0
- package/build/schemas-CcUqoHNr.mjs +349 -0
- package/build/schemas-CcUqoHNr.mjs.map +1 -0
- package/build/utils-BwovRocd.mjs.map +1 -1
- package/data/abilities.json +9 -0
- package/data/games/champions.json +5 -1
- package/data/indices/pokedexes.json +2 -1
- package/data/pokedexes/champions-regular-roster-m-b.json +3 -0
- package/data/pokedexes/champions-regular-roster-m-c.json +490 -0
- package/data/pokemon/absol-mega-z.json +1 -3
- package/data/pokemon/arboliva.json +1 -1
- package/data/pokemon/baxcalibur-mega.json +0 -1
- package/data/pokemon/baxcalibur.json +1 -1
- package/data/pokemon/cinderace.json +1 -1
- package/data/pokemon/farfetchd.json +2 -1
- package/data/pokemon/garchomp-mega-z.json +2 -2
- package/data/pokemon/gogoat.json +2 -1
- package/data/pokemon/golisopod-mega.json +1 -1
- package/data/pokemon/golisopod.json +12 -1
- package/data/pokemon/grapploct.json +1 -1
- package/data/pokemon/indeedee-f.json +1 -1
- package/data/pokemon/indeedee.json +1 -1
- package/data/pokemon/inteleon.json +1 -1
- package/data/pokemon/lucario-mega-z.json +1 -3
- package/data/pokemon/mabosstiff.json +1 -1
- package/data/pokemon/mrmime.json +2 -1
- package/data/pokemon/pawmot.json +1 -1
- package/data/pokemon/perrserker.json +1 -1
- package/data/pokemon/persian-alola.json +2 -1
- package/data/pokemon/persian.json +2 -1
- package/data/pokemon/pincurchin.json +1 -1
- package/data/pokemon/pyroar-f.json +7 -2
- package/data/pokemon/pyroar.json +2 -1
- package/data/pokemon/rillaboom.json +1 -1
- package/data/pokemon/salamence.json +2 -1
- package/data/pokemon/sirfetchd.json +1 -1
- package/data/pokemon/squawkabilly-blue.json +1 -1
- package/data/pokemon/squawkabilly-white.json +1 -1
- package/data/pokemon/squawkabilly-yellow.json +1 -1
- package/data/pokemon/squawkabilly.json +6 -2
- package/data/pokemon/swalot-f.json +7 -2
- package/data/pokemon/swalot.json +2 -1
- package/data/pokemon/thievul.json +1 -1
- package/data/pokemon/toxtricity-low-key.json +1 -1
- package/data/pokemon/toxtricity.json +1 -1
- package/data/pokemon/wigglytuff.json +2 -1
- package/data-next/champions/abilities.json +8 -0
- package/data-next/champions/i18n/chs/abilities.json +7 -0
- package/data-next/champions/i18n/cht/abilities.json +7 -0
- package/data-next/champions/i18n/deu/abilities.json +7 -0
- package/data-next/champions/i18n/eng/abilities.json +7 -0
- package/data-next/champions/i18n/es-es/abilities.json +7 -0
- package/data-next/champions/i18n/es-la/abilities.json +7 -0
- package/data-next/champions/i18n/fra/abilities.json +7 -0
- package/data-next/champions/i18n/ita/abilities.json +7 -0
- package/data-next/champions/i18n/jpn/abilities.json +7 -0
- package/data-next/champions/i18n/kor/abilities.json +7 -0
- package/data-next/champions/i18n/pt-br/abilities.json +7 -0
- package/data-next/champions/moves.json +1 -0
- package/package.json +10 -10
- package/build/build-DeFbpXmN.mjs.map +0 -1
- package/build/schemas-B4fI9u0f.mjs +0 -93
- package/build/schemas-B4fI9u0f.mjs.map +0 -1
- package/build/schemas-CiojUbKN.d.mts +0 -805
- package/build/schemas-CiojUbKN.d.mts.map +0 -1
- package/build/schemas-Dt7FbAMy.mjs +0 -349
- package/build/schemas-Dt7FbAMy.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas-CDSWgtoj.d.mts","names":[],"sources":["../src/lib/schemas.ts"],"mappings":";;cAkEa,gBAAc,IAAA,UAAA,IAAA;;;;;;;;;;;;IAA+D,IAAA,YAAA,IAAA;cAE7E,eAAa,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIxB,IAAA,KAAA;cACW,mBAAiB,IAAA;;;GAI5B,IAAA,KAAA;cACW,iBAAe,IAAA;;;GAE1B,IAAA,KAAA;cACW,aAAW,IAAA;;;;GAEtB,IAAA,KAAA;cACW,oBAAkB,IAAA;;;;;;;;;;;;;;;;;;;;;;;GAuB7B,IAAA,KAAA;cACW,sBAAoB,IAAA;;;;;;;;;;;;;;;;GAO/B,IAAA,KAAA;cACW,YAAU,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoBrB,IAAA,KAAA;cACW,kBAAgB,IAAA;;;;GAI3B,IAAA,KAAA;cACW,YAAU,IAAA;;;;;;;;;;;;;;;;;;;;;;GAIrB,IAAA,KAAA;cACW,gBAAc,IAAA;;;;;;;;;;;;;GAGzB,IAAA,KAAA;cACW,gBAAc,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GASzB,IAAA,KAAA;cACW,YAAU,IAAA;;;;;;;;;;GAMrB,IAAA,KAAA;cACW,cAAY,IAAA;;;;;;;;;;;;;;GAIvB,IAAA,KAAA;cACW,kBAAgB,IAAA;;;GAAc,IAAA,KAAA;cAC9B,cAAY,IAAA;;;GAAc,IAAA,KAAA;cAC1B,YAAU,IAAA;;;;;GAGrB,IAAA,KAAA;cACW,cAAY,IAAA;;;;;;;;;;;;;;;;;;;;;;;GAGvB,IAAA,KAAA;cACW,YAAU,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GASrB,IAAA,KAAA;cAEW,oBAAkB,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuB7B,IAAA,KAAA;cAEW,eAAa,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUxB,IAAA,KAAA;cAEW,mBAAiB,IAAA;;;;;;;;;GAS5B,IAAA,KAAA;cAEW,eAAa,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFxB,IAAA,KAAA;cAIW,0BAAwB,IAAA;;;;;;GAQ1B,IAAA,KAAA;cAEE,2BAAyB,IAAA,UAAA,IAAA,YAAA,IAAA,YAAA,IAAA;;;;;GAOrC,IAAA,KAAA;cAEY,oBAAkB,IAAA;;;;;;;;GAG7B,IAAA,KAAA;cAEW,iBAAe,IAAA;;;;;;;;;;;;;;;;;GAS1B,IAAA,KAAA;cAEW,oBAAkB,IAAA,UAAA,IAAA,WAAA,IAAA,UAAA,IAAA,WAAA,IAAA;;;;;;;;;;;;;;;;;GAA8D,IAAA,KAAA;cAEhF;cAUA,4BAA0B,IAAA,SAAA,IAAA;cAE1B,2BAAyB,IAAA,UAAA,IAAA,YAAA,IAAA,YAAA,IAAA;;;;;GASrC,IAAA,KAAA;cAEY,0BAAwB,IAAA;;;;;;;;GAK1B,IAAA,KAAA;cAEE,uBAAqB,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoBvB,IAAA,KAAA;cAEE,2BAAyB,IAAA;;;;;;;;GASpC,IAAA,KAAA"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import "./constants-DIbIOAZB.mjs";
|
|
2
|
+
import { _ as statIds, a as gameType, d as languageInGameCodes, f as moveCategory, g as ribbonCategory, h as raidStyles, i as gameSeries, l as languageAlpha3Codes, n as battleStyles, o as genders, p as pokeballCategory, r as gamePlatforms, s as itemCategory, t as abilityTagIds, u as languageIds, y as typeIds } from "./enums-B7t9bSel.mjs";
|
|
3
|
+
import { z as z$1 } from "zod";
|
|
4
|
+
//#region src/lib/schemas.ts
|
|
5
|
+
const common = {
|
|
6
|
+
name: z$1.string().max(50),
|
|
7
|
+
gen: z$1.coerce.number().int().min(0).max(10),
|
|
8
|
+
slug: z$1.string().max(50).regex(/^[a-z0-9-]+$/),
|
|
9
|
+
desc: z$1.string().max(2e3).nullable(),
|
|
10
|
+
shortDesc: z$1.string().max(200),
|
|
11
|
+
colorHex: z$1.string().regex(/^#[0-9a-f]{6}$/i),
|
|
12
|
+
dateDay: z$1.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
13
|
+
statId: z$1.enum(statIds),
|
|
14
|
+
typeId: z$1.enum(typeIds),
|
|
15
|
+
int: z$1.coerce.number().int(),
|
|
16
|
+
dexNum: z$1.union([z$1.string().regex(/^\d{1,5}$/), z$1.coerce.number().int().min(0).max(99999)]),
|
|
17
|
+
level: z$1.coerce.number().int().min(1).max(100),
|
|
18
|
+
statValue: z$1.coerce.number().int().min(-1).max(255)
|
|
19
|
+
};
|
|
20
|
+
const base = {
|
|
21
|
+
entity: z$1.object({
|
|
22
|
+
id: common.slug,
|
|
23
|
+
name: common.name
|
|
24
|
+
}),
|
|
25
|
+
entityWithGenAndDescs: z$1.object({
|
|
26
|
+
id: common.slug,
|
|
27
|
+
name: common.name,
|
|
28
|
+
gen: common.gen,
|
|
29
|
+
shortDesc: common.shortDesc,
|
|
30
|
+
desc: common.desc
|
|
31
|
+
}),
|
|
32
|
+
entityWithGenAndDescsAndShowdownName: z$1.object({
|
|
33
|
+
id: common.slug,
|
|
34
|
+
name: common.name,
|
|
35
|
+
psName: common.name,
|
|
36
|
+
gen: common.gen,
|
|
37
|
+
shortDesc: common.shortDesc,
|
|
38
|
+
desc: common.desc
|
|
39
|
+
})
|
|
40
|
+
};
|
|
41
|
+
const i18nTextSchema = z$1.record(z$1.enum(languageAlpha3Codes), z$1.string().optional());
|
|
42
|
+
const abilitySchema = base.entityWithGenAndDescsAndShowdownName.extend({
|
|
43
|
+
tags: z$1.array(z$1.enum(abilityTagIds)).min(1),
|
|
44
|
+
immunities: z$1.array(common.typeId).optional(),
|
|
45
|
+
weaknesses: z$1.array(common.typeId).optional()
|
|
46
|
+
});
|
|
47
|
+
const personalitySchema = z$1.object({
|
|
48
|
+
id: common.slug,
|
|
49
|
+
shortDesc: common.shortDesc
|
|
50
|
+
});
|
|
51
|
+
const characterSchema = base.entity.extend({});
|
|
52
|
+
const colorSchema = base.entity.extend({ color: common.colorHex });
|
|
53
|
+
const gameFeaturesSchema = z$1.object({
|
|
54
|
+
storage: z$1.boolean(),
|
|
55
|
+
pokedex: z$1.boolean(),
|
|
56
|
+
training: z$1.boolean(),
|
|
57
|
+
shiny: z$1.boolean(),
|
|
58
|
+
items: z$1.boolean(),
|
|
59
|
+
gender: z$1.boolean(),
|
|
60
|
+
pokerus: z$1.boolean(),
|
|
61
|
+
nature: z$1.boolean(),
|
|
62
|
+
ribbons: z$1.boolean(),
|
|
63
|
+
marks: z$1.boolean(),
|
|
64
|
+
markings: z$1.boolean(),
|
|
65
|
+
shadow: z$1.boolean(),
|
|
66
|
+
ball: z$1.boolean(),
|
|
67
|
+
mega: z$1.boolean(),
|
|
68
|
+
zmove: z$1.boolean(),
|
|
69
|
+
gmax: z$1.boolean(),
|
|
70
|
+
alpha: z$1.boolean(),
|
|
71
|
+
tera: z$1.boolean(),
|
|
72
|
+
plusmvs: z$1.boolean(),
|
|
73
|
+
mints: z$1.boolean(),
|
|
74
|
+
sizes: z$1.boolean(),
|
|
75
|
+
abilities: z$1.boolean()
|
|
76
|
+
});
|
|
77
|
+
const onlineFeaturesSchema = z$1.object({
|
|
78
|
+
battles: z$1.boolean(),
|
|
79
|
+
battleStyles: z$1.array(z$1.enum(battleStyles)),
|
|
80
|
+
trades: z$1.boolean(),
|
|
81
|
+
raids: z$1.boolean(),
|
|
82
|
+
raidStyles: z$1.array(z$1.enum(raidStyles)),
|
|
83
|
+
coop: z$1.boolean()
|
|
84
|
+
});
|
|
85
|
+
const gameSchema = base.entity.extend({
|
|
86
|
+
gen: common.gen,
|
|
87
|
+
nameSlug: common.slug,
|
|
88
|
+
codename: common.name.nullable(),
|
|
89
|
+
type: z$1.enum(gameType),
|
|
90
|
+
series: z$1.enum(gameSeries),
|
|
91
|
+
gameSet: common.slug.nullable(),
|
|
92
|
+
gameSuperSet: common.slug.nullable(),
|
|
93
|
+
releaseDate: common.dateDay,
|
|
94
|
+
region: common.slug.nullable(),
|
|
95
|
+
originMark: common.slug.nullable(),
|
|
96
|
+
pokedexes: z$1.array(common.slug),
|
|
97
|
+
maxBoxes: common.int,
|
|
98
|
+
maxBoxSize: common.int,
|
|
99
|
+
platforms: z$1.array(z$1.enum(gamePlatforms)).min(1),
|
|
100
|
+
isUnreleased: z$1.coerce.boolean().optional(),
|
|
101
|
+
features: gameFeaturesSchema,
|
|
102
|
+
onlineFeatures: onlineFeaturesSchema.optional()
|
|
103
|
+
});
|
|
104
|
+
const generationSchema = z$1.object({
|
|
105
|
+
id: common.int,
|
|
106
|
+
minDexNum: common.int,
|
|
107
|
+
maxDexNum: common.int
|
|
108
|
+
});
|
|
109
|
+
const itemSchema = base.entityWithGenAndDescsAndShowdownName.extend({
|
|
110
|
+
category: z$1.enum(itemCategory),
|
|
111
|
+
unholdable: z$1.coerce.boolean().optional()
|
|
112
|
+
});
|
|
113
|
+
const pokeballSchema = base.entityWithGenAndDescs.extend({
|
|
114
|
+
category: z$1.enum(pokeballCategory),
|
|
115
|
+
unusable: z$1.coerce.boolean().optional()
|
|
116
|
+
});
|
|
117
|
+
const languageSchema = base.entity.extend({
|
|
118
|
+
id: z$1.enum(languageIds),
|
|
119
|
+
name: z$1.string(),
|
|
120
|
+
nameEng: z$1.string(),
|
|
121
|
+
alpha3: z$1.enum(languageAlpha3Codes),
|
|
122
|
+
inGameCode: z$1.enum(languageInGameCodes),
|
|
123
|
+
locale: z$1.string(),
|
|
124
|
+
flag: z$1.string(),
|
|
125
|
+
pkApiId: z$1.string().nullable()
|
|
126
|
+
});
|
|
127
|
+
const markSchema = base.entityWithGenAndDescs.extend({
|
|
128
|
+
title: common.shortDesc,
|
|
129
|
+
conditions: common.shortDesc,
|
|
130
|
+
chance: z$1.string(),
|
|
131
|
+
chanceCharm: z$1.string()
|
|
132
|
+
});
|
|
133
|
+
const ribbonSchema = base.entityWithGenAndDescs.extend({
|
|
134
|
+
title: common.shortDesc,
|
|
135
|
+
category: z$1.enum(ribbonCategory)
|
|
136
|
+
});
|
|
137
|
+
const originMarkSchema = base.entity;
|
|
138
|
+
const regionSchema = base.entity;
|
|
139
|
+
const typeSchema = base.entity.extend({
|
|
140
|
+
color: common.colorHex,
|
|
141
|
+
isCanonical: z$1.boolean()
|
|
142
|
+
});
|
|
143
|
+
const natureSchema = base.entity.extend({
|
|
144
|
+
raises: common.statId.nullable(),
|
|
145
|
+
lowers: common.statId.nullable()
|
|
146
|
+
});
|
|
147
|
+
const moveSchema = base.entityWithGenAndDescsAndShowdownName.extend({
|
|
148
|
+
type: common.typeId,
|
|
149
|
+
power: common.int.min(0).max(999),
|
|
150
|
+
accuracy: common.int.min(0).max(101),
|
|
151
|
+
pp: common.int.min(0).max(100),
|
|
152
|
+
category: z$1.enum(moveCategory),
|
|
153
|
+
priority: common.int.min(-10).max(10),
|
|
154
|
+
isZ: z$1.boolean(),
|
|
155
|
+
isGmax: z$1.boolean()
|
|
156
|
+
});
|
|
157
|
+
const pokedexEntrySchema = z$1.object({
|
|
158
|
+
pid: common.slug,
|
|
159
|
+
dexNum: common.dexNum,
|
|
160
|
+
isForm: z$1.coerce.boolean(),
|
|
161
|
+
transferOnly: z$1.coerce.boolean().optional(),
|
|
162
|
+
originDex: common.slug.optional(),
|
|
163
|
+
isNonCanonical: z$1.coerce.boolean().optional(),
|
|
164
|
+
meta: z$1.object({
|
|
165
|
+
names: i18nTextSchema,
|
|
166
|
+
speciesNames: i18nTextSchema.optional(),
|
|
167
|
+
formNames: i18nTextSchema.optional(),
|
|
168
|
+
type1: common.slug.optional(),
|
|
169
|
+
type2: common.slug.optional(),
|
|
170
|
+
attributes: z$1.record(common.slug, z$1.string()).optional(),
|
|
171
|
+
tags: z$1.array(common.slug).optional(),
|
|
172
|
+
canonicalPid: common.slug.optional(),
|
|
173
|
+
imgNid: common.slug.optional()
|
|
174
|
+
}).optional()
|
|
175
|
+
});
|
|
176
|
+
const pokedexSchema = base.entity.extend({
|
|
177
|
+
shortDesc: common.shortDesc.optional(),
|
|
178
|
+
desc: common.desc.optional(),
|
|
179
|
+
gen: common.gen,
|
|
180
|
+
region: common.slug.nullable(),
|
|
181
|
+
isNational: z$1.coerce.boolean(),
|
|
182
|
+
baseDex: common.slug.nullable(),
|
|
183
|
+
pkApiId: z$1.string().nullable(),
|
|
184
|
+
entries: z$1.array(pokedexEntrySchema.strict())
|
|
185
|
+
});
|
|
186
|
+
const pokemonRefsSchema = z$1.object({
|
|
187
|
+
pkApiId: z$1.string(),
|
|
188
|
+
pkApiFormId: z$1.string(),
|
|
189
|
+
pkApiFormSlug: z$1.string(),
|
|
190
|
+
smogon: z$1.string(),
|
|
191
|
+
showdown: z$1.string(),
|
|
192
|
+
showdownName: z$1.string(),
|
|
193
|
+
serebii: z$1.string(),
|
|
194
|
+
bulbapedia: z$1.string()
|
|
195
|
+
});
|
|
196
|
+
const pokemonSchema = z$1.object({
|
|
197
|
+
id: common.slug,
|
|
198
|
+
nid: common.slug,
|
|
199
|
+
imgNid: common.slug.optional(),
|
|
200
|
+
dexNum: common.dexNum,
|
|
201
|
+
formId: common.slug.optional(),
|
|
202
|
+
region: common.slug,
|
|
203
|
+
gen: common.gen,
|
|
204
|
+
type1: common.slug,
|
|
205
|
+
type2: common.slug.optional(),
|
|
206
|
+
color: common.slug,
|
|
207
|
+
ability1: common.slug,
|
|
208
|
+
ability2: common.slug.optional(),
|
|
209
|
+
abilityHidden: common.slug.optional(),
|
|
210
|
+
abilitySpecial: common.slug.optional(),
|
|
211
|
+
isPrerelease: z$1.coerce.boolean(),
|
|
212
|
+
isDefault: z$1.coerce.boolean(),
|
|
213
|
+
isForm: z$1.coerce.boolean(),
|
|
214
|
+
formItem: common.slug.optional(),
|
|
215
|
+
isLegendary: z$1.coerce.boolean(),
|
|
216
|
+
isMythical: z$1.coerce.boolean(),
|
|
217
|
+
isBaby: z$1.coerce.boolean(),
|
|
218
|
+
isUltraBeast: z$1.coerce.boolean(),
|
|
219
|
+
isParadox: z$1.coerce.boolean(),
|
|
220
|
+
paradoxSpecies: z$1.array(common.slug).optional(),
|
|
221
|
+
isConvergent: z$1.coerce.boolean(),
|
|
222
|
+
convergentSpecies: z$1.array(common.slug).optional(),
|
|
223
|
+
isCosmeticForm: z$1.coerce.boolean(),
|
|
224
|
+
isFemaleForm: z$1.coerce.boolean(),
|
|
225
|
+
hasGenderDifferences: z$1.coerce.boolean(),
|
|
226
|
+
isBattleOnlyForm: z$1.coerce.boolean(),
|
|
227
|
+
isFusion: z$1.coerce.boolean(),
|
|
228
|
+
isMega: z$1.coerce.boolean(),
|
|
229
|
+
isPrimal: z$1.coerce.boolean(),
|
|
230
|
+
isGmax: z$1.coerce.boolean(),
|
|
231
|
+
isRegional: z$1.coerce.boolean(),
|
|
232
|
+
canGmax: z$1.coerce.boolean(),
|
|
233
|
+
canDynamax: z$1.coerce.boolean(),
|
|
234
|
+
canBeAlpha: z$1.coerce.boolean(),
|
|
235
|
+
debutIn: common.slug,
|
|
236
|
+
obtainableIn: z$1.array(common.slug),
|
|
237
|
+
transferOnlyIn: z$1.array(common.slug),
|
|
238
|
+
storableIn: z$1.array(common.slug),
|
|
239
|
+
eventOnlyIn: z$1.array(common.slug),
|
|
240
|
+
shinyLockedIn: z$1.array(common.slug).optional(),
|
|
241
|
+
shinyReleased: z$1.coerce.boolean(),
|
|
242
|
+
shinyBase: common.slug.optional(),
|
|
243
|
+
baseHp: common.statValue,
|
|
244
|
+
baseAtk: common.statValue,
|
|
245
|
+
baseDef: common.statValue,
|
|
246
|
+
baseSpAtk: common.statValue,
|
|
247
|
+
baseSpDef: common.statValue,
|
|
248
|
+
baseSpeed: common.statValue,
|
|
249
|
+
height: common.int.min(-1).max(999999),
|
|
250
|
+
weight: common.int.min(-1).max(999999),
|
|
251
|
+
maleRate: z$1.coerce.number().min(-1).max(100),
|
|
252
|
+
femaleRate: z$1.coerce.number().min(-1).max(100),
|
|
253
|
+
baseSpecies: common.slug.optional(),
|
|
254
|
+
baseForms: z$1.array(common.slug),
|
|
255
|
+
forms: z$1.array(common.slug),
|
|
256
|
+
formsDesc: z$1.string().optional(),
|
|
257
|
+
family: common.slug.optional(),
|
|
258
|
+
refs: pokemonRefsSchema,
|
|
259
|
+
evolvesFrom: common.slug.optional(),
|
|
260
|
+
evoFromLevel: common.level.optional(),
|
|
261
|
+
evoFromItem: common.slug.optional(),
|
|
262
|
+
evoFromMove: common.slug.optional(),
|
|
263
|
+
evoFromAbility: common.slug.optional(),
|
|
264
|
+
evoFromGender: z$1.enum(genders).optional(),
|
|
265
|
+
evoFromTrading: z$1.coerce.boolean().optional(),
|
|
266
|
+
evoFromFriendship: z$1.coerce.boolean().optional(),
|
|
267
|
+
evoFromCondition: z$1.string().optional(),
|
|
268
|
+
names: i18nTextSchema,
|
|
269
|
+
genus: i18nTextSchema,
|
|
270
|
+
speciesNames: i18nTextSchema,
|
|
271
|
+
formNames: i18nTextSchema
|
|
272
|
+
});
|
|
273
|
+
const boxPresetIndexItemSchema = z$1.object({
|
|
274
|
+
id: common.slug,
|
|
275
|
+
gameSet: common.slug,
|
|
276
|
+
legacyId: common.slug.nullable(),
|
|
277
|
+
name: common.name,
|
|
278
|
+
isHidden: z$1.coerce.boolean().optional()
|
|
279
|
+
}).strict();
|
|
280
|
+
const boxPresetBoxPokemonSchema = common.slug.nullable().or(z$1.object({
|
|
281
|
+
pid: common.slug,
|
|
282
|
+
gmax: z$1.coerce.boolean().optional(),
|
|
283
|
+
shinyLocked: z$1.coerce.boolean().optional(),
|
|
284
|
+
shiny: z$1.coerce.boolean().optional()
|
|
285
|
+
}));
|
|
286
|
+
const boxPresetBoxSchema = z$1.object({
|
|
287
|
+
title: z$1.string().max(120).optional(),
|
|
288
|
+
pokemon: z$1.array(boxPresetBoxPokemonSchema)
|
|
289
|
+
});
|
|
290
|
+
const boxPresetSchema = z$1.object({
|
|
291
|
+
id: common.slug,
|
|
292
|
+
legacyId: common.slug.optional(),
|
|
293
|
+
name: z$1.string().max(120),
|
|
294
|
+
version: z$1.coerce.number().int().min(0),
|
|
295
|
+
gameSet: common.slug.nullable(),
|
|
296
|
+
description: z$1.string(),
|
|
297
|
+
boxes: z$1.array(boxPresetBoxSchema),
|
|
298
|
+
isHidden: z$1.coerce.boolean().optional()
|
|
299
|
+
});
|
|
300
|
+
const boxPresetMapSchema = z$1.record(z$1.string(), z$1.record(z$1.string(), boxPresetSchema));
|
|
301
|
+
const modernBoxPresetTags = [
|
|
302
|
+
"recommended",
|
|
303
|
+
"national",
|
|
304
|
+
"grouped",
|
|
305
|
+
"sorted",
|
|
306
|
+
"minimal",
|
|
307
|
+
"shiny",
|
|
308
|
+
"forms"
|
|
309
|
+
];
|
|
310
|
+
const modernBoxPresetIndexSchema = z$1.array(common.slug);
|
|
311
|
+
const modernBoxPresetSlotSchema = common.slug.nullable().or(z$1.object({
|
|
312
|
+
pokemon: common.slug,
|
|
313
|
+
shiny: z$1.coerce.boolean().optional(),
|
|
314
|
+
gmax: z$1.coerce.boolean().optional(),
|
|
315
|
+
shinyLocked: z$1.coerce.boolean().optional()
|
|
316
|
+
}).strict());
|
|
317
|
+
const modernBoxPresetBoxSchema = z$1.object({
|
|
318
|
+
name: z$1.string().max(120).optional(),
|
|
319
|
+
slots: z$1.array(modernBoxPresetSlotSchema)
|
|
320
|
+
}).strict();
|
|
321
|
+
const modernBoxPresetSchema = z$1.object({
|
|
322
|
+
schemaVersion: z$1.literal(1),
|
|
323
|
+
id: common.slug,
|
|
324
|
+
gameSet: common.slug,
|
|
325
|
+
name: z$1.string().max(120),
|
|
326
|
+
description: z$1.string().max(2e3).optional(),
|
|
327
|
+
source: z$1.object({
|
|
328
|
+
kind: z$1.literal("classic"),
|
|
329
|
+
gameSet: common.slug,
|
|
330
|
+
presetId: common.slug,
|
|
331
|
+
version: z$1.coerce.number().int().min(0).optional(),
|
|
332
|
+
legacyId: common.slug.optional()
|
|
333
|
+
}).strict().optional(),
|
|
334
|
+
tags: z$1.array(z$1.enum(modernBoxPresetTags)).optional(),
|
|
335
|
+
boxes: z$1.array(modernBoxPresetBoxSchema)
|
|
336
|
+
}).strict();
|
|
337
|
+
const pokemonSearchFilterSchema = z$1.object({
|
|
338
|
+
q: z$1.string().optional().catch(void 0),
|
|
339
|
+
gen: z$1.coerce.number().min(1).max(10).optional().catch(void 0),
|
|
340
|
+
lang: z$1.string().optional().default("en"),
|
|
341
|
+
color: z$1.string().optional().catch(void 0),
|
|
342
|
+
type: z$1.string().optional().catch(void 0),
|
|
343
|
+
forms: z$1.coerce.boolean().optional().catch(void 0),
|
|
344
|
+
shiny: z$1.coerce.boolean().optional().catch(void 0)
|
|
345
|
+
});
|
|
346
|
+
//#endregion
|
|
347
|
+
export { pokemonSchema as A, onlineFeaturesSchema as C, pokedexEntrySchema as D, pokeballSchema as E, regionSchema as M, ribbonSchema as N, pokedexSchema as O, typeSchema as P, natureSchema as S, personalitySchema as T, modernBoxPresetIndexSchema as _, boxPresetMapSchema as a, modernBoxPresetTags as b, colorSchema as c, generationSchema as d, i18nTextSchema as f, modernBoxPresetBoxSchema as g, markSchema as h, boxPresetIndexItemSchema as i, pokemonSearchFilterSchema as j, pokemonRefsSchema as k, gameFeaturesSchema as l, languageSchema as m, boxPresetBoxPokemonSchema as n, boxPresetSchema as o, itemSchema as p, boxPresetBoxSchema as r, characterSchema as s, abilitySchema as t, gameSchema as u, modernBoxPresetSchema as v, originMarkSchema as w, moveSchema as x, modernBoxPresetSlotSchema as y };
|
|
348
|
+
|
|
349
|
+
//# sourceMappingURL=schemas-CcUqoHNr.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas-CcUqoHNr.mjs","names":["z"],"sources":["../src/lib/schemas.ts"],"sourcesContent":["import { z } from 'zod'\nimport { POKEPC_LATEST_GENERATION } from './constants'\nimport {\n abilityTagIds,\n battleStyles,\n gamePlatforms,\n gameSeries,\n gameType,\n genders,\n itemCategory,\n languageAlpha3Codes,\n languageIds,\n languageInGameCodes,\n moveCategory,\n pokeballCategory,\n raidStyles,\n ribbonCategory,\n statIds,\n typeIds,\n} from './enums'\n\nconst common = {\n name: z.string().max(50),\n gen: z.coerce.number().int().min(0).max(POKEPC_LATEST_GENERATION),\n slug: z\n .string()\n .max(50)\n .regex(/^[a-z0-9-]+$/),\n desc: z.string().max(2000).nullable(),\n shortDesc: z.string().max(200),\n // sortIndex: z.coerce.number().min(0),\n colorHex: z.string().regex(/^#[0-9a-f]{6}$/i),\n dateDay: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n statId: z.enum(statIds),\n typeId: z.enum(typeIds),\n int: z.coerce.number().int(),\n dexNum: z.union([z.string().regex(/^\\d{1,5}$/), z.coerce.number().int().min(0).max(99999)]),\n level: z.coerce.number().int().min(1).max(100),\n statValue: z.coerce.number().int().min(-1).max(255),\n}\n\nconst base = {\n entity: z.object({\n id: common.slug,\n name: common.name,\n // sortIndex: defs.sortIndex,\n }),\n entityWithGenAndDescs: z.object({\n id: common.slug,\n name: common.name,\n gen: common.gen,\n shortDesc: common.shortDesc,\n desc: common.desc,\n // sortIndex: defs.sortIndex,\n }),\n entityWithGenAndDescsAndShowdownName: z.object({\n id: common.slug,\n name: common.name,\n psName: common.name,\n gen: common.gen,\n shortDesc: common.shortDesc,\n desc: common.desc,\n // sortIndex: defs.sortIndex,\n }),\n}\n\nexport const i18nTextSchema = z.record(z.enum(languageAlpha3Codes), z.string().optional())\n\nexport const abilitySchema = base.entityWithGenAndDescsAndShowdownName.extend({\n tags: z.array(z.enum(abilityTagIds)).min(1),\n immunities: z.array(common.typeId).optional(),\n weaknesses: z.array(common.typeId).optional(),\n})\nexport const personalitySchema = z.object({\n id: common.slug,\n shortDesc: common.shortDesc,\n // sortIndex: defs.sortIndex,\n})\nexport const characterSchema = base.entity.extend({\n // sprite: z.string(),\n})\nexport const colorSchema = base.entity.extend({\n color: common.colorHex,\n})\nexport const gameFeaturesSchema = z.object({\n storage: z.boolean(), // when true, the game has a storage system (boxes, etc)\n pokedex: z.boolean(), // when true, the game has at least one pokedex\n training: z.boolean(), // when true, the Pokemon are trainable with traditional methods (evs, ivs, hyper training, etc)\n shiny: z.boolean(),\n items: z.boolean(),\n gender: z.boolean(),\n pokerus: z.boolean(), // All except Gen 1, GO and from S/V onwards\n nature: z.boolean(),\n ribbons: z.boolean(), // Since gen 3\n marks: z.boolean(), // Since gen 8\n markings: z.boolean(), // Since gen 3 (circle, triangle, square, heart, star, diamond)\n shadow: z.boolean(), // Colosseum, XD and GO\n ball: z.boolean(), // Caught balls, since gen 4\n mega: z.boolean(),\n zmove: z.boolean(),\n gmax: z.boolean(),\n alpha: z.boolean(),\n tera: z.boolean(),\n plusmvs: z.boolean(), // mastered moves, LA and LZA only\n mints: z.boolean(),\n sizes: z.boolean(), // For some games like Let's GO, Legends, etc.\n abilities: z.boolean(), // gen 1-2 and Legends games have no abilities\n})\nexport const onlineFeaturesSchema = z.object({\n battles: z.boolean(),\n battleStyles: z.array(z.enum(battleStyles)),\n trades: z.boolean(),\n raids: z.boolean(),\n raidStyles: z.array(z.enum(raidStyles)),\n coop: z.boolean(),\n})\nexport const gameSchema = base.entity.extend({\n gen: common.gen,\n nameSlug: common.slug,\n codename: common.name.nullable(),\n type: z.enum(gameType),\n series: z.enum(gameSeries),\n gameSet: common.slug.nullable(),\n gameSuperSet: common.slug.nullable(),\n releaseDate: common.dateDay,\n region: common.slug.nullable(),\n originMark: common.slug.nullable(),\n pokedexes: z.array(common.slug),\n maxBoxes: common.int,\n maxBoxSize: common.int,\n platforms: z.array(z.enum(gamePlatforms)).min(1),\n isUnreleased: z.coerce.boolean().optional(),\n features: gameFeaturesSchema,\n onlineFeatures: onlineFeaturesSchema.optional(),\n // sprite: z.string(),\n // spriteIcon: z.string(),\n})\nexport const generationSchema = z.object({\n id: common.int,\n minDexNum: common.int,\n maxDexNum: common.int,\n})\nexport const itemSchema = base.entityWithGenAndDescsAndShowdownName.extend({\n category: z.enum(itemCategory),\n unholdable: z.coerce.boolean().optional(),\n // sprite: z.string(),\n})\nexport const pokeballSchema = base.entityWithGenAndDescs.extend({\n category: z.enum(pokeballCategory),\n unusable: z.coerce.boolean().optional(),\n})\nexport const languageSchema = base.entity.extend({\n id: z.enum(languageIds),\n name: z.string(),\n nameEng: z.string(),\n alpha3: z.enum(languageAlpha3Codes),\n inGameCode: z.enum(languageInGameCodes),\n locale: z.string(),\n flag: z.string(),\n pkApiId: z.string().nullable(), // PokeAPI ID\n})\nexport const markSchema = base.entityWithGenAndDescs.extend({\n title: common.shortDesc,\n conditions: common.shortDesc,\n chance: z.string(),\n chanceCharm: z.string(),\n // sprite: z.string(),\n})\nexport const ribbonSchema = base.entityWithGenAndDescs.extend({\n title: common.shortDesc,\n category: z.enum(ribbonCategory),\n // sprite: z.string(),\n})\nexport const originMarkSchema = base.entity\nexport const regionSchema = base.entity\nexport const typeSchema = base.entity.extend({\n color: common.colorHex,\n isCanonical: z.boolean(),\n})\nexport const natureSchema = base.entity.extend({\n raises: common.statId.nullable(),\n lowers: common.statId.nullable(),\n})\nexport const moveSchema = base.entityWithGenAndDescsAndShowdownName.extend({\n type: common.typeId,\n power: common.int.min(0).max(999),\n accuracy: common.int.min(0).max(101),\n pp: common.int.min(0).max(100),\n category: z.enum(moveCategory),\n priority: common.int.min(-10).max(10),\n isZ: z.boolean(),\n isGmax: z.boolean(),\n})\n\nexport const pokedexEntrySchema = z.object({\n pid: common.slug,\n dexNum: common.dexNum,\n isForm: z.coerce.boolean(),\n transferOnly: z.coerce.boolean().optional(),\n originDex: common.slug.optional(),\n isNonCanonical: z.coerce.boolean().optional(), // if true, the pokemon is not canonical/main-series species or form. e.g Mosslax.\n // meta: optional data that can be used if the pokemon is not found in the main-series dataset,\n // e.g. this is relevant for spin-off games that contain special forms like in Pokopia.\n // For example, Mosslax has a different dex number than Snorlax in Pokopia, so it needs a special entry.\n meta: z\n .object({\n names: i18nTextSchema,\n speciesNames: i18nTextSchema.optional(),\n formNames: i18nTextSchema.optional(),\n type1: common.slug.optional(),\n type2: common.slug.optional(),\n attributes: z.record(common.slug, z.string()).optional(), // key-value info\n tags: z.array(common.slug).optional(),\n canonicalPid: common.slug.optional(), // e.g. for professor tangrowth, it would be tangrowth\n imgNid: common.slug.optional(), // if using a different nid for the image\n })\n .optional(),\n})\n\nexport const pokedexSchema = base.entity.extend({\n shortDesc: common.shortDesc.optional(),\n desc: common.desc.optional(),\n gen: common.gen,\n region: common.slug.nullable(),\n isNational: z.coerce.boolean(),\n baseDex: common.slug.nullable(),\n pkApiId: z.string().nullable(),\n entries: z.array(pokedexEntrySchema.strict()),\n // transferEntries: z.array(pokedexEntrySchema.strict()).optional(),\n})\n\nexport const pokemonRefsSchema = z.object({\n pkApiId: z.string(),\n pkApiFormId: z.string(),\n pkApiFormSlug: z.string(),\n smogon: z.string(),\n showdown: z.string(),\n showdownName: z.string(),\n serebii: z.string(),\n bulbapedia: z.string(),\n})\n\nexport const pokemonSchema = z.object({\n id: common.slug,\n nid: common.slug,\n imgNid: common.slug.optional(), // if using a different nid for the image\n dexNum: common.dexNum,\n formId: common.slug.optional(),\n // sprite2d: z.string().nullable(), // TODO:! make not nullable\n // sprite3d: z.string().nullable(), // TODO:! make not nullable\n // sprite3dShiny: z.string().nullable(), // TODO:! make not nullable\n region: common.slug,\n gen: common.gen,\n type1: common.slug,\n type2: common.slug.optional(),\n color: common.slug,\n ability1: common.slug,\n ability2: common.slug.optional(),\n abilityHidden: common.slug.optional(),\n abilitySpecial: common.slug.optional(),\n isPrerelease: z.coerce.boolean(),\n isDefault: z.coerce.boolean(),\n isForm: z.coerce.boolean(),\n formItem: common.slug.optional(),\n isLegendary: z.coerce.boolean(),\n isMythical: z.coerce.boolean(),\n isBaby: z.coerce.boolean(),\n isUltraBeast: z.coerce.boolean(),\n isParadox: z.coerce.boolean(),\n paradoxSpecies: z.array(common.slug).optional(),\n isConvergent: z.coerce.boolean(),\n convergentSpecies: z.array(common.slug).optional(),\n isCosmeticForm: z.coerce.boolean(),\n isFemaleForm: z.coerce.boolean(),\n hasGenderDifferences: z.coerce.boolean(),\n isBattleOnlyForm: z.coerce.boolean(),\n isFusion: z.coerce.boolean(),\n isMega: z.coerce.boolean(),\n isPrimal: z.coerce.boolean(),\n isGmax: z.coerce.boolean(),\n isRegional: z.coerce.boolean(),\n canGmax: z.coerce.boolean(),\n canDynamax: z.coerce.boolean(),\n canBeAlpha: z.coerce.boolean(),\n // ---- Obtainability:\n debutIn: common.slug, // the first game it appeared in\n obtainableIn: z.array(common.slug), // if it can be obtained in-game any time, without temporary or online events\n transferOnlyIn: z.array(common.slug), // if it can only be obtained by transferring from another games\n storableIn: z.array(common.slug), // if it's storable in the game's boxes\n eventOnlyIn: z.array(common.slug), // if it's exclusive to an event, and not obtainable in-game\n shinyLockedIn: z.array(common.slug).optional(), // if it's shiny locked in that game.\n shinyReleased: z.coerce.boolean(),\n shinyBase: common.slug.optional(),\n // -------------------\n baseHp: common.statValue,\n baseAtk: common.statValue,\n baseDef: common.statValue,\n baseSpAtk: common.statValue,\n baseSpDef: common.statValue,\n baseSpeed: common.statValue,\n height: common.int.min(-1).max(999999),\n weight: common.int.min(-1).max(999999),\n maleRate: z.coerce.number().min(-1).max(100),\n femaleRate: z.coerce.number().min(-1).max(100),\n baseSpecies: common.slug.optional(),\n baseForms: z.array(common.slug),\n forms: z.array(common.slug),\n formsDesc: z.string().optional(),\n family: common.slug.optional(),\n refs: pokemonRefsSchema,\n // evolution:\n evolvesFrom: common.slug.optional(),\n evoFromLevel: common.level.optional(),\n evoFromItem: common.slug.optional(),\n evoFromMove: common.slug.optional(),\n evoFromAbility: common.slug.optional(), // not provided by showdown (e.g. needed for rockruff (own tempo))\n evoFromGender: z.enum(genders).optional(),\n evoFromTrading: z.coerce.boolean().optional(),\n evoFromFriendship: z.coerce.boolean().optional(),\n evoFromCondition: z.string().optional(),\n // translations:\n names: i18nTextSchema,\n genus: i18nTextSchema,\n speciesNames: i18nTextSchema,\n formNames: i18nTextSchema,\n})\n\n// --- legacy\n\nexport const boxPresetIndexItemSchema = z\n .object({\n id: common.slug,\n gameSet: common.slug,\n legacyId: common.slug.nullable(),\n name: common.name,\n isHidden: z.coerce.boolean().optional(),\n })\n .strict()\n\nexport const boxPresetBoxPokemonSchema = common.slug.nullable().or(\n z.object({\n pid: common.slug,\n gmax: z.coerce.boolean().optional(),\n shinyLocked: z.coerce.boolean().optional(),\n shiny: z.coerce.boolean().optional(),\n }),\n)\n\nexport const boxPresetBoxSchema = z.object({\n title: z.string().max(120).optional(),\n pokemon: z.array(boxPresetBoxPokemonSchema),\n})\n\nexport const boxPresetSchema = z.object({\n id: common.slug,\n legacyId: common.slug.optional(),\n name: z.string().max(120),\n version: z.coerce.number().int().min(0),\n gameSet: common.slug.nullable(),\n description: z.string(),\n boxes: z.array(boxPresetBoxSchema),\n isHidden: z.coerce.boolean().optional(),\n})\n\nexport const boxPresetMapSchema = z.record(z.string(), z.record(z.string(), boxPresetSchema))\n\nexport const modernBoxPresetTags = [\n 'recommended',\n 'national',\n 'grouped',\n 'sorted',\n 'minimal',\n 'shiny',\n 'forms',\n] as const\n\nexport const modernBoxPresetIndexSchema = z.array(common.slug)\n\nexport const modernBoxPresetSlotSchema = common.slug.nullable().or(\n z\n .object({\n pokemon: common.slug,\n shiny: z.coerce.boolean().optional(),\n gmax: z.coerce.boolean().optional(),\n shinyLocked: z.coerce.boolean().optional(),\n })\n .strict(),\n)\n\nexport const modernBoxPresetBoxSchema = z\n .object({\n name: z.string().max(120).optional(),\n slots: z.array(modernBoxPresetSlotSchema),\n })\n .strict()\n\nexport const modernBoxPresetSchema = z\n .object({\n schemaVersion: z.literal(1),\n id: common.slug,\n gameSet: common.slug,\n name: z.string().max(120),\n description: z.string().max(2000).optional(),\n source: z\n .object({\n kind: z.literal('classic'),\n gameSet: common.slug,\n presetId: common.slug,\n version: z.coerce.number().int().min(0).optional(),\n legacyId: common.slug.optional(),\n })\n .strict()\n .optional(),\n tags: z.array(z.enum(modernBoxPresetTags)).optional(),\n boxes: z.array(modernBoxPresetBoxSchema),\n })\n .strict()\n\nexport const pokemonSearchFilterSchema = z.object({\n q: z.string().optional().catch(undefined),\n gen: z.coerce.number().min(1).max(POKEPC_LATEST_GENERATION).optional().catch(undefined),\n lang: z.string().optional().default('en'),\n // pokemon-specific filters:\n color: z.string().optional().catch(undefined),\n type: z.string().optional().catch(undefined),\n forms: z.coerce.boolean().optional().catch(undefined),\n shiny: z.coerce.boolean().optional().catch(undefined),\n})\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-BwovRocd.mjs","names":[],"sources":["../src/lib/utils.ts"],"sourcesContent":["// ----- Dataset UTILS --------------------------------------------\n\nimport { arrayUnique, capitalizeFirstLetter } from '../utils/utils-internal'\n\nexport function formatDexNum(num: number | string, positions: number = 4): string {\n return num.toString().padStart(positions, '0')\n}\n\nexport function dexNumToInt(num: number | string): number {\n return typeof num === 'string' ? Number.parseInt(num.replace(/^0+/, '')) : num\n}\n\nexport function dexNumToGen(nationalDexNum: number | string): number {\n const num = dexNumToInt(nationalDexNum)\n\n if (num <= 151) return 1\n if (num <= 251) return 2\n if (num <= 386) return 3\n if (num <= 493) return 4\n if (num <= 649) return 5\n if (num <= 721) return 6\n if (num <= 809) return 7\n if (num <= 905) return 8\n return 9\n}\n\nexport function randomPokemonList<T extends Pkds.PokemonBase>(\n pokemonList: Array<T>,\n quantity = 16,\n withForms = true,\n): Array<T> {\n const filteredPokes = withForms ? pokemonList : pokemonList.filter((pkm) => !pkm.isForm)\n const minIndex = 1\n const maxIndex = filteredPokes.length\n const distinctPokeIndices = new Set<number>()\n\n while (distinctPokeIndices.size < quantity) {\n const newPoke = Math.floor(Math.random() * (maxIndex - minIndex + 1)) + minIndex\n distinctPokeIndices.add(newPoke)\n }\n\n return Array.from(distinctPokeIndices)\n .map((index) => filteredPokes[index])\n .filter(Boolean)\n}\n\nexport function getPossiblePokemonGenders(meta: Pkds.Pokemon): Pkds.Gender[] {\n if (meta.hasGenderDifferences && meta.isFemaleForm) {\n return ['f']\n }\n if (meta.hasGenderDifferences && !meta.isFemaleForm) {\n return ['m']\n }\n if (meta.maleRate >= 100) {\n return ['m']\n }\n if (meta.femaleRate >= 100) {\n return ['f']\n }\n if (meta.maleRate <= 0 && meta.femaleRate <= 0) {\n return []\n }\n return ['m', 'f']\n}\n\nexport function getPokemonGender(\n inputGender: string | null | undefined,\n meta: Pkds.Pokemon,\n options?: { allowEmpty?: boolean },\n): Pkds.Gender {\n const possibleGenders = getPossiblePokemonGenders(meta)\n if (possibleGenders.length === 1) {\n return possibleGenders[0]\n }\n if (possibleGenders.length === 0) {\n return null\n }\n\n if (inputGender === 'm' || inputGender === 'f') {\n return inputGender\n }\n\n if (options?.allowEmpty) {\n // if allowEmpty is true, we won't determine/guess the gender, and return null\n // at this point, inputGender is either null or undefined as well\n return null\n }\n\n // if the gender is not specified, we need to determine it based on the maleRate and femaleRate\n if (meta.maleRate >= meta.femaleRate) {\n return 'm'\n }\n\n // if the femaleRate is greater than the maleRate, then the gender is female\n return 'f'\n}\n\n// ----- Dataset Text and Translation UTILS --------------------------------------------\n\nexport function translatePokemonText(\n pkm: Pkds.Pokemon,\n lang3Char: Pkds.LanguageAlpha3,\n): Pkds.PokemonText {\n const fallback = lang3Char === 'eng' ? undefined : translatePokemon(pkm, 'eng')\n const pkmName = pkm.names[lang3Char] ?? fallback?.name ?? pkm.id\n\n const texts: Pkds.PokemonText = {\n lang: lang3Char,\n genusText: pkm.genus[lang3Char] ?? fallback?.genusText,\n name: pkmName,\n speciesName: pkm.speciesNames[lang3Char] ?? pkmName ?? fallback?.speciesName ?? pkmName,\n formName: pkm.formNames[lang3Char] ?? fallback?.formName,\n }\n\n return texts\n}\n\nexport function translatePokemon(\n pokemon: Pkds.Pokemon | Pkds.TranslatedPokemon,\n lang: Pkds.LanguageAlpha3,\n dexNumPositions?: number,\n): Pkds.TranslatedPokemon {\n if (!('name' in pokemon)) {\n return {\n ...pokemon,\n ...translatePokemonText(pokemon, lang),\n speciesGen: dexNumToGen(pokemon.dexNum),\n dexNum: formatDexNum(\n pokemon.dexNum,\n dexNumPositions ?? Math.max(3, String(pokemon.dexNum).length),\n ),\n searchableText: generatePokemonSearchableText(pokemon),\n }\n }\n\n return {\n ...pokemon,\n ...translatePokemonText(pokemon, lang),\n }\n}\n\nexport function translatePokemonList(\n pokemonList: Array<Pkds.Pokemon | Pkds.TranslatedPokemon>,\n lang: Pkds.LanguageAlpha3,\n): Array<Pkds.TranslatedPokemon> {\n return pokemonList.map((pokemon) => translatePokemon(pokemon, lang))\n}\n\nexport function translatePokemonById(\n pokemonList: Array<Pkds.Pokemon | Pkds.TranslatedPokemon>,\n lang: Pkds.LanguageAlpha3,\n): Record<string, Pkds.TranslatedPokemon> {\n return Object.fromEntries(\n pokemonList.map((pokemon) => [pokemon.id, translatePokemon(pokemon, lang)]),\n )\n}\n\nexport function translatePokemonByNid(\n pokemonList: Array<Pkds.Pokemon | Pkds.TranslatedPokemon>,\n lang: Pkds.LanguageAlpha3,\n): Record<string, Pkds.TranslatedPokemon> {\n return Object.fromEntries(\n pokemonList.map((pokemon) => [pokemon.nid, translatePokemon(pokemon, lang)]),\n )\n}\n\nexport function generatePokemonDescription(\n pokemon: Pkds.TranslatedPokemon,\n lang3Char: Pkds.LanguageAlpha3,\n) {\n const parts = []\n const features = []\n const text = translatePokemonText(pokemon, lang3Char)\n\n // Basic description\n parts.push(`${text.genusText}`)\n\n // Form information\n if (pokemon.isForm) {\n parts.push(`Form: ${pokemon.formName}`)\n }\n\n // Pokemon category\n if (pokemon.isMythical) {\n features.push('Mythical')\n }\n if (pokemon.isLegendary) {\n features.push('Legendary')\n }\n\n // Type and generation information\n const types = [pokemon.type1]\n if (pokemon.type2) types.push(pokemon.type2)\n parts.push(`${types.map(capitalizeFirstLetter).join('/')} type`)\n parts.push(`It was discovered in Generation ${pokemon.gen}`)\n\n if (features.length > 0) {\n parts.push(`Classified as a ${features.join(' and ')} Pokémon`)\n }\n\n return parts.join('. ') + '.'\n}\n\nexport function generatePokemonSearchableText(poke: Pkds.Pokemon) {\n const pokeName = arrayUnique(Object.values(poke.names ?? {})).join(' ')\n const pokeFormName = arrayUnique(Object.values(poke.formNames ?? {})).join(' ')\n const speciesGen = dexNumToGen(poke.dexNum)\n\n const fullText = [\n pokeName,\n pokeFormName,\n poke.dexNum,\n poke.id,\n `type:${poke.type1}`,\n poke.type2 ? `type:${poke.type2}` : '',\n `region:${poke.region}`,\n `color:${poke.color}${poke.color === 'brown' ? ' color:orange' : ''}`,\n `gen${speciesGen} gen:${speciesGen} gen${poke.gen} gen:${poke.gen}`,\n poke.isMythical ? 'mythical' : '',\n poke.isLegendary ? 'legendary' : '',\n poke.isFemaleForm ? 'female' : '',\n poke.isBaby ? 'baby' : '',\n poke.isUltraBeast ? 'ultrabeast ultra beast' : '',\n poke.isRegional ? 'regional' : '',\n poke.isFusion ? 'fusion' : '',\n poke.isParadox ? 'paradox' : '',\n poke.isConvergent ? 'convergent' : '',\n poke.isCosmeticForm ? 'cosmetic' : '',\n poke.isGmax ? 'gigantamax gmax' : '',\n poke.isForm ? `is-form` : ``,\n poke.isMega ? `is-mega` : ``,\n poke.isBattleOnlyForm ? `is-battle-only` : `not-battle-only`,\n poke.storableIn.length > 0 ? 'is-storable' : 'not-storable',\n ]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n\n return fullText\n}\n\nexport function getGameCategoryLabel(game: Pkds.Game): string {\n switch (game.series) {\n case 'main':\n return 'Main-series'\n case 'legends':\n return 'Legends-series'\n case 'storage':\n return 'Storage-series'\n default:\n return 'Spin-off'\n }\n}\n\nexport function generateGameDescription(game: Pkds.Game, gameCatText: string) {\n const platforms = game.platforms.map((platform: string) => platform.toUpperCase()).join(' / ')\n const features = []\n const parts = []\n const genPart = game.gen > 0 ? ` from Generation ${game.gen} ` : ''\n const releaseText = game.isUnreleased ? 'that will be released for' : 'released for'\n\n parts.push(\n `Pokémon ${game.name} is a ${gameCatText} ${game.type} ${genPart}${releaseText} ${platforms}`,\n )\n\n // if (game.gen > 0) {\n // parts.push(`It's a Generation ${game.gen} game`)\n // }\n\n if (game.features.gmax) features.push('Gigantamax')\n if (game.features.tera) features.push('Terastallization')\n if (game.features.alpha) features.push('Alpha Pokémon')\n\n if (features.length > 0) {\n // parts.push(`It features ${features.join(', ')}`)\n }\n\n if (game.region && game.region !== 'unknown') {\n const capitalizedRegion = game.region.charAt(0).toUpperCase() + game.region.slice(1)\n parts.push(`The game takes place in the ${capitalizedRegion} region`)\n }\n\n return parts.join('. ') + '.'\n}\n\nexport function resolvePokemonName(\n meta: Pkds.TranslatedPokemon,\n nickname?: string,\n lang3Char?: Pkds.LanguageAlpha3,\n): Pkds.PokemonNameInfo {\n const txt: Pkds.PokemonText = lang3Char\n ? translatePokemonText(meta, lang3Char)\n : {\n lang: meta.lang,\n name: meta.name,\n speciesName: meta.speciesName,\n formName: meta.formName,\n genusText: meta.genusText,\n }\n\n const nameObj: Pkds.PokemonNameInfo = {\n displayName: txt.speciesName ?? txt.name,\n displayFormName: txt.formName,\n fullName: txt.name,\n speciesName: txt.speciesName ?? txt.name,\n formName: txt.formName,\n isNicknamed: !!nickname,\n lang: txt.lang,\n }\n\n if (meta.isForm) {\n if (meta.isMega || meta.isPrimal || meta.isGmax) {\n nameObj.displayName = nameObj.fullName\n } else if (txt.formName) {\n nameObj.displayName = `${nameObj.speciesName} (${txt.formName})`\n }\n }\n if (nickname) {\n nameObj.displayName = `${nickname} - ${nameObj.displayName}`\n }\n return nameObj\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils-BwovRocd.mjs","names":[],"sources":["../src/lib/utils.ts"],"sourcesContent":["// ----- Dataset UTILS --------------------------------------------\n\nimport { arrayUnique, capitalizeFirstLetter } from '../utils/utils-internal'\n\nexport function formatDexNum(num: number | string, positions: number = 4): string {\n return num.toString().padStart(positions, '0')\n}\n\nexport function dexNumToInt(num: number | string): number {\n return typeof num === 'string' ? Number.parseInt(num.replace(/^0+/, '')) : num\n}\n\nexport function dexNumToGen(nationalDexNum: number | string): number {\n const num = dexNumToInt(nationalDexNum)\n\n if (num <= 151) return 1\n if (num <= 251) return 2\n if (num <= 386) return 3\n if (num <= 493) return 4\n if (num <= 649) return 5\n if (num <= 721) return 6\n if (num <= 809) return 7\n if (num <= 905) return 8\n return 9\n}\n\nexport function randomPokemonList<T extends Pkds.PokemonBase>(\n pokemonList: Array<T>,\n quantity = 16,\n withForms = true,\n): Array<T> {\n const filteredPokes = withForms ? pokemonList : pokemonList.filter((pkm) => !pkm.isForm)\n const minIndex = 1\n const maxIndex = filteredPokes.length\n const distinctPokeIndices = new Set<number>()\n\n while (distinctPokeIndices.size < quantity) {\n const newPoke = Math.floor(Math.random() * (maxIndex - minIndex + 1)) + minIndex\n distinctPokeIndices.add(newPoke)\n }\n\n return Array.from(distinctPokeIndices)\n .map((index) => filteredPokes[index])\n .filter(Boolean)\n}\n\nexport function getPossiblePokemonGenders(meta: Pkds.Pokemon): Pkds.Gender[] {\n if (meta.hasGenderDifferences && meta.isFemaleForm) {\n return ['f']\n }\n if (meta.hasGenderDifferences && !meta.isFemaleForm) {\n return ['m']\n }\n if (meta.maleRate >= 100) {\n return ['m']\n }\n if (meta.femaleRate >= 100) {\n return ['f']\n }\n if (meta.maleRate <= 0 && meta.femaleRate <= 0) {\n return []\n }\n return ['m', 'f']\n}\n\nexport function getPokemonGender(\n inputGender: string | null | undefined,\n meta: Pkds.Pokemon,\n options?: { allowEmpty?: boolean },\n): Pkds.Gender {\n const possibleGenders = getPossiblePokemonGenders(meta)\n if (possibleGenders.length === 1) {\n return possibleGenders[0]\n }\n if (possibleGenders.length === 0) {\n return null\n }\n\n if (inputGender === 'm' || inputGender === 'f') {\n return inputGender\n }\n\n if (options?.allowEmpty) {\n // if allowEmpty is true, we won't determine/guess the gender, and return null\n // at this point, inputGender is either null or undefined as well\n return null\n }\n\n // if the gender is not specified, we need to determine it based on the maleRate and femaleRate\n if (meta.maleRate >= meta.femaleRate) {\n return 'm'\n }\n\n // if the femaleRate is greater than the maleRate, then the gender is female\n return 'f'\n}\n\n// ----- Dataset Text and Translation UTILS --------------------------------------------\n\nexport function translatePokemonText(\n pkm: Pkds.Pokemon,\n lang3Char: Pkds.LanguageAlpha3,\n): Pkds.PokemonText {\n const fallback = lang3Char === 'eng' ? undefined : translatePokemon(pkm, 'eng')\n const pkmName = pkm.names[lang3Char] ?? fallback?.name ?? pkm.id\n\n const texts: Pkds.PokemonText = {\n lang: lang3Char,\n genusText: pkm.genus[lang3Char] ?? fallback?.genusText,\n name: pkmName,\n speciesName: pkm.speciesNames[lang3Char] ?? pkmName ?? fallback?.speciesName ?? pkmName,\n formName: pkm.formNames[lang3Char] ?? fallback?.formName,\n }\n\n return texts\n}\n\nexport function translatePokemon(\n pokemon: Pkds.Pokemon | Pkds.TranslatedPokemon,\n lang: Pkds.LanguageAlpha3,\n dexNumPositions?: number,\n): Pkds.TranslatedPokemon {\n if (!('name' in pokemon)) {\n return {\n ...pokemon,\n ...translatePokemonText(pokemon, lang),\n speciesGen: dexNumToGen(pokemon.dexNum),\n dexNum: formatDexNum(\n pokemon.dexNum,\n dexNumPositions ?? Math.max(3, String(pokemon.dexNum).length),\n ),\n searchableText: generatePokemonSearchableText(pokemon),\n }\n }\n\n return {\n ...pokemon,\n ...translatePokemonText(pokemon, lang),\n }\n}\n\nexport function translatePokemonList(\n pokemonList: Array<Pkds.Pokemon | Pkds.TranslatedPokemon>,\n lang: Pkds.LanguageAlpha3,\n): Array<Pkds.TranslatedPokemon> {\n return pokemonList.map((pokemon) => translatePokemon(pokemon, lang))\n}\n\nexport function translatePokemonById(\n pokemonList: Array<Pkds.Pokemon | Pkds.TranslatedPokemon>,\n lang: Pkds.LanguageAlpha3,\n): Record<string, Pkds.TranslatedPokemon> {\n return Object.fromEntries(\n pokemonList.map((pokemon) => [pokemon.id, translatePokemon(pokemon, lang)]),\n )\n}\n\nexport function translatePokemonByNid(\n pokemonList: Array<Pkds.Pokemon | Pkds.TranslatedPokemon>,\n lang: Pkds.LanguageAlpha3,\n): Record<string, Pkds.TranslatedPokemon> {\n return Object.fromEntries(\n pokemonList.map((pokemon) => [pokemon.nid, translatePokemon(pokemon, lang)]),\n )\n}\n\nexport function generatePokemonDescription(\n pokemon: Pkds.TranslatedPokemon,\n lang3Char: Pkds.LanguageAlpha3,\n) {\n const parts = []\n const features = []\n const text = translatePokemonText(pokemon, lang3Char)\n\n // Basic description\n parts.push(`${text.genusText}`)\n\n // Form information\n if (pokemon.isForm) {\n parts.push(`Form: ${pokemon.formName}`)\n }\n\n // Pokemon category\n if (pokemon.isMythical) {\n features.push('Mythical')\n }\n if (pokemon.isLegendary) {\n features.push('Legendary')\n }\n\n // Type and generation information\n const types = [pokemon.type1]\n if (pokemon.type2) types.push(pokemon.type2)\n parts.push(`${types.map(capitalizeFirstLetter).join('/')} type`)\n parts.push(`It was discovered in Generation ${pokemon.gen}`)\n\n if (features.length > 0) {\n parts.push(`Classified as a ${features.join(' and ')} Pokémon`)\n }\n\n return parts.join('. ') + '.'\n}\n\nexport function generatePokemonSearchableText(poke: Pkds.Pokemon) {\n const pokeName = arrayUnique(Object.values(poke.names ?? {})).join(' ')\n const pokeFormName = arrayUnique(Object.values(poke.formNames ?? {})).join(' ')\n const speciesGen = dexNumToGen(poke.dexNum)\n\n const fullText = [\n pokeName,\n pokeFormName,\n poke.dexNum,\n poke.id,\n `type:${poke.type1}`,\n poke.type2 ? `type:${poke.type2}` : '',\n `region:${poke.region}`,\n `color:${poke.color}${poke.color === 'brown' ? ' color:orange' : ''}`,\n `gen${speciesGen} gen:${speciesGen} gen${poke.gen} gen:${poke.gen}`,\n poke.isMythical ? 'mythical' : '',\n poke.isLegendary ? 'legendary' : '',\n poke.isFemaleForm ? 'female' : '',\n poke.isBaby ? 'baby' : '',\n poke.isUltraBeast ? 'ultrabeast ultra beast' : '',\n poke.isRegional ? 'regional' : '',\n poke.isFusion ? 'fusion' : '',\n poke.isParadox ? 'paradox' : '',\n poke.isConvergent ? 'convergent' : '',\n poke.isCosmeticForm ? 'cosmetic' : '',\n poke.isGmax ? 'gigantamax gmax' : '',\n poke.isForm ? `is-form` : ``,\n poke.isMega ? `is-mega` : ``,\n poke.isBattleOnlyForm ? `is-battle-only` : `not-battle-only`,\n poke.storableIn.length > 0 ? 'is-storable' : 'not-storable',\n ]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n\n return fullText\n}\n\nexport function getGameCategoryLabel(game: Pkds.Game): string {\n switch (game.series) {\n case 'main':\n return 'Main-series'\n case 'legends':\n return 'Legends-series'\n case 'storage':\n return 'Storage-series'\n default:\n return 'Spin-off'\n }\n}\n\nexport function generateGameDescription(game: Pkds.Game, gameCatText: string) {\n const platforms = game.platforms.map((platform: string) => platform.toUpperCase()).join(' / ')\n const features = []\n const parts = []\n const genPart = game.gen > 0 ? ` from Generation ${game.gen} ` : ''\n const releaseText = game.isUnreleased ? 'that will be released for' : 'released for'\n\n parts.push(\n `Pokémon ${game.name} is a ${gameCatText} ${game.type} ${genPart}${releaseText} ${platforms}`,\n )\n\n // if (game.gen > 0) {\n // parts.push(`It's a Generation ${game.gen} game`)\n // }\n\n if (game.features.gmax) features.push('Gigantamax')\n if (game.features.tera) features.push('Terastallization')\n if (game.features.alpha) features.push('Alpha Pokémon')\n\n if (features.length > 0) {\n // parts.push(`It features ${features.join(', ')}`)\n }\n\n if (game.region && game.region !== 'unknown') {\n const capitalizedRegion = game.region.charAt(0).toUpperCase() + game.region.slice(1)\n parts.push(`The game takes place in the ${capitalizedRegion} region`)\n }\n\n return parts.join('. ') + '.'\n}\n\nexport function resolvePokemonName(\n meta: Pkds.TranslatedPokemon,\n nickname?: string,\n lang3Char?: Pkds.LanguageAlpha3,\n): Pkds.PokemonNameInfo {\n const txt: Pkds.PokemonText = lang3Char\n ? translatePokemonText(meta, lang3Char)\n : {\n lang: meta.lang,\n name: meta.name,\n speciesName: meta.speciesName,\n formName: meta.formName,\n genusText: meta.genusText,\n }\n\n const nameObj: Pkds.PokemonNameInfo = {\n displayName: txt.speciesName ?? txt.name,\n displayFormName: txt.formName,\n fullName: txt.name,\n speciesName: txt.speciesName ?? txt.name,\n formName: txt.formName,\n isNicknamed: !!nickname,\n lang: txt.lang,\n }\n\n if (meta.isForm) {\n if (meta.isMega || meta.isPrimal || meta.isGmax) {\n nameObj.displayName = nameObj.fullName\n } else if (txt.formName) {\n nameObj.displayName = `${nameObj.speciesName} (${txt.formName})`\n }\n }\n if (nickname) {\n nameObj.displayName = `${nickname} - ${nameObj.displayName}`\n }\n return nameObj\n}\n"],"mappings":";;AAIA,SAAgB,aAAa,KAAsB,YAAoB,GAAW;CAChF,OAAO,IAAI,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG;AAC/C;AAEA,SAAgB,YAAY,KAA8B;CACxD,OAAO,OAAO,QAAQ,WAAW,OAAO,SAAS,IAAI,QAAQ,OAAO,EAAE,CAAC,IAAI;AAC7E;AAEA,SAAgB,YAAY,gBAAyC;CACnE,MAAM,MAAM,YAAY,cAAc;CAEtC,IAAI,OAAO,KAAK,OAAO;CACvB,IAAI,OAAO,KAAK,OAAO;CACvB,IAAI,OAAO,KAAK,OAAO;CACvB,IAAI,OAAO,KAAK,OAAO;CACvB,IAAI,OAAO,KAAK,OAAO;CACvB,IAAI,OAAO,KAAK,OAAO;CACvB,IAAI,OAAO,KAAK,OAAO;CACvB,IAAI,OAAO,KAAK,OAAO;CACvB,OAAO;AACT;AAEA,SAAgB,kBACd,aACA,WAAW,IACX,YAAY,MACF;CACV,MAAM,gBAAgB,YAAY,cAAc,YAAY,QAAQ,QAAQ,CAAC,IAAI,MAAM;CACvF,MAAM,WAAW;CACjB,MAAM,WAAW,cAAc;CAC/B,MAAM,sCAAsB,IAAI,IAAY;CAE5C,OAAO,oBAAoB,OAAO,UAAU;EAC1C,MAAM,UAAU,KAAK,MAAM,KAAK,OAAO,KAAK,WAAW,WAAW,EAAE,IAAI;EACxE,oBAAoB,IAAI,OAAO;CACjC;CAEA,OAAO,MAAM,KAAK,mBAAmB,CAAC,CACnC,KAAK,UAAU,cAAc,MAAM,CAAC,CACpC,OAAO,OAAO;AACnB;AAEA,SAAgB,0BAA0B,MAAmC;CAC3E,IAAI,KAAK,wBAAwB,KAAK,cACpC,OAAO,CAAC,GAAG;CAEb,IAAI,KAAK,wBAAwB,CAAC,KAAK,cACrC,OAAO,CAAC,GAAG;CAEb,IAAI,KAAK,YAAY,KACnB,OAAO,CAAC,GAAG;CAEb,IAAI,KAAK,cAAc,KACrB,OAAO,CAAC,GAAG;CAEb,IAAI,KAAK,YAAY,KAAK,KAAK,cAAc,GAC3C,OAAO,CAAC;CAEV,OAAO,CAAC,KAAK,GAAG;AAClB;AAEA,SAAgB,iBACd,aACA,MACA,SACa;CACb,MAAM,kBAAkB,0BAA0B,IAAI;CACtD,IAAI,gBAAgB,WAAW,GAC7B,OAAO,gBAAgB;CAEzB,IAAI,gBAAgB,WAAW,GAC7B,OAAO;CAGT,IAAI,gBAAgB,OAAO,gBAAgB,KACzC,OAAO;CAGT,IAAI,SAAS,YAGX,OAAO;CAIT,IAAI,KAAK,YAAY,KAAK,YACxB,OAAO;CAIT,OAAO;AACT;AAIA,SAAgB,qBACd,KACA,WACkB;CAClB,MAAM,WAAW,cAAc,QAAQ,KAAA,IAAY,iBAAiB,KAAK,KAAK;CAC9E,MAAM,UAAU,IAAI,MAAM,cAAc,UAAU,QAAQ,IAAI;CAU9D,OAAO;EAPL,MAAM;EACN,WAAW,IAAI,MAAM,cAAc,UAAU;EAC7C,MAAM;EACN,aAAa,IAAI,aAAa,cAAc,WAAW,UAAU,eAAe;EAChF,UAAU,IAAI,UAAU,cAAc,UAAU;CAGvC;AACb;AAEA,SAAgB,iBACd,SACA,MACA,iBACwB;CACxB,IAAI,EAAE,UAAU,UACd,OAAO;EACL,GAAG;EACH,GAAG,qBAAqB,SAAS,IAAI;EACrC,YAAY,YAAY,QAAQ,MAAM;EACtC,QAAQ,aACN,QAAQ,QACR,mBAAmB,KAAK,IAAI,GAAG,OAAO,QAAQ,MAAM,CAAC,CAAC,MAAM,CAC9D;EACA,gBAAgB,8BAA8B,OAAO;CACvD;CAGF,OAAO;EACL,GAAG;EACH,GAAG,qBAAqB,SAAS,IAAI;CACvC;AACF;AAEA,SAAgB,qBACd,aACA,MAC+B;CAC/B,OAAO,YAAY,KAAK,YAAY,iBAAiB,SAAS,IAAI,CAAC;AACrE;AAEA,SAAgB,qBACd,aACA,MACwC;CACxC,OAAO,OAAO,YACZ,YAAY,KAAK,YAAY,CAAC,QAAQ,IAAI,iBAAiB,SAAS,IAAI,CAAC,CAAC,CAC5E;AACF;AAEA,SAAgB,sBACd,aACA,MACwC;CACxC,OAAO,OAAO,YACZ,YAAY,KAAK,YAAY,CAAC,QAAQ,KAAK,iBAAiB,SAAS,IAAI,CAAC,CAAC,CAC7E;AACF;AAEA,SAAgB,2BACd,SACA,WACA;CACA,MAAM,QAAQ,CAAC;CACf,MAAM,WAAW,CAAC;CAClB,MAAM,OAAO,qBAAqB,SAAS,SAAS;CAGpD,MAAM,KAAK,GAAG,KAAK,WAAW;CAG9B,IAAI,QAAQ,QACV,MAAM,KAAK,SAAS,QAAQ,UAAU;CAIxC,IAAI,QAAQ,YACV,SAAS,KAAK,UAAU;CAE1B,IAAI,QAAQ,aACV,SAAS,KAAK,WAAW;CAI3B,MAAM,QAAQ,CAAC,QAAQ,KAAK;CAC5B,IAAI,QAAQ,OAAO,MAAM,KAAK,QAAQ,KAAK;CAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,qBAAqB,CAAC,CAAC,KAAK,GAAG,EAAE,MAAM;CAC/D,MAAM,KAAK,mCAAmC,QAAQ,KAAK;CAE3D,IAAI,SAAS,SAAS,GACpB,MAAM,KAAK,mBAAmB,SAAS,KAAK,OAAO,EAAE,SAAS;CAGhE,OAAO,MAAM,KAAK,IAAI,IAAI;AAC5B;AAEA,SAAgB,8BAA8B,MAAoB;CAChE,MAAM,WAAW,YAAY,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;CACtE,MAAM,eAAe,YAAY,OAAO,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;CAC9E,MAAM,aAAa,YAAY,KAAK,MAAM;CAgC1C,OA9BiB;EACf;EACA;EACA,KAAK;EACL,KAAK;EACL,QAAQ,KAAK;EACb,KAAK,QAAQ,QAAQ,KAAK,UAAU;EACpC,UAAU,KAAK;EACf,SAAS,KAAK,QAAQ,KAAK,UAAU,UAAU,kBAAkB;EACjE,MAAM,WAAW,OAAO,WAAW,MAAM,KAAK,IAAI,OAAO,KAAK;EAC9D,KAAK,aAAa,aAAa;EAC/B,KAAK,cAAc,cAAc;EACjC,KAAK,eAAe,WAAW;EAC/B,KAAK,SAAS,SAAS;EACvB,KAAK,eAAe,2BAA2B;EAC/C,KAAK,aAAa,aAAa;EAC/B,KAAK,WAAW,WAAW;EAC3B,KAAK,YAAY,YAAY;EAC7B,KAAK,eAAe,eAAe;EACnC,KAAK,iBAAiB,aAAa;EACnC,KAAK,SAAS,oBAAoB;EAClC,KAAK,SAAS,YAAY;EAC1B,KAAK,SAAS,YAAY;EAC1B,KAAK,mBAAmB,mBAAmB;EAC3C,KAAK,WAAW,SAAS,IAAI,gBAAgB;CAC/C,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,CAAC,CACT,YAEW;AAChB;AAEA,SAAgB,qBAAqB,MAAyB;CAC5D,QAAQ,KAAK,QAAb;EACE,KAAK,QACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,SAAgB,wBAAwB,MAAiB,aAAqB;CAC5E,MAAM,YAAY,KAAK,UAAU,KAAK,aAAqB,SAAS,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK;CAC7F,MAAM,WAAW,CAAC;CAClB,MAAM,QAAQ,CAAC;CACf,MAAM,UAAU,KAAK,MAAM,IAAI,oBAAoB,KAAK,IAAI,KAAK;CACjE,MAAM,cAAc,KAAK,eAAe,8BAA8B;CAEtE,MAAM,KACJ,WAAW,KAAK,KAAK,QAAQ,YAAY,GAAG,KAAK,KAAK,GAAG,UAAU,YAAY,GAAG,WACpF;CAMA,IAAI,KAAK,SAAS,MAAM,SAAS,KAAK,YAAY;CAClD,IAAI,KAAK,SAAS,MAAM,SAAS,KAAK,kBAAkB;CACxD,IAAI,KAAK,SAAS,OAAO,SAAS,KAAK,eAAe;CAEtD,IAAI,SAAS,SAAS,GAAG,CAEzB;CAEA,IAAI,KAAK,UAAU,KAAK,WAAW,WAAW;EAC5C,MAAM,oBAAoB,KAAK,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,KAAK,OAAO,MAAM,CAAC;EACnF,MAAM,KAAK,+BAA+B,kBAAkB,QAAQ;CACtE;CAEA,OAAO,MAAM,KAAK,IAAI,IAAI;AAC5B;AAEA,SAAgB,mBACd,MACA,UACA,WACsB;CACtB,MAAM,MAAwB,YAC1B,qBAAqB,MAAM,SAAS,IACpC;EACE,MAAM,KAAK;EACX,MAAM,KAAK;EACX,aAAa,KAAK;EAClB,UAAU,KAAK;EACf,WAAW,KAAK;CAClB;CAEJ,MAAM,UAAgC;EACpC,aAAa,IAAI,eAAe,IAAI;EACpC,iBAAiB,IAAI;EACrB,UAAU,IAAI;EACd,aAAa,IAAI,eAAe,IAAI;EACpC,UAAU,IAAI;EACd,aAAa,CAAC,CAAC;EACf,MAAM,IAAI;CACZ;CAEA,IAAI,KAAK,QAAQ;EACf,IAAI,KAAK,UAAU,KAAK,YAAY,KAAK,QACvC,QAAQ,cAAc,QAAQ;OACzB,IAAI,IAAI,UACb,QAAQ,cAAc,GAAG,QAAQ,YAAY,IAAI,IAAI,SAAS;CAElE;CACA,IAAI,UACF,QAAQ,cAAc,GAAG,SAAS,KAAK,QAAQ;CAEjD,OAAO;AACT"}
|
package/data/abilities.json
CHANGED
|
@@ -2858,5 +2858,14 @@
|
|
|
2858
2858
|
"shortDesc": "Boosts the power of this Pokemon's Fire-type moves by 50%.",
|
|
2859
2859
|
"desc": "Boosts the power of the Pokémon's Fire-type moves by 50%.",
|
|
2860
2860
|
"tags": ["move-boost"]
|
|
2861
|
+
},
|
|
2862
|
+
{
|
|
2863
|
+
"id": "auraguard",
|
|
2864
|
+
"name": "Aura Guard",
|
|
2865
|
+
"psName": "Aura Guard",
|
|
2866
|
+
"gen": 9,
|
|
2867
|
+
"shortDesc": "This Pokemon takes 1/2 damage from contact moves.",
|
|
2868
|
+
"desc": "The Pokémon is wrapped in its aura, halving the damage it takes from moves that make direct contact.",
|
|
2869
|
+
"tags": ["defense"]
|
|
2861
2870
|
}
|
|
2862
2871
|
]
|
|
@@ -11,7 +11,11 @@
|
|
|
11
11
|
"releaseDate": "2026-04-08",
|
|
12
12
|
"region": "unknown",
|
|
13
13
|
"originMark": "none",
|
|
14
|
-
"pokedexes": [
|
|
14
|
+
"pokedexes": [
|
|
15
|
+
"champions-regular-roster-m-a",
|
|
16
|
+
"champions-regular-roster-m-b",
|
|
17
|
+
"champions-regular-roster-m-c"
|
|
18
|
+
],
|
|
15
19
|
"maxBoxes": 40,
|
|
16
20
|
"maxBoxSize": 30,
|
|
17
21
|
"platforms": ["switch", "switch2", "mobile"],
|
|
@@ -264,6 +264,9 @@
|
|
|
264
264
|
{ "pid": "vivillon-jungle", "dexNum": 666, "isForm": true, "transferOnly": true },
|
|
265
265
|
{ "pid": "vivillon-fancy", "dexNum": 666, "isForm": true, "transferOnly": true },
|
|
266
266
|
{ "pid": "vivillon-pokeball", "dexNum": 666, "isForm": true, "transferOnly": true },
|
|
267
|
+
{ "pid": "pyroar", "dexNum": 668, "isForm": false },
|
|
268
|
+
{ "pid": "pyroar-f", "dexNum": 668, "isForm": true },
|
|
269
|
+
{ "pid": "pyroar-mega", "dexNum": 668, "isForm": true },
|
|
267
270
|
{ "pid": "floette-eternal", "dexNum": 670, "isForm": true, "transferOnly": true },
|
|
268
271
|
{ "pid": "floette-eternal-mega", "dexNum": 670, "isForm": true, "transferOnly": true },
|
|
269
272
|
{ "pid": "florges", "dexNum": 671, "isForm": false },
|