getcompetitive 4.2.0 → 4.4.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/README.md CHANGED
@@ -17,7 +17,8 @@ Smogon-tier and archetype surface that used to sit alongside it is gone.
17
17
 
18
18
  ## What it provides
19
19
 
20
- - **26 tools** across six domains: data, team analysis, team workflows (paste in, diagnose, prepare matchups), meta (usage-derived), battle mechanics, and official regulation sets
20
+ - **28 tools** across six domains: data, team analysis, team workflows (paste in, diagnose, prepare matchups, learn from replays), meta (usage-derived), battle mechanics, and official regulation sets
21
+ - **Six workflow prompts** — `/team-doctor`, `/matchup-prep`, `/build-around`, `/tournament-prep`, `/learn-my-team`, `/meta-report` — server-provided templates that chain the deterministic tools, so compound workflows stay discoverable without a 40-tool surface
21
22
  - **Structured, agent-first definitions** — every tool declares MCP annotations and an output schema, returns `structuredContent` alongside JSON text, and documents all of its parameters; the deterministic half of the [TDQS](https://tdqs.dev) checklist is linted in CI
22
23
  - Full **Pokémon Showdown** dataset — species, alternate forms, stats, moves, items, abilities, natures, learnsets, types
23
24
  - **Battle math** from Smogon's calculator — stat calculation and full damage calculation (weather, terrain, boosts, items)
@@ -56,11 +57,13 @@ Built on [`@pkmn/dex`](https://github.com/pkmn/EPOKe) (Showdown data) and
56
57
  | `format_team` | Render a canonical team back into paste text, round-tripping through `parse_team` |
57
58
  | `diagnose_team` | "Fix my team": weaknesses with evidence, then concrete spread, move, item and member changes, each backed by exact math or usage data |
58
59
  | `prepare_matchup` | "Prepare me": their likely sets by usage, speed races with margins, key damage rolls, bring-four, leads, and win/loss conditions |
60
+ | `analyze_replay` | Post-match read of a battle log: teams, KOs with causes, observed Speed order, damage percentages, and a type-coverage read |
59
61
 
60
62
  ### Meta (usage-derived)
61
63
  | Tool | Purpose |
62
64
  | --- | --- |
63
65
  | `list_threats` | Most-used Pokemon of a regulation, ranked by measured usage (role, tier, usage share) with the sample and sources behind it |
66
+ | `compare_meta` | What is changing: last 7 days of usage vs the 7 before, per species and per two-species core, from a committed build-time aggregation |
64
67
  | `get_set` | Most-played set for one or several species (item, ability, nature, EVs, 4 moves), with the Mega form and ability where relevant; covers each regulation's ranked species, which `list_threats` lists |
65
68
 
66
69
  ### Regulations (Pokémon Champions / VGC)
@@ -137,10 +140,39 @@ With Docker (after `docker build -t getcompetitive .`):
137
140
  For Claude Desktop, add one of the same entries under `mcpServers` in
138
141
  `claude_desktop_config.json`.
139
142
 
143
+ ## Remote endpoint
144
+
145
+ The same surface runs over Streamable HTTP — the stateless remote mode, one
146
+ request per transport, safe behind a load balancer:
147
+
148
+ ```bash
149
+ node dist/http-server.js # http://127.0.0.1:3000/mcp
150
+ PORT=8080 node dist/http-server.js
151
+ ```
152
+
153
+ Connect a client with the URL `http://<host>:<port>/mcp`. TLS, auth and rate
154
+ limiting are the deployer's concern: the server itself remains a pure offline
155
+ read.
156
+
157
+ ## Workflow prompts
158
+
159
+ Six server-provided prompts make the compound workflows discoverable without
160
+ adding a tool per workflow — each chains the deterministic tools, and each
161
+ follows the same doctrine: the model explains, getcompetitive proves.
162
+
163
+ | Prompt | What it chains |
164
+ | --- | --- |
165
+ | `/team-doctor` | `parse_team` → `diagnose_team` → `format_team` ("fix my team") |
166
+ | `/matchup-prep` | `parse_team` → `prepare_matchup` ("here is my opponent") |
167
+ | `/build-around` | `get_set` → `analyze_team` → `diagnose_team` → `check_legality` → `format_team` |
168
+ | `/tournament-prep` | `get_regulation` → `list_threats` → `get_set` (a pre-event briefing) |
169
+ | `/learn-my-team` | `parse_team` → `analyze_team` → `diagnose_team` → `get_set` (a team guide) |
170
+ | `/meta-report` | `list_threats` → `get_set` on the top five (a data-dated meta report) |
171
+
140
172
  ## Verify
141
173
 
142
174
  ```bash
143
- npm test # builds and drives every tool over real MCP stdio
175
+ npm test # builds and drives every tool over real MCP stdio, plus the HTTP entrypoint
144
176
  ```
145
177
 
146
178
  ## Example queries
@@ -159,9 +191,11 @@ npm test # builds and drives every tool over real MCP stdio
159
191
 
160
192
  The Showdown dataset and battle math track `@pkmn/dex` / `@smogon/calc`. Official
161
193
  **Regulation Sets change seasonally**; the legal rosters are regenerated with
162
- `node scripts/extract-regs.mjs`, and the **threat list / standard sets**
163
- (`src/threats.ts`) are generated from live usage by
164
- `node scripts/build-threats.mjs <regulation>`. Both generated data files are
194
+ `node scripts/extract-regs.mjs`, the **threat list / standard sets**
195
+ (`src/threats.ts`) with `node scripts/build-threats.mjs <regulation>`, and the
196
+ **two-window usage history** behind `compare_meta` with
197
+ `node scripts/build-meta-history.mjs <regulation>` (it refuses to write unless
198
+ every tournament in the window was fetched). All generated data files are
165
199
  committed, so the tools stay offline at runtime. See [CONTRIBUTING](CONTRIBUTING.md).
166
200
 
167
201
  ## Contributing
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * getcompetitive — MCP server over Streamable HTTP: the remote-endpoint mode.
4
+ *
5
+ * node dist/http-server.js # defaults to port 3000, host 127.0.0.1
6
+ * PORT=8080 node dist/http-server.js
7
+ *
8
+ * Connect any MCP client to http://<host>:<port>/mcp. This is the same
9
+ * transport-agnostic server as the stdio entrypoint — identical tools and
10
+ * prompts. It runs in stateless mode, the shape the SDK recommends for remote
11
+ * deployments: each request gets a fresh transport (stateless transports are
12
+ * single-request by design, so reusing one would collide on message ids), no
13
+ * session state is kept, and the whole thing can sit behind a load balancer.
14
+ * Deployment concerns — TLS, auth, rate limits, hosting — are deliberately left
15
+ * to whoever runs it: the server itself stays a pure offline read.
16
+ */
17
+ import http from 'node:http';
18
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
19
+ import { buildServer } from './server.js';
20
+ const port = Number(process.env.PORT ?? 3000);
21
+ const host = process.env.HOST ?? '127.0.0.1';
22
+ const httpServer = http.createServer((req, res) => {
23
+ void (async () => {
24
+ // Stateless: a fresh server+transport per request, per the SDK's contract
25
+ // that a stateless transport handles exactly one request.
26
+ const server = buildServer();
27
+ const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
28
+ await server.connect(transport);
29
+ await transport.handleRequest(req, res);
30
+ })().catch((e) => {
31
+ console.error('MCP request failed:', e instanceof Error ? e.message : e);
32
+ if (!res.headersSent) {
33
+ res.writeHead(500, { 'content-type': 'application/json' });
34
+ res.end(JSON.stringify({ jsonrpc: '2.0', error: { code: -32603, message: 'Internal error' } }));
35
+ }
36
+ });
37
+ });
38
+ httpServer.listen(port, host, () => {
39
+ console.error(`getcompetitive MCP server listening on http://${host}:${port}/mcp (stateless)`);
40
+ });
41
+ process.on('SIGINT', () => {
42
+ httpServer.close(() => process.exit(0));
43
+ });
44
+ process.on('SIGTERM', () => {
45
+ httpServer.close(() => process.exit(0));
46
+ });
47
+ //# sourceMappingURL=http-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC;AAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAChD,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,0EAA0E;QAC1E,0DAA0D;QAC1D,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC;QACvF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IACjC,OAAO,CAAC,KAAK,CAAC,iDAAiD,IAAI,IAAI,IAAI,kBAAkB,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -1,37 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * getcompetitive — MCP server for the Pokémon Champions meta.
3
+ * getcompetitive — MCP server for the Pokémon Champions meta, over stdio.
4
4
  *
5
5
  * Champions is the only game here, so the surface is scoped to it: the official
6
6
  * regulation sets, the usage-derived threat list, and the data lookups and
7
7
  * battle math a team needs — all in the game's own terms (doubles, level 50,
8
8
  * 66 stat points, no Terastallization).
9
9
  */
10
- import { readFileSync } from 'node:fs';
11
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
12
10
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
13
- import { registerDataTools } from './tools/data.js';
14
- import { registerCalcTools } from './tools/calc.js';
15
- import { registerRegulationTools } from './tools/regulations.js';
16
- import { registerAnalyzeTools } from './tools/analyze.js';
17
- import { registerMetaTools } from './tools/meta.js';
18
- import { registerTeamTools } from './tools/team.js';
19
- import { registerDoctorTool } from './tools/doctor.js';
20
- import { registerMatchupTool } from './tools/matchup.js';
21
- import { registerSpritesTool } from './tools/sprites.js';
22
- const { version } = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
23
- const server = new McpServer({
24
- name: 'getcompetitive',
25
- version,
26
- });
27
- registerDataTools(server);
28
- registerCalcTools(server);
29
- registerRegulationTools(server);
30
- registerAnalyzeTools(server);
31
- registerMetaTools(server);
32
- registerTeamTools(server);
33
- registerDoctorTool(server);
34
- registerMatchupTool(server);
35
- registerSpritesTool(server);
11
+ import { buildServer } from './server.js';
12
+ const server = buildServer();
36
13
  await server.connect(new StdioServerTransport());
37
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC3C,CAAC;AAEzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,gBAAgB;IACtB,OAAO;CACR,CAAC,CAAC;AAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAChC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAE5B,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;AAC7B,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
@@ -0,0 +1,389 @@
1
+ // Generated by scripts/build-meta-history.mjs — do not edit by hand.
2
+ // Two 7-day windows of measured usage (last 7 days vs the 7 before) for
3
+ // `compare_meta`, keyed by regulation id: per-species usage share and the
4
+ // most common species pairs, aggregated from the same tournament source the
5
+ // threat list uses. Regenerate with `node scripts/build-meta-history.mjs <regulation>`.
6
+ export default { "m-c": {
7
+ "regulation": "m-c",
8
+ "name": "Regulation Set M-C",
9
+ "source": "usage",
10
+ "sourceAsOf": "2026-09-19",
11
+ "note": "Computed from 2091 teams across 29 tournaments in the last 7 days and 1292 teams across the 7 days before that. Windows are rolling: regenerate to slide them forward.",
12
+ "windows": {
13
+ "current": {
14
+ "start": "2026-09-12",
15
+ "end": "2026-09-19",
16
+ "teams": 2091
17
+ },
18
+ "previous": {
19
+ "start": "2026-09-05",
20
+ "end": "2026-09-12",
21
+ "teams": 1292
22
+ }
23
+ },
24
+ "species": [
25
+ {
26
+ "species": "Gholdengo",
27
+ "current": 23.7,
28
+ "previous": 11.8
29
+ },
30
+ {
31
+ "species": "Raichu",
32
+ "current": 15.3,
33
+ "previous": 6.9
34
+ },
35
+ {
36
+ "species": "Arcanine",
37
+ "current": 18.4,
38
+ "previous": 11
39
+ },
40
+ {
41
+ "species": "Milotic",
42
+ "current": 12.1,
43
+ "previous": 7
44
+ },
45
+ {
46
+ "species": "Rillaboom",
47
+ "current": 56.5,
48
+ "previous": 51.8
49
+ },
50
+ {
51
+ "species": "Staraptor",
52
+ "current": 7.5,
53
+ "previous": 3.4
54
+ },
55
+ {
56
+ "species": "Volcarona",
57
+ "current": 6.7,
58
+ "previous": 3.3
59
+ },
60
+ {
61
+ "species": "Gengar",
62
+ "current": 4.6,
63
+ "previous": 1.7
64
+ },
65
+ {
66
+ "species": "Annihilape",
67
+ "current": 3.6,
68
+ "previous": 0.9
69
+ },
70
+ {
71
+ "species": "Metagross",
72
+ "current": 5.5,
73
+ "previous": 2.8
74
+ },
75
+ {
76
+ "species": "Politoed",
77
+ "current": 4.7,
78
+ "previous": 2.2
79
+ },
80
+ {
81
+ "species": "Archaludon",
82
+ "current": 11.3,
83
+ "previous": 9
84
+ },
85
+ {
86
+ "species": "Froslass",
87
+ "current": 7,
88
+ "previous": 5.5
89
+ },
90
+ {
91
+ "species": "Sylveon",
92
+ "current": 11.5,
93
+ "previous": 10.2
94
+ },
95
+ {
96
+ "species": "Indeedee",
97
+ "current": 25.5,
98
+ "previous": 24.3
99
+ },
100
+ {
101
+ "species": "Armarouge",
102
+ "current": 5.8,
103
+ "previous": 4.8
104
+ },
105
+ {
106
+ "species": "Gardevoir",
107
+ "current": 8.8,
108
+ "previous": 8.1
109
+ },
110
+ {
111
+ "species": "Glimmora",
112
+ "current": 3.1,
113
+ "previous": 2.6
114
+ },
115
+ {
116
+ "species": "Salamence",
117
+ "current": 37.2,
118
+ "previous": 37.1
119
+ },
120
+ {
121
+ "species": "Golisopod",
122
+ "current": 16.5,
123
+ "previous": 16.4
124
+ },
125
+ {
126
+ "species": "Grimmsnarl",
127
+ "current": 4.9,
128
+ "previous": 4.9
129
+ },
130
+ {
131
+ "species": "Excadrill",
132
+ "current": 5.5,
133
+ "previous": 5.6
134
+ },
135
+ {
136
+ "species": "Pawmot",
137
+ "current": 3.6,
138
+ "previous": 3.8
139
+ },
140
+ {
141
+ "species": "Primarina",
142
+ "current": 3.7,
143
+ "previous": 3.9
144
+ },
145
+ {
146
+ "species": "Tyranitar",
147
+ "current": 7.7,
148
+ "previous": 8.2
149
+ },
150
+ {
151
+ "species": "Swampert",
152
+ "current": 3.6,
153
+ "previous": 4.1
154
+ },
155
+ {
156
+ "species": "Dragonite",
157
+ "current": 3.6,
158
+ "previous": 4.1
159
+ },
160
+ {
161
+ "species": "Pelipper",
162
+ "current": 12.7,
163
+ "previous": 13.5
164
+ },
165
+ {
166
+ "species": "Farigiraf",
167
+ "current": 15.5,
168
+ "previous": 16.3
169
+ },
170
+ {
171
+ "species": "Hatterene",
172
+ "current": 3.6,
173
+ "previous": 4.5
174
+ },
175
+ {
176
+ "species": "Garchomp",
177
+ "current": 13.1,
178
+ "previous": 14
179
+ },
180
+ {
181
+ "species": "Venusaur",
182
+ "current": 3.5,
183
+ "previous": 4.6
184
+ },
185
+ {
186
+ "species": "Charizard",
187
+ "current": 9.1,
188
+ "previous": 10.7
189
+ },
190
+ {
191
+ "species": "Aerodactyl",
192
+ "current": 2.8,
193
+ "previous": 4.5
194
+ },
195
+ {
196
+ "species": "Delphox",
197
+ "current": 2.5,
198
+ "previous": 4.3
199
+ },
200
+ {
201
+ "species": "Torkoal",
202
+ "current": 4.5,
203
+ "previous": 6.6
204
+ },
205
+ {
206
+ "species": "Lucario",
207
+ "current": 5.9,
208
+ "previous": 8.1
209
+ },
210
+ {
211
+ "species": "Incineroar",
212
+ "current": 33.4,
213
+ "previous": 35.6
214
+ },
215
+ {
216
+ "species": "Sneasler",
217
+ "current": 46.8,
218
+ "previous": 49.3
219
+ },
220
+ {
221
+ "species": "Ninetales",
222
+ "current": 2.5,
223
+ "previous": 5
224
+ }
225
+ ],
226
+ "cores": [
227
+ {
228
+ "core": [
229
+ "Gholdengo",
230
+ "Rillaboom"
231
+ ],
232
+ "current": 19.7,
233
+ "previous": 8.7
234
+ },
235
+ {
236
+ "core": [
237
+ "Raichu",
238
+ "Rillaboom"
239
+ ],
240
+ "current": 12.8,
241
+ "previous": 4.6
242
+ },
243
+ {
244
+ "core": [
245
+ "Gholdengo",
246
+ "Raichu"
247
+ ],
248
+ "current": 9.6,
249
+ "previous": 2.2
250
+ },
251
+ {
252
+ "core": [
253
+ "Arcanine",
254
+ "Rillaboom"
255
+ ],
256
+ "current": 15,
257
+ "previous": 8.4
258
+ },
259
+ {
260
+ "core": [
261
+ "Arcanine",
262
+ "Gholdengo"
263
+ ],
264
+ "current": 8.6,
265
+ "previous": 2.5
266
+ },
267
+ {
268
+ "core": [
269
+ "Arcanine",
270
+ "Raichu"
271
+ ],
272
+ "current": 7.7,
273
+ "previous": 2.3
274
+ },
275
+ {
276
+ "core": [
277
+ "Gholdengo",
278
+ "Salamence"
279
+ ],
280
+ "current": 12.5,
281
+ "previous": 7.2
282
+ },
283
+ {
284
+ "core": [
285
+ "Gholdengo",
286
+ "Sneasler"
287
+ ],
288
+ "current": 11.7,
289
+ "previous": 6.7
290
+ },
291
+ {
292
+ "core": [
293
+ "Rillaboom",
294
+ "Staraptor"
295
+ ],
296
+ "current": 4.5,
297
+ "previous": 0.7
298
+ },
299
+ {
300
+ "core": [
301
+ "Gholdengo",
302
+ "Staraptor"
303
+ ],
304
+ "current": 4.2,
305
+ "previous": 0.5
306
+ },
307
+ {
308
+ "core": [
309
+ "Milotic",
310
+ "Rillaboom"
311
+ ],
312
+ "current": 7,
313
+ "previous": 3.3
314
+ },
315
+ {
316
+ "core": [
317
+ "Raichu",
318
+ "Sneasler"
319
+ ],
320
+ "current": 6.2,
321
+ "previous": 2.6
322
+ },
323
+ {
324
+ "core": [
325
+ "Arcanine",
326
+ "Staraptor"
327
+ ],
328
+ "current": 4.3,
329
+ "previous": 0.9
330
+ },
331
+ {
332
+ "core": [
333
+ "Raichu",
334
+ "Staraptor"
335
+ ],
336
+ "current": 4.2,
337
+ "previous": 0.9
338
+ },
339
+ {
340
+ "core": [
341
+ "Arcanine",
342
+ "Salamence"
343
+ ],
344
+ "current": 11,
345
+ "previous": 7.8
346
+ },
347
+ {
348
+ "core": [
349
+ "Arcanine",
350
+ "Sneasler"
351
+ ],
352
+ "current": 9.4,
353
+ "previous": 6.3
354
+ },
355
+ {
356
+ "core": [
357
+ "Milotic",
358
+ "Salamence"
359
+ ],
360
+ "current": 6.1,
361
+ "previous": 3.1
362
+ },
363
+ {
364
+ "core": [
365
+ "Garchomp",
366
+ "Rillaboom"
367
+ ],
368
+ "current": 7.4,
369
+ "previous": 4.5
370
+ },
371
+ {
372
+ "core": [
373
+ "Gholdengo",
374
+ "Incineroar"
375
+ ],
376
+ "current": 8.1,
377
+ "previous": 5.3
378
+ },
379
+ {
380
+ "core": [
381
+ "Rillaboom",
382
+ "Volcarona"
383
+ ],
384
+ "current": 5.8,
385
+ "previous": 3
386
+ }
387
+ ]
388
+ } };
389
+ //# sourceMappingURL=meta-history.data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-history.data.js","sourceRoot":"","sources":["../src/meta-history.data.ts"],"names":[],"mappings":"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"}