Grabbed dndbeyond's source code

```
~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js
```
This commit is contained in:
2025-05-28 11:50:03 -07:00
commit 8df9031d27
3592 changed files with 319051 additions and 0 deletions
@@ -0,0 +1,126 @@
import { createSelector } from 'reselect';
import { CharacterGenerators } from '../engine/Character';
import { ValueGenerators } from '../engine/Value';
import { initialChoiceComponentState, } from '../generated';
import { SelectorHelpers } from '../utils';
export const getActions = (state) => state.character.actions;
export const getActiveSourceCategories = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.activeSourceCategories);
export const getAdjustmentXp = (state) => state.character.adjustmentXp;
export const getAge = (state) => state.character.age;
export const getAlignmentId = (state) => state.character.alignmentId;
export const getBackground = (state) => state.character.background;
export const getBaseHp = (state) => state.character.baseHitPoints;
export const getBonusHp = (state) => state.character.bonusHitPoints;
export const getBonusStats = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.bonusStats);
export const getCampaign = (state) => state.character.campaign;
export const getCampaignSetting = (state) => state.character.campaignSetting;
export const getCanEdit = (state) => state.character.canEdit;
export const getIsAssignedToPlayer = (state) => state.character.isAssignedToPlayer;
export const getCharacterValues = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.characterValues);
export const getChoices = (state) => state.character.choices || initialChoiceComponentState;
export const getClassSpells = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.classSpells);
export const getClasses = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.classes);
export const getConditions = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.conditions);
export const getConfiguration = (state) => state.character.configuration;
export const getCreatures = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.creatures);
export const getCurrencies = (state) => state.character.currencies;
export const getCurrentXp = (state) => state.character.currentXp;
export const getCustomActions = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.customActions);
export const getCustomDefenseAdjustments = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.customDefenseAdjustments);
export const getCustomItems = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.customItems);
export const getCustomProficiencies = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.customProficiencies);
export const getCustomSenses = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.customSenses);
export const getCustomSpeeds = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.customSpeeds);
export const getDeathSaves = (state) => state.character.deathSaves;
export const getDecorations = (state) => state.character.decorations;
export const getEyes = (state) => state.character.eyes;
export const getFaith = (state) => state.character.faith;
export const getFeats = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.feats);
export const getGender = (state) => state.character.gender;
export const getHair = (state) => state.character.hair;
export const getHeight = (state) => state.character.height;
export const getId = (state) => state.character.id;
export const getInspiration = (state) => state.character.inspiration;
export const getInventory = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.inventory);
export const getLifestyleId = (state) => state.character.lifestyleId;
export const getModifiers = (state) => state.character.modifiers;
export const getName = (state) => state.character.name;
export const getNotes = (state) => state.character.notes;
export const getOptionalClassFeatures = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.optionalClassFeatures);
export const getOptionalOrigins = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.optionalOrigins);
export const getOptions = (state) => state.character.options;
export const getOverrideHp = (state) => state.character.overrideHitPoints;
export const getOverrideStats = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.overrideStats);
export const getPactMagicSlots = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.pactMagic);
export const getPreferences = (state) => state.character.preferences;
export const getRace = (state) => state.character.race;
export const getReadOnlyUrl = (state) => state.character.readonlyUrl;
export const getRemovedHp = (state) => state.character.removedHitPoints;
export const getSkin = (state) => state.character.skin;
export const getSpellSlots = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.spellSlots);
export const getSpells = (state) => state.character.spells;
export const getStats = (state) => SelectorHelpers.getArrayOrNullFallback(state.character.stats);
export const getTempHp = (state) => state.character.temporaryHitPoints;
export const getTraits = (state) => state.character.traits;
export const getUserId = (state) => state.character.userId;
export const getUsername = (state) => state.character.username;
export const getWeight = (state) => state.character.weight;
export const getDeathSavesFailCount = (state) => state.character.deathSaves === null ? null : state.character.deathSaves.failCount;
export const getDeathSavesSuccessCount = (state) => state.character.deathSaves === null ? null : state.character.deathSaves.successCount;
export const getActions_class = (state) => state.character.actions === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.actions.class);
export const getActions_feat = (state) => state.character.actions === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.actions.feat);
export const getActions_race = (state) => state.character.actions === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.actions.race);
export const getChoices_background = (state) => state.character.choices === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.choices.background);
export const getChoices_class = (state) => state.character.choices === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.choices.class);
export const getChoices_feat = (state) => state.character.choices === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.choices.feat);
export const getChoices_race = (state) => state.character.choices === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.choices.race);
/**
* @name getChoices_choiceDefinitions()
* @param state
* @returns {Array<BuilderChoiceDefinitions>}
* Returns empty array if Character choices is null
* or choices definitions if choices property is populated.
*/
export const getChoices_choiceDefinitions = (state) => state.character.choices === null
? []
: SelectorHelpers.getArrayOrNullFallback(state.character.choices.choiceDefinitions);
export const getModifiers_background = (state) => state.character.modifiers === null
? []
: SelectorHelpers.getArrayOrNullFallback(state.character.modifiers.background);
export const getModifiers_class = (state) => state.character.modifiers === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.modifiers.class);
export const getModifiers_condition = (state) => state.character.modifiers === null
? []
: SelectorHelpers.getArrayOrNullFallback(state.character.modifiers.condition);
export const getModifiers_feat = (state) => state.character.modifiers === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.modifiers.feat);
export const getModifiers_item = (state) => state.character.modifiers === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.modifiers.item);
export const getModifiers_race = (state) => state.character.modifiers === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.modifiers.race);
export const getOptions_class = (state) => state.character.options === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.options.class);
export const getOptions_feat = (state) => state.character.options === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.options.feat);
export const getOptions_race = (state) => state.character.options === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.options.race);
export const getSpells_class = (state) => state.character.spells === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.spells.class);
export const getSpells_feat = (state) => state.character.spells === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.spells.feat);
export const getSpells_item = (state) => state.character.spells === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.spells.item);
export const getSpells_race = (state) => state.character.spells === null ? [] : SelectorHelpers.getArrayOrNullFallback(state.character.spells.race);
/**
* @returns {CustomSpeedLookup}
*/
export const getCustomSpeedLookup = createSelector([getCustomSpeeds], CharacterGenerators.generateCustomSpeedLookup);
/**
* @returns {CustomSenseLookup}
*/
export const getCustomSenseLookup = createSelector([getCustomSenses], CharacterGenerators.generateCustomSenseLookup);
/**
* @returns {ValueLookup}
*/
export const getCharacterValueLookup = createSelector([getCharacterValues], ValueGenerators.generateCharacterValueLookup);
/**
* @returns {EntityValueLookup}
*/
export const getCharacterValueLookupByEntity = createSelector([getCharacterValues], ValueGenerators.generateCharacterEntityValueLookup);
/**
* @returns {TypeValueLookup}
*/
export const getCharacterValueLookupByType = createSelector([getCharacterValues], ValueGenerators.generateCharacterTypeValueLookup);
export const getPremadeInfo = (state) => state.character.premadeInfo;
export const getStatus = (state) => state.character.status;
export const getStatusSlug = (state) => state.character.statusSlug;
@@ -0,0 +1,2 @@
export const getContext = (state) => state.characterEnv.context;
export const getLoadingStatus = (state) => state.characterEnv.loadingStatus;
@@ -0,0 +1,171 @@
import { merge } from 'lodash';
import { createSelector } from 'reselect';
import { ApiRequests, ApiUtils } from "../../../api";
import { ApiAdapterUtils } from "../../../apiAdapter";
import { BackgroundAccessors } from "../../../engine/Background";
import { ClassAccessors } from "../../../engine/Class";
import { DefinitionTypeEnum } from "../../../engine/Definition";
import { EntityUtils, } from "../../../engine/Entity";
import { RaceAccessors } from "../../../engine/Race";
import * as characterSelectors from "../../character";
import * as rulesEngineSelectors from "../engine";
function restrictGameDataDefinitionResponseData(response, entityRestrictionData, characterId) {
let originalData = ApiAdapterUtils.getResponseData(response);
if (originalData !== null && characterId !== null && response.data.data !== undefined) {
response.data.data.definitionData = EntityUtils.filterNonRestrictedEntityDefinitions(originalData.definitionData, entityRestrictionData);
}
return response;
}
function restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId) {
let originalData = ApiAdapterUtils.getResponseData(response);
if (originalData !== null && characterId !== null) {
const filteredDataData = EntityUtils.filterNonRestrictedEntityDefinitions(originalData, entityRestrictionData);
const newResponseData = Object.assign({}, response.data, { data: filteredDataData });
return Object.assign({}, response, { data: newResponseData });
}
return response;
}
function restrictEntityResponseData(response, entityRestrictionData, characterId) {
let originalData = ApiAdapterUtils.getResponseData(response);
if (originalData !== null && characterId !== null) {
const filteredDataData = EntityUtils.filterNonRestrictedEntities(originalData, entityRestrictionData);
const newResponseData = Object.assign({}, response.data, { data: filteredDataData });
return Object.assign({}, response, { data: newResponseData });
}
return response;
}
export const makeLoadAvailableClasses = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiRequests.getCharacterGameDataClasses(additionalConfig).then((response) => restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableSubclasses = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (baseClassId, additionalConfig) => {
const requiredConfig = {
params: {
baseClassId,
},
};
return ApiRequests.getCharacterGameDataSubclasses(merge({}, additionalConfig, requiredConfig)).then((response) => restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableRaces = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiRequests.getCharacterGameDataRaces(additionalConfig).then((response) => restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableFeats = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiRequests.getCharacterGameDataFeats(additionalConfig).then((response) => restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableItems = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiRequests.getCharacterGameDataItems(additionalConfig).then((response) => restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableMonsters = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiRequests.getCharacterGameDataMonsters(additionalConfig).then((response) => restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableInfusions = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiUtils.makeGetAllDefinitionTypeRequest(DefinitionTypeEnum.INFUSION)(additionalConfig).then((response) => restrictGameDataDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableVehicles = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiUtils.makeGetAllDefinitionTypeRequest(DefinitionTypeEnum.VEHICLE)(additionalConfig).then((response) => restrictGameDataDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadClassStartingEquipment = createSelector([rulesEngineSelectors.getStartingClass], (startingClass) => {
let id = -1;
if (startingClass) {
id = ClassAccessors.getId(startingClass);
}
return (additionalConfig) => {
const requiredConfig = {
params: {
id,
},
};
return ApiRequests.getCharacterGameDataClassStartingEquipment(merge({}, additionalConfig, requiredConfig));
};
});
export const makeLoadBackgroundStartingEquipment = createSelector([rulesEngineSelectors.getBackgroundInfo], (backgroundInfo) => {
let id = -1;
if (backgroundInfo) {
id = BackgroundAccessors.getId(backgroundInfo);
}
return (additionalConfig) => {
const requiredConfig = {
params: {
id,
},
};
return ApiRequests.getCharacterGameDataBackgroundStartingEquipment(merge({}, additionalConfig, requiredConfig));
};
});
export const makeLoadClassRemainingSpells = createSelector([
rulesEngineSelectors.getGlobalSpellListIds,
rulesEngineSelectors.getEntityRestrictionData,
characterSelectors.getId,
], (globalSpellListIds, entityRestrictionData, characterId) => {
return (charClass) => {
if (!ClassAccessors.isSpellcastingActive(charClass) && !ClassAccessors.isPactMagicActive(charClass)) {
return null;
}
return (additionalConfig) => {
const requiredConfig = {
params: {
classId: ClassAccessors.getActiveId(charClass),
classLevel: ClassAccessors.getLevel(charClass),
spellListIds: [...globalSpellListIds, ...ClassAccessors.getSpellListIds(charClass)],
},
};
return ApiRequests.getCharacterGameDataSpells(merge({}, additionalConfig, requiredConfig)).then((response) => restrictEntityResponseData(response, entityRestrictionData, characterId));
};
};
});
export const makeLoadClassAlwaysKnownSpells = createSelector([
rulesEngineSelectors.getClasses,
rulesEngineSelectors.getGlobalSpellListIds,
rulesEngineSelectors.getEntityRestrictionData,
characterSelectors.getId,
], (classes, globalSpellListIds, entityRestrictionData, characterId) => {
return (charClass) => {
if (!ClassAccessors.getKnowsAllSpells(charClass)) {
return null;
}
return (additionalConfig) => {
const requiredConfig = {
params: {
classId: ClassAccessors.getActiveId(charClass),
classLevel: ClassAccessors.getLevel(charClass),
spellListIds: [...globalSpellListIds, ...ClassAccessors.getSpellListIds(charClass)],
},
};
return ApiRequests.getCharacterGameDataAlwaysKnownSpells(merge({}, additionalConfig, requiredConfig)).then((response) => restrictEntityResponseData(response, entityRestrictionData, characterId));
};
};
});
export const makeLoadAvailableBackgrounds = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiRequests.getCharacterGameDataBackgrounds(additionalConfig).then((response) => restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId));
});
export const makeLoadAvailableOptionalRacialTraits = createSelector([rulesEngineSelectors.getRace], (race) => (additionalConfig) => {
const requiredConfig = {
params: {
entityRaceId: race ? RaceAccessors.getEntityRaceId(race) : -1,
entityRaceTypeId: race ? RaceAccessors.getEntityRaceTypeId(race) : -1,
},
};
return ApiRequests.getCharacterGameDataRacialTraits(merge({}, additionalConfig, requiredConfig));
});
export const makeLoadAvailableOptionalClassFeatures = createSelector([rulesEngineSelectors.getClasses], (classes) => {
return (charClass) => {
return (additionalConfig) => {
const requiredConfig = {
params: {
classId: ClassAccessors.getActiveId(charClass),
},
};
return ApiRequests.getCharacterGameDataClassFeatures(merge({}, additionalConfig, requiredConfig));
};
};
});
//----------------------------
// BELOW LIES GFS
//----------------------------
// TODO: restrictEntityDefinitionResponseData is filtering by homebrew and sources categories based on preferences
// so maybe that should just be part of the api.
// if you change it during game you would have to make the api call again.
export const makeLoadAvailableFeatures = createSelector([rulesEngineSelectors.getEntityRestrictionData, characterSelectors.getId], (entityRestrictionData, characterId) => (additionalConfig) => {
return ApiRequests.getCharacterGameDataFeatures(additionalConfig).then((response) =>
// restrictEntityDefinitionResponseData(response, entityRestrictionData, characterId)
response);
});
@@ -0,0 +1,8 @@
import * as apiCreatorCreators from './creators';
import * as apiCreatorTypings from './typings';
export * from './creators';
export * from './typings';
export default {
apiCreatorCreators,
apiCreatorTypings,
};
File diff suppressed because it is too large Load Diff
@@ -0,0 +1 @@
export const getFeatureFlagInfo = (state) => state.featureFlagInfo;
@@ -0,0 +1,16 @@
import * as character from './character';
import * as characterEnv from './characterEnv';
import * as apiCreator from './composite/apiCreator';
import * as rulesEngine from './composite/engine';
import * as featureFlagInfo from './featureFlagInfo';
import * as ruleData from './ruleData';
import * as serviceData from './serviceData';
import * as syncTransaction from './syncTransaction';
export const characterSelectors = character;
export const ruleDataSelectors = ruleData;
export const characterEnvSelectors = characterEnv;
export const featureFlagInfoSelectors = featureFlagInfo;
export const serviceDataSelectors = serviceData;
export const syncTransactionSelectors = syncTransaction;
export const rulesEngineSelectors = rulesEngine;
export const apiCreatorSelectors = apiCreator;
@@ -0,0 +1,79 @@
export const getAllData = (state) => state.ruleData;
export const getAbilityScoreDisplayTypes = (state) => state.ruleData.abilityScoreDisplayTypes;
export const getAbilitySkills = (state) => state.ruleData.abilitySkills;
export const getActivationTypes = (state) => state.ruleData.activationTypes;
export const getAdditionalLevelTypes = (state) => state.ruleData.additionalLevelTypes;
export const getAdjustmentDataTypes = (state) => state.ruleData.adjustmentDataTypes;
export const getAdjustmentTypes = (state) => state.ruleData.adjustmentTypes;
export const getAlignments = (state) => state.ruleData.alignments;
export const getAoeTypes = (state) => state.ruleData.aoeTypes;
export const getArmor = (state) => state.ruleData.armor;
export const getBasicActions = (state) => state.ruleData.basicActions;
export const getBaseWeaponReach = (state) => state.ruleData.baseWeaponReach;
export const getBasicMaxStatScore = (state) => state.ruleData.basicMaxStatScore;
export const getChallengeRatings = (state) => state.ruleData.challengeRatings;
export const getConditionTypes = (state) => state.ruleData.conditionTypes;
export const getConditions = (state) => state.ruleData.conditions;
export const getCreatureGroupCategories = (state) => state.ruleData.creatureGroupCategories;
export const getCreatureGroupFlags = (state) => state.ruleData.creatureGroupFlags;
export const getCreatureGroups = (state) => state.ruleData.creatureGroups;
export const getCreatureSizes = (state) => state.ruleData.creatureSizes;
export const getCurrencyData = (state) => state.ruleData.currencyData;
export const getDamageAdjustments = (state) => state.ruleData.damageAdjustments;
export const getDamageTypes = (state) => state.ruleData.damageTypes;
export const getDefaultArmorImageUrl = (state) => state.ruleData.defaultArmorImageUrl;
export const getDefaultAttunedItemCountMax = (state) => state.ruleData.defaultAttunedItemCountMax;
export const getDefaultGearImageUrl = (state) => state.ruleData.defaultGearImageUrl;
export const getDefaultRacePortraitUrl = (state) => state.ruleData.defaultRacePortraitUrl;
export const getDefaultWeaponImageUrl = (state) => state.ruleData.defaultWeaponImageUrl;
export const getDiceValues = (state) => state.ruleData.diceValues;
export const getEnvironments = (state) => state.ruleData.environments;
export const getInitiativeScore = (state) => state.ruleData.initiativeScore;
export const getLanguageTypeId = (state) => state.ruleData.languageTypeId;
export const getLanguages = (state) => state.ruleData.languages;
export const getLevelExperiencePoints = (state) => state.ruleData.levelExperiencePoints;
export const getLevelProficiencyBonuses = (state) => state.ruleData.levelProficiencyBonuses;
export const getLifestyles = (state) => state.ruleData.lifestyles;
export const getLimitedUseResetTypes = (state) => state.ruleData.limitedUseResetTypes;
export const getLongRestMinimumHitDiceUsedRecovered = (state) => state.ruleData.longRestMinimumHitDiceUsedRecovered;
export const getMaxAttunedItemCountMax = (state) => state.ruleData.maxAttunedItemCountMax;
export const getMaxCharacterLevel = (state) => state.ruleData.maxCharacterLevel;
export const getMaxDeathsavesFail = (state) => state.ruleData.maxDeathsavesFail;
export const getMaxDeathsavesSuccess = (state) => state.ruleData.maxDeathsavesSuccess;
export const getMaxSpellLevel = (state) => state.ruleData.maxSpellLevel;
export const getMaxStatScore = (state) => state.ruleData.maxStatScore;
export const getMinAttunedItemCountMax = (state) => state.ruleData.minAttunedItemCountMax;
export const getMinStatScore = (state) => state.ruleData.minStatScore;
export const getMinimumHpTotal = (state) => state.ruleData.minimumHpTotal;
export const getMinimumLimitedUseMaxUse = (state) => state.ruleData.minimumLimitedUseMaxUse;
export const getMonsterSubTypes = (state) => state.ruleData.monsterSubTypes;
export const getMonsterTypes = (state) => state.ruleData.monsterTypes;
export const getMovements = (state) => state.ruleData.movements;
export const getMultiClassSpellSlots = (state) => state.ruleData.multiClassSpellSlots;
export const getNaturalActions = (state) => state.ruleData.naturalActions;
export const getNoArmorAcAmount = (state) => state.ruleData.noArmorAcAmount;
export const getPactMagicMultiClassSpellSlots = (state) => state.ruleData.pactMagicMultiClassSpellSlots;
export const getPrivacyTypes = (state) => state.ruleData.privacyTypes;
export const getProficiencyGroups = (state) => state.ruleData.proficiencyGroups;
export const getRaceGroups = (state) => state.ruleData.raceGroups;
export const getRangeTypes = (state) => state.ruleData.rangeTypes;
export const getRitualCastingTimeMinuteAddition = (state) => state.ruleData.ritualCastingTimeMinuteAddition;
export const getRules = (state) => state.ruleData.rules;
export const getSenses = (state) => state.ruleData.senses;
export const getSharingTypes = (state) => state.ruleData.sharingTypes;
export const getSourceCategories = (state) => state.ruleData.sourceCategories;
export const getSources = (state) => state.ruleData.sources;
export const getSpellComponents = (state) => state.ruleData.spellComponents;
export const getSpellConditionTypes = (state) => state.ruleData.spellConditionTypes;
export const getSpellRangeTypes = (state) => state.ruleData.spellRangeTypes;
export const getStatModifiers = (state) => state.ruleData.statModifiers;
export const getStats = (state) => state.ruleData.stats;
export const getStealthCheckTypes = (state) => state.ruleData.stealthCheckTypes;
export const getStringMartialArts = (state) => state.ruleData.stringMartialArts;
export const getStringPactMagic = (state) => state.ruleData.stringPactMagic;
export const getStringSpellCasting = (state) => state.ruleData.stringSpellCasting;
export const getStringSpellEldritchBlast = (state) => state.ruleData.stringSpellEldritchBlast;
export const getWeapons = (state) => state.ruleData.weapons;
export const getWeaponCategories = (state) => state.ruleData.weaponCategories;
export const getWeaponProperties = (state) => state.ruleData.weaponProperties;
export const getWeaponPropertyReachDistance = (state) => state.ruleData.weaponPropertyReachDistance;
@@ -0,0 +1,10 @@
export const getClassAlwaysKnownSpells = (state) => state.serviceData.classAlwaysKnownSpells;
export const getClassAlwaysPreparedSpells = (state) => state.serviceData.classAlwaysPreparedSpells;
export const getDefinitionPool = (state) => state.serviceData.definitionPool;
export const getKnownInfusionsMappings = (state) => state.serviceData.knownInfusionsMappings;
export const getInfusionsMappings = (state) => state.serviceData.infusionsMappings;
export const getRuleDataPool = (state) => state.serviceData.ruleDataPool;
export const getVehicleComponentMappings = (state) => state.serviceData.vehicleComponentMappings;
export const getVehicleMappings = (state) => state.serviceData.vehicleMappings;
export const getPartyInfo = (state) => state.serviceData.partyInfo;
export const getCampaignSettings = (state) => state.serviceData.campaignSettings;
@@ -0,0 +1,2 @@
export const getActive = (state) => state.syncTransaction.active;
export const getInitiator = (state) => state.syncTransaction.initiator;