optolith-database-schema 0.10.1 → 0.11.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 (366) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/lib/config.d.ts +155 -4
  3. package/lib/config.js +154 -154
  4. package/lib/errors.d.ts +20 -0
  5. package/lib/errors.js +33 -0
  6. package/lib/helpers/array.d.ts +14 -0
  7. package/lib/helpers/array.js +15 -0
  8. package/lib/helpers/i18n.d.ts +1 -0
  9. package/lib/helpers/i18n.js +1 -0
  10. package/lib/helpers/io.d.ts +29 -0
  11. package/lib/helpers/io.js +51 -0
  12. package/lib/helpers/objectPath.d.ts +13 -0
  13. package/lib/helpers/objectPath.js +3 -0
  14. package/lib/helpers/pair.d.ts +20 -0
  15. package/lib/helpers/pair.js +20 -0
  16. package/lib/helpers/result.d.ts +57 -0
  17. package/lib/helpers/result.js +45 -0
  18. package/lib/helpers/typeSafety.d.ts +6 -0
  19. package/lib/helpers/typeSafety.js +8 -0
  20. package/lib/main.d.ts +49 -14
  21. package/lib/main.js +46 -133
  22. package/lib/typeConfig.d.ts +10 -0
  23. package/lib/typeConfig.js +1 -0
  24. package/lib/types/Advantage.d.ts +2 -1
  25. package/lib/types/Advantage.js +9 -2
  26. package/lib/types/AnimalDisease.d.ts +3 -2
  27. package/lib/types/AnimalDisease.js +9 -2
  28. package/lib/types/AnimalType.d.ts +2 -1
  29. package/lib/types/AnimalType.js +9 -2
  30. package/lib/types/ArcaneBardTradition.d.ts +2 -1
  31. package/lib/types/ArcaneBardTradition.js +9 -2
  32. package/lib/types/ArcaneDancerTradition.d.ts +2 -1
  33. package/lib/types/ArcaneDancerTradition.js +9 -2
  34. package/lib/types/Aspect.d.ts +2 -1
  35. package/lib/types/Aspect.js +9 -2
  36. package/lib/types/Attribute.d.ts +2 -3
  37. package/lib/types/Attribute.js +9 -4
  38. package/lib/types/Blessing.d.ts +4 -3
  39. package/lib/types/Blessing.js +9 -2
  40. package/lib/types/Cantrip.d.ts +4 -3
  41. package/lib/types/Cantrip.js +9 -2
  42. package/lib/types/Ceremony.d.ts +4 -3
  43. package/lib/types/Ceremony.js +9 -2
  44. package/lib/types/CombatTechnique_Close.d.ts +4 -3
  45. package/lib/types/CombatTechnique_Close.js +9 -2
  46. package/lib/types/CombatTechnique_Ranged.d.ts +4 -3
  47. package/lib/types/CombatTechnique_Ranged.js +9 -2
  48. package/lib/types/Condition.d.ts +4 -3
  49. package/lib/types/Condition.js +9 -2
  50. package/lib/types/Continent.d.ts +2 -1
  51. package/lib/types/Continent.js +9 -2
  52. package/lib/types/Culture.d.ts +4 -3
  53. package/lib/types/Culture.js +13 -6
  54. package/lib/types/DerivedCharacteristic.d.ts +3 -2
  55. package/lib/types/DerivedCharacteristic.js +9 -2
  56. package/lib/types/Disadvantage.d.ts +2 -1
  57. package/lib/types/Disadvantage.js +9 -2
  58. package/lib/types/Disease.d.ts +3 -2
  59. package/lib/types/Disease.js +9 -2
  60. package/lib/types/Element.d.ts +2 -1
  61. package/lib/types/Element.js +9 -2
  62. package/lib/types/ExperienceLevel.d.ts +2 -1
  63. package/lib/types/ExperienceLevel.js +9 -2
  64. package/lib/types/EyeColor.d.ts +2 -1
  65. package/lib/types/EyeColor.js +9 -2
  66. package/lib/types/FamiliarsTrick.d.ts +4 -3
  67. package/lib/types/FamiliarsTrick.js +9 -2
  68. package/lib/types/HairColor.d.ts +2 -1
  69. package/lib/types/HairColor.js +9 -2
  70. package/lib/types/Kirchenpraegung.d.ts +2 -1
  71. package/lib/types/Kirchenpraegung.js +9 -2
  72. package/lib/types/Lessons_Curriculum.d.ts +4 -3
  73. package/lib/types/Lessons_Curriculum.js +9 -2
  74. package/lib/types/Lessons_Guideline.d.ts +2 -1
  75. package/lib/types/Lessons_Guideline.js +9 -2
  76. package/lib/types/LiturgicalChant.d.ts +4 -3
  77. package/lib/types/LiturgicalChant.js +9 -2
  78. package/lib/types/Locale.d.ts +3 -6
  79. package/lib/types/Locale.js +10 -3
  80. package/lib/types/MetaCondition.d.ts +4 -3
  81. package/lib/types/MetaCondition.js +9 -2
  82. package/lib/types/PactCategory.d.ts +4 -3
  83. package/lib/types/PactCategory.js +9 -2
  84. package/lib/types/Patron.d.ts +2 -1
  85. package/lib/types/Patron.js +11 -4
  86. package/lib/types/PatronCategory.d.ts +2 -1
  87. package/lib/types/PatronCategory.js +9 -2
  88. package/lib/types/PersonalityTrait.d.ts +4 -3
  89. package/lib/types/PersonalityTrait.js +9 -2
  90. package/lib/types/Profession.d.ts +2 -1
  91. package/lib/types/Profession.js +10 -3
  92. package/lib/types/Property.d.ts +2 -1
  93. package/lib/types/Property.js +9 -2
  94. package/lib/types/Race.d.ts +4 -3
  95. package/lib/types/Race.js +10 -3
  96. package/lib/types/Region.d.ts +2 -1
  97. package/lib/types/Region.js +9 -2
  98. package/lib/types/Ritual.d.ts +4 -3
  99. package/lib/types/Ritual.js +9 -2
  100. package/lib/types/Service.d.ts +4 -3
  101. package/lib/types/Service.js +10 -3
  102. package/lib/types/SexPractice.d.ts +3 -2
  103. package/lib/types/SexPractice.js +9 -2
  104. package/lib/types/Skill.d.ts +4 -3
  105. package/lib/types/Skill.js +11 -4
  106. package/lib/types/SkillGroup.d.ts +2 -1
  107. package/lib/types/SkillGroup.js +9 -2
  108. package/lib/types/SkillModificationLevel.d.ts +2 -1
  109. package/lib/types/SkillModificationLevel.js +10 -3
  110. package/lib/types/SocialStatus.d.ts +2 -1
  111. package/lib/types/SocialStatus.js +9 -2
  112. package/lib/types/Spell.d.ts +4 -3
  113. package/lib/types/Spell.js +9 -2
  114. package/lib/types/State.d.ts +4 -3
  115. package/lib/types/State.js +9 -2
  116. package/lib/types/Talisman.d.ts +2 -1
  117. package/lib/types/Talisman.js +10 -3
  118. package/lib/types/TargetCategory.d.ts +2 -1
  119. package/lib/types/TargetCategory.js +9 -2
  120. package/lib/types/UI.d.ts +2 -1
  121. package/lib/types/UI.js +9 -2
  122. package/lib/types/_Activatable.js +5 -5
  123. package/lib/types/_ActivatableSelectOptionCategory.js +1 -1
  124. package/lib/types/_ActivatableSkillCastingTime.js +1 -1
  125. package/lib/types/_ActivatableSkillCheckResultBased.js +2 -2
  126. package/lib/types/_ActivatableSkillDuration.js +1 -1
  127. package/lib/types/_ActivatableSkillRange.js +1 -1
  128. package/lib/types/_Dice.js +1 -1
  129. package/lib/types/_DiseasePoison.js +1 -1
  130. package/lib/types/_ImprovementCost.js +1 -1
  131. package/lib/types/_Sex.js +1 -1
  132. package/lib/types/_SkillCheck.js +1 -1
  133. package/lib/types/equipment/EquipmentPackage.d.ts +3 -2
  134. package/lib/types/equipment/EquipmentPackage.js +9 -2
  135. package/lib/types/equipment/item/Alchemicum.d.ts +2 -1
  136. package/lib/types/equipment/item/Alchemicum.js +9 -2
  137. package/lib/types/equipment/item/Ammunition.d.ts +4 -3
  138. package/lib/types/equipment/item/Ammunition.js +9 -2
  139. package/lib/types/equipment/item/Animal.d.ts +3 -2
  140. package/lib/types/equipment/item/Animal.js +9 -2
  141. package/lib/types/equipment/item/AnimalCare.d.ts +3 -2
  142. package/lib/types/equipment/item/AnimalCare.js +9 -2
  143. package/lib/types/equipment/item/Armor.d.ts +4 -3
  144. package/lib/types/equipment/item/Armor.js +9 -2
  145. package/lib/types/equipment/item/BandageOrRemedy.d.ts +3 -2
  146. package/lib/types/equipment/item/BandageOrRemedy.js +9 -2
  147. package/lib/types/equipment/item/Book.d.ts +4 -3
  148. package/lib/types/equipment/item/Book.js +9 -2
  149. package/lib/types/equipment/item/CeremonialItem.d.ts +3 -2
  150. package/lib/types/equipment/item/CeremonialItem.js +9 -2
  151. package/lib/types/equipment/item/Clothes.d.ts +2 -1
  152. package/lib/types/equipment/item/Clothes.js +9 -2
  153. package/lib/types/equipment/item/Container.d.ts +2 -1
  154. package/lib/types/equipment/item/Container.js +9 -2
  155. package/lib/types/equipment/item/Elixir.d.ts +4 -3
  156. package/lib/types/equipment/item/Elixir.js +9 -2
  157. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +3 -2
  158. package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +9 -2
  159. package/lib/types/equipment/item/GemOrPreciousStone.d.ts +4 -3
  160. package/lib/types/equipment/item/GemOrPreciousStone.js +9 -2
  161. package/lib/types/equipment/item/IlluminationLightSource.d.ts +3 -2
  162. package/lib/types/equipment/item/IlluminationLightSource.js +10 -3
  163. package/lib/types/equipment/item/IlluminationRefillsOrSupplies.d.ts +2 -1
  164. package/lib/types/equipment/item/IlluminationRefillsOrSupplies.js +9 -2
  165. package/lib/types/equipment/item/Jewelry.d.ts +4 -3
  166. package/lib/types/equipment/item/Jewelry.js +9 -2
  167. package/lib/types/equipment/item/Liebesspielzeug.d.ts +2 -1
  168. package/lib/types/equipment/item/Liebesspielzeug.js +9 -2
  169. package/lib/types/equipment/item/LuxuryGood.d.ts +3 -2
  170. package/lib/types/equipment/item/LuxuryGood.js +9 -2
  171. package/lib/types/equipment/item/MagicalArtifact.d.ts +4 -3
  172. package/lib/types/equipment/item/MagicalArtifact.js +9 -2
  173. package/lib/types/equipment/item/MusicalInstrument.d.ts +3 -2
  174. package/lib/types/equipment/item/MusicalInstrument.js +9 -2
  175. package/lib/types/equipment/item/OrienteeringAid.d.ts +2 -1
  176. package/lib/types/equipment/item/OrienteeringAid.js +9 -2
  177. package/lib/types/equipment/item/Poison.d.ts +4 -3
  178. package/lib/types/equipment/item/Poison.js +12 -5
  179. package/lib/types/equipment/item/RopeOrChain.d.ts +2 -1
  180. package/lib/types/equipment/item/RopeOrChain.js +9 -2
  181. package/lib/types/equipment/item/Stationary.d.ts +2 -1
  182. package/lib/types/equipment/item/Stationary.js +9 -2
  183. package/lib/types/equipment/item/ThievesTool.d.ts +2 -1
  184. package/lib/types/equipment/item/ThievesTool.js +9 -2
  185. package/lib/types/equipment/item/ToolOfTheTrade.d.ts +4 -3
  186. package/lib/types/equipment/item/ToolOfTheTrade.js +9 -2
  187. package/lib/types/equipment/item/TravelGearOrTool.d.ts +2 -1
  188. package/lib/types/equipment/item/TravelGearOrTool.js +9 -2
  189. package/lib/types/equipment/item/Vehicle.d.ts +3 -2
  190. package/lib/types/equipment/item/Vehicle.js +9 -2
  191. package/lib/types/equipment/item/Weapon.d.ts +2 -1
  192. package/lib/types/equipment/item/Weapon.js +9 -2
  193. package/lib/types/equipment/item/WeaponAccessory.d.ts +2 -1
  194. package/lib/types/equipment/item/WeaponAccessory.js +9 -2
  195. package/lib/types/equipment/item/_Herbary.js +2 -2
  196. package/lib/types/equipment/item/sub/ArmorType.d.ts +2 -1
  197. package/lib/types/equipment/item/sub/ArmorType.js +9 -2
  198. package/lib/types/equipment/item/sub/Reach.d.ts +2 -1
  199. package/lib/types/equipment/item/sub/Reach.js +9 -2
  200. package/lib/types/magicalActions/AnimistPower.d.ts +4 -3
  201. package/lib/types/magicalActions/AnimistPower.js +9 -2
  202. package/lib/types/magicalActions/AnimistPower_Tribe.d.ts +2 -1
  203. package/lib/types/magicalActions/AnimistPower_Tribe.js +9 -2
  204. package/lib/types/magicalActions/Curse.d.ts +4 -3
  205. package/lib/types/magicalActions/Curse.js +9 -2
  206. package/lib/types/magicalActions/DominationRitual.d.ts +4 -3
  207. package/lib/types/magicalActions/DominationRitual.js +9 -2
  208. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +4 -3
  209. package/lib/types/magicalActions/ElvenMagicalSong.js +9 -2
  210. package/lib/types/magicalActions/GeodeRitual.d.ts +4 -3
  211. package/lib/types/magicalActions/GeodeRitual.js +9 -2
  212. package/lib/types/magicalActions/JesterTrick.d.ts +4 -3
  213. package/lib/types/magicalActions/JesterTrick.js +9 -2
  214. package/lib/types/magicalActions/MagicalDance.d.ts +4 -3
  215. package/lib/types/magicalActions/MagicalDance.js +9 -2
  216. package/lib/types/magicalActions/MagicalMelody.d.ts +4 -3
  217. package/lib/types/magicalActions/MagicalMelody.js +9 -2
  218. package/lib/types/magicalActions/MagicalRune.d.ts +4 -3
  219. package/lib/types/magicalActions/MagicalRune.js +9 -2
  220. package/lib/types/magicalActions/ZibiljaRitual.d.ts +4 -3
  221. package/lib/types/magicalActions/ZibiljaRitual.js +9 -2
  222. package/lib/types/magicalActions/_MusicTradition.js +2 -2
  223. package/lib/types/magicalActions/_SkillReference.js +1 -1
  224. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.js +1 -1
  225. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +1 -1
  226. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.js +1 -1
  227. package/lib/types/prerequisites/single/TextPrerequisite.js +2 -2
  228. package/lib/types/prerequisites/single/TraditionPrerequisite.js +2 -2
  229. package/lib/types/rule/CoreRule.d.ts +4 -3
  230. package/lib/types/rule/CoreRule.js +10 -3
  231. package/lib/types/rule/FocusRule.d.ts +4 -3
  232. package/lib/types/rule/FocusRule.js +9 -2
  233. package/lib/types/rule/FocusRule_Subject.d.ts +2 -1
  234. package/lib/types/rule/FocusRule_Subject.js +9 -2
  235. package/lib/types/rule/OptionalRule.d.ts +4 -3
  236. package/lib/types/rule/OptionalRule.js +9 -2
  237. package/lib/types/source/Publication.d.ts +2 -1
  238. package/lib/types/source/Publication.js +10 -3
  239. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +4 -3
  240. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.js +9 -2
  241. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +4 -3
  242. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.js +9 -2
  243. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +4 -3
  244. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.js +9 -2
  245. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +4 -3
  246. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.js +9 -2
  247. package/lib/types/specialAbility/AncestorGlyph.d.ts +4 -3
  248. package/lib/types/specialAbility/AncestorGlyph.js +9 -2
  249. package/lib/types/specialAbility/BlessedTradition.d.ts +4 -3
  250. package/lib/types/specialAbility/BlessedTradition.js +9 -2
  251. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +4 -3
  252. package/lib/types/specialAbility/BrawlingSpecialAbility.js +9 -2
  253. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +2 -1
  254. package/lib/types/specialAbility/CeremonialItemSpecialAbility.js +9 -2
  255. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +2 -1
  256. package/lib/types/specialAbility/CombatSpecialAbility.js +9 -2
  257. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +4 -3
  258. package/lib/types/specialAbility/CombatStyleSpecialAbility.js +9 -2
  259. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +4 -3
  260. package/lib/types/specialAbility/CommandSpecialAbility.js +9 -2
  261. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +4 -3
  262. package/lib/types/specialAbility/FamiliarSpecialAbility.js +9 -2
  263. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +4 -3
  264. package/lib/types/specialAbility/FatePointSexSpecialAbility.js +9 -2
  265. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +4 -3
  266. package/lib/types/specialAbility/FatePointSpecialAbility.js +9 -2
  267. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +2 -1
  268. package/lib/types/specialAbility/GeneralSpecialAbility.js +9 -2
  269. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +2 -1
  270. package/lib/types/specialAbility/KarmaSpecialAbility.js +9 -2
  271. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +4 -3
  272. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.js +9 -2
  273. package/lib/types/specialAbility/LycantropicGift.d.ts +4 -3
  274. package/lib/types/specialAbility/LycantropicGift.js +9 -2
  275. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +4 -3
  276. package/lib/types/specialAbility/MagicStyleSpecialAbility.js +9 -2
  277. package/lib/types/specialAbility/MagicalSign.d.ts +4 -3
  278. package/lib/types/specialAbility/MagicalSign.js +9 -2
  279. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +2 -1
  280. package/lib/types/specialAbility/MagicalSpecialAbility.js +9 -2
  281. package/lib/types/specialAbility/MagicalTradition.d.ts +4 -3
  282. package/lib/types/specialAbility/MagicalTradition.js +9 -2
  283. package/lib/types/specialAbility/PactGift.d.ts +4 -3
  284. package/lib/types/specialAbility/PactGift.js +11 -4
  285. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +4 -3
  286. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.js +9 -2
  287. package/lib/types/specialAbility/Sermon.d.ts +4 -3
  288. package/lib/types/specialAbility/Sermon.js +9 -2
  289. package/lib/types/specialAbility/SexSpecialAbility.d.ts +4 -3
  290. package/lib/types/specialAbility/SexSpecialAbility.js +9 -2
  291. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +4 -3
  292. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.js +9 -2
  293. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +4 -3
  294. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +9 -2
  295. package/lib/types/specialAbility/VampiricGift.d.ts +2 -1
  296. package/lib/types/specialAbility/VampiricGift.js +9 -2
  297. package/lib/types/specialAbility/Vision.d.ts +4 -3
  298. package/lib/types/specialAbility/Vision.js +9 -2
  299. package/lib/types/specialAbility/sub/Language.d.ts +4 -3
  300. package/lib/types/specialAbility/sub/Language.js +9 -2
  301. package/lib/types/specialAbility/sub/Script.d.ts +4 -3
  302. package/lib/types/specialAbility/sub/Script.js +9 -2
  303. package/lib/types/specialAbility/sub/TradeSecret.d.ts +4 -3
  304. package/lib/types/specialAbility/sub/TradeSecret.js +9 -2
  305. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +2 -1
  306. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.js +9 -2
  307. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +2 -1
  308. package/lib/types/traditionArtifacts/AttireEnchantment.js +9 -2
  309. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +2 -1
  310. package/lib/types/traditionArtifacts/BowlEnchantment.js +9 -2
  311. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +2 -1
  312. package/lib/types/traditionArtifacts/CauldronEnchantment.js +9 -2
  313. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +2 -1
  314. package/lib/types/traditionArtifacts/ChronicleEnchantment.js +9 -2
  315. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +2 -1
  316. package/lib/types/traditionArtifacts/DaggerRitual.js +9 -2
  317. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +2 -1
  318. package/lib/types/traditionArtifacts/FoolsHatEnchantment.js +9 -2
  319. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +2 -1
  320. package/lib/types/traditionArtifacts/InstrumentEnchantment.js +9 -2
  321. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +2 -1
  322. package/lib/types/traditionArtifacts/Krallenkettenzauber.js +9 -2
  323. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +2 -1
  324. package/lib/types/traditionArtifacts/OrbEnchantment.js +9 -2
  325. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +2 -1
  326. package/lib/types/traditionArtifacts/RingEnchantment.js +9 -2
  327. package/lib/types/traditionArtifacts/SickleRitual.d.ts +2 -1
  328. package/lib/types/traditionArtifacts/SickleRitual.js +9 -2
  329. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +2 -1
  330. package/lib/types/traditionArtifacts/SpellSwordEnchantment.js +9 -2
  331. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +2 -1
  332. package/lib/types/traditionArtifacts/StaffEnchantment.js +9 -2
  333. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +2 -1
  334. package/lib/types/traditionArtifacts/ToyEnchantment.js +9 -2
  335. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +2 -1
  336. package/lib/types/traditionArtifacts/Trinkhornzauber.js +9 -2
  337. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +2 -1
  338. package/lib/types/traditionArtifacts/WandEnchantment.js +9 -2
  339. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +2 -1
  340. package/lib/types/traditionArtifacts/WeaponEnchantment.js +9 -2
  341. package/lib/types/traditionArtifacts/sub/AnimalShape.d.ts +2 -1
  342. package/lib/types/traditionArtifacts/sub/AnimalShape.js +9 -2
  343. package/lib/types/traditionArtifacts/sub/AnimalShapePath.d.ts +2 -1
  344. package/lib/types/traditionArtifacts/sub/AnimalShapePath.js +9 -2
  345. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.d.ts +2 -1
  346. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.js +9 -2
  347. package/lib/types/traditionArtifacts/sub/Brew.d.ts +2 -1
  348. package/lib/types/traditionArtifacts/sub/Brew.js +9 -2
  349. package/lib/validation/builders/integrity.d.ts +57 -0
  350. package/lib/validation/builders/integrity.js +44 -0
  351. package/lib/validation/builders/naming.d.ts +13 -0
  352. package/lib/validation/builders/naming.js +14 -0
  353. package/lib/validation/builders/schema.d.ts +31 -0
  354. package/lib/validation/builders/schema.js +32 -0
  355. package/lib/validation/filename.d.ts +9 -0
  356. package/lib/validation/filename.js +10 -0
  357. package/lib/validation/raw.d.ts +9 -0
  358. package/lib/validation/raw.js +55 -0
  359. package/lib/validation/schema.d.ts +6 -22
  360. package/lib/validation/schema.js +31 -32
  361. package/package.json +8 -3
  362. package/schema/Locale.schema.json +1 -8
  363. package/config/directories.d.ts +0 -4
  364. package/config/directories.js +0 -14
  365. package/lib/validation/integrity.d.ts +0 -16
  366. package/lib/validation/integrity.js +0 -3
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main DaggerRitual
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "DaggerRitual",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("DaggerRitual"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main FoolsHatEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type FoolsHatEnchantmentTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<FoolsHatEnchantment>;
47
+ export declare const config: TypeConfig<FoolsHatEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main FoolsHatEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "FoolsHatEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("FoolsHatEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main InstrumentEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type InstrumentEnchantmentTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<InstrumentEnchantment>;
47
+ export declare const config: TypeConfig<InstrumentEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main InstrumentEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "InstrumentEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("InstrumentEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main Krallenkettenzauber
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type KrallenkettenzauberTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<Krallenkettenzauber>;
47
+ export declare const config: TypeConfig<Krallenkettenzauber>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main Krallenkettenzauber
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "Krallenkettenzauber",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("Krallenkettenzauber"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main OrbEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type OrbEnchantmentTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<OrbEnchantment>;
47
+ export declare const config: TypeConfig<OrbEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main OrbEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "OrbEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("OrbEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main RingEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type RingEnchantmentTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<RingEnchantment>;
47
+ export declare const config: TypeConfig<RingEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main RingEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "RingEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("RingEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main SickleRitual
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type SickleRitualTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<SickleRitual>;
47
+ export declare const config: TypeConfig<SickleRitual>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main SickleRitual
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "SickleRitual",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("SickleRitual"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main SpellSwordEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -48,4 +49,4 @@ export type SpellSwordEnchantmentTranslation = {
48
49
  ap_value?: Activatable.AdventurePointsValueReplacement;
49
50
  errata?: Errata;
50
51
  };
51
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<SpellSwordEnchantment>;
52
+ export declare const config: TypeConfig<SpellSwordEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main SpellSwordEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "SpellSwordEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("SpellSwordEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main StaffEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -53,4 +54,4 @@ export type StaffEnchantmentTranslation = {
53
54
  ap_value?: Activatable.AdventurePointsValueReplacement;
54
55
  errata?: Errata;
55
56
  };
56
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<StaffEnchantment>;
57
+ export declare const config: TypeConfig<StaffEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main StaffEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "StaffEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("StaffEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main ToyEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type ToyEnchantmentTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<ToyEnchantment>;
47
+ export declare const config: TypeConfig<ToyEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main ToyEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "ToyEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("ToyEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main Trinkhornzauber
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type TrinkhornzauberTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<Trinkhornzauber>;
47
+ export declare const config: TypeConfig<Trinkhornzauber>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main Trinkhornzauber
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "Trinkhornzauber",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("Trinkhornzauber"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main WandEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -38,4 +39,4 @@ export type WandEnchantmentTranslation = {
38
39
  bindingCost?: string;
39
40
  errata?: Errata;
40
41
  };
41
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<WandEnchantment>;
42
+ export declare const config: TypeConfig<WandEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main WandEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "WandEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("WandEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main WeaponEnchantment
3
3
  */
4
+ import { TypeConfig } from "../../typeConfig.js";
4
5
  import * as Activatable from "../_Activatable.js";
5
6
  import { LocaleMap } from "../_LocaleMap.js";
6
7
  import { GeneralPrerequisites } from "../_Prerequisite.js";
@@ -43,4 +44,4 @@ export type WeaponEnchantmentTranslation = {
43
44
  bindingCost?: string;
44
45
  errata?: Errata;
45
46
  };
46
- export declare const validateSchema: import("../../validation/schema.js").TypeValidator<WeaponEnchantment>;
47
+ export declare const config: TypeConfig<WeaponEnchantment>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main WeaponEnchantment
3
3
  */
4
- import { validateSchemaCreator } from "../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../validation/filename.js";
7
+ export const config = {
8
+ name: "WeaponEnchantment",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("WeaponEnchantment"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main AnimalShape
3
3
  */
4
+ import { TypeConfig } from "../../../typeConfig.js";
4
5
  import { LocaleMap } from "../../_LocaleMap.js";
5
6
  import { NonEmptyString } from "../../_NonEmptyString.js";
6
7
  /**
@@ -48,4 +49,4 @@ export type AnimalShapeTranslation = {
48
49
  */
49
50
  name: NonEmptyString;
50
51
  };
51
- export declare const validateSchema: import("../../../validation/schema.js").TypeValidator<AnimalShape>;
52
+ export declare const config: TypeConfig<AnimalShape>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main AnimalShape
3
3
  */
4
- import { validateSchemaCreator } from "../../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../../validation/filename.js";
7
+ export const config = {
8
+ name: "AnimalShape",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("AnimalShape"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main AnimalShapePath
3
3
  */
4
+ import { TypeConfig } from "../../../typeConfig.js";
4
5
  import { LocaleMap } from "../../_LocaleMap.js";
5
6
  import { NonEmptyString } from "../../_NonEmptyString.js";
6
7
  /**
@@ -24,4 +25,4 @@ export type AnimalShapePathTranslation = {
24
25
  */
25
26
  name: NonEmptyString;
26
27
  };
27
- export declare const validateSchema: import("../../../validation/schema.js").TypeValidator<AnimalShapePath>;
28
+ export declare const config: TypeConfig<AnimalShapePath>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main AnimalShapePath
3
3
  */
4
- import { validateSchemaCreator } from "../../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../../validation/filename.js";
7
+ export const config = {
8
+ name: "AnimalShapePath",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("AnimalShapePath"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main AnimalShapeSize
3
3
  */
4
+ import { TypeConfig } from "../../../typeConfig.js";
4
5
  import { LocaleMap } from "../../_LocaleMap.js";
5
6
  import { NonEmptyString } from "../../_NonEmptyString.js";
6
7
  /**
@@ -36,4 +37,4 @@ export type AnimalShapeSizeTranslation = {
36
37
  */
37
38
  name: NonEmptyString;
38
39
  };
39
- export declare const validateSchema: import("../../../validation/schema.js").TypeValidator<AnimalShapeSize>;
40
+ export declare const config: TypeConfig<AnimalShapeSize>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main AnimalShapeSize
3
3
  */
4
- import { validateSchemaCreator } from "../../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../../validation/filename.js";
7
+ export const config = {
8
+ name: "AnimalShapeSize",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("AnimalShapeSize"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @main Brew
3
3
  */
4
+ import { TypeConfig } from "../../../typeConfig.js";
4
5
  import { LocaleMap } from "../../_LocaleMap.js";
5
6
  import { NonEmptyString } from "../../_NonEmptyString.js";
6
7
  /**
@@ -24,4 +25,4 @@ export type BrewTranslation = {
24
25
  */
25
26
  name: NonEmptyString;
26
27
  };
27
- export declare const validateSchema: import("../../../validation/schema.js").TypeValidator<Brew>;
28
+ export declare const config: TypeConfig<Brew>;
@@ -1,5 +1,12 @@
1
1
  /**
2
2
  * @main Brew
3
3
  */
4
- import { validateSchemaCreator } from "../../../validation/schema.js";
5
- export const validateSchema = validateSchemaCreator(import.meta.url);
4
+ import { todo } from "../../../validation/builders/integrity.js";
5
+ import { createSchemaValidator } from "../../../validation/builders/schema.js";
6
+ import { getFIlenamePrefixAsNumericId } from "../../../validation/filename.js";
7
+ export const config = {
8
+ name: "Brew",
9
+ id: getFIlenamePrefixAsNumericId,
10
+ integrityValidator: todo("Brew"),
11
+ schemaValidator: createSchemaValidator(import.meta.url),
12
+ };
@@ -0,0 +1,57 @@
1
+ import { TypeMap } from "../../config.js";
2
+ import { PathDescriptor } from "../../helpers/objectPath.js";
3
+ import { Result } from "../../helpers/result.js";
4
+ import { TypeId } from "../../typeConfig.js";
5
+ /**
6
+ * An error in the shape of an `Ajv` error, with `keyword` being the
7
+ * discriminating property.
8
+ */
9
+ export type IntegrityError = {
10
+ keyword: "integrity";
11
+ instancePath: string;
12
+ message: string;
13
+ };
14
+ export type IntegrityValidationResult = Result<void, IntegrityError[]>;
15
+ /**
16
+ * A function that validates `data` at a specific `filePath` to be of type `T`
17
+ * using a specified `validator`.
18
+ */
19
+ export type IntegrityValidator<T> = (validators: IntegrityValidators, data: T, filepath: string) => IntegrityValidationResult;
20
+ export type IntegrityValidators = {
21
+ identity: IdentityIntegrityValidators;
22
+ };
23
+ export type IdentityIntegrityValidators = {
24
+ [K in keyof TypeMap]: {
25
+ isUnique: (id: TypeId<K>) => boolean;
26
+ exists: (id: TypeId<K>) => boolean;
27
+ };
28
+ };
29
+ export declare const getReferencialIntegrityErrors: <T>(ids: T[], typeName: string, existsId: (id: T) => boolean, pathToData: PathDescriptor) => IntegrityValidationResult;
30
+ interface Translatable<T> {
31
+ /**
32
+ * All translations for the entry, identified by IETF language tag (BCP47).
33
+ * @minProperties 1
34
+ */
35
+ translations: {
36
+ [localeId: string]: T;
37
+ };
38
+ }
39
+ export declare const getReferencialIntegrityErrorsForTranslatable: <T>(validators: IntegrityValidators, data: Translatable<T>, pathToData?: PathDescriptor) => IntegrityValidationResult;
40
+ /**
41
+ * Validates that a given identifier is unique. If the identifier is present in
42
+ * both the file name and the file contents, their equality is validated as
43
+ * well. The `pathToId` parameter is used to identify the location of the
44
+ * identifier in the file contents.
45
+ */
46
+ export declare const validateEntityIntegrity: <ID extends string | number>(isUnique: (id: ID) => boolean, filenameId: ID, dataId?: ID | undefined, pathToId?: PathDescriptor) => IntegrityValidationResult;
47
+ /**
48
+ * Warns about missing integrity validation, but returns no errors.
49
+ * @param typeName The name of the type that is not being validated.
50
+ * @returns An empty list of errors.
51
+ */
52
+ export declare const todo: (typeName: string) => () => IntegrityValidationResult;
53
+ /**
54
+ * Combines multiple integrity validation results into one.
55
+ */
56
+ export declare const reduceIntegrityValidationResults: (...results: IntegrityValidationResult[]) => IntegrityValidationResult;
57
+ export {};
@@ -0,0 +1,44 @@
1
+ import { printPathDescriptor } from "../../helpers/objectPath.js";
2
+ import { Result } from "../../helpers/result.js";
3
+ import { config } from "../../types/Locale.js";
4
+ const integrityError = (instancePath, message) => ({
5
+ keyword: "integrity",
6
+ instancePath: printPathDescriptor(instancePath),
7
+ message
8
+ });
9
+ /**
10
+ * Returns an error if the condition evaluates to `false`.
11
+ */
12
+ const conditionalError = (condition, instancePath, message) => condition ? Result.ok(undefined) : Result.error([integrityError(instancePath, message)]);
13
+ export const getReferencialIntegrityErrors = (ids, typeName, existsId, pathToData) => {
14
+ const errors = ids
15
+ .filter(id => !existsId(id))
16
+ .map(id => integrityError(pathToData, `The identifier "${id}" for type ${typeName} does not exist.`));
17
+ if (errors.length > 0) {
18
+ return Result.error(errors);
19
+ }
20
+ else {
21
+ return Result.ok(undefined);
22
+ }
23
+ };
24
+ export const getReferencialIntegrityErrorsForTranslatable = (validators, data, pathToData = []) => getReferencialIntegrityErrors(Object.keys(data.translations), config.name, validators.identity.locales.exists, [...pathToData, { k: "translations" }]);
25
+ /**
26
+ * Validates that a given identifier is unique. If the identifier is present in
27
+ * both the file name and the file contents, their equality is validated as
28
+ * well. The `pathToId` parameter is used to identify the location of the
29
+ * identifier in the file contents.
30
+ */
31
+ export const validateEntityIntegrity = (isUnique, filenameId, dataId, pathToId = [{ k: "id" }]) => reduceIntegrityValidationResults(conditionalError(isUnique(filenameId), [], `The identifier "${filenameId}" is not unique.`), conditionalError(dataId === undefined || filenameId === dataId, pathToId, `The identifier in the filename (${JSON.stringify(filenameId)}) and the identifier (${JSON.stringify(dataId)}) in the file itself are not equal.`));
32
+ /**
33
+ * Warns about missing integrity validation, but returns no errors.
34
+ * @param typeName The name of the type that is not being validated.
35
+ * @returns An empty list of errors.
36
+ */
37
+ export const todo = (typeName) => {
38
+ console.warn(`The type ${typeName} has no integrity validation yet.`);
39
+ return () => Result.ok(undefined);
40
+ };
41
+ /**
42
+ * Combines multiple integrity validation results into one.
43
+ */
44
+ export const reduceIntegrityValidationResults = (...results) => results.reduce((acc, result) => Result.combine(acc, result, () => undefined, (a, b) => [...a, ...b]), Result.ok(undefined));
@@ -0,0 +1,13 @@
1
+ import { Result } from "../../helpers/result.js";
2
+ /**
3
+ * An error in the shape of an `Ajv` error, with `keyword` being the
4
+ * discriminating property.
5
+ */
6
+ export type FileNameError = {
7
+ keyword: "filename";
8
+ instancePath: string;
9
+ message: string;
10
+ };
11
+ export type FileNameValidationResult = Result<void, FileNameError[]>;
12
+ export type FileNameValidator = (filePath: string) => FileNameValidationResult;
13
+ export declare const validateFileName: FileNameValidator;