@optolith/database-schema 0.88.0 → 0.90.1

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 (69) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/gen/types.d.ts +463 -311
  3. package/lib/cache/activatableSelectOptions.js +21 -19
  4. package/lib/cache/ancestorBloodAdvantages.js +4 -1
  5. package/lib/cache/magicalAndBlessedAdvantagesAndDisadvantages.js +21 -22
  6. package/lib/cache/newApplicationsAndUses.js +4 -1
  7. package/lib/cache/tradeSecrets.js +1 -1
  8. package/lib/main.js +1 -0
  9. package/lib/test.js +1 -0
  10. package/lib/types/AnimalDisease.js +1 -1
  11. package/lib/types/Attribute.js +1 -1
  12. package/lib/types/Culture.d.ts +9 -4
  13. package/lib/types/Culture.js +24 -1
  14. package/lib/types/DerivedCharacteristic.js +3 -1
  15. package/lib/types/Disease.js +1 -1
  16. package/lib/types/Lessons.js +1 -1
  17. package/lib/types/Locale.js +1 -0
  18. package/lib/types/PatronCategory.js +1 -1
  19. package/lib/types/PersonalityTrait.js +1 -1
  20. package/lib/types/Profession.d.ts +16 -8
  21. package/lib/types/Race.d.ts +16 -8
  22. package/lib/types/TargetCategory.js +1 -1
  23. package/lib/types/_ActivatableNonMundane.js +1 -1
  24. package/lib/types/_ActivatableSelectOptionCategory.js +1 -1
  25. package/lib/types/_ActivatableSelectOptions.js +1 -1
  26. package/lib/types/_ActivatableSkill.d.ts +1 -1
  27. package/lib/types/_ActivatableSkill.js +1 -1
  28. package/lib/types/_ActivatableSkillApplicationsAndUses.js +1 -1
  29. package/lib/types/_ActivatableSkillCastingTime.js +2 -2
  30. package/lib/types/_ActivatableSkillDuration.js +2 -2
  31. package/lib/types/_ActivatableSkillTargetCategory.js +1 -1
  32. package/lib/types/_ArcaneTradition.js +1 -1
  33. package/lib/types/_CommonnessRatedAdvantageDisadvantage.d.ts +2 -1
  34. package/lib/types/_CommonnessRatedAdvantageDisadvantage.js +2 -2
  35. package/lib/types/_DiseasePoison.js +1 -1
  36. package/lib/types/_Enhancements.d.ts +1 -1
  37. package/lib/types/_Enhancements.js +1 -1
  38. package/lib/types/_Identifier.d.ts +1 -0
  39. package/lib/types/_Identifier.js +2 -0
  40. package/lib/types/_IdentifierGroup.d.ts +23 -0
  41. package/lib/types/_IdentifierGroup.js +9 -1
  42. package/lib/types/_Prerequisite.d.ts +1 -1
  43. package/lib/types/_Prerequisite.js +1 -1
  44. package/lib/types/_ResponsiveText.js +2 -2
  45. package/lib/types/equipment/item/Elixir.js +1 -1
  46. package/lib/types/equipment/item/HerbalAid.js +2 -2
  47. package/lib/types/equipment/item/HerbalPreservation.js +3 -3
  48. package/lib/types/equipment/item/Plant.js +2 -2
  49. package/lib/types/equipment/item/Poison.js +1 -1
  50. package/lib/types/equipment/item/_Item.js +1 -1
  51. package/lib/types/equipment/item/sub/BotanicRegion.js +1 -1
  52. package/lib/types/equipment/item/sub/SubBiome.js +1 -1
  53. package/lib/types/index.d.ts +1 -0
  54. package/lib/types/index.js +1 -0
  55. package/lib/types/magicalActions/AnimistPower_Tribe.js +1 -1
  56. package/lib/types/magicalActions/MagicalDance.d.ts +2 -2
  57. package/lib/types/magicalActions/MagicalMelody.d.ts +2 -2
  58. package/lib/types/magicalActions/_MusicTradition.d.ts +2 -2
  59. package/lib/types/magicalActions/_MusicTradition.js +2 -2
  60. package/lib/types/prerequisites/PrerequisiteGroups.js +7 -9
  61. package/lib/types/prerequisites/single/AnySpecialAbilityOfGroupPrerequisite.js +4 -6
  62. package/lib/types/source/Publication.js +1 -1
  63. package/lib/types/specialAbility/BlessedTradition.d.ts +1 -0
  64. package/lib/types/specialAbility/BlessedTradition.js +5 -1
  65. package/lib/types/specialAbility/sub/BlessedTraditionGroup.d.ts +7 -0
  66. package/lib/types/specialAbility/sub/BlessedTraditionGroup.js +25 -0
  67. package/lib/types/specialAbility/sub/MagicalTraditionSubgroup.js +1 -1
  68. package/lib/types/traditionArtifacts/_shared.js +1 -1
  69. package/package.json +10 -12
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @title Activatable Skill
2
+ * @module Activatable Skill
3
3
  */
4
4
  import * as DB from "tsondb/schema/dsl";
5
5
  import { FastCastingTime, SlowCastingTime } from "./_ActivatableSkillCastingTime.js";
@@ -1,7 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "./Locale.js";
3
2
  import { SkillIdentifier } from "./_Identifier.js";
4
3
  import { NewSkillApplicationOrUseParentIdentifier } from "./_IdentifierGroup.js";
