Commit Graph

65 Commits

Author SHA1 Message Date
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
Guangcong Luo
b1ea19d5b5 Further improve handling of crashed subprocesses 2020-02-23 01:33:35 -08:00
Guangcong Luo
e36aa987e4 Make ProcessManager more crash-resistant
ProcessManager is now able to automatically respawn subprocesses that
have crashed.
2020-02-21 22:31:16 -08:00
Waleed Hassan
34e215c7a6
Support renaming rooms (#6295) 2020-02-21 00:47:07 -08:00
Spandan Punwatkar
b6b66de896 Update Repo Links (#6102) 2019-11-28 12:47:38 +04:00
Guangcong Luo
10062ece4f Fix Koffing/Weezing Gen 7 Abilities
PS apparently doesn't have gen-accurate Ability data for Pokémon in
Gen 3 that gained Abilities between Gen 3 and Gen 4 (like Pidgeot
still has Tangled Feet in Gen 3), but that will have to be left for
a future commit.
2019-11-16 14:39:14 +13:00
Guangcong Luo
23f9bfa1b7
Split up server/chat-commands/ (#5943)
`server/chat-commands.js` is now a directory. It's been split into
`core`, `moderation`, and `admin`. `info` and `roomsettings` from
`chat-plugins` have also moved to `chat-commands`.

Some cleanup:

- Bot commands for inserting HTML into rooms like `/adduhtml` have been
  moved from `info` into `admin`.

- `/a` has been renamed `/addline`, for clarity (and also moved from
  `info` into `admin`).

- Room management commands like `/createroom` and `/roomintro` were
  moved to `room-settings`

- `chat-commands/admin` has been TypeScripted
2019-11-15 11:12:54 +13:00
asgdf
edebcbc4a9 Support loading plugins from chat-plugins/private/ (#5867) 2019-10-14 11:11:37 +11:00
Waleed Hassan
5607c158e4 Use void in promises to appease TSLint (#5827) 2019-10-03 19:08:30 +10:00
Kirk Scheibelhut
9ab3f5a668
Make /hotpatch fail if git history hasn't changed (#5688)
/forcehotpatch can be used to perform the hotpatch regardless.
2019-08-12 10:23:24 +02:00
Guangcong Luo
af8ed06abf
Fix bug in ProcessManager#destroy
Fixes #5654
2019-07-24 17:41:08 -05:00
Guangcong Luo
f374a13370 Support \u0000 in Dashycode 2019-07-12 23:38:31 -05:00
Guangcong Luo
5f6af9049f
Clarify Dashycode documentation 2019-07-12 02:04:07 -05:00
Guangcong Luo
4653cd6b15 Add documentation for Dashycode 2019-07-11 06:17:14 -05:00
Guangcong Luo
257cb76a90 Fix Dashycode non-ASCII encoding
Dashycode had a bug that made it incorrectly encode non-ASCII
characters. I think this was fixed at some point but never made it
to PS's copy of Dashycode? Anyway, fixed now.
2019-07-11 05:13:25 -05:00
Guangcong Luo
7436c1f0f2 Remove import = and export =
`import =` and `export =` are really only intended for backwards
compatibility with CommonJS. While I really don't like the new module
system TC39 has designed for us, it's what we should be using, and
consistency is important.
2019-05-16 01:27:07 +04:00
Guangcong Luo
e1c364fb79 Refactor DNSBL -> IPTools
This is mostly a TypeScript refactor, but it does come with several
renames:

Dnsbl -> IPTools
Dnsbl.query -> IPTools.queryDnsbl
Dnsbl.reverse -> IPTools.getHost
2019-05-14 10:57:08 +10:00
Kirk Scheibelhut
dfd8fc504a Wrap long line in lib/streams.ts 2019-04-10 14:19:12 -07:00
Kirk Scheibelhut
334ca88b50 Update dependencies (#5430) 2019-04-10 18:46:37 +08:00
Kirk Scheibelhut
15fe4d2ff1 Stop closing STDOUT/STDERR in lib/streams.ts (#5419)
Fixes #5403 for Node versions prior to v10.12.0.
2019-04-07 15:34:06 +08:00
Guangcong Luo
6d563f555a Fix stream ending 2019-03-24 02:31:39 +09:00
Guangcong Luo
78c0433436 Fix ./pokemon-showdown simulate-battle
Fixes #5338
2019-03-23 17:39:11 +09:00
Kirk Scheibelhut
2b1c278c42 Fix 'floating' promises and enable lint errors going forward (#5297) 2019-03-22 02:21:17 +09:00
Guangcong Luo
efa0af0ef1 Propagate errors through streams 2019-03-17 07:48:02 +09:00
Guangcong Luo
9073a5a8bf Improve Streams typing
When I originally wrote the Streams library, TypeScript-in-JS didn't
support generics. But now the library can have significantly nicer
typing, and so it now does.
2019-03-16 17:12:21 +09:00
Kirk Scheibelhut
0e1708bf9f Enable prefer-const and max 120 character lines for .ts files (#5292) 2019-03-16 07:14:04 +09:00
JetOU
85533ee3a0 Change forEach to for...of (#5269) 2019-03-08 11:24:58 -06:00
Kirk Scheibelhut
6e122d5d74 Refactor lib/ to be native Typescript (#5217) 2019-03-02 11:12:24 -06:00
Guangcong Luo
b7c252fbd6 Automatically end BattleStreams at end of battle
PS prefers to keep battle streams open (for `/evalbattle`) until
manually ended, but this is confusing some other users. We now
automatically end streams unless the `keepAlive` option is set.

Fixes #5157
2019-02-09 21:16:45 -06:00
Guangcong Luo
75dd2f408e Fix minor typos 2019-02-09 00:03:51 -06:00
Guangcong Luo
6f185f0b2e Fix listener overflow in FS write streams
This happens if you write to an FS write stream more than like 15
times at once.
2019-01-26 00:33:32 -06:00
Guangcong Luo
6a32e53890 Forward team validator crashes to main process 2019-01-11 00:41:49 -06:00
Guangcong Luo
6424bd5e72 Forward battle process crashes to main process
This makes it so battle process crashes now appear in the Dev room,
instead of failing more silently.

This should also help them be easier to debug.
2019-01-07 20:15:17 -06:00
Guangcong Luo
6245b2f8fe Fix FS.writeUpdate
The old FS.writeUpdate throttle code was broken and unnecessarily
complicated. Since cancelable Promises don't exist and I was thinking
in Promises, I forgot about the existence of `clearTimeout`.

Rewriting with `clearTimeout` produces significantly more readable
code, which should no longer be bugged, and should in fact handle
complicated mixes of throttle times exactly the way I want them to
be handled.

(I rewrote this so many times in unpushed code, and each time turned
out unnecessarily complicated because I didn't remember `clearTimeout`
until now.)
2018-12-31 02:41:14 -06:00
Guangcong Luo
43dc92f652 Make ProcessManager slightly safer 2018-10-22 15:45:23 -05:00
Guangcong Luo
c934c04bbc Fix bug in previous commit 2018-10-20 17:55:54 -05:00
Guangcong Luo
4e9ad4e373 Handle process crashes slightly more gracefully 2018-10-20 17:45:17 -05:00
Guangcong Luo
c872a8f766
Improve FS throttle (#4867)
PS's FS(...).writeUpdate(...) has a `throttle` option.

This changes it so it's possible to call it with the throttle on
sometimes and off sometimes, and "throttle off" will pre-empt "throttle
on" calls.
2018-10-08 01:49:11 -05:00
Quinton Lee
94016f6218 Update Typescript to 3.1 (#4879) 2018-10-05 04:02:54 -05:00
MacChaeger
82c792f82c Update to TypeScript 3.0.1 (#4710) 2018-08-07 03:27:28 +09:00
Guangcong Luo
467b545496 Add example code for using the Sim API 2018-04-15 06:10:08 -05:00
Guangcong Luo
724c5ce7bc Fix more bugs in FileReadStream 2018-02-13 12:49:56 -05:00
Guangcong Luo
879d0a0e12 Fix FileReadStream
It hasn't been kept up to date for various stream API changes. This fix
makes it work properly again.
2018-02-14 02:29:20 +09:00
Guangcong Luo
da55a7b443 Fix crash on large modlogs 2018-02-13 23:02:18 +09:00
Guangcong Luo
1531b662c6 Refactor battle stream system
This contains a lot of minor refactors, but the main thing that's going
on here is that battle stream writes have been streamlined to be a lot
easier for others to use.

We even support:

    ./pokemon-showdown simulate-battle

which provides a stdio interface for anyone using any programming
language to simulate a battle.
2018-01-28 21:06:49 -06:00
Guangcong Luo
e6cc393109 Fix unused variable in ProcessManager 2018-01-23 07:45:03 -06:00
Guangcong Luo
0c2d712540 Fix Process Manager releasing
This now makes processWrapper.release() a lot more consistent about
actually releasing a process.
2018-01-21 11:37:30 -06:00
Guangcong Luo
2ea6f39876 Fix Process Manager default respawn
Now calling respawn() without any arguments will respawn the same
number of processes currently running.
2018-01-21 11:37:30 -06:00
Guangcong Luo
1c119bf3fa Fix streams.js doc comment
(Also improve STREAMS documentation a bit)
2018-01-20 12:16:47 -06:00