Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fbd8fda
squash(pr-622): Add evolveFrom translations
lamplis Dec 30, 2025
3198ba8
squash(pr-891): Add set_number to card API
lamplis Dec 30, 2025
2b5de94
squash(pr-927): Fix Spanish type/rarity labels
lamplis Dec 30, 2025
52ae086
squash(pr-928): Add set resume abbreviation
lamplis Dec 30, 2025
99b9f5c
squash(pr-969): Add JP promo Pikachu & Cramorant
lamplis Dec 30, 2025
ebd2058
squash(pr-992): Add MEP promos 011-028
lamplis Dec 30, 2025
b1b3b1d
squash(pr-996): Share trainer legality for reprints
lamplis Dec 30, 2025
4bab83a
squash(pr-1006): Add new stamp and foil types
lamplis Dec 30, 2025
b17e42f
squash(pr-1008): Allow nullable set releaseDate
lamplis Dec 30, 2025
e31bb6e
squash(pr-1011): Add dexId to Pocket cards
lamplis Dec 30, 2025
dd5da7f
squash(pr-1015): Add McDonald's 2022-2024 sets & FR promos
lamplis Dec 30, 2025
ff41f04
squash(pr-1022): Add variant-specific image metadata
lamplis Dec 30, 2025
936713f
squash(pr-1029): Add POP 5 French translations
lamplis Dec 30, 2025
c06b14e
squash(pr-1038): Fix Raging Bolt cardmarket id
lamplis Dec 31, 2025
3cd221e
squash(pr-1041): Fix Lechonk SV1 cardmarket id
lamplis Dec 31, 2025
65dfd97
squash(pr-1042): Fix Lechonk SV1 reverse cardmarket id
lamplis Dec 31, 2025
f7e4f9a
squash(pr-1043): Fix Lechonk SV1 alt art cardmarket id
lamplis Dec 31, 2025
5d806a3
squash(pr-1044): Fix Bruno BST cardmarket id
lamplis Dec 31, 2025
96c8bea
squash(pr-1045): Add Base Set Italian translations
lamplis Dec 31, 2025
59075c4
squash(pr-1046): Fix Iron Treads TEF variant
lamplis Dec 31, 2025
665a958
squash(pr-1047): Add missing SVP promos
lamplis Dec 31, 2025
db3aa4e
squash(pr-1051): Fix Caterpie IR dex id
lamplis Dec 31, 2025
a9a984c
test(server): Add card util coverage and stabilize graphql cards
lamplis Dec 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .bruno/regressions/set-abbreviation.bru
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
meta {
name: Set abbreviation exposure
type: http
seq: 2
}

get {
url: {{BASE_URL}}/v2/en/sets/swsh3
body: none
auth: none
}

assert {
res.status: eq 200
res.body.abbreviation.official: eq DAA
}

20 changes: 20 additions & 0 deletions .bruno/regressions/set-number.bru
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
meta {
name: Card set_number structure
type: http
seq: 1
}

get {
url: {{BASE_URL}}/v2/en/cards/swsh3-136
body: none
auth: none
}

assert {
res.status: eq 200
res.body.set_number.text: eq "136/189"
res.body.set_number.nominator: eq "136"
res.body.set_number.numeric: eq 136
res.body.set_number.denominator: eq "189"
}

18 changes: 18 additions & 0 deletions .bruno/regressions/trainer-legality-and-variants.bru
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
meta {
name: Trainer legality propagation + variant images
type: http
seq: 3
}

get {
url: {{BASE_URL}}/v2/en/cards/base1-95
body: none
auth: none
}

assert {
res.status: eq 200
res.body.legal.standard: eq true
res.body.variants_detailed[0].image: contains https://assets.tcgdex.net/
}

126 changes: 93 additions & 33 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,109 @@ name: Test the Data

on:
push:
branches:
branches:
- master
pull_request_target:
branches:
- "**"
branches:
- '**'

permissions: {}

jobs:
test:
runs-on: ${{ matrix.os }}
permissions: {}
timeout-minutes: 120
defaults:
run:
shell: bash
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]

steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false

- name: Setup BunJS
uses: oven-sh/setup-bun@v2

- name: Install deps
run: |
bun install -g @usebruno/cli
bun install --frozen-lockfile
cd server
bun install --frozen-lockfile
bun run compile

- name: Validate the data & the server
run: |
bun run validate
cd server
bun run --bun validate

- name: Validate some requests
run: |
cd server
bun run start &
sleep 10
cd ../.bruno
bru run --env Developpement
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false

