Commit Graph

217 Commits

Author SHA1 Message Date
Guangcong Luo
5a26d8685b Remove unused tslint dependency 2020-03-07 15:07:13 -08:00
Guangcong Luo
2f0e83c14b Categorize eslintrc rules
eslintrc rules are now sorted into categories, in theory making them
easier to maintain.
2020-03-06 22:35:45 -08:00
Waleed Hassan
8aa4f053bb
Use optional chaining and linter improvements (#6422)
This is mostly just a follow up to #6342.

`prefer-optional-chaining` was turned on and fixed in every location it
complained in. The transformed function [0] looks expensive from a
glance but from skimming through the replaced sites it doesn't appear
to be ran in any important place, so it should be OK.

The linter improvements are:
- Increase linter performance
	- Make `full-lint` and `lint` write to different caches so we
	  avoid overwriting their caches since they're different configs
	- Change husky's hook to `npm run lint` so as to write to the
	  same cache
	- Remove `@typescript-eslint/eslint-plugin-tslint` which is
	  essentially a wrapper to TSLint because the rules aren't worth
	  running another linter
- Convert `.eslintrc.json` and `.eslintrc-syntax.json` to two spaces
  rather than four tabs to respect PS' `.editorconfig`
- Rename `fulllint` to `full-lint` to ease spelling it

[0] - https://pastie.io/mmtxpf.js (prettified)
2020-03-06 11:44:32 -08:00
Guangcong Luo
b21c9047e2
Migrate to typescript-eslint (#6342) 2020-03-05 08:33:06 -08:00
Kirk Scheibelhut
738fdc9c46 Update deps to get newest smogon for set-import 2020-03-02 16:31:59 -08:00
Kirk Scheibelhut
fdf5679a24 Update set-import stats to use latest stats logic
smogon@0.2.0 now supports the qualified naming transition period
at the end of Gen 6.
2020-02-27 17:00:40 -08:00
Kirk Scheibelhut
37a331a4cb Get tools/set-import to work again
- a scripts.js init() method now calls toID
- Smogon updated the format of moveslots
2020-02-25 14:49:38 -08:00
Guangcong Luo
1d09dd1174 Fix Dragon Darts bugs
- should not stop after one faint
- should not show miss message for first miss
2020-02-20 15:58:36 -08:00
Guangcong Luo
1f8b14cb6c Update dependencies
(The newest sucrase now supports optional chaining.)

(The TSLint crash is fixed.)
2020-02-08 07:44:22 -08:00
not_a_seagull
ae28a960be Convert index.js and team-validator-async.js to typescript (#5987) 2020-01-04 07:11:54 -05:00
Spandan Punwatkar
b6b66de896 Update Repo Links (#6102) 2019-11-28 12:47:38 +04:00
Kirk Scheibelhut
71bc4d5c05 Update tools/set-import for Gen 8 2019-11-25 15:32:12 -08:00
Guangcong Luo
ae8af5a6cf Show full mocha output with fulltest
This is mostly to help debug a weird Travis issue.
2019-11-16 09:33:27 +13:00
Waleed Hassan
92b2c128c2 Upgrade to TypeScript 3.7 (#5935) 2019-11-06 23:02:36 +10:30
Kirk Scheibelhut
e73ac5920b Bump version to remove vunerability message
npm-check-updates was mistakenly listed as a transitive dependency
causing npm audit to complain about one of its dependencies.
2019-10-29 16:21:58 -07:00
Kirk Scheibelhut
e6f3a39f26 Update dependencies, revert premature TS 3.7 2019-10-03 13:58:03 -07:00
Christopher Monsanto
59846c2776 Add optional deps for sqlite, ignore databases/ 2019-10-02 15:31:00 -04:00
HoeenHero
df396ee6a1 Update to Typescript 3.7.0-beta
@Zarel mentioned that he wanted to update to the beta as soon as possible.
2019-10-01 22:12:11 -04:00
TheJetOU
dcbeed3671 Run tsc before mocha in npm run fulltest (#5781) 2019-09-15 10:21:33 -07:00
Kirk Scheibelhut
b9e5fcb387
Introduce set importer logic (#5749)
`node tools/set-import [version]` can be run to create a
`@pokemon-showdown/sets` package containing sets from Smogon, usage
stats and third party sources. Some notes:

- The build is set up so that `tools/set-import/importer.ts` is
  compiled to `tools/set-import/importer.js` - creating a
  `.tools-dist/set-import` directory for the sole artifact was
  deemed to be overkill
- The sets package is generated such that it can be used easily on
  Node or in a browser (where the large set JSON can be loaded
  asynchronously)
- Supported tiers/formats are mostly arbitrary - those popular
  enough to have a signficant playerbase or analyses on Smogon have
  been included, but additional formats can be added based on demand
- Some set information is redundant for ease of use by downstream
  users: certain formes are split out and information that could
  theoretically be inferred like level/ability/HP IVs are included
  to simplify parsing logic and make the sets more immediately
  available. This results in what should mostly be negligible
  size overhead.
- In a similar vein, display versions of effect names instead of IDs
  are used (name -> ID is trivial, ID -> name requires data lookup)
- All sets pass validation, provided certain simple transformations
  are applied (eg. reverting `battleOnly` formes like Megas)

This tool has primarily been tested to run on Linux - running on
other platforms is not guaranteed to result in error-free output.
2019-09-10 21:15:05 -04:00
Kirk Scheibelhut
73aa85fb66 Upgrade to Typescript 3.5 2019-05-29 14:42:50 -07:00
Kirk Scheibelhut
c46a61bb14 Update dependencies to the latest stable versions 2019-05-24 20:11:18 -07:00
Kirk Scheibelhut
1adcd40e48 Windows-friendly Mocha setup
This reverts commit cccc904059.
2019-04-23 07:51:06 -07:00
Kirk Scheibelhut
cccc904059 Fix Mocha setup so that filtering works properly.
With `-i` in tests/mocha.opts, `npx mocha -g Foo` runs everything
*except* the tests you actually wanted to run (the `-g` overrides
the default `-g`, but unless you specify `--no-invert`, nothing will
override the default `-i`).

Having `test` not just be `mocha` is regrettable, but breaking `npx
mocha -g` or requiring users who want to filter remember to also
pass `--no-invert` is not a good tradeoff.
2019-04-22 21:52:46 -07:00
Kirk Scheibelhut
4975f1902b Move simulator harness to sim/tools (#5451) 2019-04-18 04:17:07 +09:30
Kirk Scheibelhut
e689913084
Unify dev-tools runners and convert to Typescript (#5441)
- Refactor dev-tools/harness.js and dev-tools/smokes.js to separate
  out the script/CLI code and implementation code into separate
  files.
- Rename 'smoke' to 'exhaustive' ('multi' mode can also be used
  for "smoke testing") to better describe its behavior.
- Rewrite the runners in Typescript for type safety.
- Refactor common build utilities into dev-tools/build.js and
  introduce the notion of a 'full' build analogous to 'full' tests.
2019-04-15 15:22:37 -07:00
Kirk Scheibelhut
5c10ebf428
Rework mocha fulltest configuration (#5442) 2019-04-15 14:16:52 -07:00
Slayer95
72b7e990fd Test: Implement npm run fulltest (#5437)
- Tests flagged with (slow) will no longer be run in `npm test`.
- Travis CI will now run `fulltest`.
- Unskip slow dev-tools tests and flag as such.
2019-04-13 04:38:32 +09:30
Kirk Scheibelhut
334ca88b50 Update dependencies (#5430) 2019-04-10 18:46:37 +08:00
Kirk Scheibelhut
6c1ab30977 Update dependencies (#5407) 2019-04-04 14:39:53 +08:00
Kirk Scheibelhut
081ce82d15 Revert "Sockets: Refactor event handlers" instead of sockjs. (#5378)
* Revert "Sockets: Refactor event handlers"

This reverts commit d1242593f3.

* Revert "Switch back to sockjs 0.3.18 (#5376)"

This reverts commit 880ded4ed8.
2019-03-30 00:52:02 +08:00
Kirk Scheibelhut
880ded4ed8 Switch back to sockjs 0.3.18 (#5376) 2019-03-29 23:27:41 +08:00
Kirk Scheibelhut
d01b1599fc Update dependencies (#5352) 2019-03-27 01:59:30 +09:00
Kirk Scheibelhut
b33971a3d3 Inline replace into build and remove dependency (#5248) 2019-03-04 19:36:00 -06:00
Kirk Scheibelhut
6e122d5d74 Refactor lib/ to be native Typescript (#5217) 2019-03-02 11:12:24 -06:00
Guangcong Luo
f5a8723f1c Fix build/hotpatch process
Hotpatching and running `./pokemon-showdown` now automatically run
`./build`. There should now mostly not be any reason you'd want to
manually run `./build`, except if you're invoking tests directly.

In addition, a lot of redundant code has been removed.

I'm not 100% sure this works on Windows, but I'm sure I'll get reports
if anything breaks.
2019-02-27 01:47:44 -06:00
Kirk Scheibelhut
b09fd63377 Refactor sim/ to be native Typescript (#5210) 2019-02-26 11:03:30 -06:00
Konrad Borowski
eacf4881f6 Update TypeScript to version 3.3.3333
Using a tilde in a version number as TypeScript explicitly doesn't
follow semver according to Microsoft/TypeScript#14116.
2019-02-23 15:26:58 +01:00
Konrad Borowski
0a7c37990a Refactor Emoji regex to use \p syntax (#5146)
(Increases minimum Node version requirement)
2019-02-07 11:59:16 -06:00
Guangcong Luo
f3e45fbb72 Move server code to server/
Also move mods/ to data/mods/

This makes PS more monorepo-like. The intent is to further separate
the sim and the server code, but without fully committing to splitting
the repository itself.

We now support `./pokemon-showdown start` in addition to
`./pokemon-showdown`. I'm not clear which I want to be the default
yet.
2019-02-03 16:07:06 -06:00
Guangcong Luo
13614b9890 Update for TypeScript 3.2
TypeScript 3.2 unearthed a metric fuckton of bugs, making this change
take effectively forever.
2018-12-08 21:39:38 -06:00
Guangcong Luo
1a82499387 Don't run full tests on Git prepush
We're now only doing a lint on prepush. We already have CI to make sure
nothing is missed; so we can be a bit lazier on prepush.
2018-10-17 14:49:23 -05:00
Guangcong Luo
8ac84e3ea6 Update dependencies 2018-10-17 14:49:18 -05:00
Bär Halberkamp
424339be69 Add functionality for detecting image size and scaling images
This relies on a small new dependency: probe-image-size. Approved by Zarel.
2018-10-08 04:48:34 +02:00
Quinton Lee
94016f6218 Update Typescript to 3.1 (#4879) 2018-10-05 04:02:54 -05:00
Quinton Lee
5b12626e41 Update eslint and mocha to 5.x (#4878) 2018-09-29 20:11:12 -05:00
MacChaeger
82c792f82c Update to TypeScript 3.0.1 (#4710) 2018-08-07 03:27:28 +09:00
Guangcong Luo
772d9f7d2a Remove Git precommit hook
Waiting for tests to commit before the Git commit message editor opens
is really annoying. The prepush hook is enough.
2018-07-17 19:01:41 +09:00
Quinton Lee
95d396ccdc
Travis CI: update to Node 8 and fix Typescript cache 2018-07-06 17:01:38 -05:00
Quinton Lee
4e3af0d243
Fix build error 2018-07-05 16:13:10 -05:00
Bär Halberkamp
27977931c0 Wifi: use string instead of String for types 2018-07-05 16:13:46 -04:00
Quinton Lee
1142b47e61
Dependencies: re-add Husky
Accidentally removed in cf50a3d642
2018-05-06 15:03:00 -05:00
Quinton Lee
cf50a3d642 Typescript the rest of mods/ (#4588) 2018-05-05 14:56:45 -05:00
Guangcong Luo
322eb9fbf0 TypeScript: Start work on typing chat commands
Nothing is being checked yet because there's a whole bunch of
complication in there, but this is a start.
2018-05-02 17:45:15 -05:00
Quinton Lee
77136a1bcd
Add npm script to run tsc
This allows you to run tsc with the version specified in package.json if you have a different version installed globally
2018-04-30 19:45:01 -05:00
Sacha Reinert
9e2ccfdb24 Dependencies: Add Husky githook (#4576) 2018-04-15 03:57:50 -05:00
Quinton Lee
b45d595519 Update Typescript to 2.8 (#4532) 2018-04-05 17:33:35 -05:00
Quinton Lee
c799393710 Typescript data/ and config/formats (#4513)
Also removes Battle Factory methods accidentally re-added in d0a4a689a7
2018-03-26 09:50:51 -05:00
Guangcong Luo
e6cc393109 Fix unused variable in ProcessManager 2018-01-23 07:45:03 -06:00
Guangcong Luo
e8163824ff Remove validate-conditionals eslint rule
As far as I can tell, `curly, multi-line, consistent` does everything I
want; there's no reason to keep around a validate-conditionals rule.

Which is probably good, since eslint is deprecating the API for this,
anyway. The nice thing about not relying on deprecated APIs is that now
you can lint PS with `eslint` rather than needing to memorize
command-line switches.
2018-01-19 13:25:10 -06:00
Morfent
777ba0fc5f Sockets: implement permessage-deflate support (#4253)
Permessage-deflate is an extensIon that compresses websocket messages with zlib.
SockJS already supports it (indirectly) and the client's load balancer already
inserts the header in the opening handshake when making a WebSocket connection.

Config.wsdeflate makes this optional and allows tweaking the extension's resource
usage.
2017-12-15 15:43:48 -06:00
Guangcong Luo
819ff64d06 Update dependencies 2017-11-17 19:41:32 -06:00
Guangcong Luo
ce8dc52501 Replace ofe with node-oom-heapdump
(ofe is no longer actively maintained)
2017-11-17 19:39:54 -06:00
Guangcong Luo
bfeb75f547 Remove nonDefaultDependencies hack
Modern versions of npm have made it less and less tenable to have
truly optional dependencies, so we'll just bite the bullet and let
people have slightly slower installs in exchange for not having to
deal with npm weirdness.
2017-11-17 19:31:09 -06:00
Guangcong Luo
f5e7133044 Add tsc to npm test 2017-11-08 01:27:46 -06:00
Guangcong Luo
55b18bbc30 Simplify eslint invocation 2017-11-08 01:26:25 -06:00
Guangcong Luo
fa0bc881b5 Update TypeScript version 2017-11-06 21:49:53 -06:00
Guangcong Luo
3b2ada7c43 Update misc dependencies 2017-10-08 03:43:12 -05:00
Guangcong Luo
dcffa2a37d Update Mocha dependency 2017-10-08 03:36:04 -05:00
Guangcong Luo
c4e13fc4fa Update dependencies
Mocha 4 has a weird issue where it doesn't terminate, so we can't use
it for now.
2017-10-07 23:59:52 -05:00
Albert Zhang
2164d08229 Fix breakage with node-static 0.7.9 and mime 2 (#4002)
mime 2 broke node-static 0.7.9, update to 0.7.10 fixes this
2017-09-21 16:19:57 -05:00
Guangcong Luo
b2e989fc76 Fix npm start 2017-08-27 13:59:56 -07:00
Guangcong Luo
6e7aa9c8dd Remove mock-fs-require-fix from dependencies 2017-07-25 03:01:15 -04:00
panpawn
2fc84fa633 v0.11.0 -> v0.11.1 (#3710)
The change from v0.10.x -> v0.11.0 was in November of 2016, and a lot has chanced since then
2017-06-30 15:28:48 +09:00
Guangcong Luo
0143ae28dd Replace fs module (#3686)
The new FS module is an abstraction layer over the built-in fs module.

The main reason it exists is because I need an abstraction layer I can
disable writing from. But that'll be in another commit.

Currently, mine is better because:
 - paths are always relative to PS's base directory
 - Promises (seriously wtf Node Core what are you thinking)
 - PS-style API: FS("foo.txt").write("bar") for easier argument order
 - mkdirp

This also increases the minimum supported Node version from v6.0 to
v7.7, because we now use async/await. Sorry for the inconvenience!

This also drops the mock-fs-require-fix dependency

mock-fs-require-fix was always kind of a huge hack. It's no longer
necessary, with an FS API that does everything it used to.

This removes a lot of other hacks from test/main.js, which is nice.
2017-06-24 13:42:54 -07:00
Guangcong Luo
f87c0e2790 Use Unicode in package.json
`npm install` forces package.json into using the unicode accented-e in
"Pokemon" instead of the escaped format, so committing this prevents the
dirty tree that would otherwise happen every time someone installed
dependencies.
2017-06-23 06:49:58 -04:00
Quinton Lee
ec10d30996 eslint: Lint sim/ directory (#3670) 2017-06-21 20:00:17 -07:00
Bär Halberkamp
961ffc3f9b Upgrade eslint to 4.x (#3657) 2017-06-18 22:37:43 -07:00
Ben Davies
b66e395bf6 Add Config.ofe, refactor optional dependency usage (#3644)
Config.ofe toggles whether or not to write heapdumps if sockets workers
run out of memory, since ofe is an optional dependency but is not
installed by default. nodemailer is now a nonDefaultDependency, and
will complain if it's not installed when Config.crashguardemail is
enabled.
2017-06-17 14:37:11 -07:00
Guangcong Luo
9bd53ab3d7 Update optionalDependencies
Closes #3396

I don't see a need to add another david-dm icon for keeping it
up-to-date, though.
2017-05-18 05:38:14 -05:00
Guangcong Luo
b8df1b365a Remove fuzzur dependency
We no longer use it.

Nondeterministic tests are annoying and fuzzers are only useful for
detecting crashes, memory leaks, etc. You can't use them to detect
behavior correctness because that's what your actual code does.

(In other words, fuzzers are useful, but not as part of a regression
test suite.)
2017-03-17 23:14:52 -05:00
Guangcong Luo
f402bdc8b5 v0.11.0 2016-11-29 17:44:17 -06:00
Ivo Julca
ddfe02efe3 Build: Fix Node v7 support 2016-11-17 14:20:33 -05:00
panpawn
a57e3828f3 Update to newest SockJS (#2795)
This is the latest stable version of SockJS
2016-09-28 22:30:33 -07:00
Ben Davies
d992f1c13f Update package.json and CONTRIBUTING.md to mention Node 6 (#2746) 2016-09-16 00:42:15 -07:00
Guangcong Luo
d3f4e34f97 Update to newest SockJS 2016-08-27 03:12:01 -05:00
Ivo Julca
bfb4cffe30 Update dev dependencies
- Mocha's new major version fixes the persistent
deprecation warnings on usage of every `npm` command.
- MockFS is locked to 3.10.0 due to an issue affecting
its sandbox capabilities.
https://github.com/tschaub/mock-fs/issues/145
2016-08-03 01:24:54 -05:00
Ivo Julca
62a5397083 Lint: Use latest version and features of ESLint 2016-08-03 01:24:36 -05:00
Ivo Julca
e69d9dc803 Test: Dramatically increase coverage of choice parser 2016-06-16 08:25:37 -05:00
Guangcong Luo
08dae5b485 eslint: Manually skip ignored directories
eslint's ignore system first gathers a list of all files, then
decides which ones should be ignored. The "gather a list of all
files" runs out of memory when used on the main server with its
100 million log files, even though the log directory is ignored.

So now we're only passing the files we want linted to eslint.

Hopefully they can fix eslint/eslint#5679 so we can just
`eslint .` again
2016-05-02 22:46:45 -04:00
Ivo Julca
a9098dd565 Update dev dependencies
- Eslint@3 brings some advanced static path analysis to the table.
- Latest version of Mocha doesn`t really bring anything outstanding,
but the caret should cover the next version, which will fix the
current subdep deprecation warnings on `npm install`.
- Mock-FS update brings support for fs.access and fs.accessSync,
which are the Node.js` blessed APIs to replace fs.exists.
2016-04-25 19:41:51 -05:00
Guangcong Luo
52cc7f2e37 Remove Object.values external dependency
An external dependency is kind of overkill when the only
implementation we need is three lines.

This also lets us write a more performant implementation that
omits the parts irrelevant to us.
2016-03-21 10:15:55 -05:00
Guangcong Luo
a125a3ed7b Remove sugar-deprecated 2016-03-16 09:51:23 -05:00
Ivo Julca
0281176fd1 Remove usage of Array|Object methods implemented by Sugar.js
Adds a dependency to shim Object.values until it's natively available.
2016-03-09 16:55:34 -05:00
Ivo Julca
bc1a46eee1 Deps: Deprecate sugar extensions 2016-03-09 16:31:44 -05:00
Guangcong Luo
e624b9d5c7 Merge pull request #2350 from xfix/unify-style
Make code style consistent between files
2015-12-31 23:36:19 +00:00
Konrad Borowski
79a5b23f25 Modify data and mods files to follow style rules 2016-01-01 00:18:00 +01:00
Guangcong Luo
cc6715c677 Add pokemon-showdown binary file
`./pokemon-showdown` should probably eventually replace `node app.js`
as the preferred way to launch PS.

Also update package.json to reflect this.
2015-12-31 16:51:41 -06:00
Ivo Julca
f5b3a3b875 Test: use mock-fs to sandbox the file system 2015-12-20 03:22:02 -05:00
Konrad Borowski
156e193bed Only enable certain ES6 features during ESLint test
Currently, only those features are allowed: let/const, classes, and
octal literals. More can be added when needed, as long main Showdown
server has a supporting Node.js's version.

This also accidentally fixes a bug which caused data files to not
be checked for `let`/`const` keyword existence, which would cause
a problem in a web browser.
2015-12-10 23:07:32 +01:00