optolith-database-schema 0.10.0 → 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 (428) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/lib/config.d.ts +156 -5
  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 +50 -15
  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 +4 -3
  25. package/lib/types/Advantage.js +9 -2
  26. package/lib/types/AnimalDisease.d.ts +4 -3
  27. package/lib/types/AnimalDisease.js +9 -2
  28. package/lib/types/AnimalType.d.ts +4 -3
  29. package/lib/types/AnimalType.js +9 -2
  30. package/lib/types/ArcaneBardTradition.d.ts +3 -2
  31. package/lib/types/ArcaneBardTradition.js +9 -2
  32. package/lib/types/ArcaneDancerTradition.d.ts +3 -2
  33. package/lib/types/ArcaneDancerTradition.js +9 -2
  34. package/lib/types/Aspect.d.ts +4 -3
  35. package/lib/types/Aspect.js +9 -2
  36. package/lib/types/Attribute.d.ts +4 -5
  37. package/lib/types/Attribute.js +9 -4
  38. package/lib/types/Blessing.d.ts +12 -11
  39. package/lib/types/Blessing.js +9 -2
  40. package/lib/types/Cantrip.d.ts +18 -17
  41. package/lib/types/Cantrip.js +9 -2
  42. package/lib/types/Ceremony.d.ts +6 -5
  43. package/lib/types/Ceremony.js +9 -2
  44. package/lib/types/CombatTechnique_Close.d.ts +7 -6
  45. package/lib/types/CombatTechnique_Close.js +9 -2
  46. package/lib/types/CombatTechnique_Ranged.d.ts +7 -6
  47. package/lib/types/CombatTechnique_Ranged.js +9 -2
  48. package/lib/types/Condition.d.ts +6 -5
  49. package/lib/types/Condition.js +9 -2
  50. package/lib/types/Continent.d.ts +4 -3
  51. package/lib/types/Continent.js +9 -2
  52. package/lib/types/Culture.d.ts +25 -24
  53. package/lib/types/Culture.js +13 -6
  54. package/lib/types/DerivedCharacteristic.d.ts +6 -5
  55. package/lib/types/DerivedCharacteristic.js +9 -2
  56. package/lib/types/Disadvantage.d.ts +4 -3
  57. package/lib/types/Disadvantage.js +9 -2
  58. package/lib/types/Disease.d.ts +4 -3
  59. package/lib/types/Disease.js +9 -2
  60. package/lib/types/Element.d.ts +4 -3
  61. package/lib/types/Element.js +9 -2
  62. package/lib/types/ExperienceLevel.d.ts +4 -3
  63. package/lib/types/ExperienceLevel.js +9 -2
  64. package/lib/types/EyeColor.d.ts +4 -3
  65. package/lib/types/EyeColor.js +9 -2
  66. package/lib/types/FamiliarsTrick.d.ts +26 -25
  67. package/lib/types/FamiliarsTrick.js +9 -2
  68. package/lib/types/HairColor.d.ts +4 -3
  69. package/lib/types/HairColor.js +9 -2
  70. package/lib/types/Kirchenpraegung.d.ts +3 -2
  71. package/lib/types/Kirchenpraegung.js +9 -2
  72. package/lib/types/Lessons_Curriculum.d.ts +22 -21
  73. package/lib/types/Lessons_Curriculum.js +9 -2
  74. package/lib/types/Lessons_Guideline.d.ts +4 -3
  75. package/lib/types/Lessons_Guideline.js +9 -2
  76. package/lib/types/LiturgicalChant.d.ts +6 -5
  77. package/lib/types/LiturgicalChant.js +9 -2
  78. package/lib/types/Locale.d.ts +4 -7
  79. package/lib/types/Locale.js +10 -3
  80. package/lib/types/MetaCondition.d.ts +6 -5
  81. package/lib/types/MetaCondition.js +9 -2
  82. package/lib/types/PactCategory.d.ts +10 -9
  83. package/lib/types/PactCategory.js +9 -2
  84. package/lib/types/Patron.d.ts +15 -14
  85. package/lib/types/Patron.js +11 -4
  86. package/lib/types/PatronCategory.d.ts +4 -3
  87. package/lib/types/PatronCategory.js +9 -2
  88. package/lib/types/PersonalityTrait.d.ts +7 -6
  89. package/lib/types/PersonalityTrait.js +9 -2
  90. package/lib/types/Profession.d.ts +43 -42
  91. package/lib/types/Profession.js +10 -3
  92. package/lib/types/Property.d.ts +4 -3
  93. package/lib/types/Property.js +9 -2
  94. package/lib/types/Race.d.ts +18 -17
  95. package/lib/types/Race.js +10 -3
  96. package/lib/types/Region.d.ts +4 -3
  97. package/lib/types/Region.js +9 -2
  98. package/lib/types/Ritual.d.ts +6 -5
  99. package/lib/types/Ritual.js +9 -2
  100. package/lib/types/Service.d.ts +6 -5
  101. package/lib/types/Service.js +10 -3
  102. package/lib/types/SexPractice.d.ts +5 -4
  103. package/lib/types/SexPractice.js +9 -2
  104. package/lib/types/Skill.d.ts +10 -9
  105. package/lib/types/Skill.js +11 -4
  106. package/lib/types/SkillGroup.d.ts +4 -3
  107. package/lib/types/SkillGroup.js +9 -2
  108. package/lib/types/SkillModificationLevel.d.ts +8 -7
  109. package/lib/types/SkillModificationLevel.js +10 -3
  110. package/lib/types/SocialStatus.d.ts +4 -3
  111. package/lib/types/SocialStatus.js +9 -2
  112. package/lib/types/Spell.d.ts +6 -5
  113. package/lib/types/Spell.js +9 -2
  114. package/lib/types/State.d.ts +6 -5
  115. package/lib/types/State.js +9 -2
  116. package/lib/types/Talisman.d.ts +5 -4
  117. package/lib/types/Talisman.js +10 -3
  118. package/lib/types/TargetCategory.d.ts +5 -4
  119. package/lib/types/TargetCategory.js +9 -2
  120. package/lib/types/UI.d.ts +3 -2
  121. package/lib/types/UI.js +9 -2
  122. package/lib/types/_Activatable.d.ts +109 -109
  123. package/lib/types/_Activatable.js +5 -5
  124. package/lib/types/_ActivatableSelectOptionCategory.d.ts +27 -27
  125. package/lib/types/_ActivatableSelectOptionCategory.js +1 -1
  126. package/lib/types/_ActivatableSkill.d.ts +8 -8
  127. package/lib/types/_ActivatableSkillCastingTime.d.ts +8 -8
  128. package/lib/types/_ActivatableSkillCastingTime.js +1 -1
  129. package/lib/types/_ActivatableSkillCheckResultBased.d.ts +2 -2
  130. package/lib/types/_ActivatableSkillCheckResultBased.js +2 -2
  131. package/lib/types/_ActivatableSkillCost.d.ts +20 -20
  132. package/lib/types/_ActivatableSkillDuration.d.ts +13 -13
  133. package/lib/types/_ActivatableSkillDuration.js +1 -1
  134. package/lib/types/_ActivatableSkillEffect.d.ts +4 -4
  135. package/lib/types/_ActivatableSkillRange.d.ts +6 -6
  136. package/lib/types/_ActivatableSkillRange.js +1 -1
  137. package/lib/types/_ActivatableSkillTargetCategory.d.ts +4 -4
  138. package/lib/types/_AlternativeNames.d.ts +1 -1
  139. package/lib/types/_ArcaneTradition.d.ts +2 -2
  140. package/lib/types/_Blessed.d.ts +2 -2
  141. package/lib/types/_CommonnessRatedAdvantageDisadvantage.d.ts +1 -1
  142. package/lib/types/_Dice.d.ts +1 -1
  143. package/lib/types/_Dice.js +1 -1
  144. package/lib/types/_DiseasePoison.d.ts +4 -4
  145. package/lib/types/_DiseasePoison.js +1 -1
  146. package/lib/types/_Enhancements.d.ts +3 -3
  147. package/lib/types/_I18n.d.ts +1 -1
  148. package/lib/types/_Identifier.d.ts +132 -132
  149. package/lib/types/_IdentifierGroup.d.ts +20 -20
  150. package/lib/types/_ImprovementCost.js +1 -1
  151. package/lib/types/_Influence.d.ts +3 -3
  152. package/lib/types/_LocaleMap.d.ts +1 -1
  153. package/lib/types/_NonEmptyString.d.ts +2 -2
  154. package/lib/types/_Prerequisite.d.ts +21 -21
  155. package/lib/types/_ResponsiveText.d.ts +3 -3
  156. package/lib/types/_Sex.js +1 -1
  157. package/lib/types/_SimpleReferences.d.ts +44 -44
  158. package/lib/types/_SkillCheck.d.ts +1 -1
  159. package/lib/types/_SkillCheck.js +1 -1
  160. package/lib/types/_Spellwork.d.ts +2 -2
  161. package/lib/types/equipment/EquipmentPackage.d.ts +6 -5
  162. package/lib/types/equipment/EquipmentPackage.js +9 -2
  163. package/lib/types/equipment/item/Alchemicum.d.ts +3 -2
  164. package/lib/types/equipment/item/Alchemicum.js +9 -2
  165. package/lib/types/equipment/item/Ammunition.d.ts +6 -5
  166. package/lib/types/equipment/item/Ammunition.js +9 -2
  167. package/lib/types/equipment/item/Animal.d.ts +4 -3
  168. package/lib/types/equipment/item/Animal.js +9 -2
  169. package/lib/types/equipment/item/AnimalCare.d.ts +8 -7
  170. package/lib/types/equipment/item/AnimalCare.js +9 -2
  171. package/lib/types/equipment/item/Armor.d.ts +15 -14
  172. package/lib/types/equipment/item/Armor.js +9 -2
  173. package/lib/types/equipment/item/BandageOrRemedy.d.ts +4 -3
  174. package/lib/types/equipment/item/BandageOrRemedy.js +9 -2
  175. package/lib/types/equipment/item/Book.d.ts +6 -5
  176. package/lib/types/equipment/item/Book.js +9 -2
  177. package/lib/types/equipment/item/CeremonialItem.d.ts +4 -3
  178. package/lib/types/equipment/item/CeremonialItem.js +9 -2
  179. package/lib/types/equipment/item/Clothes.d.ts +3 -2
  180. package/lib/types/equipment/item/Clothes.js +9 -2
  181. package/lib/types/equipment/item/Container.d.ts +3 -2
  182. package/lib/types/equipment/item/Container.js +9 -2
  183. package/lib/types/equipment/item/Elixir.d.ts +6 -5
  184. package/lib/types/equipment/item/Elixir.js +9 -2
  185. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +4 -3
  186. package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +9 -2
  187. package/lib/types/equipment/item/GemOrPreciousStone.d.ts +6 -5
  188. package/lib/types/equipment/item/GemOrPreciousStone.js +9 -2
  189. package/lib/types/equipment/item/IlluminationLightSource.d.ts +6 -5
  190. package/lib/types/equipment/item/IlluminationLightSource.js +10 -3
  191. package/lib/types/equipment/item/IlluminationRefillsOrSupplies.d.ts +3 -2
  192. package/lib/types/equipment/item/IlluminationRefillsOrSupplies.js +9 -2
  193. package/lib/types/equipment/item/Jewelry.d.ts +7 -6
  194. package/lib/types/equipment/item/Jewelry.js +9 -2
  195. package/lib/types/equipment/item/Liebesspielzeug.d.ts +3 -2
  196. package/lib/types/equipment/item/Liebesspielzeug.js +9 -2
  197. package/lib/types/equipment/item/LuxuryGood.d.ts +4 -3
  198. package/lib/types/equipment/item/LuxuryGood.js +9 -2
  199. package/lib/types/equipment/item/MagicalArtifact.d.ts +6 -5
  200. package/lib/types/equipment/item/MagicalArtifact.js +9 -2
  201. package/lib/types/equipment/item/MusicalInstrument.d.ts +4 -3
  202. package/lib/types/equipment/item/MusicalInstrument.js +9 -2
  203. package/lib/types/equipment/item/OrienteeringAid.d.ts +3 -2
  204. package/lib/types/equipment/item/OrienteeringAid.js +9 -2
  205. package/lib/types/equipment/item/Poison.d.ts +30 -29
  206. package/lib/types/equipment/item/Poison.js +12 -5
  207. package/lib/types/equipment/item/RopeOrChain.d.ts +3 -2
  208. package/lib/types/equipment/item/RopeOrChain.js +9 -2
  209. package/lib/types/equipment/item/Stationary.d.ts +3 -2
  210. package/lib/types/equipment/item/Stationary.js +9 -2
  211. package/lib/types/equipment/item/ThievesTool.d.ts +3 -2
  212. package/lib/types/equipment/item/ThievesTool.js +9 -2
  213. package/lib/types/equipment/item/ToolOfTheTrade.d.ts +7 -6
  214. package/lib/types/equipment/item/ToolOfTheTrade.js +9 -2
  215. package/lib/types/equipment/item/TravelGearOrTool.d.ts +3 -2
  216. package/lib/types/equipment/item/TravelGearOrTool.js +9 -2
  217. package/lib/types/equipment/item/Vehicle.d.ts +4 -3
  218. package/lib/types/equipment/item/Vehicle.js +9 -2
  219. package/lib/types/equipment/item/Weapon.d.ts +11 -10
  220. package/lib/types/equipment/item/Weapon.js +9 -2
  221. package/lib/types/equipment/item/WeaponAccessory.d.ts +3 -2
  222. package/lib/types/equipment/item/WeaponAccessory.js +9 -2
  223. package/lib/types/equipment/item/_Herbary.d.ts +1 -1
  224. package/lib/types/equipment/item/_Herbary.js +2 -2
  225. package/lib/types/equipment/item/_Item.d.ts +12 -12
  226. package/lib/types/equipment/item/_MeleeWeapon.d.ts +7 -7
  227. package/lib/types/equipment/item/_RangedWeapon.d.ts +6 -6
  228. package/lib/types/equipment/item/_Weapon.d.ts +5 -5
  229. package/lib/types/equipment/item/sub/ArmorType.d.ts +4 -3
  230. package/lib/types/equipment/item/sub/ArmorType.js +9 -2
  231. package/lib/types/equipment/item/sub/Reach.d.ts +4 -3
  232. package/lib/types/equipment/item/sub/Reach.js +9 -2
  233. package/lib/types/magicalActions/AnimistPower.d.ts +20 -19
  234. package/lib/types/magicalActions/AnimistPower.js +9 -2
  235. package/lib/types/magicalActions/AnimistPower_Tribe.d.ts +4 -3
  236. package/lib/types/magicalActions/AnimistPower_Tribe.js +9 -2
  237. package/lib/types/magicalActions/Curse.d.ts +14 -13
  238. package/lib/types/magicalActions/Curse.js +9 -2
  239. package/lib/types/magicalActions/DominationRitual.d.ts +13 -12
  240. package/lib/types/magicalActions/DominationRitual.js +9 -2
  241. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +11 -10
  242. package/lib/types/magicalActions/ElvenMagicalSong.js +9 -2
  243. package/lib/types/magicalActions/GeodeRitual.d.ts +14 -13
  244. package/lib/types/magicalActions/GeodeRitual.js +9 -2
  245. package/lib/types/magicalActions/JesterTrick.d.ts +13 -12
  246. package/lib/types/magicalActions/JesterTrick.js +9 -2
  247. package/lib/types/magicalActions/MagicalDance.d.ts +10 -9
  248. package/lib/types/magicalActions/MagicalDance.js +9 -2
  249. package/lib/types/magicalActions/MagicalMelody.d.ts +10 -9
  250. package/lib/types/magicalActions/MagicalMelody.js +9 -2
  251. package/lib/types/magicalActions/MagicalRune.d.ts +26 -25
  252. package/lib/types/magicalActions/MagicalRune.js +9 -2
  253. package/lib/types/magicalActions/ZibiljaRitual.d.ts +7 -6
  254. package/lib/types/magicalActions/ZibiljaRitual.js +9 -2
  255. package/lib/types/magicalActions/_MusicTradition.d.ts +3 -3
  256. package/lib/types/magicalActions/_MusicTradition.js +2 -2
  257. package/lib/types/magicalActions/_SkillReference.d.ts +1 -1
  258. package/lib/types/magicalActions/_SkillReference.js +1 -1
  259. package/lib/types/prerequisites/ConditionalPrerequisites.d.ts +1 -1
  260. package/lib/types/prerequisites/DisplayOption.d.ts +2 -2
  261. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +15 -15
  262. package/lib/types/prerequisites/single/ActivatablePrerequisite.d.ts +1 -1
  263. package/lib/types/prerequisites/single/AncestorBloodPrerequisite.d.ts +1 -1
  264. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.d.ts +1 -1
  265. package/lib/types/prerequisites/single/CulturePrerequisite.d.ts +1 -1
  266. package/lib/types/prerequisites/single/EnhancementPrerequisite.d.ts +4 -4
  267. package/lib/types/prerequisites/single/InfluencePrerequisite.d.ts +1 -1
  268. package/lib/types/prerequisites/single/PactPrerequisite.d.ts +1 -1
  269. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.d.ts +1 -1
  270. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.js +1 -1
  271. package/lib/types/prerequisites/single/PublicationPrerequisite.d.ts +1 -1
  272. package/lib/types/prerequisites/single/RacePrerequisite.d.ts +1 -1
  273. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.d.ts +6 -6
  274. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +1 -1
  275. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +1 -1
  276. package/lib/types/prerequisites/single/RatedSumPrerequisite.d.ts +1 -1
  277. package/lib/types/prerequisites/single/RulePrerequisite.d.ts +1 -1
  278. package/lib/types/prerequisites/single/SexPrerequisite.d.ts +1 -1
  279. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.d.ts +1 -1
  280. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.js +1 -1
  281. package/lib/types/prerequisites/single/SocialStatusPrerequisite.d.ts +1 -1
  282. package/lib/types/prerequisites/single/StatePrerequisite.d.ts +1 -1
  283. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +2 -2
  284. package/lib/types/prerequisites/single/TextPrerequisite.js +2 -2
  285. package/lib/types/prerequisites/single/TraditionPrerequisite.d.ts +2 -2
  286. package/lib/types/prerequisites/single/TraditionPrerequisite.js +2 -2
  287. package/lib/types/rule/CoreRule.d.ts +15 -14
  288. package/lib/types/rule/CoreRule.js +10 -3
  289. package/lib/types/rule/FocusRule.d.ts +6 -5
  290. package/lib/types/rule/FocusRule.js +9 -2
  291. package/lib/types/rule/FocusRule_Subject.d.ts +4 -3
  292. package/lib/types/rule/FocusRule_Subject.js +9 -2
  293. package/lib/types/rule/OptionalRule.d.ts +6 -5
  294. package/lib/types/rule/OptionalRule.js +9 -2
  295. package/lib/types/source/Publication.d.ts +4 -3
  296. package/lib/types/source/Publication.js +10 -3
  297. package/lib/types/source/_Erratum.d.ts +2 -2
  298. package/lib/types/source/_PublicationRef.d.ts +13 -13
  299. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +6 -5
  300. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.js +9 -2
  301. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +6 -5
  302. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.js +9 -2
  303. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +6 -5
  304. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.js +9 -2
  305. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +6 -5
  306. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.js +9 -2
  307. package/lib/types/specialAbility/AncestorGlyph.d.ts +6 -5
  308. package/lib/types/specialAbility/AncestorGlyph.js +9 -2
  309. package/lib/types/specialAbility/BlessedTradition.d.ts +12 -11
  310. package/lib/types/specialAbility/BlessedTradition.js +9 -2
  311. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +6 -5
  312. package/lib/types/specialAbility/BrawlingSpecialAbility.js +9 -2
  313. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +4 -3
  314. package/lib/types/specialAbility/CeremonialItemSpecialAbility.js +9 -2
  315. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +4 -3
  316. package/lib/types/specialAbility/CombatSpecialAbility.js +9 -2
  317. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +6 -5
  318. package/lib/types/specialAbility/CombatStyleSpecialAbility.js +9 -2
  319. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +5 -4
  320. package/lib/types/specialAbility/CommandSpecialAbility.js +9 -2
  321. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +6 -5
  322. package/lib/types/specialAbility/FamiliarSpecialAbility.js +9 -2
  323. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +6 -5
  324. package/lib/types/specialAbility/FatePointSexSpecialAbility.js +9 -2
  325. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +6 -5
  326. package/lib/types/specialAbility/FatePointSpecialAbility.js +9 -2
  327. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +4 -3
  328. package/lib/types/specialAbility/GeneralSpecialAbility.js +9 -2
  329. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +4 -3
  330. package/lib/types/specialAbility/KarmaSpecialAbility.js +9 -2
  331. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +6 -5
  332. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.js +9 -2
  333. package/lib/types/specialAbility/LycantropicGift.d.ts +6 -5
  334. package/lib/types/specialAbility/LycantropicGift.js +9 -2
  335. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +6 -5
  336. package/lib/types/specialAbility/MagicStyleSpecialAbility.js +9 -2
  337. package/lib/types/specialAbility/MagicalSign.d.ts +6 -5
  338. package/lib/types/specialAbility/MagicalSign.js +9 -2
  339. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +4 -3
  340. package/lib/types/specialAbility/MagicalSpecialAbility.js +9 -2
  341. package/lib/types/specialAbility/MagicalTradition.d.ts +7 -6
  342. package/lib/types/specialAbility/MagicalTradition.js +9 -2
  343. package/lib/types/specialAbility/PactGift.d.ts +13 -12
  344. package/lib/types/specialAbility/PactGift.js +11 -4
  345. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +6 -5
  346. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.js +9 -2
  347. package/lib/types/specialAbility/Sermon.d.ts +6 -5
  348. package/lib/types/specialAbility/Sermon.js +9 -2
  349. package/lib/types/specialAbility/SexSpecialAbility.d.ts +6 -5
  350. package/lib/types/specialAbility/SexSpecialAbility.js +9 -2
  351. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +6 -5
  352. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.js +9 -2
  353. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +6 -5
  354. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +9 -2
  355. package/lib/types/specialAbility/VampiricGift.d.ts +4 -3
  356. package/lib/types/specialAbility/VampiricGift.js +9 -2
  357. package/lib/types/specialAbility/Vision.d.ts +6 -5
  358. package/lib/types/specialAbility/Vision.js +9 -2
  359. package/lib/types/specialAbility/_Tradition.d.ts +1 -1
  360. package/lib/types/specialAbility/sub/Language.d.ts +12 -11
  361. package/lib/types/specialAbility/sub/Language.js +9 -2
  362. package/lib/types/specialAbility/sub/Script.d.ts +6 -5
  363. package/lib/types/specialAbility/sub/Script.js +9 -2
  364. package/lib/types/specialAbility/sub/TradeSecret.d.ts +6 -5
  365. package/lib/types/specialAbility/sub/TradeSecret.js +9 -2
  366. package/lib/types/specialAbility/sub/_LanguageScript.d.ts +1 -1
  367. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +4 -3
  368. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.js +9 -2
  369. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +4 -3
  370. package/lib/types/traditionArtifacts/AttireEnchantment.js +9 -2
  371. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +4 -3
  372. package/lib/types/traditionArtifacts/BowlEnchantment.js +9 -2
  373. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +5 -4
  374. package/lib/types/traditionArtifacts/CauldronEnchantment.js +9 -2
  375. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +4 -3
  376. package/lib/types/traditionArtifacts/ChronicleEnchantment.js +9 -2
  377. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +8 -7
  378. package/lib/types/traditionArtifacts/DaggerRitual.js +9 -2
  379. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +4 -3
  380. package/lib/types/traditionArtifacts/FoolsHatEnchantment.js +9 -2
  381. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +4 -3
  382. package/lib/types/traditionArtifacts/InstrumentEnchantment.js +9 -2
  383. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +4 -3
  384. package/lib/types/traditionArtifacts/Krallenkettenzauber.js +9 -2
  385. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +4 -3
  386. package/lib/types/traditionArtifacts/OrbEnchantment.js +9 -2
  387. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +4 -3
  388. package/lib/types/traditionArtifacts/RingEnchantment.js +9 -2
  389. package/lib/types/traditionArtifacts/SickleRitual.d.ts +4 -3
  390. package/lib/types/traditionArtifacts/SickleRitual.js +9 -2
  391. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +4 -3
  392. package/lib/types/traditionArtifacts/SpellSwordEnchantment.js +9 -2
  393. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +4 -3
  394. package/lib/types/traditionArtifacts/StaffEnchantment.js +9 -2
  395. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +4 -3
  396. package/lib/types/traditionArtifacts/ToyEnchantment.js +9 -2
  397. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +4 -3
  398. package/lib/types/traditionArtifacts/Trinkhornzauber.js +9 -2
  399. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +4 -3
  400. package/lib/types/traditionArtifacts/WandEnchantment.js +9 -2
  401. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +4 -3
  402. package/lib/types/traditionArtifacts/WeaponEnchantment.js +9 -2
  403. package/lib/types/traditionArtifacts/sub/AnimalShape.d.ts +6 -5
  404. package/lib/types/traditionArtifacts/sub/AnimalShape.js +9 -2
  405. package/lib/types/traditionArtifacts/sub/AnimalShapePath.d.ts +4 -3
  406. package/lib/types/traditionArtifacts/sub/AnimalShapePath.js +9 -2
  407. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.d.ts +4 -3
  408. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.js +9 -2
  409. package/lib/types/traditionArtifacts/sub/Brew.d.ts +4 -3
  410. package/lib/types/traditionArtifacts/sub/Brew.js +9 -2
  411. package/lib/validation/builders/integrity.d.ts +57 -0
  412. package/lib/validation/builders/integrity.js +44 -0
  413. package/lib/validation/builders/naming.d.ts +13 -0
  414. package/lib/validation/builders/naming.js +14 -0
  415. package/lib/validation/builders/schema.d.ts +31 -0
  416. package/lib/validation/builders/schema.js +32 -0
  417. package/lib/validation/filename.d.ts +9 -0
  418. package/lib/validation/filename.js +10 -0
  419. package/lib/validation/raw.d.ts +9 -0
  420. package/lib/validation/raw.js +55 -0
  421. package/lib/validation/schema.d.ts +6 -22
  422. package/lib/validation/schema.js +31 -32
  423. package/package.json +11 -6
  424. package/schema/Locale.schema.json +1 -8
  425. package/config/directories.d.ts +0 -4
  426. package/config/directories.js +0 -14
  427. package/lib/validation/integrity.d.ts +0 -16
  428. package/lib/validation/integrity.js +0 -3
