@optolith/database-schema 0.83.0 → 0.85.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.
- package/CHANGELOG.md +22 -0
- package/gen/types.d.ts +41 -1
- package/lib/main.js +1 -0
- package/lib/types/Culture.js +2 -0
- package/lib/types/Locale.d.ts +3 -0
- package/lib/types/Locale.js +3 -0
- package/lib/types/Profession.d.ts +1 -0
- package/lib/types/Profession.js +4 -0
- package/lib/types/_Identifier.d.ts +1 -0
- package/lib/types/_Identifier.js +2 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +1 -0
- package/lib/types/specialAbility/MagicalTradition.d.ts +6 -0
- package/lib/types/specialAbility/MagicalTradition.js +6 -1
- package/lib/types/specialAbility/sub/MagicalTraditionSubgroup.d.ts +7 -0
- package/lib/types/specialAbility/sub/MagicalTraditionSubgroup.js +27 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
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.85.0](https://github.com/Optolith/database-schema/compare/v0.84.0...v0.85.0) (2026-10-07)
|
|
6
|
+
|
|
7
|
+
### ⚠ BREAKING CHANGES
|
|
8
|
+
|
|
9
|
+
* missing mundane profession group translations
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* missing mundane profession group translations ([7e60131](https://github.com/Optolith/database-schema/commit/7e60131bcd55d18db03803bcc9f1954d4efb5650))
|
|
14
|
+
|
|
15
|
+
## [0.84.0](https://github.com/Optolith/database-schema/compare/v0.83.0...v0.84.0) (2026-10-07)
|
|
16
|
+
|
|
17
|
+
### ⚠ BREAKING CHANGES
|
|
18
|
+
|
|
19
|
+
* include professions by mundane profession group
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* associate profession with magical tradition subgroup ([f0a2838](https://github.com/Optolith/database-schema/commit/f0a28389c00c5b522c43197f6d278e121e391692))
|
|
24
|
+
* include professions by mundane profession group ([a147553](https://github.com/Optolith/database-schema/commit/a147553a72f050b4905b7b640fb781161f7888bc))
|
|
25
|
+
* magical tradition subgroup child entity ([577fdb6](https://github.com/Optolith/database-schema/commit/577fdb6455e69cec086349209dc3e610a2d8d865))
|
|
26
|
+
|
|
5
27
|
## [0.83.0](https://github.com/Optolith/database-schema/compare/v0.82.0...v0.83.0) (2026-10-06)
|
|
6
28
|
|
|
7
29
|
### ⚠ BREAKING CHANGES
|
package/gen/types.d.ts
CHANGED
|
@@ -117,6 +117,7 @@ export type EntityMap = {
|
|
|
117
117
|
MagicalSign: MagicalSign
|
|
118
118
|
MagicalSpecialAbility: MagicalSpecialAbility
|
|
119
119
|
MagicalTradition: MagicalTradition
|
|
120
|
+
MagicalTraditionSubgroup: MagicalTraditionSubgroup
|
|
120
121
|
MagicStyleSpecialAbility: MagicStyleSpecialAbility
|
|
121
122
|
MetaCondition: MetaCondition
|
|
122
123
|
MusicalInstrument: MusicalInstrument
|
|
@@ -204,6 +205,7 @@ export type ChildEntityMap = {
|
|
|
204
205
|
LanguageSpecialization: [LanguageSpecialization, "parent", LanguageSpecialization["parent"]]
|
|
205
206
|
LessonPackage: [LessonPackage, "curriculum", LessonPackage["curriculum"]]
|
|
206
207
|
MagicalRuneOption: [MagicalRuneOption, "parent", MagicalRuneOption["parent"]]
|
|
208
|
+
MagicalTraditionSubgroup: [MagicalTraditionSubgroup, "parent", MagicalTraditionSubgroup["parent"]]
|
|
207
209
|
NewSkillApplication: [NewSkillApplication, "parent", NewSkillApplication["parent"]]
|
|
208
210
|
PactDomain: [PactDomain, "parent", PactDomain["parent"]]
|
|
209
211
|
PactType: [PactType, "parent", PactType["parent"]]
|
|
@@ -2801,6 +2803,9 @@ export interface Locale {
|
|
|
2801
2803
|
"for example, {$examples}": string & { __params: { "examples": string } }
|
|
2802
2804
|
"all but {$excludedProfessions :list type=conjunction}": string & { __params: { "excludedProfessions": string[] } }
|
|
2803
2805
|
"Mundane Professions": string
|
|
2806
|
+
"Profane Professions": string
|
|
2807
|
+
"Fighter Professions": string
|
|
2808
|
+
"Religious Professions": string
|
|
2804
2809
|
"Magic Professions": string
|
|
2805
2810
|
"Blessed Professions": string
|
|
2806
2811
|
"rare": string
|
|
@@ -8685,7 +8690,7 @@ export interface MagicalTradition {
|
|
|
8685
8690
|
use_arcane_spellworks_from_tradition?: MagicalTradition_ID
|
|
8686
8691
|
|
|
8687
8692
|
/**
|
|
8688
|
-
* The influences for the
|
|
8693
|
+
* The influences for the tradition. Influences are enabled by Focus Rules.
|
|
8689
8694
|
*/
|
|
8690
8695
|
influences?: Influence_ID[]
|
|
8691
8696
|
|
|
@@ -8903,6 +8908,11 @@ export interface MagicalProfessionGroup {
|
|
|
8903
8908
|
* The curriculum/academy associated with this magical profession, if any.
|
|
8904
8909
|
*/
|
|
8905
8910
|
curriculum?: Curriculum_ID
|
|
8911
|
+
|
|
8912
|
+
/**
|
|
8913
|
+
* The tradition’s subgroup associated with this magical profession, if any.
|
|
8914
|
+
*/
|
|
8915
|
+
subgroup?: Curriculum_ID
|
|
8906
8916
|
}
|
|
8907
8917
|
|
|
8908
8918
|
/**
|
|
@@ -10028,6 +10038,10 @@ export type MundaneCommonProfessionConstraint =
|
|
|
10028
10038
|
kind: "Profession"
|
|
10029
10039
|
Profession: ProfessionConstraint
|
|
10030
10040
|
}
|
|
10041
|
+
| {
|
|
10042
|
+
kind: "Group"
|
|
10043
|
+
Group: MundaneProfessionGroup
|
|
10044
|
+
}
|
|
10031
10045
|
|
|
10032
10046
|
export interface ProfessionConstraint {
|
|
10033
10047
|
/**
|
|
@@ -20964,6 +20978,32 @@ export interface InfluenceEffect {
|
|
|
20964
20978
|
text: string
|
|
20965
20979
|
}
|
|
20966
20980
|
|
|
20981
|
+
export interface MagicalTraditionSubgroup {
|
|
20982
|
+
/**
|
|
20983
|
+
* The magical tradition this subgroup belongs to.
|
|
20984
|
+
*/
|
|
20985
|
+
parent: MagicalTradition_ID
|
|
20986
|
+
|
|
20987
|
+
/**
|
|
20988
|
+
* All translations for the entry, identified by IETF language tag (BCP47).
|
|
20989
|
+
*/
|
|
20990
|
+
translations: {
|
|
20991
|
+
[localeId: string]: MagicalTraditionSubgroupTranslation
|
|
20992
|
+
}
|
|
20993
|
+
}
|
|
20994
|
+
|
|
20995
|
+
/**
|
|
20996
|
+
* The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
|
|
20997
|
+
*/
|
|
20998
|
+
export type MagicalTraditionSubgroup_ID = string
|
|
20999
|
+
|
|
21000
|
+
export interface MagicalTraditionSubgroupTranslation {
|
|
21001
|
+
/**
|
|
21002
|
+
* The name of the ceremonial item. This should be the heading used in the respective publication.
|
|
21003
|
+
*/
|
|
21004
|
+
name: string
|
|
21005
|
+
}
|
|
21006
|
+
|
|
20967
21007
|
/**
|
|
20968
21008
|
* Defines how to determine the AP cost of an enhancement.
|
|
20969
21009
|
*/
|
package/lib/main.js
CHANGED
package/lib/types/Culture.js
CHANGED
|
@@ -3,6 +3,7 @@ import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantag
|
|
|
3
3
|
import { AdvantageIdentifier, BlessedTraditionIdentifier, DisadvantageIdentifier, LanguageIdentifier, LanguageSpecializationIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionVariantIdentifier, ScriptIdentifier, SkillIdentifier, SocialStatusIdentifier, } from "./_Identifier.js";
|
|
4
4
|
import { BinarySex } from "./_Sex.js";
|
|
5
5
|
import { NestedTranslationMap } from "./Locale.js";
|
|
6
|
+
import { MundaneProfessionGroup } from "./Profession.js";
|
|
6
7
|
import { Errata } from "./source/_Erratum.js";
|
|
7
8
|
import { src } from "./source/_PublicationRef.js";
|
|
8
9
|
export const Culture = DB.Entity(import.meta.url, {
|
|
@@ -247,6 +248,7 @@ const MundaneCommonProfessionConstraint = DB.Enum(import.meta.url, {
|
|
|
247
248
|
name: "MundaneCommonProfessionConstraint",
|
|
248
249
|
values: () => ({
|
|
249
250
|
Profession: DB.EnumCase({ type: DB.IncludeIdentifier(ProfessionConstraint) }),
|
|
251
|
+
Group: DB.EnumCase({ type: DB.IncludeIdentifier(MundaneProfessionGroup) }),
|
|
250
252
|
}),
|
|
251
253
|
});
|
|
252
254
|
const MagicCommonProfessionConstraint = DB.Enum(import.meta.url, {
|
package/lib/types/Locale.d.ts
CHANGED
|
@@ -1662,6 +1662,9 @@ export declare const Locale: DB.Entity<"Locale", {
|
|
|
1662
1662
|
"for example, {$examples}": null;
|
|
1663
1663
|
"all but {$excludedProfessions :list type=conjunction}": null;
|
|
1664
1664
|
"Mundane Professions": null;
|
|
1665
|
+
"Profane Professions": null;
|
|
1666
|
+
"Fighter Professions": null;
|
|
1667
|
+
"Religious Professions": null;
|
|
1665
1668
|
"Magic Professions": null;
|
|
1666
1669
|
"Blessed Professions": null;
|
|
1667
1670
|
rare: null;
|
package/lib/types/Locale.js
CHANGED
|
@@ -1714,6 +1714,9 @@ export const Locale = DB.Entity(import.meta.url, {
|
|
|
1714
1714
|
"for example, {$examples}": null,
|
|
1715
1715
|
"all but {$excludedProfessions :list type=conjunction}": null,
|
|
1716
1716
|
"Mundane Professions": null,
|
|
1717
|
+
"Profane Professions": null,
|
|
1718
|
+
"Fighter Professions": null,
|
|
1719
|
+
"Religious Professions": null,
|
|
1717
1720
|
"Magic Professions": null,
|
|
1718
1721
|
"Blessed Professions": null,
|
|
1719
1722
|
"rare": null,
|
|
@@ -8,6 +8,7 @@ export declare const Profession: DB.Entity<"Profession", {
|
|
|
8
8
|
}, []>>>;
|
|
9
9
|
Magical: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"MagicalProfessionGroup", DB.Object<{
|
|
10
10
|
curriculum: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
11
|
+
subgroup: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
11
12
|
}>, []>>>;
|
|
12
13
|
Blessed: DB.EnumCase<null>;
|
|
13
14
|
}, []>>, true>;
|
package/lib/types/Profession.js
CHANGED
|
@@ -64,6 +64,10 @@ const MagicalProfessionGroup = DB.TypeAlias(import.meta.url, {
|
|
|
64
64
|
comment: "The curriculum/academy associated with this magical profession, if any.",
|
|
65
65
|
type: CurriculumIdentifier(),
|
|
66
66
|
}),
|
|
67
|
+
subgroup: DB.Optional({
|
|
68
|
+
comment: "The tradition’s subgroup associated with this magical profession, if any.",
|
|
69
|
+
type: CurriculumIdentifier(),
|
|
70
|
+
}),
|
|
67
71
|
}),
|
|
68
72
|
});
|
|
69
73
|
export const ProfessionVersion = DB.Entity(import.meta.url, {
|
|
@@ -110,6 +110,7 @@ export declare const MagicalRuneOptionIdentifier: () => R;
|
|
|
110
110
|
export declare const MagicalSignIdentifier: () => R;
|
|
111
111
|
export declare const MagicalSpecialAbilityIdentifier: () => R;
|
|
112
112
|
export declare const MagicalTraditionIdentifier: () => R;
|
|
113
|
+
export declare const MagicalTraditionSubgroupIdentifier: () => R;
|
|
113
114
|
export declare const MagicStyleSpecialAbilityIdentifier: () => R;
|
|
114
115
|
export declare const MusicalInstrumentIdentifier: () => R;
|
|
115
116
|
export declare const NewspaperIdentifier: () => R;
|
package/lib/types/_Identifier.js
CHANGED
|
@@ -130,6 +130,7 @@ import { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpeci
|
|
|
130
130
|
import { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
|
|
131
131
|
import { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
|
|
132
132
|
import { Language, LanguageSpecialization } from "./specialAbility/sub/Language.js";
|
|
133
|
+
import { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.js";
|
|
133
134
|
import { Script } from "./specialAbility/sub/Script.js";
|
|
134
135
|
import { TradeSecret } from "./specialAbility/sub/TradeSecret.js";
|
|
135
136
|
import { VampiricGift } from "./specialAbility/VampiricGift.js";
|
|
@@ -276,6 +277,7 @@ export const MagicalRuneOptionIdentifier = () => R(MagicalRuneOption);
|
|
|
276
277
|
export const MagicalSignIdentifier = () => R(MagicalSign);
|
|
277
278
|
export const MagicalSpecialAbilityIdentifier = () => R(MagicalSpecialAbility);
|
|
278
279
|
export const MagicalTraditionIdentifier = () => R(MagicalTradition);
|
|
280
|
+
export const MagicalTraditionSubgroupIdentifier = () => R(MagicalTraditionSubgroup);
|
|
279
281
|
export const MagicStyleSpecialAbilityIdentifier = () => R(MagicStyleSpecialAbility);
|
|
280
282
|
export const MusicalInstrumentIdentifier = () => R(MusicalInstrument);
|
|
281
283
|
export const NewspaperIdentifier = () => R(Newspaper);
|
package/lib/types/index.d.ts
CHANGED
|
@@ -134,6 +134,7 @@ export { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpeci
|
|
|
134
134
|
export { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
|
|
135
135
|
export { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
|
|
136
136
|
export { Language } from "./specialAbility/sub/Language.js";
|
|
137
|
+
export { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.ts";
|
|
137
138
|
export { Script } from "./specialAbility/sub/Script.js";
|
|
138
139
|
export { TradeSecret } from "./specialAbility/sub/TradeSecret.js";
|
|
139
140
|
export { VampiricGift } from "./specialAbility/VampiricGift.js";
|
package/lib/types/index.js
CHANGED
|
@@ -134,6 +134,7 @@ export { SikaryanDrainSpecialAbility } from "./specialAbility/SikaryanDrainSpeci
|
|
|
134
134
|
export { SkillStyleSpecialAbility } from "./specialAbility/SkillStyleSpecialAbility.js";
|
|
135
135
|
export { CeremonialItemSpecialAbilityGroup } from "./specialAbility/sub/CeremonialItemSpecialAbilityGroup.js";
|
|
136
136
|
export { Language } from "./specialAbility/sub/Language.js";
|
|
137
|
+
export { MagicalTraditionSubgroup } from "./specialAbility/sub/MagicalTraditionSubgroup.js";
|
|
137
138
|
export { Script } from "./specialAbility/sub/Script.js";
|
|
138
139
|
export { TradeSecret } from "./specialAbility/sub/TradeSecret.js";
|
|
139
140
|
export { VampiricGift } from "./specialAbility/VampiricGift.js";
|
|
@@ -1134,6 +1134,12 @@ export declare const MagicalTradition: DB.Entity<"MagicalTradition", {
|
|
|
1134
1134
|
is_magical_dilettante: DB.MemberDecl<DB.Boolean, true>;
|
|
1135
1135
|
use_arcane_spellworks_from_tradition: DB.MemberDecl<DB.ReferenceIdentifier, false>;
|
|
1136
1136
|
influences: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
|
|
1137
|
+
subgroups: DB.MemberDecl<DB.ChildEntities<DB.Entity<"MagicalTraditionSubgroup", {
|
|
1138
|
+
parent: DB.MemberDecl<DB.ReferenceIdentifier, true>;
|
|
1139
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"MagicalTraditionSubgroupTranslation", {
|
|
1140
|
+
name: DB.MemberDecl<DB.String, true>;
|
|
1141
|
+
}>, true>;
|
|
1142
|
+
}, "parent">>, true>;
|
|
1137
1143
|
prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"GeneralPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesForLevels", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteForLevel", DB.Object<{
|
|
1138
1144
|
level: DB.MemberDecl<DB.Integer, true>;
|
|
1139
1145
|
prerequisite: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
|
|
@@ -10,6 +10,7 @@ import { NestedTranslationMap } from "../Locale.js";
|
|
|
10
10
|
import { Errata } from "../source/_Erratum.js";
|
|
11
11
|
import { src } from "../source/_PublicationRef.js";
|
|
12
12
|
import { SpecialRule } from "./_Tradition.js";
|
|
13
|
+
import { MagicalTraditionSubgroup } from "./sub/MagicalTraditionSubgroup.js";
|
|
13
14
|
export const MagicalTradition = DB.Entity(import.meta.url, {
|
|
14
15
|
name: "MagicalTradition",
|
|
15
16
|
namePlural: "MagicalTraditions",
|
|
@@ -61,9 +62,13 @@ export const MagicalTradition = DB.Entity(import.meta.url, {
|
|
|
61
62
|
type: MagicalTraditionIdentifier(),
|
|
62
63
|
}),
|
|
63
64
|
influences: DB.Optional({
|
|
64
|
-
comment: "The influences for the
|
|
65
|
+
comment: "The influences for the tradition. Influences are enabled by Focus Rules.",
|
|
65
66
|
type: DB.Array(InfluenceIdentifier(), { minItems: 2 }),
|
|
66
67
|
}),
|
|
68
|
+
subgroups: DB.Required({
|
|
69
|
+
comment: "The subgroups of this tradition.",
|
|
70
|
+
type: DB.ChildEntities(MagicalTraditionSubgroup),
|
|
71
|
+
}),
|
|
67
72
|
prerequisites: DB.Optional({
|
|
68
73
|
type: DB.IncludeIdentifier(GeneralPrerequisites),
|
|
69
74
|
}),
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
export declare const MagicalTraditionSubgroup: DB.Entity<"MagicalTraditionSubgroup", {
|
|
3
|
+
parent: DB.MemberDecl<DB.ReferenceIdentifier, true>;
|
|
4
|
+
translations: DB.MemberDecl<DB.NestedEntityMap<"MagicalTraditionSubgroupTranslation", {
|
|
5
|
+
name: DB.MemberDecl<DB.String, true>;
|
|
6
|
+
}>, true>;
|
|
7
|
+
}, "parent">;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as DB from "tsondb/schema/dsl";
|
|
2
|
+
import { NestedTranslationMap } from "../../Locale.js";
|
|
3
|
+
import { MagicalTraditionIdentifier } from "../../_Identifier.js";
|
|
4
|
+
export const MagicalTraditionSubgroup = DB.Entity(import.meta.url, {
|
|
5
|
+
name: "MagicalTraditionSubgroup",
|
|
6
|
+
namePlural: "MagicalTraditionSubgroups",
|
|
7
|
+
type: () => DB.Object({
|
|
8
|
+
parent: DB.Required({
|
|
9
|
+
comment: "The magical tradition this subgroup belongs to.",
|
|
10
|
+
type: MagicalTraditionIdentifier(),
|
|
11
|
+
}),
|
|
12
|
+
translations: NestedTranslationMap(DB.Required, "MagicalTraditionSubgroup", DB.Object({
|
|
13
|
+
name: DB.Required({
|
|
14
|
+
comment: "The name of the ceremonial item. This should be the heading used in the respective publication.",
|
|
15
|
+
type: DB.String({ minLength: 1 }),
|
|
16
|
+
}),
|
|
17
|
+
})),
|
|
18
|
+
}),
|
|
19
|
+
parentReferenceKey: "parent",
|
|
20
|
+
instanceDisplayName: {},
|
|
21
|
+
uniqueConstraints: [
|
|
22
|
+
{
|
|
23
|
+
entityMapKeyPath: "translations",
|
|
24
|
+
keyPathInEntityMap: "name",
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optolith/database-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.0",
|
|
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",
|