@alpaca-software/40kdc-data 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/abilities-resolver/index.d.ts +9 -0
- package/dist/abilities-resolver/index.d.ts.map +1 -0
- package/dist/abilities-resolver/index.js +9 -0
- package/dist/abilities-resolver/index.js.map +1 -0
- package/dist/abilities-resolver/resolver.d.ts +73 -0
- package/dist/abilities-resolver/resolver.d.ts.map +1 -0
- package/dist/abilities-resolver/resolver.js +142 -0
- package/dist/abilities-resolver/resolver.js.map +1 -0
- package/dist/audit-coverage.d.ts +78 -0
- package/dist/audit-coverage.d.ts.map +1 -0
- package/dist/audit-coverage.js +341 -0
- package/dist/audit-coverage.js.map +1 -0
- package/dist/author-batch.d.ts +147 -0
- package/dist/author-batch.d.ts.map +1 -0
- package/dist/author-batch.js +675 -0
- package/dist/author-batch.js.map +1 -0
- package/dist/author-input.d.ts +37 -0
- package/dist/author-input.d.ts.map +1 -0
- package/dist/author-input.js +162 -0
- package/dist/author-input.js.map +1 -0
- package/dist/bundle-schemas.d.ts +1 -0
- package/dist/bundle-schemas.d.ts.map +1 -0
- package/dist/bundle-schemas.js +1 -0
- package/dist/bundle-schemas.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -0
- package/dist/codegen-data.d.ts +1 -0
- package/dist/codegen-data.d.ts.map +1 -0
- package/dist/codegen-data.js +2 -0
- package/dist/codegen-data.js.map +1 -0
- package/dist/commands/import.d.ts +1 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +1 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/translate.d.ts +1 -0
- package/dist/commands/translate.d.ts.map +1 -0
- package/dist/commands/translate.js +10 -4
- package/dist/commands/translate.js.map +1 -0
- package/dist/commands/validate-all.d.ts +1 -0
- package/dist/commands/validate-all.d.ts.map +1 -0
- package/dist/commands/validate-all.js +1 -0
- package/dist/commands/validate-all.js.map +1 -0
- package/dist/commands/validate-core.d.ts +1 -0
- package/dist/commands/validate-core.d.ts.map +1 -0
- package/dist/commands/validate-core.js +1 -0
- package/dist/commands/validate-core.js.map +1 -0
- package/dist/commands/validate-enrichment.d.ts +1 -0
- package/dist/commands/validate-enrichment.d.ts.map +1 -0
- package/dist/commands/validate-enrichment.js +1 -0
- package/dist/commands/validate-enrichment.js.map +1 -0
- package/dist/convert-faction.d.ts +1 -0
- package/dist/convert-faction.d.ts.map +1 -0
- package/dist/convert-faction.js +1 -0
- package/dist/convert-faction.js.map +1 -0
- package/dist/converters/configs/adepta-sororitas.d.ts +1 -0
- package/dist/converters/configs/adepta-sororitas.d.ts.map +1 -0
- package/dist/converters/configs/adepta-sororitas.js +1 -0
- package/dist/converters/configs/adepta-sororitas.js.map +1 -0
- package/dist/converters/configs/adeptus-astartes.d.ts +1 -0
- package/dist/converters/configs/adeptus-astartes.d.ts.map +1 -0
- package/dist/converters/configs/adeptus-astartes.js +1 -0
- package/dist/converters/configs/adeptus-astartes.js.map +1 -0
- package/dist/converters/configs/adeptus-custodes.d.ts +1 -0
- package/dist/converters/configs/adeptus-custodes.d.ts.map +1 -0
- package/dist/converters/configs/adeptus-custodes.js +1 -0
- package/dist/converters/configs/adeptus-custodes.js.map +1 -0
- package/dist/converters/configs/adeptus-mechanicus.d.ts +1 -0
- package/dist/converters/configs/adeptus-mechanicus.d.ts.map +1 -0
- package/dist/converters/configs/adeptus-mechanicus.js +1 -0
- package/dist/converters/configs/adeptus-mechanicus.js.map +1 -0
- package/dist/converters/configs/aeldari.d.ts +1 -0
- package/dist/converters/configs/aeldari.d.ts.map +1 -0
- package/dist/converters/configs/aeldari.js +1 -0
- package/dist/converters/configs/aeldari.js.map +1 -0
- package/dist/converters/configs/agents-of-the-imperium.d.ts +1 -0
- package/dist/converters/configs/agents-of-the-imperium.d.ts.map +1 -0
- package/dist/converters/configs/agents-of-the-imperium.js +1 -0
- package/dist/converters/configs/agents-of-the-imperium.js.map +1 -0
- package/dist/converters/configs/astra-militarum.d.ts +1 -0
- package/dist/converters/configs/astra-militarum.d.ts.map +1 -0
- package/dist/converters/configs/astra-militarum.js +1 -0
- package/dist/converters/configs/astra-militarum.js.map +1 -0
- package/dist/converters/configs/black-templars.d.ts +1 -0
- package/dist/converters/configs/black-templars.d.ts.map +1 -0
- package/dist/converters/configs/black-templars.js +1 -0
- package/dist/converters/configs/black-templars.js.map +1 -0
- package/dist/converters/configs/blood-angels.d.ts +1 -0
- package/dist/converters/configs/blood-angels.d.ts.map +1 -0
- package/dist/converters/configs/blood-angels.js +1 -0
- package/dist/converters/configs/blood-angels.js.map +1 -0
- package/dist/converters/configs/chaos-daemons.d.ts +1 -0
- package/dist/converters/configs/chaos-daemons.d.ts.map +1 -0
- package/dist/converters/configs/chaos-daemons.js +1 -0
- package/dist/converters/configs/chaos-daemons.js.map +1 -0
- package/dist/converters/configs/chaos-knights.d.ts +1 -0
- package/dist/converters/configs/chaos-knights.d.ts.map +1 -0
- package/dist/converters/configs/chaos-knights.js +1 -0
- package/dist/converters/configs/chaos-knights.js.map +1 -0
- package/dist/converters/configs/chaos-space-marines.d.ts +1 -0
- package/dist/converters/configs/chaos-space-marines.d.ts.map +1 -0
- package/dist/converters/configs/chaos-space-marines.js +1 -0
- package/dist/converters/configs/chaos-space-marines.js.map +1 -0
- package/dist/converters/configs/crimson-fists.d.ts +1 -0
- package/dist/converters/configs/crimson-fists.d.ts.map +1 -0
- package/dist/converters/configs/crimson-fists.js +1 -0
- package/dist/converters/configs/crimson-fists.js.map +1 -0
- package/dist/converters/configs/dark-angels.d.ts +1 -0
- package/dist/converters/configs/dark-angels.d.ts.map +1 -0
- package/dist/converters/configs/dark-angels.js +1 -0
- package/dist/converters/configs/dark-angels.js.map +1 -0
- package/dist/converters/configs/death-guard.d.ts +1 -0
- package/dist/converters/configs/death-guard.d.ts.map +1 -0
- package/dist/converters/configs/death-guard.js +1 -0
- package/dist/converters/configs/death-guard.js.map +1 -0
- package/dist/converters/configs/deathwatch.d.ts +1 -0
- package/dist/converters/configs/deathwatch.d.ts.map +1 -0
- package/dist/converters/configs/deathwatch.js +1 -0
- package/dist/converters/configs/deathwatch.js.map +1 -0
- package/dist/converters/configs/drukhari.d.ts +1 -0
- package/dist/converters/configs/drukhari.d.ts.map +1 -0
- package/dist/converters/configs/drukhari.js +1 -0
- package/dist/converters/configs/drukhari.js.map +1 -0
- package/dist/converters/configs/emperors-children.d.ts +1 -0
- package/dist/converters/configs/emperors-children.d.ts.map +1 -0
- package/dist/converters/configs/emperors-children.js +1 -0
- package/dist/converters/configs/emperors-children.js.map +1 -0
- package/dist/converters/configs/genestealer-cults.d.ts +1 -0
- package/dist/converters/configs/genestealer-cults.d.ts.map +1 -0
- package/dist/converters/configs/genestealer-cults.js +1 -0
- package/dist/converters/configs/genestealer-cults.js.map +1 -0
- package/dist/converters/configs/grey-knights.d.ts +1 -0
- package/dist/converters/configs/grey-knights.d.ts.map +1 -0
- package/dist/converters/configs/grey-knights.js +1 -0
- package/dist/converters/configs/grey-knights.js.map +1 -0
- package/dist/converters/configs/imperial-fists.d.ts +1 -0
- package/dist/converters/configs/imperial-fists.d.ts.map +1 -0
- package/dist/converters/configs/imperial-fists.js +1 -0
- package/dist/converters/configs/imperial-fists.js.map +1 -0
- package/dist/converters/configs/imperial-knights.d.ts +1 -0
- package/dist/converters/configs/imperial-knights.d.ts.map +1 -0
- package/dist/converters/configs/imperial-knights.js +1 -0
- package/dist/converters/configs/imperial-knights.js.map +1 -0
- package/dist/converters/configs/iron-hands.d.ts +1 -0
- package/dist/converters/configs/iron-hands.d.ts.map +1 -0
- package/dist/converters/configs/iron-hands.js +1 -0
- package/dist/converters/configs/iron-hands.js.map +1 -0
- package/dist/converters/configs/leagues-of-votann.d.ts +1 -0
- package/dist/converters/configs/leagues-of-votann.d.ts.map +1 -0
- package/dist/converters/configs/leagues-of-votann.js +1 -0
- package/dist/converters/configs/leagues-of-votann.js.map +1 -0
- package/dist/converters/configs/necrons.d.ts +1 -0
- package/dist/converters/configs/necrons.d.ts.map +1 -0
- package/dist/converters/configs/necrons.js +1 -0
- package/dist/converters/configs/necrons.js.map +1 -0
- package/dist/converters/configs/orks.d.ts +1 -0
- package/dist/converters/configs/orks.d.ts.map +1 -0
- package/dist/converters/configs/orks.js +1 -0
- package/dist/converters/configs/orks.js.map +1 -0
- package/dist/converters/configs/raven-guard.d.ts +1 -0
- package/dist/converters/configs/raven-guard.d.ts.map +1 -0
- package/dist/converters/configs/raven-guard.js +1 -0
- package/dist/converters/configs/raven-guard.js.map +1 -0
- package/dist/converters/configs/salamanders.d.ts +1 -0
- package/dist/converters/configs/salamanders.d.ts.map +1 -0
- package/dist/converters/configs/salamanders.js +1 -0
- package/dist/converters/configs/salamanders.js.map +1 -0
- package/dist/converters/configs/space-wolves.d.ts +1 -0
- package/dist/converters/configs/space-wolves.d.ts.map +1 -0
- package/dist/converters/configs/space-wolves.js +1 -0
- package/dist/converters/configs/space-wolves.js.map +1 -0
- package/dist/converters/configs/tau-empire.d.ts +1 -0
- package/dist/converters/configs/tau-empire.d.ts.map +1 -0
- package/dist/converters/configs/tau-empire.js +1 -0
- package/dist/converters/configs/tau-empire.js.map +1 -0
- package/dist/converters/configs/thousand-sons.d.ts +1 -0
- package/dist/converters/configs/thousand-sons.d.ts.map +1 -0
- package/dist/converters/configs/thousand-sons.js +1 -0
- package/dist/converters/configs/thousand-sons.js.map +1 -0
- package/dist/converters/configs/tyranids.d.ts +1 -0
- package/dist/converters/configs/tyranids.d.ts.map +1 -0
- package/dist/converters/configs/tyranids.js +1 -0
- package/dist/converters/configs/tyranids.js.map +1 -0
- package/dist/converters/configs/ultramarines.d.ts +1 -0
- package/dist/converters/configs/ultramarines.d.ts.map +1 -0
- package/dist/converters/configs/ultramarines.js +1 -0
- package/dist/converters/configs/ultramarines.js.map +1 -0
- package/dist/converters/configs/white-scars.d.ts +1 -0
- package/dist/converters/configs/white-scars.d.ts.map +1 -0
- package/dist/converters/configs/white-scars.js +1 -0
- package/dist/converters/configs/white-scars.js.map +1 -0
- package/dist/converters/configs/world-eaters.d.ts +1 -0
- package/dist/converters/configs/world-eaters.d.ts.map +1 -0
- package/dist/converters/configs/world-eaters.js +1 -0
- package/dist/converters/configs/world-eaters.js.map +1 -0
- package/dist/converters/faction-config.d.ts +1 -0
- package/dist/converters/faction-config.d.ts.map +1 -0
- package/dist/converters/faction-config.js +1 -0
- package/dist/converters/faction-config.js.map +1 -0
- package/dist/converters/id-generator.d.ts +1 -0
- package/dist/converters/id-generator.d.ts.map +1 -0
- package/dist/converters/id-generator.js +1 -0
- package/dist/converters/id-generator.js.map +1 -0
- package/dist/converters/keyword-filter.d.ts +1 -0
- package/dist/converters/keyword-filter.d.ts.map +1 -0
- package/dist/converters/keyword-filter.js +1 -0
- package/dist/converters/keyword-filter.js.map +1 -0
- package/dist/converters/stat-parser.d.ts +1 -0
- package/dist/converters/stat-parser.d.ts.map +1 -0
- package/dist/converters/stat-parser.js +1 -0
- package/dist/converters/stat-parser.js.map +1 -0
- package/dist/converters/view-selector.d.ts +1 -0
- package/dist/converters/view-selector.d.ts.map +1 -0
- package/dist/converters/view-selector.js +1 -0
- package/dist/converters/view-selector.js.map +1 -0
- package/dist/converters/weapon-dedup.d.ts +1 -0
- package/dist/converters/weapon-dedup.d.ts.map +1 -0
- package/dist/converters/weapon-dedup.js +1 -0
- package/dist/converters/weapon-dedup.js.map +1 -0
- package/dist/cruncher/attribution.d.ts +66 -0
- package/dist/cruncher/attribution.d.ts.map +1 -0
- package/dist/cruncher/attribution.js +88 -0
- package/dist/cruncher/attribution.js.map +1 -0
- package/dist/cruncher/buffs.d.ts +206 -0
- package/dist/cruncher/buffs.d.ts.map +1 -0
- package/dist/cruncher/buffs.js +150 -0
- package/dist/cruncher/buffs.js.map +1 -0
- package/dist/cruncher/engine.d.ts +50 -0
- package/dist/cruncher/engine.d.ts.map +1 -0
- package/dist/cruncher/engine.js +312 -0
- package/dist/cruncher/engine.js.map +1 -0
- package/dist/cruncher/from-dsl.d.ts +101 -0
- package/dist/cruncher/from-dsl.d.ts.map +1 -0
- package/dist/cruncher/from-dsl.js +968 -0
- package/dist/cruncher/from-dsl.js.map +1 -0
- package/dist/cruncher/from-keyword.d.ts +35 -0
- package/dist/cruncher/from-keyword.d.ts.map +1 -0
- package/dist/cruncher/from-keyword.js +159 -0
- package/dist/cruncher/from-keyword.js.map +1 -0
- package/dist/cruncher/get-buffs.d.ts +12 -0
- package/dist/cruncher/get-buffs.d.ts.map +1 -0
- package/dist/cruncher/get-buffs.js +7 -0
- package/dist/cruncher/get-buffs.js.map +1 -0
- package/dist/cruncher/index.d.ts +12 -0
- package/dist/cruncher/index.d.ts.map +1 -0
- package/dist/cruncher/index.js +12 -0
- package/dist/cruncher/index.js.map +1 -0
- package/dist/data/bundle.generated.d.ts +1 -0
- package/dist/data/bundle.generated.d.ts.map +1 -0
- package/dist/data/bundle.generated.js +2 -1
- package/dist/data/bundle.generated.js.map +1 -0
- package/dist/data/collection.d.ts +10 -0
- package/dist/data/collection.d.ts.map +1 -0
- package/dist/data/collection.js +15 -0
- package/dist/data/collection.js.map +1 -0
- package/dist/data/dataset.d.ts +132 -2
- package/dist/data/dataset.d.ts.map +1 -0
- package/dist/data/dataset.js +248 -1
- package/dist/data/dataset.js.map +1 -0
- package/dist/data/entities.d.ts +67 -2
- package/dist/data/entities.d.ts.map +1 -0
- package/dist/data/entities.js +122 -0
- package/dist/data/entities.js.map +1 -0
- package/dist/data/index.d.ts +10 -1
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +14 -1
- package/dist/data/index.js.map +1 -0
- package/dist/data/normalize.d.ts +1 -0
- package/dist/data/normalize.d.ts.map +1 -0
- package/dist/data/normalize.js +1 -0
- package/dist/data/normalize.js.map +1 -0
- package/dist/data/roster-resolve.d.ts +58 -0
- package/dist/data/roster-resolve.d.ts.map +1 -0
- package/dist/data/roster-resolve.js +82 -0
- package/dist/data/roster-resolve.js.map +1 -0
- package/dist/data/types.d.ts +4 -1
- package/dist/data/types.d.ts.map +1 -0
- package/dist/data/types.js +2 -0
- package/dist/data/types.js.map +1 -0
- package/dist/export/helpers.d.ts +33 -0
- package/dist/export/helpers.d.ts.map +1 -0
- package/dist/export/helpers.js +57 -0
- package/dist/export/helpers.js.map +1 -0
- package/dist/export/index.d.ts +22 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +28 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/newrecruit-json.d.ts +3 -0
- package/dist/export/newrecruit-json.d.ts.map +1 -0
- package/dist/export/newrecruit-json.js +140 -0
- package/dist/export/newrecruit-json.js.map +1 -0
- package/dist/export/newrecruit-simple.d.ts +3 -0
- package/dist/export/newrecruit-simple.d.ts.map +1 -0
- package/dist/export/newrecruit-simple.js +76 -0
- package/dist/export/newrecruit-simple.js.map +1 -0
- package/dist/export/newrecruit-wtc.d.ts +4 -0
- package/dist/export/newrecruit-wtc.d.ts.map +1 -0
- package/dist/export/newrecruit-wtc.js +142 -0
- package/dist/export/newrecruit-wtc.js.map +1 -0
- package/dist/export/roster-json.d.ts +3 -0
- package/dist/export/roster-json.d.ts.map +1 -0
- package/dist/export/roster-json.js +8 -0
- package/dist/export/roster-json.js.map +1 -0
- package/dist/export/rosterizer.d.ts +3 -0
- package/dist/export/rosterizer.d.ts.map +1 -0
- package/dist/export/rosterizer.js +144 -0
- package/dist/export/rosterizer.js.map +1 -0
- package/dist/export/serializer.d.ts +27 -0
- package/dist/export/serializer.d.ts.map +1 -0
- package/dist/export/serializer.js +2 -0
- package/dist/export/serializer.js.map +1 -0
- package/dist/gen-conformance.d.ts +1 -0
- package/dist/gen-conformance.d.ts.map +1 -0
- package/dist/gen-conformance.js +274 -12
- package/dist/gen-conformance.js.map +1 -0
- package/dist/generated.d.ts +194 -118
- package/dist/generated.d.ts.map +1 -0
- package/dist/generated.js +1 -0
- package/dist/generated.js.map +1 -0
- package/dist/import/adapter.d.ts +4 -3
- package/dist/import/adapter.d.ts.map +1 -0
- package/dist/import/adapter.js +1 -0
- package/dist/import/adapter.js.map +1 -0
- package/dist/import/decode.d.ts +1 -0
- package/dist/import/decode.d.ts.map +1 -0
- package/dist/import/decode.js +1 -0
- package/dist/import/decode.js.map +1 -0
- package/dist/import/gw.d.ts +69 -0
- package/dist/import/gw.d.ts.map +1 -0
- package/dist/import/gw.js +245 -0
- package/dist/import/gw.js.map +1 -0
- package/dist/import/import-roster.d.ts +84 -0
- package/dist/import/import-roster.d.ts.map +1 -0
- package/dist/import/import-roster.js +207 -0
- package/dist/import/import-roster.js.map +1 -0
- package/dist/import/index.d.ts +7 -3
- package/dist/import/index.d.ts.map +1 -0
- package/dist/import/index.js +5 -1
- package/dist/import/index.js.map +1 -0
- package/dist/import/listforge.d.ts +1 -0
- package/dist/import/listforge.d.ts.map +1 -0
- package/dist/import/listforge.js +22 -2
- package/dist/import/listforge.js.map +1 -0
- package/dist/import/newrecruit-json.d.ts +31 -0
- package/dist/import/newrecruit-json.d.ts.map +1 -0
- package/dist/import/newrecruit-json.js +224 -0
- package/dist/import/newrecruit-json.js.map +1 -0
- package/dist/import/newrecruit-simple.d.ts +29 -0
- package/dist/import/newrecruit-simple.d.ts.map +1 -0
- package/dist/import/newrecruit-simple.js +200 -0
- package/dist/import/newrecruit-simple.js.map +1 -0
- package/dist/import/newrecruit-text.d.ts +51 -0
- package/dist/import/newrecruit-text.d.ts.map +1 -0
- package/dist/import/newrecruit-text.js +102 -0
- package/dist/import/newrecruit-text.js.map +1 -0
- package/dist/import/newrecruit-wtc.d.ts +36 -0
- package/dist/import/newrecruit-wtc.d.ts.map +1 -0
- package/dist/import/newrecruit-wtc.js +337 -0
- package/dist/import/newrecruit-wtc.js.map +1 -0
- package/dist/import/resolve.d.ts +3 -2
- package/dist/import/resolve.d.ts.map +1 -0
- package/dist/import/resolve.js +5 -2
- package/dist/import/resolve.js.map +1 -0
- package/dist/import/rosterizer.d.ts +70 -0
- package/dist/import/rosterizer.d.ts.map +1 -0
- package/dist/import/rosterizer.js +348 -0
- package/dist/import/rosterizer.js.map +1 -0
- package/dist/import/types.d.ts +11 -1
- package/dist/import/types.d.ts.map +1 -0
- package/dist/import/types.js +1 -0
- package/dist/import/types.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -0
- package/dist/known-support-10e.d.ts +1 -0
- package/dist/known-support-10e.d.ts.map +1 -0
- package/dist/known-support-10e.js +1 -0
- package/dist/known-support-10e.js.map +1 -0
- package/dist/link-abilities.d.ts +41 -0
- package/dist/link-abilities.d.ts.map +1 -0
- package/dist/link-abilities.js +159 -0
- package/dist/link-abilities.js.map +1 -0
- package/dist/migrations/2026-weapon-keywords.d.ts +2 -0
- package/dist/migrations/2026-weapon-keywords.d.ts.map +1 -0
- package/dist/migrations/2026-weapon-keywords.js +247 -0
- package/dist/migrations/2026-weapon-keywords.js.map +1 -0
- package/dist/port-10e-faction.d.ts +1 -0
- package/dist/port-10e-faction.d.ts.map +1 -0
- package/dist/port-10e-faction.js +1 -0
- package/dist/port-10e-faction.js.map +1 -0
- package/dist/report.d.ts +1 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +1 -0
- package/dist/report.js.map +1 -0
- package/dist/rube-goldberg.d.ts +3 -0
- package/dist/rube-goldberg.d.ts.map +1 -0
- package/dist/rube-goldberg.js +109 -0
- package/dist/rube-goldberg.js.map +1 -0
- package/dist/runner.d.ts +38 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +492 -0
- package/dist/runner.js.map +1 -0
- package/dist/schema-loader.d.ts +1 -0
- package/dist/schema-loader.d.ts.map +1 -0
- package/dist/schema-loader.js +1 -0
- package/dist/schema-loader.js.map +1 -0
- package/dist/scrub-ip.d.ts +14 -0
- package/dist/scrub-ip.d.ts.map +1 -0
- package/dist/scrub-ip.js +88 -0
- package/dist/scrub-ip.js.map +1 -0
- package/dist/validate.d.ts +1 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +2 -0
- package/dist/validate.js.map +1 -0
- package/package.json +15 -3
- package/schemas/core/roster.schema.json +19 -4
- package/schemas/core/weapon-keyword.schema.json +31 -0
- package/schemas/core/weapon.schema.json +22 -1
- package/schemas/enrichment/ability-dsl/effect.schema.json +23 -1
- package/dist/import/import-listforge.d.ts +0 -23
- package/dist/import/import-listforge.js +0 -32
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gen-conformance.js","sourceRoot":"","sources":["../src/gen-conformance.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Generate the cross-implementation conformance corpus under repo-root\n * `conformance/`. The TypeScript package is the reference implementation, so\n * the goldens it emits are what the Rust crate must reproduce byte-for-byte\n * (structurally). Run via `npm run gen:conformance`; CI regenerates and asserts\n * `git diff --exit-code conformance/` is clean.\n *\n * Outputs:\n * - `conformance/normalize.json` — `[{ input, expected }]` for normalizeName.\n * - `conformance/roster/<case>/expected.roster.json` — the resolved Roster.\n * - `conformance/roster/<case>/expected.<fmt>.{txt,json}` — every export\n * target's golden output. The TS exporter is the oracle; the Rust mirror\n * asserts byte-equal output for the same Roster.\n * - `conformance/roster/<case>/input.newrecruit-{wtc-compact,wtc-full,simple}.txt`\n * — text inputs derived from the seed by the exporter, so a re-import\n * regression in either implementation surfaces immediately.\n *\n * Seeding: each `<case>/` carries one canonical input — either the legacy\n * `input.json` (ListForge) or `input.newrecruit-json.json` (NewRecruit). Other\n * inputs are derived.\n */\nimport { readdirSync, readFileSync, writeFileSync, existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { Dataset } from \"./data/dataset.js\";\nimport { normalizeName } from \"./data/normalize.js\";\nimport { exportRoster, type ExportFormat } from \"./export/index.js\";\nimport { importRoster, REGISTERED_ADAPTERS } from \"./import/import-roster.js\";\nimport { selectAdapter } from \"./import/adapter.js\";\nimport type { ParsedRoster, Roster } from \"./import/types.js\";\nimport { attributeStages } from \"./cruncher/attribution.js\";\nimport type { EngineInput } from \"./cruncher/index.js\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst REPO_ROOT = join(__dirname, \"../..\");\nconst CONFORMANCE = join(REPO_ROOT, \"conformance\");\n\nconst NORMALIZE_INPUTS = [\n // NFD diacritic strip\n \"Khârn the Betrayer\",\n \"Brôkhyr\",\n \"Ûthar\",\n \"Magnús\",\n // apostrophe / quote variants\n \"T'au\",\n \"Be’lakor\",\n \"Kor’sarro Khan\",\n \"Aetaos'rau'keres\",\n \"‘quoted’\",\n // whitespace / hyphen collapse + trim\n \"Brôkhyr Iron-master\",\n \" the betrayer \",\n \"space--marines\",\n // casefold\n \"KHÂRN THE BETRAYER\",\n // already-normalized (idempotence)\n \"kharn the betrayer\",\n // distinctness anchors (must NOT collapse together)\n \"Khorne\",\n \"Khârn\",\n // Unicode whitespace beyond ASCII — every Unicode whitespace must collapse\n // identically across implementations or `find(\"Khorne Lord\")` and\n // `find(\"Khorne Lord\")` will silently disagree across ports.\n \"Khorne Lord\",\n \"Khorne Lord\",\n // Turkish dotted-I: NFD decomposes to `I` + combining dot above; the dot is\n // stripped, then locale-independent lowercase yields `i`. The case pins that\n // no implementation introduces locale-aware casefolding (which would map\n // `I` → `ı` under Turkish locale and break ASCII-text search).\n \"İmperial Fists\",\n // Zero-width joiner: passes through every step today. Pinned so behavior\n // does not silently change — if a future commit strips Cf-category chars,\n // this golden updates in the same PR.\n \"KhorneLord\",\n];\n\nfunction writeJson(path: string, value: unknown): void {\n writeFileSync(path, `${JSON.stringify(value, null, 2)}\\n`);\n}\n\nfunction writeText(path: string, value: string): void {\n writeFileSync(path, value);\n}\n\nfunction genNormalize(): void {\n const table = NORMALIZE_INPUTS.map((input) => ({ input, expected: normalizeName(input) }));\n writeJson(join(CONFORMANCE, \"normalize.json\"), table);\n console.log(`normalize.json: ${table.length} cases`);\n}\n\n/** Locate the canonical input for a fixture dir: prefer `input.json` (legacy\n * ListForge), then `input.newrecruit-json.json` (NewRecruit), then the\n * text-only `input.gw.txt` (GW app export — import-only, like ListForge). */\nfunction seedRoster(caseDir: string, ds: Dataset): Roster {\n const decoded = decodeCanonicalSeed(caseDir);\n return importRoster(decoded, { dataset: ds });\n}\n\n/** Return the decoded payload for the canonical seed — the same value the\n * import pipeline would dispatch on. JSON seeds come back parsed; text seeds\n * come back as the raw string. */\nfunction decodeCanonicalSeed(caseDir: string): unknown {\n const jsonSeed = join(caseDir, \"input.json\");\n if (existsSync(jsonSeed)) {\n return JSON.parse(readFileSync(jsonSeed, \"utf8\"));\n }\n const nrSeed = join(caseDir, \"input.newrecruit-json.json\");\n if (existsSync(nrSeed)) {\n return JSON.parse(readFileSync(nrSeed, \"utf8\"));\n }\n const gwSeed = join(caseDir, \"input.gw.txt\");\n if (existsSync(gwSeed)) {\n return readFileSync(gwSeed, \"utf8\");\n }\n throw new Error(`no canonical input found in ${caseDir}`);\n}\n\n/** Run a decoded payload through the adapter pipeline up to (but not past)\n * resolution. The result is the format-agnostic ParsedRoster — the same\n * intermediate the resolver consumes. Pinning this layer surfaces parser\n * regressions even when resolution masks them. */\nfunction parsedFromCanonicalSeed(caseDir: string): ParsedRoster {\n const decoded = decodeCanonicalSeed(caseDir);\n const adapter = selectAdapter(decoded, [...REGISTERED_ADAPTERS]);\n return adapter.parse(decoded);\n}\n\nconst TEXT_FORMATS: { format: ExportFormat; inputName: string; goldenName: string }[] = [\n {\n format: \"newrecruit-wtc-compact\",\n inputName: \"input.newrecruit-wtc-compact.txt\",\n goldenName: \"expected.newrecruit-wtc-compact.txt\",\n },\n {\n format: \"newrecruit-wtc-full\",\n inputName: \"input.newrecruit-wtc-full.txt\",\n goldenName: \"expected.newrecruit-wtc-full.txt\",\n },\n {\n format: \"newrecruit-simple\",\n inputName: \"input.newrecruit-simple.txt\",\n goldenName: \"expected.newrecruit-simple.txt\",\n },\n];\n\nfunction genRosters(): void {\n const ds = Dataset.embedded();\n const rosterDir = join(CONFORMANCE, \"roster\");\n for (const entry of readdirSync(rosterDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const caseDir = join(rosterDir, entry.name);\n\n const seed = seedRoster(caseDir, ds);\n writeJson(join(caseDir, \"expected.roster.json\"), seed);\n\n // Parsed-stage golden — the intermediate ParsedRoster produced by the\n // adapter for the canonical seed, before resolution. Catches parser bugs\n // that resolution would otherwise mask (e.g. wrong unit count from a\n // duplicate cost line that resolves to the same unit twice).\n writeJson(join(caseDir, \"expected.parsed.json\"), parsedFromCanonicalSeed(caseDir));\n\n // JSON export golden — NewRecruit-shaped skeleton.\n const jsonOut = exportRoster(seed, \"newrecruit-json\");\n writeJson(join(caseDir, \"expected.newrecruit-json.json\"), JSON.parse(jsonOut));\n\n // Canonical Roster JSON export — should equal the resolved roster.\n writeJson(join(caseDir, \"expected.roster-json.json\"), JSON.parse(exportRoster(seed, \"roster-json\")));\n\n // Text exports: always write the export golden so every fixture exercises\n // the cross-implementation byte-equality check. Only write the\n // `input.*.txt` round-trip seed when the fixture was authored for the\n // NewRecruit pipeline — legacy ListForge fixtures carry decoration\n // (multi-force warnings, leader-attachment inference) that the simple/wtc\n // exporters can't fully preserve, so the round-trip would fail\n // structurally rather than uncover a parser bug.\n const isNewRecruitSeed = existsSync(join(caseDir, \"input.newrecruit-json.json\"));\n for (const { format, inputName, goldenName } of TEXT_FORMATS) {\n const out = exportRoster(seed, format);\n writeText(join(caseDir, goldenName), out);\n if (isNewRecruitSeed) {\n writeText(join(caseDir, inputName), out);\n }\n }\n\n // Rosterizer JSON export + a derived round-trip input. The exporter is\n // deterministic and round-trips through the adapter, so emitting it as\n // both `expected.rosterizer.json` and `input.rosterizer.json` pins the\n // cross-implementation goldens and the importer regression at the same\n // time. Same NewRecruit-seed gate as the text formats — multi-force\n // ListForge fixtures lose their provisional leader-attachment under\n // round-trip, so they only get the export golden, not the derived input.\n const rosterizerOut = exportRoster(seed, \"rosterizer\");\n writeJson(join(caseDir, \"expected.rosterizer.json\"), JSON.parse(rosterizerOut));\n if (isNewRecruitSeed) {\n writeJson(join(caseDir, \"input.rosterizer.json\"), JSON.parse(rosterizerOut));\n }\n\n console.log(\n `roster/${entry.name}: ${seed.units.length} units, ${seed.diagnostics.warnings.length} warnings`,\n );\n }\n}\n\n/**\n * Linked-API query cases. Each descriptor names a query method on Dataset, the\n * args to call it with, and how the result should be compared.\n *\n * `comparison: \"ordered\"` pins the result order — used for queries that iterate\n * a data-driven array (`unit.ability_ids`, `unit.weapon_ids`) where order is\n * encoded in the data and both implementations iterate it the same way.\n *\n * `comparison: \"set\"` pins only the set of ids — used for queries that walk an\n * index (faction → abilities, ability → phases) where iteration order depends\n * on dataset bundler internals and is incidental. Ids are sorted before\n * comparison.\n *\n * `comparison: \"scalar\"` pins a single id-or-null result (find_* and\n * faction_of(unit)).\n */\ntype LinkedApiQuery =\n | { name: string; query: \"find_unit\"; args: { query: string }; comparison: \"scalar\" }\n | { name: string; query: \"find_weapon\"; args: { query: string }; comparison: \"scalar\" }\n | { name: string; query: \"find_faction\"; args: { query: string }; comparison: \"scalar\" }\n | { name: string; query: \"find_ability\"; args: { query: string }; comparison: \"scalar\" }\n | { name: string; query: \"abilities_of\"; args: { unitId: string }; comparison: \"ordered\" }\n | { name: string; query: \"weapons_of\"; args: { unitId: string }; comparison: \"ordered\" }\n | { name: string; query: \"phases_of\"; args: { abilityId: string }; comparison: \"set\" }\n | { name: string; query: \"faction_of\"; args: { unitId: string }; comparison: \"scalar\" }\n | { name: string; query: \"abilities_of_faction\"; args: { factionId: string }; comparison: \"set\" }\n | { name: string; query: \"weapons_of_faction\"; args: { factionId: string }; comparison: \"set\" };\n\nconst LINKED_API_QUERIES: LinkedApiQuery[] = [\n // find_unit: diacritic-insensitive lookup, miss returns null.\n { name: \"find_unit by diacritic name\", query: \"find_unit\", args: { query: \"Kharn\" }, comparison: \"scalar\" },\n { name: \"find_unit miss returns null\", query: \"find_unit\", args: { query: \"not-a-real-unit-xyz\" }, comparison: \"scalar\" },\n // find_weapon: hyphen + space tolerance.\n { name: \"find_weapon by name\", query: \"find_weapon\", args: { query: \"bolt rifle\" }, comparison: \"scalar\" },\n // find_faction: punctuation/diacritic tolerance.\n { name: \"find_faction by display name\", query: \"find_faction\", args: { query: \"World Eaters\" }, comparison: \"scalar\" },\n // find_ability: ability name lookup.\n { name: \"find_ability by name\", query: \"find_ability\", args: { query: \"Berzerker Frenzy\" }, comparison: \"scalar\" },\n // abilities_of(unit): ordered, iterates unit.ability_ids array.\n { name: \"abilities_of intercessor-squad\", query: \"abilities_of\", args: { unitId: \"intercessor-squad\" }, comparison: \"ordered\" },\n { name: \"abilities_of kharn-the-betrayer\", query: \"abilities_of\", args: { unitId: \"kharn-the-betrayer\" }, comparison: \"ordered\" },\n // weapons_of(unit): ordered, iterates unit.weapon_ids array.\n { name: \"weapons_of intercessor-squad\", query: \"weapons_of\", args: { unitId: \"intercessor-squad\" }, comparison: \"ordered\" },\n { name: \"weapons_of kharn-the-betrayer\", query: \"weapons_of\", args: { unitId: \"kharn-the-betrayer\" }, comparison: \"ordered\" },\n // phases_of(ability): compared as set (phase index iteration order is incidental).\n { name: \"phases_of berzerker-frenzy\", query: \"phases_of\", args: { abilityId: \"berzerker-frenzy\" }, comparison: \"set\" },\n // faction_of(unit): scalar id or null.\n { name: \"faction_of intercessor-squad\", query: \"faction_of\", args: { unitId: \"intercessor-squad\" }, comparison: \"scalar\" },\n // abilities_of_faction: compared as set (collection-index order is incidental).\n { name: \"abilities_of_faction world-eaters\", query: \"abilities_of_faction\", args: { factionId: \"world-eaters\" }, comparison: \"set\" },\n // weapons_of_faction: compared as set.\n { name: \"weapons_of_faction world-eaters\", query: \"weapons_of_faction\", args: { factionId: \"world-eaters\" }, comparison: \"set\" },\n];\n\nfunction genLinkedApi(): void {\n const ds = Dataset.embedded();\n const cases = LINKED_API_QUERIES.map((q) => {\n const expected = runLinkedQuery(ds, q);\n return { ...q, expected };\n });\n writeJson(join(CONFORMANCE, \"linked-api\", \"cases.json\"), cases);\n console.log(`linked-api/cases.json: ${cases.length} cases`);\n}\n\nfunction runLinkedQuery(ds: Dataset, q: LinkedApiQuery): string | null | string[] {\n switch (q.query) {\n case \"find_unit\":\n return ds.units.find(q.args.query)?.id ?? null;\n case \"find_weapon\":\n return ds.weapons.find(q.args.query)?.id ?? null;\n case \"find_faction\":\n return ds.factions.find(q.args.query)?.id ?? null;\n case \"find_ability\":\n return ds.abilities.find(q.args.query)?.id ?? null;\n case \"abilities_of\": {\n const u = ds.units.get(q.args.unitId);\n if (!u) throw new Error(`abilities_of: unknown unit ${q.args.unitId}`);\n return u.abilities.map((a) => a.id);\n }\n case \"weapons_of\": {\n const u = ds.units.get(q.args.unitId);\n if (!u) throw new Error(`weapons_of: unknown unit ${q.args.unitId}`);\n return u.weapons.map((w) => w.id);\n }\n case \"phases_of\": {\n const a = ds.abilities.get(q.args.abilityId);\n if (!a) throw new Error(`phases_of: unknown ability ${q.args.abilityId}`);\n return [...a.phases].sort();\n }\n case \"faction_of\": {\n const u = ds.units.get(q.args.unitId);\n if (!u) throw new Error(`faction_of: unknown unit ${q.args.unitId}`);\n return u.faction?.id ?? null;\n }\n case \"abilities_of_faction\":\n return ds.abilities.byFaction(q.args.factionId).map((a) => a.id).sort();\n case \"weapons_of_faction\": {\n // Mirrors Rust `weapons_of_faction`: aggregate weapons across the\n // faction's units and dedupe by id. The collection-level\n // `weapons.byFaction()` is a different operation (it looks up weapons\n // whose own `faction_id` is set, which is empty for most factions).\n const f = ds.factions.get(q.args.factionId);\n if (!f) throw new Error(`weapons_of_faction: unknown faction ${q.args.factionId}`);\n return f.weapons.map((w) => w.id).sort();\n }\n }\n}\n\n/**\n * Attribution corpus: reuses the existing cruncher inputs from the cases that\n * carry at least one groupable buff (ability or manual). The expected shape\n * is the AttributedStage array produced by attributeStages; both\n * implementations of the leave-one-out decomposition must reproduce it\n * within the per-stage float tolerance.\n */\nconst ATTRIBUTION_CASE_FILES = [\n \"05-anti-infantry-vs-cultist.json\",\n \"07-twin-linked-heavy-stationary-vs-knight.json\",\n];\n\ninterface CruncherCaseInput {\n name: string;\n attacker: { weaponId: string; profileIndex: number };\n modelsFiring: number;\n target: { unitId: string; profileIndex: number; modelCount?: number };\n context: EngineInput[\"context\"];\n buffs: EngineInput[\"buffs\"];\n}\n\nfunction loadAttributionInput(ds: Dataset, filename: string): {\n name: string;\n input: EngineInput;\n} {\n const path = join(CONFORMANCE, \"cruncher\", filename);\n const c = JSON.parse(readFileSync(path, \"utf8\")) as CruncherCaseInput;\n const weapon = ds.weapons.get(c.attacker.weaponId);\n const unit = ds.units.get(c.target.unitId);\n if (!weapon) throw new Error(`attribution: unknown weapon ${c.attacker.weaponId}`);\n if (!unit) throw new Error(`attribution: unknown unit ${c.target.unitId}`);\n return {\n name: c.name,\n input: {\n attacker: { weapon: weapon.raw, profileIndex: c.attacker.profileIndex },\n target: {\n unit: unit.raw,\n profileIndex: c.target.profileIndex,\n ...(c.target.modelCount !== undefined ? { modelCount: c.target.modelCount } : {}),\n },\n modelsFiring: c.modelsFiring,\n buffs: c.buffs,\n context: c.context,\n },\n };\n}\n\nfunction genAttribution(): void {\n const ds = Dataset.embedded();\n const cases = ATTRIBUTION_CASE_FILES.map((filename, idx) => {\n const { name, input } = loadAttributionInput(ds, filename);\n const stages = attributeStages(input, ds);\n return {\n // Persist the input by file reference so the corpus stays a single\n // source of truth — the cruncher case file already pins the EngineInput.\n name,\n cruncher_case: filename,\n expected: stages.map((s) => ({\n name: s.name,\n expected: s.expected,\n baseline: s.baseline,\n lifts: s.lifts.map((l) => ({ source: l.source, delta: l.delta })),\n residual: s.residual,\n intrinsics: s.intrinsics,\n })),\n // Stable ordering of cases in the corpus file.\n _order: idx,\n };\n });\n // Sort by _order and strip the helper before writing.\n cases.sort((a, b) => a._order - b._order);\n const serialised = cases.map(({ _order: _o, ...rest }) => rest);\n writeJson(join(CONFORMANCE, \"attribution\", \"cases.json\"), serialised);\n console.log(`attribution/cases.json: ${cases.length} cases`);\n}\n\ngenNormalize();\ngenRosters();\ngenLinkedApi();\ngenAttribution();\n"]}
|
package/dist/generated.d.ts
CHANGED
|
@@ -122,16 +122,6 @@ export type ConditionNode = SimpleCondition | CompoundCondition;
|
|
|
122
122
|
* Predicate for when the action is considered complete.
|
|
123
123
|
*/
|
|
124
124
|
export type AbilityCondition1 = SimpleCondition | CompoundCondition;
|
|
125
|
-
/**
|
|
126
|
-
* Effect applied when the action completes (e.g. terrain-area-tag to mark transient state on a terrain piece).
|
|
127
|
-
*/
|
|
128
|
-
export type AbilityEffect = SingleEffect | ChoiceEffect | SequenceEffect | DiceGatedEffect | ConditionalEffect | DicePoolAllocationEffect;
|
|
129
|
-
/**
|
|
130
|
-
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
131
|
-
* via the `definition` "effect-node".
|
|
132
|
-
*/
|
|
133
|
-
export type EffectNode = SingleEffect | ChoiceEffect | SequenceEffect | DiceGatedEffect | ConditionalEffect | DicePoolAllocationEffect;
|
|
134
|
-
export type AbilityCondition2 = SimpleCondition | CompoundCondition;
|
|
135
125
|
/**
|
|
136
126
|
* A terrain piece's 2D footprint, relative to the piece's `position`. Axis-aligned rectangle, right triangle (right angle at the local origin, legs along +x/+y), or an explicit polygon. GW's standard templates (e.g. 7"×11.5" rectangles, 8"×11.5" right triangles, 6"×4" rectangles, 10"×2.5" and 6"×2" lines) are all expressible here; lines are thin rectangles.
|
|
137
127
|
*
|
|
@@ -161,6 +151,52 @@ export type Footprint = {
|
|
|
161
151
|
*/
|
|
162
152
|
export type TerrainAreaKeyword = "obscuring" | "hidden" | "plunging-fire";
|
|
163
153
|
export type AbilityEffect1 = SingleEffect | ChoiceEffect | SequenceEffect | DiceGatedEffect | ConditionalEffect | DicePoolAllocationEffect;
|
|
154
|
+
/**
|
|
155
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
156
|
+
* via the `definition` "single-effect".
|
|
157
|
+
*/
|
|
158
|
+
export type SingleEffect = unknown & {
|
|
159
|
+
type: "stat-modifier" | "roll-modifier" | "re-roll" | "mortal-wounds" | "feel-no-pain" | "invulnerable-save" | "ward" | "keyword-grant" | "movement-modifier" | "deep-strike" | "fallback-and-act" | "fight-first" | "fight-last" | "shoot-on-death" | "fight-on-death" | "objective-control-modifier" | "leadership-modifier" | "damage-reduction" | "attack-restriction" | "ability-grant" | "cp-gain" | "cp-refund" | "model-destruction" | "resurrection" | "resource-gain" | "resource-spend" | "charge-roll-modifier" | "terrain-area-tag" | "bs-modifier" | "engagement-passthrough";
|
|
160
|
+
target: "self" | "bearer" | "unit" | "attached-unit" | "attacker" | "defender" | "friendly-within-aura" | "enemy-within-aura" | "all-friendly" | "all-enemy";
|
|
161
|
+
modifier?: {
|
|
162
|
+
[k: string]: unknown;
|
|
163
|
+
};
|
|
164
|
+
[k: string]: unknown;
|
|
165
|
+
} & {
|
|
166
|
+
type: "stat-modifier" | "roll-modifier" | "re-roll" | "mortal-wounds" | "feel-no-pain" | "invulnerable-save" | "ward" | "keyword-grant" | "movement-modifier" | "deep-strike" | "fallback-and-act" | "fight-first" | "fight-last" | "shoot-on-death" | "fight-on-death" | "objective-control-modifier" | "leadership-modifier" | "damage-reduction" | "attack-restriction" | "ability-grant" | "cp-gain" | "cp-refund" | "model-destruction" | "resurrection" | "resource-gain" | "resource-spend" | "charge-roll-modifier" | "terrain-area-tag" | "bs-modifier" | "engagement-passthrough";
|
|
167
|
+
target: "self" | "bearer" | "unit" | "attached-unit" | "attacker" | "defender" | "friendly-within-aura" | "enemy-within-aura" | "all-friendly" | "all-enemy";
|
|
168
|
+
modifier?: {
|
|
169
|
+
[k: string]: unknown;
|
|
170
|
+
};
|
|
171
|
+
[k: string]: unknown;
|
|
172
|
+
} & {
|
|
173
|
+
type: "stat-modifier" | "roll-modifier" | "re-roll" | "mortal-wounds" | "feel-no-pain" | "invulnerable-save" | "ward" | "keyword-grant" | "movement-modifier" | "deep-strike" | "fallback-and-act" | "fight-first" | "fight-last" | "shoot-on-death" | "fight-on-death" | "objective-control-modifier" | "leadership-modifier" | "damage-reduction" | "attack-restriction" | "ability-grant" | "cp-gain" | "cp-refund" | "model-destruction" | "resurrection" | "resource-gain" | "resource-spend" | "charge-roll-modifier" | "terrain-area-tag" | "bs-modifier" | "engagement-passthrough";
|
|
174
|
+
target: "self" | "bearer" | "unit" | "attached-unit" | "attacker" | "defender" | "friendly-within-aura" | "enemy-within-aura" | "all-friendly" | "all-enemy";
|
|
175
|
+
modifier?: {
|
|
176
|
+
[k: string]: unknown;
|
|
177
|
+
};
|
|
178
|
+
[k: string]: unknown;
|
|
179
|
+
} & {
|
|
180
|
+
type: "stat-modifier" | "roll-modifier" | "re-roll" | "mortal-wounds" | "feel-no-pain" | "invulnerable-save" | "ward" | "keyword-grant" | "movement-modifier" | "deep-strike" | "fallback-and-act" | "fight-first" | "fight-last" | "shoot-on-death" | "fight-on-death" | "objective-control-modifier" | "leadership-modifier" | "damage-reduction" | "attack-restriction" | "ability-grant" | "cp-gain" | "cp-refund" | "model-destruction" | "resurrection" | "resource-gain" | "resource-spend" | "charge-roll-modifier" | "terrain-area-tag" | "bs-modifier" | "engagement-passthrough";
|
|
181
|
+
target: "self" | "bearer" | "unit" | "attached-unit" | "attacker" | "defender" | "friendly-within-aura" | "enemy-within-aura" | "all-friendly" | "all-enemy";
|
|
182
|
+
modifier?: {
|
|
183
|
+
[k: string]: unknown;
|
|
184
|
+
};
|
|
185
|
+
[k: string]: unknown;
|
|
186
|
+
} & {
|
|
187
|
+
type: "stat-modifier" | "roll-modifier" | "re-roll" | "mortal-wounds" | "feel-no-pain" | "invulnerable-save" | "ward" | "keyword-grant" | "movement-modifier" | "deep-strike" | "fallback-and-act" | "fight-first" | "fight-last" | "shoot-on-death" | "fight-on-death" | "objective-control-modifier" | "leadership-modifier" | "damage-reduction" | "attack-restriction" | "ability-grant" | "cp-gain" | "cp-refund" | "model-destruction" | "resurrection" | "resource-gain" | "resource-spend" | "charge-roll-modifier" | "terrain-area-tag" | "bs-modifier" | "engagement-passthrough";
|
|
188
|
+
target: "self" | "bearer" | "unit" | "attached-unit" | "attacker" | "defender" | "friendly-within-aura" | "enemy-within-aura" | "all-friendly" | "all-enemy";
|
|
189
|
+
modifier?: {
|
|
190
|
+
[k: string]: unknown;
|
|
191
|
+
};
|
|
192
|
+
[k: string]: unknown;
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
196
|
+
* via the `definition` "effect-node".
|
|
197
|
+
*/
|
|
198
|
+
export type EffectNode = SingleEffect | ChoiceEffect | SequenceEffect | DiceGatedEffect | ConditionalEffect | DicePoolAllocationEffect;
|
|
199
|
+
export type AbilityCondition2 = SimpleCondition | CompoundCondition;
|
|
164
200
|
/**
|
|
165
201
|
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
166
202
|
* via the `definition` "condition".
|
|
@@ -497,7 +533,7 @@ export interface SecondaryCard {
|
|
|
497
533
|
*/
|
|
498
534
|
use_limit?: number;
|
|
499
535
|
completes?: AbilityCondition1;
|
|
500
|
-
effect?:
|
|
536
|
+
effect?: unknown;
|
|
501
537
|
};
|
|
502
538
|
/**
|
|
503
539
|
* VP-award blocks: each scores when `trigger` fires and the optional `when` condition holds. An award scores either a flat `vp` or a count-scaled `vp_per` (VP per instance of the thing named by `per`). Awards accrue independently and sum; a card's '+ ... CUMULATIVE' rows are modelled as separate awards flagged `cumulative` for faithful round-trip.
|
|
@@ -568,111 +604,6 @@ export interface CompoundCondition {
|
|
|
568
604
|
operands: [ConditionNode, ...ConditionNode[]];
|
|
569
605
|
[k: string]: unknown;
|
|
570
606
|
}
|
|
571
|
-
/**
|
|
572
|
-
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
573
|
-
* via the `definition` "single-effect".
|
|
574
|
-
*/
|
|
575
|
-
export interface SingleEffect {
|
|
576
|
-
type: "stat-modifier" | "roll-modifier" | "re-roll" | "mortal-wounds" | "feel-no-pain" | "invulnerable-save" | "ward" | "keyword-grant" | "movement-modifier" | "deep-strike" | "fallback-and-act" | "fight-first" | "fight-last" | "shoot-on-death" | "fight-on-death" | "objective-control-modifier" | "leadership-modifier" | "damage-reduction" | "attack-restriction" | "ability-grant" | "cp-gain" | "cp-refund" | "model-destruction" | "resurrection" | "resource-gain" | "resource-spend" | "charge-roll-modifier" | "terrain-area-tag" | "bs-modifier" | "engagement-passthrough";
|
|
577
|
-
target: "self" | "bearer" | "unit" | "attached-unit" | "attacker" | "defender" | "friendly-within-aura" | "enemy-within-aura" | "all-friendly" | "all-enemy";
|
|
578
|
-
modifier?: {
|
|
579
|
-
[k: string]: unknown;
|
|
580
|
-
};
|
|
581
|
-
[k: string]: unknown;
|
|
582
|
-
}
|
|
583
|
-
/**
|
|
584
|
-
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
585
|
-
* via the `definition` "choice-effect".
|
|
586
|
-
*/
|
|
587
|
-
export interface ChoiceEffect {
|
|
588
|
-
type: "choice";
|
|
589
|
-
/**
|
|
590
|
-
* @minItems 2
|
|
591
|
-
*/
|
|
592
|
-
options: [EffectNode, EffectNode, ...EffectNode[]];
|
|
593
|
-
choice_label?: string;
|
|
594
|
-
[k: string]: unknown;
|
|
595
|
-
}
|
|
596
|
-
/**
|
|
597
|
-
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
598
|
-
* via the `definition` "sequence-effect".
|
|
599
|
-
*/
|
|
600
|
-
export interface SequenceEffect {
|
|
601
|
-
type: "sequence";
|
|
602
|
-
/**
|
|
603
|
-
* @minItems 1
|
|
604
|
-
*/
|
|
605
|
-
steps: [EffectNode, ...EffectNode[]];
|
|
606
|
-
[k: string]: unknown;
|
|
607
|
-
}
|
|
608
|
-
/**
|
|
609
|
-
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
610
|
-
* via the `definition` "dice-gated-effect".
|
|
611
|
-
*/
|
|
612
|
-
export interface DiceGatedEffect {
|
|
613
|
-
type: "dice-gated";
|
|
614
|
-
/**
|
|
615
|
-
* Dice expression, e.g. 'D6', '2D6'
|
|
616
|
-
*/
|
|
617
|
-
dice: string;
|
|
618
|
-
/**
|
|
619
|
-
* Fixed threshold or model characteristic to compare against
|
|
620
|
-
*/
|
|
621
|
-
threshold: number | ("leadership" | "toughness" | "save");
|
|
622
|
-
comparison?: "gte" | "lte" | "gt" | "lt" | "eq";
|
|
623
|
-
on_success?: EffectNode | null;
|
|
624
|
-
on_fail?: EffectNode | null;
|
|
625
|
-
[k: string]: unknown;
|
|
626
|
-
}
|
|
627
|
-
/**
|
|
628
|
-
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
629
|
-
* via the `definition` "conditional-effect".
|
|
630
|
-
*/
|
|
631
|
-
export interface ConditionalEffect {
|
|
632
|
-
type: "conditional";
|
|
633
|
-
condition: AbilityCondition2;
|
|
634
|
-
effect: EffectNode;
|
|
635
|
-
[k: string]: unknown;
|
|
636
|
-
}
|
|
637
|
-
/**
|
|
638
|
-
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
639
|
-
* via the `definition` "dice-pool-allocation-effect".
|
|
640
|
-
*/
|
|
641
|
-
export interface DicePoolAllocationEffect {
|
|
642
|
-
type: "dice-pool-allocation";
|
|
643
|
-
pool: {
|
|
644
|
-
count: number;
|
|
645
|
-
die: string;
|
|
646
|
-
[k: string]: unknown;
|
|
647
|
-
};
|
|
648
|
-
max_activations: number;
|
|
649
|
-
/**
|
|
650
|
-
* @minItems 1
|
|
651
|
-
*/
|
|
652
|
-
options: [
|
|
653
|
-
{
|
|
654
|
-
name: string;
|
|
655
|
-
requirement: {
|
|
656
|
-
type: "pair" | "triple" | "single" | "run";
|
|
657
|
-
min_value: number;
|
|
658
|
-
[k: string]: unknown;
|
|
659
|
-
};
|
|
660
|
-
effect: EffectNode;
|
|
661
|
-
[k: string]: unknown;
|
|
662
|
-
},
|
|
663
|
-
...{
|
|
664
|
-
name: string;
|
|
665
|
-
requirement: {
|
|
666
|
-
type: "pair" | "triple" | "single" | "run";
|
|
667
|
-
min_value: number;
|
|
668
|
-
[k: string]: unknown;
|
|
669
|
-
};
|
|
670
|
-
effect: EffectNode;
|
|
671
|
-
[k: string]: unknown;
|
|
672
|
-
}[]
|
|
673
|
-
];
|
|
674
|
-
[k: string]: unknown;
|
|
675
|
-
}
|
|
676
607
|
/**
|
|
677
608
|
* A CP-costed ability usable during specific game phases.
|
|
678
609
|
*
|
|
@@ -930,6 +861,124 @@ export interface WargearOption {
|
|
|
930
861
|
additional_cost?: number | null;
|
|
931
862
|
game_version: GameVersionReference;
|
|
932
863
|
}
|
|
864
|
+
/**
|
|
865
|
+
* Catalog entry for a weapon keyword (Lethal Hits, Sustained Hits N, Anti-X N+, etc.). Each weapon profile references entries here via {keyword_id, parameters?} instead of carrying free-text strings. The optional `effect` describes the keyword's game mechanic in the Ability DSL; null when the behaviour is faction-specific flavour not yet modelled.
|
|
866
|
+
*
|
|
867
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
868
|
+
* via the `definition` "weapon-keyword".
|
|
869
|
+
*/
|
|
870
|
+
export interface WeaponKeyword {
|
|
871
|
+
id: EntityId;
|
|
872
|
+
name: string;
|
|
873
|
+
/**
|
|
874
|
+
* Parameter keys that must be supplied at each reference site, in the order they would appear in a printed datasheet (e.g. Anti-INFANTRY 4+ → ['target_keyword', 'threshold']).
|
|
875
|
+
*
|
|
876
|
+
* @maxItems 3
|
|
877
|
+
*/
|
|
878
|
+
required_parameters: [] | ["value" | "target_keyword" | "threshold"] | ["value" | "target_keyword" | "threshold", "value" | "target_keyword" | "threshold"] | [
|
|
879
|
+
"value" | "target_keyword" | "threshold",
|
|
880
|
+
"value" | "target_keyword" | "threshold",
|
|
881
|
+
"value" | "target_keyword" | "threshold"
|
|
882
|
+
];
|
|
883
|
+
/**
|
|
884
|
+
* Mechanical effect of this keyword. Null when the behaviour is faction-specific flavour not yet expressible in the DSL — engines treat such references as no-op buffs and may surface them as 'cannot auto-apply'.
|
|
885
|
+
*/
|
|
886
|
+
effect: AbilityEffect1 | null;
|
|
887
|
+
game_version: GameVersionReference;
|
|
888
|
+
}
|
|
889
|
+
/**
|
|
890
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
891
|
+
* via the `definition` "choice-effect".
|
|
892
|
+
*/
|
|
893
|
+
export interface ChoiceEffect {
|
|
894
|
+
type: "choice";
|
|
895
|
+
/**
|
|
896
|
+
* @minItems 2
|
|
897
|
+
*/
|
|
898
|
+
options: [EffectNode, EffectNode, ...EffectNode[]];
|
|
899
|
+
choice_label?: string;
|
|
900
|
+
[k: string]: unknown;
|
|
901
|
+
}
|
|
902
|
+
/**
|
|
903
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
904
|
+
* via the `definition` "sequence-effect".
|
|
905
|
+
*/
|
|
906
|
+
export interface SequenceEffect {
|
|
907
|
+
type: "sequence";
|
|
908
|
+
/**
|
|
909
|
+
* @minItems 1
|
|
910
|
+
*/
|
|
911
|
+
steps: [EffectNode, ...EffectNode[]];
|
|
912
|
+
[k: string]: unknown;
|
|
913
|
+
}
|
|
914
|
+
/**
|
|
915
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
916
|
+
* via the `definition` "dice-gated-effect".
|
|
917
|
+
*/
|
|
918
|
+
export interface DiceGatedEffect {
|
|
919
|
+
type: "dice-gated";
|
|
920
|
+
/**
|
|
921
|
+
* Dice expression, e.g. 'D6', '2D6'
|
|
922
|
+
*/
|
|
923
|
+
dice: string;
|
|
924
|
+
/**
|
|
925
|
+
* Fixed threshold or model characteristic to compare against
|
|
926
|
+
*/
|
|
927
|
+
threshold: number | ("leadership" | "toughness" | "save");
|
|
928
|
+
comparison?: "gte" | "lte" | "gt" | "lt" | "eq";
|
|
929
|
+
on_success?: EffectNode | null;
|
|
930
|
+
on_fail?: EffectNode | null;
|
|
931
|
+
[k: string]: unknown;
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
935
|
+
* via the `definition` "conditional-effect".
|
|
936
|
+
*/
|
|
937
|
+
export interface ConditionalEffect {
|
|
938
|
+
type: "conditional";
|
|
939
|
+
condition: AbilityCondition2;
|
|
940
|
+
effect: EffectNode;
|
|
941
|
+
[k: string]: unknown;
|
|
942
|
+
}
|
|
943
|
+
/**
|
|
944
|
+
* This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema
|
|
945
|
+
* via the `definition` "dice-pool-allocation-effect".
|
|
946
|
+
*/
|
|
947
|
+
export interface DicePoolAllocationEffect {
|
|
948
|
+
type: "dice-pool-allocation";
|
|
949
|
+
pool: {
|
|
950
|
+
count: number;
|
|
951
|
+
die: string;
|
|
952
|
+
[k: string]: unknown;
|
|
953
|
+
};
|
|
954
|
+
max_activations: number;
|
|
955
|
+
/**
|
|
956
|
+
* @minItems 1
|
|
957
|
+
*/
|
|
958
|
+
options: [
|
|
959
|
+
{
|
|
960
|
+
name: string;
|
|
961
|
+
requirement: {
|
|
962
|
+
type: "pair" | "triple" | "single" | "run";
|
|
963
|
+
min_value: number;
|
|
964
|
+
[k: string]: unknown;
|
|
965
|
+
};
|
|
966
|
+
effect: EffectNode;
|
|
967
|
+
[k: string]: unknown;
|
|
968
|
+
},
|
|
969
|
+
...{
|
|
970
|
+
name: string;
|
|
971
|
+
requirement: {
|
|
972
|
+
type: "pair" | "triple" | "single" | "run";
|
|
973
|
+
min_value: number;
|
|
974
|
+
[k: string]: unknown;
|
|
975
|
+
};
|
|
976
|
+
effect: EffectNode;
|
|
977
|
+
[k: string]: unknown;
|
|
978
|
+
}[]
|
|
979
|
+
];
|
|
980
|
+
[k: string]: unknown;
|
|
981
|
+
}
|
|
933
982
|
/**
|
|
934
983
|
* A weapon entry with one or more stat profiles (e.g., standard and overcharge modes).
|
|
935
984
|
*
|
|
@@ -956,7 +1005,20 @@ export interface Weapon {
|
|
|
956
1005
|
D: StatValue;
|
|
957
1006
|
[k: string]: unknown;
|
|
958
1007
|
};
|
|
959
|
-
|
|
1008
|
+
/**
|
|
1009
|
+
* References into the weapon-keyword catalog. Each entry names the catalog id and supplies parameter values (e.g. `Sustained Hits 1` → `{keyword_id: 'sustained-hits', parameters: {value: 1}}`).
|
|
1010
|
+
*/
|
|
1011
|
+
keywords?: {
|
|
1012
|
+
keyword_id: EntityId;
|
|
1013
|
+
/**
|
|
1014
|
+
* Reference-site parameters conforming to the catalog entry's required_parameters. Only the three documented keys are accepted; any other key is invalid.
|
|
1015
|
+
*/
|
|
1016
|
+
parameters?: {
|
|
1017
|
+
value?: StatValue;
|
|
1018
|
+
target_keyword?: string;
|
|
1019
|
+
threshold?: number;
|
|
1020
|
+
};
|
|
1021
|
+
}[];
|
|
960
1022
|
},
|
|
961
1023
|
...{
|
|
962
1024
|
name: string;
|
|
@@ -970,7 +1032,20 @@ export interface Weapon {
|
|
|
970
1032
|
D: StatValue;
|
|
971
1033
|
[k: string]: unknown;
|
|
972
1034
|
};
|
|
973
|
-
|
|
1035
|
+
/**
|
|
1036
|
+
* References into the weapon-keyword catalog. Each entry names the catalog id and supplies parameter values (e.g. `Sustained Hits 1` → `{keyword_id: 'sustained-hits', parameters: {value: 1}}`).
|
|
1037
|
+
*/
|
|
1038
|
+
keywords?: {
|
|
1039
|
+
keyword_id: EntityId;
|
|
1040
|
+
/**
|
|
1041
|
+
* Reference-site parameters conforming to the catalog entry's required_parameters. Only the three documented keys are accepted; any other key is invalid.
|
|
1042
|
+
*/
|
|
1043
|
+
parameters?: {
|
|
1044
|
+
value?: StatValue;
|
|
1045
|
+
target_keyword?: string;
|
|
1046
|
+
threshold?: number;
|
|
1047
|
+
};
|
|
1048
|
+
}[];
|
|
974
1049
|
}[]
|
|
975
1050
|
];
|
|
976
1051
|
game_version: GameVersionReference;
|
|
@@ -1082,3 +1157,4 @@ export interface TimingFlag {
|
|
|
1082
1157
|
authored_by?: ContributorRef;
|
|
1083
1158
|
[k: string]: unknown;
|
|
1084
1159
|
}
|
|
1160
|
+
//# sourceMappingURL=generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../src/generated.ts"],"names":[],"mappings":"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"}
|
package/dist/generated.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../src/generated.ts"],"names":[],"mappings":"AAAA,gHAAgH","sourcesContent":["/* Generated from crates/wh40kdc/schemas/bundled.schema.json by 'npm run codegen:types'. DO NOT EDIT BY HAND. */\n\n/**\n * Kebab-case identifier\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"entity-id\".\n */\nexport type EntityId = string;\n/**\n * Game edition, e.g. '10th' or '11'\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"edition\".\n */\nexport type Edition = string;\n/**\n * Dataslate version: a quarterly tag (e.g. '2025-q3') or a named kebab-case slug for non-quarterly slates (e.g. 'pre-launch-provisional')\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"dataslate-version\".\n */\nexport type DataslateVersion = string;\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"keyword\".\n */\nexport type Keyword = string;\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"keyword-list\".\n */\nexport type KeywordList = Keyword[];\n/**\n * A stat that can be a fixed number or a dice expression\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"stat-value\".\n */\nexport type StatValue = number | string;\n/**\n * GitHub handle or '40kdc-community'\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"contributor-ref\".\n */\nexport type ContributorRef = string;\n/**\n * The five official game phases. Unchanged between 10th and 11th edition — 11e reorders Pile In timing within the Fight phase but adds no top-level phase.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"phase\".\n */\nexport type Phase = \"command\" | \"movement\" | \"shooting\" | \"charge\" | \"fight\";\n/**\n * @minItems 1\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"phase-list\".\n */\nexport type PhaseList = [Phase, ...Phase[]];\n/**\n * Type of game element that is the source of an enrichment entry\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"source-type\".\n */\nexport type SourceType = \"ability\" | \"stratagem\" | \"enhancement\" | \"detachment-rule\" | \"faction-rule\";\n/**\n * Which player's turn this applies during\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"player-turn\".\n */\nexport type PlayerTurn = \"your-turn\" | \"opponent-turn\" | \"either\";\n/**\n * 11e battle size, which sets the army's points limit and detachment-point budget: 'incursion' = 1000 pts / 2 detachment points; 'strike-force' = 2000 pts / 3 detachment points.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"battle-size\".\n */\nexport type BattleSize = \"incursion\" | \"strike-force\";\n/**\n * One of the five confirmed 11e launch Force Dispositions. Shared by force-disposition entities and the mission-matchup matrix.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"force-disposition-id\".\n */\nexport type ForceDispositionId =\n | \"take-and-hold\"\n | \"disruption\"\n | \"purge-the-foe\"\n | \"priority-assets\"\n | \"reconnaissance\";\n/**\n * A zone footprint, expressed as an axis-aligned rectangle or an explicit polygon. Vertices/extent are relative to the owning element's position.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"zone-shape\".\n */\nexport type ZoneShape =\n | {\n type: \"rectangle\";\n width: number;\n height: number;\n }\n | {\n type: \"polygon\";\n /**\n * @minItems 3\n */\n points: [Vec2, Vec2, Vec2, ...Vec2[]];\n };\n/**\n * Which player a zone or territory belongs to.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"side\".\n */\nexport type Side = \"attacker\" | \"defender\";\n/**\n * Eligibility predicate for which units may perform the action.\n */\nexport type AbilityCondition = SimpleCondition | CompoundCondition;\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"condition-node\".\n */\nexport type ConditionNode = SimpleCondition | CompoundCondition;\n/**\n * Predicate for when the action is considered complete.\n */\nexport type AbilityCondition1 = SimpleCondition | CompoundCondition;\n/**\n * A terrain piece's 2D footprint, relative to the piece's `position`. Axis-aligned rectangle, right triangle (right angle at the local origin, legs along +x/+y), or an explicit polygon. GW's standard templates (e.g. 7\"×11.5\" rectangles, 8\"×11.5\" right triangles, 6\"×4\" rectangles, 10\"×2.5\" and 6\"×2\" lines) are all expressible here; lines are thin rectangles.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"footprint\".\n */\nexport type Footprint =\n | {\n type: \"rectangle\";\n width: number;\n height: number;\n }\n | {\n type: \"right-triangle\";\n width: number;\n height: number;\n }\n | {\n type: \"polygon\";\n /**\n * @minItems 3\n */\n points: [Vec2, Vec2, Vec2, ...Vec2[]];\n };\n/**\n * An 11e terrain-area keyword. Confirmed launch set; extend as further keywords publish on dataslate.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"terrain-area-keyword\".\n */\nexport type TerrainAreaKeyword = \"obscuring\" | \"hidden\" | \"plunging-fire\";\nexport type AbilityEffect1 =\n | SingleEffect\n | ChoiceEffect\n | SequenceEffect\n | DiceGatedEffect\n | ConditionalEffect\n | DicePoolAllocationEffect;\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"single-effect\".\n */\nexport type SingleEffect = unknown & {\n type:\n | \"stat-modifier\"\n | \"roll-modifier\"\n | \"re-roll\"\n | \"mortal-wounds\"\n | \"feel-no-pain\"\n | \"invulnerable-save\"\n | \"ward\"\n | \"keyword-grant\"\n | \"movement-modifier\"\n | \"deep-strike\"\n | \"fallback-and-act\"\n | \"fight-first\"\n | \"fight-last\"\n | \"shoot-on-death\"\n | \"fight-on-death\"\n | \"objective-control-modifier\"\n | \"leadership-modifier\"\n | \"damage-reduction\"\n | \"attack-restriction\"\n | \"ability-grant\"\n | \"cp-gain\"\n | \"cp-refund\"\n | \"model-destruction\"\n | \"resurrection\"\n | \"resource-gain\"\n | \"resource-spend\"\n | \"charge-roll-modifier\"\n | \"terrain-area-tag\"\n | \"bs-modifier\"\n | \"engagement-passthrough\";\n target:\n | \"self\"\n | \"bearer\"\n | \"unit\"\n | \"attached-unit\"\n | \"attacker\"\n | \"defender\"\n | \"friendly-within-aura\"\n | \"enemy-within-aura\"\n | \"all-friendly\"\n | \"all-enemy\";\n modifier?: {\n [k: string]: unknown;\n };\n [k: string]: unknown;\n} & {\n type:\n | \"stat-modifier\"\n | \"roll-modifier\"\n | \"re-roll\"\n | \"mortal-wounds\"\n | \"feel-no-pain\"\n | \"invulnerable-save\"\n | \"ward\"\n | \"keyword-grant\"\n | \"movement-modifier\"\n | \"deep-strike\"\n | \"fallback-and-act\"\n | \"fight-first\"\n | \"fight-last\"\n | \"shoot-on-death\"\n | \"fight-on-death\"\n | \"objective-control-modifier\"\n | \"leadership-modifier\"\n | \"damage-reduction\"\n | \"attack-restriction\"\n | \"ability-grant\"\n | \"cp-gain\"\n | \"cp-refund\"\n | \"model-destruction\"\n | \"resurrection\"\n | \"resource-gain\"\n | \"resource-spend\"\n | \"charge-roll-modifier\"\n | \"terrain-area-tag\"\n | \"bs-modifier\"\n | \"engagement-passthrough\";\n target:\n | \"self\"\n | \"bearer\"\n | \"unit\"\n | \"attached-unit\"\n | \"attacker\"\n | \"defender\"\n | \"friendly-within-aura\"\n | \"enemy-within-aura\"\n | \"all-friendly\"\n | \"all-enemy\";\n modifier?: {\n [k: string]: unknown;\n };\n [k: string]: unknown;\n} & {\n type:\n | \"stat-modifier\"\n | \"roll-modifier\"\n | \"re-roll\"\n | \"mortal-wounds\"\n | \"feel-no-pain\"\n | \"invulnerable-save\"\n | \"ward\"\n | \"keyword-grant\"\n | \"movement-modifier\"\n | \"deep-strike\"\n | \"fallback-and-act\"\n | \"fight-first\"\n | \"fight-last\"\n | \"shoot-on-death\"\n | \"fight-on-death\"\n | \"objective-control-modifier\"\n | \"leadership-modifier\"\n | \"damage-reduction\"\n | \"attack-restriction\"\n | \"ability-grant\"\n | \"cp-gain\"\n | \"cp-refund\"\n | \"model-destruction\"\n | \"resurrection\"\n | \"resource-gain\"\n | \"resource-spend\"\n | \"charge-roll-modifier\"\n | \"terrain-area-tag\"\n | \"bs-modifier\"\n | \"engagement-passthrough\";\n target:\n | \"self\"\n | \"bearer\"\n | \"unit\"\n | \"attached-unit\"\n | \"attacker\"\n | \"defender\"\n | \"friendly-within-aura\"\n | \"enemy-within-aura\"\n | \"all-friendly\"\n | \"all-enemy\";\n modifier?: {\n [k: string]: unknown;\n };\n [k: string]: unknown;\n} & {\n type:\n | \"stat-modifier\"\n | \"roll-modifier\"\n | \"re-roll\"\n | \"mortal-wounds\"\n | \"feel-no-pain\"\n | \"invulnerable-save\"\n | \"ward\"\n | \"keyword-grant\"\n | \"movement-modifier\"\n | \"deep-strike\"\n | \"fallback-and-act\"\n | \"fight-first\"\n | \"fight-last\"\n | \"shoot-on-death\"\n | \"fight-on-death\"\n | \"objective-control-modifier\"\n | \"leadership-modifier\"\n | \"damage-reduction\"\n | \"attack-restriction\"\n | \"ability-grant\"\n | \"cp-gain\"\n | \"cp-refund\"\n | \"model-destruction\"\n | \"resurrection\"\n | \"resource-gain\"\n | \"resource-spend\"\n | \"charge-roll-modifier\"\n | \"terrain-area-tag\"\n | \"bs-modifier\"\n | \"engagement-passthrough\";\n target:\n | \"self\"\n | \"bearer\"\n | \"unit\"\n | \"attached-unit\"\n | \"attacker\"\n | \"defender\"\n | \"friendly-within-aura\"\n | \"enemy-within-aura\"\n | \"all-friendly\"\n | \"all-enemy\";\n modifier?: {\n [k: string]: unknown;\n };\n [k: string]: unknown;\n} & {\n type:\n | \"stat-modifier\"\n | \"roll-modifier\"\n | \"re-roll\"\n | \"mortal-wounds\"\n | \"feel-no-pain\"\n | \"invulnerable-save\"\n | \"ward\"\n | \"keyword-grant\"\n | \"movement-modifier\"\n | \"deep-strike\"\n | \"fallback-and-act\"\n | \"fight-first\"\n | \"fight-last\"\n | \"shoot-on-death\"\n | \"fight-on-death\"\n | \"objective-control-modifier\"\n | \"leadership-modifier\"\n | \"damage-reduction\"\n | \"attack-restriction\"\n | \"ability-grant\"\n | \"cp-gain\"\n | \"cp-refund\"\n | \"model-destruction\"\n | \"resurrection\"\n | \"resource-gain\"\n | \"resource-spend\"\n | \"charge-roll-modifier\"\n | \"terrain-area-tag\"\n | \"bs-modifier\"\n | \"engagement-passthrough\";\n target:\n | \"self\"\n | \"bearer\"\n | \"unit\"\n | \"attached-unit\"\n | \"attacker\"\n | \"defender\"\n | \"friendly-within-aura\"\n | \"enemy-within-aura\"\n | \"all-friendly\"\n | \"all-enemy\";\n modifier?: {\n [k: string]: unknown;\n };\n [k: string]: unknown;\n};\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"effect-node\".\n */\nexport type EffectNode =\n | SingleEffect\n | ChoiceEffect\n | SequenceEffect\n | DiceGatedEffect\n | ConditionalEffect\n | DicePoolAllocationEffect;\nexport type AbilityCondition2 = SimpleCondition | CompoundCondition;\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"condition\".\n */\nexport type AbilityCondition3 = SimpleCondition | CompoundCondition;\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"effect\".\n */\nexport type AbilityEffect2 =\n | SingleEffect\n | ChoiceEffect\n | SequenceEffect\n | DiceGatedEffect\n | ConditionalEffect\n | DicePoolAllocationEffect;\n\n/**\n * Auto-generated by tools/src/bundle-schemas.ts. Single self-contained schema for Rust codegen — do not edit by hand.\n */\nexport interface KdcBundledSchemas {\n [k: string]: unknown;\n}\n/**\n * A 2D point in board inches. Origin at a board corner; JSON uses y-down (downstream renderers may flip to y-up).\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"vec2\".\n */\nexport interface Vec2 {\n x: number;\n y: number;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"game-version-ref\".\n */\nexport interface GameVersionReference {\n edition: Edition;\n dataslate: DataslateVersion;\n [k: string]: unknown;\n}\n/**\n * A deployment map: per-side deployment zones, objective positions, and (11e) per-side territory polygons. Pattern geometry carries forward unchanged from 10th edition; downstream tooling (e.g. bevy-deploy-helper) consumes this as the canonical encoding.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"deployment-pattern\".\n */\nexport interface DeploymentPattern {\n id: EntityId;\n name: string;\n /**\n * Mission pack or source the pattern originates from (e.g. 'leviathan').\n */\n source?: string;\n description?: string;\n /**\n * Per-side deployment zones.\n *\n * @minItems 1\n */\n zones: [\n {\n player: Side;\n name?: string;\n shape: ZoneShape;\n position: Vec2;\n /**\n * Hex render color for the zone overlay.\n */\n color?: string;\n },\n ...{\n player: Side;\n name?: string;\n shape: ZoneShape;\n position: Vec2;\n /**\n * Hex render color for the zone overlay.\n */\n color?: string;\n }[]\n ];\n /**\n * 11e per-side territory polygons, mirroring the deployment-zone shape (e.g. the band between a deployment zone and the midline). Empty until authored.\n */\n territories?: {\n player: Side;\n shape: ZoneShape;\n position: Vec2;\n }[];\n /**\n * Objective-marker positions on the board.\n */\n objectives?: Vec2[];\n /**\n * Ids of recommended terrain-layout entities (resolved once terrain-layout data is authored).\n */\n recommended_terrain_layout_ids?: EntityId[];\n game_version: GameVersionReference;\n}\n/**\n * A detachment option within a faction, providing a detachment rule, enhancements, and stratagems.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"detachment\".\n */\nexport interface Detachment {\n id: EntityId;\n name: string;\n faction_id: EntityId;\n detachment_rule_id?: EntityId | null;\n /**\n * 11e: the detachment-point cost (1–3) charged against the army's detachment-point budget. null when not yet assigned.\n */\n detachment_points?: number | null;\n /**\n * 11e: ids of the Force Disposition entities this detachment grants. Empty until assigned.\n */\n force_dispositions?: EntityId[];\n enhancement_ids?: EntityId[];\n stratagem_ids?: EntityId[];\n restrictions?: {\n required_keywords?: KeywordList;\n excluded_keywords?: KeywordList;\n notes?: string;\n } | null;\n game_version: GameVersionReference;\n}\n/**\n * A purchasable upgrade for a character unit, provided by a detachment.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"enhancement\".\n */\nexport interface Enhancement {\n id: EntityId;\n name: string;\n detachment_id: EntityId;\n cost: number;\n /**\n * True when the cost is carried over provisionally (e.g. seeded from a prior edition during migration) and not yet confirmed against the current dataslate.\n */\n points_provisional?: boolean;\n /**\n * 11e: when true, this enhancement applies to up to `max_targets` non-character units while counting as a single Enhancement choice.\n */\n upgrade_tag?: boolean;\n /**\n * Number of units this enhancement may be applied to. Only meaningful when `upgrade_tag` is true; defaults to 1.\n */\n max_targets?: number;\n keyword_restrictions?: KeywordList;\n exclusion_keywords?: KeywordList | null;\n ability_id?: EntityId | null;\n is_unique?: boolean;\n game_version: GameVersionReference;\n}\n/**\n * A playable faction or sub-faction.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"faction\".\n */\nexport interface Faction {\n id: EntityId;\n name: string;\n parent_faction_id?: EntityId | null;\n game_version: GameVersionReference;\n keywords?: KeywordList;\n aliases?: string[];\n /**\n * Reference to the faction-wide ability (e.g., Oath of Moment)\n */\n faction_rule_id?: EntityId | null;\n}\n/**\n * A 11e strategic-intent tag granted by detachments. Players compare dispositions at game start to determine the shared mission; asymmetric primary objectives result.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"force-disposition\".\n */\nexport interface ForceDisposition {\n /**\n * One of the five confirmed launch Force Dispositions.\n */\n id: \"take-and-hold\" | \"disruption\" | \"purge-the-foe\" | \"priority-assets\" | \"reconnaissance\";\n name: string;\n /**\n * Community-authored description of the disposition's effect (original prose only — no reproduced rules text).\n */\n text?: string;\n game_version: GameVersionReference;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"game-version\".\n */\nexport interface GameVersion {\n edition: Edition;\n dataslate: DataslateVersion;\n effective_date: string;\n label?: string;\n supersedes?: DataslateVersion | null;\n}\n/**\n * Defines which character units can attach to which bodyguard units.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"leader-attachment\".\n */\nexport interface LeaderAttachment {\n leader_id: EntityId;\n /**\n * @minItems 1\n */\n eligible_bodyguard_ids: [EntityId, ...EntityId[]];\n game_version: GameVersionReference;\n}\n/**\n * One cell of the 11e Force Disposition matrix: given the player's own Force Disposition and their opponent's, the mission that player plays. Mirrors a single row on a physical Force Disposition card. The (disposition, opponent_disposition) pair is the conceptual key; compound uniqueness across entries is a data convention, not enforced by this schema.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"mission-matchup\".\n */\nexport interface MissionMatchup {\n id: EntityId;\n /**\n * The player's own Force Disposition.\n */\n disposition: \"take-and-hold\" | \"disruption\" | \"purge-the-foe\" | \"priority-assets\" | \"reconnaissance\";\n /**\n * The opponent's Force Disposition.\n */\n opponent_disposition: \"take-and-hold\" | \"disruption\" | \"purge-the-foe\" | \"priority-assets\" | \"reconnaissance\";\n /**\n * Kebab-case identifier\n */\n mission_id: string;\n game_version: GameVersionReference;\n}\n/**\n * An 11e primary mission (the objective a player scores). Which mission a player plays is selected by the Force Disposition matchup matrix (see mission-matchup), keyed on the player's own disposition and their opponent's. Victory points are capped per game and per battle round.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"mission\".\n */\nexport interface Mission {\n id: EntityId;\n name: string;\n /**\n * Mission pack or source the mission originates from.\n */\n source?: string;\n /**\n * Community-authored mission/objective summary (original prose only — no reproduced rules text).\n */\n description?: string;\n /**\n * Maximum primary VP scorable across the whole game. 11e default is 45.\n */\n vp_per_game_cap?: number;\n /**\n * Maximum primary VP scorable in a single battle round. 11e default is 15.\n */\n vp_per_round_cap?: number;\n /**\n * Ids of the deployment-pattern entities (maps) this mission can be played on. Empty until the per-mission maps are confirmed.\n */\n deployment_pattern_ids?: EntityId[];\n game_version: GameVersionReference;\n}\n/**\n * A draw-time predicate over an army list (not runtime board state, so deliberately NOT the Ability DSL condition). Used to gate when_drawn operations such as redraws. Example: a card that is void unless the opponent fields a large unit (10e 'Cull the Horde' redrew when the opponent had no unit of 14+ models) is { subject: 'opponent', quantifier: 'none', unit_filter: { model_count_min: 14 } } with operation 'redraw'.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"army-composition-predicate\".\n */\nexport interface ArmyCompositionPredicate {\n /**\n * Whose army list the predicate inspects.\n */\n subject: \"self\" | \"opponent\";\n /**\n * Whether the army must contain ('any') or lack ('none') a unit matching unit_filter for the predicate to hold.\n */\n quantifier: \"any\" | \"none\";\n /**\n * Criteria a unit in the army must satisfy to match. All present criteria must hold (logical AND).\n */\n unit_filter: {\n model_count_min?: number;\n model_count_max?: number;\n wounds_min?: number;\n keywords?: KeywordList;\n };\n}\n/**\n * An 11e mission card. The deck-level rule (draw 2 per turn, keep unscored cards) is separate and not modelled here. This is the per-card shape: an optional on-draw deck operation, an optional player action, and zero or more VP-award blocks. Primary mission cards reuse this shape via card_type. Mechanic blocks reference the Ability DSL; prose is community-authored (no reproduced rules text).\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"secondary-card\".\n */\nexport interface SecondaryCard {\n id: EntityId;\n name: string;\n /**\n * Whether this is a secondary card or a primary mission card (which reuses this shape).\n */\n card_type?: \"secondary\" | \"primary\";\n /**\n * Finer classification within the deck (e.g. a category or tactical/fixed split). Free-form — not enum-locked until 11e categories are confirmed.\n */\n subtype?: string;\n /**\n * Optional deck operation performed when this card is drawn (e.g. redraw, swap). Distinct from combat effects — deck operations have no combat target, so they are not modelled via the Ability DSL effect language. If `condition` is present, the operation fires only when the predicate holds.\n */\n when_drawn?: {\n /**\n * The deck manipulation this card triggers on draw.\n */\n operation: \"reshuffle\" | \"replace\" | \"redraw\" | \"draw-extra\" | \"swap\";\n /**\n * Other cards this operation references, by id.\n */\n card_ids?: EntityId[];\n condition?: ArmyCompositionPredicate1;\n };\n /**\n * Optional player action the card enables.\n */\n action?: {\n /**\n * The five official game phases. Unchanged between 10th and 11th edition — 11e reorders Pile In timing within the Fight phase but adds no top-level phase.\n */\n starts?: \"command\" | \"movement\" | \"shooting\" | \"charge\" | \"fight\";\n player_turn?: PlayerTurn;\n units?: AbilityCondition;\n /**\n * Maximum number of times the action may be performed.\n */\n use_limit?: number;\n completes?: AbilityCondition1;\n effect?: unknown;\n };\n /**\n * VP-award blocks: each scores when `trigger` fires and the optional `when` condition holds. An award scores either a flat `vp` or a count-scaled `vp_per` (VP per instance of the thing named by `per`). Awards accrue independently and sum; a card's '+ ... CUMULATIVE' rows are modelled as separate awards flagged `cumulative` for faithful round-trip.\n *\n * @minItems 1\n */\n awards?: [\n (\n | {\n [k: string]: unknown;\n }\n | {\n [k: string]: unknown;\n }\n ),\n ...(\n | {\n [k: string]: unknown;\n }\n | {\n [k: string]: unknown;\n }\n )[]\n ];\n /**\n * Community-authored card description (original prose only — no reproduced rules text).\n */\n text?: string;\n game_version: GameVersionReference;\n}\n/**\n * Draw-time army-composition predicate gating the operation (e.g. redraw when the opponent lacks a qualifying unit).\n */\nexport interface ArmyCompositionPredicate1 {\n /**\n * Whose army list the predicate inspects.\n */\n subject: \"self\" | \"opponent\";\n /**\n * Whether the army must contain ('any') or lack ('none') a unit matching unit_filter for the predicate to hold.\n */\n quantifier: \"any\" | \"none\";\n /**\n * Criteria a unit in the army must satisfy to match. All present criteria must hold (logical AND).\n */\n unit_filter: {\n model_count_min?: number;\n model_count_max?: number;\n wounds_min?: number;\n keywords?: KeywordList;\n };\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"simple-condition\".\n */\nexport interface SimpleCondition {\n type:\n | \"phase-is\"\n | \"timing-is\"\n | \"player-turn-is\"\n | \"unit-below-starting-strength\"\n | \"unit-below-half-strength\"\n | \"unit-has-keyword\"\n | \"unit-within-range-of\"\n | \"model-is-leader\"\n | \"target-has-keyword\"\n | \"charged-this-turn\"\n | \"advanced-this-turn\"\n | \"remained-stationary\"\n | \"is-battle-shocked\"\n | \"has-lost-wounds\"\n | \"opponent-unit-within-range\"\n | \"within-range-of-objective\"\n | \"attack-is-type\"\n | \"has-fought-this-phase\"\n | \"destroyed-by-attack-type\"\n | \"controls-objective\"\n | \"is-attached\"\n | \"terrain-area-control\"\n | \"engagement-state\"\n | \"territory-control\"\n | \"fights-first\"\n | \"disposition-matches\"\n | \"units-destroyed\"\n | \"units-destroyed-comparison\"\n | \"objective-majority\";\n parameters?: {\n [k: string]: unknown;\n };\n negated?: boolean;\n [k: string]: unknown;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"compound-condition\".\n */\nexport interface CompoundCondition {\n operator: \"and\" | \"or\" | \"not\";\n /**\n * @minItems 1\n */\n operands: [ConditionNode, ...ConditionNode[]];\n [k: string]: unknown;\n}\n/**\n * A CP-costed ability usable during specific game phases.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"stratagem\".\n */\nexport interface Stratagem {\n id: EntityId;\n name: string;\n /**\n * Whether this is a universal core stratagem or tied to a specific detachment\n */\n category: \"core\" | \"detachment\";\n /**\n * GW-printed stratagem category from the card\n */\n type: \"battle-tactic\" | \"strategic-ploy\" | \"epic-deed\" | \"wargear\";\n /**\n * Null for core stratagems\n */\n detachment_id?: EntityId | null;\n cp_cost: number;\n phases: PhaseList;\n player_turn: PlayerTurn;\n timing: \"once-per-phase\" | \"once-per-turn\" | \"once-per-battle\" | \"unlimited\";\n target_restrictions?: {\n required_keywords?: KeywordList;\n excluded_keywords?: KeywordList;\n notes?: string;\n } | null;\n ability_id?: EntityId | null;\n game_version: GameVersionReference;\n}\n/**\n * One terrain feature placed on the board.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"piece\".\n */\nexport interface Piece {\n name?: string;\n footprint: Footprint;\n position: Vec21;\n /**\n * Clockwise rotation of the footprint about `position`. Absent or 0 means axis-aligned.\n */\n rotation_degrees?: number;\n /**\n * Optional descriptive label for the GW standard template this piece uses (e.g. 'large-ruin', 'long-wall'). Free-form, not enum-locked — the geometry in `footprint` is authoritative.\n */\n template?: string;\n /**\n * Height of the piece in inches. Gates Plunging Fire (a piece 3\" or taller confers +1 BS on ground-level targets).\n */\n height_inches?: number;\n /**\n * Terrain-area keywords this piece's area carries.\n */\n terrain_area_keywords?: TerrainAreaKeyword[];\n /**\n * Pieces sharing a `link_group` value are linked terrain — treated as a single terrain feature (and, where an objective sits among them, a single objective).\n */\n link_group?: string;\n /**\n * Whether this piece carries an objective marker.\n */\n is_objective?: boolean;\n /**\n * Objective-marker metadata. Only meaningful when `is_objective` is true.\n */\n objective?: {\n position?: Vec22;\n /**\n * Range from the marker within which models contribute to control.\n */\n control_range_inches?: number;\n };\n}\n/**\n * A 2D point in board inches. Origin at a board corner; JSON uses y-down (downstream renderers may flip to y-up).\n */\nexport interface Vec21 {\n x: number;\n y: number;\n}\n/**\n * A 2D point in board inches. Origin at a board corner; JSON uses y-down (downstream renderers may flip to y-up).\n */\nexport interface Vec22 {\n x: number;\n y: number;\n}\n/**\n * A recommended arrangement of terrain pieces on the board, independent of the deployment map (a deployment-pattern references the layouts it recommends via recommended_terrain_layout_ids). Geometry is the source of truth; the GW standard piece templates are expressed as explicit footprints, with an optional descriptive `template` label. Footprints are deliberately open (not enum-locked) — the launch catalog and its size are unconfirmed, so this models any shape rather than a fixed set. No layout data is authored yet.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"terrain-layout\".\n */\nexport interface TerrainLayout {\n id: EntityId;\n name: string;\n /**\n * Mission pack or source the layout originates from.\n */\n source?: string;\n description?: string;\n /**\n * Terrain pieces composing the layout. May be empty while a layout is registered by name ahead of its confirmed geometry.\n */\n pieces?: Piece[];\n game_version: GameVersionReference;\n}\n/**\n * Describes the internal model-type breakdown of a unit.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"unit-composition\".\n */\nexport interface UnitComposition {\n unit_id: EntityId;\n /**\n * @minItems 1\n */\n models: [\n {\n name: string;\n profile_name?: string | null;\n min: number;\n max: number;\n default_weapon_ids?: EntityId[];\n is_leader_model?: boolean;\n },\n ...{\n name: string;\n profile_name?: string | null;\n min: number;\n max: number;\n default_weapon_ids?: EntityId[];\n is_leader_model?: boolean;\n }[]\n ];\n game_version: GameVersionReference;\n}\n/**\n * A unit datasheet entry with stat profiles and point costs.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"unit\".\n */\nexport interface Unit {\n id: EntityId;\n name: string;\n faction_id: EntityId;\n /**\n * Battlefield role from the datasheet header. Unit types (Infantry, Vehicle, etc.) belong in keywords.\n */\n role?: \"character\" | \"battleline\" | \"dedicated-transport\" | \"fortification\" | \"allied\" | \"epic-hero\";\n /**\n * Character attachment role (11e). 'support' implies the unit is only legal when attached to a host unit (cannot be taken solo); 'leader' is valid as a standalone list entry. null/absent for non-attaching units.\n */\n attachment_role?: (\"leader\" | \"support\") | null;\n /**\n * @minItems 1\n */\n profiles: [\n {\n /**\n * Profile name (e.g., 'Wounded' for degrading)\n */\n name?: string;\n M: StatValue;\n T: number;\n W: number;\n Sv: number;\n invuln_sv?: number | null;\n Ld: number;\n OC: number;\n [k: string]: unknown;\n },\n ...{\n /**\n * Profile name (e.g., 'Wounded' for degrading)\n */\n name?: string;\n M: StatValue;\n T: number;\n W: number;\n Sv: number;\n invuln_sv?: number | null;\n Ld: number;\n OC: number;\n [k: string]: unknown;\n }[]\n ];\n points?: {\n models: number;\n cost: number;\n [k: string]: unknown;\n }[];\n /**\n * True when point costs are carried over provisionally (e.g. seeded from a prior edition during migration) and not yet confirmed against the current dataslate.\n */\n points_provisional?: boolean;\n keywords?: KeywordList;\n faction_keywords?: KeywordList;\n base_size_mm?: {\n shape: \"round\" | \"oval\";\n diameter?: number;\n width?: number;\n length?: number;\n [k: string]: unknown;\n } | null;\n model_count?: {\n min: number;\n max: number;\n [k: string]: unknown;\n };\n weapon_ids?: EntityId[];\n ability_ids?: EntityId[];\n transport_capacity?: {\n capacity: number;\n keyword_restrictions?: KeywordList | null;\n exclusion_keywords?: KeywordList | null;\n } | null;\n game_version: GameVersionReference;\n is_legend?: boolean;\n}\n/**\n * A weapon substitution option available to models within a unit.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"wargear-option\".\n */\nexport interface WargearOption {\n id: EntityId;\n unit_id: EntityId;\n model_constraint?: {\n model_name?: string;\n per_n_models?: number;\n max_count?: number;\n } | null;\n /**\n * Weapon IDs being removed\n *\n * @minItems 1\n */\n replaces: [EntityId, ...EntityId[]];\n /**\n * Weapon IDs being added\n *\n * @minItems 1\n */\n replacement: [EntityId, ...EntityId[]];\n is_free?: boolean;\n additional_cost?: number | null;\n game_version: GameVersionReference;\n}\n/**\n * Catalog entry for a weapon keyword (Lethal Hits, Sustained Hits N, Anti-X N+, etc.). Each weapon profile references entries here via {keyword_id, parameters?} instead of carrying free-text strings. The optional `effect` describes the keyword's game mechanic in the Ability DSL; null when the behaviour is faction-specific flavour not yet modelled.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"weapon-keyword\".\n */\nexport interface WeaponKeyword {\n id: EntityId;\n name: string;\n /**\n * Parameter keys that must be supplied at each reference site, in the order they would appear in a printed datasheet (e.g. Anti-INFANTRY 4+ → ['target_keyword', 'threshold']).\n *\n * @maxItems 3\n */\n required_parameters:\n | []\n | [\"value\" | \"target_keyword\" | \"threshold\"]\n | [\"value\" | \"target_keyword\" | \"threshold\", \"value\" | \"target_keyword\" | \"threshold\"]\n | [\n \"value\" | \"target_keyword\" | \"threshold\",\n \"value\" | \"target_keyword\" | \"threshold\",\n \"value\" | \"target_keyword\" | \"threshold\"\n ];\n /**\n * Mechanical effect of this keyword. Null when the behaviour is faction-specific flavour not yet expressible in the DSL — engines treat such references as no-op buffs and may surface them as 'cannot auto-apply'.\n */\n effect: AbilityEffect1 | null;\n game_version: GameVersionReference;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"choice-effect\".\n */\nexport interface ChoiceEffect {\n type: \"choice\";\n /**\n * @minItems 2\n */\n options: [EffectNode, EffectNode, ...EffectNode[]];\n choice_label?: string;\n [k: string]: unknown;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"sequence-effect\".\n */\nexport interface SequenceEffect {\n type: \"sequence\";\n /**\n * @minItems 1\n */\n steps: [EffectNode, ...EffectNode[]];\n [k: string]: unknown;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"dice-gated-effect\".\n */\nexport interface DiceGatedEffect {\n type: \"dice-gated\";\n /**\n * Dice expression, e.g. 'D6', '2D6'\n */\n dice: string;\n /**\n * Fixed threshold or model characteristic to compare against\n */\n threshold: number | (\"leadership\" | \"toughness\" | \"save\");\n comparison?: \"gte\" | \"lte\" | \"gt\" | \"lt\" | \"eq\";\n on_success?: EffectNode | null;\n on_fail?: EffectNode | null;\n [k: string]: unknown;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"conditional-effect\".\n */\nexport interface ConditionalEffect {\n type: \"conditional\";\n condition: AbilityCondition2;\n effect: EffectNode;\n [k: string]: unknown;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"dice-pool-allocation-effect\".\n */\nexport interface DicePoolAllocationEffect {\n type: \"dice-pool-allocation\";\n pool: {\n count: number;\n die: string;\n [k: string]: unknown;\n };\n max_activations: number;\n /**\n * @minItems 1\n */\n options: [\n {\n name: string;\n requirement: {\n type: \"pair\" | \"triple\" | \"single\" | \"run\";\n min_value: number;\n [k: string]: unknown;\n };\n effect: EffectNode;\n [k: string]: unknown;\n },\n ...{\n name: string;\n requirement: {\n type: \"pair\" | \"triple\" | \"single\" | \"run\";\n min_value: number;\n [k: string]: unknown;\n };\n effect: EffectNode;\n [k: string]: unknown;\n }[]\n ];\n [k: string]: unknown;\n}\n/**\n * A weapon entry with one or more stat profiles (e.g., standard and overcharge modes).\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"weapon\".\n */\nexport interface Weapon {\n id: EntityId;\n name: string;\n type: \"ranged\" | \"melee\";\n /**\n * @minItems 1\n */\n profiles: [\n {\n name: string;\n range?: number | \"Melee\";\n stats: {\n A: StatValue;\n BS?: number | null;\n WS?: number | null;\n S: StatValue;\n AP: number;\n D: StatValue;\n [k: string]: unknown;\n };\n /**\n * References into the weapon-keyword catalog. Each entry names the catalog id and supplies parameter values (e.g. `Sustained Hits 1` → `{keyword_id: 'sustained-hits', parameters: {value: 1}}`).\n */\n keywords?: {\n keyword_id: EntityId;\n /**\n * Reference-site parameters conforming to the catalog entry's required_parameters. Only the three documented keys are accepted; any other key is invalid.\n */\n parameters?: {\n value?: StatValue;\n target_keyword?: string;\n threshold?: number;\n };\n }[];\n },\n ...{\n name: string;\n range?: number | \"Melee\";\n stats: {\n A: StatValue;\n BS?: number | null;\n WS?: number | null;\n S: StatValue;\n AP: number;\n D: StatValue;\n [k: string]: unknown;\n };\n /**\n * References into the weapon-keyword catalog. Each entry names the catalog id and supplies parameter values (e.g. `Sustained Hits 1` → `{keyword_id: 'sustained-hits', parameters: {value: 1}}`).\n */\n keywords?: {\n keyword_id: EntityId;\n /**\n * Reference-site parameters conforming to the catalog entry's required_parameters. Only the three documented keys are accepted; any other key is invalid.\n */\n parameters?: {\n value?: StatValue;\n target_keyword?: string;\n threshold?: number;\n };\n }[];\n }[]\n ];\n game_version: GameVersionReference;\n}\n/**\n * Community-authored structured representation of what a game ability does. NOT GW text.\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"ability\".\n */\nexport interface AbilityDSLEntry {\n ability_id: EntityId;\n name: string;\n authored_by: ContributorRef;\n game_version: GameVersionReference;\n version?: DataslateVersion;\n supersedes?: DataslateVersion | null;\n unit_ids?: EntityId[];\n /**\n * For faction-type abilities, the faction this rule belongs to\n */\n faction_id?: EntityId | null;\n /**\n * For detachment/enhancement/stratagem-type abilities, the associated detachment\n */\n detachment_id?: EntityId | null;\n ability_type?: \"core\" | \"faction\" | \"detachment\" | \"unit\" | \"enhancement\" | \"stratagem\";\n /**\n * How this ability interacts with the game flow — not a runtime predicate\n */\n behavior?: \"passive\" | \"activated\" | \"reactive\" | \"aura\";\n effect: AbilityEffect1;\n scope: AbilityScope;\n interactions?: {\n ability_ref: EntityId;\n type: \"conflicts-with\" | \"combos-with\" | \"superseded-by\" | \"requires\" | \"replaces\";\n notes?: string;\n [k: string]: unknown;\n }[];\n disputed?: boolean;\n dispute_notes?: string;\n community_notes?: string;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"scope\".\n */\nexport interface AbilityScope {\n range:\n | \"self\"\n | \"unit\"\n | \"attached\"\n | \"aura-6\"\n | \"aura-9\"\n | \"aura-12\"\n | \"aura-custom\"\n | \"engagement-range\"\n | \"any-visible\"\n | \"any-on-battlefield\"\n | \"terrain-within-range\";\n duration: \"phase\" | \"turn\" | \"battle-round\" | \"battle\" | \"until-next-command-phase\" | \"one-use\" | \"permanent\";\n range_inches?: number;\n [k: string]: unknown;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"interaction-flag\".\n */\nexport interface InteractionFlag {\n ability_a: EntityId;\n ability_b: EntityId;\n interaction_type: \"conflicts\" | \"combos\" | \"sequencing-dependent\" | \"stacks\" | \"does-not-stack\" | \"replaces\";\n resolution?: string;\n faq_reference?: string;\n disputed?: boolean;\n game_version: GameVersionReference;\n authored_by?: ContributorRef;\n [k: string]: unknown;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"phase-mapping\".\n */\nexport interface PhaseMapping {\n source_id: EntityId;\n source_type: SourceType;\n phases: PhaseList;\n game_version: GameVersionReference;\n authored_by?: ContributorRef;\n [k: string]: unknown;\n}\n/**\n * A faction's resource system (Miracle Dice, Pain tokens, Blessings dice pool, etc.).\n *\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"resource-pool\".\n */\nexport interface ResourcePool {\n id: EntityId;\n name: string;\n faction_id: EntityId;\n pool_type: \"token\" | \"dice-pool\" | \"counter\";\n generation?: {\n condition: AbilityCondition2;\n amount: StatValue;\n [k: string]: unknown;\n }[];\n max_size?: number | null;\n game_version: GameVersionReference;\n}\n/**\n * This interface was referenced by `0KdcBundledSchemas`'s JSON-Schema\n * via the `definition` \"timing-flag\".\n */\nexport interface TimingFlag {\n source_id: EntityId;\n source_type: SourceType;\n timing:\n | \"start-of-phase\"\n | \"end-of-phase\"\n | \"before-hit-roll\"\n | \"after-hit-roll\"\n | \"before-wound-roll\"\n | \"after-wound-roll\"\n | \"before-save-roll\"\n | \"after-save-roll\"\n | \"before-damage-roll\"\n | \"after-damage-roll\"\n | \"before-charge-roll\"\n | \"after-charge-roll\"\n | \"before-advance-roll\"\n | \"after-advance-roll\"\n | \"before-battle-shock\"\n | \"after-battle-shock\"\n | \"on-unit-selected\"\n | \"on-unit-destroyed\"\n | \"on-model-destroyed\"\n | \"on-damage-allocated\";\n game_version: GameVersionReference;\n authored_by?: ContributorRef;\n [k: string]: unknown;\n}\n"]}
|
package/dist/import/adapter.d.ts
CHANGED
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @packageDocumentation
|
|
14
14
|
*/
|
|
15
|
-
import type { ParsedRoster } from "./types.js";
|
|
15
|
+
import type { ParsedRoster, RosterFormat } from "./types.js";
|
|
16
16
|
/** Recognises and parses one source list-export format. */
|
|
17
17
|
export interface FormatAdapter {
|
|
18
|
-
/** Stable identifier for the format
|
|
19
|
-
id:
|
|
18
|
+
/** Stable identifier for the format. Carries through to `Roster.source.format`. */
|
|
19
|
+
id: RosterFormat;
|
|
20
20
|
/** True when this adapter can parse the given decoded payload. */
|
|
21
21
|
matches(decoded: unknown): boolean;
|
|
22
22
|
/** Lower a recognised payload to the format-agnostic intermediate. */
|
|
@@ -24,3 +24,4 @@ export interface FormatAdapter {
|
|
|
24
24
|
}
|
|
25
25
|
/** Pick the first adapter that recognises the payload. */
|
|
26
26
|
export declare function selectAdapter(decoded: unknown, adapters: FormatAdapter[]): FormatAdapter;
|
|
27
|
+
//# sourceMappingURL=adapter.d.ts.map
|