- name: Setup Bun
uses: oven-sh/setup-bun@v2

- name: Cache Bun installs
uses: actions/cache@v4
with:
path: |
~/.bun/install/cache
~/.bun/install/global
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lockb', 'server/bun.lockb') }}

- name: Install CLI & root deps
run: |
bun install -g @usebruno/cli
bun install --frozen-lockfile

- name: Install server deps
run: |
cd server
bun install --frozen-lockfile

- name: Run TypeScript validation (root)
run: bun run validate

- name: Run TypeScript validation (server)
run: |
cd server
bun run --bun validate

- name: Run server unit tests
run: |
cd server
bun test

- name: Compile server data
run: |
cd server
set -o pipefail
bun run compile 2>&1 | tee ../compile.log
cd ..
if grep -q "could not load file" compile.log; then
echo "::error::Compiler reported missing card files" >&2
cat compile.log
exit 1
fi
rm -f compile.log

- name: Start API server
run: |
cd server
MAX_WORKERS=1 bun run start > ../server.log 2>&1 &
echo $! > ../server.pid

- name: Wait for server readiness
run: |
for i in {1..180}; do
if curl -sf http://127.0.0.1:3000/status > /dev/null; then
exit 0
fi
sleep 2
done
echo "Server failed to start" >&2
cat server.log || true
exit 1

- name: Run Bruno integration suite
run: |
cd .bruno
bru run --env Developpement

- name: Stop API server
if: always()
run: |
if [ -f server.pid ]; then
kill "$(cat server.pid)" || true
rm -f server.pid
fi
cat server.log || true
rm -f server.log
2 changes: 2 additions & 0 deletions data-asia/S/S-P Japan.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { default } from "./S-P-JP"

2 changes: 2 additions & 0 deletions data-asia/S/S-P Japan/226.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { default } from "../S-P-JP/226"

2 changes: 2 additions & 0 deletions data-asia/S/S-P Japan/227.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { default } from "../S-P-JP/227"

20 changes: 20 additions & 0 deletions data-asia/S/S-P-JP.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Set } from '../../interfaces'
import serie from '../S'

const set: Set = {
id: "S-P-JP",
name: {
en: "S-P Promo (Japan)",
ja: "プロモカードパック(日本)"
},

serie: serie,

cardCount: {
official: 0
},

releaseDate: "2023-04-01"
}

export default set
57 changes: 57 additions & 0 deletions data-asia/S/S-P-JP/226.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { Card } from "../../../interfaces"
import Set from "../S-P-JP"

const card: Card = {
set: Set,

name: {
ja: "ピカチュウ"
},

illustrator: "Mitsuhiro Arita",
rarity: "None",
category: "Pokemon",
dexId: [25],
hp: 60,
types: ["Lightning"],
stage: "Basic",

attacks: [
{
name: {
ja: "いれかわる"
},
effect: {
ja: "このポケモンをベンチポケモンと入れ替える。"
}
}
],

weaknesses: [
{
type: "Fighting",
value: "×2"
}
],

retreat: 1,
regulationMark: "G",

description: {
ja: "おたがいの しっぽを くっつけて 電気を 流しあうのが ピカチュウ 同士の 挨拶だ。"
},

variants: {
normal: false,
reverse: false,
holo: false,
firstEdition: false
},

thirdParty: {
cardmarket: 573772,
tcgplayer: 257103
}
}

export default card
65 changes: 65 additions & 0 deletions data-asia/S/S-P-JP/227.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import { Card } from "../../../interfaces"
import Set from "../S-P-JP"

const card: Card = {
set: Set,

name: {
ja: "ウッウ"
},

illustrator: "Mitsuhiro Arita",
rarity: "None",
category: "Pokemon",
dexId: [845],
hp: 90,
types: ["Water"],
stage: "Basic",

attacks: [
{
name: {
ja: "さんれんづき"
},
damage: "60×",
effect: {
ja: "コインを3回投げ、オモテの数×60ダメージ。"
}
}
],

weaknesses: [
{
type: "Lightning",
value: "×2"
}
],

resistances: [
{
type: "Fighting",
value: "-30"
}
],

retreat: 1,
regulationMark: "G",

description: {
ja: "食いしん坊で エサの サシカマスを 丸飲みするが たまに 間違えて ほかの ポケモンに 食らいつく。"
},

variants: {
normal: false,
reverse: false,
holo: false,
firstEdition: false
},

thirdParty: {
cardmarket: 573771,
tcgplayer: 257102
}
}

export default card
Loading