@pkmn/anon v0.1.26
@pkmn/anon
Logic for anonymizing Pokémon Showdown teams and battle logs.
Installation
$ npm install @pkmn/anonUsage
@pkmn/anon provides an Anonymizer class which can be used to anonymize teams or battle logs:
import {Anonymizer, Verifier} from '@pkmn/anon';
import {Generations} from '@pkmn/data';
import {Dex} from '@pkmn/dex';
const gens = new Generations(Dex);
const gen = gens.get(raw.format.startsWith('gen') ? +raw.format.charAt(3) : 6);
const verifier = new Verifier();
const anon = Anonymizer.anonymize(gen, raw, {verifier});
if (verifier.ok()) console.log(JSON.stringify(anon, null, 2));By default, anonymization will replace player's usernames with 'Player 1' and 'Player 2' and
Pokémon's nicknames with their species name (in addition to removing chat logs, timestamps, rating
info, etc). Both anonymize and anonymizeTeam take a 'salt' option which will cause the
Anonymizer to hash the usernames and nicknames with the salt instead - this mode allows for
tracking the presence of a player or Pokémon accross multiple battle logs without revealing the
true identities.
Anonymizer's methods also take an option 'verifier' parameter - a Verifier can be used to sanity
check the log output and ensure no names have leaked out. This is almost always due to a false
positive (often a Pokémon being nicknamed something which appears in the output logs in another
location), but can be helpful in ensuring no PII gets leaked due to bugs or oversight.
CLI
The anonymize tool takes in a log as input and anonymizes it:
$ anonymize 2020-09/gen8ou/2020-09-25/gen8ou-2875469343.logIf there are potential leaks the warnings from the Verifier will be output instead. For
anonymizing logs efficiently en masse, see @pkmn/logs and the
smogon/anon workflow. The sample tool can be
used to come up with a --formats flag for the workflow - the tool queries past usage stats
reports to determine how many battles were present in a given month to be able to
determine at what rates to sample at to end up with the desired number of logs for each format:
$ sample 100000 --formats=gen8ou,gen7ou --begin=2022-01 --end=2022-04This produces --formats=gen8ou:0.019417382834173616,gen7ou:0.00402947392710268.
Browser
The recommended way of using @pkmn/anon in a web browser is to configure your bundler
(Webpack, Rollup,
Parcel, etc) to minimize it and package it with the rest of your
application.
License
This package is distributed under the terms of the MIT License.
12 months ago
11 months ago
10 months ago
9 months ago
8 months ago
7 months ago
6 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago