From 6abe25354704a5df6541df368d63c7facc5d3392 Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Sun, 31 May 2026 14:39:45 -0500 Subject: [PATCH] card game --- .gitignore | 5 + card-game/README.md | 74 ++ card-game/TROX_Rules_Extended_EN.pdf | Bin 0 -> 98962 bytes card-game/TROX_cards_TGC.zip | Bin 0 -> 73265 bytes card-game/TROX_cards_original.zip | Bin 0 -> 74089 bytes card-game/TROX_scorepad.zip | Bin 0 -> 127197 bytes card-game/generate_back.js | 95 +++ card-game/generate_box.js | 226 ++++++ card-game/generate_cards.js | 41 ++ card-game/generate_scorepad.js | 247 +++++++ card-game/make_rules.js | 508 +++++++++++++ card-game/svg_to_png.js | 65 ++ card-game/trox_card.js | 177 +++++ generate_back.js | 81 +++ generate_box.js | 61 ++ generate_cards.js | 149 ++++ package-lock.json | 1001 +++++++++++++++++++++++++- package.json | 3 + 18 files changed, 2713 insertions(+), 20 deletions(-) create mode 100644 card-game/README.md create mode 100644 card-game/TROX_Rules_Extended_EN.pdf create mode 100644 card-game/TROX_cards_TGC.zip create mode 100644 card-game/TROX_cards_original.zip create mode 100644 card-game/TROX_scorepad.zip create mode 100644 card-game/generate_back.js create mode 100644 card-game/generate_box.js create mode 100644 card-game/generate_cards.js create mode 100644 card-game/generate_scorepad.js create mode 100644 card-game/make_rules.js create mode 100644 card-game/svg_to_png.js create mode 100644 card-game/trox_card.js create mode 100644 generate_back.js create mode 100644 generate_box.js create mode 100644 generate_cards.js diff --git a/.gitignore b/.gitignore index cc7b141..1050d58 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,8 @@ testem.log # System files .DS_Store Thumbs.db + +scorepad_export +karten_export_tgc +karten_export_original +box_export \ No newline at end of file diff --git a/card-game/README.md b/card-game/README.md new file mode 100644 index 0000000..4434e7e --- /dev/null +++ b/card-game/README.md @@ -0,0 +1,74 @@ +# TROX – Druckpaket & Generator-Skripte + +Alles für Prototyp und Serie bei The Game Crafter (TGC) bzw. ähnlichen Portalen. + +## Suit-Codes (NEU, englische Logik) +| Suit | Code | Rolle | Symbol | +|---|---|---|---| +| Red | **R** | Permanenter TRUMPF | Crown | +| Yellow | **Y** | Standard | Sun | +| Green | **G** | Standard | Leaf | +| Black | **B** | Standard | Gear | + +Kartencodes auf den Karten z.B. `TK-Y4` (Yellow 4), `TK-G7` (Green 7), `TK-R17`, `TK-B12` (Black 12). + +## Was ist drin + +| Datei / Ordner | Inhalt | +|---|---| +| `trox_card.js` | **Gemeinsames Modul** – die EINE Kartenzeichnung. Wird von cards + box genutzt | +| `generate_cards.js` | 80 Kartenvorderseiten (TGC + Original) | +| `generate_back.js` | gemeinsame Rückseite (TGC + Original) | +| `generate_box.js` | Tuckbox: Front mit ECHTEN TROX-Karten (aus trox_card.js) + Box-Netz | +| `generate_scorepad.js` | Scorepad als **PDF** – Format/Ausrichtung/Layout/Spielerzahl frei wählbar | +| `make_rules.js` | **Node.js**-Skript der PDF-Anleitung (pdfkit) | +| `svg_to_png.js` | SVG -> PNG Konverter für den TGC-Upload | +| `TROX_Rules_Extended_EN.pdf` | Erweiterte Anleitung mit 3-Spieler-Beispielen | +| `karten_export_tgc/` | 80 Karten + Rückseite, **825x1125 px** (TGC-konform, mit Bleed) | +| `karten_export_original/` | dieselben in **694x1069 px** (Originalmaß) | +| `box_export/` | `trox_box_front.svg` + `trox_box_wrap.svg` | +| `scorepad_export/` | mehrere **PDF**-Varianten (Letter/A4, portrait/landscape, versch. Layouts) | + +## Architektur (wichtig) +`trox_card.js` ist die **einzige Quelle** des Kartendesigns: +- `buildCardSVG(colorName, num, opts)` -> komplette Karten-SVG (von generate_cards.js) +- `miniCardGroup(colorName, num, cx, cy, breite, rotation)` -> dieselbe Karte als skalierte Gruppe (von generate_box.js für den Fächer) + +Dadurch sind die Karten auf der Box **garantiert identisch** mit den echten Spielkarten – nur skaliert und gefächert. Wer das Design ändert (Farben, Symbole, Schrift), ändert NUR `trox_card.js`, und Karten + Box bleiben synchron. + +## Skripte ausführen +```bash +npm install pdfkit # einmalig, für make_rules.js +node generate_cards.js # both (TGC + Original) – oder: tgc | original +node generate_back.js # both – oder: tgc | original +node generate_box.js # both (front + wrap) – oder: front | wrap [scale] +node generate_scorepad.js # PDF, both 2x3 6 Spieler – [fmt] [orientation] [cols] [rows] [players] [margin] +node make_rules.js # erzeugt die PDF-Anleitung +``` + +## Druck-Workflow für The Game Crafter +1. **Produkt:** Karten = *Poker Card* (825x1125). Box für 80 Karten = *Poker Tuck Box (90 cards)*. +2. **SVG -> PNG** (TGC nimmt KEIN SVG): + ```bash + npm install sharp + node svg_to_png.js karten_export_tgc + node svg_to_png.js box_export + ``` +3. **Hochladen:** PNGs der 80 Karten + Rückseite in den Deck-Uploader. +4. **Box:** offizielles Stanz-Template der "Poker Tuck Box (90 cards)" von TGC laden und in `generate_box.js` die Konstanten `PANEL_W`, `PANEL_H`, `SPINE`, `FLAP` daran angleichen. Faltlinien (gestrichelt) VOR dem Upload entfernen. + +### TGC-Specs (bestätigt) +- **300 DPI**, **nur RGB** (CMYK wird abgelehnt). +- **Bleed** 1/8" (≈37 px), **Safe Zone** 1/4" (75 px) vom Rand. + +## Anpassen +- **Kartendesign (Farben/Symbole/Schrift):** nur `trox_card.js`. +- **Welche Karten im Box-Fächer:** `cardFan()` in `generate_box.js` (die vier `miniCardGroup(...)`-Aufrufe). +- **Größe der Box-Karten:** `CARD_SCALE` oben in `generate_box.js` (Standard 0.30) ODER per CLI: `node generate_box.js front 0.26`. Eine Auto-Fit-Sicherung verkleinert den Fächer automatisch, falls er aus dem goldenen Rahmen ragen würde. Weitere Fächer-Regler: `FAN_SPREAD`, `FAN_ARC`, `FAN_TILT`, `FAN_CY`. +- **Scorepad-Layout:** voll parametrisierbar per CLI `node generate_scorepad.js [format] [cols] [rows] [players] [margin_in]`. Weniger Cards/Seite = größere, besser lesbare Cards (Schrift skaliert mit). Beispiel gegen zu kleinen Druck: `node generate_scorepad.js letter 1 2 6 0.5` (2 große Cards, 0.5" Rand). Defaults stehen im CONFIG-Block oben im Skript. +- **Anleitung:** `make_rules.js`, klar in Abschnitte gegliedert. + +## Offene Designfrage (für dich) +Im Beispiel B summieren sich die Gebote auf genau die Stichzahl – dann können theoretisch alle treffen. +Viele Stichspiele verbieten das ("Screw-the-Dealer"). In der Anleitung ist das als +**optionale Variante "Exact Tension" (Abschnitt 8)** eingebaut. Entscheide, ob das deine Standardregel wird. diff --git a/card-game/TROX_Rules_Extended_EN.pdf b/card-game/TROX_Rules_Extended_EN.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7d644f124adfe3b996f8a38f4c16397fb3fddfbd GIT binary patch literal 98962 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%0A8{#Wx7C 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℘sU0;5`eY0~Q*?4gw?`x7Ng#{iDM5F@Z%`tq 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 N#K1I?9|?37{txa7@X7!H literal 0 HcmV?d00001 diff --git a/card-game/TROX_scorepad.zip b/card-game/TROX_scorepad.zip new file mode 100644 index 0000000000000000000000000000000000000000..640b12ce6a31e2de80dbbb1de1e1066c77c65758 GIT binary patch literal 127197 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TROX + + + TROX + + +`; +} + +function generate(variant) { + const spec = SPECS[variant]; + const outputDir = path.join(__dirname, spec.dir); + if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true }); + fs.writeFileSync(path.join(outputDir, 'trox_card_back.svg'), buildBack(spec)); + console.log(` [${variant}] Rückseite -> ${spec.dir}/trox_card_back.svg (${spec.width}x${spec.height})`); +} + +console.log('TROX – Rückseite wird generiert ...'); +if (MODE === 'tgc' || MODE === 'both') generate('tgc'); +if (MODE === 'original' || MODE === 'both') generate('original'); +console.log('Fertig.'); diff --git a/card-game/generate_box.js b/card-game/generate_box.js new file mode 100644 index 0000000..b1cf615 --- /dev/null +++ b/card-game/generate_box.js @@ -0,0 +1,226 @@ +const fs = require('fs'); +const path = require('path'); +const { miniCardGroup } = require('./trox_card'); + +/* ============================================================ + TROX – Tuck Box Generator + ------------------------------------------------------------ + Box-Vorderseite zeigt ECHTE TROX-Karten (identisch zu den + Spielkarten, via gemeinsames Modul trox_card.js), gefächert. + Teile der hinteren Karten werden durch Überlappung verdeckt, + der untere Bereich durch das TROX-Logo – genau wie gewünscht. + + node generate_box.js front | wrap | both + + HINWEIS DRUCK (TGC): exakte Stanzkontur "Poker Tuck Box (90 cards)" + von der TGC-Produktseite laden und PANEL_W/PANEL_H/SPINE/FLAP unten + daran angleichen – das Artwork skaliert automatisch mit. + ============================================================ */ + +const MODE = (process.argv[2] || 'both').toLowerCase(); + +const DPI = 300; +const PANEL_W = Math.round(2.55 * DPI); // 765 +const PANEL_H = Math.round(3.55 * DPI); // 1065 +const SPINE = Math.round(0.90 * DPI); // 270 +const FLAP = Math.round(0.55 * DPI); // 165 +const BLEED = 37; +const SAFE = 75; + +/* ------------------------------------------------------------ + FÄCHER-TUNING (hier anpassen): + CARD_SCALE – Größe einer Einzelkarte relativ zur Panelbreite. + Höher = größere Karten. Per Kommandozeile überschreibbar: + node generate_box.js front 0.32 + FAN_SPREAD – wie weit der Fächer auseinandergeht (horizontaler Versatz). + FAN_ARC – wie stark der Fächer-Bogen nach unten ausschwingt. + FAN_TILT – maximaler Drehwinkel der äußeren Karten (Grad). + FAN_CY – vertikale Lage des Fächermittelpunkts (Anteil der Höhe). + Eine eingebaute Sicherung verkleinert den Fächer automatisch, falls er + sonst aus dem goldenen Rahmen (Safe Zone) herausragen würde. + ------------------------------------------------------------ */ +const CLI_SCALE = parseFloat(process.argv[3]); +const CARD_SCALE = !isNaN(CLI_SCALE) ? CLI_SCALE : 0.30; // vorher faktisch 0.42 -> jetzt kleiner +const FAN_SPREAD = 0.50; +const FAN_ARC = 0.11; +const FAN_TILT = 24; +const FAN_CY = 0.34; + +const DEFS = ` + + + + + + + + + + + `; + +// Gefächerte ECHTE Karten. +// cx,cy = Fächermittelpunkt +// cardW = Breite einer Karte in px +// maxRight= rechte Grenze (Safe-Zone-Rand), darf nicht überschritten werden +// Gibt {svg, fittedCardW} zurück; verkleinert cardW automatisch, falls nötig. +function cardFan(cx, cy, cardW, panelW) { + const REF_RATIO = 1069 / 694; // Höhe/Breite einer Karte + const tiltRad = FAN_TILT * Math.PI / 180; + + // Innenkante des goldenen Rahmens (Safe Zone) plus kleiner Puffer + const margin = SAFE + 6; + const leftLimit = margin; + const rightLimit = panelW - margin; + + // Funktion: rechte Außenkante des Fächers für ein gegebenes cardW + function rightEdge(cw) { + const dx = cw * FAN_SPREAD; + const cardH = cw * REF_RATIO; + // halbe Diagonale der gedrehten Außenkarte (worst case Ausdehnung) + const halfSpanX = (Math.abs(Math.cos(tiltRad)) * cw + Math.abs(Math.sin(tiltRad)) * cardH) / 2; + const outerCenterX = cx + 1.55 * dx; + return outerCenterX + halfSpanX; + } + function leftEdge(cw) { + const dx = cw * FAN_SPREAD; + const cardH = cw * REF_RATIO; + const halfSpanX = (Math.abs(Math.cos(tiltRad)) * cw + Math.abs(Math.sin(tiltRad)) * cardH) / 2; + const outerCenterX = cx - 1.55 * dx; + return outerCenterX - halfSpanX; + } + + // Auto-Fit: cardW so weit verkleinern, bis beide Außenkanten im Rahmen liegen + let cw = cardW; + let guard = 0; + while ((rightEdge(cw) > rightLimit || leftEdge(cw) < leftLimit) && guard < 200) { + cw *= 0.98; + guard++; + } + + const dx = cw * FAN_SPREAD; + const dy = cw * FAN_ARC; + const t = FAN_TILT; + const svg = ` + + ${miniCardGroup('Gruen', '7', cx - 1.55 * dx, cy + 1.7 * dy, cw, -t)} + ${miniCardGroup('Schwarz', '12', cx - 0.52 * dx, cy + 0.3 * dy, cw, -t / 3)} + ${miniCardGroup('Rot', '17', cx + 0.52 * dx, cy + 0.3 * dy, cw, t / 3)} + ${miniCardGroup('Gelb', '4', cx + 1.55 * dx, cy + 1.7 * dy, cw, t)} + `; + return { svg, fittedCardW: cw }; +} + +function frontContent(w, h) { + const cx = w / 2; + // gewünschte Kartengröße aus CARD_SCALE; Auto-Fit hält sie im Rahmen + const wantCardW = w * CARD_SCALE; + const fan = cardFan(cx, h * FAN_CY, wantCardW, w); + return ` + + + + + ${fan.svg} + + + TROX + TACTICAL CARD GAME + + + + 2-6 Players | Ages 7+ | 80 Cards`; +} + +function backContent(w, h) { + const cx = w / 2; + return ` + + + HOW TO PLAY + + Predict exactly how many tricks + you will win each round. + Hit your bid exactly -> +10 bonus. + Miss it -> no bonus at all. + Red (Crown) is the permanent + trump and beats every suit. + 10 rounds. Cards rise then fall: + 1-2-3-4-5-5-4-3-2-1 + + "Bid exactly. Win tricks. + Rule the table."`; +} + +function spineContent(w, h) { + return ` + + TROX`; +} + +function buildFront() { + const w = PANEL_W + 2 * BLEED; + const h = PANEL_H + 2 * BLEED; + return ` + ${DEFS} + ${frontContent(w, h)} +`; +} + +function buildWrap() { + const bandW = PANEL_W + SPINE + PANEL_W + SPINE; + const bandH = PANEL_H; + const totalW = bandW + 2 * BLEED; + const totalH = bandH + 2 * FLAP + 2 * BLEED; + const ox = BLEED, oy = BLEED + FLAP; + + return ` + ${DEFS} + + + + + + + + + ${DEFS}${frontContent(PANEL_W, PANEL_H)} + + ${DEFS}${spineContent(SPINE, PANEL_H)} + + + ${DEFS}${backContent(PANEL_W, PANEL_H)} + + + ${DEFS}${spineContent(SPINE, PANEL_H)} + + + + + + + + + + + + + + + Faltlinien (gestrichelt) vor dem Upload entfernen - Maße an TGC-Tuckbox-Template angleichen +`; +} + +const outputDir = path.join(__dirname, 'box_export'); +if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true }); + +console.log('TROX – Box wird generiert ...'); +if (MODE === 'front' || MODE === 'both') { + fs.writeFileSync(path.join(outputDir, 'trox_box_front.svg'), buildFront()); + console.log(` Front-Panel -> box_export/trox_box_front.svg (${PANEL_W + 2 * BLEED}x${PANEL_H + 2 * BLEED})`); +} +if (MODE === 'wrap' || MODE === 'both') { + fs.writeFileSync(path.join(outputDir, 'trox_box_wrap.svg'), buildWrap()); + console.log(` Box-Netz -> box_export/trox_box_wrap.svg`); +} +console.log('Fertig.'); diff --git a/card-game/generate_cards.js b/card-game/generate_cards.js new file mode 100644 index 0000000..cdb514e --- /dev/null +++ b/card-game/generate_cards.js @@ -0,0 +1,41 @@ +const fs = require('fs'); +const path = require('path'); +const { buildCardSVG, SUITS } = require('./trox_card'); + +/* ============================================================ + TROX – Kartenvorderseiten Generator + node generate_cards.js tgc | original | both + Nutzt das gemeinsame Modul trox_card.js (eine Quelle fürs Design). + Codes: R=Red(Trumpf), Y=Yellow, G=Green, S=Black. + ============================================================ */ + +const MODE = (process.argv[2] || 'both').toLowerCase(); + +const SPECS = { + tgc: { width: 825, height: 1125, safe: 75, cornerRadius: 0, dir: 'karten_export_tgc' }, + original: { width: 694, height: 1069, safe: 35, cornerRadius: 35, dir: 'karten_export_original' }, +}; + +function generate(variant) { + const spec = SPECS[variant]; + const outputDir = path.join(__dirname, spec.dir); + if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true }); + + let count = 0; + for (const colorName of Object.keys(SUITS)) { + for (let num = 1; num <= 20; num++) { + const svg = buildCardSVG(colorName, num, { + width: spec.width, height: spec.height, safe: spec.safe, cornerRadius: spec.cornerRadius, + }); + const fileName = `${colorName}_${String(num).padStart(2, '0')}.svg`; + fs.writeFileSync(path.join(outputDir, fileName), svg); + count++; + } + } + console.log(` [${variant}] ${count} Karten -> ${spec.dir}/ (${spec.width}x${spec.height})`); +} + +console.log('TROX – Karten werden generiert ...'); +if (MODE === 'tgc' || MODE === 'both') generate('tgc'); +if (MODE === 'original' || MODE === 'both') generate('original'); +console.log('Fertig.'); diff --git a/card-game/generate_scorepad.js b/card-game/generate_scorepad.js new file mode 100644 index 0000000..b72fc70 --- /dev/null +++ b/card-game/generate_scorepad.js @@ -0,0 +1,247 @@ +const fs = require('fs'); +const path = require('path'); +const PDFDocument = require('pdfkit'); + +/* ============================================================ + TROX – Scorepad Generator (PDF, parametrisierbar) + ------------------------------------------------------------ + Ausgabe als PDF. Frei einstellbar: Format, Ausrichtung, + Spalten/Zeilen an Cards, Spielerzahl, Seitenrand. + + AUFRUF: + node generate_scorepad.js [format] [orientation] [cols] [rows] [players] [margin_in] + + Beispiele: + node generate_scorepad.js -> both, portrait, 2x3, 6 Spieler + node generate_scorepad.js letter portrait 1 2 6 -> 2 große Cards/Seite + node generate_scorepad.js a4 landscape 3 2 4 -> A4 quer, 6 Cards, 4 Spieler + node generate_scorepad.js letter landscape 2 2 6 0.4 + + Parameter: + format letter | a4 | both (Standard: both) + orientation portrait | landscape (Standard: portrait) + cols Spalten an Cards (Standard: 2) + rows Zeilen an Cards (Standard: 3) + players Spieler pro Card (Standard: 6) + margin_in Seitenrand in Zoll (Standard: 0.4) + + Eigenschaften: + - "Position"-Zeile WEISS (zum Eintragen der Endplatzierung, z.B. 1. / 3.) + - "Name" links oben in der Kopfzelle, dezent/schwach gedruckt + - TROX-Titelbalken weiß mit goldenen Verzierungen (nicht schwarz) + - Bid-Kästchen kräftig gedruckt + ============================================================ */ + +// ---------- CONFIG (Defaults; per CLI überschreibbar) ---------- +const CONFIG = { + cols: 2, + rows: 3, + players: 6, + marginIn: 0.4, + gapIn: 0.14, + orientation: 'portrait', +}; + +const argv = process.argv.slice(2); +const MODE = (argv[0] || 'both').toLowerCase(); +if (argv[1] && /^(portrait|landscape)$/.test(argv[1])) CONFIG.orientation = argv[1]; +if (argv[2] !== undefined && !isNaN(+argv[2])) CONFIG.cols = Math.max(1, parseInt(argv[2])); +if (argv[3] !== undefined && !isNaN(+argv[3])) CONFIG.rows = Math.max(1, parseInt(argv[3])); +if (argv[4] !== undefined && !isNaN(+argv[4])) CONFIG.players = Math.max(2, parseInt(argv[4])); +if (argv[5] !== undefined && !isNaN(+argv[5])) CONFIG.marginIn = Math.max(0, parseFloat(argv[5])); + +const PT = 72; // Punkte pro Zoll (PDF-Einheit) + +// Palette +const C = { + dark: '#111827', + gold: '#AA7C11', + goldLt: '#D4AF37', + goldPale:'#F3E5AB', + ink: '#1F2937', + line: '#D1D5DB', + zebra: '#FAFAFA', + nameTx: '#C4C9D2', // schwach gedruckter Name + bidStroke: '#6B7280', // kräftiger als vorher (#cbd5e1) + grey: '#9CA3AF', +}; + +const ROUNDS = [ + 'R1 (1 Card)', 'R2 (2 Cards)', 'R3 (3 Cards)', 'R4 (4 Cards)', 'R5 (5 Cards)', + 'R6 (5 Cards)', 'R7 (4 Cards)', 'R8 (3 Cards)', 'R9 (2 Cards)', 'R10 (1 Card)' +]; + +// ============================================================ +// Eine Scorecard zeichnen (Koordinaten in PDF-Punkten) +// ============================================================ +function drawCard(doc, x, y, w, h, players) { + const sc = Math.min(Math.max(w / 270, 0.7), 2.2); // Skalenfaktor (270pt ~ Referenz) + + const titleH = 24 * sc; + const headerH = 22 * sc; + const bodyTop = titleH + headerH; + const nRows = ROUNDS.length + 1; // + Position + const rowH = (h - bodyTop) / nRows; + + const labelColW = w * 0.26; + const playerColW = (w - labelColW) / players; + + const fTitle = 12 * sc, fHeader = 7.5 * sc, fRound = 7 * sc, + fName = 6.8 * sc, fPos = 8 * sc; + const bidW = 12 * sc, bidH = 9 * sc; + const radius = 6 * sc; + + // --- Outer frame (weißer Hintergrund) --- + doc.save(); + doc.roundedRect(x, y, w, h, radius).fillAndStroke('#ffffff', C.ink); + doc.lineWidth(1.2).strokeColor(C.ink).roundedRect(x, y, w, h, radius).stroke(); + doc.restore(); + + // --- Titelbalken: WEISS mit goldenen Verzierungen --- + doc.save(); + // dünne goldene Linien ober-/unterhalb + Mittelornamente + const tcy = y + titleH / 2; + doc.font('Helvetica-Bold').fontSize(fTitle).fillColor(C.gold) + .text('T R O X', x, tcy - fTitle * 0.62, { width: w, align: 'center', characterSpacing: 2 * sc }); + // Verzierungslinien links/rechts vom Titel + const titleTextW = doc.widthOfString('T R O X', { characterSpacing: 2 * sc }); + const cxp = x + w / 2; + const ornGap = titleTextW / 2 + 12 * sc; + const ornLen = Math.max(8 * sc, (w / 2) - ornGap - 10 * sc); + doc.lineWidth(1 * sc).strokeColor(C.goldLt).opacity(0.9); + // links + doc.moveTo(x + 10 * sc, tcy).lineTo(x + 10 * sc + ornLen, tcy).stroke(); + // rechts + doc.moveTo(x + w - 10 * sc - ornLen, tcy).lineTo(x + w - 10 * sc, tcy).stroke(); + // kleine Rauten an den Linienenden + const diamond = (dx) => { + const r = 2.4 * sc; + doc.opacity(1).fillColor(C.goldLt) + .moveTo(dx, tcy - r).lineTo(dx + r, tcy).lineTo(dx, tcy + r).lineTo(dx - r, tcy).fill(); + }; + diamond(x + 10 * sc); diamond(x + 10 * sc + ornLen); + diamond(x + w - 10 * sc); diamond(x + w - 10 * sc - ornLen); + doc.opacity(1); + // feine goldene Trennlinie unter dem Titel + doc.lineWidth(0.8 * sc).strokeColor(C.goldLt) + .moveTo(x, y + titleH).lineTo(x + w, y + titleH).stroke(); + doc.restore(); + + // --- Kopfzeile --- + const hy = y + titleH; + doc.save(); + doc.font('Helvetica-Bold').fontSize(fHeader).fillColor(C.ink) + .text('Round (Cards)', x + 6 * sc, hy + headerH / 2 - fHeader * 0.55, { width: labelColW - 8 * sc }); + // Label-Spalten-Trennlinie über volle Höhe + doc.lineWidth(1).strokeColor(C.ink) + .moveTo(x + labelColW, hy).lineTo(x + labelColW, y + h).stroke(); + + for (let p = 0; p < players; p++) { + const px = x + labelColW + p * playerColW; + // Kopfzelle: heller Hintergrund + doc.rect(px, hy, playerColW, headerH).fillColor('#F3F4F6').fill(); + doc.lineWidth(0.5).strokeColor(C.ink).rect(px, hy, playerColW, headerH).stroke(); + // "Name" links oben, schwach + doc.font('Helvetica-Oblique').fontSize(fName).fillColor(C.nameTx) + .text('Name', px + 4 * sc, hy + 3 * sc, { width: playerColW - 6 * sc }); + if (p < players - 1) { + doc.lineWidth(0.5).strokeColor(C.ink) + .moveTo(px + playerColW, hy).lineTo(px + playerColW, y + h).stroke(); + } + } + doc.restore(); + + // --- Runden-Zeilen --- + for (let r = 0; r < ROUNDS.length; r++) { + const ry = y + bodyTop + r * rowH; + doc.save(); + if (r % 2 === 1) { + doc.rect(x + labelColW, ry, w - labelColW, rowH).fillColor(C.zebra).fill(); + } + doc.lineWidth(0.5).strokeColor(C.line).moveTo(x, ry).lineTo(x + w, ry).stroke(); + doc.font('Helvetica').fontSize(fRound).fillColor(C.ink) + .text(ROUNDS[r], x + 6 * sc, ry + rowH / 2 - fRound * 0.55, { width: labelColW - 8 * sc }); + // Bid-Kästchen je Spieler – KRÄFTIGER Strich + for (let p = 0; p < players; p++) { + const px = x + labelColW + p * playerColW; + doc.lineWidth(1.1 * sc).strokeColor(C.bidStroke) + .roundedRect(px + 3 * sc, ry + 2.5 * sc, bidW, bidH, 1.5 * sc).stroke(); + } + doc.restore(); + } + + // --- Position-Zeile: WEISS (zum Eintragen der Platzierung) --- + const py = y + bodyTop + ROUNDS.length * rowH; + doc.save(); + // weißer Hintergrund (kein dunkler Balken mehr) + doc.rect(x, py, w, rowH).fillColor('#ffffff').fill(); + // kräftige Trennlinie oben drüber + doc.lineWidth(1).strokeColor(C.ink).moveTo(x, py).lineTo(x + w, py).stroke(); + doc.font('Helvetica-Bold').fontSize(fPos).fillColor(C.gold) + .text('Position', x + 6 * sc, py + rowH / 2 - fPos * 0.55, { width: labelColW - 8 * sc }); + // vertikale Spaltenlinien in der Position-Zeile + for (let p = 1; p < players; p++) { + const px = x + labelColW + p * playerColW; + doc.lineWidth(0.5).strokeColor(C.line).moveTo(px, py).lineTo(px, py + rowH).stroke(); + } + doc.restore(); +} + +// ============================================================ +// Eine Seite zeichnen +// ============================================================ +function drawPage(doc, pageW, pageH, label) { + const margin = CONFIG.marginIn * PT; + const gap = CONFIG.gapIn * PT; + const headerSpace = 22; + + const { cols, rows: rowsN, players } = CONFIG; + const cardW = (pageW - 2 * margin - (cols - 1) * gap) / cols; + const cardH = (pageH - 2 * margin - headerSpace - (rowsN - 1) * gap) / rowsN; + + // Seitenkopf + doc.font('Helvetica-Bold').fontSize(11).fillColor(C.dark) + .text('TROX SCOREPAD', margin, margin, { characterSpacing: 1.5, continued: false }); + const gpp = cols * rowsN; + doc.font('Helvetica').fontSize(7).fillColor(C.grey) + .text(`${gpp} game(s) / ${label} ${CONFIG.orientation} · ${players} players · box = Bid · cell = running total · exact bid = +10`, + margin, margin + 1, { width: pageW - 2 * margin, align: 'right' }); + + for (let r = 0; r < rowsN; r++) { + for (let c = 0; c < cols; c++) { + const cx = margin + c * (cardW + gap); + const cy = margin + headerSpace + r * (cardH + gap); + drawCard(doc, cx, cy, cardW, cardH, players); + } + } +} + +// ============================================================ +const FORMATS = { + letter: { size: 'LETTER', label: 'Letter' }, + a4: { size: 'A4', label: 'A4' }, +}; + +const outputDir = path.join(__dirname, 'scorepad_export'); +if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true }); + +function emit(key) { + const fmt = FORMATS[key]; + const doc = new PDFDocument({ + size: fmt.size, + layout: CONFIG.orientation, + margin: 0, + info: { Title: `TROX Scorepad (${fmt.label})`, Author: 'Bay Area Affiliates' }, + }); + const file = `trox_scorepad_${key}_${CONFIG.orientation}_${CONFIG.cols}x${CONFIG.rows}_${CONFIG.players}p.pdf`; + const outPath = path.join(outputDir, file); + doc.pipe(fs.createWriteStream(outPath)); + drawPage(doc, doc.page.width, doc.page.height, fmt.label); + doc.end(); + console.log(` ${fmt.label} ${CONFIG.orientation} -> scorepad_export/${file}`); +} + +console.log(`TROX – Scorepad (PDF): ${CONFIG.cols}x${CONFIG.rows} Cards, ${CONFIG.players} Spieler, ${CONFIG.orientation}, Rand ${CONFIG.marginIn}"`); +if (MODE === 'letter' || MODE === 'both') emit('letter'); +if (MODE === 'a4' || MODE === 'both') emit('a4'); +console.log('Fertig.'); diff --git a/card-game/make_rules.js b/card-game/make_rules.js new file mode 100644 index 0000000..3ba8b38 --- /dev/null +++ b/card-game/make_rules.js @@ -0,0 +1,508 @@ +const fs = require('fs'); +const path = require('path'); +const PDFDocument = require('pdfkit'); +const sharp = require('sharp'); +const QRCode = require('qrcode'); +const { SUITS, buildCardSVG } = require('./trox_card'); + +/* ============================================================ + TROX – Erweiterte offizielle Spielanleitung (EN) + Node.js / pdfkit. Erzeugt TROX_Rules_Extended_EN.pdf + node make_rules.js + Codes: R=Red(Trump), Y=Yellow, G=Green, B=Black. + Beispiele zeigen echte Mini-Karten (aus trox_card.js). + Am Ende QR-Code zur Scorepad-Webseite. + ============================================================ */ + +// ====== HIER ANPASSEN: Ziel-URL des QR-Codes (Webseite noch zu erstellen) ====== +const SCOREPAD_URL = 'https://trox.example.com/scorepad'; +// =============================================================================== + +// ---- Palette ---- +const C = { + gold: '#AA7C11', + goldLt: '#D4AF37', + dark: '#111827', + red: '#E53935', + yellow: '#C9A300', // dunkler für Lesbarkeit auf Weiß + green: '#43A047', + black: '#212121', + greyBg: '#F3F4F6', + greyLn: '#D1D5DB', + grey: '#6B7280', + bodyTx: '#212121', + white: '#FFFFFF', +}; + +// Mapping: Kartenkürzel (R/Y/G/B) -> Farbname im Modul +const COLOR_BY_CODE = { R: 'Rot', Y: 'Gelb', G: 'Gruen', B: 'Schwarz' }; + +// Cache für gerenderte Mini-Karten-PNG-Buffer, key = "R11" +const CHIP_CACHE = {}; +async function renderChip(code) { + if (CHIP_CACHE[code]) return CHIP_CACHE[code]; + const m = code.match(/^([RYGB])(\d+)$/); + if (!m) return null; + const colorName = COLOR_BY_CODE[m[1]]; + const num = parseInt(m[2], 10); + // ECHTE Karte aus dem gemeinsamen Modul, klein gerendert -> identische Optik + const svg = buildCardSVG(colorName, num, { width: 694, height: 1069, safe: 35, cornerRadius: 35 }); + const buf = await sharp(Buffer.from(svg), { density: 150 }) + .resize(74, 114, { fit: 'fill' }) + .flatten({ background: '#ffffff' }) + // feiner grauer Rahmen, damit die Karte sich vom weißen Hintergrund abhebt + .extend({ top: 2, bottom: 2, left: 2, right: 2, background: '#B8Bec9' }) + .png().toBuffer(); + CHIP_CACHE[code] = buf; + return buf; +} +async function preRenderChips(codes) { + for (const c of codes) await renderChip(c); +} +// Sammelt automatisch alle Chip-Codes aus den Tabellen-Datenstrukturen, +// damit keine Karte vergessen werden kann (Bugfix gegen fehlende Chips). +function collectChipCodes(...tables) { + const set = new Set(); + const walk = (cell) => { + if (cell && typeof cell === 'object' && Array.isArray(cell.chips)) { + cell.chips.forEach(c => set.add(c)); + } + }; + for (const tbl of tables) for (const row of tbl) for (const cell of row) walk(cell); + return [...set]; +} + +let QR_BUFFER = null; +async function renderQR(url) { + QR_BUFFER = await QRCode.toBuffer(url, { + type: 'png', margin: 1, width: 300, + color: { dark: '#111827', light: '#ffffff' }, + errorCorrectionLevel: 'M', + }); +} + +const PAGE = { size: 'LETTER', margins: { top: 43, bottom: 43, left: 54, right: 54 } }; +const doc = new PDFDocument({ ...PAGE, info: { Title: 'TROX Official Game Rules', Author: 'Bay Area Affiliates' } }); +const OUT = path.join(__dirname, 'TROX_Rules_Extended_EN.pdf'); +doc.pipe(fs.createWriteStream(OUT)); + +const PW = doc.page.width; +const ML = PAGE.margins.left; +const MR = PAGE.margins.right; +const CONTENT_W = PW - ML - MR; +const BOTTOM = doc.page.height - PAGE.margins.bottom; + +// ---- Helpers -------------------------------------------------- +function ensureSpace(h) { + if (doc.y + h > BOTTOM) doc.addPage(); +} + +function h1(text) { + ensureSpace(40); + doc.moveDown(0.4); + doc.fillColor(C.gold).font('Helvetica-Bold').fontSize(15).text(text, ML, doc.y); + doc.moveDown(0.2); +} +function h2(text) { + ensureSpace(28); + doc.moveDown(0.3); + doc.fillColor(C.dark).font('Helvetica-Bold').fontSize(11.5).text(text, ML, doc.y); + doc.moveDown(0.15); +} +function hr(color = C.goldLt, thickness = 1.2) { + const y = doc.y + 2; + doc.save().moveTo(ML, y).lineTo(PW - MR, y).lineWidth(thickness).strokeColor(color).stroke().restore(); + doc.y = y + 8; +} +// Rich body text with simple **bold** and *italic* markup +function body(text, opts = {}) { + const size = opts.size || 10; + const indent = opts.indent || 0; + const color = opts.color || C.bodyTx; + const x = ML + indent; + const w = CONTENT_W - indent; + ensureSpace(size + 6); + doc.fontSize(size); + const segments = parseMarkup(text); + // first segment sets position; continued segments flow + let first = true; + for (let i = 0; i < segments.length; i++) { + const s = segments[i]; + const last = i === segments.length - 1; + doc.font(s.font).fillColor(s.color || color); + if (first) { + doc.text(s.t, x, doc.y, { width: w, continued: !last, align: opts.align || 'left', lineGap: 2 }); + first = false; + } else { + doc.text(s.t, { continued: !last, lineGap: 2 }); + } + } + doc.moveDown(opts.spaceAfter != null ? opts.spaceAfter : 0.45); +} +function bullet(label, text, opts = {}) { + const indent = 16; + const x = ML + indent; + const w = CONTENT_W - indent; + ensureSpace(16); + doc.fontSize(10); + // bullet dot + doc.font('Helvetica').fillColor(C.bodyTx).text('\u2022 ', ML + 4, doc.y, { continued: true }); + if (label) doc.font('Helvetica-Bold').fillColor(C.bodyTx).text(label + ': ', { continued: true }); + const segs = parseMarkup(text); + for (let i = 0; i < segs.length; i++) { + const s = segs[i]; + doc.font(s.font).fillColor(s.color || C.bodyTx).text(s.t, { continued: i < segs.length - 1, lineGap: 2 }); + } + doc.moveDown(0.3); +} +function note(text) { + // light gold box-ish note (just indented italic-ish) + const x = ML + 8; + ensureSpace(20); + doc.fontSize(9.5); + const segs = parseMarkup(text); + let first = true; + for (let i = 0; i < segs.length; i++) { + const s = segs[i]; + doc.font(s.font).fillColor(s.color || C.dark); + if (first) { doc.text(s.t, x, doc.y, { width: CONTENT_W - 16, continued: i < segs.length - 1, lineGap: 2 }); first = false; } + else doc.text(s.t, { continued: i < segs.length - 1, lineGap: 2 }); + } + doc.moveDown(0.45); +} +function small(text) { + doc.font('Helvetica-Oblique').fontSize(8.5).fillColor(C.grey) + .text(text, ML, doc.y, { width: CONTENT_W, lineGap: 1 }); + doc.moveDown(0.35); +} + +// Markup parser: **bold**, *italic*, ~color:#hex|text~ +function parseMarkup(text) { + const out = []; + // tokenize on ** , * , and ~color|...~ + const re = /(\*\*[^*]+\*\*|\*[^*]+\*|~[^~]+~)/g; + let last = 0, m; + while ((m = re.exec(text)) !== null) { + if (m.index > last) out.push({ t: text.slice(last, m.index), font: 'Helvetica' }); + const tok = m[0]; + if (tok.startsWith('**')) out.push({ t: tok.slice(2, -2), font: 'Helvetica-Bold' }); + else if (tok.startsWith('~')) { + const inner = tok.slice(1, -1); + const [col, ...rest] = inner.split('|'); + out.push({ t: rest.join('|'), font: 'Helvetica-Bold', color: col }); + } else out.push({ t: tok.slice(1, -1), font: 'Helvetica-Oblique' }); + last = re.lastIndex; + } + if (last < text.length) out.push({ t: text.slice(last), font: 'Helvetica' }); + return out.length ? out : [{ t: text, font: 'Helvetica' }]; +} + +// ---- Table renderer ------------------------------------------ +// rows: array of arrays of cells. cell = string OR {t, color, font, align, mono} +// OR {chips:['R11','Y18'], align} to render mini-cards. +const CHIP_W = 24, CHIP_H = 37, CHIP_GAP = 5; // echtes Kartenformat (schmal/hoch) +function table(rows, colWidths, opts = {}) { + const headerBg = opts.headerBg || C.dark; + const headerTx = opts.headerTx || C.goldLt; + const zebra = opts.zebra != null ? opts.zebra : true; + const fontSize = opts.fontSize || 9.5; + const padX = 8, padY = 5; + const totalW = colWidths.reduce((a, b) => a + b, 0); + const x0 = ML + (opts.center ? (CONTENT_W - totalW) / 2 : 0); + + function isChipCell(cell) { return typeof cell === 'object' && cell && Array.isArray(cell.chips); } + + // estimate row heights + function cellH(cell, w) { + if (isChipCell(cell)) return CHIP_H + 2 * padY; + const t = (typeof cell === 'string') ? cell : (cell.t || ''); + const f = (typeof cell === 'object' && cell.mono) ? 'Courier-Bold' : 'Helvetica'; + doc.font(f).fontSize(fontSize); + return doc.heightOfString(t, { width: w - 2 * padX }); + } + const rowHeights = rows.map((r) => + Math.max(...r.map((c, ci) => cellH(c, colWidths[ci]))) + 2 * padY + ); + const totalH = rowHeights.reduce((a, b) => a + b, 0); + ensureSpace(totalH + 4); + + let y = doc.y; + for (let ri = 0; ri < rows.length; ri++) { + const rh = rowHeights[ri]; + let x = x0; + const isHeader = ri === 0 && opts.header !== false; + if (isHeader) { + doc.save().rect(x0, y, totalW, rh).fill(headerBg).restore(); + } else if (zebra && (ri % 2 === 0)) { + doc.save().rect(x0, y, totalW, rh).fill(C.greyBg).restore(); + } + for (let ci = 0; ci < rows[ri].length; ci++) { + const cw = colWidths[ci]; + const cell = rows[ri][ci]; + if (isChipCell(cell)) { + // Mini-Karten zeichnen, links ausgerichtet (oder zentriert) + const n = cell.chips.length; + const totalChipW = n * CHIP_W + (n - 1) * CHIP_GAP; + let startX = x + padX; + if (cell.align === 'center') startX = x + (cw - totalChipW) / 2; + const cyChip = y + (rh - CHIP_H) / 2; + let cxChip = startX; + for (const code of cell.chips) { + const buf = CHIP_CACHE[code]; + if (buf) doc.image(buf, cxChip, cyChip, { width: CHIP_W, height: CHIP_H }); + cxChip += CHIP_W + CHIP_GAP; + } + } else { + const t = (typeof cell === 'string') ? cell : (cell.t || ''); + let font = (typeof cell === 'object' && cell.font) ? cell.font + : (typeof cell === 'object' && cell.mono) ? 'Courier-Bold' + : isHeader ? 'Helvetica-Bold' : 'Helvetica'; + let color = isHeader ? headerTx : (typeof cell === 'object' && cell.color) ? cell.color : C.bodyTx; + const align = (typeof cell === 'object' && cell.align) ? cell.align : 'left'; + doc.font(font).fontSize(fontSize).fillColor(color) + .text(t, x + padX, y + padY, { width: cw - 2 * padX, align }); + } + x += cw; + } + // grid lines + doc.save().rect(x0, y, totalW, rh).lineWidth(0.5).strokeColor(C.greyLn).stroke(); + let cx = x0; + for (let ci = 0; ci < colWidths.length - 1; ci++) { + cx += colWidths[ci]; + doc.moveTo(cx, y).lineTo(cx, y + rh).lineWidth(0.5).strokeColor(C.greyLn).stroke(); + } + doc.restore(); + y += rh; + } + doc.y = y + 6; + doc.x = ML; +} + +// ============================================================ +// CONTENT +// ============================================================ +async function main() { + // QR vorab rendern; Chips werden bei den Beispielen automatisch gesammelt + await renderQR(SCOREPAD_URL); + + // ---- Title ---- + doc.moveDown(0.2); + doc.font('Helvetica-Bold').fontSize(34).fillColor(C.gold) + .text('TROX', ML, doc.y, { width: CONTENT_W, align: 'center' }); + doc.font('Helvetica').fontSize(11).fillColor(C.black) + .text('O F F I C I A L G A M E R U L E S', { width: CONTENT_W, align: 'center', characterSpacing: 1 }); + doc.moveDown(0.5); + hr(); + + // ---- 1. Overview ---- + h1('1. Overview & Components'); + body('TROX is a tactical trick-taking and bidding game for **2 to 6 players** (optimally balanced for **3 to 4 players**). The game rewards logical deduction, card counting, and precise risk assessment.'); + body('The deck consists of **80 cards**, divided into four suits, each numbered from 1 to 20:'); + table([ + ['Suit', 'Role', 'Symbol', 'Code'], + [{ t: 'Red', color: C.red, font: 'Helvetica-Bold' }, 'Permanent TRUMP suit', 'Crown', { t: 'R', font: 'Helvetica-Bold' }], + [{ t: 'Yellow', color: C.yellow, font: 'Helvetica-Bold' }, 'Standard suit', 'Sun', { t: 'Y', font: 'Helvetica-Bold' }], + [{ t: 'Green', color: C.green, font: 'Helvetica-Bold' }, 'Standard suit', 'Leaf', { t: 'G', font: 'Helvetica-Bold' }], + [{ t: 'Black', color: C.black, font: 'Helvetica-Bold' }, 'Standard suit', 'Gear', { t: 'B', font: 'Helvetica-Bold' }], + ], [110, 240, 110, 70]); + note('**Red is always trump.** A Red card beats any card of the other three suits, regardless of number.'); + + // ---- 2. Pyramid ---- + h1('2. Game Structure (The Pyramid)'); + body('A full game consists of exactly **10 rounds**. The number of cards dealt to each player rises and then falls in a pyramid:'); + table([ + ['Round', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], + ['Cards', '1', '2', '3', '4', '5', '5', '4', '3', '2', '1'], + ], [80, ...Array(10).fill(48)], { header: false, zebra: false, fontSize: 9.5 }); + + // ---- 3. Bidding ---- + h1('3. The Bidding Phase'); + body('Before the first trick of a round is played, every player looks at their hand. In clockwise order, each player announces **exactly how many tricks they expect to win** this round. The scorekeeper writes this prediction (the **Bid**) into the small box at the top-left of the player\u2019s cell on the scorepad.'); + note('A bid of **0** is allowed and is often very valuable: you score the +10 bonus simply by losing every trick on purpose.'); + + // ---- 4. Trick-Taking ---- + h1('4. Trick-Taking Rules'); + bullet('Following suit', 'The player who plays the first card of a trick sets the **lead suit**. Every other player **must follow suit** if they hold a card of that color.'); + bullet('Sloughing & trumping', 'Only a player who holds **no** card of the lead suit may either discard a card of another standard suit (a slough) or play a Red card to trump the trick.'); + bullet('The trump (Red)', 'Red beats all other suits. If several Red cards land in one trick, the **highest Red number** wins.'); + bullet('Winning without trump', 'If no Red card is played, the trick goes to the **highest card of the lead suit**. Cards of other (non-lead, non-Red) colors are worth zero here, no matter how high.'); + bullet('Leading the next trick', 'The winner of a trick leads the next one. The very first trick of a round is led by the player who bid first.'); + + // ---- 5. Scoring ---- + h1('5. Scoring & Running Totals'); + body('At the end of each round, players count the tricks they won:'); + bullet('', 'Each won trick is worth **1 point**.'); + bullet('', 'If the bid was **correct**, add a **+10 bonus**. If it was wrong (too high OR too low), the bonus is **0**.'); + table([ + ['Bid', 'Tricks won', 'Result', 'Points (tricks + bonus)'], + ['2', '2', 'exact bid -> bonus', { t: '2 (tricks) + 10 (exact bid) = 12', color: C.green, font: 'Helvetica-Bold' }], + ['2', '3', 'bid over by one', { t: '3 (tricks) + 0 (missed bid) = 3', color: C.red, font: 'Helvetica-Bold' }], + ['0', '0', 'exact bid -> bonus', { t: '0 (tricks) + 10 (exact bid) = 10', color: C.green, font: 'Helvetica-Bold' }], + ['1', '0', 'bid under by one', { t: '0 (tricks) + 0 (missed bid) = 0', color: C.red, font: 'Helvetica-Bold' }], + ], [44, 70, 120, 226], { fontSize: 9 }); + body('**Running total:** keep a cumulative score for every player. After scoring a round, add the points to the player\u2019s previous total and write the **new total** in that round\u2019s cell. The bottom row (**Position**) shows the final standing. Highest score after Round 10 wins.'); + + // ---- 6. Worked Examples ---- + doc.addPage(); + h1('6. Worked Examples (3 Players)'); + hr(); + body('These are the **first three rounds of one game** (1, 2 and 3 cards), played out in full to show *why* each player plays each card. Players are **Anna**, **Ben** and **Carla**, seated in that clockwise order. Each card is shown as a small TROX card in its suit colour.'); + + // === Example A: 2-card round (vormals B) === + const exA_hands = [ + ['Player', 'Hand'], + [{ t: 'Anna', font: 'Helvetica-Bold' }, { chips: ['R9', 'Y3'] }], + [{ t: 'Ben', font: 'Helvetica-Bold' }, { chips: ['Y17', 'Y8'] }], + [{ t: 'Carla', font: 'Helvetica-Bold' }, { chips: ['R15', 'B2'] }], + ]; + const exA_tricks = [ + ['Trick', 'Anna', 'Ben', 'Carla', 'Winner / why'], + [{ t: '1 (lead Yellow)' }, { chips: ['Y3'], align: 'center' }, { chips: ['Y17'], align: 'center' }, { chips: ['R15'], align: 'center' }, { t: 'Carla \u2013 trumps with Red 15. Ben bid 0, so he dumps his high Yellow 17 now while Carla is taking the trick anyway.', font: 'Helvetica' }], + [{ t: '2 (lead Black)' }, { chips: ['R9'], align: 'center' }, { chips: ['Y8'], align: 'center' }, { chips: ['B2'], align: 'center' }, { t: 'Anna \u2013 no Black, trumps Red 9; beats Carla\u2019s led Black 2. Ben sloughs his last card.', font: 'Helvetica' }], + ]; + const exA_result = [ + ['Player', 'Bid', 'Won', 'Points'], + ['Anna', { t: '1', align: 'center' }, { t: '1', align: 'center' }, { t: '11 (exact bid -> +10)', color: C.green, font: 'Helvetica-Bold' }], + ['Ben', { t: '0', align: 'center' }, { t: '0', align: 'center' }, { t: '10 (exact bid -> +10)', color: C.green, font: 'Helvetica-Bold' }], + ['Carla', { t: '1', align: 'center' }, { t: '1', align: 'center' }, { t: '11 (exact bid -> +10)', color: C.green, font: 'Helvetica-Bold' }], + ]; + + // === Example B: 3-card round (vormals A), Blätter rotiert === + // Anna bot in Runde A zuerst (Nachteil) -> in Runde B ist Ben an der Reihe, + // bietet zuerst und führt den ersten Stich an. Die Blätter wandern mit + // (Annas -> Ben, Bens -> Carla, Carlas -> Anna), die Stichlogik bleibt gleich. + const exB_hands = [ + ['Player', 'Hand'], + [{ t: 'Ben', font: 'Helvetica-Bold' }, { chips: ['R11', 'Y18', 'B4'] }], + [{ t: 'Carla', font: 'Helvetica-Bold' }, { chips: ['G20', 'Y5', 'R2'] }], + [{ t: 'Anna', font: 'Helvetica-Bold' }, { chips: ['Y14', 'B19', 'G7'] }], + ]; + const exB_tricks = [ + ['Trick', 'Ben', 'Carla', 'Anna', 'Winner / why'], + [{ t: '1 (lead Yellow)' }, { chips: ['Y18'], align: 'center' }, { chips: ['Y5'], align: 'center' }, { chips: ['Y14'], align: 'center' }, { t: 'Ben \u2013 highest Yellow', font: 'Helvetica' }], + [{ t: '2 (lead Red)' }, { chips: ['R11'], align: 'center' }, { chips: ['R2'], align: 'center' }, { chips: ['B19'], align: 'center' }, { t: 'Ben \u2013 trump; Anna has no Red, sloughs Black 19', font: 'Helvetica' }], + [{ t: '3 (lead Black)' }, { chips: ['B4'], align: 'center' }, { chips: ['G20'], align: 'center' }, { chips: ['G7'], align: 'center' }, { t: 'Ben \u2013 only Black counts; Green 20 is worth 0', font: 'Helvetica' }], + ]; + const exB_result = [ + ['Player', 'Bid', 'Won', 'Points'], + ['Ben', { t: '2', align: 'center' }, { t: '3', align: 'center' }, { t: '3 (missed bid \u2013 no bonus)', color: C.red }], + ['Carla', { t: '1', align: 'center' }, { t: '0', align: 'center' }, '0 (missed bid)'], + ['Anna', { t: '0', align: 'center' }, { t: '0', align: 'center' }, { t: '10 (exact bid -> +10)', color: C.green, font: 'Helvetica-Bold' }], + ]; + + // === Example C: 1-card round (rotation continues) === + // Ben gab -> Carla bietet zuerst & führt an. Bietreihenfolge: Carla, Anna, Ben. + const exC_hands = [ + ['Player', 'Hand'], + [{ t: 'Carla', font: 'Helvetica-Bold' }, { chips: ['G12'] }], + [{ t: 'Anna', font: 'Helvetica-Bold' }, { chips: ['R3'] }], + [{ t: 'Ben', font: 'Helvetica-Bold' }, { chips: ['Y19'] }], + ]; + const exC_tricks = [ + ['Trick', 'Carla', 'Anna', 'Ben', 'Winner / why'], + [{ t: '1 (lead Green)' }, { chips: ['G12'], align: 'center' }, { chips: ['R3'], align: 'center' }, { chips: ['Y19'], align: 'center' }, { t: 'Anna \u2013 her tiny Red 3 is a trump and beats everything. Ben\u2019s high Yellow 19 is worthless: it is neither trump nor the led suit.', font: 'Helvetica' }], + ]; + const exC_result = [ + ['Player', 'Bid', 'Won', 'Points'], + ['Carla', { t: '0', align: 'center' }, { t: '0', align: 'center' }, { t: '10 (exact bid -> +10)', color: C.green, font: 'Helvetica-Bold' }], + ['Anna', { t: '1', align: 'center' }, { t: '1', align: 'center' }, { t: '11 (exact bid -> +10)', color: C.green, font: 'Helvetica-Bold' }], + ['Ben', { t: '0', align: 'center' }, { t: '0', align: 'center' }, { t: '10 (exact bid -> +10)', color: C.green, font: 'Helvetica-Bold' }], + ]; + + // Alle Chips automatisch vorab rendern (kein Vergessen mehr möglich) + await preRenderChips(collectChipCodes(exA_hands, exA_tricks, exB_hands, exB_tricks, exC_hands, exC_tricks)); + + // --- Beispiel 1: 1-Karten-Runde (Daten in exC_*) --- + h2('Example A \u2014 Round 1: a 1-card round (the smallest trump still rules)'); + body('This is the **first round** of the game. Ben dealt, so **Carla bids first** (the player to the dealer\u2019s left) and also leads the first \u2013 and only \u2013 trick. With a single card each, every player simply bids 0 or 1.'); + table(exC_hands, [90, 330]); + body('**Bids (clockwise from Carla):** Carla bids **0**, Anna bids **1**, Ben bids **0**. Anna holds the only trump, so she confidently expects the trick.'); + table(exC_tricks, [82, 56, 56, 56, 175], { fontSize: 9 }); + table(exC_result, [90, 55, 55, 230], { fontSize: 9.5 }); + note('**Lesson:** Trump always wins \u2013 size does not matter between suits. Anna\u2019s Red 3 beats Ben\u2019s Yellow 19 and Carla\u2019s Green 12, because only Red is trump and the others cannot follow it. Holding any Red card in a 1-card round is almost a guaranteed trick.'); + + // --- Beispiel 2: 2-Karten-Runde (Daten in exA_*) --- + doc.addPage(); + h2('Example B \u2014 Round 2: a 2-card round (using trump to control tricks)'); + body('On to **Round 2**, now with two cards each. The deal rotates one seat: Carla dealt this round, so **Anna bids first** and also leads the first trick. (These are the same three players continuing the same game.)'); + table(exA_hands, [90, 330]); + body('**Bids (clockwise from Anna):** Anna **1**, Ben **0**, Carla **1**. Both Anna and Carla hold a trump, so each expects one trick.'); + table(exA_tricks, [70, 50, 50, 50, 205], { fontSize: 9 }); + table(exA_result, [90, 55, 55, 230], { fontSize: 9.5 }); + note('**Lesson:** Ben was squeezed between two trumps and correctly read that he could not win a trick, so he bid 0 and threw away his dangerous high Yellow 17 first. Note that here the bids summed to 2 with exactly 2 tricks available \u2013 so it was possible (though not guaranteed) for everyone to hit. That tension is the heart of TROX.'); + + // --- Beispiel 3: 3-Karten-Runde (Daten in exB_*) --- + doc.addPage(); + h2('Example C \u2014 Round 3: a 3-card round (the danger of overbidding)'); + body('**Round 3**, three cards each. The deal rotates again: Anna dealt, so **Ben bids first** and leads the first trick. The first-bidder duty has now passed Carla -> Anna -> Ben across the three rounds.'); + table(exB_hands, [90, 330]); + body('**Bids (clockwise from Ben):** Ben bids **2**, Carla bids **1**, Anna bids **0**.'); + small('Anna\u2019s hand has no trump and only middling cards, so she sensibly aims to win nothing.'); + table(exB_tricks, [70, 50, 50, 50, 205], { fontSize: 9 }); + table(exB_result, [90, 55, 55, 230], { fontSize: 9.5 }); + note('**Lesson:** Ben had the strongest hand and won all three tricks \u2013 but because he bid only 2, he scored just 3 points. Anna, with the weakest hand, scored the most by correctly predicting 0. In TROX, **accuracy beats raw strength.**'); + + // ---- 7. Strategy ---- + doc.addPage(); + h1('7. Strategy Tips'); + hr(); + bullet('Count the trumps', 'There are 20 Red cards. High Reds (16\u201320) are near-locks for a trick; low Reds may still be overtrumped. Track which Reds have been played.'); + bullet('A high non-trump is fragile', 'Yellow 20 looks powerful, but it wins only if Yellow is led and nobody is void. Against players who are short in Yellow, it can be trumped away.'); + bullet('Bidding 0 is a weapon', 'With no trump and only low cards, bid 0 and dump your cards safely. The +10 is identical to winning a 10-trick hand.'); + bullet('Leading matters', 'The trick winner leads next \u2013 so winning early lets you steer suits. If you need to stop winning, lead a suit you think opponents can beat.'); + bullet('Watch the bid total', 'Add up everyone\u2019s bids. If the total is below the number of tricks, someone *must* take an extra trick \u2013 figure out who is forced to.'); + bullet('Late rounds shrink', 'When hands drop back to 1\u20132 cards, a single trump or void decides everything. Bid conservatively when you have no control.'); + + // ---- 8. Variant ---- + h1('8. Optional Variant \u2014 "Exact Tension"'); + body('For a sharper game, use the common trick-taking rule that **the bids may not add up to the exact number of tricks in the round.** The last player to bid (the dealer) is forced to bid a number that makes the total higher or lower than the available tricks. This guarantees that **at least one player will miss** every round, raising the pressure. This rule is optional \u2013 agree on it before the game starts.'); + + // ---- 9. Scorepad / QR ---- + h1('9. Get Your Scorepad'); + ensureSpace(150); + { + const boxY = doc.y + 4; + const qrSize = 96; + const boxH = qrSize + 28; + const boxX = ML; + const boxW = CONTENT_W; + // dezenter Rahmen + doc.save().roundedRect(boxX, boxY, boxW, boxH, 10).lineWidth(1).strokeColor(C.goldLt).stroke().restore(); + // QR links + if (QR_BUFFER) doc.image(QR_BUFFER, boxX + 16, boxY + 14, { width: qrSize, height: qrSize }); + // Text rechts daneben + const tx = boxX + 16 + qrSize + 18; + const tw = boxW - (16 + qrSize + 18) - 16; + let ty = boxY + 20; + doc.font('Helvetica-Bold').fontSize(12).fillColor(C.gold).text('Need a scorepad?', tx, ty, { width: tw }); + ty = doc.y + 2; + doc.font('Helvetica').fontSize(9.5).fillColor(C.bodyTx) + .text('Scan the QR code to open the TROX scorepad page. Choose how many players you have, and the site prints the best-fitting PDF scorepad for your game.', tx, ty, { width: tw, lineGap: 2 }); + doc.font('Helvetica-Oblique').fontSize(8).fillColor(C.grey) + .text(SCOREPAD_URL, tx, doc.y + 2, { width: tw }); + doc.y = boxY + boxH + 8; + doc.x = ML; + } + + // ---- Quick Reference ---- + h2('Quick Reference'); + table([ + [{ t: 'Players', color: C.gold, font: 'Helvetica-Bold' }, '2\u20136 (best 3\u20134)'], + [{ t: 'Deck', color: C.gold, font: 'Helvetica-Bold' }, '80 cards \u2013 4 suits (R/Y/G/B), 1\u201320'], + [{ t: 'Trump', color: C.gold, font: 'Helvetica-Bold' }, 'Red (R) \u2013 always'], + [{ t: 'Rounds', color: C.gold, font: 'Helvetica-Bold' }, '10 \u2013 cards: 1\u00b72\u00b73\u00b74\u00b75\u00b75\u00b74\u00b73\u00b72\u00b71'], + [{ t: 'Per trick', color: C.gold, font: 'Helvetica-Bold' }, '+1 point'], + [{ t: 'Exact bid', color: C.gold, font: 'Helvetica-Bold' }, '+10 bonus (else 0)'], + [{ t: 'Win', color: C.gold, font: 'Helvetica-Bold' }, 'Highest total after Round 10'], + ], [130, 300], { header: false, zebra: true }); + + doc.moveDown(0.4); + hr(C.greyLn, 0.8); + doc.font('Helvetica-Oblique').fontSize(9).fillColor(C.gold) + .text('TROX \u2013 Bid exactly. Win tricks. Rule the table.', ML, doc.y, { width: CONTENT_W, align: 'center' }); + + doc.end(); + console.log('PDF erstellt: TROX_Rules_Extended_EN.pdf'); +} + +main().catch(err => { console.error(err); process.exit(1); }); \ No newline at end of file diff --git a/card-game/svg_to_png.js b/card-game/svg_to_png.js new file mode 100644 index 0000000..25246ba --- /dev/null +++ b/card-game/svg_to_png.js @@ -0,0 +1,65 @@ +#!/usr/bin/env node +/* ============================================================ + TROX – SVG -> PNG Konverter für The Game Crafter + ------------------------------------------------------------ + TGC akzeptiert nur PNG/JPG bei 300 DPI in RGB (kein SVG, kein CMYK). + Rendert jede SVG exakt auf ihre width/height-Pixelgröße (= 300 DPI) + und gibt flaches RGB aus. + + Voraussetzung (einmalig): npm install sharp + + Verwendung: + node svg_to_png.js karten_export_tgc + node svg_to_png.js box_export + node svg_to_png.js scorepad_export + ============================================================ */ + +const fs = require('fs'); +const path = require('path'); + +let sharp; +try { sharp = require('sharp'); } +catch (e) { + console.error('Fehlendes Modul "sharp". Bitte zuerst ausführen:\n npm install sharp\n'); + process.exit(1); +} + +const srcDir = process.argv[2]; +if (!srcDir || !fs.existsSync(srcDir)) { + console.error('Bitte gültigen Quellordner angeben, z.B.:\n node svg_to_png.js karten_export_tgc'); + process.exit(1); +} + +const outDir = `${srcDir.replace(/\/$/, '')}_png`; +if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true }); + +const files = fs.readdirSync(srcDir).filter(f => f.toLowerCase().endsWith('.svg')); +if (!files.length) { console.error('Keine SVG-Dateien gefunden in', srcDir); process.exit(1); } + +function readSize(svg) { + const wm = svg.match(/]*\bwidth="(\d+(?:\.\d+)?)"/); + const hm = svg.match(/]*\bheight="(\d+(?:\.\d+)?)"/); + if (wm && hm) return { w: Math.round(+wm[1]), h: Math.round(+hm[1]) }; + const vb = svg.match(/viewBox="0 0 (\d+(?:\.\d+)?) (\d+(?:\.\d+)?)"/); + if (vb) return { w: Math.round(+vb[1]), h: Math.round(+vb[2]) }; + return null; +} + +console.log(`Konvertiere ${files.length} SVG -> PNG (${srcDir} -> ${outDir}) ...`); + +(async () => { + for (const f of files) { + const svg = fs.readFileSync(path.join(srcDir, f), 'utf8'); + const size = readSize(svg); + const outPath = path.join(outDir, f.replace(/\.svg$/i, '.png')); + + let img = sharp(Buffer.from(svg), { density: 300 }); + if (size) img = img.resize(size.w, size.h, { fit: 'fill' }); + + await img + .flatten({ background: '#ffffff' }) + .png({ compressionLevel: 9 }) + .toFile(outPath); + } + console.log(`Fertig. PNGs liegen in ${outDir} (RGB, exakte 300-DPI-Pixelmaße).`); +})(); diff --git a/card-game/trox_card.js b/card-game/trox_card.js new file mode 100644 index 0000000..ded5e57 --- /dev/null +++ b/card-game/trox_card.js @@ -0,0 +1,177 @@ +/* ============================================================ + TROX – Gemeinsames Karten-Zeichenmodul + ------------------------------------------------------------ + Eine einzige Quelle für das Kartendesign. + Wird von generate_cards.js (ganze Karten) UND + generate_box.js (skalierte Mini-Karten im Fächer) genutzt, + damit die Box-Karten exakt den echten Karten entsprechen. + + Bezugssystem: Alle Zeichenfunktionen arbeiten in den + Koordinaten der ORIGINAL-Karte (694 x 1069). Für andere + Maße/Skalierungen wird außen herum transformiert. + ============================================================ */ + +// Referenzmaße der Original-Karte (Designraster) +const REF_W = 694; +const REF_H = 1069; + +// Farben + Codes (Y = Yellow, G = Green – englische Logik) +const SUITS = { + Rot: { hex: '#E53935', code: 'R', name: 'Red' }, // Trumpf + Gelb: { hex: '#FDD835', code: 'Y', name: 'Yellow' }, + Gruen: { hex: '#43A047', code: 'G', name: 'Green' }, + Schwarz: { hex: '#212121', code: 'B', name: 'Black' }, +}; + +// ------------------------------------------------------------ +// Symbolzentrum (rotationssymmetrisches Paar) – Koordinaten +// relativ zum Kartenmittelpunkt (0,0). +// ------------------------------------------------------------ +function centerIcons(colorName, hex) { + if (colorName === 'Rot') { + const crown = ` + + `; + return ` + ${crown} + ${crown}`; + } + if (colorName === 'Gruen') { + const leaf = ` + + `; + return ` + ${leaf} + ${leaf}`; + } + if (colorName === 'Gelb') { + const sunRay = ``; + const singleSun = ` + + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay}`; + return ` + ${singleSun} + ${singleSun}`; + } + // Schwarz – Zahnrad-Paar + const singleGear = ` + + + + + + `; + return ` + ${singleGear} + ${singleGear}`; +} + +// ------------------------------------------------------------ +// cardArtwork: der gesamte Karteninhalt OHNE den weißen +// Kartenkörper – als , gezeichnet im Raster width x height. +// safe = Abstand für Eckelemente & Zierrand +// drawBorder = Zierrand zeichnen (ja bei echten Karten) +// ------------------------------------------------------------ +function cardArtwork(colorName, num, { width = REF_W, height = REF_H, safe = 35, drawBorder = true, cornerRadius = 30 } = {}) { + const suit = SUITS[colorName]; + const hex = suit.hex; + const cardCode = `TK-${suit.code}${num}`; + + const cornerX = safe + 20; + const cornerNumY = safe + 55; + const cornerCodeY = cornerNumY + 22; + const centerGap = 70; + + const border = drawBorder + ? `` + : ''; + + return ` + ${border} + + + ${num} + ${cardCode} + ${num} + ${cardCode} + + + + ${num} + ${cardCode} + ${num} + ${cardCode} + + + + ${num} + + + + + + ${centerIcons(colorName, hex)} + + + + + ${num} + `; +} + +// CSS-Klassen, die cardArtwork voraussetzt (font-size SKALIERBAR über fontScale) +function cardStyles(hex, fontScale = 1) { + return ` + .trox-cnum { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: bold; font-size: ${65 * fontScale}px; } + .trox-code { font-family: 'Helvetica Neue', Arial, sans-serif; font-weight: bold; font-size: ${14 * fontScale}px; fill: #888888; letter-spacing: 1px; } + .trox-bignum { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: bold; font-size: ${320 * fontScale}px; letter-spacing: -10px; }`; +} + +// ------------------------------------------------------------ +// buildCardSVG: vollständige, eigenständige Karten-SVG. +// ------------------------------------------------------------ +function buildCardSVG(colorName, num, { width = REF_W, height = REF_H, safe = 35, cornerRadius = 35 } = {}) { + const suit = SUITS[colorName]; + return ` + + + + + ${cardArtwork(colorName, num, { width, height, safe, drawBorder: true, cornerRadius })} +`; +} + +// ------------------------------------------------------------ +// miniCardGroup: eine VOLLSTÄNDIGE Karte als skalierte , +// zentriert auf (cx,cy), gedreht um rot Grad. Für den Box-Fächer. +// Zeichnet Schatten + weißen Körper + komplettes Artwork, +// alles im Referenzraster und dann sauber herunterskaliert. +// ------------------------------------------------------------ +function miniCardGroup(colorName, num, cx, cy, targetWidth, rot = 0) { + const suit = SUITS[colorName]; + const scale = targetWidth / REF_W; // ein einziger Skalenfaktor → 1:1 Optik + const w = REF_W, h = REF_H; + + return ` + + + + + + + + ${cardArtwork(colorName, num, { width: w, height: h, safe: 35, drawBorder: true, cornerRadius: 30 })} + `; +} + +module.exports = { + REF_W, REF_H, SUITS, + centerIcons, cardArtwork, cardStyles, buildCardSVG, miniCardGroup, +}; diff --git a/generate_back.js b/generate_back.js new file mode 100644 index 0000000..af07e7f --- /dev/null +++ b/generate_back.js @@ -0,0 +1,81 @@ +const fs = require('fs'); +const path = require('path'); + +// Exakte Maße in Pixeln für 300 DPI (2.3125" x 3.5625") +const width = 694; +const height = 1069; + +const svgContent = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TROX + + + TROX + + +`; + +// Zielordner überprüfen und anlegen, falls noch nicht vorhanden +const outputDir = path.join(__dirname, 'karten_export_v2'); +if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir); +} + +// SVG Datei speichern +const fileName = 'trox_card_back.svg'; +fs.writeFileSync(path.join(outputDir, fileName), svgContent); + +console.log('Erfolgreich! Die Rückseite wurde als "trox_card_back.svg" im Ordner "karten_export_v2" generiert.'); \ No newline at end of file diff --git a/generate_box.js b/generate_box.js new file mode 100644 index 0000000..f4ff319 --- /dev/null +++ b/generate_box.js @@ -0,0 +1,61 @@ +const fs = require('fs'); +const path = require('path'); + +const width = 2000; +const height = 1800; + +// Hilfsfunktion für eine kleine Karte auf der Box-Vorderseite +function drawMiniCard(x, y, rotation, color, num) { + return ` + + + ${num} + ${num} + `; +} + +const svgContent = ` + + + + + + + + + + + + + + + + + + + ${drawMiniCard(-60, 20, -15, '#43A047', '7')} + ${drawMiniCard(-20, 0, -5, '#212121', '12')} + ${drawMiniCard(20, 10, 10, '#E53935', '11')} + ${drawMiniCard(60, 30, 25, '#FDD835', '4')} + + + TROX + TACTICAL CARD GAME + + + HOW TO PLAY + Bid exactly. Win tricks. Rule the table. + + + 2-6 Players | Ages 7+ | 80 Cards + + + + + +`; + +const outputDir = path.join(__dirname, 'karten_export_v2'); +if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir); } +fs.writeFileSync(path.join(outputDir, 'trox_tuck_box_v3.svg'), svgContent); +console.log('Update abgeschlossen: Box-Design mit Karten-Illustration generiert.'); \ No newline at end of file diff --git a/generate_cards.js b/generate_cards.js new file mode 100644 index 0000000..2ac74e3 --- /dev/null +++ b/generate_cards.js @@ -0,0 +1,149 @@ +const fs = require('fs'); +const path = require('path'); + +// Exakte Maße in Pixeln für 300 DPI (2 5/16" x 3 9/16" -> 2.3125" x 3.5625") +const width = 694; +const height = 1069; + +const colors = { + Rot: '#E53935', // Trumpf (R) + Gelb: '#FDD835', // Gelb (G) + Gruen: '#43A047', // Grün (GR) + Schwarz: '#212121' // Schwarz (S) +}; + +// Zielordner anlegen +const outputDir = path.join(__dirname, 'karten_export_v2'); +if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir); +} + +// Schleife durch Farben und Zahlen +for (const [colorName, hex] of Object.entries(colors)) { + const shortColor = colorName === 'Rot' ? 'R' : colorName === 'Gelb' ? 'G' : colorName === 'Gruen' ? 'GR' : 'S'; + + for (let num = 1; num <= 20; num++) { + + // Offizieller Kartencode als Seriennummer anstelle des irritierenden Binärcodes + const cardCode = `TK-${shortColor}${num}`; + + // Dynamische Generierung der vollkommen rotationssymmetrischen Symbole für die Mitte + let centerIcons = ''; + + if (colorName === 'Rot') { + // Symmetrisches Kronen-Paar für Trumpf + centerIcons = ` + + + + + + + + + `; + } else if (colorName === 'Gruen') { + // Symmetrisches Pflanzen/Blatt-Paar für Grün + centerIcons = ` + + + + + + + + + `; + } else if (colorName === 'Gelb') { + // Symmetrisches Sonnen/Sternen-Paar für Gelb + const sunRay = ``; + const singleSun = ` + + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + ${sunRay} + `; + centerIcons = ` + ${singleSun} + ${singleSun} + `; + } else if (colorName === 'Schwarz') { + // Symmetrisches Admin/IT-Zahnrad-Paar für Schwarz + const singleGear = ` + + + + + + + `; + centerIcons = ` + ${singleGear} + ${singleGear} + `; + } + + const svgContent = ` + + + + + + + + + + + + ${num} + ${cardCode} + + ${num} + ${cardCode} + + + + ${num} + ${cardCode} + + ${num} + ${cardCode} + + + + ${num} + + + + + + + + + ${centerIcons} + + + + + + ${num} + +`; + + // SVG Datei speichern + const fileName = `${colorName}_${String(num).padStart(2, '0')}.svg`; + fs.writeFileSync(path.join(outputDir, fileName), svgContent); + } +} + +console.log('Erfolgreich! 80 vollkommen rotationssymmetrische SVG-Karten wurden im Ordner "karten_export_v2" generiert.'); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4056c14..99b2fdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,10 @@ "@angular/platform-browser": "^18.2.0", "@angular/platform-browser-dynamic": "^18.2.0", "@angular/router": "^18.2.0", + "pdfkit": "^0.18.0", + "qrcode": "^1.5.4", "rxjs": "~7.8.0", + "sharp": "^0.34.5", "tslib": "^2.3.0", "zone.js": "~0.14.10" }, @@ -2442,6 +2445,16 @@ "node": ">=14.17.0" } }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", @@ -2850,6 +2863,519 @@ "node": ">=18" } }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@inquirer/checkbox": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.5.0.tgz", @@ -3514,6 +4040,30 @@ "webpack": "^5.54.0" } }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4181,6 +4731,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", @@ -4861,7 +5420,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5040,7 +5598,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -5193,6 +5750,24 @@ "node": ">=8" } }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { "version": "4.23.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", @@ -5392,6 +5967,15 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001657", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001657.tgz", @@ -6223,6 +6807,15 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/default-browser": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", @@ -6332,10 +6925,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -6348,6 +6940,12 @@ "dev": true, "license": "MIT" }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -6355,6 +6953,12 @@ "dev": true, "license": "MIT" }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -7012,7 +7616,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, "license": "MIT" }, "node_modules/fast-glob": { @@ -7203,6 +7806,32 @@ } } }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/fontkit/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/foreground-child": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", @@ -7328,7 +7957,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -8425,6 +9053,12 @@ "jiti": "bin/jiti.js" } }, + "node_modules/js-md5": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.8.3.tgz", + "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==", + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8952,6 +9586,25 @@ } } }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "license": "MIT", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -10642,6 +11295,15 @@ "node": ">= 4" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", @@ -10681,6 +11343,12 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -10862,6 +11530,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pdfkit": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.18.0.tgz", + "integrity": "sha512-NvUwSDZ0eYEzqAiWwVQkRkjYUkZ48kcsHuCO31ykqPPIVkwoSDjDGiwIgHHNtsiwls3z3P/zy4q00hl2chg2Ug==", + "license": "MIT", + "dependencies": { + "@noble/ciphers": "^1.0.0", + "@noble/hashes": "^1.6.0", + "fontkit": "^2.0.4", + "js-md5": "^0.8.3", + "linebreak": "^1.1.0", + "png-js": "^1.0.0" + } + }, "node_modules/picocolors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", @@ -10919,6 +11601,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/png-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.1.0.tgz", + "integrity": "sha512-PM/uYGzGdNSzqeOgly68+6wKQDL1SY0a/N+OEa/+br6LnHWOAJB0Npiamnodfq3jd2LS/i2fMeOKSAILjA+m5Q==", + "dependencies": { + "browserify-zlib": "^0.2.0" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/postcss": { "version": "8.4.41", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", @@ -11158,6 +11857,165 @@ "node": ">=0.9" } }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -11367,7 +12225,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11383,6 +12240,12 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -11477,6 +12340,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -11945,6 +12814,12 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -11983,6 +12858,62 @@ "node": ">=8" } }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", + "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -12488,7 +13419,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -12768,6 +13698,12 @@ "dev": true, "license": "MIT" }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12842,9 +13778,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/tuf-js": { @@ -12975,6 +13911,16 @@ "node": ">=4" } }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", @@ -12985,6 +13931,22 @@ "node": ">=4" } }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", @@ -14064,6 +15026,12 @@ "which": "bin/which" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -14075,7 +15043,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -14177,7 +15144,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -14193,7 +15159,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -14206,21 +15171,18 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14230,7 +15192,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", diff --git a/package.json b/package.json index 54add05..c76add2 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,10 @@ "@angular/platform-browser": "^18.2.0", "@angular/platform-browser-dynamic": "^18.2.0", "@angular/router": "^18.2.0", + "pdfkit": "^0.18.0", + "qrcode": "^1.5.4", "rxjs": "~7.8.0", + "sharp": "^0.34.5", "tslib": "^2.3.0", "zone.js": "~0.14.10" },