optolith-database-schema 0.18.8 → 0.18.9

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [0.18.9](https://github.com/elyukai/optolith-database-schema/compare/v0.18.8...v0.18.9) (2025-10-15)
6
+
7
+
8
+ ### Features
9
+
10
+ * add alternative rule and player type entities ([034a2ed](https://github.com/elyukai/optolith-database-schema/commit/034a2ed6849a5581951fe1757c5c7179509f76bd))
11
+
5
12
  ## [0.18.8](https://github.com/elyukai/optolith-database-schema/compare/v0.18.7...v0.18.8) (2025-10-14)
6
13
 
7
14
  ## [0.18.7](https://github.com/elyukai/optolith-database-schema/compare/v0.18.6...v0.18.7) (2025-10-14)
package/lib/main.js CHANGED
@@ -76,7 +76,7 @@ import { Weapon } from "./types/equipment/item/Weapon.js";
76
76
  import { WeaponAccessory } from "./types/equipment/item/WeaponAccessory.js";
77
77
  import { ArmorType } from "./types/equipment/item/sub/ArmorType.js";
78
78
  import { Reach } from "./types/equipment/item/sub/Reach.js";
79
- import { ClothingPackage, Laboratory } from "./types/index.js";
79
+ import { AlternativeRule, ClothingPackage, Laboratory, PlayerType } from "./types/index.js";
80
80
  import { AnimistPower } from "./types/magicalActions/AnimistPower.js";
81
81
  import { Tribe } from "./types/magicalActions/AnimistPower_Tribe.js";
82
82
  import { Curse } from "./types/magicalActions/Curse.js";
@@ -154,6 +154,7 @@ export const schema = Schema([
154
154
  AdvancedMagicalSpecialAbility,
155
155
  AdvancedSkillSpecialAbility,
156
156
  Advantage,
157
+ AlternativeRule,
157
158
  Ammunition,
158
159
  AncestorGlyph,
159
160
  AnimalCare,
@@ -255,6 +256,7 @@ export const schema = Schema([
255
256
  PatronCategory,
256
257
  Patron,
257
258
  PersonalityTrait,
259
+ PlayerType,
258
260
  Poison,
259
261
  Profession,
260
262
  Property,
@@ -4,6 +4,7 @@ export declare const AdvancedKarmaSpecialAbilityIdentifier: () => R;
4
4
  export declare const AdvancedMagicalSpecialAbilityIdentifier: () => R;
5
5
  export declare const AdvancedSkillSpecialAbilityIdentifier: () => R;
6
6
  export declare const AdvantageIdentifier: () => R;
7
+ export declare const AlternativeRuleIdentifier: () => R;
7
8
  export declare const AmmunitionIdentifier: () => R;
8
9
  export declare const AncestorGlyphIdentifier: () => R;
9
10
  export declare const AnimalCareIdentifier: () => R;
@@ -107,6 +108,7 @@ export declare const PactTypeIdentifier: () => R;
107
108
  export declare const PatronCategoryIdentifier: () => R;
108
109
  export declare const PatronIdentifier: () => R;
109
110
  export declare const PersonalityTraitIdentifier: () => R;
111
+ export declare const PlayerTypeIdentifier: () => R;
110
112
  export declare const PoisonIdentifier: () => R;
111
113
  export declare const ProfessionIdentifier: () => R;
112
114
  export declare const ProfessionPackageIdentifier: () => R;
@@ -75,6 +75,8 @@ import { Profession, ProfessionPackage, ProfessionVariant, ProfessionVersion, }
75
75
  import { Property } from "./Property.js";
76
76
  import { Race, RaceVariant } from "./Race.js";
77
77
  import { Ritual } from "./Ritual.js";
78
+ import { AlternativeRule } from "./rule/AlternativeRule.js";
79
+ import { PlayerType } from "./rule/AlternativeRule_PlayerType.js";
78
80
  import { CoreRule } from "./rule/CoreRule.js";
79
81
  import { FocusRule } from "./rule/FocusRule.js";
80
82
  import { Subject } from "./rule/FocusRule_Subject.js";
@@ -148,6 +150,7 @@ export const AdvancedKarmaSpecialAbilityIdentifier = () => R(AdvancedKarmaSpecia
148
150
  export const AdvancedMagicalSpecialAbilityIdentifier = () => R(AdvancedMagicalSpecialAbility);
149
151
  export const AdvancedSkillSpecialAbilityIdentifier = () => R(AdvancedSkillSpecialAbility);
150
152
  export const AdvantageIdentifier = () => R(Advantage);
153
+ export const AlternativeRuleIdentifier = () => R(AlternativeRule);
151
154
  export const AmmunitionIdentifier = () => R(Ammunition);
152
155
  export const AncestorGlyphIdentifier = () => R(AncestorGlyph);
153
156
  export const AnimalCareIdentifier = () => R(AnimalCare);
@@ -251,6 +254,7 @@ export const PactTypeIdentifier = () => R(PactType);
251
254
  export const PatronCategoryIdentifier = () => R(PatronCategory);
252
255
  export const PatronIdentifier = () => R(Patron);
253
256
  export const PersonalityTraitIdentifier = () => R(PersonalityTrait);
257
+ export const PlayerTypeIdentifier = () => R(PlayerType);
254
258
  export const PoisonIdentifier = () => R(Poison);
255
259
  export const ProfessionIdentifier = () => R(Profession);
256
260
  export const ProfessionPackageIdentifier = () => R(ProfessionPackage);
@@ -78,6 +78,8 @@ export { Property } from "./Property.js";
78
78
  export { Race } from "./Race.js";
79
79
  export { Region } from "./Region.js";
80
80
  export { Ritual } from "./Ritual.js";
81
+ export { AlternativeRule } from "./rule/AlternativeRule.js";
82
+ export { PlayerType } from "./rule/AlternativeRule_PlayerType.js";
81
83
  export { CoreRule } from "./rule/CoreRule.js";
82
84
  export { FocusRule } from "./rule/FocusRule.js";
83
85
  export { Subject } from "./rule/FocusRule_Subject.js";
@@ -78,6 +78,8 @@ export { Property } from "./Property.js";
78
78
  export { Race } from "./Race.js";
79
79
  export { Region } from "./Region.js";
80
80
  export { Ritual } from "./Ritual.js";
81
+ export { AlternativeRule } from "./rule/AlternativeRule.js";
82
+ export { PlayerType } from "./rule/AlternativeRule_PlayerType.js";
81
83
  export { CoreRule } from "./rule/CoreRule.js";
82
84
  export { FocusRule } from "./rule/FocusRule.js";
83
85
  export { Subject } from "./rule/FocusRule_Subject.js";
@@ -0,0 +1,53 @@
1
+ import { Array, Boolean, Entity, IncludeIdentifier, Object, String } from "tsondb/schema/def";
2
+ export declare const AlternativeRule: Entity<"AlternativeRule", {
3
+ playerTypes: import("tsondb/schema/def").MemberDecl<Array<import("tsondb/schema/def").ReferenceIdentifierType>, true>;
4
+ isMissingImplementation: import("tsondb/schema/def").MemberDecl<Boolean, true>;
5
+ src: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"PublicationRefs", Array<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"PublicationRef", Object<{
6
+ id: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").ReferenceIdentifierType, true>;
7
+ occurrences: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").NestedEntityMapType<string, {
8
+ initial: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"InitialOccurrence", Object<{
9
+ printing: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, false>;
10
+ pages: import("tsondb/schema/def").MemberDecl<Array<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"PageRange", Object<{
11
+ first_page: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Page", {
12
+ InsideCoverFront: import("tsondb/schema/def").EnumCaseDecl<null>;
13
+ InsideCoverBack: import("tsondb/schema/def").EnumCaseDecl<null>;
14
+ Numbered: import("tsondb/schema/def").EnumCaseDecl<import("tsondb/schema/def").IntegerType>;
15
+ }, []>>, true>;
16
+ last_page: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Page", {
17
+ InsideCoverFront: import("tsondb/schema/def").EnumCaseDecl<null>;
18
+ InsideCoverBack: import("tsondb/schema/def").EnumCaseDecl<null>;
19
+ Numbered: import("tsondb/schema/def").EnumCaseDecl<import("tsondb/schema/def").IntegerType>;
20
+ }, []>>, false>;
21
+ }>, []>>>, true>;
22
+ }>, []>>, true>;
23
+ revisions: import("tsondb/schema/def").MemberDecl<Array<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Revision", {
24
+ Since: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"Since", Object<{
25
+ printing: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
26
+ pages: import("tsondb/schema/def").MemberDecl<Array<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"PageRange", Object<{
27
+ first_page: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Page", {
28
+ InsideCoverFront: import("tsondb/schema/def").EnumCaseDecl<null>;
29
+ InsideCoverBack: import("tsondb/schema/def").EnumCaseDecl<null>;
30
+ Numbered: import("tsondb/schema/def").EnumCaseDecl<import("tsondb/schema/def").IntegerType>;
31
+ }, []>>, true>;
32
+ last_page: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").EnumDecl<"Page", {
33
+ InsideCoverFront: import("tsondb/schema/def").EnumCaseDecl<null>;
34
+ InsideCoverBack: import("tsondb/schema/def").EnumCaseDecl<null>;
35
+ Numbered: import("tsondb/schema/def").EnumCaseDecl<import("tsondb/schema/def").IntegerType>;
36
+ }, []>>, false>;
37
+ }>, []>>>, true>;
38
+ }>, []>>>;
39
+ Deprecated: import("tsondb/schema/def").EnumCaseDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"Deprecation", Object<{
40
+ printing: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").IntegerType, true>;
41
+ }>, []>>>;
42
+ }, []>>>, false>;
43
+ }>, true>;
44
+ }>, []>>>, []>>, true>;
45
+ translations: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").NestedEntityMapType<"AlternativeRuleTranslation", {
46
+ name: import("tsondb/schema/def").MemberDecl<String, true>;
47
+ description: import("tsondb/schema/def").MemberDecl<String, true>;
48
+ errata: import("tsondb/schema/def").MemberDecl<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"Errata", Array<IncludeIdentifier<[], import("tsondb/schema/def").TypeAliasDecl<"Erratum", Object<{
49
+ date: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").DateType, true>;
50
+ description: import("tsondb/schema/def").MemberDecl<String, true>;
51
+ }>, []>>>, []>>, false>;
52
+ }>, true>;
53
+ }, undefined>;
@@ -0,0 +1,34 @@
1
+ import { Array, Boolean, Entity, IncludeIdentifier, Object, Optional, Required, String, } from "tsondb/schema/def";
2
+ import { PlayerTypeIdentifier } from "../_Identifier.js";
3
+ import { NestedTranslationMap } from "../Locale.js";
4
+ import { Errata } from "../source/_Erratum.js";
5
+ import { src } from "../source/_PublicationRef.js";
6
+ export const AlternativeRule = Entity(import.meta.url, {
7
+ name: "AlternativeRule",
8
+ namePlural: "AlternativeRules",
9
+ type: () => Object({
10
+ playerTypes: Required({
11
+ comment: "The player types this alternative rule is suitable for.",
12
+ type: Array(PlayerTypeIdentifier(), { minItems: 1, uniqueItems: true }),
13
+ }),
14
+ isMissingImplementation: Required({
15
+ comment: "Has the alternative rule not been implemented in Optolith yet? This is also true if the alternative rule does not (currently) apply to any Optolith feature.",
16
+ type: Boolean(),
17
+ }),
18
+ src,
19
+ translations: NestedTranslationMap(Required, "AlternativeRule", Object({
20
+ name: Required({
21
+ comment: "The alternative rule’s name.",
22
+ type: String({ minLength: 1 }),
23
+ }),
24
+ description: Required({
25
+ comment: "The description of the alternative rule.",
26
+ type: String({ minLength: 1, isMarkdown: true }),
27
+ }),
28
+ errata: Optional({
29
+ type: IncludeIdentifier(Errata),
30
+ }),
31
+ })),
32
+ }),
33
+ displayName: {},
34
+ });
@@ -0,0 +1,6 @@
1
+ import { Entity, String } from "tsondb/schema/def";
2
+ export declare const PlayerType: Entity<"PlayerType", {
3
+ translations: import("tsondb/schema/def").MemberDecl<import("tsondb/schema/def").NestedEntityMapType<"PlayerTypeTranslation", {
4
+ name: import("tsondb/schema/def").MemberDecl<String, true>;
5
+ }>, true>;
6
+ }, undefined>;
@@ -0,0 +1,16 @@
1
+ import { Entity, Object, Required, String } from "tsondb/schema/def";
2
+ import { NestedTranslationMap } from "../Locale.js";
3
+ export const PlayerType = Entity(import.meta.url, {
4
+ name: "PlayerType",
5
+ namePlural: "PlayerTypes",
6
+ comment: "Player types describe different playing styles, expectations and wishes of players.",
7
+ type: () => Object({
8
+ translations: NestedTranslationMap(Required, "PlayerType", Object({
9
+ name: Required({
10
+ comment: "The player type.",
11
+ type: String({ minLength: 1 }),
12
+ }),
13
+ })),
14
+ }),
15
+ displayName: {},
16
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optolith-database-schema",
3
- "version": "0.18.8",
3
+ "version": "0.18.9",
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",