@@ -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";
@@ -9,7 +10,7 @@ import { PublicationRefs } from "../source/_PublicationRef.js";
9
10
  /**
10
11
  * @title Spell-Sword Enchantment
11
12
  */
12
- export declare type SpellSwordEnchantment = {
13
+ export type SpellSwordEnchantment = {
13
14
  id: Activatable.Id;
14
15
  levels?: Activatable.Levels;
15
16
  select_options?: Activatable.SelectOptions;
@@ -25,7 +26,7 @@ export declare type SpellSwordEnchantment = {
25
26
  */
26
27
  translations: LocaleMap<SpellSwordEnchantmentTranslation>;
27
28
  };
28
- export declare type SpellSwordEnchantmentTranslation = {
29
+ export type SpellSwordEnchantmentTranslation = {
29
30
  name: Activatable.Name;
30
31
  name_in_library?: Activatable.NameInLibrary;
31
32
  effect: Activatable.Effect;
@@ -48,4 +49,4 @@ export declare 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";
@@ -10,7 +11,7 @@ import { PublicationRefs } from "../source/_PublicationRef.js";
10
11
  /**
11
12
  * @title Staff Enchantment
12
13
  */
13
- export declare type StaffEnchantment = {
14
+ export type StaffEnchantment = {
14
15
  id: Activatable.Id;
15
16
  levels?: Activatable.Levels;
16
17
  select_options?: Activatable.SelectOptions;
@@ -26,7 +27,7 @@ export declare type StaffEnchantment = {
26
27
  */
27
28
  translations: LocaleMap<StaffEnchantmentTranslation>;
28
29
  };
29
- export declare type StaffEnchantmentTranslation = {
30
+ export type StaffEnchantmentTranslation = {
30
31
  name: Activatable.Name;
31
32
  name_in_library?: Activatable.NameInLibrary;
32
33
  effect: Activatable.Effect;
@@ -53,4 +54,4 @@ export declare 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";
@@ -9,7 +10,7 @@ import { PublicationRefs } from "../source/_PublicationRef.js";
9
10
  /**
10
11
  * @title Toy Enchantment
11
12
  */
12
- export declare type ToyEnchantment = {
13
+ export type ToyEnchantment = {
13
14
  id: Activatable.Id;
14
15
  levels?: Activatable.Levels;
15
16
  select_options?: Activatable.SelectOptions;
@@ -25,7 +26,7 @@ export declare type ToyEnchantment = {
25
26
  */
26
27
  translations: LocaleMap<ToyEnchantmentTranslation>;
27
28
  };
28
- export declare type ToyEnchantmentTranslation = {
29
+ export type ToyEnchantmentTranslation = {
29
30
  name: Activatable.Name;
30
31
  name_in_library?: Activatable.NameInLibrary;
31
32
  effect: Activatable.Effect;
@@ -43,4 +44,4 @@ export declare 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";
@@ -9,7 +10,7 @@ import { PublicationRefs } from "../source/_PublicationRef.js";
9
10
  /**
10
11
  * @title Trinkhornzauber
11
12
  */
12
- export declare type Trinkhornzauber = {
13
+ export type Trinkhornzauber = {
13
14
  id: Activatable.Id;
14
15
  levels?: Activatable.Levels;
15
16
  select_options?: Activatable.SelectOptions;
@@ -25,7 +26,7 @@ export declare type Trinkhornzauber = {
25
26
  */
26
27
  translations: LocaleMap<TrinkhornzauberTranslation>;
27
28
  };
28
- export declare type TrinkhornzauberTranslation = {
29
+ export type TrinkhornzauberTranslation = {
29
30
  name: Activatable.Name;
30
31
  name_in_library?: Activatable.NameInLibrary;
31
32
  effect: Activatable.Effect;
@@ -43,4 +44,4 @@ export declare 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";
@@ -9,7 +10,7 @@ import { PublicationRefs } from "../source/_PublicationRef.js";
9
10
  /**
10
11
  * @title Wand Enchantment
11
12
  */
12
- export declare type WandEnchantment = {
13
+ export type WandEnchantment = {
13
14
  id: Activatable.Id;
14
15
  levels?: Activatable.Levels;
15
16
  select_options?: Activatable.SelectOptions;
@@ -24,7 +25,7 @@ export declare type WandEnchantment = {
24
25
  */
25
26
  translations: LocaleMap<WandEnchantmentTranslation>;
26
27
  };
27
- export declare type WandEnchantmentTranslation = {
28
+ export type WandEnchantmentTranslation = {
28
29
  name: Activatable.Name;
29
30
  name_in_library?: Activatable.NameInLibrary;
30
31
  effect: Activatable.Effect;
@@ -38,4 +39,4 @@ export declare 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";
@@ -9,7 +10,7 @@ import { PublicationRefs } from "../source/_PublicationRef.js";
9
10
  /**
10
11
  * @title Weapon Enchantment
11
12
  */
12
- export declare type WeaponEnchantment = {
13
+ export type WeaponEnchantment = {
13
14
  id: Activatable.Id;
14
15
  levels?: Activatable.Levels;
15
16
  select_options?: Activatable.SelectOptions;
@@ -25,7 +26,7 @@ export declare type WeaponEnchantment = {
25
26
  */
26
27
  translations: LocaleMap<WeaponEnchantmentTranslation>;
27
28
  };
28
- export declare type WeaponEnchantmentTranslation = {
29
+ export type WeaponEnchantmentTranslation = {
29
30
  name: Activatable.Name;
30
31
  name_in_library?: Activatable.NameInLibrary;
31
32
  effect: Activatable.Effect;
@@ -43,4 +44,4 @@ export declare 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,12 +1,13 @@
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
  /**
7
8
  * @title Animal Shape
8
9
  */
9
- export declare type AnimalShape = {
10
+ export type AnimalShape = {
10
11
  /**
11
12
  * The animal shape's identifier. An unique, increasing integer.
12
13
  * @integer
@@ -26,7 +27,7 @@ export declare type AnimalShape = {
26
27
  */
27
28
  translations: LocaleMap<AnimalShapeTranslation>;
28
29
  };
29
- export declare type AnimalShapePathReference = {
30
+ export type AnimalShapePathReference = {
30
31
  /**
31
32
  * The identifier of the animal shape's path.
32
33
  * @integer
@@ -34,7 +35,7 @@ export declare type AnimalShapePathReference = {
34
35
  */
35
36
  id: number;
36
37
  };
37
- export declare type AnimalShapeSizeReference = {
38
+ export type AnimalShapeSizeReference = {
38
39
  /**
39
40
  * The identifier of the animal shape's size.
40
41
  * @integer
@@ -42,10 +43,10 @@ export declare type AnimalShapeSizeReference = {
42
43
  */
43
44
  id: number;
44
45
  };
45
- export declare type AnimalShapeTranslation = {
46
+ export type AnimalShapeTranslation = {
46
47
  /**
47
48
  * The animal shape name.
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,12 +1,13 @@
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
  /**
7
8
  * @title Animal Shape Path
8
9
  */
9
- export declare type AnimalShapePath = {
10
+ export type AnimalShapePath = {
10
11
  /**
11
12
  * The animal shape path's identifier. An unique, increasing integer.
12
13
  * @integer
@@ -18,10 +19,10 @@ export declare type AnimalShapePath = {
18
19
  */
19
20
  translations: LocaleMap<AnimalShapePathTranslation>;
20
21
  };
21
- export declare type AnimalShapePathTranslation = {
22
+ export type AnimalShapePathTranslation = {
22
23
  /**
23
24
  * The animal shape path's name.
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,12 +1,13 @@
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
  /**
7
8
  * @title Animal Shape Size
8
9
  */
9
- export declare type AnimalShapeSize = {
10
+ export type AnimalShapeSize = {
10
11
  /**
11
12
  * The animal shape's identifier. An unique, increasing integer.
12
13
  * @integer
@@ -30,10 +31,10 @@ export declare type AnimalShapeSize = {
30
31
  */
31
32
  translations: LocaleMap<AnimalShapeSizeTranslation>;
32
33
  };
33
- export declare type AnimalShapeSizeTranslation = {
34
+ export type AnimalShapeSizeTranslation = {
34
35
  /**
35
36
  * The animal shape size name.
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,12 +1,13 @@
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
  /**
7
8
  * @title Brew
8
9
  */
9
- export declare type Brew = {
10
+ export type Brew = {
10
11
  /**
11
12
  * The brew's identifier. An unique, increasing integer.
12
13
  * @integer
@@ -18,10 +19,10 @@ export declare type Brew = {
18
19
  */
19
20
  translations: LocaleMap<BrewTranslation>;
20
21
  };
21
- export declare type BrewTranslation = {
22
+ export type BrewTranslation = {
22
23
  /**
23
24
  * The brew name.
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;
@@ -0,0 +1,14 @@
1
+ import { basename } from "node:path";
2
+ import { error, ok } from "../../helpers/result.js";
3
+ const BASE_NAME_PATTERN = /^(?:0|[1-9][0-9]*)_(?:[A-Z][a-zA-Z]*|[1-9][0-9]*)(?:-(?:[a-zA-Z]+|[1-9][0-9]*))*\.yml$/;
4
+ const fileNameError = (fileName) => ({
5
+ keyword: "filename",
6
+ instancePath: "",
7
+ message: `the file name "${fileName}" does not match the pattern ${BASE_NAME_PATTERN.source}`
8
+ });
9
+ export const validateFileName = (filePath) => {
10
+ const fileName = basename(filePath);
11
+ return BASE_NAME_PATTERN.test(fileName)
12
+ ? ok(undefined)
13
+ : error([fileNameError(fileName)]);
14
+ };