optolith-database-schema 0.1.4 → 0.1.7

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 (425) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/lib/config.d.ts +228 -0
  3. package/lib/config.js +224 -0
  4. package/lib/main.d.ts +16 -0
  5. package/lib/main.js +111 -1
  6. package/lib/types/Advantage.d.ts +7 -3
  7. package/lib/types/Advantage.js +2 -1
  8. package/lib/types/ArcaneBardTradition.d.ts +3 -2
  9. package/lib/types/ArcaneBardTradition.js +2 -1
  10. package/lib/types/ArcaneDancerTradition.d.ts +3 -2
  11. package/lib/types/ArcaneDancerTradition.js +2 -1
  12. package/lib/types/Aspect.d.ts +1 -0
  13. package/lib/types/Aspect.js +2 -1
  14. package/lib/types/Attribute.d.ts +2 -1
  15. package/lib/types/Attribute.js +3 -1
  16. package/lib/types/Blessing.d.ts +4 -3
  17. package/lib/types/Blessing.js +2 -1
  18. package/lib/types/Cantrip.d.ts +9 -13
  19. package/lib/types/Cantrip.js +2 -1
  20. package/lib/types/Ceremony.d.ts +9 -8
  21. package/lib/types/Ceremony.js +2 -1
  22. package/lib/types/CombatTechnique_Close.d.ts +4 -3
  23. package/lib/types/CombatTechnique_Close.js +2 -1
  24. package/lib/types/CombatTechnique_Ranged.d.ts +4 -3
  25. package/lib/types/CombatTechnique_Ranged.js +2 -1
  26. package/lib/types/Condition.d.ts +3 -2
  27. package/lib/types/Condition.js +2 -1
  28. package/lib/types/Continent.d.ts +1 -0
  29. package/lib/types/Continent.js +2 -1
  30. package/lib/types/Culture.d.ts +5 -4
  31. package/lib/types/Culture.js +2 -1
  32. package/lib/types/DerivedCharacteristic.d.ts +4 -3
  33. package/lib/types/DerivedCharacteristic.js +2 -1
  34. package/lib/types/Disadvantage.d.ts +7 -3
  35. package/lib/types/Disadvantage.js +2 -1
  36. package/lib/types/Element.d.ts +1 -0
  37. package/lib/types/Element.js +2 -1
  38. package/lib/types/ExperienceLevel.d.ts +1 -0
  39. package/lib/types/ExperienceLevel.js +2 -1
  40. package/lib/types/EyeColor.d.ts +1 -0
  41. package/lib/types/EyeColor.js +2 -1
  42. package/lib/types/FamiliarsTrick.d.ts +4 -3
  43. package/lib/types/FamiliarsTrick.js +2 -1
  44. package/lib/types/FamiliarsTrick_AnimalType.d.ts +1 -0
  45. package/lib/types/FamiliarsTrick_AnimalType.js +2 -1
  46. package/lib/types/HairColor.d.ts +1 -0
  47. package/lib/types/HairColor.js +2 -1
  48. package/lib/types/Lessons_Curriculum.d.ts +3 -2
  49. package/lib/types/Lessons_Curriculum.js +2 -1
  50. package/lib/types/Lessons_Guideline.d.ts +1 -0
  51. package/lib/types/Lessons_Guideline.js +2 -1
  52. package/lib/types/LiturgicalChant.d.ts +9 -8
  53. package/lib/types/LiturgicalChant.js +2 -1
  54. package/lib/types/Locale.d.ts +3 -2
  55. package/lib/types/Locale.js +2 -1
  56. package/lib/types/MetaCondition.d.ts +3 -2
  57. package/lib/types/MetaCondition.js +2 -1
  58. package/lib/types/PactCategory.d.ts +3 -2
  59. package/lib/types/PactCategory.js +2 -1
  60. package/lib/types/Patron.d.ts +2 -1
  61. package/lib/types/Patron.js +2 -1
  62. package/lib/types/PatronCategory.d.ts +1 -0
  63. package/lib/types/PatronCategory.js +2 -1
  64. package/lib/types/Property.d.ts +2 -1
  65. package/lib/types/Property.js +2 -1
  66. package/lib/types/Race.d.ts +4 -3
  67. package/lib/types/Race.js +2 -1
  68. package/lib/types/Region.d.ts +1 -0
  69. package/lib/types/Region.js +2 -1
  70. package/lib/types/Ritual.d.ts +9 -8
  71. package/lib/types/Ritual.js +2 -1
  72. package/lib/types/Service.d.ts +3 -2
  73. package/lib/types/Service.js +2 -1
  74. package/lib/types/SexPractice.d.ts +2 -1
  75. package/lib/types/SexPractice.js +2 -1
  76. package/lib/types/Skill.d.ts +5 -4
  77. package/lib/types/Skill.js +2 -1
  78. package/lib/types/SkillGroup.d.ts +2 -1
  79. package/lib/types/SkillGroup.js +2 -1
  80. package/lib/types/SkillModificationLevel.d.ts +1 -0
  81. package/lib/types/SkillModificationLevel.js +2 -0
  82. package/lib/types/SocialStatus.d.ts +1 -0
  83. package/lib/types/SocialStatus.js +2 -1
  84. package/lib/types/Spell.d.ts +9 -8
  85. package/lib/types/Spell.js +2 -1
  86. package/lib/types/State.d.ts +3 -2
  87. package/lib/types/State.js +2 -1
  88. package/lib/types/TargetCategory.d.ts +1 -0
  89. package/lib/types/TargetCategory.js +2 -1
  90. package/lib/types/_Activatable.d.ts +583 -15
  91. package/lib/types/_Activatable.js +44 -0
  92. package/lib/types/_ActivatableSkill.d.ts +1 -1
  93. package/lib/types/_Enhancements.d.ts +4 -4
  94. package/lib/types/_Identifier.d.ts +127 -96
  95. package/lib/types/_Identifier.js +110 -88
  96. package/lib/types/_Influence.d.ts +4 -2
  97. package/lib/types/_Prerequisite.d.ts +93 -397
  98. package/lib/types/_Prerequisite.js +1 -136
  99. package/lib/types/magicalActions/AnimistPower.d.ts +11 -5
  100. package/lib/types/magicalActions/AnimistPower.js +2 -1
  101. package/lib/types/magicalActions/AnimistPower_Tribe.d.ts +1 -0
  102. package/lib/types/magicalActions/AnimistPower_Tribe.js +2 -1
  103. package/lib/types/magicalActions/Curse.d.ts +5 -4
  104. package/lib/types/magicalActions/Curse.js +2 -1
  105. package/lib/types/magicalActions/DominationRitual.d.ts +5 -4
  106. package/lib/types/magicalActions/DominationRitual.js +2 -1
  107. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +7 -6
  108. package/lib/types/magicalActions/ElvenMagicalSong.js +2 -1
  109. package/lib/types/magicalActions/GeodeRitual.d.ts +8 -7
  110. package/lib/types/magicalActions/GeodeRitual.js +2 -1
  111. package/lib/types/magicalActions/JesterTrick.d.ts +6 -5
  112. package/lib/types/magicalActions/JesterTrick.js +2 -1
  113. package/lib/types/magicalActions/MagicalDance.d.ts +7 -6
  114. package/lib/types/magicalActions/MagicalDance.js +2 -1
  115. package/lib/types/magicalActions/MagicalMelody.d.ts +8 -7
  116. package/lib/types/magicalActions/MagicalMelody.js +2 -1
  117. package/lib/types/magicalActions/MagicalRune.d.ts +6 -5
  118. package/lib/types/magicalActions/MagicalRune.js +2 -1
  119. package/lib/types/magicalActions/ZibiljaRitual.d.ts +6 -5
  120. package/lib/types/magicalActions/ZibiljaRitual.js +2 -1
  121. package/lib/types/prerequisites/ConditionalPrerequisites.d.ts +10 -0
  122. package/lib/types/prerequisites/ConditionalPrerequisites.js +1 -0
  123. package/lib/types/prerequisites/DisplayOption.d.ts +19 -0
  124. package/lib/types/prerequisites/DisplayOption.js +1 -0
  125. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +32 -0
  126. package/lib/types/prerequisites/PrerequisiteGroups.js +1 -0
  127. package/lib/types/prerequisites/single/ActivatablePrerequisite.d.ts +95 -0
  128. package/lib/types/prerequisites/single/ActivatablePrerequisite.js +1 -0
  129. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.d.ts +28 -0
  130. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.js +1 -0
  131. package/lib/types/prerequisites/single/CommonSuggestedByRCPPrerequisite.d.ts +3 -0
  132. package/lib/types/prerequisites/single/CommonSuggestedByRCPPrerequisite.js +1 -0
  133. package/lib/types/prerequisites/single/CulturePrerequisite.d.ts +11 -0
  134. package/lib/types/prerequisites/single/CulturePrerequisite.js +1 -0
  135. package/lib/types/prerequisites/single/EnhancementPrerequisite.d.ts +36 -0
  136. package/lib/types/prerequisites/single/EnhancementPrerequisite.js +1 -0
  137. package/lib/types/prerequisites/single/InfluencePrerequisite.d.ts +18 -0
  138. package/lib/types/prerequisites/single/InfluencePrerequisite.js +1 -0
  139. package/lib/types/prerequisites/single/PactPrerequisite.d.ts +32 -0
  140. package/lib/types/prerequisites/single/PactPrerequisite.js +1 -0
  141. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.d.ts +22 -0
  142. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.js +1 -0
  143. package/lib/types/prerequisites/single/PublicationPrerequisite.d.ts +13 -0
  144. package/lib/types/prerequisites/single/PublicationPrerequisite.js +1 -0
  145. package/lib/types/prerequisites/single/RacePrerequisite.d.ts +14 -0
  146. package/lib/types/prerequisites/single/RacePrerequisite.js +1 -0
  147. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +99 -0
  148. package/lib/types/prerequisites/single/RatedPrerequisite.js +1 -0
  149. package/lib/types/prerequisites/single/RulePrerequisite.d.ts +10 -0
  150. package/lib/types/prerequisites/single/RulePrerequisite.js +1 -0
  151. package/lib/types/prerequisites/single/SexPrerequisite.d.ts +11 -0
  152. package/lib/types/prerequisites/single/SexPrerequisite.js +1 -0
  153. package/lib/types/prerequisites/single/SocialStatusPrerequisite.d.ts +16 -0
  154. package/lib/types/prerequisites/single/SocialStatusPrerequisite.js +1 -0
  155. package/lib/types/prerequisites/single/StatePrerequisite.d.ts +11 -0
  156. package/lib/types/prerequisites/single/StatePrerequisite.js +1 -0
  157. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +31 -0
  158. package/lib/types/prerequisites/single/TextPrerequisite.js +1 -0
  159. package/lib/types/prerequisites/single/TraditionPrerequisite.d.ts +33 -0
  160. package/lib/types/prerequisites/single/TraditionPrerequisite.js +1 -0
  161. package/lib/types/rule/FocusRule.d.ts +3 -2
  162. package/lib/types/rule/FocusRule.js +2 -1
  163. package/lib/types/rule/FocusRule_Subject.d.ts +1 -0
  164. package/lib/types/rule/FocusRule_Subject.js +2 -1
  165. package/lib/types/rule/OptionalRule.d.ts +3 -2
  166. package/lib/types/rule/OptionalRule.js +2 -1
  167. package/lib/types/source/Publication.d.ts +87 -0
  168. package/lib/types/source/Publication.js +2 -1
  169. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +11 -3
  170. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.js +2 -1
  171. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +7 -3
  172. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.js +2 -1
  173. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +7 -3
  174. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.js +2 -1
  175. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +7 -3
  176. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.js +2 -1
  177. package/lib/types/specialAbility/AncestorGlyph.d.ts +7 -3
  178. package/lib/types/specialAbility/AncestorGlyph.js +2 -1
  179. package/lib/types/specialAbility/BlessedTradition.d.ts +9 -5
  180. package/lib/types/specialAbility/BlessedTradition.js +2 -1
  181. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +7 -3
  182. package/lib/types/specialAbility/BrawlingSpecialAbility.js +2 -1
  183. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +7 -3
  184. package/lib/types/specialAbility/CeremonialItemSpecialAbility.js +2 -1
  185. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +11 -3
  186. package/lib/types/specialAbility/CombatSpecialAbility.js +2 -1
  187. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +7 -3
  188. package/lib/types/specialAbility/CombatStyleSpecialAbility.js +2 -1
  189. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +10 -6
  190. package/lib/types/specialAbility/CommandSpecialAbility.js +3 -2
  191. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +7 -3
  192. package/lib/types/specialAbility/FamiliarSpecialAbility.js +2 -1
  193. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +7 -3
  194. package/lib/types/specialAbility/FatePointSexSpecialAbility.js +2 -1
  195. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +7 -3
  196. package/lib/types/specialAbility/FatePointSpecialAbility.js +2 -1
  197. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +7 -3
  198. package/lib/types/specialAbility/GeneralSpecialAbility.js +2 -1
  199. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +7 -3
  200. package/lib/types/specialAbility/KarmaSpecialAbility.js +2 -1
  201. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +10 -6
  202. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.js +3 -2
  203. package/lib/types/specialAbility/LycantropicGift.d.ts +7 -3
  204. package/lib/types/specialAbility/LycantropicGift.js +2 -1
  205. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +7 -3
  206. package/lib/types/specialAbility/MagicStyleSpecialAbility.js +2 -1
  207. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +7 -3
  208. package/lib/types/specialAbility/MagicalSpecialAbility.js +2 -1
  209. package/lib/types/specialAbility/MagicalTradition.d.ts +8 -4
  210. package/lib/types/specialAbility/MagicalTradition.js +2 -1
  211. package/lib/types/specialAbility/PactGift.d.ts +9 -5
  212. package/lib/types/specialAbility/PactGift.js +2 -1
  213. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +7 -3
  214. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.js +2 -1
  215. package/lib/types/specialAbility/Sermon.d.ts +7 -3
  216. package/lib/types/specialAbility/Sermon.js +2 -1
  217. package/lib/types/specialAbility/SexSpecialAbility.d.ts +7 -3
  218. package/lib/types/specialAbility/SexSpecialAbility.js +2 -1
  219. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +7 -3
  220. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.js +2 -1
  221. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +10 -6
  222. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +3 -2
  223. package/lib/types/specialAbility/VampiricGift.d.ts +7 -3
  224. package/lib/types/specialAbility/VampiricGift.js +2 -1
  225. package/lib/types/specialAbility/Vision.d.ts +7 -3
  226. package/lib/types/specialAbility/Vision.js +2 -1
  227. package/lib/types/specialAbility/sub/Language.d.ts +5 -4
  228. package/lib/types/specialAbility/sub/Language.js +2 -1
  229. package/lib/types/specialAbility/sub/Script.d.ts +3 -2
  230. package/lib/types/specialAbility/sub/Script.js +2 -1
  231. package/lib/types/specialAbility/sub/TradeSecret.d.ts +5 -2
  232. package/lib/types/specialAbility/sub/TradeSecret.js +2 -1
  233. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +19 -3
  234. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.js +2 -1
  235. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +19 -3
  236. package/lib/types/traditionArtifacts/AttireEnchantment.js +2 -1
  237. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +19 -3
  238. package/lib/types/traditionArtifacts/BowlEnchantment.js +2 -1
  239. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +19 -3
  240. package/lib/types/traditionArtifacts/CauldronEnchantment.js +2 -1
  241. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +19 -3
  242. package/lib/types/traditionArtifacts/ChronicleEnchantment.js +2 -1
  243. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +19 -3
  244. package/lib/types/traditionArtifacts/DaggerRitual.js +2 -1
  245. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +19 -3
  246. package/lib/types/traditionArtifacts/FoolsHatEnchantment.js +2 -1
  247. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +19 -3
  248. package/lib/types/traditionArtifacts/InstrumentEnchantment.js +2 -1
  249. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +19 -3
  250. package/lib/types/traditionArtifacts/Krallenkettenzauber.js +2 -1
  251. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +19 -3
  252. package/lib/types/traditionArtifacts/OrbEnchantment.js +2 -1
  253. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +19 -3
  254. package/lib/types/traditionArtifacts/RingEnchantment.js +2 -1
  255. package/lib/types/traditionArtifacts/SickleRitual.d.ts +19 -3
  256. package/lib/types/traditionArtifacts/SickleRitual.js +2 -1
  257. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +19 -3
  258. package/lib/types/traditionArtifacts/SpellSwordEnchantment.js +2 -1
  259. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +19 -3
  260. package/lib/types/traditionArtifacts/StaffEnchantment.js +2 -1
  261. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +19 -3
  262. package/lib/types/traditionArtifacts/ToyEnchantment.js +2 -1
  263. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +19 -3
  264. package/lib/types/traditionArtifacts/Trinkhornzauber.js +2 -1
  265. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +19 -3
  266. package/lib/types/traditionArtifacts/WandEnchantment.js +2 -1
  267. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +19 -3
  268. package/lib/types/traditionArtifacts/WeaponEnchantment.js +2 -1
  269. package/lib/types/traditionArtifacts/sub/AnimalShape.d.ts +1 -0
  270. package/lib/types/traditionArtifacts/sub/AnimalShape.js +2 -1
  271. package/lib/types/traditionArtifacts/sub/AnimalShapePath.d.ts +1 -0
  272. package/lib/types/traditionArtifacts/sub/AnimalShapePath.js +2 -1
  273. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.d.ts +4 -3
  274. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.js +3 -2
  275. package/lib/types/traditionArtifacts/sub/Brew.d.ts +1 -0
  276. package/lib/types/traditionArtifacts/sub/Brew.js +2 -1
  277. package/lib/validation/schema.d.ts +10 -0
  278. package/lib/validation/schema.js +20 -0
  279. package/package.json +4 -2
  280. package/schema/Advantage.schema.json +7 -1
  281. package/schema/ArcaneBardTradition.schema.json +2 -2
  282. package/schema/ArcaneDancerTradition.schema.json +2 -2
  283. package/schema/Aspect.schema.json +1 -1
  284. package/schema/Attribute.schema.json +1 -1
  285. package/schema/Blessing.schema.json +1 -1
  286. package/schema/Cantrip.schema.json +5 -10
  287. package/schema/Ceremony.schema.json +2 -2
  288. package/schema/CombatTechnique_Close.schema.json +1 -1
  289. package/schema/CombatTechnique_Ranged.schema.json +1 -1
  290. package/schema/Condition.schema.json +1 -1
  291. package/schema/Continent.schema.json +1 -1
  292. package/schema/Culture.schema.json +1 -1
  293. package/schema/DerivedCharacteristic.schema.json +2 -2
  294. package/schema/Disadvantage.schema.json +7 -1
  295. package/schema/Element.schema.json +1 -1
  296. package/schema/ExperienceLevel.schema.json +1 -1
  297. package/schema/EyeColor.schema.json +1 -1
  298. package/schema/FamiliarsTrick.schema.json +1 -1
  299. package/schema/FamiliarsTrick_AnimalType.schema.json +1 -1
  300. package/schema/HairColor.schema.json +1 -1
  301. package/schema/Lessons_Curriculum.schema.json +1 -1
  302. package/schema/Lessons_Guideline.schema.json +1 -1
  303. package/schema/LiturgicalChant.schema.json +2 -2
  304. package/schema/Locale.schema.json +1 -1
  305. package/schema/MetaCondition.schema.json +1 -1
  306. package/schema/PactCategory.schema.json +1 -1
  307. package/schema/Patron.schema.json +1 -1
  308. package/schema/PatronCategory.schema.json +1 -1
  309. package/schema/Property.schema.json +1 -1
  310. package/schema/Race.schema.json +1 -1
  311. package/schema/Region.schema.json +1 -1
  312. package/schema/Ritual.schema.json +2 -2
  313. package/schema/Service.schema.json +1 -1
  314. package/schema/SexPractice.schema.json +1 -1
  315. package/schema/Skill.schema.json +1 -1
  316. package/schema/SkillGroup.schema.json +1 -1
  317. package/schema/SkillModificationLevel.schema.json +1 -1
  318. package/schema/SocialStatus.schema.json +1 -1
  319. package/schema/Spell.schema.json +2 -2
  320. package/schema/State.schema.json +1 -1
  321. package/schema/TargetCategory.schema.json +1 -1
  322. package/schema/_Activatable.schema.json +1002 -44
  323. package/schema/_ActivatableSkill.schema.json +1 -1
  324. package/schema/_CommonnessRatedAdvantageDisadvantage.schema.json +1 -1
  325. package/schema/_Enhancements.schema.json +2 -2
  326. package/schema/_I18n.schema.json +1 -1
  327. package/schema/_Identifier.schema.json +326 -189
  328. package/schema/_ImprovementCost.schema.json +1 -1
  329. package/schema/_Influence.schema.json +5 -1
  330. package/schema/_Prerequisite.schema.json +888 -676
  331. package/schema/_Sex.schema.json +1 -1
  332. package/schema/_SkillCheck.schema.json +1 -1
  333. package/schema/magicalActions/AnimistPower.schema.json +5 -1
  334. package/schema/magicalActions/AnimistPower_Tribe.schema.json +1 -1
  335. package/schema/magicalActions/Curse.schema.json +1 -1
  336. package/schema/magicalActions/DominationRitual.schema.json +1 -1
  337. package/schema/magicalActions/ElvenMagicalSong.schema.json +1 -1
  338. package/schema/magicalActions/GeodeRitual.schema.json +2 -2
  339. package/schema/magicalActions/JesterTrick.schema.json +1 -1
  340. package/schema/magicalActions/MagicalDance.schema.json +1 -1
  341. package/schema/magicalActions/MagicalMelody.schema.json +1 -1
  342. package/schema/magicalActions/MagicalRune.schema.json +1 -1
  343. package/schema/magicalActions/ZibiljaRitual.schema.json +1 -1
  344. package/schema/magicalActions/_MusicTradition.schema.json +1 -1
  345. package/schema/magicalActions/_SkillReference.schema.json +1 -1
  346. package/schema/prerequisites/ConditionalPrerequisites.schema.json +15 -0
  347. package/schema/prerequisites/DisplayOption.schema.json +48 -0
  348. package/schema/prerequisites/PrerequisiteGroups.schema.json +246 -0
  349. package/schema/prerequisites/single/ActivatablePrerequisite.schema.json +142 -0
  350. package/schema/prerequisites/single/AnimistPowerPrerequisite.schema.json +40 -0
  351. package/schema/prerequisites/single/CommonSuggestedByRCPPrerequisite.schema.json +18 -0
  352. package/schema/prerequisites/single/CulturePrerequisite.schema.json +27 -0
  353. package/schema/prerequisites/single/EnhancementPrerequisite.schema.json +54 -0
  354. package/schema/prerequisites/single/InfluencePrerequisite.schema.json +33 -0
  355. package/schema/prerequisites/single/PactPrerequisite.schema.json +46 -0
  356. package/schema/prerequisites/single/PrimaryAttributePrerequisite.schema.json +58 -0
  357. package/schema/prerequisites/single/PublicationPrerequisite.schema.json +27 -0
  358. package/schema/prerequisites/single/RacePrerequisite.schema.json +31 -0
  359. package/schema/prerequisites/single/RatedPrerequisite.schema.json +184 -0
  360. package/schema/prerequisites/single/RulePrerequisite.schema.json +26 -0
  361. package/schema/prerequisites/single/SexPrerequisite.schema.json +27 -0
  362. package/schema/prerequisites/single/SocialStatusPrerequisite.schema.json +30 -0
  363. package/schema/prerequisites/single/StatePrerequisite.schema.json +27 -0
  364. package/schema/prerequisites/single/TextPrerequisite.schema.json +63 -0
  365. package/schema/prerequisites/single/TraditionPrerequisite.schema.json +96 -0
  366. package/schema/rule/FocusRule.schema.json +1 -1
  367. package/schema/rule/FocusRule_Subject.schema.json +1 -1
  368. package/schema/rule/OptionalRule.schema.json +1 -1
  369. package/schema/source/Publication.schema.json +2 -2
  370. package/schema/source/_Erratum.schema.json +1 -1
  371. package/schema/source/_PublicationRef.schema.json +1 -1
  372. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +10 -1
  373. package/schema/specialAbility/AdvancedKarmaSpecialAbility.schema.json +7 -1
  374. package/schema/specialAbility/AdvancedMagicalSpecialAbility.schema.json +7 -1
  375. package/schema/specialAbility/AdvancedSkillSpecialAbility.schema.json +7 -1
  376. package/schema/specialAbility/AncestorGlyph.schema.json +7 -1
  377. package/schema/specialAbility/BlessedTradition.schema.json +8 -2
  378. package/schema/specialAbility/BrawlingSpecialAbility.schema.json +7 -1
  379. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +7 -1
  380. package/schema/specialAbility/CombatSpecialAbility.schema.json +10 -1
  381. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +7 -1
  382. package/schema/specialAbility/CommandSpecialAbility.schema.json +10 -4
  383. package/schema/specialAbility/FamiliarSpecialAbility.schema.json +7 -1
  384. package/schema/specialAbility/FatePointSexSpecialAbility.schema.json +7 -1
  385. package/schema/specialAbility/FatePointSpecialAbility.schema.json +7 -1
  386. package/schema/specialAbility/GeneralSpecialAbility.schema.json +7 -1
  387. package/schema/specialAbility/KarmaSpecialAbility.schema.json +7 -1
  388. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +10 -4
  389. package/schema/specialAbility/LycantropicGift.schema.json +7 -1
  390. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +7 -1
  391. package/schema/specialAbility/MagicalSpecialAbility.schema.json +7 -1
  392. package/schema/specialAbility/MagicalTradition.schema.json +7 -1
  393. package/schema/specialAbility/PactGift.schema.json +8 -2
  394. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +7 -1
  395. package/schema/specialAbility/Sermon.schema.json +7 -1
  396. package/schema/specialAbility/SexSpecialAbility.schema.json +7 -1
  397. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +7 -1
  398. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +10 -4
  399. package/schema/specialAbility/VampiricGift.schema.json +7 -1
  400. package/schema/specialAbility/Vision.schema.json +7 -1
  401. package/schema/specialAbility/sub/Language.schema.json +2 -2
  402. package/schema/specialAbility/sub/Script.schema.json +1 -1
  403. package/schema/specialAbility/sub/TradeSecret.schema.json +4 -1
  404. package/schema/traditionArtifacts/ArcaneOrbEnchantment.schema.json +18 -2
  405. package/schema/traditionArtifacts/AttireEnchantment.schema.json +18 -2
  406. package/schema/traditionArtifacts/BowlEnchantment.schema.json +18 -2
  407. package/schema/traditionArtifacts/CauldronEnchantment.schema.json +18 -2
  408. package/schema/traditionArtifacts/ChronicleEnchantment.schema.json +18 -2
  409. package/schema/traditionArtifacts/DaggerRitual.schema.json +18 -2
  410. package/schema/traditionArtifacts/FoolsHatEnchantment.schema.json +18 -2
  411. package/schema/traditionArtifacts/InstrumentEnchantment.schema.json +18 -2
  412. package/schema/traditionArtifacts/Krallenkettenzauber.schema.json +18 -2
  413. package/schema/traditionArtifacts/OrbEnchantment.schema.json +18 -2
  414. package/schema/traditionArtifacts/RingEnchantment.schema.json +18 -2
  415. package/schema/traditionArtifacts/SickleRitual.schema.json +18 -2
  416. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +18 -2
  417. package/schema/traditionArtifacts/StaffEnchantment.schema.json +18 -2
  418. package/schema/traditionArtifacts/ToyEnchantment.schema.json +18 -2
  419. package/schema/traditionArtifacts/Trinkhornzauber.schema.json +18 -2
  420. package/schema/traditionArtifacts/WandEnchantment.schema.json +18 -2
  421. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +18 -2
  422. package/schema/traditionArtifacts/sub/AnimalShape.schema.json +1 -1
  423. package/schema/traditionArtifacts/sub/AnimalShapePath.schema.json +1 -1
  424. package/schema/traditionArtifacts/sub/AnimalShapeSize.schema.json +4 -4
  425. package/schema/traditionArtifacts/sub/Brew.schema.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,38 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.1.7](https://github.com/elyukai/optolith-database-schema/compare/v0.1.6...v0.1.7) (2022-03-16)
6
+
7
+
8
+ ### Features
9
+
10
+ * add basic validation utilities ([5676d39](https://github.com/elyukai/optolith-database-schema/commit/5676d39a3285901b750314832d7978692b1d26de))
11
+ * add validation by schema for all types ([b3578ef](https://github.com/elyukai/optolith-database-schema/commit/b3578ef7914db35dbdfda87e1ccf95d37f61e9d7))
12
+ * read magical actions ([543ef8e](https://github.com/elyukai/optolith-database-schema/commit/543ef8ee3567d4ec946f1be2492056d74de54976))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * add extension to all relative module specifiers ([1a0b029](https://github.com/elyukai/optolith-database-schema/commit/1a0b029de43ce2026d9134b0f6dd3ee1f106afa2))
18
+ * relative links to top-level schema documents ([065efab](https://github.com/elyukai/optolith-database-schema/commit/065efab03a5b4547a9bdc2c1fcf4a3ad010d858e))
19
+
20
+ ### [0.1.6](https://github.com/elyukai/optolith-database-schema/compare/v0.1.5...v0.1.6) (2022-03-11)
21
+
22
+ ### [0.1.5](https://github.com/elyukai/optolith-database-schema/compare/v0.1.4...v0.1.5) (2022-03-10)
23
+
24
+
25
+ ### Features
26
+
27
+ * prerequisites ([148ffd4](https://github.com/elyukai/optolith-database-schema/commit/148ffd47a70b9fb3a1bad540de8b89319a4f8c7d))
28
+ * select options for activatable entries ([9af975b](https://github.com/elyukai/optolith-database-schema/commit/9af975bcd1425f2a252ea41930233c3531376615))
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * exported name of select options ([5ecef02](https://github.com/elyukai/optolith-database-schema/commit/5ecef02d0178c7252f3b4a11d5ca0373908d6b87))
34
+ * keep deprecated penalty translation strings ([e4a8d91](https://github.com/elyukai/optolith-database-schema/commit/e4a8d910dd561255d21801616b2c44fcdd28a30f))
35
+ * keep deprecated translation strings for tradition artifact enchantments ([351146e](https://github.com/elyukai/optolith-database-schema/commit/351146ef87691d645a74d8f538d060095b8f7ac5))
36
+
5
37
  ### [0.1.4](https://github.com/elyukai/optolith-database-schema/compare/v0.1.3...v0.1.4) (2022-03-09)
6
38
 
7
39
 
@@ -0,0 +1,228 @@
1
+ import { Advantage } from "./types/Advantage.js";
2
+ import { ArcaneBardTradition } from "./types/ArcaneBardTradition.js";
3
+ import { ArcaneDancerTradition } from "./types/ArcaneDancerTradition.js";
4
+ import { Aspect } from "./types/Aspect.js";
5
+ import { Attribute } from "./types/Attribute.js";
6
+ import { Blessing } from "./types/Blessing.js";
7
+ import { Cantrip } from "./types/Cantrip.js";
8
+ import { Ceremony } from "./types/Ceremony.js";
9
+ import { CloseCombatTechnique } from "./types/CombatTechnique_Close.js";
10
+ import { RangedCombatTechnique } from "./types/CombatTechnique_Ranged.js";
11
+ import { Condition } from "./types/Condition.js";
12
+ import { Continent } from "./types/Continent.js";
13
+ import { Culture } from "./types/Culture.js";
14
+ import { DerivedCharacteristic } from "./types/DerivedCharacteristic.js";
15
+ import { Disadvantage } from "./types/Disadvantage.js";
16
+ import { Element } from "./types/Element.js";
17
+ import { ExperienceLevel } from "./types/ExperienceLevel.js";
18
+ import { EyeColor } from "./types/EyeColor.js";
19
+ import { FamiliarsTrick } from "./types/FamiliarsTrick.js";
20
+ import { AnimalType } from "./types/FamiliarsTrick_AnimalType.js";
21
+ import { HairColor } from "./types/HairColor.js";
22
+ import { Curriculum } from "./types/Lessons_Curriculum.js";
23
+ import { Guideline } from "./types/Lessons_Guideline.js";
24
+ import { LiturgicalChant } from "./types/LiturgicalChant.js";
25
+ import { Locales } from "./types/Locale.js";
26
+ import { AnimistPower } from "./types/magicalActions/AnimistPower.js";
27
+ import { Tribe } from "./types/magicalActions/AnimistPower_Tribe.js";
28
+ import { Curse } from "./types/magicalActions/Curse.js";
29
+ import { DominationRitual } from "./types/magicalActions/DominationRitual.js";
30
+ import { ElvenMagicalSong } from "./types/magicalActions/ElvenMagicalSong.js";
31
+ import { GeodeRitual } from "./types/magicalActions/GeodeRitual.js";
32
+ import { JesterTrick } from "./types/magicalActions/JesterTrick.js";
33
+ import { MagicalDance } from "./types/magicalActions/MagicalDance.js";
34
+ import { MagicalMelody } from "./types/magicalActions/MagicalMelody.js";
35
+ import { MagicalRune } from "./types/magicalActions/MagicalRune.js";
36
+ import { ZibiljaRitual } from "./types/magicalActions/ZibiljaRitual.js";
37
+ import { MetaCondition } from "./types/MetaCondition.js";
38
+ import { PactCategory } from "./types/PactCategory.js";
39
+ import { Patron } from "./types/Patron.js";
40
+ import { PatronCategory } from "./types/PatronCategory.js";
41
+ import { Property } from "./types/Property.js";
42
+ import { Race } from "./types/Race.js";
43
+ import { Region } from "./types/Region.js";
44
+ import { Ritual } from "./types/Ritual.js";
45
+ import { FocusRule } from "./types/rule/FocusRule.js";
46
+ import { Subject } from "./types/rule/FocusRule_Subject.js";
47
+ import { OptionalRule } from "./types/rule/OptionalRule.js";
48
+ import { Service } from "./types/Service.js";
49
+ import { SexPractice } from "./types/SexPractice.js";
50
+ import { Skill } from "./types/Skill.js";
51
+ import { SkillGroup } from "./types/SkillGroup.js";
52
+ import { SkillModificationLevel } from "./types/SkillModificationLevel.js";
53
+ import { SocialStatus } from "./types/SocialStatus.js";
54
+ import { Publication } from "./types/source/Publication.js";
55
+ import { AdvancedCombatSpecialAbility } from "./types/specialAbility/AdvancedCombatSpecialAbility.js";
56
+ import { AdvancedKarmaSpecialAbility } from "./types/specialAbility/AdvancedKarmaSpecialAbility.js";
57
+ import { AdvancedMagicalSpecialAbility } from "./types/specialAbility/AdvancedMagicalSpecialAbility.js";
58
+ import { AdvancedSkillSpecialAbility } from "./types/specialAbility/AdvancedSkillSpecialAbility.js";
59
+ import { AncestorGlyph } from "./types/specialAbility/AncestorGlyph.js";
60
+ import { BlessedTradition } from "./types/specialAbility/BlessedTradition.js";
61
+ import { BrawlingSpecialAbility } from "./types/specialAbility/BrawlingSpecialAbility.js";
62
+ import { CeremonialItemSpecialAbility } from "./types/specialAbility/CeremonialItemSpecialAbility.js";
63
+ import { CombatSpecialAbility } from "./types/specialAbility/CombatSpecialAbility.js";
64
+ import { CombatStyleSpecialAbility } from "./types/specialAbility/CombatStyleSpecialAbility.js";
65
+ import { CommandSpecialAbility } from "./types/specialAbility/CommandSpecialAbility.js";
66
+ import { FamiliarSpecialAbility } from "./types/specialAbility/FamiliarSpecialAbility.js";
67
+ import { FatePointSexSpecialAbility } from "./types/specialAbility/FatePointSexSpecialAbility.js";
68
+ import { FatePointSpecialAbility } from "./types/specialAbility/FatePointSpecialAbility.js";
69
+ import { GeneralSpecialAbility } from "./types/specialAbility/GeneralSpecialAbility.js";
70
+ import { KarmaSpecialAbility } from "./types/specialAbility/KarmaSpecialAbility.js";
71
+ import { LiturgicalStyleSpecialAbility } from "./types/specialAbility/LiturgicalStyleSpecialAbility.js";
72
+ import { LycantropicGift } from "./types/specialAbility/LycantropicGift.js";
73
+ import { MagicalSpecialAbility } from "./types/specialAbility/MagicalSpecialAbility.js";
74
+ import { MagicalTradition } from "./types/specialAbility/MagicalTradition.js";
75
+ import { MagicStyleSpecialAbility } from "./types/specialAbility/MagicStyleSpecialAbility.js";
76
+ import { PactGift } from "./types/specialAbility/PactGift.js";
77
+ import { ProtectiveWardingCircleSpecialAbility } from "./types/specialAbility/ProtectiveWardingCircleSpecialAbility.js";
78
+ import { Sermon } from "./types/specialAbility/Sermon.js";
79
+ import { SexSpecialAbility } from "./types/specialAbility/SexSpecialAbility.js";
80
+ import { SikaryanDrainSpecialAbility } from "./types/specialAbility/SikaryanDrainSpecialAbility.js";
81
+ import { SkillStyleSpecialAbility } from "./types/specialAbility/SkillStyleSpecialAbility.js";
82
+ import { Language } from "./types/specialAbility/sub/Language.js";
83
+ import { Script } from "./types/specialAbility/sub/Script.js";
84
+ import { TradeSecret } from "./types/specialAbility/sub/TradeSecret.js";
85
+ import { VampiricGift } from "./types/specialAbility/VampiricGift.js";
86
+ import { Vision } from "./types/specialAbility/Vision.js";
87
+ import { Spell } from "./types/Spell.js";
88
+ import { State } from "./types/State.js";
89
+ import { TargetCategory } from "./types/TargetCategory.js";
90
+ import { ArcaneOrbEnchantment } from "./types/traditionArtifacts/ArcaneOrbEnchantment.js";
91
+ import { AttireEnchantment } from "./types/traditionArtifacts/AttireEnchantment.js";
92
+ import { BowlEnchantment } from "./types/traditionArtifacts/BowlEnchantment.js";
93
+ import { CauldronEnchantment } from "./types/traditionArtifacts/CauldronEnchantment.js";
94
+ import { ChronicleEnchantment } from "./types/traditionArtifacts/ChronicleEnchantment.js";
95
+ import { DaggerRitual } from "./types/traditionArtifacts/DaggerRitual.js";
96
+ import { FoolsHatEnchantment } from "./types/traditionArtifacts/FoolsHatEnchantment.js";
97
+ import { InstrumentEnchantment } from "./types/traditionArtifacts/InstrumentEnchantment.js";
98
+ import { Krallenkettenzauber } from "./types/traditionArtifacts/Krallenkettenzauber.js";
99
+ import { OrbEnchantment } from "./types/traditionArtifacts/OrbEnchantment.js";
100
+ import { RingEnchantment } from "./types/traditionArtifacts/RingEnchantment.js";
101
+ import { SickleRitual } from "./types/traditionArtifacts/SickleRitual.js";
102
+ import { SpellSwordEnchantment } from "./types/traditionArtifacts/SpellSwordEnchantment.js";
103
+ import { StaffEnchantment } from "./types/traditionArtifacts/StaffEnchantment.js";
104
+ import { AnimalShape } from "./types/traditionArtifacts/sub/AnimalShape.js";
105
+ import { AnimalShapePath } from "./types/traditionArtifacts/sub/AnimalShapePath.js";
106
+ import { AnimalShapeSize } from "./types/traditionArtifacts/sub/AnimalShapeSize.js";
107
+ import { Brew } from "./types/traditionArtifacts/sub/Brew.js";
108
+ import { ToyEnchantment } from "./types/traditionArtifacts/ToyEnchantment.js";
109
+ import { Trinkhornzauber } from "./types/traditionArtifacts/Trinkhornzauber.js";
110
+ import { WandEnchantment } from "./types/traditionArtifacts/WandEnchantment.js";
111
+ import { WeaponEnchantment } from "./types/traditionArtifacts/WeaponEnchantment.js";
112
+ import { TypeValidator } from "./validation/schema.js";
113
+ export declare type TypeMap = {
114
+ advancedCombatSpecialAbilities: AdvancedCombatSpecialAbility;
115
+ advancedKarmaSpecialAbilities: AdvancedKarmaSpecialAbility;
116
+ advancedMagicalSpecialAbilities: AdvancedMagicalSpecialAbility;
117
+ advancedSkillSpecialAbilities: AdvancedSkillSpecialAbility;
118
+ advantages: Advantage;
119
+ ancestorGlyphs: AncestorGlyph;
120
+ animalShapePaths: AnimalShapePath;
121
+ animalShapes: AnimalShape;
122
+ animalShapeSizes: AnimalShapeSize;
123
+ animistPowers: AnimistPower;
124
+ animistPowerTribes: Tribe;
125
+ arcaneBardTraditions: ArcaneBardTradition;
126
+ arcaneDancerTraditions: ArcaneDancerTradition;
127
+ arcaneOrbEnchantments: ArcaneOrbEnchantment;
128
+ aspects: Aspect;
129
+ attireEnchantments: AttireEnchantment;
130
+ attributes: Attribute;
131
+ blessedTraditions: BlessedTradition;
132
+ blessings: Blessing;
133
+ bowlEnchantments: BowlEnchantment;
134
+ brawlingSpecialAbilities: BrawlingSpecialAbility;
135
+ brews: Brew;
136
+ cantrips: Cantrip;
137
+ cauldronEnchantments: CauldronEnchantment;
138
+ ceremonialItemSpecialAbilities: CeremonialItemSpecialAbility;
139
+ ceremonies: Ceremony;
140
+ chronicleEnchantments: ChronicleEnchantment;
141
+ closeCombatTechniques: CloseCombatTechnique;
142
+ combatSpecialAbilities: CombatSpecialAbility;
143
+ combatStyleSpecialAbilities: CombatStyleSpecialAbility;
144
+ commandSpecialAbilities: CommandSpecialAbility;
145
+ conditions: Condition;
146
+ continents: Continent;
147
+ cultures: Culture;
148
+ curses: Curse;
149
+ daggerRituals: DaggerRitual;
150
+ derivedCharacteristics: DerivedCharacteristic;
151
+ disadvantages: Disadvantage;
152
+ dominationRituals: DominationRitual;
153
+ elements: Element;
154
+ elvenMagicalSongs: ElvenMagicalSong;
155
+ experienceLevels: ExperienceLevel;
156
+ eyeColors: EyeColor;
157
+ familiarSpecialAbilities: FamiliarSpecialAbility;
158
+ familiarsTrickAnimalTypes: AnimalType;
159
+ familiarsTricks: FamiliarsTrick;
160
+ fatePointSexSpecialAbilities: FatePointSexSpecialAbility;
161
+ fatePointSpecialAbilities: FatePointSpecialAbility;
162
+ focusRules: FocusRule;
163
+ focusRuleSubjects: Subject;
164
+ foolsHatEnchantments: FoolsHatEnchantment;
165
+ generalSpecialAbilities: GeneralSpecialAbility;
166
+ geodeRituals: GeodeRitual;
167
+ hairColors: HairColor;
168
+ instrumentEnchantments: InstrumentEnchantment;
169
+ jesterTricks: JesterTrick;
170
+ karmaSpecialAbilities: KarmaSpecialAbility;
171
+ krallenkettenzauber: Krallenkettenzauber;
172
+ languages: Language;
173
+ lessonsCurricula: Curriculum;
174
+ lessonsGuidelines: Guideline;
175
+ liturgicalChants: LiturgicalChant;
176
+ liturgicalStyleSpecialAbilities: LiturgicalStyleSpecialAbility;
177
+ locales: Locales;
178
+ lycantropicGifts: LycantropicGift;
179
+ magicalDances: MagicalDance;
180
+ magicalMelodies: MagicalMelody;
181
+ magicalRunes: MagicalRune;
182
+ magicalSpecialAbilities: MagicalSpecialAbility;
183
+ magicalTraditions: MagicalTradition;
184
+ magicStyleSpecialAbilities: MagicStyleSpecialAbility;
185
+ metaConditions: MetaCondition;
186
+ optionalRules: OptionalRule;
187
+ orbEnchantments: OrbEnchantment;
188
+ pactCategories: PactCategory;
189
+ pactGifts: PactGift;
190
+ patronCategories: PatronCategory;
191
+ patrons: Patron;
192
+ properties: Property;
193
+ protectiveWardingCircleSpecialAbilities: ProtectiveWardingCircleSpecialAbility;
194
+ publications: Publication;
195
+ races: Race;
196
+ rangedCombatTechniques: RangedCombatTechnique;
197
+ regions: Region;
198
+ ringEnchantments: RingEnchantment;
199
+ rituals: Ritual;
200
+ scripts: Script;
201
+ sermons: Sermon;
202
+ services: Service;
203
+ sexPractices: SexPractice;
204
+ sexSpecialAbilities: SexSpecialAbility;
205
+ sickleRituals: SickleRitual;
206
+ sikaryanDrainSpecialAbilities: SikaryanDrainSpecialAbility;
207
+ skillGroups: SkillGroup;
208
+ skillModificationLevels: SkillModificationLevel;
209
+ skills: Skill;
210
+ skillStyleSpecialAbilities: SkillStyleSpecialAbility;
211
+ socialStatuses: SocialStatus;
212
+ spells: Spell;
213
+ spellSwordEnchantments: SpellSwordEnchantment;
214
+ staffEnchantments: StaffEnchantment;
215
+ states: State;
216
+ targetCategories: TargetCategory;
217
+ toyEnchantments: ToyEnchantment;
218
+ tradeSecrets: TradeSecret;
219
+ trinkhornzauber: Trinkhornzauber;
220
+ vampiricGifts: VampiricGift;
221
+ visions: Vision;
222
+ wandEnchantments: WandEnchantment;
223
+ weaponEnchantments: WeaponEnchantment;
224
+ zibiljaRituals: ZibiljaRitual;
225
+ };
226
+ export declare const typeValidatorMap: {
227
+ [K in keyof TypeMap]: TypeValidator<TypeMap[K]>;
228
+ };
package/lib/config.js ADDED
@@ -0,0 +1,224 @@
1
+ import { validateSchema as validateAdvantageSchema } from "./types/Advantage.js";
2
+ import { validateSchema as validateArcaneBardTraditionSchema } from "./types/ArcaneBardTradition.js";
3
+ import { validateSchema as validateArcaneDancerTraditionSchema } from "./types/ArcaneDancerTradition.js";
4
+ import { validateSchema as validateAspectSchema } from "./types/Aspect.js";
5
+ import { validateSchema as validateAttributeSchema } from "./types/Attribute.js";
6
+ import { validateSchema as validateBlessingSchema } from "./types/Blessing.js";
7
+ import { validateSchema as validateCantripSchema } from "./types/Cantrip.js";
8
+ import { validateSchema as validateCeremonySchema } from "./types/Ceremony.js";
9
+ import { validateSchema as validateCloseCombatTechniqueSchema } from "./types/CombatTechnique_Close.js";
10
+ import { validateSchema as validateRangedCombatTechniqueSchema } from "./types/CombatTechnique_Ranged.js";
11
+ import { validateSchema as validateConditionSchema } from "./types/Condition.js";
12
+ import { validateSchema as validateContinentSchema } from "./types/Continent.js";
13
+ import { validateSchema as validateCultureSchema } from "./types/Culture.js";
14
+ import { validateSchema as validateDerivedCharacteristicSchema } from "./types/DerivedCharacteristic.js";
15
+ import { validateSchema as validateDisadvantageSchema } from "./types/Disadvantage.js";
16
+ import { validateSchema as validateElementSchema } from "./types/Element.js";
17
+ import { validateSchema as validateExperienceLevelSchema } from "./types/ExperienceLevel.js";
18
+ import { validateSchema as validateEyeColorSchema } from "./types/EyeColor.js";
19
+ import { validateSchema as validateFamiliarsTrickSchema } from "./types/FamiliarsTrick.js";
20
+ import { validateSchema as validateAnimalTypeSchema } from "./types/FamiliarsTrick_AnimalType.js";
21
+ import { validateSchema as validateHairColorSchema } from "./types/HairColor.js";
22
+ import { validateSchema as validateCurriculumSchema } from "./types/Lessons_Curriculum.js";
23
+ import { validateSchema as validateGuidelineSchema } from "./types/Lessons_Guideline.js";
24
+ import { validateSchema as validateLiturgicalChantSchema } from "./types/LiturgicalChant.js";
25
+ import { validateSchema as validateLocaleSchema } from "./types/Locale.js";
26
+ import { validateSchema as validateAnimistPowerSchema } from "./types/magicalActions/AnimistPower.js";
27
+ import { validateSchema as validateTribeSchema } from "./types/magicalActions/AnimistPower_Tribe.js";
28
+ import { validateSchema as validateCurseSchema } from "./types/magicalActions/Curse.js";
29
+ import { validateSchema as validateDominationRitualSchema } from "./types/magicalActions/DominationRitual.js";
30
+ import { validateSchema as validateElvenMagicalSongSchema } from "./types/magicalActions/ElvenMagicalSong.js";
31
+ import { validateSchema as validateGeodeRitualSchema } from "./types/magicalActions/GeodeRitual.js";
32
+ import { validateSchema as validateJesterTrickSchema } from "./types/magicalActions/JesterTrick.js";
33
+ import { validateSchema as validateMagicalDanceSchema } from "./types/magicalActions/MagicalDance.js";
34
+ import { validateSchema as validateMagicalMelodySchema } from "./types/magicalActions/MagicalMelody.js";
35
+ import { validateSchema as validateMagicalRuneSchema } from "./types/magicalActions/MagicalRune.js";
36
+ import { validateSchema as validateZibiljaRitualSchema } from "./types/magicalActions/ZibiljaRitual.js";
37
+ import { validateSchema as validateMetaConditionSchema } from "./types/MetaCondition.js";
38
+ import { validateSchema as validatePactCategorySchema } from "./types/PactCategory.js";
39
+ import { validateSchema as validatePatronSchema } from "./types/Patron.js";
40
+ import { validateSchema as validatePatronCategorySchema } from "./types/PatronCategory.js";
41
+ import { validateSchema as validatePropertySchema } from "./types/Property.js";
42
+ import { validateSchema as validateRaceSchema } from "./types/Race.js";
43
+ import { validateSchema as validateRegionSchema } from "./types/Region.js";
44
+ import { validateSchema as validateRitualSchema } from "./types/Ritual.js";
45
+ import { validateSchema as validateFocusRuleSchema } from "./types/rule/FocusRule.js";
46
+ import { validateSchema as validateSubjectSchema } from "./types/rule/FocusRule_Subject.js";
47
+ import { validateSchema as validateOptionalRuleSchema } from "./types/rule/OptionalRule.js";
48
+ import { validateSchema as validateServiceSchema } from "./types/Service.js";
49
+ import { validateSchema as validateSexPracticeSchema } from "./types/SexPractice.js";
50
+ import { validateSchema as validateSkillSchema } from "./types/Skill.js";
51
+ import { validateSchema as validateSkillGroupSchema } from "./types/SkillGroup.js";
52
+ import { validateSchema as validateSkillModificationLevelSchema } from "./types/SkillModificationLevel.js";
53
+ import { validateSchema as validateSocialStatusSchema } from "./types/SocialStatus.js";
54
+ import { validateSchema as validatePublicationSchema } from "./types/source/Publication.js";
55
+ import { validateSchema as validateAdvancedCombatSpecialAbilitySchema } from "./types/specialAbility/AdvancedCombatSpecialAbility.js";
56
+ import { validateSchema as validateAdvancedKarmaSpecialAbilitySchema } from "./types/specialAbility/AdvancedKarmaSpecialAbility.js";
57
+ import { validateSchema as validateAdvancedMagicalSpecialAbilitySchema } from "./types/specialAbility/AdvancedMagicalSpecialAbility.js";
58
+ import { validateSchema as validateAdvancedSkillSpecialAbilitySchema } from "./types/specialAbility/AdvancedSkillSpecialAbility.js";
59
+ import { validateSchema as validateAncestorGlyphSchema } from "./types/specialAbility/AncestorGlyph.js";
60
+ import { validateSchema as validateBlessedTraditionSchema } from "./types/specialAbility/BlessedTradition.js";
61
+ import { validateSchema as validateBrawlingSpecialAbilitySchema } from "./types/specialAbility/BrawlingSpecialAbility.js";
62
+ import { validateSchema as validateCeremonialItemSpecialAbilitySchema } from "./types/specialAbility/CeremonialItemSpecialAbility.js";
63
+ import { validateSchema as validateCombatSpecialAbilitySchema } from "./types/specialAbility/CombatSpecialAbility.js";
64
+ import { validateSchema as validateCombatStyleSpecialAbilitySchema } from "./types/specialAbility/CombatStyleSpecialAbility.js";
65
+ import { validateSchema as validateCommandSpecialAbilitySchema } from "./types/specialAbility/CommandSpecialAbility.js";
66
+ import { validateSchema as validateFamiliarSpecialAbilitySchema } from "./types/specialAbility/FamiliarSpecialAbility.js";
67
+ import { validateSchema as validateFatePointSexSpecialAbilitySchema } from "./types/specialAbility/FatePointSexSpecialAbility.js";
68
+ import { validateSchema as validateFatePointSpecialAbilitySchema } from "./types/specialAbility/FatePointSpecialAbility.js";
69
+ import { validateSchema as validateGeneralSpecialAbilitySchema } from "./types/specialAbility/GeneralSpecialAbility.js";
70
+ import { validateSchema as validateKarmaSpecialAbilitySchema } from "./types/specialAbility/KarmaSpecialAbility.js";
71
+ import { validateSchema as validateLiturgicalStyleSpecialAbilitySchema } from "./types/specialAbility/LiturgicalStyleSpecialAbility.js";
72
+ import { validateSchema as validateLycantropicGiftSchema } from "./types/specialAbility/LycantropicGift.js";
73
+ import { validateSchema as validateMagicalSpecialAbilitySchema } from "./types/specialAbility/MagicalSpecialAbility.js";
74
+ import { validateSchema as validateMagicalTraditionSchema } from "./types/specialAbility/MagicalTradition.js";
75
+ import { validateSchema as validateMagicStyleSpecialAbilitySchema } from "./types/specialAbility/MagicStyleSpecialAbility.js";
76
+ import { validateSchema as validatePactGiftSchema } from "./types/specialAbility/PactGift.js";
77
+ import { validateSchema as validateProtectiveWardingCircleSpecialAbilitySchema } from "./types/specialAbility/ProtectiveWardingCircleSpecialAbility.js";
78
+ import { validateSchema as validateSermonSchema } from "./types/specialAbility/Sermon.js";
79
+ import { validateSchema as validateSexSpecialAbilitySchema } from "./types/specialAbility/SexSpecialAbility.js";
80
+ import { validateSchema as validateSikaryanDrainSpecialAbilitySchema } from "./types/specialAbility/SikaryanDrainSpecialAbility.js";
81
+ import { validateSchema as validateSkillStyleSpecialAbilitySchema } from "./types/specialAbility/SkillStyleSpecialAbility.js";
82
+ import { validateSchema as validateLanguageSchema } from "./types/specialAbility/sub/Language.js";
83
+ import { validateSchema as validateScriptSchema } from "./types/specialAbility/sub/Script.js";
84
+ import { validateSchema as validateTradeSecretSchema } from "./types/specialAbility/sub/TradeSecret.js";
85
+ import { validateSchema as validateVampiricGiftSchema } from "./types/specialAbility/VampiricGift.js";
86
+ import { validateSchema as validateVisionSchema } from "./types/specialAbility/Vision.js";
87
+ import { validateSchema as validateSpellSchema } from "./types/Spell.js";
88
+ import { validateSchema as validateStateSchema } from "./types/State.js";
89
+ import { validateSchema as validateTargetCategorySchema } from "./types/TargetCategory.js";
90
+ import { validateSchema as validateArcaneOrbEnchantmentSchema } from "./types/traditionArtifacts/ArcaneOrbEnchantment.js";
91
+ import { validateSchema as validateAttireEnchantmentSchema } from "./types/traditionArtifacts/AttireEnchantment.js";
92
+ import { validateSchema as validateBowlEnchantmentSchema } from "./types/traditionArtifacts/BowlEnchantment.js";
93
+ import { validateSchema as validateCauldronEnchantmentSchema } from "./types/traditionArtifacts/CauldronEnchantment.js";
94
+ import { validateSchema as validateChronicleEnchantmentSchema } from "./types/traditionArtifacts/ChronicleEnchantment.js";
95
+ import { validateSchema as validateDaggerRitualSchema } from "./types/traditionArtifacts/DaggerRitual.js";
96
+ import { validateSchema as validateFoolsHatEnchantmentSchema } from "./types/traditionArtifacts/FoolsHatEnchantment.js";
97
+ import { validateSchema as validateInstrumentEnchantmentSchema } from "./types/traditionArtifacts/InstrumentEnchantment.js";
98
+ import { validateSchema as validateKrallenkettenzauberSchema } from "./types/traditionArtifacts/Krallenkettenzauber.js";
99
+ import { validateSchema as validateOrbEnchantmentSchema } from "./types/traditionArtifacts/OrbEnchantment.js";
100
+ import { validateSchema as validateRingEnchantmentSchema } from "./types/traditionArtifacts/RingEnchantment.js";
101
+ import { validateSchema as validateSickleRitualSchema } from "./types/traditionArtifacts/SickleRitual.js";
102
+ import { validateSchema as validateSpellSwordEnchantmentSchema } from "./types/traditionArtifacts/SpellSwordEnchantment.js";
103
+ import { validateSchema as validateStaffEnchantmentSchema } from "./types/traditionArtifacts/StaffEnchantment.js";
104
+ import { validateSchema as validateAnimalShapeSchema } from "./types/traditionArtifacts/sub/AnimalShape.js";
105
+ import { validateSchema as validateAnimalShapePathSchema } from "./types/traditionArtifacts/sub/AnimalShapePath.js";
106
+ import { validateSchema as validateAnimalShapeSizeSchema } from "./types/traditionArtifacts/sub/AnimalShapeSize.js";
107
+ import { validateSchema as validateBrewSchema } from "./types/traditionArtifacts/sub/Brew.js";
108
+ import { validateSchema as validateToyEnchantmentSchema } from "./types/traditionArtifacts/ToyEnchantment.js";
109
+ import { validateSchema as validateTrinkhornzauberSchema } from "./types/traditionArtifacts/Trinkhornzauber.js";
110
+ import { validateSchema as validateWandEnchantmentSchema } from "./types/traditionArtifacts/WandEnchantment.js";
111
+ import { validateSchema as validateWeaponEnchantmentSchema } from "./types/traditionArtifacts/WeaponEnchantment.js";
112
+ export const typeValidatorMap = {
113
+ advancedCombatSpecialAbilities: validateAdvancedCombatSpecialAbilitySchema,
114
+ advancedKarmaSpecialAbilities: validateAdvancedKarmaSpecialAbilitySchema,
115
+ advancedMagicalSpecialAbilities: validateAdvancedMagicalSpecialAbilitySchema,
116
+ advancedSkillSpecialAbilities: validateAdvancedSkillSpecialAbilitySchema,
117
+ advantages: validateAdvantageSchema,
118
+ ancestorGlyphs: validateAncestorGlyphSchema,
119
+ animalShapePaths: validateAnimalShapePathSchema,
120
+ animalShapes: validateAnimalShapeSchema,
121
+ animalShapeSizes: validateAnimalShapeSizeSchema,
122
+ animistPowers: validateAnimistPowerSchema,
123
+ animistPowerTribes: validateTribeSchema,
124
+ arcaneBardTraditions: validateArcaneBardTraditionSchema,
125
+ arcaneDancerTraditions: validateArcaneDancerTraditionSchema,
126
+ arcaneOrbEnchantments: validateArcaneOrbEnchantmentSchema,
127
+ aspects: validateAspectSchema,
128
+ attireEnchantments: validateAttireEnchantmentSchema,
129
+ attributes: validateAttributeSchema,
130
+ blessedTraditions: validateBlessedTraditionSchema,
131
+ blessings: validateBlessingSchema,
132
+ bowlEnchantments: validateBowlEnchantmentSchema,
133
+ brawlingSpecialAbilities: validateBrawlingSpecialAbilitySchema,
134
+ brews: validateBrewSchema,
135
+ cantrips: validateCantripSchema,
136
+ cauldronEnchantments: validateCauldronEnchantmentSchema,
137
+ ceremonialItemSpecialAbilities: validateCeremonialItemSpecialAbilitySchema,
138
+ ceremonies: validateCeremonySchema,
139
+ chronicleEnchantments: validateChronicleEnchantmentSchema,
140
+ closeCombatTechniques: validateCloseCombatTechniqueSchema,
141
+ combatSpecialAbilities: validateCombatSpecialAbilitySchema,
142
+ combatStyleSpecialAbilities: validateCombatStyleSpecialAbilitySchema,
143
+ commandSpecialAbilities: validateCommandSpecialAbilitySchema,
144
+ conditions: validateConditionSchema,
145
+ continents: validateContinentSchema,
146
+ cultures: validateCultureSchema,
147
+ curses: validateCurseSchema,
148
+ daggerRituals: validateDaggerRitualSchema,
149
+ derivedCharacteristics: validateDerivedCharacteristicSchema,
150
+ disadvantages: validateDisadvantageSchema,
151
+ dominationRituals: validateDominationRitualSchema,
152
+ elements: validateElementSchema,
153
+ elvenMagicalSongs: validateElvenMagicalSongSchema,
154
+ experienceLevels: validateExperienceLevelSchema,
155
+ eyeColors: validateEyeColorSchema,
156
+ familiarSpecialAbilities: validateFamiliarSpecialAbilitySchema,
157
+ familiarsTrickAnimalTypes: validateAnimalTypeSchema,
158
+ familiarsTricks: validateFamiliarsTrickSchema,
159
+ fatePointSexSpecialAbilities: validateFatePointSexSpecialAbilitySchema,
160
+ fatePointSpecialAbilities: validateFatePointSpecialAbilitySchema,
161
+ focusRules: validateFocusRuleSchema,
162
+ focusRuleSubjects: validateSubjectSchema,
163
+ foolsHatEnchantments: validateFoolsHatEnchantmentSchema,
164
+ generalSpecialAbilities: validateGeneralSpecialAbilitySchema,
165
+ geodeRituals: validateGeodeRitualSchema,
166
+ hairColors: validateHairColorSchema,
167
+ instrumentEnchantments: validateInstrumentEnchantmentSchema,
168
+ jesterTricks: validateJesterTrickSchema,
169
+ karmaSpecialAbilities: validateKarmaSpecialAbilitySchema,
170
+ krallenkettenzauber: validateKrallenkettenzauberSchema,
171
+ languages: validateLanguageSchema,
172
+ lessonsCurricula: validateCurriculumSchema,
173
+ lessonsGuidelines: validateGuidelineSchema,
174
+ liturgicalChants: validateLiturgicalChantSchema,
175
+ liturgicalStyleSpecialAbilities: validateLiturgicalStyleSpecialAbilitySchema,
176
+ locales: validateLocaleSchema,
177
+ lycantropicGifts: validateLycantropicGiftSchema,
178
+ magicalDances: validateMagicalDanceSchema,
179
+ magicalMelodies: validateMagicalMelodySchema,
180
+ magicalRunes: validateMagicalRuneSchema,
181
+ magicalSpecialAbilities: validateMagicalSpecialAbilitySchema,
182
+ magicalTraditions: validateMagicalTraditionSchema,
183
+ magicStyleSpecialAbilities: validateMagicStyleSpecialAbilitySchema,
184
+ metaConditions: validateMetaConditionSchema,
185
+ optionalRules: validateOptionalRuleSchema,
186
+ orbEnchantments: validateOrbEnchantmentSchema,
187
+ pactCategories: validatePactCategorySchema,
188
+ pactGifts: validatePactGiftSchema,
189
+ patronCategories: validatePatronCategorySchema,
190
+ patrons: validatePatronSchema,
191
+ properties: validatePropertySchema,
192
+ protectiveWardingCircleSpecialAbilities: validateProtectiveWardingCircleSpecialAbilitySchema,
193
+ publications: validatePublicationSchema,
194
+ races: validateRaceSchema,
195
+ rangedCombatTechniques: validateRangedCombatTechniqueSchema,
196
+ regions: validateRegionSchema,
197
+ ringEnchantments: validateRingEnchantmentSchema,
198
+ rituals: validateRitualSchema,
199
+ scripts: validateScriptSchema,
200
+ sermons: validateSermonSchema,
201
+ services: validateServiceSchema,
202
+ sexPractices: validateSexPracticeSchema,
203
+ sexSpecialAbilities: validateSexSpecialAbilitySchema,
204
+ sickleRituals: validateSickleRitualSchema,
205
+ sikaryanDrainSpecialAbilities: validateSikaryanDrainSpecialAbilitySchema,
206
+ skillGroups: validateSkillGroupSchema,
207
+ skillModificationLevels: validateSkillModificationLevelSchema,
208
+ skills: validateSkillSchema,
209
+ skillStyleSpecialAbilities: validateSkillStyleSpecialAbilitySchema,
210
+ socialStatuses: validateSocialStatusSchema,
211
+ spells: validateSpellSchema,
212
+ spellSwordEnchantments: validateSpellSwordEnchantmentSchema,
213
+ staffEnchantments: validateStaffEnchantmentSchema,
214
+ states: validateStateSchema,
215
+ targetCategories: validateTargetCategorySchema,
216
+ toyEnchantments: validateToyEnchantmentSchema,
217
+ tradeSecrets: validateTradeSecretSchema,
218
+ trinkhornzauber: validateTrinkhornzauberSchema,
219
+ vampiricGifts: validateVampiricGiftSchema,
220
+ visions: validateVisionSchema,
221
+ wandEnchantments: validateWandEnchantmentSchema,
222
+ weaponEnchantments: validateWeaponEnchantmentSchema,
223
+ zibiljaRituals: validateZibiljaRitualSchema,
224
+ };
package/lib/main.d.ts CHANGED
@@ -1 +1,17 @@
1
+ import { DefinedError } from "ajv";
2
+ import { TypeMap } from "./config.js";
3
+ declare type Result = {
4
+ tag: "Ok";
5
+ value: {
6
+ [K in keyof TypeMap]: TypeMap[K][];
7
+ };
8
+ } | {
9
+ tag: "Error";
10
+ errors: Record<string, DefinedError[]>;
11
+ };
12
+ export declare type EntityDirectoryPaths = {
13
+ [K in keyof TypeMap]: string;
14
+ };
15
+ export declare const validate: (entityDirPaths: EntityDirectoryPaths, checkIntegrity: boolean) => Promise<Result>;
16
+ export declare const printErrors: (errorsByFile: Record<string, DefinedError[]>) => string;
1
17
  export {};
package/lib/main.js CHANGED
@@ -1 +1,111 @@
1
- export {};
1
+ import Ajv from "ajv";
2
+ import addFormats from "ajv-formats";
3
+ import { lstat, readdir, readFile } from "fs/promises";
4
+ import { join } from "path";
5
+ import YAML from "yaml";
6
+ import { jsonSchemaDir } from "../build/directories.js";
7
+ import { typeValidatorMap } from "./config.js";
8
+ const readdirRecursive = async (dirPath) => {
9
+ const directoryEntries = await readdir(dirPath, { withFileTypes: true });
10
+ const flattenedRecursivePaths = await Promise.all(directoryEntries.map(async (dirEntry) => {
11
+ const absoluteEntryPath = join(dirPath, dirEntry.name);
12
+ if (dirEntry.isDirectory()) {
13
+ return await readdirRecursive(absoluteEntryPath);
14
+ }
15
+ else if (dirEntry.isFile()) {
16
+ return [absoluteEntryPath];
17
+ }
18
+ else {
19
+ return [];
20
+ }
21
+ }));
22
+ return flattenedRecursivePaths.flat();
23
+ };
24
+ const registerAllJsonSchemaDocuments = async (validator) => {
25
+ const allJsonSchemaFilePaths = await readdirRecursive(jsonSchemaDir);
26
+ const readFileAsUtf8 = (path) => readFile(path, "utf-8");
27
+ const readFilesAsUtf8 = (paths) => Promise.all(paths.map(readFileAsUtf8));
28
+ const parseJson = (json) => JSON.parse(json);
29
+ const registerSchemaInValidator = (jsonSchema) => { validator.addSchema(jsonSchema); };
30
+ (await readFilesAsUtf8(allJsonSchemaFilePaths))
31
+ .map(parseJson)
32
+ .forEach(registerSchemaInValidator);
33
+ };
34
+ const readDataFileAssocsFromDirectory = async (dirPath) => await Promise.all((await readdir(dirPath)).map(async (fileName) => {
35
+ const filePath = join(dirPath, fileName);
36
+ try {
37
+ const fileContent = YAML.parse(await readFile(join(dirPath, fileName), "utf-8"));
38
+ return [filePath, fileContent];
39
+ }
40
+ catch (error) {
41
+ if (error instanceof Error) {
42
+ error.message = `in "${filePath}":\n ${error.message}`;
43
+ }
44
+ return [filePath, null];
45
+ }
46
+ }));
47
+ const validateAllFromType = async (validator, typeName, path) => {
48
+ const isFile = (await lstat(path)).isFile();
49
+ const typeValidator = typeValidatorMap[typeName];
50
+ if (isFile) {
51
+ return [typeName, { [path]: typeValidator(validator, await readFile(path, "utf-8"), path) }];
52
+ }
53
+ else {
54
+ const dataFiles = await readDataFileAssocsFromDirectory(path);
55
+ return [
56
+ typeName,
57
+ Object.fromEntries(dataFiles.map(([filePath, fileContent]) => [filePath, typeValidator(validator, fileContent, filePath)]))
58
+ ];
59
+ }
60
+ };
61
+ const rawResultMapToResult = (rawResultMap) => Object.entries(rawResultMap).reduce((result, [typeName, typeResults]) => Object.entries(typeResults).reduce((outerResult, [filePath, fileResult]) => {
62
+ if (outerResult.tag === "Ok" && fileResult.tag === "Ok") {
63
+ return {
64
+ tag: "Ok",
65
+ value: {
66
+ ...outerResult.value,
67
+ [typeName]: [...(outerResult.value[typeName] ?? []), fileResult.value]
68
+ }
69
+ };
70
+ }
71
+ else if (outerResult.tag === "Ok" && fileResult.tag === "Error") {
72
+ return {
73
+ tag: "Error",
74
+ errors: {
75
+ [filePath]: fileResult.errors
76
+ }
77
+ };
78
+ }
79
+ else if (outerResult.tag === "Error" && fileResult.tag === "Error") {
80
+ return {
81
+ tag: "Error",
82
+ errors: {
83
+ ...outerResult.errors,
84
+ [filePath]: [...(outerResult.errors[filePath] ?? []), ...fileResult.errors]
85
+ }
86
+ };
87
+ }
88
+ else {
89
+ return outerResult;
90
+ }
91
+ }, result), ({
92
+ tag: "Ok",
93
+ value: {}
94
+ }));
95
+ export const validate = async (entityDirPaths, checkIntegrity) => {
96
+ const validator = new Ajv();
97
+ addFormats(validator);
98
+ await registerAllJsonSchemaDocuments(validator);
99
+ const rawResultMap = Object.fromEntries((await Promise.all(Object.entries(entityDirPaths)
100
+ .map(async ([typeName, path]) => validateAllFromType(validator, typeName, path)))));
101
+ return rawResultMapToResult(rawResultMap);
102
+ };
103
+ export const printErrors = (errorsByFile) => Object.entries(errorsByFile)
104
+ .flatMap(([filePath, errors]) => errors.map(error => {
105
+ const pathSegments = [filePath, ...error.instancePath.split("/").slice(1)];
106
+ return [
107
+ ...pathSegments.map((segment, i) => `${" ".repeat(i * 2)}in "${segment}":`),
108
+ `${" ".repeat(pathSegments.length * 2)}${error.message ?? ""}`
109
+ ].join("\n");
110
+ }))
111
+ .join("\n\n");