playlist-data-engine 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +352 -0
  3. package/dist/__vite-browser-external-DYxpcVy9.js +4 -0
  4. package/dist/constants/DefaultClasses.d.ts +46 -0
  5. package/dist/constants/DefaultClasses.d.ts.map +1 -0
  6. package/dist/constants/DefaultEnchantments.d.ts +337 -0
  7. package/dist/constants/DefaultEnchantments.d.ts.map +1 -0
  8. package/dist/constants/DefaultEnemies.d.ts +83 -0
  9. package/dist/constants/DefaultEnemies.d.ts.map +1 -0
  10. package/dist/constants/DefaultEquipment.d.ts +23 -0
  11. package/dist/constants/DefaultEquipment.d.ts.map +1 -0
  12. package/dist/constants/DefaultFeatures.d.ts +22 -0
  13. package/dist/constants/DefaultFeatures.d.ts.map +1 -0
  14. package/dist/constants/DefaultRaces.d.ts +102 -0
  15. package/dist/constants/DefaultRaces.d.ts.map +1 -0
  16. package/dist/constants/DefaultSkills.d.ts +26 -0
  17. package/dist/constants/DefaultSkills.d.ts.map +1 -0
  18. package/dist/constants/DefaultSpells.d.ts +41 -0
  19. package/dist/constants/DefaultSpells.d.ts.map +1 -0
  20. package/dist/constants/EncounterBalance.d.ts +208 -0
  21. package/dist/constants/EncounterBalance.d.ts.map +1 -0
  22. package/dist/constants/EnemyEquipment.d.ts +71 -0
  23. package/dist/constants/EnemyEquipment.d.ts.map +1 -0
  24. package/dist/constants/EnemyRarity.d.ts +79 -0
  25. package/dist/constants/EnemyRarity.d.ts.map +1 -0
  26. package/dist/constants/EnemyTemplates/Construct.d.ts +63 -0
  27. package/dist/constants/EnemyTemplates/Construct.d.ts.map +1 -0
  28. package/dist/constants/EnemyTemplates/Dragon.d.ts +68 -0
  29. package/dist/constants/EnemyTemplates/Dragon.d.ts.map +1 -0
  30. package/dist/constants/EnemyTemplates/Elemental.d.ts +64 -0
  31. package/dist/constants/EnemyTemplates/Elemental.d.ts.map +1 -0
  32. package/dist/constants/EnemyTemplates/Fiend.d.ts +62 -0
  33. package/dist/constants/EnemyTemplates/Fiend.d.ts.map +1 -0
  34. package/dist/constants/EnemyTemplates/Monstrosity.d.ts +63 -0
  35. package/dist/constants/EnemyTemplates/Monstrosity.d.ts.map +1 -0
  36. package/dist/constants/EnemyTemplates/Undead.d.ts +61 -0
  37. package/dist/constants/EnemyTemplates/Undead.d.ts.map +1 -0
  38. package/dist/constants/ItemTemplates.d.ts +40 -0
  39. package/dist/constants/ItemTemplates.d.ts.map +1 -0
  40. package/dist/constants/MagicItems.d.ts +30 -0
  41. package/dist/constants/MagicItems.d.ts.map +1 -0
  42. package/dist/constants/SpellSlots.d.ts +30 -0
  43. package/dist/constants/SpellSlots.d.ts.map +1 -0
  44. package/dist/constants/StatScaling.d.ts +113 -0
  45. package/dist/constants/StatScaling.d.ts.map +1 -0
  46. package/dist/core/analysis/AudioAnalyzer.d.ts +599 -0
  47. package/dist/core/analysis/AudioAnalyzer.d.ts.map +1 -0
  48. package/dist/core/analysis/ColorExtractor.d.ts +64 -0
  49. package/dist/core/analysis/ColorExtractor.d.ts.map +1 -0
  50. package/dist/core/analysis/EssentiaPitchDetector.d.ts +282 -0
  51. package/dist/core/analysis/EssentiaPitchDetector.d.ts.map +1 -0
  52. package/dist/core/analysis/LevelSerializer.d.ts +265 -0
  53. package/dist/core/analysis/LevelSerializer.d.ts.map +1 -0
  54. package/dist/core/analysis/MelodyContourAnalyzer.d.ts +283 -0
  55. package/dist/core/analysis/MelodyContourAnalyzer.d.ts.map +1 -0
  56. package/dist/core/analysis/MultiBandAnalyzer.d.ts +214 -0
  57. package/dist/core/analysis/MultiBandAnalyzer.d.ts.map +1 -0
  58. package/dist/core/analysis/MusicClassifier.d.ts +524 -0
  59. package/dist/core/analysis/MusicClassifier.d.ts.map +1 -0
  60. package/dist/core/analysis/PitchAnalyzer.d.ts +266 -0
  61. package/dist/core/analysis/PitchAnalyzer.d.ts.map +1 -0
  62. package/dist/core/analysis/PitchDetector.d.ts +251 -0
  63. package/dist/core/analysis/PitchDetector.d.ts.map +1 -0
  64. package/dist/core/analysis/SpectrumScanner.d.ts +52 -0
  65. package/dist/core/analysis/SpectrumScanner.d.ts.map +1 -0
  66. package/dist/core/analysis/beat/BeatInterpolator.d.ts +477 -0
  67. package/dist/core/analysis/beat/BeatInterpolator.d.ts.map +1 -0
  68. package/dist/core/analysis/beat/BeatMapGenerator.d.ts +170 -0
  69. package/dist/core/analysis/beat/BeatMapGenerator.d.ts.map +1 -0
  70. package/dist/core/analysis/beat/BeatStream.d.ts +316 -0
  71. package/dist/core/analysis/beat/BeatStream.d.ts.map +1 -0
  72. package/dist/core/analysis/beat/BeatSubdivider.d.ts +205 -0
  73. package/dist/core/analysis/beat/BeatSubdivider.d.ts.map +1 -0
  74. package/dist/core/analysis/beat/BeatTracker.d.ts +137 -0
  75. package/dist/core/analysis/beat/BeatTracker.d.ts.map +1 -0
  76. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts +180 -0
  77. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts.map +1 -0
  78. package/dist/core/analysis/beat/DensityAnalyzer.d.ts +246 -0
  79. package/dist/core/analysis/beat/DensityAnalyzer.d.ts.map +1 -0
  80. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts +1082 -0
  81. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts.map +1 -0
  82. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts +192 -0
  83. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts.map +1 -0
  84. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts +133 -0
  85. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts.map +1 -0
  86. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts +230 -0
  87. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts.map +1 -0
  88. package/dist/core/analysis/beat/RhythmQuantizer.d.ts +399 -0
  89. package/dist/core/analysis/beat/RhythmQuantizer.d.ts.map +1 -0
  90. package/dist/core/analysis/beat/RhythmicBalancer.d.ts +262 -0
  91. package/dist/core/analysis/beat/RhythmicBalancer.d.ts.map +1 -0
  92. package/dist/core/analysis/beat/StreamScorer.d.ts +275 -0
  93. package/dist/core/analysis/beat/StreamScorer.d.ts.map +1 -0
  94. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts +256 -0
  95. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts.map +1 -0
  96. package/dist/core/analysis/beat/TempoDetector.d.ts +220 -0
  97. package/dist/core/analysis/beat/TempoDetector.d.ts.map +1 -0
  98. package/dist/core/analysis/beat/TransientDetector.d.ts +303 -0
  99. package/dist/core/analysis/beat/TransientDetector.d.ts.map +1 -0
  100. package/dist/core/analysis/beat/beatKeyHelpers.d.ts +180 -0
  101. package/dist/core/analysis/beat/beatKeyHelpers.d.ts.map +1 -0
  102. package/dist/core/analysis/beat/index.d.ts +41 -0
  103. package/dist/core/analysis/beat/index.d.ts.map +1 -0
  104. package/dist/core/analysis/beat/utils/audioUtils.d.ts +204 -0
  105. package/dist/core/analysis/beat/utils/audioUtils.d.ts.map +1 -0
  106. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts +404 -0
  107. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts.map +1 -0
  108. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts +61 -0
  109. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts.map +1 -0
  110. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts +33 -0
  111. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts.map +1 -0
  112. package/dist/core/analysis/index.d.ts +18 -0
  113. package/dist/core/analysis/index.d.ts.map +1 -0
  114. package/dist/core/combat/AI/AICombatRunner.d.ts +108 -0
  115. package/dist/core/combat/AI/AICombatRunner.d.ts.map +1 -0
  116. package/dist/core/combat/AI/CombatAI.d.ts +179 -0
  117. package/dist/core/combat/AI/CombatAI.d.ts.map +1 -0
  118. package/dist/core/combat/AI/CombatMetricsTracker.d.ts +30 -0
  119. package/dist/core/combat/AI/CombatMetricsTracker.d.ts.map +1 -0
  120. package/dist/core/combat/Analysis/BalanceValidator.d.ts +170 -0
  121. package/dist/core/combat/Analysis/BalanceValidator.d.ts.map +1 -0
  122. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts +231 -0
  123. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts.map +1 -0
  124. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts +203 -0
  125. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts.map +1 -0
  126. package/dist/core/combat/Analysis/ParameterSweep.d.ts +201 -0
  127. package/dist/core/combat/Analysis/ParameterSweep.d.ts.map +1 -0
  128. package/dist/core/combat/AttackResolver.d.ts +220 -0
  129. package/dist/core/combat/AttackResolver.d.ts.map +1 -0
  130. package/dist/core/combat/CombatEngine.d.ts +388 -0
  131. package/dist/core/combat/CombatEngine.d.ts.map +1 -0
  132. package/dist/core/combat/DiceRoller.d.ts +115 -0
  133. package/dist/core/combat/DiceRoller.d.ts.map +1 -0
  134. package/dist/core/combat/InitiativeRoller.d.ts +62 -0
  135. package/dist/core/combat/InitiativeRoller.d.ts.map +1 -0
  136. package/dist/core/combat/PartyAnalyzer.d.ts +215 -0
  137. package/dist/core/combat/PartyAnalyzer.d.ts.map +1 -0
  138. package/dist/core/combat/SeededDiceRoller.d.ts +120 -0
  139. package/dist/core/combat/SeededDiceRoller.d.ts.map +1 -0
  140. package/dist/core/combat/Simulation/CombatSimulator.d.ts +366 -0
  141. package/dist/core/combat/Simulation/CombatSimulator.d.ts.map +1 -0
  142. package/dist/core/combat/SpellCaster.d.ts +113 -0
  143. package/dist/core/combat/SpellCaster.d.ts.map +1 -0
  144. package/dist/core/config/index.d.ts +24 -0
  145. package/dist/core/config/index.d.ts.map +1 -0
  146. package/dist/core/config/progressionConfig.d.ts +73 -0
  147. package/dist/core/config/progressionConfig.d.ts.map +1 -0
  148. package/dist/core/config/sensorConfig.d.ts +134 -0
  149. package/dist/core/config/sensorConfig.d.ts.map +1 -0
  150. package/dist/core/equipment/BoxOpener.d.ts +175 -0
  151. package/dist/core/equipment/BoxOpener.d.ts.map +1 -0
  152. package/dist/core/equipment/EquipmentEffectApplier.d.ts +189 -0
  153. package/dist/core/equipment/EquipmentEffectApplier.d.ts.map +1 -0
  154. package/dist/core/equipment/EquipmentModifier.d.ts +327 -0
  155. package/dist/core/equipment/EquipmentModifier.d.ts.map +1 -0
  156. package/dist/core/equipment/EquipmentSpawnHelper.d.ts +246 -0
  157. package/dist/core/equipment/EquipmentSpawnHelper.d.ts.map +1 -0
  158. package/dist/core/equipment/EquipmentValidator.d.ts +173 -0
  159. package/dist/core/equipment/EquipmentValidator.d.ts.map +1 -0
  160. package/dist/core/extensions/ExtensionManager.d.ts +517 -0
  161. package/dist/core/extensions/ExtensionManager.d.ts.map +1 -0
  162. package/dist/core/extensions/WeightedSelector.d.ts +156 -0
  163. package/dist/core/extensions/WeightedSelector.d.ts.map +1 -0
  164. package/dist/core/extensions/index.d.ts +11 -0
  165. package/dist/core/extensions/index.d.ts.map +1 -0
  166. package/dist/core/extensions/initializeDefaults.d.ts +170 -0
  167. package/dist/core/extensions/initializeDefaults.d.ts.map +1 -0
  168. package/dist/core/features/FeatureEffectApplier.d.ts +102 -0
  169. package/dist/core/features/FeatureEffectApplier.d.ts.map +1 -0
  170. package/dist/core/features/FeatureQuery.d.ts +368 -0
  171. package/dist/core/features/FeatureQuery.d.ts.map +1 -0
  172. package/dist/core/features/FeatureTypes.d.ts +199 -0
  173. package/dist/core/features/FeatureTypes.d.ts.map +1 -0
  174. package/dist/core/features/FeatureValidator.d.ts +149 -0
  175. package/dist/core/features/FeatureValidator.d.ts.map +1 -0
  176. package/dist/core/features/index.d.ts +12 -0
  177. package/dist/core/features/index.d.ts.map +1 -0
  178. package/dist/core/generation/AbilityScoreCalculator.d.ts +83 -0
  179. package/dist/core/generation/AbilityScoreCalculator.d.ts.map +1 -0
  180. package/dist/core/generation/AppearanceGenerator.d.ts +32 -0
  181. package/dist/core/generation/AppearanceGenerator.d.ts.map +1 -0
  182. package/dist/core/generation/BeatConverter.d.ts +127 -0
  183. package/dist/core/generation/BeatConverter.d.ts.map +1 -0
  184. package/dist/core/generation/ButtonMapper.d.ts +346 -0
  185. package/dist/core/generation/ButtonMapper.d.ts.map +1 -0
  186. package/dist/core/generation/ButtonPatternLibrary.d.ts +92 -0
  187. package/dist/core/generation/ButtonPatternLibrary.d.ts.map +1 -0
  188. package/dist/core/generation/CRLevelConverter.d.ts +242 -0
  189. package/dist/core/generation/CRLevelConverter.d.ts.map +1 -0
  190. package/dist/core/generation/CharacterGenerator.d.ts +194 -0
  191. package/dist/core/generation/CharacterGenerator.d.ts.map +1 -0
  192. package/dist/core/generation/ClassSuggester.d.ts +184 -0
  193. package/dist/core/generation/ClassSuggester.d.ts.map +1 -0
  194. package/dist/core/generation/EnemyEquipmentGenerator.d.ts +151 -0
  195. package/dist/core/generation/EnemyEquipmentGenerator.d.ts.map +1 -0
  196. package/dist/core/generation/EnemyGenerator.d.ts +595 -0
  197. package/dist/core/generation/EnemyGenerator.d.ts.map +1 -0
  198. package/dist/core/generation/EquipmentGenerator.d.ts +204 -0
  199. package/dist/core/generation/EquipmentGenerator.d.ts.map +1 -0
  200. package/dist/core/generation/LegendaryGenerator.d.ts +213 -0
  201. package/dist/core/generation/LegendaryGenerator.d.ts.map +1 -0
  202. package/dist/core/generation/LevelGenerator.d.ts +390 -0
  203. package/dist/core/generation/LevelGenerator.d.ts.map +1 -0
  204. package/dist/core/generation/NamingEngine.d.ts +136 -0
  205. package/dist/core/generation/NamingEngine.d.ts.map +1 -0
  206. package/dist/core/generation/PitchBeatLinker.d.ts +150 -0
  207. package/dist/core/generation/PitchBeatLinker.d.ts.map +1 -0
  208. package/dist/core/generation/RaceSelector.d.ts +58 -0
  209. package/dist/core/generation/RaceSelector.d.ts.map +1 -0
  210. package/dist/core/generation/RhythmGenerator.d.ts +597 -0
  211. package/dist/core/generation/RhythmGenerator.d.ts.map +1 -0
  212. package/dist/core/generation/SkillAssigner.d.ts +78 -0
  213. package/dist/core/generation/SkillAssigner.d.ts.map +1 -0
  214. package/dist/core/generation/SpellManager.d.ts +132 -0
  215. package/dist/core/generation/SpellManager.d.ts.map +1 -0
  216. package/dist/core/generation/SpellcastingGenerator.d.ts +255 -0
  217. package/dist/core/generation/SpellcastingGenerator.d.ts.map +1 -0
  218. package/dist/core/generation/index.d.ts +41 -0
  219. package/dist/core/generation/index.d.ts.map +1 -0
  220. package/dist/core/parser/MetadataExtractor.d.ts +66 -0
  221. package/dist/core/parser/MetadataExtractor.d.ts.map +1 -0
  222. package/dist/core/parser/PlaylistParser.d.ts +45 -0
  223. package/dist/core/parser/PlaylistParser.d.ts.map +1 -0
  224. package/dist/core/playback/SubdivisionPlaybackController.d.ts +333 -0
  225. package/dist/core/playback/SubdivisionPlaybackController.d.ts.map +1 -0
  226. package/dist/core/playback/index.d.ts +5 -0
  227. package/dist/core/playback/index.d.ts.map +1 -0
  228. package/dist/core/progression/CharacterUpdater.d.ts +203 -0
  229. package/dist/core/progression/CharacterUpdater.d.ts.map +1 -0
  230. package/dist/core/progression/LevelUpProcessor.d.ts +234 -0
  231. package/dist/core/progression/LevelUpProcessor.d.ts.map +1 -0
  232. package/dist/core/progression/PrestigeSystem.d.ts +217 -0
  233. package/dist/core/progression/PrestigeSystem.d.ts.map +1 -0
  234. package/dist/core/progression/RhythmXPCalculator.d.ts +182 -0
  235. package/dist/core/progression/RhythmXPCalculator.d.ts.map +1 -0
  236. package/dist/core/progression/SessionTracker.d.ts +169 -0
  237. package/dist/core/progression/SessionTracker.d.ts.map +1 -0
  238. package/dist/core/progression/XPCalculator.d.ts +128 -0
  239. package/dist/core/progression/XPCalculator.d.ts.map +1 -0
  240. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts +97 -0
  241. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts.map +1 -0
  242. package/dist/core/progression/stat/StatManager.d.ts +179 -0
  243. package/dist/core/progression/stat/StatManager.d.ts.map +1 -0
  244. package/dist/core/sensors/EnvironmentalSensors.d.ts +301 -0
  245. package/dist/core/sensors/EnvironmentalSensors.d.ts.map +1 -0
  246. package/dist/core/sensors/GamingPlatformSensors.d.ts +162 -0
  247. package/dist/core/sensors/GamingPlatformSensors.d.ts.map +1 -0
  248. package/dist/core/sensors/GeolocationProvider.d.ts +156 -0
  249. package/dist/core/sensors/GeolocationProvider.d.ts.map +1 -0
  250. package/dist/core/sensors/MotionDetector.d.ts +58 -0
  251. package/dist/core/sensors/MotionDetector.d.ts.map +1 -0
  252. package/dist/core/sensors/SteamAPIClient.d.ts +108 -0
  253. package/dist/core/sensors/SteamAPIClient.d.ts.map +1 -0
  254. package/dist/core/sensors/WeatherAPIClient.d.ts +360 -0
  255. package/dist/core/sensors/WeatherAPIClient.d.ts.map +1 -0
  256. package/dist/core/sensors/schemas/weather.schema.d.ts +144 -0
  257. package/dist/core/sensors/schemas/weather.schema.d.ts.map +1 -0
  258. package/dist/core/skills/SkillQuery.d.ts +159 -0
  259. package/dist/core/skills/SkillQuery.d.ts.map +1 -0
  260. package/dist/core/skills/SkillTypes.d.ts +233 -0
  261. package/dist/core/skills/SkillTypes.d.ts.map +1 -0
  262. package/dist/core/skills/SkillValidator.d.ts +146 -0
  263. package/dist/core/skills/SkillValidator.d.ts.map +1 -0
  264. package/dist/core/skills/index.d.ts +11 -0
  265. package/dist/core/skills/index.d.ts.map +1 -0
  266. package/dist/core/spells/SpellQuery.d.ts +194 -0
  267. package/dist/core/spells/SpellQuery.d.ts.map +1 -0
  268. package/dist/core/spells/SpellTypes.d.ts +71 -0
  269. package/dist/core/spells/SpellTypes.d.ts.map +1 -0
  270. package/dist/core/spells/SpellValidator.d.ts +129 -0
  271. package/dist/core/spells/SpellValidator.d.ts.map +1 -0
  272. package/dist/core/spells/index.d.ts +11 -0
  273. package/dist/core/spells/index.d.ts.map +1 -0
  274. package/dist/core/types/AudioProfile.d.ts +143 -0
  275. package/dist/core/types/AudioProfile.d.ts.map +1 -0
  276. package/dist/core/types/BeatMap.d.ts +1825 -0
  277. package/dist/core/types/BeatMap.d.ts.map +1 -0
  278. package/dist/core/types/ButtonMapping.d.ts +345 -0
  279. package/dist/core/types/ButtonMapping.d.ts.map +1 -0
  280. package/dist/core/types/Character.d.ts +397 -0
  281. package/dist/core/types/Character.d.ts.map +1 -0
  282. package/dist/core/types/ChartedBeatMap.d.ts +169 -0
  283. package/dist/core/types/ChartedBeatMap.d.ts.map +1 -0
  284. package/dist/core/types/Combat.d.ts +268 -0
  285. package/dist/core/types/Combat.d.ts.map +1 -0
  286. package/dist/core/types/CombatAI.d.ts +143 -0
  287. package/dist/core/types/CombatAI.d.ts.map +1 -0
  288. package/dist/core/types/Enemy.d.ts +447 -0
  289. package/dist/core/types/Enemy.d.ts.map +1 -0
  290. package/dist/core/types/Environmental.d.ts +213 -0
  291. package/dist/core/types/Environmental.d.ts.map +1 -0
  292. package/dist/core/types/Equipment.d.ts +309 -0
  293. package/dist/core/types/Equipment.d.ts.map +1 -0
  294. package/dist/core/types/ISessionTracker.d.ts +48 -0
  295. package/dist/core/types/ISessionTracker.d.ts.map +1 -0
  296. package/dist/core/types/LevelExport.d.ts +366 -0
  297. package/dist/core/types/LevelExport.d.ts.map +1 -0
  298. package/dist/core/types/Playlist.d.ts +70 -0
  299. package/dist/core/types/Playlist.d.ts.map +1 -0
  300. package/dist/core/types/Prestige.d.ts +94 -0
  301. package/dist/core/types/Prestige.d.ts.map +1 -0
  302. package/dist/core/types/Progression.d.ts +214 -0
  303. package/dist/core/types/Progression.d.ts.map +1 -0
  304. package/dist/core/types/RhythmXP.d.ts +398 -0
  305. package/dist/core/types/RhythmXP.d.ts.map +1 -0
  306. package/dist/core/utils/AbilityConstants.d.ts +31 -0
  307. package/dist/core/utils/AbilityConstants.d.ts.map +1 -0
  308. package/dist/core/utils/EffectApplierUtils.d.ts +56 -0
  309. package/dist/core/utils/EffectApplierUtils.d.ts.map +1 -0
  310. package/dist/core/utils/ImageValidator.d.ts +66 -0
  311. package/dist/core/utils/ImageValidator.d.ts.map +1 -0
  312. package/dist/core/utils/PrerequisiteValidator.d.ts +88 -0
  313. package/dist/core/utils/PrerequisiteValidator.d.ts.map +1 -0
  314. package/dist/essentia-wasm.es-BUEnKUts.js +2990 -0
  315. package/dist/essentia.js-model.es-CGA0xotH.js +306 -0
  316. package/dist/index.d.ts +176 -0
  317. package/dist/index.d.ts.map +1 -0
  318. package/dist/playlist-data-engine.js +124 -0
  319. package/dist/playlist-data-engine.mjs +49251 -0
  320. package/dist/utils/EnchantmentLibrary.d.ts +378 -0
  321. package/dist/utils/EnchantmentLibrary.d.ts.map +1 -0
  322. package/dist/utils/arweaveGatewayManager.d.ts +485 -0
  323. package/dist/utils/arweaveGatewayManager.d.ts.map +1 -0
  324. package/dist/utils/arweaveUtils.d.ts +118 -0
  325. package/dist/utils/arweaveUtils.d.ts.map +1 -0
  326. package/dist/utils/constants.d.ts +439 -0
  327. package/dist/utils/constants.d.ts.map +1 -0
  328. package/dist/utils/equipmentConstants.d.ts +60 -0
  329. package/dist/utils/equipmentConstants.d.ts.map +1 -0
  330. package/dist/utils/hash.d.ts +33 -0
  331. package/dist/utils/hash.d.ts.map +1 -0
  332. package/dist/utils/logger.d.ts +192 -0
  333. package/dist/utils/logger.d.ts.map +1 -0
  334. package/dist/utils/magicItemExamples.d.ts +46 -0
  335. package/dist/utils/magicItemExamples.d.ts.map +1 -0
  336. package/dist/utils/playlistUtils.d.ts +149 -0
  337. package/dist/utils/playlistUtils.d.ts.map +1 -0
  338. package/dist/utils/random.d.ts +34 -0
  339. package/dist/utils/random.d.ts.map +1 -0
  340. package/dist/utils/sensorDashboard.d.ts +60 -0
  341. package/dist/utils/sensorDashboard.d.ts.map +1 -0
  342. package/dist/utils/validators.d.ts +189 -0
  343. package/dist/utils/validators.d.ts.map +1 -0
  344. package/dist/vite.svg +1 -0
  345. package/package.json +82 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jason DeSante
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,352 @@
1
+ # Playlist Data Engine
2
+
3
+ > The data engine behind **[ar://listen](https://listen.arweave.net/)** — an interactive music player where every song becomes an adventure. Five years in the making.
4
+
5
+ The engine takes **serverless playlists** (stored on Arweave via the Ario network) and turns them into music-powered experiences. It parses playlist data into clean formats, analyzes audio with TensorFlow-powered ML models, detects beats for rhythm games, generates RPG characters from sonic fingerprints, runs combat simulations with seeded dice, and feeds real-world sensor data back into the player to create a living, responsive experience. All with automatic Arweave gateway failover via the Ario Wayfinder so your data is always reachable.
6
+
7
+ **Think of it as a toybox for making music more fun.**
8
+
9
+ ### The Vision: An Intelligent Music Player
10
+
11
+ The original design — five years ago — was simple: what if a music player *listened* to your music as carefully as you do? What if it knew the genre, the mood, the beats, the groove? What if it could react to where you are, what you're doing, the weather outside, the time of day? What if every song came with a character, a combat encounter, a rhythm game chart — all generated from the music itself?
12
+
13
+ That's what this engine does. Every system connects back to making the music player smarter and more interactive:
14
+
15
+ | Player Feature | What Powers It |
16
+ |---|---|
17
+ | **Playlist loading** from Arweave with automatic gateway failover | PlaylistParser + Ario Wayfinder |
18
+ | **Dynamic theming** — colors, mood, energy from the music | ColorExtractor + MusicClassifier + AudioAnalyzer |
19
+ | **Real-time beat visualization** synced to audio playback | BeatStream + BeatMapGenerator |
20
+ | **Rhythm game mode** — play along to any song | Beat detection + auto chart generation + ButtonMapper |
21
+ | **Character companions** generated from each song | CharacterGenerator + AudioAnalyzer |
22
+ | **Combat encounters** drawn from the music's energy and complexity | EnemyGenerator + CombatEngine |
23
+ | **Context-aware XP** — running at night in the rain earns more | EnvironmentalSensors + GamingPlatformSensors |
24
+ | **Progression that persists** across listening sessions | SessionTracker + CharacterUpdater + PrestigeSystem |
25
+ | **Genre-aware recommendations** from 400+ subgenres | MusicClassifier (TensorFlow + essentia.js) |
26
+ | **Pitch-driven visuals** — melody contour, note detection | PitchAnalyzer (pYIN + Essentia.js WASM) |
27
+
28
+ ---
29
+
30
+ ## What Can You Build?
31
+
32
+ The engine is modular — use what you want, ignore the rest. Everything here serves the interactive music player, but each piece works standalone too.
33
+
34
+ ### Playlist Parsing & Data Extraction (Core Feature)
35
+
36
+ - **Serverless Playlist Parser** — Parse Arweave-hosted playlists into clean, structured data with automatic gateway failover via the Ario Wayfinder network
37
+ - **Quick Data Extraction** — One-liners to grab audio URLs, image URLs, track titles, artists, genres, tags, durations, VRM models, and more
38
+ - **Color Extraction** — K-means color palette extraction from track artwork
39
+ - **Arweave Gateway Manager** — Built-in resilience: automatically races multiple Arweave gateways plus the Ario Wayfinder, caches working gateways, and falls back seamlessly when one fails
40
+
41
+ ### Audio Analysis
42
+
43
+ - **Sonic Fingerprinting** — Triple-tap real-time analysis sampling at 5%, 40%, 70% of a track for fast profiling (bass/mid/treble dominance, RMS energy, dynamic range, spectral features)
44
+ - **Full Timeline Analysis** — Segment-by-segment analysis of entire songs for waveform visualization and level generation
45
+ - **Genre & Mood Detection** — TensorFlow.js + essentia.js ML models classify genres (400+ Discogs subgenres), moods (60 themes), and vibe metrics (danceability, energy, valence) using musicnn, effnet, vggish, and tempocnn architectures
46
+ - **Pitch Detection** — Full-track pitch analysis using the pYIN algorithm and Essentia.js WASM detectors (including CREPE), with melody contour analysis, pitch direction tracking, and interval statistics
47
+
48
+ ### Rhythm Games
49
+
50
+ Three modes for rhythm game development:
51
+
52
+ 1. **Beat Detection** — Detect beats automatically using the Ellis 2007 dynamic programming algorithm with multi-band onset detection, configurable sensitivity/filtering, and +/-10ms precision via Web Audio API scheduling
53
+ 2. **Manual Chart Creation** — Build complicated rhythm game charts by hand with required key assignment, downbeat configuration, time signature changes, and per-beat key mapping for DDR/Guitar Hero/Tap controller modes
54
+ 3. **Automatic Chart Generation** — Full procedural pipeline: multi-band transient detection → rhythm quantization → phrase detection → composite stream generation → difficulty variant generation (easy/medium/hard/natural), with pitch-based button mapping
55
+
56
+ Plus: groove analysis (pocket detection, hotness meter), combo/groove XP rewards, beat interpolation, and real-time subdivision switching for practice mode.
57
+
58
+ ### RPG Characters from Music
59
+
60
+ - **Deterministic Character Generation** — Analyze audio and generate RPG character sheets (race, class, stats, abilities, spells, equipment, appearance) — same song, same character, always
61
+ - **Combat Simulator** — Turn-based combat with AI opponents, seeded dice, Monte Carlo balance testing, and parameter sweeps
62
+ - **Enemy Generation** — Procedural enemies from music with CR scaling, archetypes, rarity tiers, and simulation-validated balance
63
+ - **Equipment & Enchanting** — Items, weapons, armor, accessories with enchanting, set bonuses, box loot, and stat effects
64
+ - **Progression System** — Full XP, leveling (lv.20 max + uncapped), stat strategies, track mastery, and a 10-tier prestige system
65
+ - **Content Packs** — Modular system for custom races, classes, enemies, equipment, and spells
66
+ - **IRL Sensor Integration** — The player adapts to your world: GPS, weather, motion, gaming platform, and solar data feed into XP multipliers and gameplay modifiers
67
+ - **Seeded Randomness** — Deterministic dice rolling, seeded RNG, and reproducible simulations
68
+
69
+ ---
70
+
71
+ ## Quick Start
72
+
73
+ ```bash
74
+ npm install
75
+ npm test
76
+ npm run build
77
+ ```
78
+
79
+ ### Parse a Playlist & Extract Data
80
+
81
+ ```typescript
82
+ import { PlaylistParser, getAudioUrls, getTrackTitles, getArtists } from 'playlist-data-engine';
83
+
84
+ const parser = new PlaylistParser();
85
+ const playlist = await parser.parse(rawPlaylistJSON);
86
+
87
+ // Quick data extraction
88
+ const urls = getAudioUrls(playlist); // ['https://...', ...]
89
+ const titles = getTrackTitles(playlist); // ['Song 1', 'Song 2']
90
+ const artists = getArtists(playlist); // ['Artist A', 'Artist B']
91
+ const genres = getGenres(playlist); // ['Electronic', 'Hip-Hop']
92
+ const duration = getTotalDuration(playlist); // total seconds
93
+ ```
94
+
95
+ ### Analyze Audio
96
+
97
+ ```typescript
98
+ import { AudioAnalyzer, MusicClassifier, PitchAnalyzer } from 'playlist-data-engine';
99
+
100
+ // Fast sonic fingerprint (samples at 5%, 40%, 70%)
101
+ const analyzer = new AudioAnalyzer();
102
+ const profile = await analyzer.extractSonicFingerprint(track.audio_url);
103
+ // → { bass_dominance, mid_dominance, treble_dominance, rms_energy, dynamic_range, ... }
104
+
105
+ // TensorFlow-based genre, mood, and vibe classification
106
+ const classifier = new MusicClassifier();
107
+ const classification = await classifier.analyze(track.audio_url);
108
+ // → { genres: ['techno', 'detroit-house'], moods: ['energetic', 'driving'], vibes: { danceability, energy, valence } }
109
+
110
+ // Full-track pitch detection (pYIN algorithm)
111
+ const pitchAnalyzer = new PitchAnalyzer();
112
+ const pitch = await pitchAnalyzer.analyze(track.audio_url);
113
+ // → { fundamentalFrequency, noteName, contour, intervals, ... }
114
+
115
+ // Full timeline analysis (every 2 seconds, or exactly N data points)
116
+ const timeline = await analyzer.analyzeTimeline(track.audio_url, { type: 'interval', intervalSeconds: 2 });
117
+ ```
118
+
119
+ ### Beat Detection & Rhythm Games
120
+
121
+ ```typescript
122
+ import { BeatMapGenerator, BeatStream } from 'playlist-data-engine';
123
+
124
+ // Auto-detect beats
125
+ const generator = new BeatMapGenerator();
126
+ const beatMap = await generator.generateBeatMap('song.mp3', 'track-1');
127
+
128
+ // Stream beats in real-time synced to audio playback
129
+ const stream = new BeatStream(beatMap, audioContext);
130
+ const result = stream.checkButtonPress(timestamp);
131
+ // → { accuracy: 'perfect', matchedBeat, offset, ... }
132
+ ```
133
+
134
+ ### Generate a Character from a Song
135
+
136
+ ```typescript
137
+ import { AudioAnalyzer, CharacterGenerator, generateSeed } from 'playlist-data-engine';
138
+
139
+ const analyzer = new AudioAnalyzer();
140
+ const audioProfile = await analyzer.extractSonicFingerprint(track.audio_url);
141
+ const character = CharacterGenerator.generate(track.id, audioProfile, track);
142
+ // → { name, race, class, level, abilityScores, hp, equipment, spells, ... }
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Arweave & the Ario Wayfinder
148
+
149
+ Playlists are stored on Arweave. The engine uses the **Ario Wayfinder** network to maximize data resiliency — it races multiple Arweave gateways in parallel and the first to respond wins. No configuration needed.
150
+
151
+ ```typescript
152
+ import { arweaveGatewayManager } from 'playlist-data-engine';
153
+
154
+ // Resolves Arweave URLs with automatic fallback
155
+ const workingUrl = await arweaveGatewayManager.resolveUrl('https://arweave.net/txId/file.json');
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Architecture Overview
161
+
162
+ ```
163
+ src/core/
164
+ ├── parser/ # Playlist parsing & data extraction
165
+ │ ├── PlaylistParser.ts # Parse Arweave-hosted playlists
166
+ │ └── MetadataExtractor.ts # Extract URLs, titles, artists, genres
167
+ ├── analysis/ # Audio analysis, classification, beat detection
168
+ │ ├── AudioAnalyzer.ts # Sonic fingerprint (triple-tap & timeline)
169
+ │ ├── MusicClassifier.ts # TensorFlow genre/mood/vibe classification
170
+ │ ├── PitchAnalyzer.ts # Full-track pitch detection (pYIN)
171
+ │ ├── ColorExtractor.ts # K-means color palette from artwork
172
+ │ ├── SpectrumScanner.ts # Frequency band analysis
173
+ │ └── beat/ # Beat detection, interpolation, subdivision
174
+ │ ├── BeatMapGenerator.ts # Beat map creation (Ellis DP algorithm)
175
+ │ ├── BeatStream.ts # Real-time beat synchronization
176
+ │ ├── GrooveAnalyzer.ts # Groove meter & pocket detection
177
+ │ ├── RhythmGenerator.ts # Procedural rhythm generation pipeline
178
+ │ ├── ButtonMapper.ts # DDR/Guitar Hero/Tap button mapping
179
+ │ └── BeatTracker.ts # Tempo & beat tracking
180
+ ├── generation/ # Procedural generation
181
+ │ ├── CharacterGenerator.ts # Character sheet generation
182
+ │ ├── EnemyGenerator.ts # Enemy generation from seeds
183
+ │ └── EquipmentGenerator.ts # Equipment from audio profiles
184
+ ├── progression/ # XP, leveling, stats
185
+ │ ├── CharacterUpdater.ts # Apply XP & handle level-ups
186
+ │ ├── XPCalculator.ts # Session & activity XP
187
+ │ ├── RhythmXPCalculator.ts # Rhythm game scoring & XP
188
+ │ ├── StatManager.ts # Stat strategies (manual, auto, custom)
189
+ │ └── LevelUpProcessor.ts # Level-up processing
190
+ ├── combat/ # D&D 5e combat engine
191
+ │ ├── CombatEngine.ts # Turn-based combat resolution
192
+ │ ├── CombatSimulator.ts # Monte Carlo simulation runner
193
+ │ ├── AttackResolver.ts # Attack roll & damage resolution
194
+ │ └── InitiativeRoller.ts # Initiative tracking
195
+ ├── randomness/ # Seeded RNG & dice
196
+ │ ├── SeededRNG.ts # Deterministic PRNG (MurmurHash V3)
197
+ │ ├── DiceRoller.ts # Static D&D dice roller
198
+ │ └── SeededDiceRoller.ts # Deterministic dice roller
199
+ ├── content/ # Content pack system
200
+ │ └── ContentPackRegistry.ts # Register & manage content packs
201
+ ├── sensors/ # IRL sensor integration
202
+ │ └── SensorMultiplier.ts # Activity & environment XP bonuses
203
+ └── types/ # TypeScript type definitions
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Core Concepts
209
+
210
+ ### Serverless Playlist Parsing
211
+
212
+ The engine's bread and butter — the foundation everything else builds on. Feed it a raw serverless playlist JSON and it parses the data into clean, structured formats ready for your app. Audio URLs, image URLs, track metadata, VRM 3D model references — all extracted and organized.
213
+
214
+ The parser handles Arweave-hosted content with built-in gateway failover via the Ario Wayfinder. If one gateway is down, it automatically tries the next — your player never notices.
215
+
216
+ ### Audio Analysis Pipeline
217
+
218
+ Four analysis modes, each serving different use cases:
219
+
220
+ | Mode | What It Does | Use Case |
221
+ |------|-------------|----------|
222
+ | **Sonic Fingerprint** | Fast frequency analysis at 3 sample points | Character generation, quick profiling |
223
+ | **Full Timeline** | Segment-by-segment analysis of entire song | Waveform visualization, level generation |
224
+ | **Music Classification** | TensorFlow genre/mood/vibe detection | Playlist organization, recommendation |
225
+ | **Pitch Analysis** | Full-track fundamental frequency detection | Melody analysis, button mapping |
226
+
227
+ Frequency analysis separates audio into three perceptual bands:
228
+ - **Bass** (20-400 Hz) — Kick drums, bass guitar, sub-bass
229
+ - **Mid** (400 Hz-4 kHz) — Vocals, guitars, keyboards
230
+ - **Treble** (4 kHz-14 kHz) — Hi-hats, cymbals, high harmonics
231
+
232
+ Genre classification uses essentia.js ML models with musicnn, effnet, vggish, and tempocnn architectures, covering 400+ Discogs subgenres and 60 mood themes.
233
+
234
+ ### Deterministic Generation
235
+
236
+ Everything is seedable. Pass the same inputs, get the same outputs — always. Powered by `SeededRNG` (MurmurHash V3) flowing through character generation, enemy creation, combat dice, and rhythm game button mapping.
237
+
238
+ ### D&D 5e-Inspired Progression
239
+
240
+ | Mode | Level Cap | Stat Increases | Description |
241
+ |------|-----------|----------------|-------------|
242
+ | **Standard** | 20 | Levels 4, 8, 12, 16, 19 (manual or smart auto) | Authentic D&D 5e experience |
243
+ | **Uncapped** | Unlimited | Every level (automatic) | Infinite progression with custom XP curves |
244
+
245
+ XP from multiple sources: listening sessions, combat, quests, rhythm game performance, and custom activities — all with configurable multipliers.
246
+
247
+ ---
248
+
249
+ ## Feature Highlights
250
+
251
+ ### Beat Detection & Rhythm Games
252
+
253
+ Three ways to create rhythm game content:
254
+
255
+ **1. Auto-detect beats** — Ellis 2007 DP algorithm with configurable sensitivity, grid filtering, and beat interpolation to fill gaps
256
+
257
+ **2. Manual chart creation** — Build charts by hand with per-beat key assignment, downbeat configuration, time signature changes, and measure labeling
258
+
259
+ **3. Automatic chart generation** — Full procedural pipeline: multi-band transient detection → rhythm quantization → phrase detection → composite stream generation → difficulty variants (easy/medium/hard/natural), with pitch-based button mapping for DDR, Guitar Hero, and Tap modes
260
+
261
+ Plus: groove analysis, beat subdivision (eighth notes, triplets, 16th notes), real-time subdivision switching for practice, and rhythm XP (accuracy scoring, combo multipliers up to 5x, groove bonuses).
262
+
263
+ ### Combat System
264
+
265
+ Turn-based combat with full simulation support — `CombatEngine` for live gameplay, `CombatSimulator` for running 1,000+ Monte Carlo simulations with seeded dice, configurable AI styles, and parameter sweeps for balance testing.
266
+
267
+ ### Enemy Generation
268
+
269
+ Procedural enemies from music with CR-based scaling, archetypes (brute/archer/support), 8 creature categories, 4 rarity tiers, simulation-validated balance, and a `DifficultyCalculator` that binary-searches for the CR that hits your target win rate.
270
+
271
+ ### Equipment & Enchanting
272
+
273
+ Music-derived weapons, armor, and accessories with enchanting, curses, upgrades, stat effects, conditional properties (time of day, creature type, wielder race/class), and loot box containers.
274
+
275
+ ### Content Packs & Custom Content
276
+
277
+ Extensible content system — register custom races (with subraces), classes (with template inheritance), enemies, equipment, spells, skills, and appearance options at runtime via `ExtensionManager`. Drop in a content pack JSON and it works.
278
+
279
+ ### IRL Sensor Integration
280
+
281
+ The player knows where you are and what you're doing. GPS, motion, weather (OpenWeatherMap), gaming platform (Steam), and solar position (NOAA algorithm, no API key needed) all feed into XP multipliers. Severe weather (blizzard, hurricane, typhoon, tornado) triggers dramatic bonus XP. Total multiplier capped at 3.0x.
282
+
283
+ ### XP & Progression
284
+
285
+ Multiple XP sources (music, combat, quests, rhythm game, custom) all return identical detailed level-up breakdowns. Track mastery with dual requirements (plays + XP), a 10-tier prestige system (I-X), stat strategies from manual D&D 5e to custom formulas, and custom XP curves for uncapped mode.
286
+
287
+ ### Seeded Randomness & Dice
288
+
289
+ Full D&D 5e dice system — `DiceRoller` (static, live gameplay) and `SeededDiceRoller` (instance-based, deterministic simulations). Inject into `CombatEngine` for reproducible combat. Same seed + same config = identical results, always.
290
+
291
+ ---
292
+
293
+ ## Installation & Integration
294
+
295
+ ```bash
296
+ npm install playlist-data-engine
297
+ ```
298
+
299
+ Dual ESM/CJS package with TypeScript declarations:
300
+
301
+ ```typescript
302
+ import {
303
+ PlaylistParser,
304
+ AudioAnalyzer,
305
+ MusicClassifier,
306
+ PitchAnalyzer,
307
+ BeatMapGenerator,
308
+ CharacterGenerator,
309
+ CombatEngine,
310
+ CombatSimulator,
311
+ arweaveGatewayManager,
312
+ // ... many more
313
+ } from 'playlist-data-engine';
314
+ ```
315
+
316
+ ### Browser & Node.js
317
+
318
+ The engine runs in both environments. Audio analysis uses the Web Audio API (browser) or compatible polyfills like `web-audio-api` (Node.js). The playlist parser, combat simulator, dice rollers, and all non-audio features work everywhere.
319
+
320
+ ---
321
+
322
+ ## Documentation
323
+
324
+ | Document | What It Covers |
325
+ |----------|---------------|
326
+ | **[DATA_ENGINE_REFERENCE.md](docs/DATA_ENGINE_REFERENCE.md)** | Complete API reference — every type, class, method, and reference table |
327
+ | **[USAGE_IN_OTHER_PROJECTS.md](docs/USAGE_IN_OTHER_PROJECTS.md)** | Integration guide with working code examples for every major feature |
328
+ | **[AUDIO_ANALYSIS.md](docs/features/AUDIO_ANALYSIS.md)** | Sonic fingerprinting, full timeline, TensorFlow genre/mood classification, pitch detection |
329
+ | **[BEAT_DETECTION.md](docs/features/BEAT_DETECTION.md)** | Beat detection, manual charts, auto chart generation, pitch-based button mapping |
330
+ | **[COMBAT_SYSTEM.md](docs/features/COMBAT_SYSTEM.md)** | Turn-based combat engine, simulations, AI combat, parameter sweeps |
331
+ | **[ENEMY_GENERATION.md](docs/features/ENEMY_GENERATION.md)** | Procedural enemy generation, CR scaling, balance validation |
332
+ | **[EQUIPMENT_SYSTEM.md](docs/features/EQUIPMENT_SYSTEM.md)** | Equipment generation, enchanting, set bonuses, stat effects |
333
+ | **[CONTENT_PACKS.md](docs/features/CONTENT_PACKS.md)** | Content pack system, creating custom content packs |
334
+ | **[CUSTOM_CONTENT.md](docs/features/CUSTOM_CONTENT.md)** | Custom races, classes, enemies, equipment, spells |
335
+ | **[ROLS_AND_SEEDS.md](docs/features/ROLS_AND_SEEDS.md)** | Seeded RNG, dice rolling, deterministic combat simulations |
336
+ | **[XP_AND_STATS.md](docs/features/XP_AND_STATS.md)** | XP sources, leveling, stat strategies, prestige system |
337
+ | **[IRL_SENSORS.md](docs/features/IRL_SENSORS.md)** | Real-world sensor integration, activity bonuses |
338
+ | **[PREREQUISITES.md](docs/features/PREREQUISITES.md)** | Dependencies, environment setup, system requirements |
339
+ | **[EXTENSIBILITY_GUIDE.md](docs/features/EXTENSIBILITY_GUIDE.md)** | Extension points, plugin patterns, custom content registration |
340
+
341
+ ---
342
+
343
+ ## Project Status
344
+
345
+ - **Version**: 1.1.0
346
+ - **TypeScript**: Strict mode
347
+ - **Tests**: 7,205 tests across 183 test files
348
+ - **Module**: Dual ESM/CJS with full type declarations
349
+
350
+ ## License
351
+
352
+ MIT
@@ -0,0 +1,4 @@
1
+ const e = {};
2
+ export {
3
+ e as default
4
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * D&D 5e Default Classes Data
3
+ *
4
+ * This file contains the default class data for all D&D 5e classes.
5
+ * Moved from src/utils/constants.ts for better organization.
6
+ */
7
+ import type { Class } from '../core/types/Character.js';
8
+ import type { ClassDataEntry } from '../utils/constants.js';
9
+ /**
10
+ * Default D&D 5e class data
11
+ *
12
+ * Contains all the core information needed for character generation:
13
+ * - Primary ability score
14
+ * - Hit die size
15
+ * - Saving throw proficiencies
16
+ * - Spellcasting capability
17
+ * - Number of skills to choose
18
+ * - Available skills
19
+ * - Expertise availability
20
+ */
21
+ export declare const CLASS_DATA: Record<string, ClassDataEntry>;
22
+ /**
23
+ * All classes in order for character generation
24
+ */
25
+ export declare const ALL_CLASSES: Class[];
26
+ /**
27
+ * Audio preference data for class affinity calculation
28
+ *
29
+ * Each class has preferred audio traits that determine affinity:
30
+ * - primary: The most important audio characteristic
31
+ * - secondary: Optional secondary characteristic
32
+ * - tertiary: Optional tertiary characteristic
33
+ * - weights: Multipliers for each frequency band (0-1 range)
34
+ *
35
+ * Used by ClassSuggester for affinity-based class selection.
36
+ */
37
+ export declare const CLASS_AUDIO_PREFERENCES: Record<string, {
38
+ primary: 'bass' | 'treble' | 'mid' | 'amplitude' | 'chaos';
39
+ secondary?: 'bass' | 'treble' | 'mid' | 'amplitude' | 'chaos';
40
+ tertiary?: 'bass' | 'treble' | 'mid' | 'amplitude' | 'chaos';
41
+ bass?: number;
42
+ treble?: number;
43
+ mid?: number;
44
+ amplitude?: number;
45
+ }>;
46
+ //# sourceMappingURL=DefaultClasses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultClasses.d.ts","sourceRoot":"","sources":["../../src/constants/DefaultClasses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgIrD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,EAa9B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE;IACjD,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,CAAC;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAsEA,CAAC"}