From ef01698178d98c44d62b30bea2cc7e5f85afaac6 Mon Sep 17 00:00:00 2001 From: Johannes Loher Date: Wed, 30 Jun 2021 02:17:54 +0200 Subject: [PATCH] WIP: Update to 0.8.x --- .husky/.gitignore | 4 - package.json | 2 +- src/module/actor/actor-data-properties.ts | 87 ++++++++ .../{actor-data.ts => actor-data-source.ts} | 106 ++++----- src/module/actor/actor-prepared-data.ts | 77 ------- src/module/actor/actor.ts | 78 ++++--- src/module/actor/sheets/actor-sheet.ts | 2 +- src/module/global.d.ts | 18 +- src/module/hooks/hotbar-drop.ts | 2 +- src/module/hooks/init.ts | 14 +- src/module/macros/roll-check.ts | 2 +- yarn.lock | 210 ++++++++++++------ 12 files changed, 352 insertions(+), 250 deletions(-) create mode 100644 src/module/actor/actor-data-properties.ts rename src/module/actor/{actor-data.ts => actor-data-source.ts} (50%) delete mode 100644 src/module/actor/actor-prepared-data.ts diff --git a/.husky/.gitignore b/.husky/.gitignore index d8f86ff0..31354ec1 100644 --- a/.husky/.gitignore +++ b/.husky/.gitignore @@ -1,5 +1 @@ -# SPDX-FileCopyrightText: 2021 Johannes Loher -# -# SPDX-License-Identifier: MIT - _ diff --git a/package.json b/package.json index 5e9420a9..d1459b25 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "postinstall": "husky install" }, "devDependencies": { - "@league-of-foundry-developers/foundry-vtt-types": "^0.7.10-0", + "@league-of-foundry-developers/foundry-vtt-types": "https://github.com/League-of-Foundry-Developers/foundry-vtt-types.git#foundry-0.8.x", "@rollup/plugin-node-resolve": "^13.0.0", "@types/fs-extra": "^9.0.11", "@types/jest": "^26.0.23", diff --git a/src/module/actor/actor-data-properties.ts b/src/module/actor/actor-data-properties.ts new file mode 100644 index 00000000..828fad18 --- /dev/null +++ b/src/module/actor/actor-data-properties.ts @@ -0,0 +1,87 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { ModifiableDataBaseTotal, ResourceDataBaseTotalMax } from "../common/common-data"; +import { DS4 } from "../config"; +import { + DS4CharacterDataSourceDataBaseInfo, + DS4CharacterDataSourceDataCurrency, + DS4CharacterDataSourceDataProfile, + DS4CharacterDataSourceDataProgression, + DS4CharacterDataSourceDataSlayerPoints, + DS4CreatureDataSourceDataBaseInfo, +} from "./actor-data-source"; + +declare global { + interface DataConfig { + Actor: DS4ActorDataProperties; + } +} + +export type DS4ActorDataProperties = DS4CharacterDataProperties | DS4CreatureDataProperties; + +interface DS4CharacterDataProperties { + type: "character"; + data: DS4CharacterDataPropertiesData; +} + +interface DS4CreatureDataProperties { + type: "creature"; + data: DS4CreatureDataPropertiesData; +} + +// templates + +interface DS4ActorDataPropertiesDataBase { + attributes: DS4ActorDataPropertiesDataAttributes; + traits: DS4ActorDataPropertiesDataTraits; + combatValues: DS4ActorDataPropertiesDataCombatValues; + rolling: DS4ActorDataPropertiesDataRolling; + checks: DS4ActorDataPropertiesDataChecks; +} + +type DS4ActorDataPropertiesDataAttributes = { + [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBaseTotal; +}; + +type DS4ActorDataPropertiesDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBaseTotal }; + +type DS4ActorDataPropertiesDataCombatValues = { + [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" + ? ResourceDataBaseTotalMax + : ModifiableDataBaseTotal; +}; + +interface DS4ActorDataPropertiesDataRolling { + maximumCoupResult: number; + minimumFumbleResult: number; +} + +type DS4ActorDataPropertiesDataChecks = { + [key in Check]: number; +}; + +export type Check = keyof typeof DS4.i18n.checks; + +export function isCheck(value: string): value is Check { + return Object.keys(DS4.i18n.checks).includes(value); +} + +// types + +interface DS4CreatureDataPropertiesData extends DS4ActorDataPropertiesDataBase { + baseInfo: DS4CreatureDataSourceDataBaseInfo; +} + +interface DS4CharacterDataPropertiesData extends DS4ActorDataPropertiesDataBase { + baseInfo: DS4CharacterDataSourceDataBaseInfo; + progression: DS4CharacterDataSourceDataProgression; + profile: DS4CharacterDataSourceDataProfile; + currency: DS4CharacterDataSourceDataCurrency; + slayerPoints: DS4CharacterDataPropertiesDataSlayerPoints; +} + +export interface DS4CharacterDataPropertiesDataSlayerPoints extends DS4CharacterDataSourceDataSlayerPoints { + max: number; +} diff --git a/src/module/actor/actor-data.ts b/src/module/actor/actor-data-source.ts similarity index 50% rename from src/module/actor/actor-data.ts rename to src/module/actor/actor-data-source.ts index 62654501..6fd6cabd 100644 --- a/src/module/actor/actor-data.ts +++ b/src/module/actor/actor-data-source.ts @@ -7,50 +7,56 @@ import { ModifiableData, ModifiableDataBase, ResourceData, UsableResource } from "../common/common-data"; import { DS4 } from "../config"; -import { DS4ItemData } from "../item/item-data"; -export type DS4ActorData = DS4CharacterData | DS4CreatureData; - -type ActorType = keyof typeof DS4.i18n.actorTypes; - -export interface DS4ActorDataHelper extends Actor.Data { - type: U; +declare global { + interface SourceConfig { + Actor: DS4ActorDataSource; + } } -type DS4CharacterData = DS4ActorDataHelper; -type DS4CreatureData = DS4ActorDataHelper; +export type DS4ActorDataSource = DS4CharacterDataSource | DS4CreatureDataSource; + +interface DS4CharacterDataSource { + type: "character"; + data: DS4CharacterDataSourceData; +} + +interface DS4CreatureDataSource { + type: "creature"; + data: DS4CreatureDataSourceData; +} // templates -interface DS4ActorDataDataBase { - attributes: DS4ActorDataDataAttributes; - traits: DS4ActorDataDataTraits; - combatValues: DS4ActorDataDataCombatValues; +interface DS4ActorDataSourceDataBase { + attributes: DS4ActorDataSourceDataAttributes; + traits: DS4ActorDataSourceDataTraits; + combatValues: DS4ActorDataSourceDataCombatValues; } -type DS4ActorDataDataAttributes = { [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBase }; +type DS4ActorDataSourceDataAttributes = { [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBase }; -type Attribute = keyof DS4ActorDataDataAttributes; +type Attribute = keyof DS4ActorDataSourceDataAttributes; export function isAttribute(value: unknown): value is Attribute { return (Object.keys(DS4.i18n.attributes) as Array).includes(value); } -type DS4ActorDataDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBase }; +type DS4ActorDataSourceDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBase }; -type Trait = keyof DS4ActorDataDataTraits; +type Trait = keyof DS4ActorDataSourceDataTraits; export function isTrait(value: unknown): value is Trait { return (Object.keys(DS4.i18n.traits) as Array).includes(value); } -type DS4ActorDataDataCombatValues = { +type DS4ActorDataSourceDataCombatValues = { [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" ? ResourceData : ModifiableData; }; -type CombatValue = keyof DS4ActorDataDataCombatValues; +type CombatValue = keyof DS4ActorDataSourceDataCombatValues; export function isCombatValue(value: string): value is CombatValue { return (Object.keys(DS4.i18n.combatValues) as Array).includes(value); @@ -58,33 +64,44 @@ export function isCombatValue(value: string): value is CombatValue { // types -interface DS4CharacterDataData extends DS4ActorDataDataBase { - baseInfo: DS4CharacterDataDataBaseInfo; - progression: DS4CharacterDataDataProgression; - language: DS4CharacterDataDataLanguage; - profile: DS4CharacterDataDataProfile; - currency: DS4CharacterDataDataCurrency; - slayerPoints: DS4CharacterDataDataSlayerPoints; +interface DS4CreatureDataSourceData extends DS4ActorDataSourceDataBase { + baseInfo: DS4CreatureDataSourceDataBaseInfo; } -export interface DS4CharacterDataDataBaseInfo { + +export interface DS4CreatureDataSourceDataBaseInfo { + loot: string; + foeFactor: number; + creatureType: CreatureType; + sizeCategory: SizeCategory; + experiencePoints: number; + description: string; +} + +type CreatureType = keyof typeof DS4.i18n.creatureTypes; + +type SizeCategory = keyof typeof DS4.i18n.creatureSizeCategories; + +interface DS4CharacterDataSourceData extends DS4ActorDataSourceDataBase { + baseInfo: DS4CharacterDataSourceDataBaseInfo; + progression: DS4CharacterDataSourceDataProgression; + profile: DS4CharacterDataSourceDataProfile; + currency: DS4CharacterDataSourceDataCurrency; + slayerPoints: DS4CharacterDataSourceDataSlayerPoints; +} +export interface DS4CharacterDataSourceDataBaseInfo { race: string; class: string; heroClass: string; culture: string; } -export interface DS4CharacterDataDataProgression { +export interface DS4CharacterDataSourceDataProgression { level: number; experiencePoints: number; talentPoints: UsableResource; progressPoints: UsableResource; } -export interface DS4CharacterDataDataLanguage { - languages: string; - alphabets: string; -} - -export interface DS4CharacterDataDataProfile { +export interface DS4CharacterDataSourceDataProfile { biography: string; gender: string; birthday: string; @@ -97,29 +114,12 @@ export interface DS4CharacterDataDataProfile { specialCharacteristics: string; } -export interface DS4CharacterDataDataCurrency { +export interface DS4CharacterDataSourceDataCurrency { gold: number; silver: number; copper: number; } -export interface DS4CharacterDataDataSlayerPoints { +export interface DS4CharacterDataSourceDataSlayerPoints { value: number; } - -interface DS4CreatureDataData extends DS4ActorDataDataBase { - baseInfo: DS4CreatureDataDataBaseInfo; -} - -export interface DS4CreatureDataDataBaseInfo { - loot: string; - foeFactor: number; - creatureType: CreatureType; - sizeCategory: SizeCategory; - experiencePoints: number; - description: string; -} - -type CreatureType = keyof typeof DS4.i18n.creatureTypes; - -type SizeCategory = keyof typeof DS4.i18n.creatureSizeCategories; diff --git a/src/module/actor/actor-prepared-data.ts b/src/module/actor/actor-prepared-data.ts deleted file mode 100644 index 18605839..00000000 --- a/src/module/actor/actor-prepared-data.ts +++ /dev/null @@ -1,77 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { ModifiableDataBaseTotal, ResourceDataBaseTotalMax } from "../common/common-data"; -import { DS4 } from "../config"; -import { - DS4ActorDataHelper, - DS4CharacterDataDataBaseInfo, - DS4CharacterDataDataCurrency, - DS4CharacterDataDataLanguage, - DS4CharacterDataDataProfile, - DS4CharacterDataDataProgression, - DS4CharacterDataDataSlayerPoints, - DS4CreatureDataDataBaseInfo, -} from "./actor-data"; - -export type DS4ActorPreparedData = DS4CharacterPreparedData | DS4CreaturePreparedData; - -type DS4CharacterPreparedData = DS4ActorDataHelper; -type DS4CreaturePreparedData = DS4ActorDataHelper; - -// templates - -interface DS4ActorPreparedDataDataBase { - attributes: DS4ActorPreparedDataDataAttributes; - traits: DS4ActorPreparedDataDataTraits; - combatValues: DS4ActorPreparedDataDataCombatValues; - rolling: DS4ActorPreparedDataDataRolling; - checks: DS4ActorPreparedDataDataChecks; -} - -type DS4ActorPreparedDataDataAttributes = { - [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBaseTotal; -}; - -type DS4ActorPreparedDataDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBaseTotal }; - -type DS4ActorPreparedDataDataCombatValues = { - [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" - ? ResourceDataBaseTotalMax - : ModifiableDataBaseTotal; -}; - -interface DS4ActorPreparedDataDataRolling { - maximumCoupResult: number; - minimumFumbleResult: number; -} - -export type Check = keyof typeof DS4.i18n.checks; - -export function isCheck(value: string): value is Check { - return Object.keys(DS4.i18n.checks).includes(value); -} - -type DS4ActorPreparedDataDataChecks = { - [key in Check]: number; -}; - -// types - -interface DS4CharacterPreparedDataData extends DS4ActorPreparedDataDataBase { - baseInfo: DS4CharacterDataDataBaseInfo; - progression: DS4CharacterDataDataProgression; - language: DS4CharacterDataDataLanguage; - profile: DS4CharacterDataDataProfile; - currency: DS4CharacterDataDataCurrency; - slayerPoints: DS4CharacterPreparedDataDataSlayerPoints; -} - -export interface DS4CharacterPreparedDataDataSlayerPoints extends DS4CharacterDataDataSlayerPoints { - max: number; -} - -interface DS4CreaturePreparedDataData extends DS4ActorPreparedDataDataBase { - baseInfo: DS4CreatureDataDataBaseInfo; -} diff --git a/src/module/actor/actor.ts b/src/module/actor/actor.ts index f3ad343c..ca7ed09e 100644 --- a/src/module/actor/actor.ts +++ b/src/module/actor/actor.ts @@ -9,18 +9,16 @@ import { DS4Item } from "../item/item"; import { ItemType } from "../item/item-data"; import { DS4ArmorPreparedData, DS4ShieldPreparedData } from "../item/item-prepared-data"; import { createCheckRoll } from "../rolls/check-factory"; -import { DS4ActorData, isAttribute, isTrait } from "./actor-data"; -import { Check, DS4ActorPreparedData } from "./actor-prepared-data"; +import { isAttribute, isTrait } from "./actor-data-source"; +import { Check } from "./actor-data-properties"; /** * The Actor class for DS4 */ -export class DS4Actor extends Actor { +export class DS4Actor extends Actor { /** @override */ prepareData(): void { - this.data = duplicate(this._data) as DS4ActorPreparedData; - if (!this.data.img) this.data.img = CONST.DEFAULT_TOKEN; - if (!this.data.name) this.data.name = "New " + this.entity; + this.data.reset(); this.prepareBaseData(); this.prepareEmbeddedEntities(); this.applyActiveEffectsToBaseData(); @@ -49,6 +47,15 @@ export class DS4Actor extends Actor ); } + /** + * @override + * We override this with an empty implementation because we have our own custom way of applying + * {@link ActiveEffect}s and {@link Actor#prepareEmbeddedEntities} calls this. + */ + applyActiveEffects(): void { + return; + } + applyActiveEffectsToBaseData(): void { // reset overrides because our variant of applying active effects does not set them, it only adds overrides this.overrides = {}; @@ -68,32 +75,30 @@ export class DS4Actor extends Actor * * @param predicate - The predicate that ActiveEffectChanges need to satisfy in order to be applied */ - applyActiveEffectsFiltered(predicate: (change: ActiveEffectChange) => boolean): void { + applyActiveEffectsFiltered(predicate: (change: foundry.data.ActiveEffectData["changes"][number]) => boolean): void { const overrides: Record = {}; // Organize non-disabled effects by their application priority - const changes = this.effects.reduce( - (changes: Array }>, e) => { - if (e.data.disabled) return changes; - const item = this._getOriginatingItemOfActiveEffect(e); - if (item?.isNonEquippedEuipable()) return changes; + const changes: (foundry.data.ActiveEffectData["changes"][number] & { effect: ActiveEffect })[] = + this.effects.reduce( + (changes: (foundry.data.ActiveEffectData["changes"][number] & { effect: ActiveEffect })[], e) => { + if (e.data.disabled) return changes; + const item = this.getOriginatingItemOfActiveEffect(e); + if (item?.isNonEquippedEuipable()) return changes; // TODO: DS4Item - const factor = item?.activeEffectFactor ?? 1; + const factor = item?.activeEffectFactor ?? 1; // TODO: DS4Item - return changes.concat( - e.data.changes.filter(predicate).flatMap((c) => { - const duplicatedChange = duplicate(c); - duplicatedChange.priority = duplicatedChange.priority ?? duplicatedChange.mode * 10; - return Array(factor).fill({ - ...duplicatedChange, - effect: e, - }); - }), - ); - }, - [], - ); - changes.sort((a, b) => a.priority - b.priority); + const newChanges = e.data.changes.filter(predicate).flatMap((c) => { + const changeSource = c.toObject(); + changeSource.priority = changeSource.priority ?? changeSource.mode * 10; + return Array(factor).fill({ ...changeSource, effect: e }); + }); + + return changes.concat(newChanges); + }, + [], + ); + changes.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0)); // Apply all changes for (const change of changes) { @@ -105,8 +110,9 @@ export class DS4Actor extends Actor this.overrides = expandObject({ ...flattenObject(this.overrides), ...overrides }); } - protected _getOriginatingItemOfActiveEffect(effect: ActiveEffect): DS4Item | undefined { - return this.items.find((item) => item.uuid === effect.data.origin) ?? undefined; + // TODO: returns DS4Item | undefined + protected getOriginatingItemOfActiveEffect(effect: ActiveEffect): Item | undefined { + return this.items.find((item) => item.uuid === effect.data.origin); } /** @@ -216,7 +222,7 @@ export class DS4Actor extends Actor return this.items .map((item) => item.data) .filter( - (data): data is DS4ArmorPreparedData | DS4ShieldPreparedData => + (data): data is foundry.data.ItemData & (DS4ArmorDataProperties | DS4ShieldDataProperties) => data.type === "armor" || data.type === "shield", ) .filter((data) => data.data.equipped) @@ -266,8 +272,14 @@ export class DS4Actor extends Actor * Handle how changes to a Token attribute bar are applied to the Actor. * This only differs from the base implementation by also allowing negative values. * @override + * TODO: Adjust return type */ - async modifyTokenAttribute(attribute: string, value: number, isDelta = false, isBar = true): Promise { + async modifyTokenAttribute( + attribute: string, + value: number, + isDelta = false, + isBar = true, + ): Promise { const current = getProperty(this.data.data, attribute); // Determine the updates to make to the actor data @@ -291,7 +303,7 @@ export class DS4Actor extends Actor */ async rollCheck(check: Check): Promise { await createCheckRoll(this.data.data.checks[check], { - rollMode: game.settings.get("core", "rollMode") as Const.DiceRollMode, // TODO(types): Type this setting in upstream + rollMode: game.settings.get("core", "rollMode"), maximumCoupResult: this.data.data.rolling.maximumCoupResult, minimumFumbleResult: this.data.data.rolling.minimumFumbleResult, flavor: game.i18n.format("DS4.ActorCheckFlavor", { actor: this.name, check: DS4.i18n.checks[check] }), @@ -306,7 +318,7 @@ export class DS4Actor extends Actor const { attribute, trait } = await this.selectAttributeAndTrait(); const checkTargetNumber = this.data.data.attributes[attribute].total + this.data.data.traits[trait].total; await createCheckRoll(checkTargetNumber, { - rollMode: game.settings.get("core", "rollMode") as Const.DiceRollMode, // TODO(types): Type this setting in upstream + rollMode: game.settings.get("core", "rollMode"), maximumCoupResult: this.data.data.rolling.maximumCoupResult, minimumFumbleResult: this.data.data.rolling.minimumFumbleResult, flavor: game.i18n.format("DS4.ActorGenericCheckFlavor", { diff --git a/src/module/actor/sheets/actor-sheet.ts b/src/module/actor/sheets/actor-sheet.ts index c02b90b0..6aad960a 100644 --- a/src/module/actor/sheets/actor-sheet.ts +++ b/src/module/actor/sheets/actor-sheet.ts @@ -13,7 +13,7 @@ import { DS4ItemData } from "../../item/item-data"; import { getDS4Settings } from "../../settings"; import notifications from "../../ui/notifications"; import { DS4Actor } from "../actor"; -import { isCheck } from "../actor-prepared-data"; +import { isCheck } from "../actor-data-properties"; /** * The base Sheet class for all DS4 Actors diff --git a/src/module/global.d.ts b/src/module/global.d.ts index d22133c7..72a5fcff 100644 --- a/src/module/global.d.ts +++ b/src/module/global.d.ts @@ -2,10 +2,18 @@ // // SPDX-License-Identifier: MIT -declare namespace ClientSettings { - interface Values { - "ds4.systemMigrationVersion": number; - "ds4.useSlayingDiceForAutomatedChecks": boolean; - "ds4.showSlayerPoints": boolean; +import { DS4 } from "./config"; + +declare global { + namespace ClientSettings { + interface Values { + "ds4.systemMigrationVersion": number; + "ds4.useSlayingDiceForAutomatedChecks": boolean; + "ds4.showSlayerPoints": boolean; + } + } + + interface CONFIG { + DS4: typeof DS4; } } diff --git a/src/module/hooks/hotbar-drop.ts b/src/module/hooks/hotbar-drop.ts index 0613045c..53997a74 100644 --- a/src/module/hooks/hotbar-drop.ts +++ b/src/module/hooks/hotbar-drop.ts @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -import { isCheck } from "../actor/actor-prepared-data"; +import { isCheck } from "../actor/actor-data-properties"; import { DS4Item } from "../item/item"; import { DS4ItemData } from "../item/item-data"; import { createRollCheckMacro } from "../macros/roll-check"; diff --git a/src/module/hooks/init.ts b/src/module/hooks/init.ts index f07b3371..76b78eb5 100644 --- a/src/module/hooks/init.ts +++ b/src/module/hooks/init.ts @@ -39,8 +39,8 @@ async function init() { CONFIG.DS4 = DS4; - CONFIG.Actor.entityClass = DS4Actor; - CONFIG.Item.entityClass = DS4Item; + // CONFIG.Actor.documentClass = DS4Actor; + // CONFIG.Item.documentClass = DS4Item; CONFIG.Actor.typeLabels = DS4.i18n.actorTypes; CONFIG.Item.typeLabels = DS4.i18n.itemTypes; @@ -54,11 +54,11 @@ async function init() { registerSystemSettings(); - Actors.unregisterSheet("core", ActorSheet); - Actors.registerSheet("ds4", DS4CharacterActorSheet, { types: ["character"], makeDefault: true }); - Actors.registerSheet("ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); - Items.unregisterSheet("core", ItemSheet); - Items.registerSheet("ds4", DS4ItemSheet, { makeDefault: true }); + // Actors.unregisterSheet("core", ActorSheet); + // Actors.registerSheet("ds4", DS4CharacterActorSheet, { types: ["character"], makeDefault: true }); + // Actors.registerSheet("ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); + // Items.unregisterSheet("core", ItemSheet); + // Items.registerSheet("ds4", DS4ItemSheet, { makeDefault: true }); await registerHandlebarsPartials(); registerHandlebarsHelpers(); diff --git a/src/module/macros/roll-check.ts b/src/module/macros/roll-check.ts index e7db35e8..4e24127f 100644 --- a/src/module/macros/roll-check.ts +++ b/src/module/macros/roll-check.ts @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -import { Check } from "../actor/actor-prepared-data"; +import { Check } from "../actor/actor-data-properties"; import { DS4 } from "../config"; import notifications from "../ui/notifications"; import { getActiveActor } from "./helpers"; diff --git a/yarn.lock b/yarn.lock index 1531cbd3..00e40566 100644 --- a/yarn.lock +++ b/yarn.lock @@ -839,19 +839,19 @@ __metadata: languageName: node linkType: hard -"@league-of-foundry-developers/foundry-vtt-types@npm:^0.7.10-0": - version: 0.7.10-0 - resolution: "@league-of-foundry-developers/foundry-vtt-types@npm:0.7.10-0" +"@league-of-foundry-developers/foundry-vtt-types@https://github.com/League-of-Foundry-Developers/foundry-vtt-types.git#foundry-0.8.x": + version: 0.7.9-6 + resolution: "@league-of-foundry-developers/foundry-vtt-types@https://github.com/League-of-Foundry-Developers/foundry-vtt-types.git#commit=62c138c4ff2f6c3b19301db2b31e14e7c825f1e6" dependencies: - "@types/howler": 2.2.1 - "@types/jquery": 3.5.1 - "@types/socket.io-client": ^1.4.33 - handlebars: 4.7.6 - pixi-particles: ^4.3.0 + "@types/jquery": ~3.5.5 + "@types/simple-peer": ~9.11.0 + handlebars: 4.7.7 + pixi-particles: 4.3.1 pixi.js: 5.3.4 - tinymce: 5.6.2 - typescript: ^4.1.4 - checksum: c071397239c4ec0f8b9b6d1e672e3a50cc212a0ff9cb0bdc4ba1e5fa981c6e33cddec94d3c72b0f8ccbf3fe985dcccfba1117822e232aba77b6bf58340106a90 + socket.io-client: 4.1.2 + tinymce: 5.8.1 + typescript: ^4.1.6 + checksum: af1f4d3cfae69a5a0fab2ca3a301c9f755d7f5584bf1eaee37031b19fe805581b7588e6a2452553f874a68cb5475a5a8fce287ed8436cf0af24fa0527ea5c014 languageName: node linkType: hard @@ -1382,6 +1382,13 @@ __metadata: languageName: node linkType: hard +"@types/component-emitter@npm:^1.2.10": + version: 1.2.10 + resolution: "@types/component-emitter@npm:1.2.10" + checksum: 868a9a00697df0ce74da77b8fc2c40f1a3ac6f294a828fdc8d9ae3ba62f9a541b472f147d1837dc7dd9d9c1333aa277f9d29c12e4746e6d779e6ce94c4c2f7ac + languageName: node + linkType: hard + "@types/estree@npm:0.0.39": version: 0.0.39 resolution: "@types/estree@npm:0.0.39" @@ -1407,13 +1414,6 @@ __metadata: languageName: node linkType: hard -"@types/howler@npm:2.2.1": - version: 2.2.1 - resolution: "@types/howler@npm:2.2.1" - checksum: bfb92d24673b39546d3f87a1888718359c3a7214b52aad91c7c54a5c3ad40f542ecb662efbe0dde207d958c705897373f26f6e94aba72bc5c8852f7077bf85f4 - languageName: node - linkType: hard - "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.3 resolution: "@types/istanbul-lib-coverage@npm:2.0.3" @@ -1449,12 +1449,12 @@ __metadata: languageName: node linkType: hard -"@types/jquery@npm:3.5.1": - version: 3.5.1 - resolution: "@types/jquery@npm:3.5.1" +"@types/jquery@npm:~3.5.5": + version: 3.5.5 + resolution: "@types/jquery@npm:3.5.5" dependencies: "@types/sizzle": "*" - checksum: 43f7885e75a7c5fdecb99ff7893a844d53b88ba5d6fb8c8d9bf65d0bfc42ee1ec75844cc9b73bcefd5d955376cb37dcbc9950e3d18e8922a8ef30e3ef8dab78e + checksum: 9e3c34451577c6916ac9de8a26fd8bce2831cb5861116514cba4a984189067635a3e084039308324d8e20bfa5f2e1ce7725a509110e5e05487b91f9369b1ae43 languageName: node linkType: hard @@ -1495,6 +1495,15 @@ __metadata: languageName: node linkType: hard +"@types/simple-peer@npm:~9.11.0": + version: 9.11.0 + resolution: "@types/simple-peer@npm:9.11.0" + dependencies: + "@types/node": "*" + checksum: ab05e2373fe48faa59cc0d7795bfdea3c7e7a93f7af2683cfdd2a311035ce4dd2a948c950886f48d662db503e8af2d930b9d51b53c0eef8c90ba86287864d4f7 + languageName: node + linkType: hard + "@types/sizzle@npm:*": version: 2.3.2 resolution: "@types/sizzle@npm:2.3.2" @@ -1502,13 +1511,6 @@ __metadata: languageName: node linkType: hard -"@types/socket.io-client@npm:^1.4.33": - version: 1.4.35 - resolution: "@types/socket.io-client@npm:1.4.35" - checksum: 367bceb6edd3491898cf9eebbec9f6663737a470047573a262462f0492f7171a59fa79113f494dfdd4c37548d05e45284d88d8881a692417900b82df869c8ced - languageName: node - linkType: hard - "@types/stack-utils@npm:^2.0.0": version: 2.0.0 resolution: "@types/stack-utils@npm:2.0.0" @@ -2247,6 +2249,13 @@ __metadata: languageName: node linkType: hard +"backo2@npm:~1.0.2": + version: 1.0.2 + resolution: "backo2@npm:1.0.2" + checksum: 72f19a0fd2b573f5504adf1f2e74e7658eec000e7732ebd5f622b6b1d520187277a5e8310787906455d02fcf915f35c5c48e54c997bed1a60b95355db8f2ccab + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.0 resolution: "balanced-match@npm:1.0.0" @@ -2254,6 +2263,13 @@ __metadata: languageName: node linkType: hard +"base64-arraybuffer@npm:0.1.4": + version: 0.1.4 + resolution: "base64-arraybuffer@npm:0.1.4" + checksum: be8207c755c206f1053a3ebccb71e48d21d33125df1940d1b176ec26008e521edae8e1aa859b6fb6444b2889e1beec0771274d2f5bc5898d41b35179a55fbe96 + languageName: node + linkType: hard + "base@npm:^0.11.1": version: 0.11.2 resolution: "base@npm:0.11.2" @@ -2796,7 +2812,7 @@ __metadata: languageName: node linkType: hard -"component-emitter@npm:^1.2.1": +"component-emitter@npm:^1.2.1, component-emitter@npm:~1.3.0": version: 1.3.0 resolution: "component-emitter@npm:1.3.0" checksum: fc4edbf1014f0aed88dcec33ca02d2938734e428423f640d8a3f94975615b8e8c506c19e29b93949637c5a281353e75fa79e299e0d57732f42a9fe346cb2cad6 @@ -2939,7 +2955,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.1": +"debug@npm:4, debug@npm:^4.3.1, debug@npm:~4.3.1": version: 4.3.2 resolution: "debug@npm:4.3.2" dependencies: @@ -3140,7 +3156,7 @@ __metadata: version: 0.0.0-use.local resolution: "dungeonslayers4@workspace:." dependencies: - "@league-of-foundry-developers/foundry-vtt-types": ^0.7.10-0 + "@league-of-foundry-developers/foundry-vtt-types": "https://github.com/League-of-Foundry-Developers/foundry-vtt-types.git#foundry-0.8.x" "@rollup/plugin-node-resolve": ^13.0.0 "@types/fs-extra": ^9.0.11 "@types/jest": ^26.0.23 @@ -3246,6 +3262,32 @@ __metadata: languageName: node linkType: hard +"engine.io-client@npm:~5.1.1": + version: 5.1.2 + resolution: "engine.io-client@npm:5.1.2" + dependencies: + base64-arraybuffer: 0.1.4 + component-emitter: ~1.3.0 + debug: ~4.3.1 + engine.io-parser: ~4.0.1 + has-cors: 1.1.0 + parseqs: 0.0.6 + parseuri: 0.0.6 + ws: ~7.4.2 + yeast: 0.1.2 + checksum: 8853318f1016ab80dbc13c642cdaf054af7b2781697cdf26cf6cb2ad70e6f03de81bffcc233d88afe9138eb0761f7a97f91a8b9f82234e2db257d5fe5a95e940 + languageName: node + linkType: hard + +"engine.io-parser@npm:~4.0.1": + version: 4.0.2 + resolution: "engine.io-parser@npm:4.0.2" + dependencies: + base64-arraybuffer: 0.1.4 + checksum: fe5543911fb9451501c062fe6f0965ffd80064036daba4b7dda2190038436fd00875a049194381edd936dc27eaa0e52dca7f4113b0116d962ebd7cfe67247fc1 + languageName: node + linkType: hard + "enquirer@npm:^2.3.5, enquirer@npm:^2.3.6": version: 2.3.6 resolution: "enquirer@npm:2.3.6" @@ -4395,9 +4437,9 @@ fsevents@^1.2.7: languageName: node linkType: hard -"handlebars@npm:4.7.6": - version: 4.7.6 - resolution: "handlebars@npm:4.7.6" +"handlebars@npm:4.7.7": + version: 4.7.7 + resolution: "handlebars@npm:4.7.7" dependencies: minimist: ^1.2.5 neo-async: ^2.6.0 @@ -4409,7 +4451,7 @@ fsevents@^1.2.7: optional: true bin: handlebars: bin/handlebars - checksum: 50276715da3e410f1d485635029b77e09b8c9244d9e49119d5f39ed978a3d44ce94f5d6120efeb707da0ba9dd0cddf140d8d2ac160721d93aa9f4234474ad318 + checksum: 2df9a6b422e2ccc0b7ca53f7a1f9915b47d19bf3fd372824a87e2a28b7952fa2cb3348cbe33a87ef49ee04f42d10359aab44819ca8d680ee3a5b53d48bd062a1 languageName: node linkType: hard @@ -4430,6 +4472,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"has-cors@npm:1.1.0": + version: 1.1.0 + resolution: "has-cors@npm:1.1.0" + checksum: c8257cbe3fc1c2f49d293879f0c6873c6fa7ba7be44147f9a9023cc421c7842833c3553f46bdc04459f046c1c74eb9c7a98e63fdd2c7713caaddd26b1b7f9043 + languageName: node + linkType: hard + "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -6718,6 +6767,20 @@ fsevents@^1.2.7: languageName: node linkType: hard +"parseqs@npm:0.0.6": + version: 0.0.6 + resolution: "parseqs@npm:0.0.6" + checksum: 9e095b898b52a138e5d1e055bf3dd2ab4630b2ac0468dd47ec00695c39683aa28f5b88852a1b4938f9b1109219b5eb63e7ffd567ff7a7fb8932c91697647fe83 + languageName: node + linkType: hard + +"parseuri@npm:0.0.6": + version: 0.0.6 + resolution: "parseuri@npm:0.0.6" + checksum: ff7ad178b06748b2999d52852ea0a32d270f92a8926da1cad7550d315e189fce67edac49b476958d13b8cea1fda7b8ac128bfe7d7d78a41772a3278c5c51e057 + languageName: node + linkType: hard + "pascalcase@npm:^0.1.1": version: 0.1.1 resolution: "pascalcase@npm:0.1.1" @@ -6856,12 +6919,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pixi-particles@npm:^4.3.0": - version: 4.3.0 - resolution: "pixi-particles@npm:4.3.0" +"pixi-particles@npm:4.3.1": + version: 4.3.1 + resolution: "pixi-particles@npm:4.3.1" peerDependencies: pixi.js: ">=4.0.0" - checksum: 66da332ae33a236afb5a5b2ebeea0308314423bab1017851be860a0904aed91cb5f345ea488c75a6efdfa6e42096ba7762472f8573590b924b93cae293b8b6d9 + checksum: 782fdad4f28c65ce15f7e02b9a73ceaaaa6e973d0e03f6037ace89aac596cd8d50df75891ea5fe77e4715125d610a1dad3cde98362e2d57a8d083e504fc0cc7c languageName: node linkType: hard @@ -7683,6 +7746,32 @@ fsevents@^1.2.7: languageName: node linkType: hard +"socket.io-client@npm:4.1.2": + version: 4.1.2 + resolution: "socket.io-client@npm:4.1.2" + dependencies: + "@types/component-emitter": ^1.2.10 + backo2: ~1.0.2 + component-emitter: ~1.3.0 + debug: ~4.3.1 + engine.io-client: ~5.1.1 + parseuri: 0.0.6 + socket.io-parser: ~4.0.4 + checksum: 932a1eb0fe47fa8d0369649e7c51d95e815f959f32b4e534010dc6f8fca8438dde6d77ca890638ce06e1901aaf7e78d26f717e95f4473115b74bd33ab7103234 + languageName: node + linkType: hard + +"socket.io-parser@npm:~4.0.4": + version: 4.0.4 + resolution: "socket.io-parser@npm:4.0.4" + dependencies: + "@types/component-emitter": ^1.2.10 + component-emitter: ~1.3.0 + debug: ~4.3.1 + checksum: ee2ffffa30e11ecebe690291ed91e5f949bf4ab9446ad6659b84488dd4f5908514867970539d32e1d94d4a5596e0d191f2e0ad92f707324cc4753ceb328aea2a + languageName: node + linkType: hard + "source-map-resolve@npm:^0.5.0": version: 0.5.3 resolution: "source-map-resolve@npm:0.5.3" @@ -8138,10 +8227,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"tinymce@npm:5.6.2": - version: 5.6.2 - resolution: "tinymce@npm:5.6.2" - checksum: 7655814c72db7b82760cc20f361bc29979cb72ec57e074dee11dbb294172d4d91b7828069b905a412b5b2b2f7db13cf0f1ba669c0f971739a4133ba647ac0346 +"tinymce@npm:5.8.1": + version: 5.8.1 + resolution: "tinymce@npm:5.8.1" + checksum: c5312a3a7e00e1a5d1a27c2901c7387763e2e99924f47025cbb982f7710a60128d390851a0411c327d5ee6ad8ccc489002477a80d57702de5a92523cfbed1a4b languageName: node linkType: hard @@ -8406,17 +8495,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -typescript@^4.1.4: - version: 4.2.2 - resolution: "typescript@npm:4.2.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: b2e3d5551a12c51b6b7a14f0e78d2664c136fab4dfb3eecaaf7a6e8e7e608f2cf43c6ebe81387d194db2588793b769720d2df523d445a1664b7585c5b9a85984 - languageName: node - linkType: hard - -typescript@^4.3.4: +"typescript@^4.1.6, typescript@^4.3.4": version: 4.3.4 resolution: "typescript@npm:4.3.4" bin: @@ -8426,17 +8505,7 @@ typescript@^4.3.4: languageName: node linkType: hard -"typescript@patch:typescript@^4.1.4#builtin": - version: 4.2.2 - resolution: "typescript@patch:typescript@npm%3A4.2.2#builtin::version=4.2.2&hash=ddfc1b" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: aa60765443932c0aa294cf24295a8bba163dd791735b20e2e43dffe2d21f6bf80de8342c9ab9c4338c59e36f4bcae179195fdfaae1cae4678821994e77199d34 - languageName: node - linkType: hard - -"typescript@patch:typescript@^4.3.4#builtin": +"typescript@patch:typescript@^4.1.6#builtin, typescript@patch:typescript@^4.3.4#builtin": version: 4.3.4 resolution: "typescript@patch:typescript@npm%3A4.3.4#builtin::version=4.3.4&hash=ddfc1b" bin: @@ -8898,7 +8967,7 @@ typescript@^4.3.4: languageName: node linkType: hard -"ws@npm:^7.4.5": +"ws@npm:^7.4.5, ws@npm:~7.4.2": version: 7.4.6 resolution: "ws@npm:7.4.6" peerDependencies: @@ -9036,3 +9105,10 @@ typescript@^4.3.4: checksum: 62bb2345031bbb3dd99626a62fd94caa0c13610c53b3d914792f387432c7c7d49432d85ea9eb6339092aca5788a2f1184507826f98c3af277e1e2202ae1d9341 languageName: node linkType: hard + +"yeast@npm:0.1.2": + version: 0.1.2 + resolution: "yeast@npm:0.1.2" + checksum: ce326a71c7f25059ef7581121104c21d2837511a95cb44604f9e1825c5722f5b65324fb0b1d20bcfe3975efe45e418106100aa0d0e9fc502f90f3d07d059e177 + languageName: node + linkType: hard