@trading-tazos-game/cli 1.0.3 → 2.0.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
@@ -1,137 +1,134 @@
1
- # 🎴 @trading-tazos-game/cli
1
+ # 🎴 TTG CLI — @trading-tazos-game/cli
2
2
 
3
- <div align="center">
3
+ **Official CLI for the Trading Tazos Game** — search, battle, and explore 351 digital tazos from your terminal.
4
4
 
5
- <img src="./logo-complete-black.png" alt="Trading Tazos Game CLI" height="80" />
5
+ [![npm](https://img.shields.io/npm/v/@trading-tazos-game/cli)](https://www.npmjs.com/package/@trading-tazos-game/cli)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
7
 
7
- > Official CLI for the **Trading Tazos Game** — search, battle, and manage your digital tazo collection from the terminal.
8
-
9
- [![npm version](https://img.shields.io/npm/v/@trading-tazos-game/cli)](https://www.npmjs.com/package/@trading-tazos-game/cli)
10
- [![license](https://img.shields.io/npm/l/@trading-tazos-game/cli)](./LICENSE)
11
- [![node](https://img.shields.io/node/v/@trading-tazos-game/cli)](https://nodejs.org)
12
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/smouj/trading-tazos-game-cli/pulls)
13
-
14
- ---
15
-
16
- ## Install
8
+ ## Quick Start
17
9
 
18
10
  ```bash
19
- npm install -g @trading-tazos-game/cli
11
+ npx @trading-tazos-game/cli search lumipuff
20
12
  ```
21
13
 
22
- Requirements: **Node.js ≥ 18**
23
-
24
- ## Quick Start
14
+ Or install globally:
25
15
 
26
16
  ```bash
27
- # Search a tazo
28
- tazos search lumipuff
29
-
30
- # Get full battle stats
31
- tazos info cipherion
32
-
33
- # See collection statistics
17
+ npm install -g @trading-tazos-game/cli
34
18
  tazos stats
35
-
36
- # Top 10 by attack power
37
- tazos top --stat attack
38
-
39
- # Simulate a battle (deterministic — same seed = same result!)
40
- tazos battle --player 5 --opponent 5 --seed 42
41
19
  ```
42
20
 
43
21
  ## Commands
44
22
 
45
- | Command | Description |
46
- |---------|-------------|
47
- | `tazos search [query]` | Search tazos by name, slug, or number |
48
- | `tazos info <name>` | Show detailed 9-stat breakdown with bars |
49
- | `tazos stats` | Collection statistics by franchise, rarity, condition |
50
- | `tazos top` | Leaderboard by any stat (attack, defense, bounce...) |
51
- | `tazos battle` | Simulate a full battle with physics and captures |
52
-
53
- ### Search Options
23
+ ### `tazos search [query]`
24
+ Search tazos by name, slug, or number.
54
25
 
26
+ ```bash
27
+ tazos search cipherion # Search by name
28
+ tazos search --franchise minimon --rarity legendary # Filter
29
+ tazos search --stats brotalix # Show stat breakdown
30
+ tazos search -l 50 # More results
55
31
  ```
56
- tazos search [query] [options]
57
32
 
58
- -f, --franchise <slug> Filter: minimon, cybermon, dracobell
59
- -r, --rarity <rarity> Filter: common, uncommon, rare, ultra, legendary
60
- -s, --stats Show full 9-stat breakdown
61
- -l, --limit <n> Max results (default: 15)
33
+ ### `tazos info <name>`
34
+ Detailed stats for a specific tazo.
35
+
36
+ ```bash
37
+ tazos info 001-brotalix
38
+ tazos info cipherion
62
39
  ```
63
40
 
64
- ### Battle Options
41
+ ### `tazos stats`
42
+ Collection overview — totals, breakdowns by franchise and rarity.
65
43
 
44
+ ```bash
45
+ tazos stats
66
46
  ```
67
- tazos battle [options]
68
47
 
69
- -p, --player <n> Your team size (default: 5)
70
- -o, --opponent <n> Opponent team size (default: 5)
71
- -s, --seed <n> Random seed for reproducible battles
72
- -f, --fast Skip detailed turn log
73
- ```
48
+ ### `tazos top`
49
+ Leaderboard by stat.
74
50
 
75
- ## Authentication
51
+ ```bash
52
+ tazos top --stat attack --limit 10
53
+ tazos top --stat defense --franchise cybermon
54
+ ```
76
55
 
77
- Set your API token to access your personal collection:
56
+ ### `tazos battle`
57
+ Simulate a battle between two random teams.
78
58
 
79
59
  ```bash
80
- export TAZOS_AUTH_TOKEN="your-jwt-token"
60
+ tazos battle # 5v5 battle
61
+ tazos battle --player 8 --opponent 8 # 8v8
62
+ tazos battle --seed 42 --fast # Reproducible + fast mode
81
63
  ```
82
64
 
83
- Get your token by logging in at [tradingtazosgame.com](https://tradingtazosgame.com) and copying it from localStorage (`ttg-token`).
65
+ ## Options
84
66
 
85
- ## Features
67
+ | Option | Description |
68
+ |--------|-------------|
69
+ | `-f, --franchise <slug>` | Filter: minimon, dracobell, cybermon |
70
+ | `-r, --rarity <rarity>` | Filter: common, uncommon, rare, ultra, legendary |
71
+ | `-s, --stats` | Show full 9-stat breakdown |
72
+ | `-l, --limit <n>` | Max results (default: 15) |
73
+ | `--sortBy <stat>` | Sort by: attack, defense, spin, weight, etc. |
74
+ | `--sortOrder asc/desc` | Sort direction |
86
75
 
87
- - 🎯 **9 Battle Stats** — Attack, Defense, Resistance, Weight, Stability, Spin, Control, Bounce, Precision
88
- - 🎲 **Deterministic Battles** — Seed-based RNG, same seed = same outcome every time
89
- - 📊 **Stat Bars** — ASCII bar charts for visual stat comparison
90
- - 🌈 **Franchise Colors** — Minimon yellow, Dracobell orange/red, Cybermon cyan
91
- - ⭐ **Rarity Stars** — ★ common through ★★★★★ legendary
92
- - 🔄 **Reproducible** — Every battle can be replayed with `--seed`
76
+ ## Battle Stats
93
77
 
94
- ## API
78
+ Each tazo has 9 stats used in battles:
79
+
80
+ | Stat | Label | Role |
81
+ |------|-------|------|
82
+ | Attack | ATK | Raw damage potential |
83
+ | Defense | DEF | Damage reduction |
84
+ | Resistance | RES | Status/effect resistance |
85
+ | Weight | WGT | Physical mass (momentum) |
86
+ | Stability | STB | Resistance to knockback |
87
+ | Spin | SPN | Rotation speed |
88
+ | Control | CTL | Trajectory control |
89
+ | Bounce | BNC | Rebound elasticity |
90
+ | Precision | PRC | Accuracy |
95
91
 
96
- The CLI connects to the public [Trading Tazos Game API](https://tradingtazosgame.com):
92
+ ## Game Rules (from game-core.ts)
97
93
 
98
- - `GET /api/tazos` Search, filter, sort tazos
99
- - `GET /api/stats` Collection statistics
94
+ - **Deck size**: 20 tazos
95
+ - **Starting hand**: 5 cards
96
+ - **Draw per turn**: 1 card
97
+ - **Max hand size**: 10 cards
100
98
 
101
- The live public API currently exposes verified published tazos only. Draft Season 1 tazos stay hidden until their art and metadata pass QA.
99
+ ## API
102
100
 
103
- Override the API base URL:
101
+ The CLI connects to the public TTG Backend API:
104
102
 
105
- ```bash
106
- export TAZOS_API_URL="https://your-instance.com"
103
+ ```
104
+ https://api.tradingtazosgame.com
107
105
  ```
108
106
 
109
- ## Programmatic Usage
107
+ No authentication required for public data endpoints (`/api/tazos`, `/api/stats`).
110
108
 
111
- ```typescript
112
- import { api } from "@trading-tazos-game/cli"
109
+ Set `TAZOS_API_URL` to use a custom server:
113
110
 
114
- const data = await api.search("lumipuff")
115
- console.log(data.tazos[0].attack) // → 48
111
+ ```bash
112
+ TAZOS_API_URL=http://localhost:3004 tazos stats
116
113
  ```
117
114
 
118
- See `src/index.ts` for the full public API surface.
119
-
120
115
  ## Development
121
116
 
122
117
  ```bash
123
- git clone https://github.com/smouj/trading-tazos-game-cli.git
118
+ git clone https://github.com/smouj/trading-tazos-game-cli
124
119
  cd trading-tazos-game-cli
125
120
  npm install
126
121
  npm run build
127
- node dist/cli.js --help
122
+ npm start
128
123
  ```
129
124
 
130
- ## Related
125
+ ## Links
131
126
 
132
- - [Trading Tazos Game](https://tradingtazosgame.com) — Play in your browser
133
- - [Main Repo](https://github.com/smouj/Trading-Tazos-Game) — Full-stack Next.js game
134
- - [npm Package](https://www.npmjs.com/package/@trading-tazos-game/cli)
127
+ - **Play now**: https://play.tradingtazosgame.com
128
+ - **Website**: https://tradingtazosgame.com
129
+ - **ProductHunt**: https://www.producthunt.com/products/trading-tazos-game-ttg
130
+ - **Source**: https://github.com/smouj/trading-tazos-game-cli
131
+ - **Engine**: https://github.com/smouj/TTG-Engine
135
132
 
136
133
  ## License
137
134
 
package/dist/cli.js CHANGED
@@ -6,6 +6,7 @@ import { infoCommand } from "./commands/info.js";
6
6
  import { statsCommand } from "./commands/stats.js";
7
7
  import { battleCommand } from "./commands/battle.js";
8
8
  import { topCommand } from "./commands/top.js";
9
+ import { DECK_SIZE, STARTING_HAND_SIZE, DRAW_PER_TURN } from "./lib/game-core.js";
9
10
  import pkg from "../package.json" with { type: "json" };
10
11
  const program = new Command();
11
12
  program
@@ -20,7 +21,8 @@ ${chalk.dim("Examples:")}
20
21
  ${chalk.cyan("$ tazos top --stat attack")} ${chalk.dim("Top 10 tazos by attack")}
21
22
  ${chalk.cyan("$ tazos battle --player 5")} ${chalk.dim("Simulate a quick battle")}
22
23
 
23
- ${chalk.dim("API:")} https://tradingtazosgame.com
24
+ ${chalk.dim("Game Rules:")} Deck ${DECK_SIZE} cards · Starting hand ${STARTING_HAND_SIZE} · Draw ${DRAW_PER_TURN}/turn
25
+ ${chalk.dim("API:")} https://api.tradingtazosgame.com
24
26
  ${chalk.dim("Repo:")} https://github.com/smouj/trading-tazos-game-cli
25
27
  `);
26
28
  program.addCommand(searchCommand());
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;KACnI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,WAAW,CAAC,OAAO,EAAE;EACtB,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC;IAC5F,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC;;EAEvF,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;EACjB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;CACnB,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAA;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACjF,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;KACnI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,WAAW,CAAC,OAAO,EAAE;EACtB,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC;IAC5F,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC;;EAEvF,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,SAAS,0BAA0B,kBAAkB,WAAW,aAAa;EAC/G,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;EACjB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;CACnB,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAA;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAA"}
package/dist/client.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  export interface Tazo {
2
2
  id: string;
3
- name: string | null;
4
- displayName: string | null;
5
- number: string | null;
6
- slug: string;
3
+ name: string;
4
+ image: string;
7
5
  rarity: string;
8
- condition: string;
9
- franchise: string | null;
10
- franchiseSlug: string | null;
11
- collection: string | null;
12
- imageUrl: string | null;
6
+ color: string;
7
+ glow: string;
8
+ power: number;
9
+ description: string;
10
+ series: string;
11
+ isCanonical: boolean;
12
+ source: "static" | "db";
13
13
  attack: number;
14
14
  defense: number;
15
15
  resistance: number;
@@ -19,8 +19,16 @@ export interface Tazo {
19
19
  control: number;
20
20
  bounce: number;
21
21
  precision: number;
22
- role: string | null;
23
- isOwned: boolean;
22
+ franchise?: string;
23
+ franchiseSlug?: string;
24
+ number?: string;
25
+ slug?: string;
26
+ displayName?: string;
27
+ condition?: string;
28
+ collection?: string;
29
+ imageUrl?: string;
30
+ role?: string;
31
+ isOwned?: boolean;
24
32
  }
25
33
  export interface TazoListResponse {
26
34
  tazos: Tazo[];
@@ -28,26 +36,28 @@ export interface TazoListResponse {
28
36
  }
29
37
  export interface StatsResponse {
30
38
  totalTazos: number;
31
- ownedTazos: number;
39
+ ownedTazos?: number;
32
40
  totalFranchises: number;
33
41
  totalCollections: number;
34
42
  byRarity: Record<string, number>;
35
- byCondition: Record<string, number>;
43
+ byCondition?: Record<string, number>;
36
44
  byFranchise: Record<string, number>;
37
45
  topAttack: Tazo | null;
38
46
  topDefense: Tazo | null;
39
47
  }
40
48
  export interface CollectionResponse {
41
- items: {
49
+ items: Array<{
42
50
  id: string;
43
51
  quantity: number;
44
52
  isFavorite: boolean;
45
53
  acquiredAt: string;
46
54
  tazo: Tazo;
47
- }[];
55
+ }>;
48
56
  total: number;
49
57
  franchiseSummary: Record<string, number>;
50
58
  }
59
+ /** Rarity EN → ES for API queries (maps EN user input to Backend ES) */
60
+ export declare const RARITY_EN_TO_ES: Record<string, string>;
51
61
  export declare const api: {
52
62
  search(query: string, opts?: {
53
63
  franchise?: string;
package/dist/client.js CHANGED
@@ -1,5 +1,53 @@
1
- const BASE_URL = process.env.TAZOS_API_URL || "https://tradingtazosgame.com";
1
+ const BASE_URL = process.env.TAZOS_API_URL || "https://api.tradingtazosgame.com";
2
2
  const AUTH_TOKEN = process.env.TAZOS_AUTH_TOKEN || "";
3
+ /** Rarity mapping: Backend ES → CLI EN */
4
+ const RARITY_ES_TO_EN = {
5
+ comun: "common",
6
+ raro: "rare",
7
+ epico: "ultra",
8
+ legendario: "legendary",
9
+ };
10
+ /** Rarity EN → ES for API queries (maps EN user input to Backend ES) */
11
+ export const RARITY_EN_TO_ES = {
12
+ common: "comun",
13
+ uncommon: "raro",
14
+ rare: "raro",
15
+ ultra: "epico",
16
+ legendary: "legendario",
17
+ };
18
+ /** Compute role from stat profile */
19
+ function computeRole(t) {
20
+ const stats = { attack: t.attack, defense: t.defense, spin: t.spin, precision: t.precision, resistance: t.resistance };
21
+ const top = Object.entries(stats).reduce((a, b) => (a[1] > b[1] ? a : b));
22
+ if (top[1] <= 50)
23
+ return "balanced";
24
+ switch (top[0]) {
25
+ case "attack": return "offensive";
26
+ case "defense": return "defensive";
27
+ case "spin": return "spinner";
28
+ case "precision": return "sniper";
29
+ case "resistance": return "tank";
30
+ default: return "balanced";
31
+ }
32
+ }
33
+ /** Enrich an API tazo with CLI-compatible derived fields */
34
+ function enrichTazo(t) {
35
+ const number = t.id.match(/^\d+/)?.[0] || t.id.split("-")[0] || "";
36
+ return {
37
+ ...t,
38
+ rarity: RARITY_ES_TO_EN[t.rarity] || t.rarity,
39
+ franchise: t.series,
40
+ franchiseSlug: t.series,
41
+ number,
42
+ slug: t.id,
43
+ displayName: t.name,
44
+ condition: "mint",
45
+ collection: t.series.charAt(0).toUpperCase() + t.series.slice(1),
46
+ imageUrl: t.image?.startsWith("http") ? t.image : `https://tradingtazosgame.com${t.image}`,
47
+ role: computeRole(t),
48
+ isOwned: false,
49
+ };
50
+ }
3
51
  async function apiGet(path) {
4
52
  const headers = { "Accept": "application/json" };
5
53
  if (AUTH_TOKEN) {
@@ -19,28 +67,52 @@ export const api = {
19
67
  if (query)
20
68
  params.set("search", query);
21
69
  if (opts?.franchise && opts.franchise !== "all")
22
- params.set("franchise", opts.franchise);
23
- if (opts?.rarity && opts.rarity !== "all")
24
- params.set("rarity", opts.rarity);
70
+ params.set("series", opts.franchise);
71
+ if (opts?.rarity && opts.rarity !== "all") {
72
+ params.set("rarity", RARITY_EN_TO_ES[opts.rarity] || opts.rarity);
73
+ }
25
74
  params.set("limit", String(opts?.limit || 20));
26
- return apiGet(`/tazos?${params}`);
75
+ const data = await apiGet(`/tazos?${params}`);
76
+ return { tazos: data.tazos.map(enrichTazo), total: data.total };
27
77
  },
28
78
  async getBySlug(slug) {
29
- const params = new URLSearchParams({ search: slug, limit: "1" });
79
+ const params = new URLSearchParams({ search: slug, limit: "5" });
30
80
  const data = await apiGet(`/tazos?${params}`);
31
- return data.tazos.find(t => t.slug === slug || t.slug?.includes(slug)) || data.tazos[0] || null;
81
+ const enriched = data.tazos.map(enrichTazo);
82
+ const match = enriched.find((t) => t.slug === slug || t.id === slug || t.slug?.includes(slug));
83
+ return match || enriched[0] || null;
32
84
  },
33
85
  async stats() {
34
- return apiGet("/stats");
86
+ const data = await apiGet("/stats");
87
+ // Map rarity keys from ES to EN
88
+ const byRarity = {};
89
+ for (const [k, v] of Object.entries(data.byRarity)) {
90
+ byRarity[RARITY_ES_TO_EN[k] || k] = typeof v === "number" ? v : 0;
91
+ }
92
+ return {
93
+ totalTazos: data.totalTazos,
94
+ totalFranchises: data.totalFranchises,
95
+ totalCollections: data.totalCollections,
96
+ byRarity,
97
+ byFranchise: data.byFranchise,
98
+ topAttack: data.topAttack ? enrichTazo(data.topAttack) : null,
99
+ topDefense: data.topDefense ? enrichTazo(data.topDefense) : null,
100
+ };
35
101
  },
36
102
  async topTazos(stat, limit = 10) {
37
- const params = new URLSearchParams({ sortBy: stat, sortOrder: "desc", limit: String(limit) });
38
- return apiGet(`/tazos?${params}`);
103
+ const params = new URLSearchParams({
104
+ sortBy: stat,
105
+ sortOrder: "desc",
106
+ limit: String(limit),
107
+ });
108
+ const data = await apiGet(`/tazos?${params}`);
109
+ return { tazos: data.tazos.map(enrichTazo), total: data.total };
39
110
  },
40
111
  async random(limit = 6) {
41
- const params = new URLSearchParams({ limit: "30" });
112
+ const params = new URLSearchParams({ limit: "50" });
42
113
  const data = await apiGet(`/tazos?${params}`);
43
- const shuffled = [...data.tazos].sort(() => Math.random() - 0.5);
114
+ const enriched = data.tazos.map(enrichTazo);
115
+ const shuffled = [...enriched].sort(() => Math.random() - 0.5);
44
116
  return { tazos: shuffled.slice(0, limit), total: limit };
45
117
  },
46
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { Command } from "commander";
2
2
  import chalk from "chalk";
3
3
  import { api } from "../client.js";
4
4
  import { formatBattleCard, banner } from "../lib/format.js";
5
+ import { DECK_SIZE, STARTING_HAND_SIZE, DRAW_PER_TURN } from "../lib/game-core.js";
5
6
  /** Deterministic pseudo-random - same seed = same battle */
6
7
  function mulberry32(seed) {
7
8
  return () => { seed |= 0; seed = seed + 0x6D2B79F5 | 0; let t = Math.imul(seed ^ seed >>> 15, 1 | seed); t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t; return ((t ^ t >>> 14) >>> 0) / 4294967296; };
@@ -91,11 +92,18 @@ function simulateBattle(playerTazos, opponentTazos, seed) {
91
92
  }
92
93
  export function battleCommand() {
93
94
  return new Command("battle")
94
- .description("Simulate a battle between two teams of tazos")
95
- .option("-p, --player <n>", "Player team size", "5")
96
- .option("-o, --opponent <n>", "Opponent team size", "5")
95
+ .description(`Simulate a battle between two teams of tazos ` +
96
+ `(official rules: ${DECK_SIZE}-card deck, ${STARTING_HAND_SIZE}-card starting hand, ${DRAW_PER_TURN} draw/turn)`)
97
+ .option("-p, --player <n>", "Player team size (2-10)", "5")
98
+ .option("-o, --opponent <n>", "Opponent team size (2-10)", "5")
97
99
  .option("-s, --seed <n>", "Random seed for reproducible battles")
98
100
  .option("-f, --fast", "Skip detailed turn log")
101
+ .addHelpText("after", `
102
+ ${chalk.dim("Game Rules:")}
103
+ ${chalk.dim(`Official deck size:`)} ${chalk.bold(String(DECK_SIZE))}
104
+ ${chalk.dim(`Starting hand: `)} ${chalk.bold(String(STARTING_HAND_SIZE))} cards
105
+ ${chalk.dim(`Draw per turn: `)} ${chalk.bold(String(DRAW_PER_TURN))} card
106
+ `)
99
107
  .action(async (opts) => {
100
108
  try {
101
109
  const pSize = Math.min(Math.max(parseInt(opts.player), 2), 10);
@@ -1 +1 @@
1
- {"version":3,"file":"battle.js","sourceRoot":"","sources":["../../src/commands/battle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"battle.js","sourceRoot":"","sources":["../../src/commands/battle.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,9 @@ export function statsCommand() {
11
11
  console.log(banner("Collection Statistics"));
12
12
  console.log("");
13
13
  // KPI cards
14
- const completionPct = s.totalTazos > 0 ? ((s.ownedTazos / s.totalTazos) * 100).toFixed(1) : "0";
14
+ const completionPct = s.totalTazos > 0 ? (((s.ownedTazos ?? 0) / s.totalTazos) * 100).toFixed(1) : "0";
15
15
  console.log(` ${chalk.bold("Total Tazos:")} ${chalk.yellowBright(s.totalTazos)}`);
16
- console.log(` ${chalk.bold("Owned:")} ${chalk.green(fmt(s.ownedTazos))} (${completionPct}%)`);
16
+ console.log(` ${chalk.bold("Owned:")} ${chalk.green(fmt((s.ownedTazos ?? 0)))} (${completionPct}%)`);
17
17
  console.log(` ${chalk.bold("Franchises:")} ${chalk.cyan(s.totalFranchises)}`);
18
18
  console.log(` ${chalk.bold("Collections:")} ${chalk.magenta(s.totalCollections)}`);
19
19
  // By franchise
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE5D,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;YAE3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAA;YAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAEf,YAAY;YACZ,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;YACtG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACxF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,IAAI,CAAC,CAAA;YAClH,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YACrF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;YAEzF,eAAe;YACf,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;gBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;gBACzD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;oBACvD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACvH,CAAC;YACH,CAAC;YAED,YAAY;YACZ,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;gBACzC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;oBACvE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;gBAC/G,CAAC;YACH,CAAC;YAED,eAAe;YACf,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;gBAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;gBACtF,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { api } from "./client.js";
2
2
  export type { Tazo, TazoListResponse, StatsResponse, CollectionResponse } from "./client.js";
3
3
  export { STAT_CONFIG, RARITY_STYLE, FRANCHISE_COLOR, formatTazo, formatBattleCard, statBar, banner, fmt } from "./lib/format.js";
4
+ export { DECK_SIZE, STARTING_HAND_SIZE, DRAW_PER_TURN, MAX_HAND_SIZE, GAME_RULES } from "./lib/game-core.js";
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { api } from "./client.js";
2
2
  export { STAT_CONFIG, RARITY_STYLE, FRANCHISE_COLOR, formatTazo, formatBattleCard, statBar, banner, fmt } from "./lib/format.js";
3
+ export { DECK_SIZE, STARTING_HAND_SIZE, DRAW_PER_TURN, MAX_HAND_SIZE, GAME_RULES } from "./lib/game-core.js";
3
4
  //# 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":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAChI,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,15 @@
1
+ /** Required deck size for competitive play */
2
+ export declare const DECK_SIZE = 20;
3
+ /** Cards drawn at battle start */
4
+ export declare const STARTING_HAND_SIZE = 5;
5
+ /** Cards drawn each turn */
6
+ export declare const DRAW_PER_TURN = 1;
7
+ /** Maximum cards allowed in hand */
8
+ export declare const MAX_HAND_SIZE = 10;
9
+ /** All game rules in a single const object */
10
+ export declare const GAME_RULES: {
11
+ readonly deckSize: 20;
12
+ readonly startingHandSize: 5;
13
+ readonly drawPerTurn: 1;
14
+ readonly maxHandSize: 10;
15
+ };
@@ -0,0 +1,25 @@
1
+ // ============================================================
2
+ // game-core.ts — Core game constants
3
+ //
4
+ // Kept in sync manually with:
5
+ // Trading-Tazos-Game/src/lib/game-core/types.ts
6
+ //
7
+ // These define the canonical game rules shared between
8
+ // the web app and CLI. No API/UI dependencies.
9
+ // ============================================================
10
+ /** Required deck size for competitive play */
11
+ export const DECK_SIZE = 20;
12
+ /** Cards drawn at battle start */
13
+ export const STARTING_HAND_SIZE = 5;
14
+ /** Cards drawn each turn */
15
+ export const DRAW_PER_TURN = 1;
16
+ /** Maximum cards allowed in hand */
17
+ export const MAX_HAND_SIZE = 10;
18
+ /** All game rules in a single const object */
19
+ export const GAME_RULES = {
20
+ deckSize: DECK_SIZE,
21
+ startingHandSize: STARTING_HAND_SIZE,
22
+ drawPerTurn: DRAW_PER_TURN,
23
+ maxHandSize: MAX_HAND_SIZE,
24
+ };
25
+ //# sourceMappingURL=game-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-core.js","sourceRoot":"","sources":["../../src/lib/game-core.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,qCAAqC;AACrC,EAAE;AACF,8BAA8B;AAC9B,kDAAkD;AAClD,EAAE;AACF,uDAAuD;AACvD,+CAA+C;AAC/C,+DAA+D;AAE/D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA;AAE3B,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAEnC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAE9B,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAA;AAE/B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,SAAS;IACnB,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;CAClB,CAAA"}
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@trading-tazos-game/cli",
3
- "version": "1.0.3",
3
+ "version": "2.0.0",
4
4
  "description": "Official CLI for the Trading Tazos Game — search, battle, and manage your digital tazo collection from the terminal",
5
5
  "license": "MIT",
6
6
  "author": "Trading Tazos Game <support@tradingtazosgame.com>",
7
7
  "homepage": "https://tradingtazosgame.com",
8
- "repository": "github:smouj/trading-tazos-game-cli",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/smouj/trading-tazos-game-cli.git"
11
+ },
9
12
  "bugs": "https://github.com/smouj/trading-tazos-game-cli/issues",
10
13
  "keywords": [
11
14
  "tazos",
@@ -25,7 +28,7 @@
25
28
  "main": "./dist/index.js",
26
29
  "types": "./dist/index.d.ts",
27
30
  "bin": {
28
- "tazos": "./dist/cli.js"
31
+ "tazos": "dist/cli.js"
29
32
  },
30
33
  "files": [
31
34
  "dist/",