4
+ import { NestedTranslationMap } from "./Locale.js";
5
5
  export const NewSkillApplication = DB.Entity(import.meta.url, {
6
6
  name: "NewSkillApplication",
7
7
  namePlural: "NewSkillApplications",
@@ -1,8 +1,8 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "./Locale.js";
3
- import { SlowSkillCastingTimeUnit } from "./SkillModificationLevel.js";
4
2
  import { SkillModificationLevelIdentifier } from "./_Identifier.js";
5
3
  import { ResponsiveTextOptional } from "./_ResponsiveText.js";
4
+ import { NestedTranslationMap } from "./Locale.js";
5
+ import { SlowSkillCastingTimeUnit } from "./SkillModificationLevel.js";
6
6
  export const CastingTime = DB.GenEnum(import.meta.url, {
7
7
  name: "CastingTime",
8
8
  parameters: [DB.Param("NonModifiable")],
@@ -134,7 +134,7 @@ const CustomDurationUnit = DB.TypeAlias(import.meta.url, {
134
134
  comment: "A translation for a numeric value of the custom duration unit, e.g. ‘3 days’. The translation string can and should make use of the `$value` and `$style` variables. The `$style` variable can be either `interval` or `default`.",
135
135
  type: DB.String({
136
136
  minLength: 1,
137
- pattern: /^\.input \{\$value :number\}[\n ]\.input \{\$style :string\}/,
137
+ pattern: /^\.input \{\$value :number\}[\n ]\.input \{\$style :string\}/u,
138
138
  }),
139
139
  }),
140
140
  full: DB.Required({
@@ -151,7 +151,7 @@ const CustomDurationUnit = DB.TypeAlias(import.meta.url, {
151
151
  comment: "A translation for a numeric value of the custom duration unit for use in small spaces, e.g. ‘3 d.’. The translation string can and should make use of the `$value` and `$style` variables. The `$style` variable can be either `interval` or `default`.",
152
152
  type: DB.String({
153
153
  minLength: 1,
154
- pattern: /^\.input \{\$value :number\}[\n ]\.input \{\$style :string\}/,
154
+ pattern: /^\.input \{\$value :number\}[\n ]\.input \{\$style :string\}/u,
155
155
  }),
156
156
  }),
157
157
  compressed: DB.Required({
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "./Locale.js";
3
2
  import { TargetCategoryIdentifier } from "./_Identifier.js";
3
+ import { NestedTranslationMap } from "./Locale.js";
4
4
  export const AffectedTargetCategories = DB.TypeAlias(import.meta.url, {
5
5
  name: "AffectedTargetCategories",
6
6
  comment: `The target category – the kind of creature or object – the skill affects.
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "./Locale.js";
3
2
  import { ArcaneTraditionPrerequisites } from "./_Prerequisite.js";
3
+ import { NestedTranslationMap } from "./Locale.js";
4
4
  export const ArcaneTraditionType = (translationName) => () => DB.Object({
5
5
  prerequisites: DB.Required({
6
6
  type: DB.IncludeIdentifier(ArcaneTraditionPrerequisites),
@@ -8,7 +8,8 @@ export declare const CommonnessRatedAdvantageDisadvantage: DB.TypeAlias<"Commonn
8
8
  max: DB.MemberDecl<DB.Integer, true>;
9
9
  }>>;
10
10
  }, []>>, false>;
11
- options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"RequirableSelectOptionIdentifier", {
11
+ options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"CommonnessSelectOptionIdentifier", {
12
+ SkillGroup: DB.EnumCase<DB.ReferenceIdentifier>;
12
13
  General: DB.EnumCase<DB.ReferenceIdentifier>;
13
14
  Race: DB.EnumCase<DB.ReferenceIdentifier>;
14
15
  Skill: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { CommonnessSelectOptionIdentifier } from "./_IdentifierGroup.js";
2
3
  import { NestedTranslationMap } from "./Locale.js";
3
- import { RequirableSelectOptionIdentifier } from "./_IdentifierGroup.js";
4
4
  export const CommonnessRatedAdvantageDisadvantage = DB.GenTypeAlias(import.meta.url, {
5
5
  name: "CommonnessRatedAdvantageDisadvantage",
6
6
  comment: "Reference to a commonness-rated advantage or disadvantage. Commonness-rating terms used in the source books are strongly recommended, common, uncommon, suggested and unsuitable.",
@@ -16,7 +16,7 @@ export const CommonnessRatedAdvantageDisadvantage = DB.GenTypeAlias(import.meta.
16
16
  }),
17
17
  options: DB.Optional({
18
18
  comment: "The options the commonness rating applies to.",
19
- type: DB.Array(DB.IncludeIdentifier(RequirableSelectOptionIdentifier), { minItems: 1 }),
19
+ type: DB.Array(DB.IncludeIdentifier(CommonnessSelectOptionIdentifier), { minItems: 1 }),
20
20
  }),
21
21
  translations: NestedTranslationMap(DB.Optional, "CommonnessRatedAdvantageDisadvantage", DB.Object({
22
22
  options: DB.Optional({
@@ -3,9 +3,9 @@
3
3
  */
4
4
  import { isNotNullish, nullableToArray } from "@elyukai/utils/nullable";
5
5
  import * as DB from "tsondb/schema/dsl";
6
- import { NestedTranslationMap } from "./Locale.js";
7
6
  import { AlternativeName } from "./_AlternativeNames.js";
8
7
  import { DerivedCharacteristicIdentifier } from "./_Identifier.js";
8
+ import { NestedTranslationMap } from "./Locale.js";
9
9
  import { Errata } from "./source/_Erratum.js";
10
10
  export const level = DB.Required({
11
11
  comment: "The disease’s level.",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @title Enhancements
2
+ * @module Enhancements
3
3
  */
4
4
  import * as DB from "tsondb/schema/dsl";
5
5
  export declare const Enhancements: DB.TypeAlias<"Enhancements", DB.ChildEntities<DB.Entity<"Enhancement", {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @title Enhancements
2
+ * @module Enhancements
3
3
  */
4
4
  import * as DB from "tsondb/schema/dsl";
5
5
  import { input } from "./_Activatable.js";
@@ -27,6 +27,7 @@ export declare const BannzeichenOptionIdentifier: () => R;
27
27
  export declare const BeutelzauberIdentifier: () => R;
28
28
  export declare const BiomeIdentifier: () => R;
29
29
  export declare const BlessedTraditionIdentifier: () => R;
30
+ export declare const BlessedTraditionGroupIdentifier: () => R;
30
31
  export declare const BlessingIdentifier: () => R;
31
32
  export declare const BookIdentifier: () => R;
32
33
  export declare const BowlEnchantmentIdentifier: () => R;
@@ -128,6 +128,7 @@ import { Sermon } from "./specialAbility/Sermon.js";
128
128
  import { SexSpecialAbility } from "./specialAbility/SexSpecialAbility.js";
129
129
  import { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpecialAbility.js";
130
130
  import { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
131
+ import { BlessedTraditionGroup } from "./specialAbility/sub/BlessedTraditionGroup.js";
131
132
  import { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
132
133
  import { Language, LanguageSpecialization } from "./specialAbility/sub/Language.js";
133
134
  import { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.js";
@@ -194,6 +195,7 @@ export const BannzeichenOptionIdentifier = () => R(BannzeichenOption);
194
195
  export const BeutelzauberIdentifier = () => R(Beutelzauber);
195
196
  export const BiomeIdentifier = () => R(Biome);
196
197
  export const BlessedTraditionIdentifier = () => R(BlessedTradition);
198
+ export const BlessedTraditionGroupIdentifier = () => R(BlessedTraditionGroup);
197
199
  export const BlessingIdentifier = () => R(Blessing);
198
200
  export const BookIdentifier = () => R(Book);
199
201
  export const BowlEnchantmentIdentifier = () => R(BowlEnchantment);
@@ -402,6 +402,29 @@ export declare const RequirableSelectOptionIdentifier: DB.Enum<"RequirableSelect
402
402
  ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
403
403
  Element: DB.EnumCase<DB.ReferenceIdentifier>;
404
404
  }, []>;
405
+ export declare const CommonnessSelectOptionIdentifier: DB.Enum<"CommonnessSelectOptionIdentifier", {
406
+ SkillGroup: DB.EnumCase<DB.ReferenceIdentifier>;
407
+ General: DB.EnumCase<DB.ReferenceIdentifier>;
408
+ Race: DB.EnumCase<DB.ReferenceIdentifier>;
409
+ Skill: DB.EnumCase<DB.ReferenceIdentifier>;
410
+ SkillApplication: DB.EnumCase<DB.ReferenceIdentifier>;
411
+ CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
412
+ RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
413
+ Property: DB.EnumCase<DB.ReferenceIdentifier>;
414
+ Aspect: DB.EnumCase<DB.ReferenceIdentifier>;
415
+ Disease: DB.EnumCase<DB.ReferenceIdentifier>;
416
+ Poison: DB.EnumCase<DB.ReferenceIdentifier>;
417
+ Language: DB.EnumCase<DB.ReferenceIdentifier>;
418
+ AnimalShape: DB.EnumCase<DB.ReferenceIdentifier>;
419
+ LiturgicalChant: DB.EnumCase<DB.ReferenceIdentifier>;
420
+ Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
421
+ Spell: DB.EnumCase<DB.ReferenceIdentifier>;
422
+ Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
423
+ TradeSecret: DB.EnumCase<DB.ReferenceIdentifier>;
424
+ ArcaneBardTradition: DB.EnumCase<DB.ReferenceIdentifier>;
425
+ ArcaneDancerTradition: DB.EnumCase<DB.ReferenceIdentifier>;
426
+ Element: DB.EnumCase<DB.ReferenceIdentifier>;
427
+ }, []>;
405
428
  export declare const CoreRuleDerivableContentIdentifier: DB.Enum<"CoreRuleDerivableContentIdentifier", {
406
429
  MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
407
430
  FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1,6 +1,6 @@
1
1
  import { sortObjectKeys } from "@elyukai/utils/object";
2
2
  import * as DB from "tsondb/schema/dsl";
3
- import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, ArmorIdentifier, AspectIdentifier, AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, BannzeichenIdentifier, BeutelzauberIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, BookIdentifier, BowlEnchantmentIdentifier, BrawlingSpecialAbilityIdentifier, CantripIdentifier, CauldronEnchantmentIdentifier, CeremonialItemIdentifier, CeremonialItemSpecialAbilityIdentifier, CeremonyIdentifier, ChronicleEnchantmentIdentifier, CloseCombatTechniqueIdentifier, ClothesIdentifier, ClothingPackageIdentifier, CombatSpecialAbilityIdentifier, CombatStyleSpecialAbilityIdentifier, CommandSpecialAbilityIdentifier, ContainerIdentifier, CultureIdentifier, CurseIdentifier, DaggerRitualIdentifier, DisadvantageIdentifier, DiseaseIdentifier, DominationRitualIdentifier, ElementIdentifier, ElixirIdentifier, ElvenMagicalSongIdentifier, EnhancementIdentifier, EquipmentOfBlessedOnesIdentifier, FamiliarSpecialAbilityIdentifier, FatePointSexSpecialAbilityIdentifier, FatePointSpecialAbilityIdentifier, FocusRuleIdentifier, FoolsHatEnchantmentIdentifier, GemOrPreciousStoneIdentifier, GeneralIdentifier, GeneralSpecialAbilityIdentifier, GeodeRitualIdentifier, GoblinRitualIdentifier, HaubenzauberIdentifier, HauerkettenzauberIdentifier, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, KeulenzauberIdentifier, KrallenkettenzauberIdentifier, KristallkugelzauberIdentifier, LaboratoryIdentifier, LanguageIdentifier, LiebesspielzeugIdentifier, LiturgicalChantIdentifier, LiturgicalStyleSpecialAbilityIdentifier, LuxuryGoodIdentifier, LycantropicGiftIdentifier, MagicalArtifactIdentifier, MagicalDanceIdentifier, MagicalMelodyIdentifier, MagicalRuneIdentifier, MagicalSignIdentifier, MagicalSpecialAbilityIdentifier, MagicalTraditionIdentifier, MagicStyleSpecialAbilityIdentifier, MusicalInstrumentIdentifier, NewspaperIdentifier, OptionalRuleIdentifier, OrbEnchantmentIdentifier, OrienteeringAidIdentifier, PactGiftIdentifier, PatronIdentifier, PoisonIdentifier, PropertyIdentifier, ProtectiveWardingCircleSpecialAbilityIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RingEnchantmentIdentifier, RitualIdentifier, RopeOrChainIdentifier, SchweinetrommelzauberIdentifier, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, SkillIdentifier, SkillStyleSpecialAbilityIdentifier, SpellIdentifier, SpellSwordEnchantmentIdentifier, StaffEnchantmentIdentifier, StationeryIdentifier, TargetCategoryIdentifier, ThievesToolIdentifier, ToolOfTheTradeIdentifier, ToyEnchantmentIdentifier, TradeSecretIdentifier, TravelGearOrToolIdentifier, TrinkhornzauberIdentifier, VampiricGiftIdentifier, VehicleIdentifier, VisionIdentifier, WandEnchantmentIdentifier, WeaponAccessoryIdentifier, WeaponEnchantmentIdentifier, WeaponIdentifier, WorkingSupernaturalCreatureIdentifier, ZibiljaRitualIdentifier, } from "./_Identifier.js";
3
+ import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, ArmorIdentifier, AspectIdentifier, AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, BannzeichenIdentifier, BeutelzauberIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, BookIdentifier, BowlEnchantmentIdentifier, BrawlingSpecialAbilityIdentifier, CantripIdentifier, CauldronEnchantmentIdentifier, CeremonialItemIdentifier, CeremonialItemSpecialAbilityIdentifier, CeremonyIdentifier, ChronicleEnchantmentIdentifier, CloseCombatTechniqueIdentifier, ClothesIdentifier, ClothingPackageIdentifier, CombatSpecialAbilityIdentifier, CombatStyleSpecialAbilityIdentifier, CommandSpecialAbilityIdentifier, ContainerIdentifier, CultureIdentifier, CurseIdentifier, DaggerRitualIdentifier, DisadvantageIdentifier, DiseaseIdentifier, DominationRitualIdentifier, ElementIdentifier, ElixirIdentifier, ElvenMagicalSongIdentifier, EnhancementIdentifier, EquipmentOfBlessedOnesIdentifier, FamiliarSpecialAbilityIdentifier, FatePointSexSpecialAbilityIdentifier, FatePointSpecialAbilityIdentifier, FocusRuleIdentifier, FoolsHatEnchantmentIdentifier, GemOrPreciousStoneIdentifier, GeneralIdentifier, GeneralSpecialAbilityIdentifier, GeodeRitualIdentifier, GoblinRitualIdentifier, HaubenzauberIdentifier, HauerkettenzauberIdentifier, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, KeulenzauberIdentifier, KrallenkettenzauberIdentifier, KristallkugelzauberIdentifier, LaboratoryIdentifier, LanguageIdentifier, LiebesspielzeugIdentifier, LiturgicalChantIdentifier, LiturgicalStyleSpecialAbilityIdentifier, LuxuryGoodIdentifier, LycantropicGiftIdentifier, MagicalArtifactIdentifier, MagicalDanceIdentifier, MagicalMelodyIdentifier, MagicalRuneIdentifier, MagicalSignIdentifier, MagicalSpecialAbilityIdentifier, MagicalTraditionIdentifier, MagicStyleSpecialAbilityIdentifier, MusicalInstrumentIdentifier, NewspaperIdentifier, OptionalRuleIdentifier, OrbEnchantmentIdentifier, OrienteeringAidIdentifier, PactGiftIdentifier, PatronIdentifier, PoisonIdentifier, PropertyIdentifier, ProtectiveWardingCircleSpecialAbilityIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RingEnchantmentIdentifier, RitualIdentifier, RopeOrChainIdentifier, SchweinetrommelzauberIdentifier, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, SkillGroupIdentifier, SkillIdentifier, SkillStyleSpecialAbilityIdentifier, SpellIdentifier, SpellSwordEnchantmentIdentifier, StaffEnchantmentIdentifier, StationeryIdentifier, TargetCategoryIdentifier, ThievesToolIdentifier, ToolOfTheTradeIdentifier, ToyEnchantmentIdentifier, TradeSecretIdentifier, TravelGearOrToolIdentifier, TrinkhornzauberIdentifier, VampiricGiftIdentifier, VehicleIdentifier, VisionIdentifier, WandEnchantmentIdentifier, WeaponAccessoryIdentifier, WeaponEnchantmentIdentifier, WeaponIdentifier, WorkingSupernaturalCreatureIdentifier, ZibiljaRitualIdentifier, } from "./_Identifier.js";
4
4
  export const ActivatableIdentifier = DB.Enum(import.meta.url, {
5
5
  name: "ActivatableIdentifier",
6
6
  values: () => ({
@@ -286,6 +286,14 @@ export const RequirableSelectOptionIdentifier = DB.Enum(import.meta.url, {
286
286
  Element: DB.EnumCase({ type: ElementIdentifier() }),
287
287
  }),
288
288
  });
289
+ export const CommonnessSelectOptionIdentifier = DB.Enum(import.meta.url, {
290
+ name: "CommonnessSelectOptionIdentifier",
291
+ comment: "A skill group can be chosen as an option for commonness-rated advantages and disadvantages, but it refers to all skills within that group, rather than being a select option itself.",
292
+ values: () => ({
293
+ ...RequirableSelectOptionIdentifier.type.value.values,
294
+ SkillGroup: DB.EnumCase({ type: SkillGroupIdentifier() }),
295
+ }),
296
+ });
289
297
  export const CoreRuleDerivableContentIdentifier = DB.Enum(import.meta.url, {
290
298
  name: "CoreRuleDerivableContentIdentifier",
291
299
  values: () => ({
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @title Prerequisites
2
+ * @module Prerequisites
3
3
  */
4
4
  import * as DB from "tsondb/schema/dsl";
5
5
  export declare const RulePrerequisites: DB.TypeAlias<"RulePrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @title Prerequisites
2
+ * @module Prerequisites
3
3
  */
4
4
  import * as DB from "tsondb/schema/dsl";
5
5
  import { NestedTranslationMap } from "./Locale.js";
@@ -36,11 +36,11 @@ export const ResponsiveTextReplace = DB.TypeAlias(import.meta.url, {
36
36
  type: () => DB.Object({
37
37
  full: DB.Required({
38
38
  comment: "The full replacement string. It must contain `$1`, which is going to be replaced with the generated string, so additional information can be provided without duplicating concrete numeric values.",
39
- type: DB.String({ minLength: 1, pattern: /\$1/ }),
39
+ type: DB.String({ minLength: 1, pattern: /\$1/u }),
40
40
  }),
41
41
  compressed: DB.Required({
42
42
  comment: "A compressed replacement string for use in small areas (e.g. on character sheet). It must contain `$1`, which is going to be replaced with the generated string, so additional information can be provided without duplicating concrete numeric values.",
43
- type: DB.String({ minLength: 1, pattern: /\$1/ }),
43
+ type: DB.String({ minLength: 1, pattern: /\$1/u }),
44
44
  }),
45
45
  }),
46
46
  });
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../../Locale.js";
3
2
  import { AlternativeName } from "../../_AlternativeNames.js";
3
+ import { NestedTranslationMap } from "../../Locale.js";
4
4
  import { Errata } from "../../source/_Erratum.js";
5
5
  import { src } from "../../source/_PublicationRef.js";
6
6
  import { EffectType, LaboratoryLevel, RecipeTradeSecret } from "./_Herbary.js";
@@ -1,7 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { src } from "../../source/_PublicationRef.js";
3
- import { NestedTranslationMap } from "../../Locale.js";
4
2
  import { WeaponIdentifier, ArmorIdentifier } from "../../_Identifier.js";
3
+ import { NestedTranslationMap } from "../../Locale.js";
4
+ import { src } from "../../source/_PublicationRef.js";
5
5
  import { EffectType, RecipeTradeSecret } from "./_Herbary.js";
6
6
  import { HerbalPreservationLongevity } from "./HerbalPreservation.js";
7
7
  export const HerbalAid = DB.Entity(import.meta.url, {
@@ -1,11 +1,11 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../../Locale.js";
3
2
  import { DurationUnit } from "../../_ActivatableSkillDuration.js";
4
- import { ResponsiveTextReplace } from "../../_ResponsiveText.js";
5
3
  import { Dice } from "../../_Dice.js";
6
4
  import { MathOperation } from "../../_MathExpression.js";
7
- import { EffectType } from "./_Herbary.js";
5
+ import { ResponsiveTextReplace } from "../../_ResponsiveText.js";
6
+ import { NestedTranslationMap } from "../../Locale.js";
8
7
  import { src } from "../../source/_PublicationRef.js";
8
+ import { EffectType } from "./_Herbary.js";
9
9
  export const HerbalPreservation = DB.Entity(import.meta.url, {
10
10
  name: "HerbalPreservation",
11
11
  namePlural: "HerbalPreservations",
@@ -1,9 +1,9 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { src } from "../../source/_PublicationRef.js";
3
- import { NestedTranslationMap } from "../../Locale.js";
4
2
  import { AlternativeName } from "../../_AlternativeNames.js";
5
3
  import { BiomeIdentifier, SubBiomeIdentifier, BotanicRegionIdentifier, HerbalAidIdentifier, HerbalPreservationIdentifier, ElixirIdentifier, PoisonIdentifier, } from "../../_Identifier.js";
6
4
  import { ResponsiveTextOptional, ResponsiveTextReplace } from "../../_ResponsiveText.js";
5
+ import { NestedTranslationMap } from "../../Locale.js";
6
+ import { src } from "../../source/_PublicationRef.js";
7
7
  import { EffectType, PlantRarity } from "./_Herbary.js";
8
8
  export const Plant = DB.Entity(import.meta.url, {
9
9
  name: "Plant",
@@ -1,10 +1,10 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../../Locale.js";
3
2
  import { AlternativeName } from "../../_AlternativeNames.js";
4
3
  import { Dice } from "../../_Dice.js";
5
4
  import { Reduceable, Resistance } from "../../_DiseasePoison.js";
6
5
  import { DiseaseIdentifier } from "../../_Identifier.js";
7
6
  import { MathOperation } from "../../_MathExpression.js";
7
+ import { NestedTranslationMap } from "../../Locale.js";
8
8
  import { Errata } from "../../source/_Erratum.js";
9
9
  import { src } from "../../source/_PublicationRef.js";
10
10
  import { EffectType, LaboratoryLevel, RecipeComplexity, RecipeTradeSecret } from "./_Herbary.js";
@@ -109,7 +109,7 @@ export const Cost = DB.Enum(import.meta.url, {
109
109
  });
110
110
  const wrap_in_text = DB.Required({
111
111
  comment: "The cost get wrapped by this text using a placeholder in the text.",
112
- type: DB.String({ minLength: 1, pattern: /\{0\}/ }),
112
+ type: DB.String({ minLength: 1, pattern: /\{0\}/u }),
113
113
  });
114
114
  const InvaluableCost = DB.TypeAlias(import.meta.url, {
115
115
  name: "InvaluableCost",
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../../../Locale.js";
3
2
  import { SubBiomeIdentifier } from "../../../_Identifier.js";
3
+ import { NestedTranslationMap } from "../../../Locale.js";
4
4
  export const BotanicRegion = DB.Entity(import.meta.url, {
5
5
  name: "BotanicRegion",
6
6
  namePlural: "BotanicRegions",
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../../../Locale.js";
3
2
  import { BiomeIdentifier } from "../../../_Identifier.js";
3
+ import { NestedTranslationMap } from "../../../Locale.js";
4
4
  import { BotanicRegion } from "./BotanicRegion.js";
5
5
  export const SubBiome = DB.Entity(import.meta.url, {
6
6
  name: "SubBiome",
@@ -132,6 +132,7 @@ export { Sermon } from "./specialAbility/Sermon.js";
132
132
  export { SexSpecialAbility } from "./specialAbility/SexSpecialAbility.js";
133
133
  export { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpecialAbility.js";
134
134
  export { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
135
+ export { BlessedTraditionGroup } from "./specialAbility/sub/BlessedTraditionGroup.ts";
135
136
  export { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
136
137
  export { Language } from "./specialAbility/sub/Language.js";
137
138
  export { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.ts";
@@ -132,6 +132,7 @@ export { Sermon } from "./specialAbility/Sermon.js";
132
132
  export { SexSpecialAbility } from "./specialAbility/SexSpecialAbility.js";
133
133
  export { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpecialAbility.js";
134
134
  export { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
135
+ export { BlessedTraditionGroup } from "./specialAbility/sub/BlessedTraditionGroup.js";
135
136
  export { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
136
137
  export { Language } from "./specialAbility/sub/Language.js";
137
138
  export { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.js";
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../Locale.js";
3
2
  import { TribePrerequisites } from "../_Prerequisite.js";
3
+ import { NestedTranslationMap } from "../Locale.js";
4
4
  export const Tribe = DB.Entity(import.meta.url, {
5
5
  name: "Tribe",
6
6
  namePlural: "Tribes",
@@ -43,9 +43,9 @@ export declare const MagicalDance: DB.Entity<"MagicalDance", {
43
43
  }, []>>, true>;
44
44
  }>, []>>, true>;
45
45
  property: DB.MemberDecl<DB.ReferenceIdentifier, true>;
46
- music_tradition: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<string, DB.Object<{
46
+ music_tradition: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<`${string}Reference`, DB.Object<{
47
47
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
48
- translations: DB.MemberDecl<DB.NestedEntityMap<`${string}Translation`, {
48
+ translations: DB.MemberDecl<DB.NestedEntityMap<`${string}ReferenceTranslationTranslation`, {
49
49
  name: DB.MemberDecl<DB.String, true>;
50
50
  }>, true>;
51
51
  }>, []>>>, true>;
@@ -63,9 +63,9 @@ export declare const MagicalMelody: DB.Entity<"MagicalMelody", {
63
63
  }, []>>, true>;
64
64
  }>, []>>, true>;
65
65
  property: DB.MemberDecl<DB.ReferenceIdentifier, true>;
66
- music_tradition: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<string, DB.Object<{
66
+ music_tradition: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<`${string}Reference`, DB.Object<{
67
67
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
68
- translations: DB.MemberDecl<DB.NestedEntityMap<`${string}Translation`, {
68
+ translations: DB.MemberDecl<DB.NestedEntityMap<`${string}ReferenceTranslationTranslation`, {
69
69
  name: DB.MemberDecl<DB.String, true>;
70
70
  }>, true>;
71
71
  }>, []>>>, true>;
@@ -1,7 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- export declare const MusicTraditionReference: (traditionIdentifier: DB.ReferenceIdentifier) => DB.TypeAlias<string, DB.Object<{
2
+ export declare const MusicTraditionReference: (traditionIdentifier: DB.ReferenceIdentifier) => DB.TypeAlias<`${string}Reference`, DB.Object<{
3
3
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
4
- translations: DB.MemberDecl<DB.NestedEntityMap<`${string}Translation`, {
4
+ translations: DB.MemberDecl<DB.NestedEntityMap<`${string}ReferenceTranslationTranslation`, {
5
5
  name: DB.MemberDecl<DB.String, true>;
6
6
  }>, true>;
7
7
  }>, []>;
@@ -1,14 +1,14 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  import { NestedTranslationMap } from "../Locale.js";
3
3
  export const MusicTraditionReference = (traditionIdentifier) => DB.TypeAlias(import.meta.url, {
4
- name: traditionIdentifier.entity.name + "Reference",
4
+ name: `${traditionIdentifier.entity.name}Reference`,
5
5
  comment: "A reference to a music tradition with the music-tradition-specific name of the entry.",
6
6
  type: () => DB.Object({
7
7
  id: DB.Required({
8
8
  comment: "The music tradition’s identifier.",
9
9
  type: traditionIdentifier,
10
10
  }),
11
- translations: NestedTranslationMap(DB.Required, traditionIdentifier.entity.name + "ReferenceTranslation", DB.Object({
11
+ translations: NestedTranslationMap(DB.Required, `${traditionIdentifier.entity.name}ReferenceTranslation`, DB.Object({
12
12
  name: DB.Required({
13
13
  comment: "The music-tradition-specific name of the entry.",
14
14
  type: DB.String({ minLength: 1 }),
@@ -94,15 +94,13 @@ export const ProfessionPrerequisiteGroup = DB.Enum(import.meta.url, {
94
94
  });
95
95
  export const AdvantageDisadvantagePrerequisiteGroup = DB.Enum(import.meta.url, {
96
96
  name: "AdvantageDisadvantagePrerequisiteGroup",
97
- values: () => {
98
- return {
99
- CommonSuggestedByRCP: DB.EnumCase({ type: null }),
100
- NoOtherAncestorBloodAdvantage: DB.EnumCase({
101
- type: AncestorBloodPrerequisite,
102
- }),
103
- ...GeneralPrerequisiteGroup.type.value.values,
104
- };
105
- },
97
+ values: () => ({
98
+ CommonSuggestedByRCP: DB.EnumCase({ type: null }),
99
+ NoOtherAncestorBloodAdvantage: DB.EnumCase({
100
+ type: AncestorBloodPrerequisite,
101
+ }),
102
+ ...GeneralPrerequisiteGroup.type.value.values,
103
+ }),
106
104
  });
107
105
  export const ArcaneTraditionPrerequisiteGroup = DB.Enum(import.meta.url, {
108
106
  name: "ArcaneTraditionPrerequisiteGroup",
@@ -14,10 +14,8 @@ export const AnySpecialAbilityOfGroupPrerequisite = DB.TypeAlias(import.meta.url
14
14
  });
15
15
  const SpecialAbilityGroup = DB.Enum(import.meta.url, {
16
16
  name: "SpecialAbilityGroup",
17
- values: () => ({
18
- ...Object.fromEntries(Object.keys(SpecialAbilityIdentifier.type.value.values).map(entity => [
19
- entity,
20
- DB.EnumCase({ type: null }),
21
- ])),
22
- }),
17
+ values: () => Object.fromEntries(Object.keys(SpecialAbilityIdentifier.type.value.values).map(entity => [
18
+ entity,
19
+ DB.EnumCase({ type: null }),
20
+ ])),
23
21
  });
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../Locale.js";
3
2
  import { PublicationPrerequisites } from "../_Prerequisite.js";
3
+ import { NestedTranslationMap } from "../Locale.js";
4
4
  export const Publication = DB.Entity(import.meta.url, {
5
5
  name: "Publication",
6
6
  namePlural: "Publications",
@@ -1,5 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  export declare const BlessedTradition: DB.Entity<"BlessedTradition", {
3
+ group: DB.MemberDecl<DB.ReferenceIdentifier, true>;
3
4
  select_options: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectOptions", DB.Object<{
4
5
  derived: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionCategory", {
5
6
  Blessings: DB.EnumCase<null>;
@@ -4,7 +4,7 @@ import { ap_value, ap_value_append, ap_value_l10n } from "../_ActivatableAdventu
4
4
  import { activatableDisplayNameCustomizer } from "../_ActivatableNames.js";
5
5
  import { explicit_select_options, select_options, verifySelectOptionRules, } from "../_ActivatableSelectOptions.js";
6
6
  import { skill_applications, skill_uses } from "../_ActivatableSkillApplicationsAndUses.js";
7
- import { AspectIdentifier, AttributeIdentifier, BlessingIdentifier, GeneralIdentifier, SkillIdentifier, } from "../_Identifier.js";
7
+ import { AspectIdentifier, AttributeIdentifier, BlessedTraditionGroupIdentifier, BlessingIdentifier, GeneralIdentifier, SkillIdentifier, } from "../_Identifier.js";
8
8
  import { CombatTechniqueIdentifier } from "../_IdentifierGroup.js";
9
9
  import { GeneralPrerequisites } from "../_Prerequisite.js";
10
10
  import { NestedTranslationMap } from "../Locale.js";
@@ -15,6 +15,10 @@ export const BlessedTradition = DB.Entity(import.meta.url, {
15
15
  name: "BlessedTradition",
16
16
  namePlural: "BlessedTraditions",
17
17
  type: () => DB.Object({
18
+ group: DB.Required({
19
+ comment: "The group of traditions this tradition belongs to.",
20
+ type: BlessedTraditionGroupIdentifier(),
21
+ }),
18
22
  select_options,
19
23
  explicit_select_options,
20
24
  skill_applications,
@@ -0,0 +1,7 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const BlessedTraditionGroup: DB.Entity<"BlessedTraditionGroup", {
3
+ translations: DB.MemberDecl<DB.NestedEntityMap<"BlessedTraditionGroupTranslation", {
4
+ name: DB.MemberDecl<DB.String, true>;
5
+ nameInCulture: DB.MemberDecl<DB.String, true>;
6
+ }>, true>;
7
+ }, undefined>;
@@ -0,0 +1,25 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { NestedTranslationMap } from "../../Locale.js";
3
+ export const BlessedTraditionGroup = DB.Entity(import.meta.url, {
4
+ name: "BlessedTraditionGroup",
5
+ namePlural: "BlessedTraditionGroup",
6
+ type: () => DB.Object({
7
+ translations: NestedTranslationMap(DB.Required, "BlessedTraditionGroup", DB.Object({
8
+ name: DB.Required({
9
+ comment: "The name of the group.",
10
+ type: DB.String({ minLength: 1 }),
11
+ }),
12
+ nameInCulture: DB.Required({
13
+ comment: "The text to use when all Blessed Ones of this group are recommended for a culture.",
14
+ type: DB.String({ minLength: 1 }),
15
+ }),
16
+ })),
17
+ }),
18
+ instanceDisplayName: {},
19
+ uniqueConstraints: [
20
+ {
21
+ entityMapKeyPath: "translations",
22
+ keyPathInEntityMap: "name",
23
+ },
24
+ ],
25
+ });
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { NestedTranslationMap } from "../../Locale.js";
3
2
  import { MagicalTraditionIdentifier } from "../../_Identifier.js";
3
+ import { NestedTranslationMap } from "../../Locale.js";
4
4
  export const MagicalTraditionSubgroup = DB.Entity(import.meta.url, {
5
5
  name: "MagicalTraditionSubgroup",
6
6
  namePlural: "MagicalTraditionSubgroups",
@@ -1,12 +1,12 @@
1
1
  import { omitUndefinedKeys } from "@elyukai/utils/object";
2
2
  import * as DB from "tsondb/schema/dsl";
3
- import { NestedTranslationMap } from "../Locale.js";
4
3
  import { effect, levels, maximum, name, name_in_library } from "../_Activatable.js";
5
4
  import { ap_value, ap_value_append, ap_value_l10n } from "../_ActivatableAdventurePointsValue.js";
6
5
  import { nameBuilderRules } from "../_ActivatableNames.js";
7
6
  import { aeCost, bindingCost, cost, cost_note, property, volume, volume_l10n, } from "../_ActivatableNonMundane.js";
8
7
  import { explicit_select_options, select_options, verifySelectOptionRules, } from "../_ActivatableSelectOptions.js";
9
8
  import { GeneralPrerequisites } from "../_Prerequisite.js";
9
+ import { NestedTranslationMap } from "../Locale.js";
10
10
  import { Errata } from "../source/_Erratum.js";
11
11
  import { src } from "../source/_PublicationRef.js";
12
12
  export const full = (options) => DB.Entity(import.meta.url, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.88.0",
3
+ "version": "0.90.1",
4
4
  "description": "Definitions and utilities for the flat-file database of Optolith, a character creation tool for the Pen and Paper RPG “The Dark Eye 5”, and its external integrations into other software.",
5
5
  "keywords": [
6
6
  "tde",
@@ -29,9 +29,9 @@
29
29
  "generate": "tsondb generate",
30
30
  "generate:watch": "nodemon --watch lib --exec \"tsondb generate\" --ext js",
31
31
  "test": "node ./lib/test.js",
32
- "lint": "eslint",
33
- "format": "prettier \"src/{types/**/*.{ts,tsx},*.{ts,tsx}}\" --write",
34
- "format:check": "prettier \"src/{types/**/*.{ts,tsx},*.{ts,tsx}}\" --check",
32
+ "lint": "oxlint",
33
+ "format": "oxfmt \"{src,test}/**/*.{ts,tsx}\"",
34
+ "format:check": "oxfmt \"{src,test}/**/*.{ts,tsx}\" --check",
35
35
  "release": "commit-and-tag-version",
36
36
  "release:sign": "commit-and-tag-version --sign --signoff"
37
37
  },
@@ -39,20 +39,18 @@
39
39
  "license": "MPL-2.0",
40
40
  "dependencies": {
41
41
  "@elyukai/utils": "^0.3.6",
42
- "tsondb": "^0.21.5",
43
- "yaml": "^2.9.1"
42
+ "tsondb": "^0.21.5"
44
43
  },
45
44
  "devDependencies": {
46
- "@eslint/js": "^10.0.1",
45
+ "@elyukai/oxc-config": "^0.1.0",
47
46
  "@types/node": "^26.6.4",
48
47
  "commit-and-tag-version": "^13.2.1",
49
- "eslint": "^10.12.0",
50
- "globals": "^17.13.0",
51
48
  "nodemon": "^3.1.14",
52
- "prettier": "^3.9.9",
49
+ "oxfmt": "^0.72.0",
50
+ "oxlint": "^1.87.0",
51
+ "oxlint-tsgolint": "^7.0.2003",
53
52
  "typescript": "npm:@typescript/typescript6@^6.0.2",
54
- "typescript-7": "npm:typescript@^7.0.2",
55
- "typescript-eslint": "^8.71.0"
53
+ "typescript-7": "npm:typescript@^7.0.2"
56
54
  },
57
55
  "repository": "github:Optolith/database-schema",
58
56
  "bugs": {