This is a bit hacky, but works in all the most common situations.
I wrote this a few weeks ago but was undecided about the `[premajor]`
tag format. I'm still not sure about it, but it's not like I'm going
to be any more sure if I keep waiting.
ESLint has a whole new config format, so I figure it's a good time to
make the config system saner.
- First, we no longer have separate eslint-no-types configs. Lint
performance shouldn't be enough of a problem to justify the
relevant maintenance complexity.
- Second, our base config should work out-of-the-box now. `npx eslint`
will work as expected, without any CLI flags. You should still use
`npm run lint` which adds the `--cached` flag for performance.
- Third, whatever updates I did fixed style linting, which apparently
has been bugged for quite some time, considering all the obvious
mixed-tabs-and-spaces issues I found in the upgrade.
Also here are some changes to our style rules. In particular:
- Curly brackets (for objects etc) now have spaces inside them. Sorry
for the huge change. ESLint doesn't support our old style, and most
projects use Prettier style, so we might as well match them in this way.
See https://github.com/eslint-stylistic/eslint-stylistic/issues/415
- String + number concatenation is no longer allowed. We now
consistently use template strings for this.
* Update Minimize Description to Match Supercell Slam Interaction
* Update Supercell Slam Description to match Minimize Interaction
* Save Gen 8 Description of Minimize
TypeScript 4.8+ supports Lowercase for lowercase strings, which isn't
exactly what ID is, but can be used to type IDs in object keys and data
entries that previously required string. I'm calling it IDEntry in places
where it should be an ID but TypeScript doesn't support that.
Very conveniently, no additional casts will be needed when using ID
where IDEntry is expected.
It's caught at least a few bugs, which is also why I'm PRing: I didn't
write the code for the bugs it found, and don't know if it's the right
way to fix them.
This ballooned into several other type refactors.
* Add AbilityFlags interface
* Add flags to abilities data (Karthik's script)
* Convert isBreakable to its new flag
* Convert most of isPermanent to its new flag
* Convert Trace to its new flag
* Convert Skill Swap to its new flag
* Convert Wandering Spirit to the failskillswap flag
* Update miscelleneous descriptions that depend on cantsuppress
* Convert Entrainment to its flag
* Convert Receiver/PoA to its flag
* Convert Role Play to its flag
* Implement Doodle failure conditions
* Various cleanup
* Breakable fixes
* How did I manage to do this
* Allow LightningRod to be breakable in Gen 3
* Implement notransform flag
* Tera Shell oopsie
* Fix more things after the rebase
* And fix Teraform Zero
* Update data/abilities.ts
* Update data/abilities.ts
* Update data/abilities.ts
* Update data/mods/partnersincrime/abilities.ts
* Update data/abilities.ts
* Update data/mods/sharedpower/abilities.ts
* Update abilities.ts
---------
Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com>