diff --git a/.husky/.gitignore b/.husky/.gitignore index d8f86ff..31354ec 100644 --- a/.husky/.gitignore +++ b/.husky/.gitignore @@ -1,5 +1 @@ -# SPDX-FileCopyrightText: 2021 Johannes Loher -# -# SPDX-License-Identifier: MIT - _ diff --git a/.husky/.gitignore.license b/.husky/.gitignore.license new file mode 100644 index 0000000..31803f3 --- /dev/null +++ b/.husky/.gitignore.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/package.json b/package.json index 5e9420a..8f58e0a 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": "^0.8.8-0", "@rollup/plugin-node-resolve": "^13.0.0", "@types/fs-extra": "^9.0.11", "@types/jest": "^26.0.23", diff --git a/spec/rolls/check-evaluation.spec.ts b/spec/rolls/check-evaluation.spec.ts index f0c829a..3767117 100644 --- a/spec/rolls/check-evaluation.spec.ts +++ b/spec/rolls/check-evaluation.spec.ts @@ -5,7 +5,23 @@ import evaluateCheck from "../../src/module/rolls/check-evaluation"; -Object.defineProperty(globalThis, "game", { value: { i18n: { localize: (key: string) => key } } }); +class StubGame { + constructor() { + this.i18n = { + localize: (key: string) => key, + }; + } + i18n: { + localize: (key: string) => string; + }; +} + +const game = new StubGame(); + +Object.defineProperties(globalThis, { + game: { value: game }, + Game: { value: StubGame }, +}); describe("evaluateCheck with no dice", () => { it("should throw an error.", () => { diff --git a/src/lang/de.json b/src/lang/de.json index dc3792f..6740a40 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -5,7 +5,7 @@ "DS4.UserInteractionAddEffect": "Neuer Effekt", "DS4.UserInteractionEditEffect": "Effekt bearbeiten", "DS4.UserInteractionDeleteEffect": "Effekt löschen", - "DS4.EntityImageAltText": "Bild von {name}", + "DS4.DocumentImageAltText": "Bild von {name}", "DS4.RollableImageRollableTitle": "Für {name} würfeln", "DS4.DiceOverlayImageAltText": "Bild eines W20", "DS4.NotOwned": "Nicht besessen", diff --git a/src/lang/en.json b/src/lang/en.json index cdaf254..b3ebd5f 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -5,7 +5,7 @@ "DS4.UserInteractionAddEffect": "Add Effect", "DS4.UserInteractionEditEffect": "Edit Effect", "DS4.UserInteractionDeleteEffect": "Delete Effect", - "DS4.EntityImageAltText": "Image of {name}", + "DS4.DocumentImageAltText": "Image of {name}", "DS4.RollableImageRollableTitle": "Roll for {name}", "DS4.DiceOverlayImageAltText": "Image of a d20", "DS4.NotOwned": "No owner", diff --git a/src/module/actor/actor-data-properties.ts b/src/module/actor/actor-data-properties.ts new file mode 100644 index 0000000..828fad1 --- /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 6265450..6fd6cab 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 1860583..0000000 --- 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 f3ad343..d2b1263 100644 --- a/src/module/actor/actor.ts +++ b/src/module/actor/actor.ts @@ -5,22 +5,27 @@ import { ModifiableDataBaseTotal } from "../common/common-data"; import { DS4 } from "../config"; +import { getGame } from "../helpers"; import { DS4Item } from "../item/item"; -import { ItemType } from "../item/item-data"; -import { DS4ArmorPreparedData, DS4ShieldPreparedData } from "../item/item-prepared-data"; +import { DS4ArmorDataProperties, DS4ShieldDataProperties } from "../item/item-data-properties"; +import { ItemType } from "../item/item-data-source"; import { createCheckRoll } from "../rolls/check-factory"; -import { DS4ActorData, isAttribute, isTrait } from "./actor-data"; -import { Check, DS4ActorPreparedData } from "./actor-prepared-data"; +import { Check } from "./actor-data-properties"; +import { isAttribute, isTrait } from "./actor-data-source"; + +declare global { + interface DocumentClassConfig { + Actor: typeof DS4Actor; + } +} /** * 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 +54,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 +82,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; - const factor = item?.activeEffectFactor ?? 1; + const factor = item?.activeEffectFactor ?? 1; - 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) { @@ -102,11 +114,11 @@ export class DS4Actor extends Actor } // Expand the set of final overrides - this.overrides = expandObject({ ...flattenObject(this.overrides), ...overrides }); + this.overrides = foundry.utils.expandObject({ ...foundry.utils.flattenObject(this.overrides), ...overrides }); } - protected _getOriginatingItemOfActiveEffect(effect: ActiveEffect): DS4Item | undefined { - return this.items.find((item) => item.uuid === effect.data.origin) ?? undefined; + protected getOriginatingItemOfActiveEffect(effect: ActiveEffect): DS4Item | undefined { + return this.items.find((item) => item.uuid === effect.data.origin); } /** @@ -216,7 +228,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) @@ -267,8 +279,13 @@ export class DS4Actor extends Actor * This only differs from the base implementation by also allowing negative values. * @override */ - async modifyTokenAttribute(attribute: string, value: number, isDelta = false, isBar = true): Promise { - const current = getProperty(this.data.data, attribute); + async modifyTokenAttribute( + attribute: string, + value: number, + isDelta = false, + isBar = true, + ): Promise { + const current = foundry.utils.getProperty(this.data.data, attribute); // Determine the updates to make to the actor data let updates: Record; @@ -291,10 +308,10 @@ 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: getGame().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] }), + flavor: getGame().i18n.format("DS4.ActorCheckFlavor", { actor: this.name, check: DS4.i18n.checks[check] }), }); } @@ -306,10 +323,10 @@ 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: getGame().settings.get("core", "rollMode"), maximumCoupResult: this.data.data.rolling.maximumCoupResult, minimumFumbleResult: this.data.data.rolling.minimumFumbleResult, - flavor: game.i18n.format("DS4.ActorGenericCheckFlavor", { + flavor: getGame().i18n.format("DS4.ActorGenericCheckFlavor", { actor: this.name, attribute: DS4.i18n.attributes[attribute], trait: DS4.i18n.traits[trait], @@ -324,27 +341,27 @@ export class DS4Actor extends Actor const attributeIdentifier = "attribute-trait-selection-attribute"; const traitIdentifier = "attribute-trait-selection-trait"; return Dialog.prompt({ - title: game.i18n.localize("DS4.DialogAttributeTraitSelection"), + title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection"), content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { selects: [ { - label: game.i18n.localize("DS4.Attribute"), + label: getGame().i18n.localize("DS4.Attribute"), identifier: attributeIdentifier, options: DS4.i18n.attributes, }, { - label: game.i18n.localize("DS4.Trait"), + label: getGame().i18n.localize("DS4.Trait"), identifier: traitIdentifier, options: DS4.i18n.traits, }, ], }), - label: game.i18n.localize("DS4.GenericOkButton"), + label: getGame().i18n.localize("DS4.GenericOkButton"), callback: (html) => { const selectedAttribute = html.find(`#${attributeIdentifier}`).val(); if (!isAttribute(selectedAttribute)) { throw new Error( - game.i18n.format("DS4.ErrorUnexpectedAttribute", { + getGame().i18n.format("DS4.ErrorUnexpectedAttribute", { actualAttribute: selectedAttribute, expectedTypes: Object.keys(DS4.i18n.attributes) .map((attribute) => `'${attribute}'`) @@ -355,7 +372,7 @@ export class DS4Actor extends Actor const selectedTrait = html.find(`#${traitIdentifier}`).val(); if (!isTrait(selectedTrait)) { throw new Error( - game.i18n.format("DS4.ErrorUnexpectedTrait", { + getGame().i18n.format("DS4.ErrorUnexpectedTrait", { actualTrait: selectedTrait, expectedTypes: Object.keys(DS4.i18n.traits) .map((attribute) => `'${attribute}'`) diff --git a/src/module/actor/sheets/actor-sheet.ts b/src/module/actor/sheets/actor-sheet.ts index c02b90b..8f4a5f0 100644 --- a/src/module/actor/sheets/actor-sheet.ts +++ b/src/module/actor/sheets/actor-sheet.ts @@ -7,24 +7,19 @@ import { ModifiableDataBaseTotal } from "../../common/common-data"; import { DS4 } from "../../config"; -import { getCanvas } from "../../helpers"; +import { getCanvas, getGame } from "../../helpers"; import { DS4Item } from "../../item/item"; -import { DS4ItemData } from "../../item/item-data"; -import { getDS4Settings } from "../../settings"; +import { DS4Settings, 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 */ -export class DS4ActorSheet extends ActorSheet> { - // TODO(types): Improve mergeObject in upstream so that it isn't necessary to provide all parameters (see https://github.com/League-of-Foundry-Developers/foundry-vtt-types/issues/272) +export class DS4ActorSheet extends ActorSheet { /** @override */ - static get defaultOptions(): BaseEntitySheet.Options { - const superDefaultOptions = super.defaultOptions; - return mergeObject(superDefaultOptions, { - ...superDefaultOptions, + static get defaultOptions(): ActorSheet.Options { + return foundry.utils.mergeObject(super.defaultOptions, { classes: ["ds4", "sheet", "actor"], height: 620, scrollY: [ @@ -57,14 +52,14 @@ export class DS4ActorSheet extends ActorSheet> { * object itemsByType. * @returns The data fed to the template of the actor sheet */ - async getData(): Promise> { + async getData(): Promise { const itemsByType = Object.fromEntries( Object.entries(this.actor.itemTypes).map(([itemType, items]) => { return [itemType, items.map((item) => item.data).sort((a, b) => (a.sort || 0) - (b.sort || 0))]; }), ); const data = { - ...this._addTooltipsToData(await super.getData()), + ...this.addTooltipsToData(await super.getData()), // Add the localization config to the data: config: DS4, // Add the items explicitly sorted by type to the data: @@ -74,21 +69,23 @@ export class DS4ActorSheet extends ActorSheet> { return data; } - protected _addTooltipsToData(data: ActorSheet.Data): ActorSheet.Data { - const valueGroups = [data.data.attributes, data.data.traits, data.data.combatValues]; + protected addTooltipsToData(data: ActorSheet.Data): ActorSheet.Data { + const valueGroups = [data.data.data.attributes, data.data.data.traits, data.data.data.combatValues]; valueGroups.forEach((valueGroup) => { Object.values(valueGroup).forEach((attribute: ModifiableDataBaseTotal & { tooltip?: string }) => { - attribute.tooltip = this._getTooltipForValue(attribute); + attribute.tooltip = this.getTooltipForValue(attribute); }); }); return data; } - protected _getTooltipForValue(value: ModifiableDataBaseTotal): string { - return `${value.base} (${game.i18n.localize("DS4.TooltipBaseValue")}) + ${value.mod} (${game.i18n.localize( - "DS4.TooltipModifier", - )}) ➞ ${game.i18n.localize("DS4.TooltipEffects")} ➞ ${value.total}`; + protected getTooltipForValue(value: ModifiableDataBaseTotal): string { + return `${value.base} (${getGame().i18n.localize("DS4.TooltipBaseValue")}) + ${ + value.mod + } (${getGame().i18n.localize("DS4.TooltipModifier")}) ➞ ${getGame().i18n.localize("DS4.TooltipEffects")} ➞ ${ + value.total + }`; } /** @override */ @@ -99,18 +96,18 @@ export class DS4ActorSheet extends ActorSheet> { if (!this.options.editable) return; // Add Inventory Item - html.find(".item-create").on("click", this._onItemCreate.bind(this)); + html.find(".item-create").on("click", this.onItemCreate.bind(this)); // Update Inventory Item html.find(".item-edit").on("click", (ev) => { const li = $(ev.currentTarget).parents(".item"); const id = li.data("itemId"); - const item = this.actor.getOwnedItem(id); + const item = this.actor.items.get(id); if (!item) { - throw new Error(game.i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name })); + throw new Error(getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name })); } if (!item.sheet) { - throw new Error(game.i18n.localize("DS4.ErrorUnexpectedError")); + throw new Error(getGame().i18n.localize("DS4.ErrorUnexpectedError")); } item.sheet.render(true); }); @@ -118,38 +115,36 @@ export class DS4ActorSheet extends ActorSheet> { // Delete Inventory Item html.find(".item-delete").on("click", (ev) => { const li = $(ev.currentTarget).parents(".item"); - this.actor.deleteOwnedItem(li.data("itemId")); + this.actor.deleteEmbeddedDocuments("Item", [li.data("itemId")]); li.slideUp(200, () => this.render(false)); }); - html.find(".item-change").on("change", this._onItemChange.bind(this)); + html.find(".item-change").on("change", this.onItemChange.bind(this)); - html.find(".rollable-item").on("click", this._onRollItem.bind(this)); + html.find(".rollable-item").on("click", this.onRollItem.bind(this)); - html.find(".rollable-check").on("click", this._onRollCheck.bind(this)); + html.find(".rollable-check").on("click", this.onRollCheck.bind(this)); } /** - * Handle creating a new Owned Item for the actor using initial data defined in the HTML dataset + * Handle creating a new embedded Item for the actor using initial data defined in the HTML dataset * @param event - The originating click event */ - protected _onItemCreate(event: JQuery.ClickEvent): Promise { + protected onItemCreate(event: JQuery.ClickEvent): void { event.preventDefault(); const header = event.currentTarget; - // Get the type of item to create. - // Grab any data associated with this control. - const { type, ...data } = duplicate(header.dataset); - // Initialize a default name. + + const { type, ...data } = foundry.utils.deepClone(header.dataset); + const name = `New ${type.capitalize()}`; - // Prepare the item object. + const itemData = { name: name, type: type, data: data, }; - // Finally, create the item! - return this.actor.createOwnedItem(itemData); + DS4Item.create(itemData, { parent: this.actor }); } /** @@ -158,11 +153,15 @@ export class DS4ActorSheet extends ActorSheet> { * Assumes the item property is given as the value of the HTML element property 'data-property'. * @param ev - The originating change event */ - protected _onItemChange(ev: JQuery.ChangeEvent): void { + protected onItemChange(ev: JQuery.ChangeEvent): void { ev.preventDefault(); const el: HTMLFormElement = $(ev.currentTarget).get(0); const id = $(ev.currentTarget).parents(".item").data("itemId"); - const item = duplicate(this.actor.getOwnedItem(id)); + const item = this.actor.items.get(id); + if (!item) { + throw new Error(getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name })); + } + const itemObject = item.toObject(); const property: string | undefined = $(ev.currentTarget).data("property"); // Early return: @@ -175,8 +174,8 @@ export class DS4ActorSheet extends ActorSheet> { // Set new value const newValue = this.getValue(el); - setProperty(item, property, newValue); - this.actor.updateOwnedItem(item); + foundry.utils.setProperty(itemObject, property, newValue); + item.update({ ...itemObject }); } /** @@ -238,10 +237,13 @@ export class DS4ActorSheet extends ActorSheet> { * Handle clickable item rolls. * @param event - The originating click event */ - protected _onRollItem(event: JQuery.ClickEvent): void { + protected onRollItem(event: JQuery.ClickEvent): void { event.preventDefault(); const id = $(event.currentTarget).parents(".item").data("itemId"); - const item = this.actor.getOwnedItem(id); + const item = this.actor.items.get(id); + if (!item) { + throw new Error(getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name })); + } item.roll().catch((e) => notifications.error(e, { log: true })); } @@ -249,7 +251,7 @@ export class DS4ActorSheet extends ActorSheet> { * Handle clickable check rolls. * @param event - The originating click event */ - protected _onRollCheck(event: JQuery.ClickEvent): void { + protected onRollCheck(event: JQuery.ClickEvent): void { event.preventDefault(); const check = event.currentTarget.dataset["check"]; this.actor.rollCheck(check).catch((e) => notifications.error(e, { log: true })); @@ -263,7 +265,7 @@ export class DS4ActorSheet extends ActorSheet> { const check = target.dataset.check; if (!check) return super._onDragStart(event); - if (!isCheck(check)) throw new Error(game.i18n.format("DS4.ErrorCannotDragMissingCheck", { check })); + if (!isCheck(check)) throw new Error(getGame().i18n.format("DS4.ErrorCannotDragMissingCheck", { check })); const dragData = { actorId: this.actor.id, @@ -277,18 +279,11 @@ export class DS4ActorSheet extends ActorSheet> { } /** @override */ - protected async _onDropItem( - event: DragEvent, - data: { type: "Item" } & ( - | { data: DeepPartial> } - | { pack: string } - | { id: string } - ), - ): Promise> { + protected async _onDropItem(event: DragEvent, data: ActorSheet.DropData.Item): Promise { const item = await DS4Item.fromDropData(data); if (item && !this.actor.canOwnItemType(item.data.type)) { notifications.warn( - game.i18n.format("DS4.WarningActorCannotOwnItem", { + getGame().i18n.format("DS4.WarningActorCannotOwnItem", { actorName: this.actor.name, actorType: this.actor.data.type, itemName: item.name, @@ -300,3 +295,9 @@ export class DS4ActorSheet extends ActorSheet> { return super._onDropItem(event, data); } } + +interface DS4ActorSheetData extends ActorSheet.Data { + config: typeof DS4; + itemsByType: Record; + settings: DS4Settings; +} diff --git a/src/module/actor/sheets/character-sheet.ts b/src/module/actor/sheets/character-sheet.ts index ad2194a..a779a99 100644 --- a/src/module/actor/sheets/character-sheet.ts +++ b/src/module/actor/sheets/character-sheet.ts @@ -9,10 +9,8 @@ import { DS4ActorSheet } from "./actor-sheet"; */ export class DS4CharacterActorSheet extends DS4ActorSheet { /** @override */ - static get defaultOptions(): BaseEntitySheet.Options { - const superDefaultOptions = super.defaultOptions; - return mergeObject(superDefaultOptions, { - ...superDefaultOptions, + static get defaultOptions(): ActorSheet.Options { + return foundry.utils.mergeObject(super.defaultOptions, { classes: ["ds4", "sheet", "actor", "character"], }); } diff --git a/src/module/actor/sheets/creature-sheet.ts b/src/module/actor/sheets/creature-sheet.ts index 4364f25..56b9dfd 100644 --- a/src/module/actor/sheets/creature-sheet.ts +++ b/src/module/actor/sheets/creature-sheet.ts @@ -9,10 +9,8 @@ import { DS4ActorSheet } from "./actor-sheet"; */ export class DS4CreatureActorSheet extends DS4ActorSheet { /** @override */ - static get defaultOptions(): BaseEntitySheet.Options { - const superDefaultOptions = super.defaultOptions; - return mergeObject(superDefaultOptions, { - ...superDefaultOptions, + static get defaultOptions(): ActorSheet.Options { + return foundry.utils.mergeObject(super.defaultOptions, { classes: ["ds4", "sheet", "actor", "creature"], }); } diff --git a/src/module/common/common-data.ts b/src/module/common/common-data.ts index 31cd6c5..c2c1a52 100644 --- a/src/module/common/common-data.ts +++ b/src/module/common/common-data.ts @@ -15,8 +15,6 @@ export interface HasTotal { total: T; } -export interface ModifiableDataTotal extends ModifiableData, HasTotal {} - export interface ModifiableDataBaseTotal extends ModifiableDataBase, HasTotal {} export interface ResourceData extends ModifiableData { @@ -27,6 +25,10 @@ export interface HasMax { max: T; } +export interface ModifiableDataBaseMax extends ModifiableDataBase, HasMax {} + +export interface ModifiableDataBaseTotalMax extends ModifiableDataBaseMax, HasTotal {} + export interface ResourceDataBaseTotalMax extends ResourceData, HasBase, HasTotal, HasMax {} export interface UsableResource { diff --git a/src/module/global.d.ts b/src/module/global.d.ts index d22133c..91fc6c1 100644 --- a/src/module/global.d.ts +++ b/src/module/global.d.ts @@ -2,10 +2,20 @@ // // SPDX-License-Identifier: MIT -declare namespace ClientSettings { - interface Values { - "ds4.systemMigrationVersion": number; - "ds4.useSlayingDiceForAutomatedChecks": boolean; - "ds4.showSlayerPoints": boolean; +declare global { + namespace ClientSettings { + interface Values { + "ds4.systemMigrationVersion": number; + "ds4.useSlayingDiceForAutomatedChecks": boolean; + "ds4.showSlayerPoints": boolean; + } + } + + namespace PoolTerm { + interface Modifiers { + x: (this: PoolTerm, modifier: string) => void; + } } } + +export {}; diff --git a/src/module/helpers.ts b/src/module/helpers.ts index 7d23d04..edfc28d 100644 --- a/src/module/helpers.ts +++ b/src/module/helpers.ts @@ -4,7 +4,14 @@ export function getCanvas(): Canvas { if (!(canvas instanceof Canvas) || !canvas.ready) { - throw new Error(game.i18n.localize("DS4.ErrorCanvasIsNotInitialized")); + throw new Error(getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized")); } return canvas; } + +export function getGame(): Game { + if (!(game instanceof Game)) { + throw new Error("Game is not initialized yet."); // Cannot localize this as we would need to access game to do this. + } + return game; +} diff --git a/src/module/hooks/hotbar-drop.ts b/src/module/hooks/hotbar-drop.ts index 0613045..ac4e621 100644 --- a/src/module/hooks/hotbar-drop.ts +++ b/src/module/hooks/hotbar-drop.ts @@ -2,25 +2,27 @@ // // SPDX-License-Identifier: MIT -import { isCheck } from "../actor/actor-prepared-data"; +import { isCheck } from "../actor/actor-data-properties"; +import { getGame } from "../helpers"; import { DS4Item } from "../item/item"; -import { DS4ItemData } from "../item/item-data"; import { createRollCheckMacro } from "../macros/roll-check"; import { createRollItemMacro } from "../macros/roll-item"; import notifications from "../ui/notifications"; export default function registerForHotbarDropHook(): void { - Hooks.on("hotbarDrop", async (hotbar: Hotbar, data: { type: string } & Record, slot: string) => { + Hooks.on("hotbarDrop", async (hotbar: Hotbar, data: HotbarDropData, slot: string) => { switch (data.type) { case "Item": { - if (!("data" in data)) { - return notifications.warn(game.i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems")); + if (!isItemDropData(data) || !("data" in data)) { + return notifications.warn( + getGame().i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems"), + ); } - const itemData = data.data as DS4ItemData; + const itemData = data.data; if (!DS4Item.rollableItemTypes.includes(itemData.type)) { return notifications.warn( - game.i18n.format("DS4.WarningItemIsNotRollable", { + getGame().i18n.format("DS4.WarningItemIsNotRollable", { name: itemData.name, id: itemData._id, type: itemData.type, @@ -31,10 +33,16 @@ export default function registerForHotbarDropHook(): void { } case "Check": { if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) { - return notifications.warn(game.i18n.localize("DS4.WarningInvalidCheckDropped")); + return notifications.warn(getGame().i18n.localize("DS4.WarningInvalidCheckDropped")); } return createRollCheckMacro(data.data, slot); } } }); } + +type HotbarDropData = ActorSheet.DropData.Item | ({ type: string } & Partial>); + +function isItemDropData(dropData: HotbarDropData): dropData is ActorSheet.DropData.Item { + return dropData.type === "Item"; +} diff --git a/src/module/hooks/init.ts b/src/module/hooks/init.ts index f07b337..c7b1edc 100644 --- a/src/module/hooks/init.ts +++ b/src/module/hooks/init.ts @@ -10,6 +10,7 @@ import { DS4CreatureActorSheet } from "../actor/sheets/creature-sheet"; import { DS4 } from "../config"; import registerHandlebarsHelpers from "../handlebars/handlebars-helpers"; import registerHandlebarsPartials from "../handlebars/handlebars-partials"; +import { getGame } from "../helpers"; import { DS4Item } from "../item/item"; import { DS4ItemSheet } from "../item/item-sheet"; import logger from "../logger"; @@ -28,7 +29,7 @@ export default function registerForInitHook(): void { async function init() { logger.info(`Initializing the DS4 Game System\n${DS4.ASCII}`); - game.ds4 = { + getGame().ds4 = { DS4Actor, DS4Item, DS4, @@ -39,8 +40,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; @@ -63,3 +64,20 @@ async function init() { await registerHandlebarsPartials(); registerHandlebarsHelpers(); } + +declare global { + interface Game { + ds4: { + DS4Actor: typeof DS4Actor; + DS4Item: typeof DS4Item; + DS4: typeof DS4; + createCheckRoll: typeof createCheckRoll; + migration: typeof migration; + macros: typeof macros; + }; + } + + interface CONFIG { + DS4: typeof DS4; + } +} diff --git a/src/module/hooks/setup.ts b/src/module/hooks/setup.ts index f3c62d3..b5bf274 100644 --- a/src/module/hooks/setup.ts +++ b/src/module/hooks/setup.ts @@ -6,6 +6,7 @@ // SPDX-License-Identifier: MIT import { DS4 } from "../config"; +import { getGame } from "../helpers"; export default function registerForSetupHooks(): void { Hooks.once("setup", () => { @@ -21,7 +22,7 @@ function localizeAndSortConfigObjects() { const localizeObject = (obj: T, sort = true): T => { const localized = Object.entries(obj).map(([key, value]) => { - return [key, game.i18n.localize(value)]; + return [key, getGame().i18n.localize(value)]; }); if (sort) localized.sort((a, b) => a[1].localeCompare(b[1])); return Object.fromEntries(localized); diff --git a/src/module/item/item-data-properties.ts b/src/module/item/item-data-properties.ts new file mode 100644 index 0000000..3dcda46 --- /dev/null +++ b/src/module/item/item-data-properties.ts @@ -0,0 +1,130 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { ModifiableDataBaseTotalMax } from "../common/common-data"; +import { + DS4AlphabetDataSourceData, + DS4ArmorDataSourceData, + DS4EquipmentDataSourceData, + DS4LanguageDataSourceData, + DS4LootDataSourceData, + DS4RacialAbilityDataSourceData, + DS4ShieldDataSourceData, + DS4SpecialCreatureAbilityDataSourceData, + DS4SpellDataSourceData, + DS4TalentDataSourceData, + DS4WeaponDataSourceData, +} from "./item-data-source"; + +declare global { + interface DataConfig { + Item: DS4ItemDataProperties; + } +} + +export type DS4ItemDataProperties = + | DS4WeaponDataProperties + | DS4ArmorDataProperties + | DS4ShieldDataProperties + | DS4SpellDataProperties + | DS4EquipmentDataProperties + | DS4LootDataProperties + | DS4TalentDataProperties + | DS4RacialAbilityDataProperties + | DS4LanguageDataProperties + | DS4AlphabetDataProperties + | DS4SpecialCreatureAbilityDataProperties; + +export interface DS4WeaponDataProperties { + type: "weapon"; + data: DS4WeaponDataPropertiesData; +} + +export interface DS4ArmorDataProperties { + type: "armor"; + data: DS4ArmorDataPropertiesData; +} + +export interface DS4ShieldDataProperties { + type: "shield"; + data: DS4ShieldDataPropertiesData; +} + +export interface DS4SpellDataProperties { + type: "spell"; + data: DS4SpellDataPropertiesData; +} + +export interface DS4EquipmentDataProperties { + type: "equipment"; + data: DS4EquipmentDataPropertiesData; +} + +export interface DS4LootDataProperties { + type: "loot"; + data: DS4LootDataPropertiesData; +} + +export interface DS4TalentDataProperties { + type: "talent"; + data: DS4TalentDataPropertiesData; +} + +export interface DS4RacialAbilityDataProperties { + type: "racialAbility"; + data: DS4RacialAbilityDataPropertiesData; +} + +export interface DS4LanguageDataProperties { + type: "language"; + data: DS4LanguageDataPropertiesData; +} + +export interface DS4AlphabetDataProperties { + type: "alphabet"; + data: DS4AlphabetDataPropertiesData; +} + +export interface DS4SpecialCreatureAbilityDataProperties { + type: "specialCreatureAbility"; + data: DS4SpecialCreatureAbilityDataPropertiesData; +} + +// templates + +interface DS4ItemDataPropertiesDataRollable { + rollable: boolean; +} + +//types + +interface DS4WeaponDataPropertiesData extends DS4WeaponDataSourceData, DS4ItemDataPropertiesDataRollable {} + +interface DS4ArmorDataPropertiesData extends DS4ArmorDataSourceData, DS4ItemDataPropertiesDataRollable {} + +interface DS4ShieldDataPropertiesData extends DS4ShieldDataSourceData, DS4ItemDataPropertiesDataRollable {} + +interface DS4SpellDataPropertiesData extends DS4SpellDataSourceData, DS4ItemDataPropertiesDataRollable { + price: number | null; +} + +interface DS4EquipmentDataPropertiesData extends DS4EquipmentDataSourceData, DS4ItemDataPropertiesDataRollable {} + +interface DS4LootDataPropertiesData extends DS4LootDataSourceData, DS4ItemDataPropertiesDataRollable {} + +interface DS4TalentDataPropertiesData extends DS4TalentDataSourceData, DS4ItemDataPropertiesDataRollable { + rank: ModifiableDataBaseTotalMax; +} + +interface DS4RacialAbilityDataPropertiesData + extends DS4RacialAbilityDataSourceData, + DS4ItemDataPropertiesDataRollable {} + +interface DS4LanguageDataPropertiesData extends DS4LanguageDataSourceData, DS4ItemDataPropertiesDataRollable {} + +interface DS4AlphabetDataPropertiesData extends DS4AlphabetDataSourceData, DS4ItemDataPropertiesDataRollable {} + +interface DS4SpecialCreatureAbilityDataPropertiesData + extends DS4SpecialCreatureAbilityDataSourceData, + DS4ItemDataPropertiesDataRollable {} diff --git a/src/module/item/item-data-source.ts b/src/module/item/item-data-source.ts new file mode 100644 index 0000000..dc7f4c4 --- /dev/null +++ b/src/module/item/item-data-source.ts @@ -0,0 +1,184 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import { ModifiableDataBaseMax } from "../common/common-data"; +import { DS4 } from "../config"; + +declare global { + interface SourceConfig { + Item: DS4ItemDataSource; + } +} + +export type ItemType = keyof typeof DS4.i18n.itemTypes; + +export type DS4ItemDataSource = + | DS4WeaponDataSource + | DS4ArmorDataSource + | DS4ShieldDataSource + | DS4SpellDataSource + | DS4EquipmentDataSource + | DS4LootDataSource + | DS4TalentDataSource + | DS4RacialAbilityDataSource + | DS4LanguageDataSource + | DS4AlphabetDataSource + | DS4SpecialCreatureAbilityDataSource; + +interface DS4WeaponDataSource { + type: "weapon"; + data: DS4WeaponDataSourceData; +} + +interface DS4ArmorDataSource { + type: "armor"; + data: DS4ArmorDataSourceData; +} + +interface DS4ShieldDataSource { + type: "shield"; + data: DS4ShieldDataSourceData; +} + +interface DS4SpellDataSource { + type: "spell"; + data: DS4SpellDataSourceData; +} + +interface DS4EquipmentDataSource { + type: "equipment"; + data: DS4EquipmentDataSourceData; +} + +interface DS4LootDataSource { + type: "loot"; + data: DS4LootDataSourceData; +} + +interface DS4TalentDataSource { + type: "talent"; + data: DS4TalentDataSourceData; +} + +interface DS4RacialAbilityDataSource { + type: "racialAbility"; + data: DS4RacialAbilityDataSourceData; +} + +interface DS4LanguageDataSource { + type: "language"; + data: DS4LanguageDataSourceData; +} + +interface DS4AlphabetDataSource { + type: "alphabet"; + data: DS4AlphabetDataSourceData; +} + +interface DS4SpecialCreatureAbilityDataSource { + type: "specialCreatureAbility"; + data: DS4SpecialCreatureAbilityDataSourceData; +} + +// templates + +interface DS4ItemDataSourceDataBase { + description: string; +} + +interface DS4ItemDataSourceDataPhysical { + quantity: number; + price: number; + availability: keyof typeof DS4.i18n.itemAvailabilities; + storageLocation: string; +} + +export function isDS4ItemDataTypePhysical(input: foundry.data.ItemData["data"]): boolean { + return "quantity" in input && "price" in input && "availability" in input && "storageLocation" in input; +} + +interface DS4ItemDataSourceDataEquipable { + equipped: boolean; +} + +interface DS4ItemDataSourceDataProtective { + armorValue: number; +} + +// types + +export interface DS4WeaponDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable { + attackType: AttackType; + weaponBonus: number; + opponentDefense: number; +} + +export type AttackType = keyof typeof DS4.i18n.attackTypes; + +export interface DS4ArmorDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataProtective { + armorMaterialType: keyof typeof DS4.i18n.armorMaterialTypes; + armorType: keyof typeof DS4.i18n.armorTypes; +} + +export interface DS4ShieldDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataProtective {} + +export interface DS4SpellDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable { + spellType: keyof typeof DS4.i18n.spellTypes; + bonus: string; + spellCategory: keyof typeof DS4.i18n.spellCategories; + maxDistance: UnitData; + effectRadius: UnitData; + duration: UnitData; + cooldownDuration: UnitData; + minimumLevels: { + healer: number | null; + wizard: number | null; + sorcerer: number | null; + }; +} + +export interface UnitData { + value: string; + unit: UnitType; +} + +type DistanceUnit = keyof typeof DS4.i18n.distanceUnits; + +type CustomTemporalUnit = keyof typeof DS4.i18n.customTemporalUnits; + +export type TemporalUnit = keyof typeof DS4.i18n.temporalUnits; + +export interface DS4EquipmentDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable {} + +export interface DS4LootDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical {} + +export interface DS4TalentDataSourceData extends DS4ItemDataSourceDataBase { + rank: ModifiableDataBaseMax; +} + +export type DS4RacialAbilityDataSourceData = DS4ItemDataSourceDataBase; + +export type DS4LanguageDataSourceData = DS4ItemDataSourceDataBase; + +export type DS4AlphabetDataSourceData = DS4ItemDataSourceDataBase; + +export interface DS4SpecialCreatureAbilityDataSourceData extends DS4ItemDataSourceDataBase { + experiencePoints: number; +} diff --git a/src/module/item/item-data.ts b/src/module/item/item-data.ts deleted file mode 100644 index 9a0f44a..0000000 --- a/src/module/item/item-data.ts +++ /dev/null @@ -1,133 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { ModifiableDataBase } from "../common/common-data"; -import { DS4 } from "../config"; - -export type ItemType = keyof typeof DS4.i18n.itemTypes; - -export type DS4ItemData = - | DS4WeaponData - | DS4ArmorData - | DS4ShieldData - | DS4SpellData - | DS4EquipmentData - | DS4LootData - | DS4TalentData - | DS4RacialAbilityData - | DS4LanguageData - | DS4AlphabetData - | DS4SpecialCreatureAbilityData; - -export interface DS4ItemDataHelper extends Item.Data { - type: U; -} - -type DS4WeaponData = DS4ItemDataHelper; -type DS4ArmorData = DS4ItemDataHelper; -type DS4ShieldData = DS4ItemDataHelper; -type DS4SpellData = DS4ItemDataHelper; -type DS4EquipmentData = DS4ItemDataHelper; -type DS4LootData = DS4ItemDataHelper; -type DS4TalentData = DS4ItemDataHelper; -type DS4RacialAbilityData = DS4ItemDataHelper; -type DS4LanguageData = DS4ItemDataHelper; -type DS4AlphabetData = DS4ItemDataHelper; -type DS4SpecialCreatureAbilityData = DS4ItemDataHelper; - -// templates - -interface DS4ItemDataDataBase { - description: string; -} -interface DS4ItemDataDataPhysical { - quantity: number; - price: number; - availability: keyof typeof DS4.i18n.itemAvailabilities; - storageLocation: string; -} - -export function isDS4ItemDataTypePhysical(input: DS4ItemData["data"]): boolean { - return "quantity" in input && "price" in input && "availability" in input && "storageLocation" in input; -} - -interface DS4ItemDataDataEquipable { - equipped: boolean; -} - -interface DS4ItemDataDataProtective { - armorValue: number; -} - -export interface UnitData { - value: string; - unit: UnitType; -} -export type TemporalUnit = keyof typeof DS4.i18n.temporalUnits; -type CustomTemporalUnit = keyof typeof DS4.i18n.customTemporalUnits; -type DistanceUnit = keyof typeof DS4.i18n.distanceUnits; - -// types - -export interface DS4WeaponDataData extends DS4ItemDataDataBase, DS4ItemDataDataPhysical, DS4ItemDataDataEquipable { - attackType: AttackType; - weaponBonus: number; - opponentDefense: number; -} - -export type AttackType = keyof typeof DS4.i18n.attackTypes; - -export interface DS4ArmorDataData - extends DS4ItemDataDataBase, - DS4ItemDataDataPhysical, - DS4ItemDataDataEquipable, - DS4ItemDataDataProtective { - armorMaterialType: keyof typeof DS4.i18n.armorMaterialTypes; - armorType: keyof typeof DS4.i18n.armorTypes; -} - -export interface DS4TalentDataData extends DS4ItemDataDataBase { - rank: DS4TalentRank; -} - -export interface DS4TalentRank extends ModifiableDataBase { - max: number; -} - -export interface DS4SpellDataData extends DS4ItemDataDataBase, DS4ItemDataDataEquipable { - spellType: keyof typeof DS4.i18n.spellTypes; - bonus: string; - spellCategory: keyof typeof DS4.i18n.spellCategories; - maxDistance: UnitData; - effectRadius: UnitData; - duration: UnitData; - cooldownDuration: UnitData; - minimumLevels: { - healer: number | null; - wizard: number | null; - sorcerer: number | null; - }; -} - -export interface DS4ShieldDataData - extends DS4ItemDataDataBase, - DS4ItemDataDataPhysical, - DS4ItemDataDataEquipable, - DS4ItemDataDataProtective {} - -export interface DS4EquipmentDataData extends DS4ItemDataDataBase, DS4ItemDataDataPhysical, DS4ItemDataDataEquipable {} - -export interface DS4LootDataData extends DS4ItemDataDataBase, DS4ItemDataDataPhysical {} - -export type DS4RacialAbilityDataData = DS4ItemDataDataBase; - -export type DS4LanguageDataData = DS4ItemDataDataBase; - -export type DS4AlphabetDataData = DS4ItemDataDataBase; - -export interface DS4SpecialCreatureAbilityDataData extends DS4ItemDataDataBase { - experiencePoints: number; -} diff --git a/src/module/item/item-prepared-data.ts b/src/module/item/item-prepared-data.ts deleted file mode 100644 index 180a990..0000000 --- a/src/module/item/item-prepared-data.ts +++ /dev/null @@ -1,86 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { HasTotal } from "../common/common-data"; -import { - DS4AlphabetDataData, - DS4ArmorDataData, - DS4EquipmentDataData, - DS4ItemDataHelper, - DS4LanguageDataData, - DS4LootDataData, - DS4RacialAbilityDataData, - DS4ShieldDataData, - DS4SpecialCreatureAbilityDataData, - DS4SpellDataData, - DS4TalentDataData, - DS4TalentRank, - DS4WeaponDataData, -} from "./item-data"; - -export type DS4ItemPreparedData = - | DS4WeaponPreparedData - | DS4ArmorPreparedData - | DS4ShieldPreparedData - | DS4SpellPreparedData - | DS4EquipmentPreparedData - | DS4LootPreparedData - | DS4TalentPreparedData - | DS4RacialAbilityPreparedData - | DS4LanguagePreparedData - | DS4AlphabetPreparedData - | DS4SpecialCreatureAbilityPreparedData; - -export type DS4WeaponPreparedData = DS4ItemDataHelper; -export type DS4ArmorPreparedData = DS4ItemDataHelper; -export type DS4ShieldPreparedData = DS4ItemDataHelper; -export type DS4SpellPreparedData = DS4ItemDataHelper; -export type DS4EquipmentPreparedData = DS4ItemDataHelper; -export type DS4LootPreparedData = DS4ItemDataHelper; -export type DS4TalentPreparedData = DS4ItemDataHelper; -export type DS4RacialAbilityPreparedData = DS4ItemDataHelper; -export type DS4LanguagePreparedData = DS4ItemDataHelper; -export type DS4AlphabetPreparedData = DS4ItemDataHelper; -export type DS4SpecialCreatureAbilityPreparedData = DS4ItemDataHelper< - DS4SpecialCreatureAbilityPreparedDataData, - "specialCreatureAbility" ->; - -// templates - -interface DS4ItemPreparedDataDataRollable { - rollable: boolean; -} - -//types - -interface DS4WeaponPreparedDataData extends DS4WeaponDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4ArmorPreparedDataData extends DS4ArmorDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4ShieldPreparedDataData extends DS4ShieldDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4SpellPreparedDataData extends DS4SpellDataData, DS4ItemPreparedDataDataRollable { - price: number | null; -} - -interface DS4EquipmentPreparedDataData extends DS4EquipmentDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4LootPreparedDataData extends DS4LootDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4TalentPreparedDataData extends DS4TalentDataData, DS4ItemPreparedDataDataRollable { - rank: DS4TalentPreparedRank; -} - -interface DS4TalentPreparedRank extends DS4TalentRank, HasTotal {} - -interface DS4RacialAbilityPreparedDataData extends DS4RacialAbilityDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4LanguagePreparedDataData extends DS4LanguageDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4AlphabetPreparedDataData extends DS4AlphabetDataData, DS4ItemPreparedDataDataRollable {} - -interface DS4SpecialCreatureAbilityPreparedDataData - extends DS4SpecialCreatureAbilityDataData, - DS4ItemPreparedDataDataRollable {} diff --git a/src/module/item/item-sheet.ts b/src/module/item/item-sheet.ts index 4b2c927..485490f 100644 --- a/src/module/item/item-sheet.ts +++ b/src/module/item/item-sheet.ts @@ -5,19 +5,17 @@ // SPDX-License-Identifier: MIT import { DS4 } from "../config"; +import { getGame } from "../helpers"; import notifications from "../ui/notifications"; -import { DS4Item } from "./item"; -import { isDS4ItemDataTypePhysical } from "./item-data"; +import { isDS4ItemDataTypePhysical } from "./item-data-source"; /** * The Sheet class for DS4 Items */ -export class DS4ItemSheet extends ItemSheet> { +export class DS4ItemSheet extends ItemSheet { /** @override */ - static get defaultOptions(): BaseEntitySheet.Options { - const superDefaultOptions = super.defaultOptions; - return mergeObject(superDefaultOptions, { - ...superDefaultOptions, + static get defaultOptions(): ItemSheet.Options { + return foundry.utils.mergeObject(super.defaultOptions, { width: 540, height: 400, classes: ["ds4", "sheet", "item"], @@ -33,7 +31,7 @@ export class DS4ItemSheet extends ItemSheet> { } /** @override */ - async getData(): Promise> { + async getData(): Promise { const data = { ...(await super.getData()), config: DS4, @@ -45,11 +43,14 @@ export class DS4ItemSheet extends ItemSheet> { } /** @override */ - setPosition(options: Partial = {}): Application.Position & { height: number } { + setPosition(options: Partial = {}): (Application.Position & { height: number }) | undefined { const position = super.setPosition(options); - const sheetBody = this.element.find(".sheet-body"); - const bodyHeight = position.height - 192; - sheetBody.css("height", bodyHeight); + if (position) { + const sheetBody = this.element.find(".sheet-body"); + const bodyHeight = position.height - 192; + sheetBody.css("height", bodyHeight); + } + return position; } @@ -70,23 +71,25 @@ export class DS4ItemSheet extends ItemSheet> { event.preventDefault(); if (this.item.isOwned) { - return notifications.warn(game.i18n.localize("DS4.WarningManageActiveEffectOnOwnedItem")); + return notifications.warn(getGame().i18n.localize("DS4.WarningManageActiveEffectOnOwnedItem")); } const a = event.currentTarget; const li = $(a).parents(".effect"); switch (a.dataset["action"]) { case "create": - return this._createActiveEffect(); + return this.createActiveEffect(); case "edit": const id = li.data("effectId"); const effect = this.item.effects.get(id); if (!effect) { - throw new Error(game.i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name })); + throw new Error( + getGame().i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name }), + ); } return effect.sheet.render(true); case "delete": { - return this.item.deleteEmbeddedEntity("ActiveEffect", li.data("effectId")); + return this.item.deleteEmbeddedDocuments("ActiveEffect", [li.data("effectId")]); } } } @@ -94,17 +97,19 @@ export class DS4ItemSheet extends ItemSheet> { /** * Create a new ActiveEffect for the item using default data. */ - protected async _createActiveEffect(): Promise { - const label = `New Effect`; - + protected async createActiveEffect(): Promise { const createData = { - label: label, - changes: [], - duration: {}, - transfer: true, + label: "New Effect", + icon: "icons/svg/aura.svg", }; - const effect = ActiveEffect.create(createData, this.item); - return effect.create({}); + return ActiveEffect.create({ ...createData }, { parent: this.item }); } } + +interface DS4ItemSheetData extends ItemSheet.Data { + config: typeof DS4; + isOwned: boolean; + actor: DS4ItemSheet["item"]["actor"]; + isPhysical: boolean; +} diff --git a/src/module/item/item.ts b/src/module/item/item.ts index da8ec63..8ee23ce 100644 --- a/src/module/item/item.ts +++ b/src/module/item/item.ts @@ -3,26 +3,29 @@ // // SPDX-License-Identifier: MIT -import { DS4Actor } from "../actor/actor"; import { DS4 } from "../config"; +import { getGame } from "../helpers"; import { createCheckRoll } from "../rolls/check-factory"; import notifications from "../ui/notifications"; -import { AttackType, DS4ItemData, ItemType } from "./item-data"; -import { DS4ItemPreparedData } from "./item-prepared-data"; +import { AttackType, ItemType } from "./item-data-source"; import { calculateSpellPrice } from "./type-specific-helpers/spell"; +declare global { + interface DocumentClassConfig { + Item: typeof DS4Item; + } +} + /** * The Item class for DS4 */ -export class DS4Item extends Item { - /** - * @override - */ +export class DS4Item extends Item { + /** @override */ prepareData(): void { super.prepareData(); - this.prepareDerivedData(); } + /** @override */ prepareDerivedData(): void { if (this.data.type === "talent") { const data = this.data.data; @@ -63,24 +66,22 @@ export class DS4Item extends Item { * Roll a check for an action with this item. */ async roll(): Promise { - if (!this.isOwnedItem()) { - throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); - } - switch (this.data.type) { case "weapon": return this.rollWeapon(); case "spell": return this.rollSpell(); default: - throw new Error(game.i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.data.type })); + throw new Error( + getGame().i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.data.type }), + ); } } - protected async rollWeapon(this: this & { readonly isOwned: true }): Promise { + protected async rollWeapon(): Promise { if (!(this.data.type === "weapon")) { throw new Error( - game.i18n.format("DS4.ErrorWrongItemType", { + getGame().i18n.format("DS4.ErrorWrongItemType", { actualType: this.data.type, expectedType: "weapon", id: this.id, @@ -91,7 +92,7 @@ export class DS4Item extends Item { if (!this.data.data.equipped) { return notifications.warn( - game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + getGame().i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { name: this.name, id: this.id, type: this.data.type, @@ -99,24 +100,27 @@ export class DS4Item extends Item { ); } - const actor = this.actor as unknown as DS4Actor; // TODO(types): Improve so that the concrete Actor type is known here - const ownerDataData = actor.data.data; + if (!this.actor) { + throw new Error(getGame().i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); + } + + const ownerDataData = this.actor.data.data; const weaponBonus = this.data.data.weaponBonus; const combatValue = await this.getCombatValueKeyForAttackType(this.data.data.attackType); const checkTargetNumber = ownerDataData.combatValues[combatValue].total + weaponBonus; await createCheckRoll(checkTargetNumber, { - rollMode: game.settings.get("core", "rollMode") as Const.DiceRollMode, // TODO(types): Type this setting in upstream + rollMode: getGame().settings.get("core", "rollMode"), maximumCoupResult: ownerDataData.rolling.maximumCoupResult, minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult, - flavor: game.i18n.format("DS4.ItemWeaponCheckFlavor", { actor: actor.name, weapon: this.name }), + flavor: getGame().i18n.format("DS4.ItemWeaponCheckFlavor", { actor: this.actor.name, weapon: this.name }), }); } protected async rollSpell(): Promise { if (!(this.data.type === "spell")) { throw new Error( - game.i18n.format("DS4.ErrorWrongItemType", { + getGame().i18n.format("DS4.ErrorWrongItemType", { actualType: this.data.type, expectedType: "spell", id: this.id, @@ -127,7 +131,7 @@ export class DS4Item extends Item { if (!this.data.data.equipped) { return notifications.warn( - game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + getGame().i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { name: this.name, id: this.id, type: this.data.type, @@ -135,12 +139,15 @@ export class DS4Item extends Item { ); } - const actor = this.actor as unknown as DS4Actor; // TODO(types): Improve so that the concrete Actor type is known here - const ownerDataData = actor.data.data; + if (!this.actor) { + throw new Error(getGame().i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); + } + + const ownerDataData = this.actor.data.data; const spellBonus = Number.isNumeric(this.data.data.bonus) ? parseInt(this.data.data.bonus) : undefined; if (spellBonus === undefined) { notifications.info( - game.i18n.format("DS4.InfoManuallyEnterSpellBonus", { + getGame().i18n.format("DS4.InfoManuallyEnterSpellBonus", { name: this.name, spellBonus: this.data.data.bonus, }), @@ -150,10 +157,10 @@ export class DS4Item extends Item { const checkTargetNumber = ownerDataData.combatValues[spellType].total + (spellBonus ?? 0); await createCheckRoll(checkTargetNumber, { - rollMode: game.settings.get("core", "rollMode") as Const.DiceRollMode, // TODO(types): Type this setting in upstream + rollMode: getGame().settings.get("core", "rollMode"), maximumCoupResult: ownerDataData.rolling.maximumCoupResult, minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult, - flavor: game.i18n.format("DS4.ItemSpellCheckFlavor", { actor: actor.name, spell: this.name }), + flavor: getGame().i18n.format("DS4.ItemSpellCheckFlavor", { actor: this.actor.name, spell: this.name }), }); } @@ -162,22 +169,22 @@ export class DS4Item extends Item { const { melee, ranged } = { ...DS4.i18n.attackTypes }; const identifier = "attack-type-selection"; return Dialog.prompt({ - title: game.i18n.localize("DS4.DialogAttackTypeSelection"), + title: getGame().i18n.localize("DS4.DialogAttackTypeSelection"), content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { selects: [ { - label: game.i18n.localize("DS4.AttackType"), + label: getGame().i18n.localize("DS4.AttackType"), identifier, options: { melee, ranged }, }, ], }), - label: game.i18n.localize("DS4.GenericOkButton"), + label: getGame().i18n.localize("DS4.GenericOkButton"), callback: (html) => { const selectedAttackType = html.find(`#${identifier}`).val(); if (selectedAttackType !== "melee" && selectedAttackType !== "ranged") { throw new Error( - game.i18n.format("DS4.ErrorUnexpectedAttackType", { + getGame().i18n.format("DS4.ErrorUnexpectedAttackType", { actualType: selectedAttackType, expectedTypes: "'melee', 'ranged'", }), @@ -190,11 +197,4 @@ export class DS4Item extends Item { return `${attackType}Attack` as const; } } - - /** - * Type-guarding variant to check if the item is owned. - */ - isOwnedItem(): this is this & { readonly isOwned: true } { - return this.isOwned; - } } diff --git a/src/module/item/type-specific-helpers/spell.ts b/src/module/item/type-specific-helpers/spell.ts index 3fd1797..e8820b4 100644 --- a/src/module/item/type-specific-helpers/spell.ts +++ b/src/module/item/type-specific-helpers/spell.ts @@ -3,9 +3,9 @@ // SPDX-License-Identifier: MIT import { hoursPerDay, minutesPerHour, secondsPerMinute, secondsPerRound } from "../../common/time-helpers"; -import { DS4SpellDataData, TemporalUnit, UnitData } from "../item-data"; +import { DS4SpellDataSourceData, TemporalUnit, UnitData } from "../item-data-source"; -export function calculateSpellPrice(data: DS4SpellDataData): number | null { +export function calculateSpellPrice(data: DS4SpellDataSourceData): number | null { const spellPriceFactor = calculateSpellPriceFactor(data.cooldownDuration); const baseSpellPrices = [ data.minimumLevels.healer !== null ? 10 + (data.minimumLevels.healer - 1) * 35 : null, diff --git a/src/module/logger.ts b/src/module/logger.ts index 4edd6b1..c5c9a56 100644 --- a/src/module/logger.ts +++ b/src/module/logger.ts @@ -8,24 +8,17 @@ const loggingSeparator = "|"; type LogLevel = "debug" | "info" | "warning" | "error"; type LoggingFunction = (...data: unknown[]) => void; -class Logger { - readonly debug: LoggingFunction; - readonly info: LoggingFunction; - readonly warn: LoggingFunction; - readonly error: LoggingFunction; +const getLoggingFunction = (type: LogLevel = "info"): LoggingFunction => { + const log = { debug: console.debug, info: console.info, warning: console.warn, error: console.error }[type]; + return (...data: unknown[]) => log(loggingContext, loggingSeparator, ...data); +}; - constructor() { - this.debug = this.getLoggingFunction("debug"); - this.info = this.getLoggingFunction("info"); - this.warn = this.getLoggingFunction("warning"); - this.error = this.getLoggingFunction("error"); - } +const logger = Object.freeze({ + debug: getLoggingFunction("debug"), + info: getLoggingFunction("info"), + warn: getLoggingFunction("warning"), + error: getLoggingFunction("error"), + getLoggingFunction, +}); - getLoggingFunction(type: LogLevel = "info") { - const log = { debug: console.debug, info: console.info, warning: console.warn, error: console.error }[type]; - return (...data: unknown[]) => log(loggingContext, loggingSeparator, ...data); - } -} - -const logger = new Logger(); export default logger; diff --git a/src/module/macros/helpers.ts b/src/module/macros/helpers.ts index f556cfc..eb9c85d 100644 --- a/src/module/macros/helpers.ts +++ b/src/module/macros/helpers.ts @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT import { DS4Actor } from "../actor/actor"; -import { getCanvas } from "../helpers"; +import { getCanvas, getGame } from "../helpers"; /** * Gets the currently active actor based on how {@link ChatMessage} determines @@ -15,11 +15,11 @@ export function getActiveActor(): DS4Actor | undefined { const speakerToken = speaker.token ? getCanvas().tokens.get(speaker.token) : undefined; if (speakerToken) { - return speakerToken.actor as DS4Actor; + return speakerToken.actor ?? undefined; } - const speakerActor = speaker.actor ? game.actors?.get(speaker.actor) : undefined; + const speakerActor = speaker.actor ? getGame().actors?.get(speaker.actor) : undefined; if (speakerActor) { - return speakerActor as DS4Actor; + return speakerActor; } } diff --git a/src/module/macros/roll-check.ts b/src/module/macros/roll-check.ts index e7db35e..cd5f34e 100644 --- a/src/module/macros/roll-check.ts +++ b/src/module/macros/roll-check.ts @@ -2,8 +2,9 @@ // // SPDX-License-Identifier: MIT -import { Check } from "../actor/actor-prepared-data"; +import { Check } from "../actor/actor-data-properties"; import { DS4 } from "../config"; +import { getGame } from "../helpers"; import notifications from "../ui/notifications"; import { getActiveActor } from "./helpers"; @@ -15,13 +16,13 @@ import { getActiveActor } from "./helpers"; */ export async function createRollCheckMacro(check: Check, slot: string): Promise { const macro = await getOrCreateRollCheckMacro(check); - game.user?.assignHotbarMacro(macro, slot); + getGame().user?.assignHotbarMacro(macro ?? null, slot); } -async function getOrCreateRollCheckMacro(check: Check): Promise { +async function getOrCreateRollCheckMacro(check: Check): Promise { const command = `game.ds4.macros.rollCheck("${check}");`; - const existingMacro = game.macros?.entities.find( + const existingMacro = getGame().macros?.find( (m) => m.name === DS4.i18n.checks[check] && m.data.command === command, ); if (existingMacro) { @@ -36,7 +37,7 @@ async function getOrCreateRollCheckMacro(check: Check): Promise { img: DS4.icons.checks[check], flags: { "ds4.checkMacro": true }, }, - { displaySheet: false }, + { renderSheet: false }, ); } @@ -46,7 +47,7 @@ async function getOrCreateRollCheckMacro(check: Check): Promise { export async function rollCheck(check: Check): Promise { const actor = getActiveActor(); if (!actor) { - return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); } return actor.rollCheck(check).catch((e) => notifications.error(e, { log: true })); diff --git a/src/module/macros/roll-generic-check.ts b/src/module/macros/roll-generic-check.ts index 110cd75..7584f0a 100644 --- a/src/module/macros/roll-generic-check.ts +++ b/src/module/macros/roll-generic-check.ts @@ -2,15 +2,17 @@ // // SPDX-License-Identifier: MIT +import { getGame } from "../helpers"; import notifications from "../ui/notifications"; import { getActiveActor } from "./helpers"; + /** * Executes the roll generic check macro. */ export async function rollGenericCheck(): Promise { const actor = getActiveActor(); if (!actor) { - return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); } return actor.rollGenericCheck().catch((e) => notifications.error(e, { log: true })); diff --git a/src/module/macros/roll-item.ts b/src/module/macros/roll-item.ts index f5c2536..751a7e9 100644 --- a/src/module/macros/roll-item.ts +++ b/src/module/macros/roll-item.ts @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -import { DS4ItemData } from "../item/item-data"; +import { getGame } from "../helpers"; import notifications from "../ui/notifications"; import { getActiveActor } from "./helpers"; @@ -12,15 +12,15 @@ import { getActiveActor } from "./helpers"; * @param itemData - The item data * @param slot - The hotbar slot to use */ -export async function createRollItemMacro(itemData: DS4ItemData, slot: string): Promise { +export async function createRollItemMacro(itemData: foundry.data.ItemData["_source"], slot: string): Promise { const macro = await getOrCreateRollItemMacro(itemData); - game.user?.assignHotbarMacro(macro, slot); + getGame().user?.assignHotbarMacro(macro ?? null, slot); } -async function getOrCreateRollItemMacro(itemData: DS4ItemData): Promise { +async function getOrCreateRollItemMacro(itemData: foundry.data.ItemData["_source"]): Promise { const command = `game.ds4.macros.rollItem("${itemData._id}");`; - const existingMacro = game.macros?.entities.find((m) => m.name === itemData.name && m.data.command === command); + const existingMacro = getGame().macros?.find((m) => m.name === itemData.name && m.data.command === command); if (existingMacro) { return existingMacro; } @@ -33,7 +33,7 @@ async function getOrCreateRollItemMacro(itemData: DS4ItemData): Promise { const actor = getActiveActor(); if (!actor) { - return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro")); + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro")); } const item = actor.items?.get(itemId); if (!item) { return notifications.warn( - game.i18n.format("DS4.WarningControlledActorDoesNotHaveItem", { + getGame().i18n.format("DS4.WarningControlledActorDoesNotHaveItem", { actorName: actor.name, actorId: actor.id, itemId, diff --git a/src/module/migrations.ts b/src/module/migrations.ts index 85eb3d0..9dfb122 100644 --- a/src/module/migrations.ts +++ b/src/module/migrations.ts @@ -2,25 +2,25 @@ // // SPDX-License-Identifier: MIT +import { getGame } from "./helpers"; import logger from "./logger"; import { migrate as migrate001 } from "./migrations/001"; import { migrate as migrate002 } from "./migrations/002"; import { migrate as migrate003 } from "./migrations/003"; import { migrate as migrate004 } from "./migrations/004"; - import notifications from "./ui/notifications"; async function migrate(): Promise { - if (!game.user?.isGM) { + if (!getGame().user?.isGM) { return; } - const oldMigrationVersion = game.settings.get("ds4", "systemMigrationVersion"); + const oldMigrationVersion = getGame().settings.get("ds4", "systemMigrationVersion"); const targetMigrationVersion = migrations.length; if (isFirstWorldStart(oldMigrationVersion)) { - game.settings.set("ds4", "systemMigrationVersion", targetMigrationVersion); + getGame().settings.set("ds4", "systemMigrationVersion", targetMigrationVersion); return; } @@ -28,7 +28,7 @@ async function migrate(): Promise { } async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion: number): Promise { - if (!game.user?.isGM) { + if (!getGame().user?.isGM) { return; } @@ -36,7 +36,7 @@ async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion if (migrationsToExecute.length > 0) { notifications.info( - game.i18n.format("DS4.InfoSystemUpdateStart", { + getGame().i18n.format("DS4.InfoSystemUpdateStart", { currentVersion: oldMigrationVersion, targetVersion: targetMigrationVersion, }), @@ -48,10 +48,10 @@ async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion logger.info("executing migration script ", currentMigrationVersion); try { await migration(); - game.settings.set("ds4", "systemMigrationVersion", currentMigrationVersion); + getGame().settings.set("ds4", "systemMigrationVersion", currentMigrationVersion); } catch (err) { notifications.error( - game.i18n.format("DS4.ErrorDuringMigration", { + getGame().i18n.format("DS4.ErrorDuringMigration", { currentVersion: oldMigrationVersion, targetVersion: targetMigrationVersion, migrationVersion: currentMigrationVersion, @@ -65,7 +65,7 @@ async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion } notifications.info( - game.i18n.format("DS4.InfoSystemUpdateCompleted", { + getGame().i18n.format("DS4.InfoSystemUpdateCompleted", { currentVersion: oldMigrationVersion, targetVersion: targetMigrationVersion, }), diff --git a/src/module/migrations/001.ts b/src/module/migrations/001.ts index 9ca2143..c8e2f7b 100644 --- a/src/module/migrations/001.ts +++ b/src/module/migrations/001.ts @@ -2,14 +2,18 @@ // // SPDX-License-Identifier: MIT -import logger from "../logger"; +import { + getCompendiumMigrator, + getSceneUpdateDataGetter, + migrateActors, + migrateCompendiums, + migrateScenes, +} from "./migrationHelpers"; export async function migrate(): Promise { - for (const a of game.actors?.entities ?? []) { - const updateData = getActorUpdateData(); - logger.info(`Migrating actor ${a.name}`); - await a.update(updateData, { enforceTypes: false }); - } + await migrateActors(getActorUpdateData); + await migrateScenes(getSceneUpdateData); + await migrateCompendiums(migrateCompendium); } function getActorUpdateData(): Record { @@ -32,3 +36,6 @@ function getActorUpdateData(): Record { }; return updateData; } + +const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); +const migrateCompendium = getCompendiumMigrator({ getActorUpdateData, getSceneUpdateData }); diff --git a/src/module/migrations/002.ts b/src/module/migrations/002.ts index 741996e..93ac406 100644 --- a/src/module/migrations/002.ts +++ b/src/module/migrations/002.ts @@ -2,142 +2,33 @@ // // SPDX-License-Identifier: MIT -import logger from "../logger"; +import { + getActorUpdateDataGetter, + getCompendiumMigrator, + getSceneUpdateDataGetter, + migrateActors, + migrateCompendiums, + migrateItems, + migrateScenes, +} from "./migrationHelpers"; export async function migrate(): Promise { - await migrateItems(); - await migrateActors(); - await migrateScenes(); - await migrateCompendiums(); + await migrateItems(getItemUpdateData); + await migrateActors(getActorUpdateData); + await migrateScenes(getSceneUpdateData); + await migrateCompendiums(migrateCompendium); } -async function migrateItems() { - for (const item of game.items?.entities ?? []) { - try { - const updateData = getItemUpdateData(item._data); - if (updateData) { - logger.info(`Migrating Item entity ${item.name} (${item.id})`); - await item.update(updateData), { enforceTypes: false }; - } - } catch (err) { - err.message = `Error during migration of Item entity ${item.name} (${item.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getItemUpdateData(itemData: DeepPartial) { +function getItemUpdateData( + itemData: Partial, +): DeepPartial | undefined { if (!["equipment", "trinket"].includes(itemData.type ?? "")) return undefined; - return { type: itemData.type === "equipment" ? "loot" : "equipment" }; + return { type: itemData.type === "equipment" ? ("loot" as const) : ("equipment" as const) }; } -async function migrateActors() { - for (const actor of game.actors?.entities ?? []) { - try { - const updateData = getActorUpdateData(actor._data); - if (updateData) { - logger.info(`Migrating Actor entity ${actor.name} (${actor.id})`); - await actor.update(updateData, { enforceTypes: false }); - } - } catch (err) { - err.message = `Error during migration of Actor entity ${actor.name} (${actor.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getActorUpdateData(actorData: DeepPartial) { - let hasItemUpdates = false; - const items = actorData.items?.map((itemData) => { - const update = itemData ? getItemUpdateData(itemData) : undefined; - if (update) { - hasItemUpdates = true; - return { ...itemData, ...update }; - } else { - return itemData; - } - }); - return hasItemUpdates ? { items } : undefined; -} - -async function migrateScenes() { - for (const scene of game.scenes?.entities ?? []) { - try { - const updateData = getSceneUpdateData(scene._data); - if (updateData) { - logger.info(`Migrating Scene entity ${scene.name} (${scene.id})`); - await scene.update(updateData, { enforceTypes: false }); - } - } catch (err) { - err.message = `Error during migration of Scene entity ${scene.name} (${scene.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getSceneUpdateData(sceneData: Scene.Data) { - let hasTokenUpdates = false; - const tokens = sceneData.tokens.map((tokenData) => { - if (!tokenData.actorId || tokenData.actorLink || tokenData.actorData.data) { - tokenData.actorData = {}; - hasTokenUpdates = true; - return tokenData; - } - const token = new Token(tokenData); - if (!token.actor) { - tokenData.actorId = null as unknown as string; - tokenData.actorData = {}; - hasTokenUpdates = true; - } else if (!tokenData.actorLink) { - const actorUpdateData = getActorUpdateData(token.data.actorData); - tokenData.actorData = mergeObject(token.data.actorData, actorUpdateData); - hasTokenUpdates = true; - } - return tokenData; - }); - if (!hasTokenUpdates) return undefined; - return hasTokenUpdates ? { tokens } : undefined; -} - -async function migrateCompendiums() { - for (const compendium of game.packs ?? []) { - if (compendium.metadata.package !== "world") continue; - if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue; - await migrateCompendium(compendium); - } -} - -async function migrateCompendium(compendium: Compendium) { - const entityName = compendium.metadata.entity; - if (!["Actor", "Item", "Scene"].includes(entityName)) return; - const wasLocked = compendium.locked; - await compendium.configure({ locked: false }); - - const content = await compendium.getContent(); - - for (const entity of content) { - try { - const getUpdateData = (entity: Entity) => { - switch (entityName) { - case "Item": - return getItemUpdateData(entity._data); - case "Actor": - return getActorUpdateData(entity._data); - case "Scene": - return getSceneUpdateData(entity._data as Scene.Data); - } - }; - const updateData = getUpdateData(entity); - if (updateData) { - logger.info(`Migrating entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}`); - await compendium.updateEntity({ ...updateData, _id: entity._id }); - } - } catch (err) { - err.message = `Error during migration of entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}, continuing anyways.`; - logger.error(err); - } - } - - await compendium.migrate({}); - await compendium.configure({ locked: wasLocked }); -} +const getActorUpdateData = getActorUpdateDataGetter(getItemUpdateData); +const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); +const migrateCompendium = getCompendiumMigrator( + { getItemUpdateData, getActorUpdateData, getSceneUpdateData }, + { migrateToTemplateEarly: false }, +); diff --git a/src/module/migrations/003.ts b/src/module/migrations/003.ts index 7a85d91..1ebc46f 100644 --- a/src/module/migrations/003.ts +++ b/src/module/migrations/003.ts @@ -2,31 +2,24 @@ // // SPDX-License-Identifier: MIT -import logger from "../logger"; +import { + getActorUpdateDataGetter, + getCompendiumMigrator, + getSceneUpdateDataGetter, + migrateActors, + migrateCompendiums, + migrateItems, + migrateScenes, +} from "./migrationHelpers"; export async function migrate(): Promise { - await migrateItems(); - await migrateActors(); - await migrateScenes(); - await migrateCompendiums(); + await migrateItems(getItemUpdateData); + await migrateActors(getActorUpdateData); + await migrateScenes(getSceneUpdateData); + await migrateCompendiums(migrateCompendium); } -async function migrateItems() { - for (const item of game.items?.entities ?? []) { - try { - const updateData = getItemUpdateData(item._data); - if (updateData) { - logger.info(`Migrating Item entity ${item.name} (${item.id})`); - await item.update(updateData), { enforceTypes: false }; - } - } catch (err) { - err.message = `Error during migration of Item entity ${item.name} (${item.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getItemUpdateData(itemData: DeepPartial) { +function getItemUpdateData(itemData: Partial) { if (!["loot"].includes(itemData.type ?? "")) return undefined; return { data: { @@ -35,113 +28,9 @@ function getItemUpdateData(itemData: DeepPartial) { }; } -async function migrateActors() { - for (const actor of game.actors?.entities ?? []) { - try { - const updateData = getActorUpdateData(actor._data); - if (updateData) { - logger.info(`Migrating Actor entity ${actor.name} (${actor.id})`); - await actor.update(updateData, { enforceTypes: false }); - } - } catch (err) { - err.message = `Error during migration of Actor entity ${actor.name} (${actor.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getActorUpdateData(actorData: DeepPartial) { - let hasItemUpdates = false; - const items = actorData.items?.map((itemData) => { - const update = itemData ? getItemUpdateData(itemData) : undefined; - if (update) { - hasItemUpdates = true; - return mergeObject(itemData, update, { enforceTypes: false, inplace: false }); - } else { - return itemData; - } - }); - return hasItemUpdates ? { items } : undefined; -} - -async function migrateScenes() { - for (const scene of game.scenes?.entities ?? []) { - try { - const updateData = getSceneUpdateData(scene._data); - if (updateData) { - logger.info(`Migrating Scene entity ${scene.name} (${scene.id})`); - await scene.update(updateData, { enforceTypes: false }); - } - } catch (err) { - err.message = `Error during migration of Scene entity ${scene.name} (${scene.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getSceneUpdateData(sceneData: Scene.Data) { - let hasTokenUpdates = false; - const tokens = sceneData.tokens.map((tokenData) => { - if (!tokenData.actorId || tokenData.actorLink || tokenData.actorData.data) { - tokenData.actorData = {}; - hasTokenUpdates = true; - return tokenData; - } - const token = new Token(tokenData); - if (!token.actor) { - tokenData.actorId = null as unknown as string; - tokenData.actorData = {}; - hasTokenUpdates = true; - } else if (!tokenData.actorLink) { - const actorUpdateData = getActorUpdateData(token.data.actorData); - tokenData.actorData = mergeObject(token.data.actorData, actorUpdateData); - hasTokenUpdates = true; - } - return tokenData; - }); - if (!hasTokenUpdates) return undefined; - return hasTokenUpdates ? { tokens } : undefined; -} - -async function migrateCompendiums() { - for (const compendium of game.packs ?? []) { - if (compendium.metadata.package !== "world") continue; - if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue; - await migrateCompendium(compendium); - } -} - -async function migrateCompendium(compendium: Compendium) { - const entityName = compendium.metadata.entity; - if (!["Actor", "Item", "Scene"].includes(entityName)) return; - const wasLocked = compendium.locked; - await compendium.configure({ locked: false }); - - const content = await compendium.getContent(); - - for (const entity of content) { - try { - const getUpdateData = (entity: Entity) => { - switch (entityName) { - case "Item": - return getItemUpdateData(entity._data); - case "Actor": - return getActorUpdateData(entity._data); - case "Scene": - return getSceneUpdateData(entity._data as Scene.Data); - } - }; - const updateData = getUpdateData(entity); - if (updateData) { - logger.info(`Migrating entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}`); - await compendium.updateEntity({ ...updateData, _id: entity._id }); - } - } catch (err) { - err.message = `Error during migration of entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}, continuing anyways.`; - logger.error(err); - } - } - - await compendium.migrate({}); - await compendium.configure({ locked: wasLocked }); -} +const getActorUpdateData = getActorUpdateDataGetter(getItemUpdateData); +const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); +const migrateCompendium = getCompendiumMigrator( + { getItemUpdateData, getActorUpdateData }, + { migrateToTemplateEarly: false }, +); diff --git a/src/module/migrations/004.ts b/src/module/migrations/004.ts index 555fa16..97f3d15 100644 --- a/src/module/migrations/004.ts +++ b/src/module/migrations/004.ts @@ -2,157 +2,39 @@ // // SPDX-License-Identifier: MIT -import { DS4SpellDataData } from "../item/item-data"; -import logger from "../logger"; +import { + getActorUpdateDataGetter, + getCompendiumMigrator, + getSceneUpdateDataGetter, + migrateActors, + migrateCompendiums, + migrateItems, + migrateScenes, +} from "./migrationHelpers"; export async function migrate(): Promise { - await migrateItems(); - await migrateActors(); - await migrateScenes(); - await migrateCompendiums(); + await migrateItems(getItemUpdateData); + await migrateActors(getActorUpdateData); + await migrateScenes(getSceneUpdateData); + await migrateCompendiums(migrateCompendium); } -async function migrateItems() { - for (const item of game.items?.entities ?? []) { - try { - const updateData = getItemUpdateData(item._data); - if (updateData) { - logger.info(`Migrating Item entity ${item.name} (${item.id})`); - await item.update(updateData), { enforceTypes: false }; - } - } catch (err) { - err.message = `Error during migration of Item entity ${item.name} (${item.id}), continuing anyways.`; - logger.error(err); - } - } -} +function getItemUpdateData(itemData: Partial) { + if (itemData.type !== "spell") return; + const cooldownDurationUnit: string | undefined = itemData.data?.cooldownDuration.unit; -function getItemUpdateData(itemData: DeepPartial) { - if (!["spell"].includes(itemData.type ?? "")) return undefined; const updateData: Record = { - "-=data.scrollPrice": null, - "data.minimumLevels": { healer: null, wizard: null, sorcerer: null }, + data: { + "-=scrollPrice": null, + minimumLevels: { healer: null, wizard: null, sorcerer: null }, + cooldownDuration: { + unit: cooldownDurationUnit === "custom" ? "rounds" : cooldownDurationUnit, + }, + }, }; - if (((itemData.data as DS4SpellDataData).cooldownDuration.unit as string) === "custom") { - updateData["data.cooldownDuration.unit"] = "rounds"; - } return updateData; } -async function migrateActors() { - for (const actor of game.actors?.entities ?? []) { - try { - const updateData = getActorUpdateData(actor._data); - if (updateData) { - logger.info(`Migrating Actor entity ${actor.name} (${actor.id})`); - await actor.update(updateData, { enforceTypes: false }); - } - } catch (err) { - err.message = `Error during migration of Actor entity ${actor.name} (${actor.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getActorUpdateData(actorData: DeepPartial) { - let hasItemUpdates = false; - const items = actorData.items?.map((itemData) => { - const update = itemData ? getItemUpdateData(itemData) : undefined; - if (update) { - hasItemUpdates = true; - return mergeObject(itemData, update, { enforceTypes: false, inplace: false }); - } else { - return itemData; - } - }); - const updateData: Record = {}; - if (actorData.type === "character") { - updateData["data.slayerPoints"] = { value: 0 }; - } - if (hasItemUpdates) { - updateData["items"] = items; - } - return updateData; -} - -async function migrateScenes() { - for (const scene of game.scenes?.entities ?? []) { - try { - const updateData = getSceneUpdateData(scene._data); - if (updateData) { - logger.info(`Migrating Scene entity ${scene.name} (${scene.id})`); - await scene.update(updateData, { enforceTypes: false }); - } - } catch (err) { - err.message = `Error during migration of Scene entity ${scene.name} (${scene.id}), continuing anyways.`; - logger.error(err); - } - } -} - -function getSceneUpdateData(sceneData: Scene.Data) { - let hasTokenUpdates = false; - const tokens = sceneData.tokens.map((tokenData) => { - if (!tokenData.actorId || tokenData.actorLink || tokenData.actorData.data) { - tokenData.actorData = {}; - hasTokenUpdates = true; - return tokenData; - } - const token = new Token(tokenData); - if (!token.actor) { - tokenData.actorId = null as unknown as string; - tokenData.actorData = {}; - hasTokenUpdates = true; - } else if (!tokenData.actorLink) { - const actorUpdateData = getActorUpdateData(token.data.actorData); - tokenData.actorData = mergeObject(token.data.actorData, actorUpdateData); - hasTokenUpdates = true; - } - return tokenData; - }); - if (!hasTokenUpdates) return undefined; - return hasTokenUpdates ? { tokens } : undefined; -} - -async function migrateCompendiums() { - for (const compendium of game.packs ?? []) { - if (compendium.metadata.package !== "world") continue; - if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue; - await migrateCompendium(compendium); - } -} - -async function migrateCompendium(compendium: Compendium) { - const entityName = compendium.metadata.entity; - if (!["Actor", "Item", "Scene"].includes(entityName)) return; - const wasLocked = compendium.locked; - await compendium.configure({ locked: false }); - await compendium.migrate({}); - - const content = await compendium.getContent(); - - for (const entity of content) { - try { - const getUpdateData = (entity: Entity) => { - switch (entityName) { - case "Item": - return getItemUpdateData(entity._data); - case "Actor": - return getActorUpdateData(entity._data); - case "Scene": - return getSceneUpdateData(entity._data as Scene.Data); - } - }; - const updateData = getUpdateData(entity); - if (updateData) { - logger.info(`Migrating entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}`); - await compendium.updateEntity({ ...updateData, _id: entity._id }); - } - } catch (err) { - err.message = `Error during migration of entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}, continuing anyways.`; - logger.error(err); - } - } - - await compendium.configure({ locked: wasLocked }); -} +const getActorUpdateData = getActorUpdateDataGetter(getItemUpdateData); +const getSceneUpdateData = getSceneUpdateDataGetter(getActorUpdateData); +const migrateCompendium = getCompendiumMigrator({ getItemUpdateData, getActorUpdateData, getSceneUpdateData }); diff --git a/src/module/migrations/migrationHelpers.ts b/src/module/migrations/migrationHelpers.ts new file mode 100644 index 0000000..bb6ecc8 --- /dev/null +++ b/src/module/migrations/migrationHelpers.ts @@ -0,0 +1,178 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Actor } from "../actor/actor"; +import { getGame } from "../helpers"; +import { DS4Item } from "../item/item"; +import logger from "../logger"; + +type ItemUpdateDataGetter = ( + itemData: Partial, +) => DeepPartial | Record | undefined; + +export async function migrateItems(getItemUpdateData: ItemUpdateDataGetter): Promise { + for (const item of getGame().items ?? []) { + try { + const updateData = getItemUpdateData(item.toObject()); + if (updateData) { + logger.info(`Migrating Item document ${item.name} (${item.id})`); + await item.update(updateData), { enforceTypes: false }; + } + } catch (err) { + err.message = `Error during migration of Item document ${item.name} (${item.id}), continuing anyways.`; + logger.error(err); + } + } +} + +type ActorUpdateDataGetter = ( + itemData: Partial, +) => DeepPartial | undefined; + +export async function migrateActors(getActorUpdateData: ActorUpdateDataGetter): Promise { + for (const actor of getGame().actors ?? []) { + try { + const updateData = getActorUpdateData(actor.toObject()); + if (updateData) { + logger.info(`Migrating Actor document ${actor.name} (${actor.id})`); + await actor.update(updateData); + } + } catch (err) { + err.message = `Error during migration of Actor document ${actor.name} (${actor.id}), continuing anyways.`; + logger.error(err); + } + } +} + +type SceneUpdateDataGetter = ( + sceneData: foundry.documents.BaseScene["data"], +) => DeepPartial; + +export async function migrateScenes(getSceneUpdateData: SceneUpdateDataGetter): Promise { + for (const scene of getGame().scenes ?? []) { + try { + const updateData = getSceneUpdateData(scene.data); + if (updateData) { + logger.info(`Migrating Scene document ${scene.name} (${scene.id})`); + await scene.update(updateData); + } + } catch (err) { + err.message = `Error during migration of Scene document ${scene.name} (${scene.id}), continuing anyways.`; + logger.error(err); + } + } +} + +type CompendiumMigrator = (compendium: CompendiumCollection) => Promise; + +export async function migrateCompendiums(migrateCompendium: CompendiumMigrator): Promise { + for (const compendium of getGame().packs ?? []) { + if (compendium.metadata.package !== "world") continue; + if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue; + await migrateCompendium(compendium); + } +} + +export function getActorUpdateDataGetter(getItemUpdateData: ItemUpdateDataGetter): ActorUpdateDataGetter { + return ( + actorData: Partial, + ): DeepPartial | undefined => { + let hasItemUpdates = false; + const items = actorData.items?.map((itemData) => { + const update = getItemUpdateData(itemData); + if (update) { + hasItemUpdates = true; + return { ...itemData, ...update }; + } else { + return itemData; + } + }); + return hasItemUpdates ? { items } : undefined; + }; +} + +export function getSceneUpdateDataGetter(getActorUpdateData: ActorUpdateDataGetter): SceneUpdateDataGetter { + return (sceneData: foundry.documents.BaseScene["data"]) => { + const tokens = (sceneData.tokens as Collection).map((token: TokenDocument) => { + const t = token.toObject(); + if (!t.actorId || t.actorLink) { + t.actorData = {}; + } else if (!getGame().actors?.has(t.actorId)) { + t.actorId = null; + t.actorData = {}; + } else if (!t.actorLink) { + const actorData = foundry.utils.deepClone(t.actorData); + actorData.type = token.actor?.type; + const update = getActorUpdateData(actorData); + if (update !== undefined) { + ["items" as const, "effects" as const].forEach((embeddedName) => { + const embeddedUpdates = update[embeddedName]; + if (embeddedUpdates === undefined || !embeddedUpdates.length) return; + const updates = new Map(embeddedUpdates.flatMap((u) => (u && u._id ? [[u._id, u]] : []))); + const originals = t.actorData[embeddedName]; + if (!originals) return; + originals.forEach((original) => { + if (!original._id) return; + const update = updates.get(original._id); + if (update) foundry.utils.mergeObject(original, update); + }); + delete update[embeddedName]; + }); + foundry.utils.mergeObject(t.actorData, update); + } + } + return t; + }); + return { tokens }; + }; +} + +export function getCompendiumMigrator( + { + getItemUpdateData, + getActorUpdateData, + getSceneUpdateData, + }: { + getItemUpdateData?: ItemUpdateDataGetter; + getActorUpdateData?: ActorUpdateDataGetter; + getSceneUpdateData?: SceneUpdateDataGetter; + } = {}, + { migrateToTemplateEarly = true } = {}, +) { + return async (compendium: CompendiumCollection): Promise => { + const entityName = compendium.metadata.entity; + if (!["Actor", "Item", "Scene"].includes(entityName)) return; + const wasLocked = compendium.locked; + await compendium.configure({ locked: false }); + if (migrateToTemplateEarly) { + await compendium.migrate(); + } + + const documents = await compendium.getDocuments(); + + for (const doc of documents) { + try { + logger.info(`Migrating document ${doc.name} (${doc.id}) in compendium ${compendium.collection}`); + if (doc instanceof DS4Item && getItemUpdateData) { + const updateData = getItemUpdateData(doc.toObject()); + updateData && (await doc.update(updateData)); + } else if (doc instanceof DS4Actor && getActorUpdateData) { + const updateData = getActorUpdateData(doc.toObject()); + updateData && (await doc.update(updateData)); + } else if (doc instanceof Scene && getSceneUpdateData) { + const updateData = getSceneUpdateData(doc.data); + updateData && (await doc.update(updateData)); + } + } catch (err) { + err.message = `Error during migration of document ${doc.name} (${doc.id}) in compendium ${compendium.collection}, continuing anyways.`; + logger.error(err); + } + } + + if (!migrateToTemplateEarly) { + await compendium.migrate(); + } + await compendium.configure({ locked: wasLocked }); + }; +} diff --git a/src/module/rolls/check-evaluation.ts b/src/module/rolls/check-evaluation.ts index f7a885c..8017bd3 100644 --- a/src/module/rolls/check-evaluation.ts +++ b/src/module/rolls/check-evaluation.ts @@ -3,6 +3,8 @@ // // SPDX-License-Identifier: MIT +import { getGame } from "../helpers"; + export default function evaluateCheck( dice: number[], checkTargetNumber: number, @@ -39,7 +41,7 @@ function assignSubChecksToDice( const requiredNumberOfDice = getRequiredNumberOfDice(checkTargetNumber); if (dice.length !== requiredNumberOfDice || requiredNumberOfDice < 1) { - throw new Error(game.i18n.localize("DS4.ErrorInvalidNumberOfDice")); + throw new Error(getGame().i18n.localize("DS4.ErrorInvalidNumberOfDice")); } const checkTargetNumberForLastSubCheck = checkTargetNumber - 20 * (requiredNumberOfDice - 1); @@ -86,11 +88,7 @@ function shouldUseCoupForLastSubCheck( ); } -interface SubCheckResult extends DieWithSubCheck, DiceTerm.Result { - success?: boolean; - failure?: boolean; - count?: number; -} +interface SubCheckResult extends DieWithSubCheck, DiceTerm.Result {} function evaluateDiceWithSubChecks( results: DieWithSubCheck[], diff --git a/src/module/rolls/check-factory.ts b/src/module/rolls/check-factory.ts index 4db78c9..45895d8 100644 --- a/src/module/rolls/check-factory.ts +++ b/src/module/rolls/check-factory.ts @@ -3,6 +3,8 @@ // // SPDX-License-Identifier: MIT +import { getGame } from "../helpers"; + /** * Provides default values for all arguments the `CheckFactory` expects. */ @@ -10,7 +12,7 @@ class DefaultCheckOptions implements DS4CheckFactoryOptions { readonly maximumCoupResult = 1; readonly minimumFumbleResult = 20; readonly useSlayingDice = false; - readonly rollMode: Const.DiceRollMode = "roll"; + readonly rollMode: foundry.CONST.DiceRollMode = "roll"; readonly flavor: undefined; mergeWith(other: Partial): DS4CheckFactoryOptions { @@ -37,15 +39,16 @@ class CheckFactory { private options: DS4CheckFactoryOptions; - async execute(): Promise { + async execute(): Promise { const innerFormula = ["ds", this.createCheckTargetNumberModifier(), this.createCoupFumbleModifier()].filterJoin( "", ); const formula = this.options.useSlayingDice ? `{${innerFormula}}x` : innerFormula; const roll = Roll.create(formula); + const speaker = ChatMessage.getSpeaker(); return roll.toMessage( - { speaker: ChatMessage.getSpeaker(), flavor: this.options.flavor }, + { speaker, flavor: this.options.flavor }, { rollMode: this.options.rollMode, create: true }, ); } @@ -85,7 +88,7 @@ export async function createCheckRoll( const newOptions: Partial = { maximumCoupResult: gmModifierData.maximumCoupResult ?? options.maximumCoupResult, minimumFumbleResult: gmModifierData.minimumFumbleResult ?? options.minimumFumbleResult, - useSlayingDice: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"), + useSlayingDice: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"), rollMode: gmModifierData.rollMode ?? options.rollMode, flavor: options.flavor, }; @@ -113,13 +116,13 @@ async function askGmModifier( { template, title }: { template?: string; title?: string } = {}, ): Promise> { const usedTemplate = template ?? "systems/ds4/templates/dialogs/roll-options.hbs"; - const usedTitle = title ?? game.i18n.localize("DS4.DialogRollOptionsDefaultTitle"); + const usedTitle = title ?? getGame().i18n.localize("DS4.DialogRollOptionsDefaultTitle"); const templateData = { title: usedTitle, checkTargetNumber: checkTargetNumber, maximumCoupResult: options.maximumCoupResult ?? defaultCheckOptions.maximumCoupResult, minimumFumbleResult: options.minimumFumbleResult ?? defaultCheckOptions.minimumFumbleResult, - rollMode: options.rollMode ?? game.settings.get("core", "rollMode"), + rollMode: options.rollMode ?? getGame().settings.get("core", "rollMode"), rollModes: CONFIG.Dice.rollModes, }; const renderedHtml = await renderTemplate(usedTemplate, templateData); @@ -131,11 +134,11 @@ async function askGmModifier( buttons: { ok: { icon: '', - label: game.i18n.localize("DS4.GenericOkButton"), + label: getGame().i18n.localize("DS4.GenericOkButton"), callback: (html) => { if (!("jquery" in html)) { throw new Error( - game.i18n.format("DS4.ErrorUnexpectedHtmlType", { + getGame().i18n.format("DS4.ErrorUnexpectedHtmlType", { exType: "JQuery", realType: "HTMLElement", }), @@ -144,7 +147,7 @@ async function askGmModifier( const innerForm = html[0].querySelector("form"); if (!innerForm) { throw new Error( - game.i18n.format("DS4.ErrorCouldNotFindHtmlElement", { htmlElement: "form" }), + getGame().i18n.format("DS4.ErrorCouldNotFindHtmlElement", { htmlElement: "form" }), ); } resolve(innerForm); @@ -153,7 +156,7 @@ async function askGmModifier( }, cancel: { icon: '', - label: game.i18n.localize("DS4.GenericCancelButton"), + label: getGame().i18n.localize("DS4.GenericCancelButton"), }, }, default: "ok", @@ -174,13 +177,11 @@ function parseDialogFormData(formData: HTMLFormElement): Partial = {}) { + constructor({ modifiers = [], results = [], options }: Partial = {}) { super({ faces: 20, - modifiers: modifiers, - options: options, + results, + modifiers, + options, }); // Parse and store check target number @@ -49,7 +51,7 @@ export class DS4Check extends DiceTerm { ? parseInt(parseMinimumFumbleResult) : DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; if (this.minimumFumbleResult <= this.maximumCoupResult) - throw new SyntaxError(game.i18n.localize("DS4.ErrorDiceCoupFumbleOverlap")); + throw new SyntaxError(getGame().i18n.localize("DS4.ErrorDiceCoupFumbleOverlap")); } // Parse and store no fumble @@ -57,6 +59,10 @@ export class DS4Check extends DiceTerm { if (noFumbleModifier) { this.canFumble = false; } + + if (this.results.length > 0) { + this.evaluateResults(); + } } coup: boolean | null = null; @@ -72,14 +78,14 @@ export class DS4Check extends DiceTerm { } /** @override */ - get total(): number | null { + get total(): string | number | null | undefined { if (this.fumble) return 0; return super.total; } /** @override */ - evaluate({ minimize = false, maximize = false } = {}): this { - super.evaluate({ minimize, maximize }); + _evaluateSync({ minimize = false, maximize = false } = {}): this { + super._evaluateSync({ minimize, maximize }); this.evaluateResults(); return this; } @@ -102,17 +108,14 @@ export class DS4Check extends DiceTerm { this.fumble = results[0].failure ?? false; } - /** @override */ - static fromResults( - this: ConstructorOf, - options: Partial, - results: DiceTerm.Result[], - ): T { - const term = new this(options); - term.results = results; - term.evaluateResults(); - term._evaluated = true; - return term; + /** + * @override + * @remarks "min" and "max" are filtered out because they are irrelevant for + * {@link DS4Check}s and only result in some dice rolls being highlighted + * incorrectly. + */ + getResultCSS(result: DiceTerm.Result): (string | null)[] { + return super.getResultCSS(result).filter((cssClass) => cssClass !== "min" && cssClass !== "max"); } static readonly DEFAULT_CHECK_TARGET_NUMBER = 10; diff --git a/src/module/rolls/roll.ts b/src/module/rolls/roll.ts index eb58f65..082c7eb 100644 --- a/src/module/rolls/roll.ts +++ b/src/module/rolls/roll.ts @@ -2,6 +2,7 @@ // // SPDX-License-Identifier: MIT +import { getGame } from "../helpers"; import { DS4Check } from "./check"; export class DS4Roll = Record> extends Roll { @@ -12,10 +13,10 @@ export class DS4Roll = Record * template if the first dice term is a ds4 check. * @override */ - async render(chatOptions: Roll.ChatOptions = {}): Promise { - chatOptions = mergeObject( + async render(chatOptions: Parameters[0] = {}): Promise { + chatOptions = foundry.utils.mergeObject( { - user: game.user?._id, + user: getGame().user?.id, flavor: null, template: DS4Roll.CHAT_TEMPLATE, blind: false, @@ -25,7 +26,7 @@ export class DS4Roll = Record const isPrivate = chatOptions.isPrivate; // Execute the roll, if needed - if (!this._rolled) this.roll(); + if (!this._evaluated) this.evaluate(); // Define chat data const firstDiceTerm = this.dice[0]; diff --git a/src/module/rolls/slaying-dice-modifier.ts b/src/module/rolls/slaying-dice-modifier.ts index f178c03..bd58b05 100644 --- a/src/module/rolls/slaying-dice-modifier.ts +++ b/src/module/rolls/slaying-dice-modifier.ts @@ -3,14 +3,14 @@ // // SPDX-License-Identifier: MIT +import { getGame } from "../helpers"; import { DS4Check } from "./check"; export default function registerSlayingDiceModifier(): void { - DicePool.MODIFIERS.x = slay; - DicePool.POOL_REGEX = /^{([^}]+)}([A-z]([A-z0-9<=>]+)?)?$/; + PoolTerm.MODIFIERS.x = slay; } -function slay(this: DicePool, modifier: string): void { +function slay(this: PoolTerm, modifier: string): void { const rgx = /[xX]/; const match = modifier.match(rgx); if (!match || !this.rolls) return; @@ -21,11 +21,12 @@ function slay(this: DicePool, modifier: string): void { checked++; if (diceTerm instanceof DS4Check && diceTerm.coup) { const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`; - const additionalRoll = Roll.create(formula).evaluate(); + const additionalRoll = Roll.create(formula).evaluate({ async: false }); this.rolls.push(additionalRoll); this.results.push({ result: additionalRoll.total ?? 0, active: true }); + this.terms.push(formula); } - if (checked > 1000) throw new Error(game.i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded")); + if (checked > 1000) throw new Error(getGame().i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded")); } } diff --git a/src/module/settings.ts b/src/module/settings.ts index e08a378..96a8648 100644 --- a/src/module/settings.ts +++ b/src/module/settings.ts @@ -2,11 +2,13 @@ // // SPDX-License-Identifier: MIT +import { getGame } from "./helpers"; + export function registerSystemSettings(): void { /** * Track the migrations version of the latest migration that has been applied */ - game.settings.register("ds4", "systemMigrationVersion", { + getGame().settings.register("ds4", "systemMigrationVersion", { name: "System Migration Version", scope: "world", config: false, @@ -14,7 +16,7 @@ export function registerSystemSettings(): void { default: -1, }); - game.settings.register("ds4", "useSlayingDiceForAutomatedChecks", { + getGame().settings.register("ds4", "useSlayingDiceForAutomatedChecks", { name: "DS4.SettingUseSlayingDiceForAutomatedChecksName", hint: "DS4.SettingUseSlayingDiceForAutomatedChecksHint", scope: "world", @@ -23,7 +25,7 @@ export function registerSystemSettings(): void { default: false, }); - game.settings.register("ds4", "showSlayerPoints", { + getGame().settings.register("ds4", "showSlayerPoints", { name: "DS4.SettingShowSlayerPointsName", hint: "DS4.SettingShowSlayerPointsHint", scope: "world", @@ -33,7 +35,7 @@ export function registerSystemSettings(): void { }); } -interface DS4Settings { +export interface DS4Settings { systemMigrationVersion: number; useSlayingDiceForAutomatedChecks: boolean; showSlayerPoints: boolean; @@ -41,8 +43,8 @@ interface DS4Settings { export function getDS4Settings(): DS4Settings { return { - systemMigrationVersion: game.settings.get("ds4", "systemMigrationVersion"), - useSlayingDiceForAutomatedChecks: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"), - showSlayerPoints: game.settings.get("ds4", "showSlayerPoints"), + systemMigrationVersion: getGame().settings.get("ds4", "systemMigrationVersion"), + useSlayingDiceForAutomatedChecks: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"), + showSlayerPoints: getGame().settings.get("ds4", "showSlayerPoints"), }; } diff --git a/src/system.json b/src/system.json index f03aeac..26ce836 100644 --- a/src/system.json +++ b/src/system.json @@ -3,8 +3,8 @@ "title": "Dungeonslayers 4", "description": "The Dungeonslayers 4 system for FoundryVTT. Dungeonslayers by Christian Kennig is licensed under CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/). The icons by the authors of Game-icons.net are licensed under CC BY 3.0 (https://creativecommons.org/licenses/by/3.0/).", "version": "0.8.0", - "minimumCoreVersion": "0.7.9", - "compatibleCoreVersion": "0.7.10", + "minimumCoreVersion": "0.8.8", + "compatibleCoreVersion": "0.8.8", "templateVersion": 6, "author": "Johannes Loher, Gesina Schwalbe, Oliver Rümpelein, Siegfried Krug, Max Tharr, Sascha Martens", "authors": [ diff --git a/src/template.json b/src/template.json index 935c1d8..b737831 100644 --- a/src/template.json +++ b/src/template.json @@ -170,29 +170,6 @@ "shield": { "templates": ["base", "physical", "equipable", "protective"] }, - "equipment": { - "templates": ["base", "physical", "equipable"] - }, - "loot": { - "templates": ["base", "physical"] - }, - "talent": { - "templates": ["base"], - "rank": { - "base": 0, - "max": 0, - "mod": 0 - } - }, - "racialAbility": { - "templates": ["base"] - }, - "language": { - "templates": ["base"] - }, - "alphabet": { - "templates": ["base"] - }, "spell": { "templates": ["base", "equipable"], "spellType": "spellcasting", @@ -220,6 +197,29 @@ "sorcerer": null } }, + "equipment": { + "templates": ["base", "physical", "equipable"] + }, + "loot": { + "templates": ["base", "physical"] + }, + "talent": { + "templates": ["base"], + "rank": { + "base": 0, + "max": 0, + "mod": 0 + } + }, + "racialAbility": { + "templates": ["base"] + }, + "language": { + "templates": ["base"] + }, + "alphabet": { + "templates": ["base"] + }, "specialCreatureAbility": { "templates": ["base"], "experiencePoints": 0 diff --git a/src/templates/sheets/actor/character-sheet.hbs b/src/templates/sheets/actor/character-sheet.hbs index b2a2415..b5d23ca 100644 --- a/src/templates/sheets/actor/character-sheet.hbs +++ b/src/templates/sheets/actor/character-sheet.hbs @@ -9,12 +9,12 @@ SPDX-License-Identifier: MIT
{{!-- Sheet Header --}}
- Actor Icon

- - + +

{{> systems/ds4/templates/sheets/actor/components/character-progression.hbs}} @@ -22,28 +22,28 @@ SPDX-License-Identifier: MIT
- +
+ value="{{data.data.baseInfo.culture}}" data-dtype="String" />
+ name="data.progression.progressPoints.used" + value="{{data.data.progression.progressPoints.used}}" data-dtype="Number" /> / + value="{{data.data.progression.progressPoints.total}}" data-dtype="Number" />
@@ -51,26 +51,26 @@ SPDX-License-Identifier: MIT for="data.progression.talentPoints.used">{{config.i18n.characterProgression.talentPoints}}
/ + id="data.progression.talentPoints.total" + value="{{data.data.progression.talentPoints.total}}" data-dtype="Number" />
+ value="{{data.data.baseInfo.class}}" data-dtype="String" />
+ value="{{data.data.baseInfo.heroClass}}" data-dtype="String" />
diff --git a/src/templates/sheets/actor/components/character-progression.hbs b/src/templates/sheets/actor/components/character-progression.hbs index cb43ed6..9788ea5 100644 --- a/src/templates/sheets/actor/components/character-progression.hbs +++ b/src/templates/sheets/actor/components/character-progression.hbs @@ -13,7 +13,8 @@ SPDX-License-Identifier: MIT "DS4.CombatValuesHitPointsCurrentAbbr"}} + id="data.combatValues.hitPoints.value" value="{{data.data.combatValues.hitPoints.value}}" + data-dtype="Number" /> {{#if (eq actor.type "character")}} {{#if settings.showSlayerPoints}} @@ -21,9 +22,9 @@ SPDX-License-Identifier: MIT

- + {{/if}}
@@ -32,7 +33,7 @@ SPDX-License-Identifier: MIT "DS4.CharacterProgressionLevelAbbr"}} + value="{{data.data.progression.level}}" data-dtype="Number" />

+ id="data.progression.experiencePoints" value="{{data.data.progression.experiencePoints}}" + data-dtype="Number" />
{{/if}} diff --git a/src/templates/sheets/actor/components/checks.hbs b/src/templates/sheets/actor/components/checks.hbs index bdffe15..4accdae 100644 --- a/src/templates/sheets/actor/components/checks.hbs +++ b/src/templates/sheets/actor/components/checks.hbs @@ -7,6 +7,6 @@ SPDX-License-Identifier: MIT
{{#each config.i18n.checks as |check-label check-key|}} {{> systems/ds4/templates/sheets/actor/components/check.hbs check-key=check-key check-target-number=(lookup - ../data.checks check-key) check-label=check-label}} + ../data.data.checks check-key) check-label=check-label}} {{/each}}
diff --git a/src/templates/sheets/actor/components/combat-values.hbs b/src/templates/sheets/actor/components/combat-values.hbs index 4c05153..fe0fabc 100644 --- a/src/templates/sheets/actor/components/combat-values.hbs +++ b/src/templates/sheets/actor/components/combat-values.hbs @@ -8,6 +8,6 @@ SPDX-License-Identifier: MIT
{{#each config.i18n.combatValues as |combat-value-label combat-value-key|}} {{> systems/ds4/templates/sheets/actor/components/combat-value.hbs combat-value-key=combat-value-key - combat-value-data=(lookup ../data.combatValues combat-value-key) combat-value-label=combat-value-label}} + combat-value-data=(lookup ../data.data.combatValues combat-value-key) combat-value-label=combat-value-label}} {{/each}}
diff --git a/src/templates/sheets/actor/components/core-values.hbs b/src/templates/sheets/actor/components/core-values.hbs index 762624f..e476ce0 100644 --- a/src/templates/sheets/actor/components/core-values.hbs +++ b/src/templates/sheets/actor/components/core-values.hbs @@ -8,12 +8,12 @@ SPDX-License-Identifier: MIT
{{#each config.i18n.attributes as |attribute-label attribute-key|}} {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=attribute-label - core-value-key=attribute-key core-value-data=(lookup ../data.attributes + core-value-key=attribute-key core-value-data=(lookup ../data.data.attributes attribute-key) core-value-variant="attribute"}} {{/each}} {{#each config.i18n.traits as |trait-label trait-key|}} {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=trait-label core-value-key=trait-key - core-value-data=(lookup ../data.traits trait-key) core-value-variant="trait"}} + core-value-data=(lookup ../data.data.traits trait-key) core-value-variant="trait"}} {{/each}}
diff --git a/src/templates/sheets/actor/components/currency.hbs b/src/templates/sheets/actor/components/currency.hbs index 6cb61f0..99e7019 100644 --- a/src/templates/sheets/actor/components/currency.hbs +++ b/src/templates/sheets/actor/components/currency.hbs @@ -8,7 +8,7 @@ SPDX-License-Identifier: MIT

{{localize 'DS4.CharacterCurrency'}}

- {{#each data.currency as |value key|}} + {{#each data.data.currency as |value key|}} diff --git a/src/templates/sheets/actor/components/item-list-entry.hbs b/src/templates/sheets/actor/components/item-list-entry.hbs index 989e90b..0992d45 100644 --- a/src/templates/sheets/actor/components/item-list-entry.hbs +++ b/src/templates/sheets/actor/components/item-list-entry.hbs @@ -25,7 +25,7 @@ SPDX-License-Identifier: MIT {{!-- image --}} {{> systems/ds4/templates/sheets/actor/components/rollable-image.hbs rollable=itemData.data.rollable - src=itemData.img alt=(localize "DS4.EntityImageAltText" name=itemData.name) title=itemData.name + src=itemData.img alt=(localize "DS4.DocumentImageAltText" name=itemData.name) title=itemData.name rollableTitle=(localize "DS4.RollableImageRollableTitle" name=itemData.name) rollableClass="rollable-item"}} {{!-- amount --}} diff --git a/src/templates/sheets/actor/creature-sheet.hbs b/src/templates/sheets/actor/creature-sheet.hbs index fa128d8..1b034bc 100644 --- a/src/templates/sheets/actor/creature-sheet.hbs +++ b/src/templates/sheets/actor/creature-sheet.hbs @@ -9,11 +9,11 @@ SPDX-License-Identifier: MIT {{!-- Sheet Header --}}
- +

- - + +

{{> systems/ds4/templates/sheets/actor/components/character-progression.hbs}} @@ -21,7 +21,7 @@ SPDX-License-Identifier: MIT
+
-
+
diff --git a/src/templates/sheets/actor/tabs/biography.hbs b/src/templates/sheets/actor/tabs/biography.hbs index ee49b3b..42e2612 100644 --- a/src/templates/sheets/actor/tabs/biography.hbs +++ b/src/templates/sheets/actor/tabs/biography.hbs @@ -5,6 +5,6 @@ SPDX-License-Identifier: MIT --}}
- {{editor content=data.profile.biography target="data.profile.biography" button=true owner=owner + {{editor content=data.data.profile.biography target="data.profile.biography" button=true owner=owner editable=editable}}
diff --git a/src/templates/sheets/actor/tabs/profile.hbs b/src/templates/sheets/actor/tabs/profile.hbs index 5c5db70..4cabb45 100644 --- a/src/templates/sheets/actor/tabs/profile.hbs +++ b/src/templates/sheets/actor/tabs/profile.hbs @@ -7,7 +7,7 @@ SPDX-License-Identifier: MIT
- {{#each data.profile as |profile-data-value profile-data-key|}} + {{#each data.data.profile as |profile-data-value profile-data-key|}} {{#if (and (ne profile-data-key 'biography') (ne profile-data-key 'specialCharacteristics'))}}
+ rows="4">{{data.data.profile.specialCharacteristics}}
diff --git a/src/templates/sheets/item/armor-sheet.hbs b/src/templates/sheets/item/armor-sheet.hbs index 80773f0..8735b00 100644 --- a/src/templates/sheets/item/armor-sheet.hbs +++ b/src/templates/sheets/item/armor-sheet.hbs @@ -7,35 +7,36 @@ SPDX-License-Identifier: MIT {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} -
-
- - -
-
- - -
-
- - -
-
+
+
+ + +
+
+ + +
+
+ + +
+
{{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} {{!-- Common Item body --}} - {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + {{#> + systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} diff --git a/src/templates/sheets/item/components/sheet-header.hbs b/src/templates/sheets/item/components/sheet-header.hbs index 7d84e2b..50bed6b 100644 --- a/src/templates/sheets/item/components/sheet-header.hbs +++ b/src/templates/sheets/item/components/sheet-header.hbs @@ -6,9 +6,9 @@ SPDX-License-Identifier: MIT --}}
- +
-

+

{{lookup config.i18n.itemTypes item.type}}

{{> @partial-block}}
diff --git a/src/templates/sheets/item/shield-sheet.hbs b/src/templates/sheets/item/shield-sheet.hbs index dfec284..34f34e7 100644 --- a/src/templates/sheets/item/shield-sheet.hbs +++ b/src/templates/sheets/item/shield-sheet.hbs @@ -7,15 +7,16 @@ SPDX-License-Identifier: MIT
{{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} -
-
- - -
+
+
+ +
+
{{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} {{!-- Common Item body --}} - {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + {{#> + systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} diff --git a/src/templates/sheets/item/specialCreatureAbility-sheet.hbs b/src/templates/sheets/item/specialCreatureAbility-sheet.hbs index 97c1e3a..68a40a5 100644 --- a/src/templates/sheets/item/specialCreatureAbility-sheet.hbs +++ b/src/templates/sheets/item/specialCreatureAbility-sheet.hbs @@ -9,7 +9,7 @@ SPDX-License-Identifier: MIT
-
diff --git a/src/templates/sheets/item/spell-sheet.hbs b/src/templates/sheets/item/spell-sheet.hbs index 5983d50..58d1785 100644 --- a/src/templates/sheets/item/spell-sheet.hbs +++ b/src/templates/sheets/item/spell-sheet.hbs @@ -16,9 +16,9 @@ SPDX-License-Identifier: MIT
+ value="{{lookup (lookup data.data property) 'value'}}" /> - {{#select data.spellType}} + {{#select data.data.spellType}} {{#each config.i18n.spellTypes as |value key|}} {{/each}} @@ -57,7 +57,7 @@ SPDX-License-Identifier: MIT
- +
{{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} @@ -67,7 +67,7 @@ SPDX-License-Identifier: MIT
+ id="data.minimumLevels.healer" value="{{data.data.minimumLevels.healer}}" />
+ id="data.minimumLevels.wizard" value="{{data.data.minimumLevels.wizard}}" />
+ id="data.minimumLevels.sorcerer" value="{{data.data.minimumLevels.sorcerer}}" />
- {{data.price}} + {{data.data.price}}
{{/systems/ds4/templates/sheets/item/components/body.hbs}} diff --git a/src/templates/sheets/item/tabs/description.hbs b/src/templates/sheets/item/tabs/description.hbs index d0782bb..39b2107 100644 --- a/src/templates/sheets/item/tabs/description.hbs +++ b/src/templates/sheets/item/tabs/description.hbs @@ -13,25 +13,27 @@ Additional elements of the side-properties div can be handed over via the @parti
{{#if isOwned}} - {{#if (ne data.equipped undefined)}}
+ {{#if (ne data.data.equipped undefined)}}
- +
{{/if}}
- {{actor.name}}
{{#if isPhysical}} -
- - -
-
- - -
+
+ + +
+
+ + +
{{/if}} {{else}} {{localize "DS4.NotOwned"}} @@ -39,6 +41,6 @@ Additional elements of the side-properties div can be handed over via the @parti {{> @partial-block}}
- {{editor content=data.description target="data.description" button=true owner=owner editable=editable}} + {{editor content=data.data.description target="data.description" button=true owner=owner editable=editable}}
diff --git a/src/templates/sheets/item/tabs/details.hbs b/src/templates/sheets/item/tabs/details.hbs index 87f0381..8fa6ec1 100644 --- a/src/templates/sheets/item/tabs/details.hbs +++ b/src/templates/sheets/item/tabs/details.hbs @@ -11,13 +11,13 @@ SPDX-License-Identifier: MIT
- +
+
{{/inline}} @@ -25,15 +25,17 @@ SPDX-License-Identifier: MIT
{{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} -
- {{> talentRankBasicProperty data=data property='base' localizeString='DS4.TalentRankBase' }} - {{> talentRankBasicProperty data=data property='max' localizeString='DS4.TalentRankMax'}} - {{> talentRankBasicProperty data=data property='mod' localizeString='DS4.TalentRankMod'}} - {{> talentRankBasicProperty data=data property='total' localizeString='DS4.TalentRankTotal' disabled='disabled'}} -
+
+ {{> talentRankBasicProperty data=data property='base' localizeString='DS4.TalentRankBase' }} + {{> talentRankBasicProperty data=data property='max' localizeString='DS4.TalentRankMax'}} + {{> talentRankBasicProperty data=data property='mod' localizeString='DS4.TalentRankMod'}} + {{> talentRankBasicProperty data=data property='total' localizeString='DS4.TalentRankTotal' + disabled='disabled'}} +
{{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} {{!-- Common Item body --}} - {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + {{#> + systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}}
diff --git a/src/templates/sheets/item/weapon-sheet.hbs b/src/templates/sheets/item/weapon-sheet.hbs index 591e33b..1e8c0df 100644 --- a/src/templates/sheets/item/weapon-sheet.hbs +++ b/src/templates/sheets/item/weapon-sheet.hbs @@ -7,30 +7,31 @@ SPDX-License-Identifier: MIT
{{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} -
-
- - -
-
- - -
-
- - -
+
+
+ +
+
+ + +
+
+ + +
+
{{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} {{!-- Common Item body --}} - {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + {{#> + systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} diff --git a/yarn.lock b/yarn.lock index 1531cbd..51898f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,362 +14,221 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/code-frame@npm:7.12.13" +"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/code-frame@npm:7.14.5" dependencies: - "@babel/highlight": ^7.12.13 - checksum: 471532bb7cb4a300bd1a3201e75e7c0c83ebfb4e0e6610fdb53270521505d7efe0961258de61e7b1970ef3092a97ed675248ee1a44597912a1f61f903d85ef41 + "@babel/highlight": ^7.14.5 + checksum: 48c584cad9aa05ff16fa965b4572deae0343d51abe658a2fb72640e924c229d47f71f880a474cc1e14e613f88a4bfd576609b1e0d8073bbc4e50e60f7e678626 languageName: node linkType: hard -"@babel/compat-data@npm:^7.13.0": - version: 7.13.6 - resolution: "@babel/compat-data@npm:7.13.6" - checksum: 0bed7ac3e2c4597140e56db034e2b7a664516c7f094ee521a15efee814a208e3937fd9a5ac12e8d3d6ccfcbbfd35ceced75163fc7b2d9ca71b48d8fcfbc6f990 +"@babel/compat-data@npm:^7.14.5": + version: 7.14.7 + resolution: "@babel/compat-data@npm:7.14.7" + checksum: f50909f7565cac9a7f1dd31b9817b7a90070c7eac1207b1272f6e8d862e69589f08861d2a5d8b70e6eba2e8afcea02210be4176e259d9d11bf6cda3a5563eee3 languageName: node linkType: hard -"@babel/compat-data@npm:^7.14.4": - version: 7.14.4 - resolution: "@babel/compat-data@npm:7.14.4" - checksum: 35c1152702c158814260944836f4c21b94acc6397d9e64129077b10c0f1c0b887786760d8366cf91621fb9dda1ed5ae9a5ba50c44d3e6b92b51ccd0276346794 - languageName: node - linkType: hard - -"@babel/core@npm:7.13.1, @babel/core@npm:^7.1.0, @babel/core@npm:^7.7.5": - version: 7.13.1 - resolution: "@babel/core@npm:7.13.1" +"@babel/core@npm:7.14.6, @babel/core@npm:^7.1.0, @babel/core@npm:^7.7.2, @babel/core@npm:^7.7.5": + version: 7.14.6 + resolution: "@babel/core@npm:7.14.6" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.0 - "@babel/helper-compilation-targets": ^7.13.0 - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helpers": ^7.13.0 - "@babel/parser": ^7.13.0 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.1.2 - lodash: ^4.17.19 - semver: 7.0.0 - source-map: ^0.5.0 - checksum: 3adc8e8ce201f7e45a83c6715b11b353e5083339cf32dc84db10bda63b63e4cd785b57ee8d51e0e049a60ebbbf7cd45d594475b6511607b57917076fd5acd888 - languageName: node - linkType: hard - -"@babel/core@npm:7.14.3, @babel/core@npm:^7.7.2": - version: 7.14.3 - resolution: "@babel/core@npm:7.14.3" - dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.14.3 - "@babel/helper-compilation-targets": ^7.13.16 - "@babel/helper-module-transforms": ^7.14.2 - "@babel/helpers": ^7.14.0 - "@babel/parser": ^7.14.3 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.14.2 - "@babel/types": ^7.14.2 + "@babel/code-frame": ^7.14.5 + "@babel/generator": ^7.14.5 + "@babel/helper-compilation-targets": ^7.14.5 + "@babel/helper-module-transforms": ^7.14.5 + "@babel/helpers": ^7.14.6 + "@babel/parser": ^7.14.6 + "@babel/template": ^7.14.5 + "@babel/traverse": ^7.14.5 + "@babel/types": ^7.14.5 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.1.2 semver: ^6.3.0 source-map: ^0.5.0 - checksum: 4bc2d1abf53e8d1399d5fe159f4f6d275feb64cdfb3a975e903edcbbd98b71ba4a216af28f43db0a5303691a291590837964934acaf673b024563f3acad919f6 + checksum: 239c4892d54f1d6e3a9a3972a7579138da6ff5308b9c08e4c80c9cd09282b6a921f58338851675fdb80b1cf9dd14f4176674917b97aa430bf1d50c0052bbb13a languageName: node linkType: hard -"@babel/generator@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/generator@npm:7.13.0" +"@babel/generator@npm:^7.14.5, @babel/generator@npm:^7.7.2": + version: 7.14.5 + resolution: "@babel/generator@npm:7.14.5" dependencies: - "@babel/types": ^7.13.0 + "@babel/types": ^7.14.5 jsesc: ^2.5.1 source-map: ^0.5.0 - checksum: d406238edc9e967e5a5013b9c7cf02d9eb4ea0160cd209cb63edb39a095d392b007e6762acb65ae79958a8bc0cf94945155b34dbcb2dfc93df1159881c217148 + checksum: 3ba48b75f7680d17b4c3657063339252cf63ea0038b05e24d1611dff2c8f136fc8ca5cb1c293fbc1abc79b153e264bc23a01dc5f440030282e4da0631f12e0b7 languageName: node linkType: hard -"@babel/generator@npm:^7.14.2, @babel/generator@npm:^7.14.3, @babel/generator@npm:^7.7.2": - version: 7.14.3 - resolution: "@babel/generator@npm:7.14.3" +"@babel/helper-compilation-targets@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-compilation-targets@npm:7.14.5" dependencies: - "@babel/types": ^7.14.2 - jsesc: ^2.5.1 - source-map: ^0.5.0 - checksum: 519fce36f3663dd346522d50d13b8549c02c0a340650c62db1bee0595a47f910b433f3bbdb513cc582bd932c5045b2673c8ef6a97913f9335fb16aa06085f274 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-compilation-targets@npm:7.13.0" - dependencies: - "@babel/compat-data": ^7.13.0 - "@babel/helper-validator-option": ^7.12.17 - browserslist: ^4.14.5 - semver: 7.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 55a5af52e24e21ad8033178e55e6fd480375f0c1558ab80de9927c62635fc10ba9e7345020a3c8ad254b8312f21aa9b1198c65043a50671a520c9439bac03fcc - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.13.16": - version: 7.14.4 - resolution: "@babel/helper-compilation-targets@npm:7.14.4" - dependencies: - "@babel/compat-data": ^7.14.4 - "@babel/helper-validator-option": ^7.12.17 + "@babel/compat-data": ^7.14.5 + "@babel/helper-validator-option": ^7.14.5 browserslist: ^4.16.6 semver: ^6.3.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: d4725417dcb5f63a71f50038802a57c3ef5ef6f7830f563210b672c684583ddfbd03b542fd3c322aa32c8ada3ac4c1c5676971dfee28e63fd2886379300c6b31 + checksum: db7d58fc7309fcd925ee3cbf724fd796fc5779545de4da97badc772c7f05f087155538fb8ed503cf2e8075fb939c79a6e806fb5b7901c20dbe09c1d194a12ed2 languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-function-name@npm:7.12.13" +"@babel/helper-function-name@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-function-name@npm:7.14.5" dependencies: - "@babel/helper-get-function-arity": ^7.12.13 - "@babel/template": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: 25f03f303be790618437dc49c6df758d362112a564361d2eae66b58fda4f5ec09e62875473b18090b939c8d3d60b36aa7c9f688768b7fade511512d02ac9d3d0 + "@babel/helper-get-function-arity": ^7.14.5 + "@babel/template": ^7.14.5 + "@babel/types": ^7.14.5 + checksum: bf2172f932ce3bd8fdaa6df5464a581eee47484952c69115361439727e87d3289925a292655957b39446b6052119896da358022337985eed795444c550f7e4f3 languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/helper-function-name@npm:7.14.2" +"@babel/helper-get-function-arity@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-get-function-arity@npm:7.14.5" dependencies: - "@babel/helper-get-function-arity": ^7.12.13 - "@babel/template": ^7.12.13 - "@babel/types": ^7.14.2 - checksum: 36bf5e4126b5bdf7c7e686ca487f9a91857d723d457a2608645d10ed7b0ba3da0c0e0cd0b31efe71091ea80656bf98578e3bad50c6c7fab771fd5de439aeebad + "@babel/types": ^7.14.5 + checksum: 1bd0ae6c25af61a7795032452500362bb3f63042aadb1076184ebccc0afcb38e0565da3f02534f806ea0acb915efd75bc1de8530417f7be10f74c4a3efbacb3a languageName: node linkType: hard -"@babel/helper-get-function-arity@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-get-function-arity@npm:7.12.13" +"@babel/helper-hoist-variables@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-hoist-variables@npm:7.14.5" dependencies: - "@babel/types": ^7.12.13 - checksum: cfb5c39959ea9f1cc21ee0f4a23054be66a615fa5392f25763ea98f0c690a5b47500af9a63f28a42a2fb3f699684c113c45a95c4ce6303dfecb3358e32e56c76 + "@babel/types": ^7.14.5 + checksum: c2fdc5a2391f13fac73089c563f2a3fcfbec460bd866d6ceb4f97e7138b38a5e16703e6ced3ff1a0e6058aece138e19c30fe11e9e2a65d564d73a6c4a34313e2 languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.0" +"@babel/helper-member-expression-to-functions@npm:^7.14.5": + version: 7.14.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.14.7" dependencies: - "@babel/types": ^7.13.0 - checksum: 9baaab9910a96c0f201b71c6cc39037dce5d32a321f61347ac489ddbef2bcbd232adcadeaa8e44d8c9a7216226c009b57f9d65697d90d7a8ed2c27682932d959 + "@babel/types": ^7.14.5 + checksum: 8a45a0f6b2e945eab5072e3401f54b0e9366c22e41b91dfa6b1cb232368d99c31c99f59fd50aff28ba989008ab47e3bfa9921dc17ea32e9fea78817a10b22fb9 languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" +"@babel/helper-module-imports@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-module-imports@npm:7.14.5" dependencies: - "@babel/types": ^7.13.12 - checksum: 2c075f72e5bda1432c74484548272577485d45c4d6c7cc9e84c5d053eaa6e0890e93c9b018bab97f65cbb81ac04dd9cdca73d5ae0e94b03cfc00d10972b99185 + "@babel/types": ^7.14.5 + checksum: 483919bf31611dc5905acb6a01b888fad1264ddcecaae706c0dde46ff81fa708d98c4a093ab0d4ad71791eb0a30b6dafbfa5364003e71486d6b3c5c718eccf7d languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-module-imports@npm:7.12.13" +"@babel/helper-module-transforms@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-module-transforms@npm:7.14.5" dependencies: - "@babel/types": ^7.12.13 - checksum: 9832436fb44361b2d7a0b7d99f18b7c0529afb94202ab92b578147aba062447e9a1cff33bc95db33189686fa922c62f23da296870958eee2f862b3aa89809159 + "@babel/helper-module-imports": ^7.14.5 + "@babel/helper-replace-supers": ^7.14.5 + "@babel/helper-simple-access": ^7.14.5 + "@babel/helper-split-export-declaration": ^7.14.5 + "@babel/helper-validator-identifier": ^7.14.5 + "@babel/template": ^7.14.5 + "@babel/traverse": ^7.14.5 + "@babel/types": ^7.14.5 + checksum: b6f47b812d264ea204802d98d6b5a8e47b8fad5a4406a349e7a913b7b881d9be509f95f405a06d5416e95d07539386fa5c50f46eb07e033f0fb9a35f06632bf5 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-module-imports@npm:7.13.12" +"@babel/helper-optimise-call-expression@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.14.5" dependencies: - "@babel/types": ^7.13.12 - checksum: 4d1d3364bec0820e50c782b5a5c81e7987c260c14772bc594ca8dbfdb3b6e43bd9b4e5071fd2a5f777c822dc7440781fa904f643e2069755db9ba5033cb2beac + "@babel/types": ^7.14.5 + checksum: 68845ee7fb88cf7bfbea9635d3fddcc953818b86732985f3fb228f77012652b36f4e41f00d8e7b5e3be2b2d41b6b9f189a36fd49874e58a29dd2e3b1dc753f5c languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-module-transforms@npm:7.13.0" +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.14.5 + resolution: "@babel/helper-plugin-utils@npm:7.14.5" + checksum: 76404ef3aadc25879f7b4c5945bafcca935d4af0cf451a95ff9f131f29ac3dc589e2ed19904ce746c7cf6c2a8a7ea33fa4eaf881b9b272d31f2be91984f505d6 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-replace-supers@npm:7.14.5" dependencies: - "@babel/helper-module-imports": ^7.12.13 - "@babel/helper-replace-supers": ^7.13.0 - "@babel/helper-simple-access": ^7.12.13 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/helper-validator-identifier": ^7.12.11 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - lodash: ^4.17.19 - checksum: b7e45c67eeaca488fa7a7bb0afebaec25b91f94cb04d32229ef799bd3a31ef5b566737fefd139b20c6525817528816e43bf492372c77e352e2a0e4d03b1fe21b + "@babel/helper-member-expression-to-functions": ^7.14.5 + "@babel/helper-optimise-call-expression": ^7.14.5 + "@babel/traverse": ^7.14.5 + "@babel/types": ^7.14.5 + checksum: 368aba02e75a3bdae7e79d424c7ec98c72a3d8ced95920899e9efc39d274a414c7ab0ac9ed49c9af21e6430a5c5063e382de93d2dd83ff27c8f469a011a658a0 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/helper-module-transforms@npm:7.14.2" +"@babel/helper-simple-access@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-simple-access@npm:7.14.5" dependencies: - "@babel/helper-module-imports": ^7.13.12 - "@babel/helper-replace-supers": ^7.13.12 - "@babel/helper-simple-access": ^7.13.12 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/helper-validator-identifier": ^7.14.0 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.14.2 - "@babel/types": ^7.14.2 - checksum: c0a543a2149d15ad9c129f002cb01974c79a16ea10de9e3f9b7a296f2bbe3deaef9457acf6b9d2238e9629d5e98964539d28843cdd4d328b115f559871ccf533 + "@babel/types": ^7.14.5 + checksum: dd6de62de59ab05121aa1198d01080415584ac4a4d4f5d4e53fd22a1c8d5359d19667cd61663937dffa9ab7761aecbe66eee9e1d266def6a59b4ede2dc15ea57 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" +"@babel/helper-split-export-declaration@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-split-export-declaration@npm:7.14.5" dependencies: - "@babel/types": ^7.12.13 - checksum: 5e4df5da4a45d7b7c100307efdc11f9fb460f943b4db1c60ddbdf57c3a7cbeecc8dea8980f4a9d4f3c38071b04d0e7c95af213229bcc1c13f17eb7293a6298a9 + "@babel/types": ^7.14.5 + checksum: 80965627683125d6e4d3ead34f685219933203d7852f2f8af87883702367da5b43bde05b772040434841d7259a4e7045b3ab0ff1768a37c90b6563928191a562 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.13.0 - resolution: "@babel/helper-plugin-utils@npm:7.13.0" - checksum: 229ac1917b43ad38732d2d4a9a826f87d8945719249efe1d6191f3e25ba6027a289af70380d82d62a03fc9e82558a0ea6f12739cbb55b64bb280d6b511b4ca65 +"@babel/helper-validator-identifier@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-validator-identifier@npm:7.14.5" + checksum: 778312189a7c5228daac9f7767795a74f11d1eac595ca38bfea248324666459b24aaae6aef43c957ce01bbe61672039ea1c08c5623067c3701beeb1bb1f1ee33 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-replace-supers@npm:7.13.0" +"@babel/helper-validator-option@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/helper-validator-option@npm:7.14.5" + checksum: aded46b377d25f5966aab30506cdb95908bae18ea5d062e86c646e9afcef911327da80e637e06c3542ea2ba01cab903d18e91fc8a12fbf7b15e0b3e8ee0b9d3b + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.14.6": + version: 7.14.6 + resolution: "@babel/helpers@npm:7.14.6" dependencies: - "@babel/helper-member-expression-to-functions": ^7.13.0 - "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: b32ab3f4d6a4e7f80c361eb9c0a001c2ae498f885248cb567c8de2475fb3dcbdf7ddd32a9e9a926abf55cf4f46faad7ceebfd3d035dea5508c3d9ba55d4083cc + "@babel/template": ^7.14.5 + "@babel/traverse": ^7.14.5 + "@babel/types": ^7.14.5 + checksum: c5c3bd0f9618cdb8895d89171fe0b89c0b119bf8c9f96aff869d95b9208628172a882a132f8f76a218e0e68d8c3316f65b60af9b3a3a778d9b9adce004ca52c7 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.13.12": - version: 7.14.4 - resolution: "@babel/helper-replace-supers@npm:7.14.4" +"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/highlight@npm:7.14.5" dependencies: - "@babel/helper-member-expression-to-functions": ^7.13.12 - "@babel/helper-optimise-call-expression": ^7.12.13 - "@babel/traverse": ^7.14.2 - "@babel/types": ^7.14.4 - checksum: 00d08b8489daf9a2973d54c36b41de1a2aa45178b05de4cfaaee5c5ed0945523f50a13360f262ab6bb5b49b358edb9d397a5b23416a23b6fa602dc1589c2f0e6 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-simple-access@npm:7.12.13" - dependencies: - "@babel/types": ^7.12.13 - checksum: 34f19da4b8129006d660ff6d704d493a447852268a1360727a7de32087c7cead4c2548a3bb73c8fee7afa2dcad85087d53f9b0cabe071f3bf5cc27f35de9e7c8 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-simple-access@npm:7.13.12" - dependencies: - "@babel/types": ^7.13.12 - checksum: eff532a1572a4ac562c5918a409871ddf9baee9ece197b98a54622184d3b9e01bdd465597f27ca3d452e71638c913a14819cf261dc095a466032dfd92a88bc73 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-split-export-declaration@npm:7.12.13" - dependencies: - "@babel/types": ^7.12.13 - checksum: c8d529558c45855542b7094de7b08e6c6de34922037a71596545dbb7a3be6ebf61b8b3193afe85fa5c9c35bcb0cc94110866deab8028f73e500bdc62427532c9 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.12.11": - version: 7.12.11 - resolution: "@babel/helper-validator-identifier@npm:7.12.11" - checksum: 18de432203264b501db2690b53370a4289dc56084f5a2c66de624b159ee28b8abaeb402b2b7584296d9261645d91ddb6bfd21125d3ffd9bf02e9262e77baf3d2 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.14.0": - version: 7.14.0 - resolution: "@babel/helper-validator-identifier@npm:7.14.0" - checksum: bd67b4a1a49eba151aa0fe95508579638287fee0a3e7a3bf8c5ab480de8eaad4b4231c523d7db401eb0cecc7cf03b76ee72453fab53bab8cb8ccd154bb67feb7 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.12.17": - version: 7.12.17 - resolution: "@babel/helper-validator-option@npm:7.12.17" - checksum: 9201d17a5634b05a6f3d561b95e73a4e4f9ba2e56c55cfc3b9a2a9618c4090b4b507720ac7a2e77209e68dc9bdc00a59b5ba7ad9ecbca3fb2c9217e814b7b5a5 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helpers@npm:7.13.0" - dependencies: - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - checksum: 6c435aefe108e85b999570eed9fc2ec10944cb1ed4c3ff6656936c90a6f986174bd5c80ec48ecbbb7042e5eca5761364f484d7e0238a3aa77c2f5099dcac8df0 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.14.0": - version: 7.14.0 - resolution: "@babel/helpers@npm:7.14.0" - dependencies: - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.14.0 - "@babel/types": ^7.14.0 - checksum: 0ac7e775b54cebf4b5c027e9ca00a1027f3c7d96e924583d028b6e86bb775652701ba9d48257db8352fce4612566d8a4f1fd8723502d940a77571145af603956 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/highlight@npm:7.12.13" - dependencies: - "@babel/helper-validator-identifier": ^7.12.11 + "@babel/helper-validator-identifier": ^7.14.5 chalk: ^2.0.0 js-tokens: ^4.0.0 - checksum: 83a3a2cc961b9e17fb75bd57ebf90cf07be6ec4263d74b60c435c28bcb045c474f0162eaa921ad7b44429d7624ec49b41cae416e475d3f747ccda678be1f7a8f + checksum: a1ed599c2655eb0b13134875ba2626b547a2634940e532c86a02896fb403f197cd56d1adaa474c7859ae4f53fabc5f1621e90770e75d235ca3350952ba78aa5c languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.13.0": - version: 7.13.4 - resolution: "@babel/parser@npm:7.13.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.5, @babel/parser@npm:^7.14.6, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.7.2": + version: 7.14.7 + resolution: "@babel/parser@npm:7.14.7" bin: parser: ./bin/babel-parser.js - checksum: 3aac62adbd1fd91798751a09b385ed3810acffb7bd637066bea65acf16670fdc8c7c39bab2148c57b4d6606355344de01922c9aba86405c771eaabc58701077a - languageName: node - linkType: hard - -"@babel/parser@npm:^7.14.2, @babel/parser@npm:^7.14.3, @babel/parser@npm:^7.7.2": - version: 7.14.4 - resolution: "@babel/parser@npm:7.14.4" - bin: - parser: ./bin/babel-parser.js - checksum: 3bc067c1ee0e0178d365e1b2988ea1a0d6d37af37870ea1a7e80729b3bdc40acda083cac44ce72f63a5b31a489e35120f617bd41f312dec4c86cf814cff8e64a + checksum: 8c7c7fd9735d9de2a0531fe54338d76972aeb9a414902f5edfc317c421a2da6a8772d04dce5444c89065ae2719c48433153f9cbaa14754b1bf8d6154915095ff languageName: node linkType: hard @@ -495,89 +354,62 @@ __metadata: linkType: hard "@babel/plugin-syntax-top-level-await@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5bd0a65b01a39e5636169f830ade7511d046f2db63831e226fa99139d97aa30ee6958ac04a1e114954ace8c64875269fc450ed3304a4204f4be82c1b8aa21be7 + checksum: 642baff7c2150f146aa2ae94f8fa93f8aa81f5d82731241c60054037938cbde8031898194a216ec567af9b35bc4f394be3cd87d76aea39c8e32d68927ea67601 languageName: node linkType: hard "@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.12.13 - resolution: "@babel/plugin-syntax-typescript@npm:7.12.13" + version: 7.14.5 + resolution: "@babel/plugin-syntax-typescript@npm:7.14.5" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ea2b4aad35c62fc66c9e1629b70ece2ac060550f2fd10c814d568946121ec0790690c5dc65c8888bc3b543e71691e553e2ed8becac769384484c27ae6ddcb21e + checksum: 1b26952c0fa586460c8be3422e755fcd28a0cbddf5fb5647ade091facddc7a314b0320cb7a63072f32fd63702332ec837dc0e2b21a111c427c21d243596da180 languageName: node linkType: hard -"@babel/template@npm:^7.12.13, @babel/template@npm:^7.3.3": - version: 7.12.13 - resolution: "@babel/template@npm:7.12.13" +"@babel/template@npm:^7.14.5, @babel/template@npm:^7.3.3": + version: 7.14.5 + resolution: "@babel/template@npm:7.14.5" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/parser": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: 665977068a7036233b017396c0cd4856b6bb2ad9759e95e2325cbd198b98d2e26796f25977c8e12b5936d7d94f49cf883df9cffa3c91c797abdf27fc9b6bec65 + "@babel/code-frame": ^7.14.5 + "@babel/parser": ^7.14.5 + "@babel/types": ^7.14.5 + checksum: 71619e2e3d6d518bf6c40ebd610379b050a6e8e9a2ec0cda8b5c28aea5105f69006758b575dae63a21a6d4f64f854e92c0cb6cf8841d59f5585596165df78060 languageName: node linkType: hard -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/traverse@npm:7.13.0" +"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.14.5, @babel/traverse@npm:^7.7.2": + version: 7.14.7 + resolution: "@babel/traverse@npm:7.14.7" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.0 - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/parser": ^7.13.0 - "@babel/types": ^7.13.0 + "@babel/code-frame": ^7.14.5 + "@babel/generator": ^7.14.5 + "@babel/helper-function-name": ^7.14.5 + "@babel/helper-hoist-variables": ^7.14.5 + "@babel/helper-split-export-declaration": ^7.14.5 + "@babel/parser": ^7.14.7 + "@babel/types": ^7.14.5 debug: ^4.1.0 globals: ^11.1.0 - lodash: ^4.17.19 - checksum: e5d1b690157da325b5bea98e472f4df0fff16048242a70880e2da7939b005ccd5b63d2b4527e203cfc71a422da0fa513c0ad84114bff002d583ebd7dbd2c8576 + checksum: 1fb5578211486c45171b645d1802f60067dcf8a59edaecc0cb7bf09b72767e4225d2c6f0891ffa03c23e90a56bf2c2cc4d5d6adb14145b31ee86acecaca5f7e0 languageName: node linkType: hard -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.14.2, @babel/traverse@npm:^7.7.2": - version: 7.14.2 - resolution: "@babel/traverse@npm:7.14.2" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.14.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": + version: 7.14.5 + resolution: "@babel/types@npm:7.14.5" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.14.2 - "@babel/helper-function-name": ^7.14.2 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/parser": ^7.14.2 - "@babel/types": ^7.14.2 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 76f57f7a718c5ac17f72eb729e68d6135e37ee6201642d25c92d8add7b87eb492c7af40bd5193c27cca83cb60a649c9ccbe0f500e37569609e044b0560602cb7 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.13, @babel/types@npm:^7.13.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.13.0 - resolution: "@babel/types@npm:7.13.0" - dependencies: - "@babel/helper-validator-identifier": ^7.12.11 - lodash: ^4.17.19 + "@babel/helper-validator-identifier": ^7.14.5 to-fast-properties: ^2.0.0 - checksum: a47357647a92c08ee2f5059210d37fd7fe190e8d4ef71dd97ba61c6ca7b7e979660bc8ba00fdc51249c037199b634dd984fde8d7a622fdd5e3e2161fe65e94c3 - languageName: node - linkType: hard - -"@babel/types@npm:^7.13.12, @babel/types@npm:^7.14.0, @babel/types@npm:^7.14.2, @babel/types@npm:^7.14.4": - version: 7.14.4 - resolution: "@babel/types@npm:7.14.4" - dependencies: - "@babel/helper-validator-identifier": ^7.14.0 - to-fast-properties: ^2.0.0 - checksum: aadd11ec93c4ed1405ff85f8418c24a00d118750beffbc73cb662fd388ff2a89c8b763cccef5595015f2ff668bfa2fb6d63906296226f4f219554ce9e428aeb6 + checksum: 45575b46df5ec0e63454b794a60f362596c6f16beda7df3693b134db5be15eb43f7b98ca7b2a5a9628171db5192eed5b8965e43c0a6f5383bca4ddefd0ea8d30 languageName: node linkType: hard @@ -625,48 +457,48 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^27.0.2": - version: 27.0.2 - resolution: "@jest/console@npm:27.0.2" +"@jest/console@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/console@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.0.2 - jest-util: ^27.0.2 + jest-message-util: ^27.0.6 + jest-util: ^27.0.6 slash: ^3.0.0 - checksum: 98757eeacade42f4757a644d5ebadce0a63324ef7a89a10bce356c604445d486ab5ca48611cf50ee272f75367cec657d89d2f44666a8f144de02b3ceae29d701 + checksum: abb7c6f7ea0491045bf59a446c8a451299c1832494eefe764601f5b4a96636eff822702c1d867f7dbf7b0577af1af6b60015aa68b007edd2a21fffdbcdc044c4 languageName: node linkType: hard -"@jest/core@npm:^27.0.5": - version: 27.0.5 - resolution: "@jest/core@npm:27.0.5" +"@jest/core@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/core@npm:27.0.6" dependencies: - "@jest/console": ^27.0.2 - "@jest/reporters": ^27.0.5 - "@jest/test-result": ^27.0.2 - "@jest/transform": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/console": ^27.0.6 + "@jest/reporters": ^27.0.6 + "@jest/test-result": ^27.0.6 + "@jest/transform": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-changed-files: ^27.0.2 - jest-config: ^27.0.5 - jest-haste-map: ^27.0.5 - jest-message-util: ^27.0.2 - jest-regex-util: ^27.0.1 - jest-resolve: ^27.0.5 - jest-resolve-dependencies: ^27.0.5 - jest-runner: ^27.0.5 - jest-runtime: ^27.0.5 - jest-snapshot: ^27.0.5 - jest-util: ^27.0.2 - jest-validate: ^27.0.2 - jest-watcher: ^27.0.2 + jest-changed-files: ^27.0.6 + jest-config: ^27.0.6 + jest-haste-map: ^27.0.6 + jest-message-util: ^27.0.6 + jest-regex-util: ^27.0.6 + jest-resolve: ^27.0.6 + jest-resolve-dependencies: ^27.0.6 + jest-runner: ^27.0.6 + jest-runtime: ^27.0.6 + jest-snapshot: ^27.0.6 + jest-util: ^27.0.6 + jest-validate: ^27.0.6 + jest-watcher: ^27.0.6 micromatch: ^4.0.4 p-each-series: ^2.1.0 rimraf: ^3.0.0 @@ -677,56 +509,56 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 5b2653d8246f192a611dc86244518f5df535280c5e59f634293471215425b8a9476f2c453b6b5f568d5f70cbffa77be3fe2d9c63d4a4fb880cd7fdd8604d5497 + checksum: 4c8ec2e4d5ba038641b4cb11b2f0a7ef1097c7a4079ef6c860e9de5c907db308ae8cb3ab4c797bc4b4da11a786684eb90e844cee8d3bce3333f2dc14807e5175 languageName: node linkType: hard -"@jest/environment@npm:^27.0.5": - version: 27.0.5 - resolution: "@jest/environment@npm:27.0.5" +"@jest/environment@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/environment@npm:27.0.6" dependencies: - "@jest/fake-timers": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/fake-timers": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" - jest-mock: ^27.0.3 - checksum: ba57725dffab8eed3d03db1acd9234e6823bca1cf3a23ac6b97979f5d1102203c7381dc33f85bcec0aec925301c9c666c995b0ffc21df98679f4c5aae0b4357c + jest-mock: ^27.0.6 + checksum: 37fcf1aeaf4ccd50b42bbbfff770a71813db89abf1194af690ba145f2879f53e2916195fc52ce7261ba7475f353e6468444fc9ae7e9913d442e167ea477222a8 languageName: node linkType: hard -"@jest/fake-timers@npm:^27.0.5": - version: 27.0.5 - resolution: "@jest/fake-timers@npm:27.0.5" +"@jest/fake-timers@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/fake-timers@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 "@sinonjs/fake-timers": ^7.0.2 "@types/node": "*" - jest-message-util: ^27.0.2 - jest-mock: ^27.0.3 - jest-util: ^27.0.2 - checksum: 94d24dee0cf567ce356597f18009723843a8af9a4a3a24a6ba49032c251ce6e313da72402eec0c0ea4cb1b8b5fdc360e833f759ac2b9120a65becd1cd839ff86 + jest-message-util: ^27.0.6 + jest-mock: ^27.0.6 + jest-util: ^27.0.6 + checksum: 9fa36172e64627f4722585f97bf8577b6324db337e13cdd1740349e78510f56b6134726660097e299b5f21c307a8be2efc017907fc098553e3060f189e25a7d8 languageName: node linkType: hard -"@jest/globals@npm:^27.0.5": - version: 27.0.5 - resolution: "@jest/globals@npm:27.0.5" +"@jest/globals@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/globals@npm:27.0.6" dependencies: - "@jest/environment": ^27.0.5 - "@jest/types": ^27.0.2 - expect: ^27.0.2 - checksum: c3cc49f7fac7679bc9102710be67d8a74bb14dbb24c224feca4edb9f08e11c00a0552d64da3f8b3dd8ca98257e972d2f5c8aa169628a4e97bad7b3bd2387ef0a + "@jest/environment": ^27.0.6 + "@jest/types": ^27.0.6 + expect: ^27.0.6 + checksum: f1658c2ca64b0ff9f53dd4703e786940a4567864347bc5599c69f9f9c6c8204a6a9a5f8bf5f277dbf98315ec26d439fd19e8826f48d480dd899b96c98f1338ff languageName: node linkType: hard -"@jest/reporters@npm:^27.0.5": - version: 27.0.5 - resolution: "@jest/reporters@npm:27.0.5" +"@jest/reporters@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/reporters@npm:27.0.6" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.0.2 - "@jest/test-result": ^27.0.2 - "@jest/transform": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/console": ^27.0.6 + "@jest/test-result": ^27.0.6 + "@jest/transform": ^27.0.6 + "@jest/types": ^27.0.6 chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 exit: ^0.1.2 @@ -737,10 +569,10 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^27.0.5 - jest-resolve: ^27.0.5 - jest-util: ^27.0.2 - jest-worker: ^27.0.2 + jest-haste-map: ^27.0.6 + jest-resolve: ^27.0.6 + jest-util: ^27.0.6 + jest-worker: ^27.0.6 slash: ^3.0.0 source-map: ^0.6.0 string-length: ^4.0.1 @@ -751,65 +583,65 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: f8c420e403795c4fd588327e7b2396fb66d295c58606a12c7fb4c40f054ab9349e41cbe7dd8f97458866b9ca371e2205f541cfe11e3748cf3e0114b6aa1cd13b + checksum: 5a2b50e066b63f132b8763bd5825e348a3467f5995e2a4c5ff663e09656ed6fa4fff0fa2c8b49d3e36b420857b309a468c237a784d2a49d6df1600cc55b58eab languageName: node linkType: hard -"@jest/source-map@npm:^27.0.1": - version: 27.0.1 - resolution: "@jest/source-map@npm:27.0.1" +"@jest/source-map@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/source-map@npm:27.0.6" dependencies: callsites: ^3.0.0 graceful-fs: ^4.2.4 source-map: ^0.6.0 - checksum: 0c69ae000ef7bc20474381721e4d76f3270789b50a66af3124cdff24bc9feefaf203442bf82d5d29f5e7baba10f859cafdd2268bc0d023d07b7aa8b3468fc894 + checksum: 8294299b258f6eefdbd47df9083c25526e2a63858489f6a125d5d53e9963687b286ce1a1beef4a997847e88bb5f2aebc66be1f54e63c80fef08e5e57f64e6537 languageName: node linkType: hard -"@jest/test-result@npm:^27.0.2": - version: 27.0.2 - resolution: "@jest/test-result@npm:27.0.2" +"@jest/test-result@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/test-result@npm:27.0.6" dependencies: - "@jest/console": ^27.0.2 - "@jest/types": ^27.0.2 + "@jest/console": ^27.0.6 + "@jest/types": ^27.0.6 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 578a75168a0922f9ffa36dc6fecf90116917e5ffcf9dd25a9ffddf785b6f56277e46bd8663bb6ffe7a0adb56594fd6834cf10173d51b6b0edc2ac83cf020f94d + checksum: be967817bc558e8f4b43389e2a2a9b7456c33f00d7bc906979e7da2b165c0b3311e3dcdc6ac6792366c75e46874c64d974f81b6ad68553ecdc51adb1732bf950 languageName: node linkType: hard -"@jest/test-sequencer@npm:^27.0.5": - version: 27.0.5 - resolution: "@jest/test-sequencer@npm:27.0.5" +"@jest/test-sequencer@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/test-sequencer@npm:27.0.6" dependencies: - "@jest/test-result": ^27.0.2 + "@jest/test-result": ^27.0.6 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.5 - jest-runtime: ^27.0.5 - checksum: 21b64ca006809dfa7c9ff600e7f9d8441639054f6edcab1d13738c5a6affbd6d21584cfbac3a289090b2594aba28a3ff682f73daadba1206c9e709da87e5c42c + jest-haste-map: ^27.0.6 + jest-runtime: ^27.0.6 + checksum: fb9adb58c7b4351cc851080b82772197739d9ea4dac4409567ed20f8c0749d6b1737ba2982ddb705150d51701e3b14cd8966e6a68309c862e57e92b211ad9506 languageName: node linkType: hard -"@jest/transform@npm:^27.0.5": - version: 27.0.5 - resolution: "@jest/transform@npm:27.0.5" +"@jest/transform@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/transform@npm:27.0.6" dependencies: "@babel/core": ^7.1.0 - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 babel-plugin-istanbul: ^6.0.0 chalk: ^4.0.0 convert-source-map: ^1.4.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.5 - jest-regex-util: ^27.0.1 - jest-util: ^27.0.2 + jest-haste-map: ^27.0.6 + jest-regex-util: ^27.0.6 + jest-util: ^27.0.6 micromatch: ^4.0.4 pirates: ^4.0.1 slash: ^3.0.0 source-map: ^0.6.1 write-file-atomic: ^3.0.0 - checksum: af3ca62f600ab40a5e407f4939e1d4e5ed669fba7ef71654e4b618936071238f8251a77d767c0cef72ac6c64ae26736d647003bf94ce689b8914ecef49d690f8 + checksum: 5f766dc760b434b632555db671f95868f215dc5adc92bdbb56eb687e16e6d9d79798b454a0651f1f3c17d9468cdf35930f753e2f04a428609fa71329c7b28bd4 languageName: node linkType: hard @@ -826,59 +658,69 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^27.0.2": - version: 27.0.2 - resolution: "@jest/types@npm:27.0.2" +"@jest/types@npm:^27.0.6": + version: 27.0.6 + resolution: "@jest/types@npm:27.0.6" dependencies: "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^16.0.0 chalk: ^4.0.0 - checksum: 7c1ef76bcb799a9010e6f1d5485ebb49b4052dcbc98f17f2979cd028688bb96f7b0072822e0e252659ef989d82c6c0a5cdd750b97b27e11c041efc735a0f84f4 + checksum: 86c1d8707ffcf8fb3574fa6865e1768d771c83494df5bfdc81199cac81fdbe947c69a7c113d03b7bf21c926bbfefffcfe7253138d6e52bb61a1386e05aff2a6b 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@npm:^0.8.8-0": + version: 0.8.8-0 + resolution: "@league-of-foundry-developers/foundry-vtt-types@npm:0.8.8-0" 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: cec288979cf341a28e8335fe5c538190df94925dad1a552a755d18cf2d5b557453a73dd1c17882c8576dd5226c86b89fe7ace1b51d1c5c3266613108e704a1bc languageName: node linkType: hard -"@nodelib/fs.scandir@npm:2.1.4": - version: 2.1.4 - resolution: "@nodelib/fs.scandir@npm:2.1.4" +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" dependencies: - "@nodelib/fs.stat": 2.0.4 + "@nodelib/fs.stat": 2.0.5 run-parallel: ^1.1.9 - checksum: 30b3102ee37e1c1a0cb939a8e93f9a58b1637e2b4b546bb9143b3fb5efacd2abde3237a5313d5329bf1bc4231c418a77c3cb7f5434ce410e61a91ff4051cf215 + checksum: 91b3de88d9ba843b74057ebec53d97bb1ca006fcb794f1eb2becfe6faf114cb575c90b10fc20f7390358106ffa5e6bbc493506c24f2263a33aa69f90c1e77f74 languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.4, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.4 - resolution: "@nodelib/fs.stat@npm:2.0.4" - checksum: 6454a79e945dd55102b5c2e158813804ed349f9c1cc806f8754fca4587688a5d8e4115fc3eedbdf3d8a6b343169a6b664ecd8a7a42289eed210c686a4d0897c4 +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: a4fcf7408f2a1e11737856629b1259fb9ed658c464fabb17f77db1069fea5dd47abd5e92325b217617dbc116138d82ea6d33ffc07a426de940c5f6e08603da88 languageName: node linkType: hard "@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.6 - resolution: "@nodelib/fs.walk@npm:1.2.6" + version: 1.2.7 + resolution: "@nodelib/fs.walk@npm:1.2.7" dependencies: - "@nodelib/fs.scandir": 2.1.4 + "@nodelib/fs.scandir": 2.1.5 fastq: ^1.6.0 - checksum: d0503ffd0bb4172d5ac5d23993b14665f5f6d42a460a719ad97743ce71e60588d134cc60df12ca76be0e5e3a93c9a3156904d9296b78a8cdf19425c3423c0b58 + checksum: ac8e2d9ca000b9f7fca2a7b005b9e476ba7b2f416d2873f64b94b207ed1854bd30f63ced4c221969c5e470ec82fbeb353c97504a86c3838cda11f98660fac284 + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^1.0.1": + version: 1.1.2 + resolution: "@npmcli/move-file@npm:1.1.2" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: d178d86a0a96e5aa12e6d70c00d50eb3bb9a58c0cf1c36e1d7f240acb4ae3f14642c6314659c438ea409a509f08c2a62e29c9346a033e554c3f6921cdb293219 languageName: node linkType: hard @@ -1304,11 +1146,11 @@ __metadata: linkType: hard "@sinonjs/commons@npm:^1.7.0": - version: 1.8.2 - resolution: "@sinonjs/commons@npm:1.8.2" + version: 1.8.3 + resolution: "@sinonjs/commons@npm:1.8.3" dependencies: type-detect: 4.0.8 - checksum: b7eb499e3537a487160fcc42e65b9ad8c7d70ee4a1bbebacdbe28149e01b2da501912df2fbf06c81eac51de8c0ad10eaae573b31932ee747c9f1949fee30c20d + checksum: a7f3181512f67bbb9059dc9247febfda6dea58fc2a918360b208c6fde193b0c2cbe628650b0d13b4ba69f144470788eb6c2ef8a84e050dce4808be8511da4316 languageName: node linkType: hard @@ -1328,20 +1170,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0": - version: 7.1.12 - resolution: "@types/babel__core@npm:7.1.12" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: e2642b77b89af41254a19d85b6cc5b1096f9825aa2b6534d5426cee7fbf6d90cfeceb5c1621f233d32dc1925a9fe88c317e412f81a061cf7239dbd4e2dd413e4 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.1.14": +"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": version: 7.1.14 resolution: "@types/babel__core@npm:7.1.14" dependencies: @@ -1374,11 +1203,18 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": - version: 7.11.0 - resolution: "@types/babel__traverse@npm:7.11.0" + version: 7.14.0 + resolution: "@types/babel__traverse@npm:7.14.0" dependencies: "@babel/types": ^7.3.0 - checksum: cfb83f1633aafbd447008caf6d40d188a7318ac64d64beaa469dd6d35f72c8298869a6668f082e1116fecf1425654ed0a3dc7fccdc2e18c803b0a7b44f88bec0 + checksum: 74c54233db809402858fbcc0a476c285a3272f8ce295e9fa17cd526298b3f26bfdf257ad93fc9932a3168278096b146c6c5a8cb855e704bc1697a95ab9853506 + 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 @@ -1407,13 +1243,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" @@ -1431,11 +1260,11 @@ __metadata: linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/istanbul-reports@npm:3.0.0" + version: 3.0.1 + resolution: "@types/istanbul-reports@npm:3.0.1" dependencies: "@types/istanbul-lib-report": "*" - checksum: 8aee794ea2e8065aa83e0a1017420068d10110f5e67f8473f5751e74462509306c451f79db3856e6848507519bf1d4de7d101daede6539701cc4d74b4646acd9 + checksum: 398cc6bea308522f70829875c983cb26a19f2e420859a629d57713e3bfad64a02cf1c505575b29b5c3a1816397ad523135ae43a67eaeeae3b054f75233f4e7c4 languageName: node linkType: hard @@ -1449,16 +1278,16 @@ __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.6 + resolution: "@types/jquery@npm:3.5.6" dependencies: "@types/sizzle": "*" - checksum: 43f7885e75a7c5fdecb99ff7893a844d53b88ba5d6fb8c8d9bf65d0bfc42ee1ec75844cc9b73bcefd5d955376cb37dcbc9950e3d18e8922a8ef30e3ef8dab78e + checksum: b59c43f42ad94cb428c8708e1c0e9589a4e2cf8ca38a34528630081de2b715f0760d02e73171934896573a6e817c45c9ded725ae13e9f8d33509f67ae4f1bd01 languageName: node linkType: hard -"@types/json-schema@npm:^7.0.3, @types/json-schema@npm:^7.0.7": +"@types/json-schema@npm:^7.0.7": version: 7.0.7 resolution: "@types/json-schema@npm:7.0.7" checksum: b9d2c509fa4e0b82f58e73f5e6ab76c60ff1884ba41bb82f37fb1cece226d4a3e5a62fedf78a43da0005373a6713d9abe61c1e592906402c41c08ad6ab26d52b @@ -1466,9 +1295,9 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 14.14.31 - resolution: "@types/node@npm:14.14.31" - checksum: 635dc8a0898a923621e02ca179e17baa39fdfa44f0096fcc1b7046c9b32317e74a99956a7b45ca0e8069874f51f4e7873a418239a318a4b6e7936f6510ac5992 + version: 15.12.5 + resolution: "@types/node@npm:15.12.5" + checksum: 42485de7a0b7277ddaae25b36ab4174fc8f23e8a5de9ccaedd002ecec17135c48227a5e09088d181c2bc34fe6b2064feb4a468954372076fd8addac2f72dad7e languageName: node linkType: hard @@ -1480,9 +1309,9 @@ __metadata: linkType: hard "@types/prettier@npm:^2.1.5": - version: 2.2.3 - resolution: "@types/prettier@npm:2.2.3" - checksum: b7e80288f9f776caca84391a7a217b8baac6b4fce00bb9701af69299d465cb8faf17466f0af0803970c74d2c191767ca729a6d21a2f7e2ce552d1ef6cc0d653a + version: 2.3.0 + resolution: "@types/prettier@npm:2.3.0" + checksum: 7c1ef16234220519d52b8a154723caf5c5dc9d5eaa85bfe06e367ba57472dab7f7fdac1ca7c29d9010d58f74f3b5235a9f8bad0111d9bad74018eb8141371e7e languageName: node linkType: hard @@ -1495,17 +1324,19 @@ __metadata: languageName: node linkType: hard -"@types/sizzle@npm:*": - version: 2.3.2 - resolution: "@types/sizzle@npm:2.3.2" - checksum: 447a1c3f39f0e47ffdbccd1df58d63e8b67dc001f44f26f43ac8243db7834a3d956cebc8abe9272ecbdccfc8f4ec0ae74b811ccdad5b6cddaf8f0968513d618a +"@types/simple-peer@npm:~9.11.0": + version: 9.11.1 + resolution: "@types/simple-peer@npm:9.11.1" + dependencies: + "@types/node": "*" + checksum: 15738eb9e95e2fa98b012f519ed01dbd55219ff52ed531a95b6cb7861fc1a000930db7e165de8f414a3b1998813a7c6c26becaa1eb21918f8e65e7e03395cfe5 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 +"@types/sizzle@npm:*": + version: 2.3.3 + resolution: "@types/sizzle@npm:2.3.3" + checksum: 8f019f9e1b110b4fdfc08f8a3a8b8b87118a11f3ba11e159541b17f17498c0ef95e8efa0b818c9fed6911041f6b71ef8d44cf8c1c83b4cbb7bd14e4248892f4c languageName: node linkType: hard @@ -1542,11 +1373,11 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^4.28.0": - version: 4.28.0 - resolution: "@typescript-eslint/eslint-plugin@npm:4.28.0" + version: 4.28.1 + resolution: "@typescript-eslint/eslint-plugin@npm:4.28.1" dependencies: - "@typescript-eslint/experimental-utils": 4.28.0 - "@typescript-eslint/scope-manager": 4.28.0 + "@typescript-eslint/experimental-utils": 4.28.1 + "@typescript-eslint/scope-manager": 4.28.1 debug: ^4.3.1 functional-red-black-tree: ^1.0.1 regexpp: ^3.1.0 @@ -1558,117 +1389,66 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 76ebb9a0e6c4982b0af1b09c8b94224618c1a6a969c8d62cf105ddb6a2dbbbdc898fb2ccca2b252447829fc7e626316fae02ce633ab2b49ca994fd8103560937 + checksum: 79a794ff44794c3260d0b57f8b9a25e46e87a93eb151c2e2e1c8822c8fb373fe07207edf3c8cd6e21864142214e36d233fc5502d60a2a979eb16e02fce0d9fe6 languageName: node linkType: hard -"@typescript-eslint/experimental-utils@npm:4.28.0": - version: 4.28.0 - resolution: "@typescript-eslint/experimental-utils@npm:4.28.0" +"@typescript-eslint/experimental-utils@npm:4.28.1, @typescript-eslint/experimental-utils@npm:^4.0.1": + version: 4.28.1 + resolution: "@typescript-eslint/experimental-utils@npm:4.28.1" dependencies: "@types/json-schema": ^7.0.7 - "@typescript-eslint/scope-manager": 4.28.0 - "@typescript-eslint/types": 4.28.0 - "@typescript-eslint/typescript-estree": 4.28.0 + "@typescript-eslint/scope-manager": 4.28.1 + "@typescript-eslint/types": 4.28.1 + "@typescript-eslint/typescript-estree": 4.28.1 eslint-scope: ^5.1.1 eslint-utils: ^3.0.0 peerDependencies: eslint: "*" - checksum: 05fe66bc35a16f162cc04c25eb2f705a7239d866e4e340e66d0b2d6da4e0faf3f72dc485bd4d8f934fd1b117b4bd7f4ee7e7c5d7ff53bc1c13a3fcbc61518846 - languageName: node - linkType: hard - -"@typescript-eslint/experimental-utils@npm:^4.0.1": - version: 4.18.0 - resolution: "@typescript-eslint/experimental-utils@npm:4.18.0" - dependencies: - "@types/json-schema": ^7.0.3 - "@typescript-eslint/scope-manager": 4.18.0 - "@typescript-eslint/types": 4.18.0 - "@typescript-eslint/typescript-estree": 4.18.0 - eslint-scope: ^5.0.0 - eslint-utils: ^2.0.0 - peerDependencies: - eslint: "*" - checksum: 1f1357b38aa6e1dc9088abec1c259372ff124be215644283df1725421c3faeeb90ca463c5e549247f10918d18031cd56b58b366d22a5c90e23f601826d1d7f3a + checksum: 8e10696825812dee45dc7fd0292eefd527c59886b9fb922dd2da49201da6b1746d4b48abfdc32c33c1489a4eb7409df56c7371c76e5ea723c4e6d99457ec98a0 languageName: node linkType: hard "@typescript-eslint/parser@npm:^4.28.0": - version: 4.28.0 - resolution: "@typescript-eslint/parser@npm:4.28.0" + version: 4.28.1 + resolution: "@typescript-eslint/parser@npm:4.28.1" dependencies: - "@typescript-eslint/scope-manager": 4.28.0 - "@typescript-eslint/types": 4.28.0 - "@typescript-eslint/typescript-estree": 4.28.0 + "@typescript-eslint/scope-manager": 4.28.1 + "@typescript-eslint/types": 4.28.1 + "@typescript-eslint/typescript-estree": 4.28.1 debug: ^4.3.1 peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: typescript: optional: true - checksum: c7132cc4930cd763acd0a5c751c2e7fef9aedee9c93a4ee0f1d1b40f19439b3567f1b32edca97dcce00a26da6d90ddf4c7b77ad1f9183ad73a2364b48270f5a4 + checksum: ab7c7fef7477cd1506041cba0ba36ad003c74214f8a96836a742309cc471b12979b622edf98915b0fad45a257466b291ca9924ae5c7b38316a5fd23d1d634070 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:4.18.0": - version: 4.18.0 - resolution: "@typescript-eslint/scope-manager@npm:4.18.0" +"@typescript-eslint/scope-manager@npm:4.28.1": + version: 4.28.1 + resolution: "@typescript-eslint/scope-manager@npm:4.28.1" dependencies: - "@typescript-eslint/types": 4.18.0 - "@typescript-eslint/visitor-keys": 4.18.0 - checksum: c543d4bf73ad0193cca7303c376f15b099ee861be492a210cfc19909d2ec828b7dc898a59e17c89cc91e4cc2ea450731a83671d136cd995fb9b77f8a7db4d440 + "@typescript-eslint/types": 4.28.1 + "@typescript-eslint/visitor-keys": 4.28.1 + checksum: 2c2f4858f497bf01ba878fe5ec6181a1aa43a57750b52bef8b6e3c3ba65ea28f4209f4b794e8dec9b2f7b39c54a830d2004231bae2aa9e9b8d9a1623be4ce917 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:4.28.0": - version: 4.28.0 - resolution: "@typescript-eslint/scope-manager@npm:4.28.0" +"@typescript-eslint/types@npm:4.28.1": + version: 4.28.1 + resolution: "@typescript-eslint/types@npm:4.28.1" + checksum: 8748138865df0a167b6260158fcaa3fc26e3f442065168f762b63e64e7dff065a1175822df0e0ecd0d555cac2756472ae0de64b59ecbaee484be9c4c8409da90 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:4.28.1": + version: 4.28.1 + resolution: "@typescript-eslint/typescript-estree@npm:4.28.1" dependencies: - "@typescript-eslint/types": 4.28.0 - "@typescript-eslint/visitor-keys": 4.28.0 - checksum: 4b0ff18be095c5282eda9f55565d95e6273b54bcabc24a685ed0099c573127ab3773e93088613e286d9c365df7f9d57950a6d9b90c3494ac70e4bda423e7b12d - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:4.18.0": - version: 4.18.0 - resolution: "@typescript-eslint/types@npm:4.18.0" - checksum: 45d3df0c4993ceab017df2a4502bb2e3d9b21e6554997a539b88dfa5899c83bf6156a823d15eeb679e65dec15ab07ff371c6e5c09f98c166ed94f79a8223ffab - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:4.28.0": - version: 4.28.0 - resolution: "@typescript-eslint/types@npm:4.28.0" - checksum: 13e027c87f18d7b046e671f583f446683dfeadb3027d567b29879878dc34def188d983c9e89ca33532d2efaff69314fb45452c6e63fc248f2e297ccb319b2264 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:4.18.0": - version: 4.18.0 - resolution: "@typescript-eslint/typescript-estree@npm:4.18.0" - dependencies: - "@typescript-eslint/types": 4.18.0 - "@typescript-eslint/visitor-keys": 4.18.0 - debug: ^4.1.1 - globby: ^11.0.1 - is-glob: ^4.0.1 - semver: ^7.3.2 - tsutils: ^3.17.1 - peerDependenciesMeta: - typescript: - optional: true - checksum: b77e150d281d50aad89f915c05310b5f94fa2b1fc64eada20460d8a7f10c42d4c2a5ccffe185f128c965fc9bd209f77a0df8e1779af18b0a3a383241564ecc4b - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:4.28.0": - version: 4.28.0 - resolution: "@typescript-eslint/typescript-estree@npm:4.28.0" - dependencies: - "@typescript-eslint/types": 4.28.0 - "@typescript-eslint/visitor-keys": 4.28.0 + "@typescript-eslint/types": 4.28.1 + "@typescript-eslint/visitor-keys": 4.28.1 debug: ^4.3.1 globby: ^11.0.3 is-glob: ^4.0.1 @@ -1677,27 +1457,17 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 4994d349569e8bba31201346bf56bb18c0b5003958dc02eb1d3b6d3b36819dfbe1e96bb7b28e89bd001bc421660dd21ad69e8d0b1a1aa2ccfcefacd6b2e668d5 + checksum: 26dfe831a9d5b915c9c4e9c110c0c815ce3f8a9890e61ed46d187f967d3192047e793d7dc771f35cf6828a9f4b9ddf20f06b4f0418b3346fa11617facd1d1969 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:4.18.0": - version: 4.18.0 - resolution: "@typescript-eslint/visitor-keys@npm:4.18.0" +"@typescript-eslint/visitor-keys@npm:4.28.1": + version: 4.28.1 + resolution: "@typescript-eslint/visitor-keys@npm:4.28.1" dependencies: - "@typescript-eslint/types": 4.18.0 + "@typescript-eslint/types": 4.28.1 eslint-visitor-keys: ^2.0.0 - checksum: 654576d330531386773facffc715e213602721de8ca2f6268d71186a732975031954119fba414a4d502b4827b3941fae068ebb4368b4b7f94e937597b3f57d82 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:4.28.0": - version: 4.28.0 - resolution: "@typescript-eslint/visitor-keys@npm:4.28.0" - dependencies: - "@typescript-eslint/types": 4.28.0 - eslint-visitor-keys: ^2.0.0 - checksum: 7b736df70b87c2232c68b59a4eb471eb9d74a69795b72df4b548fe51939676f123e6dba8d5aedf8ef64ec86b64759980b45434333771026a7c2020e68cc425e1 + checksum: 85c22a0374952a258cfbce3fb1802fc41545f4c97319a057c615b4c6c5cb9efa587e7574adc71d0fa7b35790b5d1d5e17580cc27d57f819627906acf292f810c languageName: node linkType: hard @@ -1751,15 +1521,15 @@ __metadata: linkType: hard "acorn@npm:^8.2.4": - version: 8.2.4 - resolution: "acorn@npm:8.2.4" + version: 8.4.1 + resolution: "acorn@npm:8.4.1" bin: acorn: bin/acorn - checksum: 6879266ea9ba4ece99afb4ab4f3ac6eaa3cf866cee40651ca90cde0b1fd5c6954d2006c54877c83287d5d38700327cbd6bda028b6fbb1daa346c7034f18147c2 + checksum: 37720df0ecd48baf87506aff228aedc7e73379df9e9309f0b89aaff18bb3d08af892d47c0f19d5ef1723066ca74157b00adcfea9a62b21a493c91babb7d22bc3 languageName: node linkType: hard -"agent-base@npm:6": +"agent-base@npm:6, agent-base@npm:^6.0.2": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: @@ -1768,6 +1538,17 @@ __metadata: languageName: node linkType: hard +"agentkeepalive@npm:^4.1.3": + version: 4.1.4 + resolution: "agentkeepalive@npm:4.1.4" + dependencies: + debug: ^4.1.0 + depd: ^1.1.2 + humanize-ms: ^1.2.1 + checksum: c58f69d05ccf3943e70d458d0dfceacc0f85749743573f843075ec93948302801e7ef43436f6c70d0ed2d12f70f1b6c061eac5a3018513f850b839533dbcef0e + languageName: node + linkType: hard + "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" @@ -1778,7 +1559,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4": +"ajv@npm:^6.10.0, ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -1791,14 +1572,14 @@ __metadata: linkType: hard "ajv@npm:^8.0.1": - version: 8.5.0 - resolution: "ajv@npm:8.5.0" + version: 8.6.0 + resolution: "ajv@npm:8.6.0" dependencies: fast-deep-equal: ^3.1.1 json-schema-traverse: ^1.0.0 require-from-string: ^2.0.2 uri-js: ^4.2.2 - checksum: 91274ac6627004c68467e8a05643b448d5581e77218c0331527d080c494cd24b5713c662ad8632fb2e46cbe5c9475aa73c8385ed59fa44b5813ff1c5e7b066c8 + checksum: 4eed9ee72e752d34a99541d04a608030db17735672ec334563b7cbc5936cb879a394e8f75789174690c7cd58ec2610c8363cb7480c23c15a9ca4424911cd683d languageName: node linkType: hard @@ -1819,11 +1600,11 @@ __metadata: linkType: hard "ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": - version: 4.3.1 - resolution: "ansi-escapes@npm:4.3.1" + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" dependencies: - type-fest: ^0.11.0 - checksum: bcb39e57bd32af0236c4ded96aaf8ef5d86c5a4683762b0be998c68cd11d5afd93296f4b5e087a3557da82a899b7c4d081483d603a4d4647e6a6613bf1aded8a + type-fest: ^0.21.3 + checksum: eca4d4e15b214376b04c8ce16d75adcfdcf706c38d682474d84d007f792d2f0f2f217b613ed3e7545fa0ad9f1d815ccd2a942c6b1d3156fff01b00652090fcb8 languageName: node linkType: hard @@ -1907,16 +1688,6 @@ __metadata: linkType: hard "anymatch@npm:^3.0.3": - version: 3.1.1 - resolution: "anymatch@npm:3.1.1" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: cf61bbaf7f34d9f94dd966230b7a7f8f1f24e3e2185540741a2561118e108206d85101ee2fc9876cd756475dbe6573d84d91115c3abdbf53a64e26a5f1f06b67 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": version: 3.1.2 resolution: "anymatch@npm:3.1.2" dependencies: @@ -2065,22 +1836,6 @@ __metadata: languageName: node linkType: hard -"asn1@npm:~0.2.3": - version: 0.2.4 - resolution: "asn1@npm:0.2.4" - dependencies: - safer-buffer: ~2.1.0 - checksum: 5743ace942e2faa0b72f3b14bf1826509c5ca707ea150c10520f52b04f90aa715cee4370ec2e6279ce1ceb7d3c472ca33270124e90b495bea4c9b02f41b9d8ac - languageName: node - linkType: hard - -"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": - version: 1.0.0 - resolution: "assert-plus@npm:1.0.0" - checksum: 1bda24f67343ccb75a7eee31179c92cf9f79bd6f6bc24101b0ce1495ef979376dd9b0f9b9064812bba564cdade5fbf851ed76b4a44b5e141d49cdaee6ffed6b2 - languageName: node - linkType: hard - "assign-symbols@npm:^1.0.0": version: 1.0.0 resolution: "assign-symbols@npm:1.0.0" @@ -2139,35 +1894,21 @@ __metadata: languageName: node linkType: hard -"aws-sign2@npm:~0.7.0": - version: 0.7.0 - resolution: "aws-sign2@npm:0.7.0" - checksum: 7162b9b8fbd4cf451bd889b0ed27fc895f88e6a6cb5c5609de49759ea1a6e31646f86ca8e18d90bea0455c4caa466fc9692c1098a1784d2372a358cb68c1eea6 - languageName: node - linkType: hard - -"aws4@npm:^1.8.0": - version: 1.11.0 - resolution: "aws4@npm:1.11.0" - checksum: d30dce2b73839974894d8283a06c53e8374b74d643d3b08340d84c364e01158be011fcfd1a88f8462be946d69055313a3038202f2eafd155b039aaab3549ba21 - languageName: node - linkType: hard - -"babel-jest@npm:^27.0.5": - version: 27.0.5 - resolution: "babel-jest@npm:27.0.5" +"babel-jest@npm:^27.0.6": + version: 27.0.6 + resolution: "babel-jest@npm:27.0.6" dependencies: - "@jest/transform": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/transform": ^27.0.6 + "@jest/types": ^27.0.6 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^27.0.1 + babel-preset-jest: ^27.0.6 chalk: ^4.0.0 graceful-fs: ^4.2.4 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: c4f6fac6203092786bcec80e729b912614dc5ee22c862514c9924d1f96f262576aacafeed4dbf79e6264af69a597232caddda2767c09ade13d8a422852b19464 + checksum: 49a9c0e4f0bb6126c3448c8d2316d0a98a8bec49e62f890dc11a8c8f9e0554f1f812f88457a550c8c421d417f96808889123ed880edc2b1a49ad2264b083b395 languageName: node linkType: hard @@ -2184,15 +1925,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^27.0.1": - version: 27.0.1 - resolution: "babel-plugin-jest-hoist@npm:27.0.1" +"babel-plugin-jest-hoist@npm:^27.0.6": + version: 27.0.6 + resolution: "babel-plugin-jest-hoist@npm:27.0.6" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.0.0 "@types/babel__traverse": ^7.0.6 - checksum: d8c17b65b484e6534de2af411268292b463a6a1d98f02f3cf735100401862cbf3e487f9b84e288aac1dcedfe413fed1f5e7ac9b00d3ef7e655a83079fd9ff27f + checksum: e827ace2c517577c50ebc7d062161885de7419172e044ca3709fa245806d94f72e93c4614649b1ba9a083fa3648f9c830d3bc4ff823e452d7f70e577282ff14e languageName: node linkType: hard @@ -2218,15 +1959,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^27.0.1": - version: 27.0.1 - resolution: "babel-preset-jest@npm:27.0.1" +"babel-preset-jest@npm:^27.0.6": + version: 27.0.6 + resolution: "babel-preset-jest@npm:27.0.6" dependencies: - babel-plugin-jest-hoist: ^27.0.1 + babel-plugin-jest-hoist: ^27.0.6 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 46a36c790f9158d60953f64fffbeaf82bf27e306003db519121cfc15fe02d6ae6c676d39d75055a594927a9eabdf2fe678a39f3b3dd5709f3009e2d0c591dc95 + checksum: db64161f1dc95c6b81a91dab3a1c24da79b9fa66dc65223f0bc72d23aa8e0af6d46492eed02e094fd099806036f0711066c4a843ef9223909e757c4be4d19895 languageName: node linkType: hard @@ -2247,10 +1988,24 @@ __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" - checksum: f515a605fe1b59f476f7477c5e1d53ad55b4f42982fca1d57b6701906f4ad1f1ac90fd6587d92cc1af2edb43eecf979214dd847ee410a6de9db4ebf0dd128d62 + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 690643f3009a04289ac401079de5a780aae452f7625fb2884051cc847b231e6521ee15dd6430b066d3cf4bd8bb00bb7ff55b7d134f34b8f0b8c043806796f94e + 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 @@ -2269,15 +2024,6 @@ __metadata: languageName: node linkType: hard -"bcrypt-pbkdf@npm:^1.0.0": - version: 1.0.2 - resolution: "bcrypt-pbkdf@npm:1.0.2" - dependencies: - tweetnacl: ^0.14.3 - checksum: 3f57eb99bbc02352f68ff31e446997f4d21cc9a5e5286449dc1fe0116ec5dac5a4aa538967d45714fa9320312d2be8d16126f2d357da1dd40a3d546b96e097ed - languageName: node - linkType: hard - "binary-extensions@npm:^1.0.0": version: 1.13.1 resolution: "binary-extensions@npm:1.13.1" @@ -2285,13 +2031,6 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: 0f5f5685f344b035c4f98d06fa288962d262294a1441c1481ac99e895037bde971ebe6e09a4bd8aa18ab2525bfc00b1ad4af71dbf9e933a72e0df6919706a728 - languageName: node - linkType: hard - "bindings@npm:^1.5.0": version: 1.5.0 resolution: "bindings@npm:1.5.0" @@ -2329,7 +2068,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.1, braces@npm:~3.0.2": +"braces@npm:^3.0.1": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -2345,21 +2084,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.14.5": - version: 4.16.3 - resolution: "browserslist@npm:4.16.3" - dependencies: - caniuse-lite: ^1.0.30001181 - colorette: ^1.2.1 - electron-to-chromium: ^1.3.649 - escalade: ^3.1.1 - node-releases: ^1.1.70 - bin: - browserslist: cli.js - checksum: dfab0d3c3d9a3517cf3f8a274bc4e8245f3a02c1a5ae2a0e01498273d363952d11ee09fdce3b0ce551f6cab9d619ed2d9facf7b6471c9190df949a5ad39665c5 - languageName: node - linkType: hard - "browserslist@npm:^4.16.6": version: 4.16.6 resolution: "browserslist@npm:4.16.6" @@ -2414,6 +2138,31 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^15.0.5": + version: 15.2.0 + resolution: "cacache@npm:15.2.0" + dependencies: + "@npmcli/move-file": ^1.0.1 + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + glob: ^7.1.4 + infer-owner: ^1.0.4 + lru-cache: ^6.0.0 + minipass: ^3.1.1 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.2 + mkdirp: ^1.0.3 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^8.0.1 + tar: ^6.0.2 + unique-filename: ^1.1.1 + checksum: e7d6a93c34a409abb6050e4e09a103e859f0b53f592772a714e9e828f735cee8974cb36bd3e2d08fd78c2198d6d4b6005d0f1b3974e891a2ea4bd0ef02c80593 + languageName: node + linkType: hard + "cache-base@npm:^1.0.1": version: 1.0.1 resolution: "cache-base@npm:1.0.1" @@ -2469,24 +2218,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001181": - version: 1.0.30001192 - resolution: "caniuse-lite@npm:1.0.30001192" - checksum: d2e3bc901b0cde3cd4522fa7f813565a4559284648b5c54f1049e6f991fc55d7d93b907e739270516e0207dd09b7c2ed8b8ca4469dceeb515eb1ec09798dff16 - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001219": - version: 1.0.30001230 - resolution: "caniuse-lite@npm:1.0.30001230" - checksum: bb319bedf33722a2d16e28a7e0d13fabde59be4fccd48d80939254228c7a49059b74bd99b313596f75c997480f9097cc3e7cda7c7687e5a096bb9c75260c145d - languageName: node - linkType: hard - -"caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: 147f48bff9bebf029d7050e2335da3f8d295f26d157edf08d8c3282c804dae04a462c4cd6efa8179755686aa3aeaca5c28f3e7f3559698bc0484c65e46c36c5b + version: 1.0.30001241 + resolution: "caniuse-lite@npm:1.0.30001241" + checksum: 41d5c6073852771901e58b30d1be7ecb708f0c154191171ed0c14b988ebdd5fecd158c5f7cdd46e08cfa4fe6a2fde281795f1796236e96ba9355c621d73c8e87 languageName: node linkType: hard @@ -2501,17 +2236,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0": - version: 4.1.0 - resolution: "chalk@npm:4.1.0" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: f860285b419f9e925c2db0f45ffa88aa8794c14b80cc5d01ff30930bcfc384996606362706f0829cf557f6d36152a5fb2d227ad63c4bc90e2ec9e9dbed4a3c07 - languageName: node - linkType: hard - -"chalk@npm:^4.1.1": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": version: 4.1.1 resolution: "chalk@npm:4.1.1" dependencies: @@ -2528,26 +2253,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:>=2.0.0 <4.0.0": - version: 3.5.2 - resolution: "chokidar@npm:3.5.2" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 - dependenciesMeta: - fsevents: - optional: true - checksum: 52fbff3acebf06ec0125872110f6c8403e66cd3d613264c83405496e199554d99380342d9b3a7ffd7910c53c5865e242ed7dd72fcb2e883d8e3ad3f3883aee6c - languageName: node - linkType: hard - -"chokidar@npm:^2.0.0": +"chokidar@npm:>=2.0.0 <4.0.0, chokidar@npm:^2.0.0": version: 2.1.8 resolution: "chokidar@npm:2.1.8" dependencies: @@ -2766,14 +2472,14 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^1.2.1, colorette@npm:^1.2.2": +"colorette@npm:^1.2.2": version: 1.2.2 resolution: "colorette@npm:1.2.2" checksum: e240f0c94b8d9f34b52bd17b50fc13a3b74f9e662edeaa2b0c65e06ec6b1fc6367fb42b834ec5a1d819d68b74a3d850f3bd3e284f9e614d6c4ffa122f83c6ec5 languageName: node linkType: hard -"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": +"combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -2796,7 +2502,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 @@ -2830,11 +2536,11 @@ __metadata: linkType: hard "convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.7.0 - resolution: "convert-source-map@npm:1.7.0" + version: 1.8.0 + resolution: "convert-source-map@npm:1.8.0" dependencies: safe-buffer: ~5.1.1 - checksum: b10fbf041e3221c65e1ab67f05c8fcbad9c5fd078c62f4a6e05cb5fddc4b5a0e8a17c6a361c6a44f011b1a0c090b36aa88543be9dfa65da8c9e7f39c5de2d4df + checksum: 09eeb0b4dcc04e26c89a17f08b835a84c9024715dc839c07cff43e87e155011f6837571997bffed64de54832823c5e3931b54b211a369d379efc392a739bc972 languageName: node linkType: hard @@ -2846,16 +2552,16 @@ __metadata: linkType: hard "copy-props@npm:^2.0.1": - version: 2.0.4 - resolution: "copy-props@npm:2.0.4" + version: 2.0.5 + resolution: "copy-props@npm:2.0.5" dependencies: - each-props: ^1.3.0 - is-plain-object: ^2.0.1 - checksum: 6e6d169003c97e2a7cd10fc57df37b00e80fcb14c9dc45fda5adaa150b6f0380b966b85b28d25cd0329764e507530292bc17832f8432d1c2238c6a13320b5a6c + each-props: ^1.3.2 + is-plain-object: ^5.0.0 + checksum: 7bd23ced9dbcb3ccb1b7dec7eee199d41ef45f754bd340843a6284bd759277395df464baf74ded9c233edd2db3ff18788fe059fb2b58d51cf33964cb66c10734 languageName: node linkType: hard -"core-util-is@npm:1.0.2, core-util-is@npm:~1.0.0": +"core-util-is@npm:~1.0.0": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" checksum: 089015ee3c462dfceba70faa1df83b42a7bb35db26dae6af283247b06fe3216c65fccd9f00eebcaf98300dc31e981d56aae9f90b624f8f6ff1153e235ff88b65 @@ -2919,15 +2625,6 @@ __metadata: languageName: node linkType: hard -"dashdash@npm:^1.12.0": - version: 1.14.1 - resolution: "dashdash@npm:1.14.1" - dependencies: - assert-plus: ^1.0.0 - checksum: 5959409ee42dc4bdbf3fa384b801ece580ca336658bb0342ffab0099b3fc6bf9b3e239e1b82dcc4fcaeee315353e08f2eae47b0928a6a579391598c44958afa1 - languageName: node - linkType: hard - "data-urls@npm:^2.0.0": version: 2.0.0 resolution: "data-urls@npm:2.0.0" @@ -2939,15 +2636,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.1": - version: 4.3.2 - resolution: "debug@npm:4.3.2" +"debug@npm:4, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1": + version: 4.3.1 + resolution: "debug@npm:4.3.1" dependencies: ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true - checksum: 5543570879e2274f6725d4285a034d6e0822d35faefc6f55965933fb440e8c21eb3a0bef934e66f4b6b491f898ee2de37cab980e9d4fd61372136c19d3ce4527 + checksum: 0d41ba5177510e8b388dfd7df143ab0f9312e4abdaba312595461511dac88e9ef8101939d33b4e6d37e10341af6a5301082e4d7d6f3deb4d57bc05fc7d296fad languageName: node linkType: hard @@ -2960,15 +2657,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1": - version: 4.3.1 - resolution: "debug@npm:4.3.1" +"debug@npm:~4.3.1": + version: 4.3.2 + resolution: "debug@npm:4.3.2" dependencies: ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true - checksum: 0d41ba5177510e8b388dfd7df143ab0f9312e4abdaba312595461511dac88e9ef8101939d33b4e6d37e10341af6a5301082e4d7d6f3deb4d57bc05fc7d296fad + checksum: 5543570879e2274f6725d4285a034d6e0822d35faefc6f55965933fb440e8c21eb3a0bef934e66f4b6b491f898ee2de37cab980e9d4fd61372136c19d3ce4527 languageName: node linkType: hard @@ -2980,9 +2677,9 @@ __metadata: linkType: hard "decimal.js@npm:^10.2.1": - version: 10.2.1 - resolution: "decimal.js@npm:10.2.1" - checksum: ba28b27bb8aca6bbb73fbdb51d759961d9ff82218c4aa737b4f4826dee4244618a61c410201bb152950c4915e3d82a86211d1c2a4e23f805ee577574ba115e59 + version: 10.3.1 + resolution: "decimal.js@npm:10.3.1" + checksum: e042c676c7a934e5a2c4e02f2562e0e0d752c6cd8f933f4030f8540dd4c7074ba035e329df46c0cc46f0c9190d1804c366d0be46ea6f94af64e0096d2730b22b languageName: node linkType: hard @@ -3081,6 +2778,13 @@ __metadata: languageName: node linkType: hard +"depd@npm:^1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: f45566ff7019a346852f095768a380778ed544de24e103b479fd5d3e61982d670efbb5234c09d0588d7fdb09c26c48283d7150e4be5e6ce5d3d37cd268d75c4d + languageName: node + linkType: hard + "detect-file@npm:^1.0.0": version: 1.0.0 resolution: "detect-file@npm:1.0.0" @@ -3102,10 +2806,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^27.0.1": - version: 27.0.1 - resolution: "diff-sequences@npm:27.0.1" - checksum: 7dc8775043a368d94c2b7c9e4c06d6761275039a8304c8fc67ff9a8aa5f3c28c4932105e098968520ad3e5b8ce702cba126ed1e8c93499c6644142550153550f +"diff-sequences@npm:^27.0.6": + version: 27.0.6 + resolution: "diff-sequences@npm:27.0.6" + checksum: c2a10ecdf2d66a319e3f18f2d0b9cab6282631084c84825bdf65152743d515b6ea07ce2920b6fe7a1a5c6b9148708b23d53178d1f215b8f6d195dc44d1ed770f languageName: node linkType: hard @@ -3140,7 +2844,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": ^0.8.8-0 "@rollup/plugin-node-resolve": ^13.0.0 "@types/fs-extra": ^9.0.11 "@types/jest": ^26.0.23 @@ -3182,7 +2886,7 @@ __metadata: languageName: node linkType: hard -"each-props@npm:^1.3.0": +"each-props@npm:^1.3.2": version: 1.3.2 resolution: "each-props@npm:1.3.2" dependencies: @@ -3199,27 +2903,10 @@ __metadata: languageName: node linkType: hard -"ecc-jsbn@npm:~0.1.1": - version: 0.1.2 - resolution: "ecc-jsbn@npm:0.1.2" - dependencies: - jsbn: ~0.1.0 - safer-buffer: ^2.1.0 - checksum: 5b4dd05f24b2b94c1bb882488dba2b878bb5b83182669aa71fbdf53c6941618180cb226c4eb9a3e2fa51ad11f87b5edb0a7d7289cdef468ba2e6024542f73f07 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.3.649": - version: 1.3.675 - resolution: "electron-to-chromium@npm:1.3.675" - checksum: 32bc34084af5f6eb5e52500de8282302b0d19e85e93201e4544f91520d80cc262ccdcc800d23a67b9995e9abb59a82d3dfb31313388e4d2c50bf6838f9ddcfc5 - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.3.723": - version: 1.3.742 - resolution: "electron-to-chromium@npm:1.3.742" - checksum: 77bb203bb37180da8f6bc3dd566bb683d24115b11b7c364e054365347ba3449d2b8b525da83f3620ddb79da74af3c42904676662e442786e963551c73c067a56 + version: 1.3.762 + resolution: "electron-to-chromium@npm:1.3.762" + checksum: 5736ae1425bda96fa05d52a9b66d37d3786ceece26ee64deeb93dc0d66f87ae125888bfea60b3972d9683949553694344ef8dbf6808d946b44daff55ae2c8762 languageName: node linkType: hard @@ -3237,6 +2924,15 @@ __metadata: languageName: node linkType: hard +"encoding@npm:^0.1.12": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: 282d5696a4916383b0f71a87375505e33ef0be0c3a30939fb559a878b691873d48acc61ee6dcbfacf3e68404ab4462e081bcfd0aa3c9a3f1fabb900306aad77d + languageName: node + linkType: hard + "end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" @@ -3246,6 +2942,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" @@ -3256,9 +2978,16 @@ __metadata: linkType: hard "env-paths@npm:^2.2.0": - version: 2.2.0 - resolution: "env-paths@npm:2.2.0" - checksum: 09de4fd1c068d5965aa8aede852a764b7fb6fa8f1299ba7789bc29c22840ab1985e0c9c55bc6bf40b4276834b8adfa1baf82ec9bc58445d9e75800dc32d78a4f + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 9579868bc73526de31682625d89aa08c83f3c87850218f9251f953bf4242428a1020e75cb201ca16b42f2874c3ca175ffc8aa47a88423b546711b7dbf86f79a8 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 14e09e9990bcd0dd8e91881bf6e0ac6177b9cd72404951e443e8052f6272f276dbe1f3a34c7802fd6dee5276b34134b091665e18cebc9e1ce0a4519561f16c44 languageName: node linkType: hard @@ -3410,7 +3139,7 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^5.0.0, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:^5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -3420,7 +3149,7 @@ __metadata: languageName: node linkType: hard -"eslint-utils@npm:^2.0.0, eslint-utils@npm:^2.1.0": +"eslint-utils@npm:^2.1.0": version: 2.1.0 resolution: "eslint-utils@npm:2.1.0" dependencies: @@ -3448,9 +3177,9 @@ __metadata: linkType: hard "eslint-visitor-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-visitor-keys@npm:2.0.0" - checksum: 429dabdcab3c1cf5e65d44843afc513398d4ee32a37f93edc93bb5ba59a12b78fa67d87ff23c752c170b5e4f9085050f45b3c036cdfb23d40a724f2614048140 + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 75eaae9006f5bcb9d1e09641719b840b83c4758f5f25bc06a0e94918d78658d0f19691bdc2e3b100604d0fe2d1eb94a2aab287ba24ad2f02f87cacdccb86c2e4 languageName: node linkType: hard @@ -3585,8 +3314,8 @@ __metadata: linkType: hard "execa@npm:^5.0.0": - version: 5.0.0 - resolution: "execa@npm:5.0.0" + version: 5.1.1 + resolution: "execa@npm:5.1.1" dependencies: cross-spawn: ^7.0.3 get-stream: ^6.0.0 @@ -3597,7 +3326,7 @@ __metadata: onetime: ^5.1.2 signal-exit: ^3.0.3 strip-final-newline: ^2.0.0 - checksum: bf9664702c981ae922ce465bc60d9bfd583e9ad47ab1a89168665e1fb330cc72f7080fda606bac85454bdc341198f454072018e616f0d03aa1e4b671ef04b94e + checksum: 4286ade8cdb267bfb982bddbf894a58df29ff4f3bb871252a4832c4608e485dd71e5a8bbfde9f95d7db4af864f5de1aa6a1780017217bd946a16409b8e022987 languageName: node linkType: hard @@ -3632,17 +3361,17 @@ __metadata: languageName: node linkType: hard -"expect@npm:^27.0.2": - version: 27.0.2 - resolution: "expect@npm:27.0.2" +"expect@npm:^27.0.6": + version: 27.0.6 + resolution: "expect@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 ansi-styles: ^5.0.0 - jest-get-type: ^27.0.1 - jest-matcher-utils: ^27.0.2 - jest-message-util: ^27.0.2 - jest-regex-util: ^27.0.1 - checksum: 7a2bc046598801e5edefc03699c8ebf457acff3affb68708a11c7f5c064bbd4582cd44bb90fe4045c73b04d57f18c6435e94f893f213d03f3271de620d6e23ea + jest-get-type: ^27.0.6 + jest-matcher-utils: ^27.0.6 + jest-message-util: ^27.0.6 + jest-regex-util: ^27.0.6 + checksum: 99398247fc08d614ad6f59787355173d17a22d33e402eecb72f55bc655281a117f333380b47b49a35db1bf1aa40d2a3072fbaa23accadea3e6ce8071c3579ef3 languageName: node linkType: hard @@ -3674,7 +3403,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.0, extend@npm:~3.0.2": +"extend@npm:^3.0.0": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: 1406da1f0c4b00b839497e4cdd0ec4303ce2ae349144b7c28064a5073c93ce8c08da4e8fb1bc5cb459ffcdff30a35fc0fe54344eb88320e70100c1baea6f195c @@ -3697,13 +3426,6 @@ __metadata: languageName: node linkType: hard -"extsprintf@npm:1.3.0, extsprintf@npm:^1.2.0": - version: 1.3.0 - resolution: "extsprintf@npm:1.3.0" - checksum: 892efd56aa9b27cbfbca42ad0c59308633f66000e71d1fb19c6989ea7309b32f3ff281778871bd2ce9bc7f3ad02515aa2783cea0323d0f6ff840b7c6a6a4603e - languageName: node - linkType: hard - "fancy-log@npm:^1.3.2": version: 1.3.3 resolution: "fancy-log@npm:1.3.3" @@ -3731,16 +3453,15 @@ __metadata: linkType: hard "fast-glob@npm:^3.1.1": - version: 3.2.5 - resolution: "fast-glob@npm:3.2.5" + version: 3.2.6 + resolution: "fast-glob@npm:3.2.6" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.0 + glob-parent: ^5.1.2 merge2: ^1.3.0 - micromatch: ^4.0.2 - picomatch: ^2.2.1 - checksum: 1a33c4a68d14cb2314c07a451689bc311bde87b09c525dd2064321165127a38a553457d121e2d3ecdd022374e3d53afb82cbb57f5694414d3406ce14ed6c0a1f + micromatch: ^4.0.4 + checksum: 0ba488ef503d250e1881bad5d01bc1393d6ca5b1243d354c9a2c8ec2b36771179b11f3e2d4e607a454aac8f9bb29682f0c0208f6cc87b6975bb82067a54960b2 languageName: node linkType: hard @@ -3938,13 +3659,6 @@ __metadata: languageName: node linkType: hard -"forever-agent@npm:~0.6.1": - version: 0.6.1 - resolution: "forever-agent@npm:0.6.1" - checksum: 9cc0054dd4ea5fc26e014b8c929d1fb9247e931e81165cbd965a712061d65fb84791b2124f64cd79492e516662b94068d29fe1d824732382237321b3f61955fe - languageName: node - linkType: hard - "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -3956,17 +3670,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 862e686b105634222db77138d5f5ae08ba85f88c04925de5be86b2b9d03cf671d86566ad10f1dd5217634c0f1634069dfc1a663a1cc13e8fbac0ce8f670ad070 - languageName: node - linkType: hard - "fragment-cache@npm:^0.2.1": version: 0.2.1 resolution: "fragment-cache@npm:0.2.1" @@ -4152,15 +3855,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"getpass@npm:^0.1.1": - version: 0.1.7 - resolution: "getpass@npm:0.1.7" - dependencies: - assert-plus: ^1.0.0 - checksum: 2650725bc6939616da8432e5351ca87d8b29421bb8dc19c21bad2c37cd337d2a50d36fcc398ce0c16a075f6079afe114131780dca7e2f4b96063e53e7d28fd7a - languageName: node - linkType: hard - "glob-parent@npm:^3.1.0": version: 3.1.0 resolution: "glob-parent@npm:3.1.0" @@ -4171,16 +3865,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"glob-parent@npm:^5.1.0": - version: 5.1.1 - resolution: "glob-parent@npm:5.1.1" - dependencies: - is-glob: ^4.0.1 - checksum: 2af6e196fba4071fb07ba261366e446ba2b320e6db0a2069cf8e12117c5811abc6721f08546148048882d01120df47e56aa5a965517a6e5ba19bfeb792655119 - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": +"glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -4223,8 +3908,8 @@ fsevents@^1.2.7: linkType: hard "glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.1.6 - resolution: "glob@npm:7.1.6" + version: 7.1.7 + resolution: "glob@npm:7.1.7" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 @@ -4232,7 +3917,7 @@ fsevents@^1.2.7: minimatch: ^3.0.4 once: ^1.3.0 path-is-absolute: ^1.0.0 - checksum: 789977b52432865bd63846da5c75a6efc2c56abdc0cb5ffcdb8e91eeb67a58fa5594c1195d18b2b4aff99675b0739ed6bd61024b26562e0cca18c8f993efdc82 + checksum: 352f74f08247db5420161a2f68f2bd84b53228b5fcfc9dcc37cd54d3f19ec0232495d84aeff1286d0727059e9fdc1031400e00b971bdc59e30f8f82b199c9d02 languageName: node linkType: hard @@ -4267,16 +3952,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"globals@npm:^13.6.0": - version: 13.6.0 - resolution: "globals@npm:13.6.0" - dependencies: - type-fest: ^0.20.2 - checksum: 0322d9c1b210be233060aa79592bc65c45572237be8dbedabf830dbd70120ac21f8721309a396782463e60c4cc0b92a6476a348b4b13e481f35e361195328b8e - languageName: node - linkType: hard - -"globals@npm:^13.9.0": +"globals@npm:^13.6.0, globals@npm:^13.9.0": version: 13.9.0 resolution: "globals@npm:13.9.0" dependencies: @@ -4285,23 +3961,9 @@ fsevents@^1.2.7: languageName: node linkType: hard -"globby@npm:^11.0.1": - version: 11.0.2 - resolution: "globby@npm:11.0.2" - dependencies: - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.1.1 - ignore: ^5.1.4 - merge2: ^1.3.0 - slash: ^3.0.0 - checksum: d23f2a6b8897b97fb27422cde243e0fd406ebbaa821929293b27c977d169884f8112494cda4f456a51d0ec1e133e3ac703ec24bfed484e327305ea34a665eb06 - languageName: node - linkType: hard - "globby@npm:^11.0.3": - version: 11.0.3 - resolution: "globby@npm:11.0.3" + version: 11.0.4 + resolution: "globby@npm:11.0.4" dependencies: array-union: ^2.1.0 dir-glob: ^3.0.1 @@ -4309,7 +3971,7 @@ fsevents@^1.2.7: ignore: ^5.1.4 merge2: ^1.3.0 slash: ^3.0.0 - checksum: f17da0f869918656ec8c16c15ad100f025fbd13e4c157286cf340811eb1355a7d06dde77be1685a7a051970ec6abeff96a9b2a1a97525f84bc94fbd518c1d1db + checksum: 9f365b35b835c0235880e272fa2a2f5d9d78428e09af8dfc67536f1047953e7b0c66aab9bb6d41e6c0f4c3ec75a22840d9acb892f102daecaadd338b2c763219 languageName: node linkType: hard @@ -4322,7 +3984,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"graceful-fs@npm:^4.0.0, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.3, graceful-fs@npm:^4.2.4": +"graceful-fs@npm:^4.0.0, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.6 resolution: "graceful-fs@npm:4.2.6" checksum: 84d39c7756892553da990a9db7e45f844b3309b37b5a00174cbb4748476f2250c54f24594d4d252f64f085c65c2fdac7c809419bf6d55f0e6e42eb07ac0f5bf2 @@ -4395,9 +4057,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,24 +4071,14 @@ fsevents@^1.2.7: optional: true bin: handlebars: bin/handlebars - checksum: 50276715da3e410f1d485635029b77e09b8c9244d9e49119d5f39ed978a3d44ce94f5d6120efeb707da0ba9dd0cddf140d8d2ac160721d93aa9f4234474ad318 + checksum: 2df9a6b422e2ccc0b7ca53f7a1f9915b47d19bf3fd372824a87e2a28b7952fa2cb3348cbe33a87ef49ee04f42d10359aab44819ca8d680ee3a5b53d48bd062a1 languageName: node linkType: hard -"har-schema@npm:^2.0.0": - version: 2.0.0 - resolution: "har-schema@npm:2.0.0" - checksum: e27ac33a968b8a3b2cc32e53afaec8aa795d08b058ef9b09b3bbce74db7ecadcabf60a6186e3bb901335d2c72bbf9e2af59429d736b5e80dc0edf18b3e1c5860 - languageName: node - linkType: hard - -"har-validator@npm:~5.1.3": - version: 5.1.5 - resolution: "har-validator@npm:5.1.5" - dependencies: - ajv: ^6.12.3 - har-schema: ^2.0.0 - checksum: 01b905cdaa7632c926a962c8127a77b98387935ef3aa0b44dae871eae2592ba6da948a3bdbb3eeceb90fa1599300f16716e50147965a7ea7c4e7c4e57ac69727 +"has-cors@npm:1.1.0": + version: 1.1.0 + resolution: "has-cors@npm:1.1.0" + checksum: c8257cbe3fc1c2f49d293879f0c6873c6fa7ba7be44147f9a9023cc421c7842833c3553f46bdc04459f046c1c74eb9c7a98e63fdd2c7713caaddd26b1b7f9043 languageName: node linkType: hard @@ -4445,9 +4097,9 @@ fsevents@^1.2.7: linkType: hard "has-symbols@npm:^1.0.1": - version: 1.0.1 - resolution: "has-symbols@npm:1.0.1" - checksum: 84e2a03ada6f530f0c1ebea64df5932556ac20a4b78998f1f2b5dd0cf736843e8082c488b0ea7f08b9aec72fb6d8b736beed2fd62fac60dcaebfdc0b8d2aa7ac + version: 1.0.2 + resolution: "has-symbols@npm:1.0.2" + checksum: 1b73928752fa9ca993fa48f7b3832c95ea408c0ec635b2d6cbaf011b94a7e6a704a9254ae6d8ecc913d4dd92f2ff760dc43aad7c7e790ddb3f627005614d8e28 languageName: node linkType: hard @@ -4516,9 +4168,9 @@ fsevents@^1.2.7: linkType: hard "hosted-git-info@npm:^2.1.4": - version: 2.8.8 - resolution: "hosted-git-info@npm:2.8.8" - checksum: 3ecc389dc6ecbd5463fada7e04461e96f3c817fe2f989ca41e9dd3b503745a0bfa26fba405861b2831ca64edc1abc5d2fbc97ee977303f89650dac4fbfdc2d7a + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: cf4dfac9b94aa601ae889e7e3cb5a7021a8517b517f933fec0b3a8dc5002edece01475c82f70cc18a051a5a8105bcb2fbe4e64f0b8f321eb99054a49a75b5aa3 languageName: node linkType: hard @@ -4538,6 +4190,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"http-cache-semantics@npm:^4.1.0": + version: 4.1.0 + resolution: "http-cache-semantics@npm:4.1.0" + checksum: 451df9784af2acbe0cc1fd70291285c08ca4a8966ab5ee4d3975e003d1ad4d74c81473086d628f31296b31221966fda8bc5ea1e29dd8f1f33f9fc2b0fdca65ca + languageName: node + linkType: hard + "http-proxy-agent@npm:^4.0.1": version: 4.0.1 resolution: "http-proxy-agent@npm:4.0.1" @@ -4549,17 +4208,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"http-signature@npm:~1.2.0": - version: 1.2.0 - resolution: "http-signature@npm:1.2.0" - dependencies: - assert-plus: ^1.0.0 - jsprim: ^1.2.2 - sshpk: ^1.7.0 - checksum: d28227eed37cb0dae0e76c46b2a5e611c678808433e5642238f17dba7f2c9c8f8d1646122d57ec1a110ecc7e8b9f5b7aa0462f1e2a5fa3b41f2fca5a69af7edf - languageName: node - linkType: hard - "https-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "https-proxy-agent@npm:5.0.0" @@ -4577,6 +4225,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 4a08769434132a229a6153e77c869a9fe7132dc003d90119d54958e7b75feb65a3c4eca19fb18921568878ac455b6f399013279ad33248d94bd61a25def1fdda + languageName: node + linkType: hard + "husky@npm:^6.0.0": version: 6.0.0 resolution: "husky@npm:6.0.0" @@ -4595,6 +4252,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 9b4f24db662b717340ae20ec9ebbaf0648b378a2d0fc64aef83c6bccdd9918b622216c020e177ddf2d02eeff8456a732e85b6d989eb2cd3a40519f3e179b273c + languageName: node + linkType: hard + "ignore@npm:^4.0.6": version: 4.0.6 resolution: "ignore@npm:4.0.6" @@ -4645,6 +4311,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 56aa1d87b05936947765b1d9ace5f8d7ccd8cf6ccc1d69b67e8eaaee0e1ee2960d5accd51deb50d884665a5a1af3bcbb80f5d249c01a00280365bba59db9687b + languageName: node + linkType: hard + "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -4683,6 +4356,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"ip@npm:^1.1.5": + version: 1.1.5 + resolution: "ip@npm:1.1.5" + checksum: 3ad007368cf797ec9b73fbac0a644077198dd85a128d0fe39697a78a9cdd47915577eee5c4eca9933549b575ac4716107896c2d4aa43a1622b3f72104232cad4 + languageName: node + linkType: hard + "is-absolute@npm:^1.0.0": version: 1.0.0 resolution: "is-absolute@npm:1.0.0" @@ -4727,15 +4407,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 49a1446a3cf3719e91a061f0e52add18fd065325c652c277519a2ad333440dc8b449076a893277a46940ef16f05a908716667ca8f986b28c677b9acb11e10a36 - languageName: node - linkType: hard - "is-buffer@npm:^1.1.5": version: 1.1.6 resolution: "is-buffer@npm:1.1.6" @@ -4755,11 +4426,11 @@ fsevents@^1.2.7: linkType: hard "is-core-module@npm:^2.2.0": - version: 2.2.0 - resolution: "is-core-module@npm:2.2.0" + version: 2.4.0 + resolution: "is-core-module@npm:2.4.0" dependencies: has: ^1.0.3 - checksum: 2344744de98a3bc22e2bb30895f307d7889f09e963f9bcb1cc321788f508c8b463f75e0a9ca009eeeb8eb9465181b5c15f1ec9299a6bb6921cfbb2423892e0ba + checksum: caa2b30873ed14dff76e5351e3c55a677b890cf19cc4263e9894702eb4bd64f81ce78552daad878ba72adcdc9e62cad45ca57928fc8b4bdc84a7ff8acf934389 languageName: node linkType: hard @@ -4865,7 +4536,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1": version: 4.0.1 resolution: "is-glob@npm:4.0.1" dependencies: @@ -4874,6 +4545,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 669ea37e8fafa800d076e7e7c64eadc9fd2a0607a3bc67e602d37092f2fec91c29929cdeec94e694607a88a2e0bdc7f8e122a9819dacadf05a9c5767c9672eb7 + languageName: node + linkType: hard + "is-module@npm:^1.0.0": version: 1.0.0 resolution: "is-module@npm:1.0.0" @@ -4927,6 +4605,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 92bd87f095036fb6ef21fcba4e66734bba1457fc4abece5873bd1fba130c44fa8a4df64a2ef7841da638680af18e1ad2e5fac1095bed3578d0da0afc1f04bcf3 + languageName: node + linkType: hard + "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" @@ -4957,7 +4642,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": +"is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" checksum: 4e21156e7360a5916eded35c5938adf6278299a8055640864eebb251e4351cd605beccddf9af27477e19f753d453412fe0c21379bb54b55cfdf5add263076959 @@ -5038,13 +4723,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"isstream@npm:~0.1.2": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 8e6e5c4cf1823562db7035d2e7bac388412060fe9bc6727eca8c608def5aa57709165c51c2e68a2fce6ff0b64d79489501b84715060c5e8a477b87b6cbcd1eca - languageName: node - linkType: hard - "istanbul-lib-coverage@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-coverage@npm:3.0.0" @@ -5096,58 +4774,58 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-changed-files@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-changed-files@npm:27.0.2" +"jest-changed-files@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-changed-files@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 execa: ^5.0.0 throat: ^6.0.1 - checksum: 75e77350a8bdcfa3cabfdd5b8014a7008fe2e93e63eea390faa4873cc1dd65de629db0dca87af24df9310b373b241af92a7eb7ba0567f13fada7480c331790c4 + checksum: 13230449a0ac72e5b9e13aa4c7dcb8be0001f73451977174ae443806455a193ba4ca4a9af312a20cc3e92825f2d20ffaa19423985052d4b7ef08cf988effb724 languageName: node linkType: hard -"jest-circus@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-circus@npm:27.0.5" +"jest-circus@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-circus@npm:27.0.6" dependencies: - "@jest/environment": ^27.0.5 - "@jest/test-result": ^27.0.2 - "@jest/types": ^27.0.2 + "@jest/environment": ^27.0.6 + "@jest/test-result": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 - expect: ^27.0.2 + expect: ^27.0.6 is-generator-fn: ^2.0.0 - jest-each: ^27.0.2 - jest-matcher-utils: ^27.0.2 - jest-message-util: ^27.0.2 - jest-runtime: ^27.0.5 - jest-snapshot: ^27.0.5 - jest-util: ^27.0.2 - pretty-format: ^27.0.2 + jest-each: ^27.0.6 + jest-matcher-utils: ^27.0.6 + jest-message-util: ^27.0.6 + jest-runtime: ^27.0.6 + jest-snapshot: ^27.0.6 + jest-util: ^27.0.6 + pretty-format: ^27.0.6 slash: ^3.0.0 stack-utils: ^2.0.3 throat: ^6.0.1 - checksum: 81531c0a4f91bbc66585292d198f6c45d09b08263c81955a4f5e91bc8e7e7b124b4fdab188f279303ea9a86927f3d4f02ed9cc42cbc0b7578aa12da76d75d1c4 + checksum: 89d71cef81fda584f3f3d7d9a3a85412711999f367938dc6aabdf6e16288f369e271b551c77da4f0c0490e5c375b337fbd5b36553522b47a778dce1acfcba220 languageName: node linkType: hard -"jest-cli@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-cli@npm:27.0.5" +"jest-cli@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-cli@npm:27.0.6" dependencies: - "@jest/core": ^27.0.5 - "@jest/test-result": ^27.0.2 - "@jest/types": ^27.0.2 + "@jest/core": ^27.0.6 + "@jest/test-result": ^27.0.6 + "@jest/types": ^27.0.6 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - jest-config: ^27.0.5 - jest-util: ^27.0.2 - jest-validate: ^27.0.2 + jest-config: ^27.0.6 + jest-util: ^27.0.6 + jest-validate: ^27.0.6 prompts: ^2.0.1 yargs: ^16.0.3 peerDependencies: @@ -5157,41 +4835,41 @@ fsevents@^1.2.7: optional: true bin: jest: bin/jest.js - checksum: 39a486c9452814b449783a0c6a33c481008a8b42012e43ff665f98979e7ea0e983e67a05b9b4f21d55c261813a299bf6f00302d375216cf79dbab3482a4b3e59 + checksum: dbd192ec739a90d91ea3367b156c0660fd4881da989064761374fa3b00c0ae6c72675a21f0ae6a73d256db37179bf35284a65352925bddd1391430bdc8ebc1d7 languageName: node linkType: hard -"jest-config@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-config@npm:27.0.5" +"jest-config@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-config@npm:27.0.6" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^27.0.5 - "@jest/types": ^27.0.2 - babel-jest: ^27.0.5 + "@jest/test-sequencer": ^27.0.6 + "@jest/types": ^27.0.6 + babel-jest: ^27.0.6 chalk: ^4.0.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 is-ci: ^3.0.0 - jest-circus: ^27.0.5 - jest-environment-jsdom: ^27.0.5 - jest-environment-node: ^27.0.5 - jest-get-type: ^27.0.1 - jest-jasmine2: ^27.0.5 - jest-regex-util: ^27.0.1 - jest-resolve: ^27.0.5 - jest-runner: ^27.0.5 - jest-util: ^27.0.2 - jest-validate: ^27.0.2 + jest-circus: ^27.0.6 + jest-environment-jsdom: ^27.0.6 + jest-environment-node: ^27.0.6 + jest-get-type: ^27.0.6 + jest-jasmine2: ^27.0.6 + jest-regex-util: ^27.0.6 + jest-resolve: ^27.0.6 + jest-runner: ^27.0.6 + jest-util: ^27.0.6 + jest-validate: ^27.0.6 micromatch: ^4.0.4 - pretty-format: ^27.0.2 + pretty-format: ^27.0.6 peerDependencies: ts-node: ">=9.0.0" peerDependenciesMeta: ts-node: optional: true - checksum: b76d4e8c337d1f30cf02f78080ec6da0275cbc8d4fdf6d73ffa235c2945cb5604364dd6f7519afb41739cfe6934a09c10303e2c1460c198db30161b334d549f5 + checksum: a27c996173c3fa8c0bf6a4a72aa4b517cd8c766b5f56bd76da54a474f2d40678711cfc842f5b220da524d2ce4f0c6b431c96fcbb787ebe829fea5e7d9a77cf30 languageName: node linkType: hard @@ -5207,66 +4885,66 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-diff@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-diff@npm:27.0.2" +"jest-diff@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-diff@npm:27.0.6" dependencies: chalk: ^4.0.0 - diff-sequences: ^27.0.1 - jest-get-type: ^27.0.1 - pretty-format: ^27.0.2 - checksum: 2335c861c51c2d83e74ccbbb123ea6ae484cf217f447d7ec6ea5db69c32cae3c6f19d52b70fa8e13a7003287f13f63cf06575a569e16b4765248dd7f4e2d3b11 + diff-sequences: ^27.0.6 + jest-get-type: ^27.0.6 + pretty-format: ^27.0.6 + checksum: 054aa17420ad516f06294a7b6cd014881fac202fee3833893a6414f84bc49a910d3d0dff5bf527462f724b1e5790eecf2c1f0bf2ea87e51b5fdd448334dd1608 languageName: node linkType: hard -"jest-docblock@npm:^27.0.1": - version: 27.0.1 - resolution: "jest-docblock@npm:27.0.1" +"jest-docblock@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-docblock@npm:27.0.6" dependencies: detect-newline: ^3.0.0 - checksum: 64a346c2648a3d5a192b3ec00af26d3d0fab28fb547b8fdce8106ea6f6dd99b0f81095d388244d1bb1be3704541873eee3c5104862f6f27a45b6d5616667fc2b + checksum: f5d4eb5e921788ad81e110cc302873cde995a32ea594e71ce57630bef29c59efe06c527ee6efa0d257961b25587a9cffacfe9e41d903025bbc6da1b4fa22be17 languageName: node linkType: hard -"jest-each@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-each@npm:27.0.2" +"jest-each@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-each@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 chalk: ^4.0.0 - jest-get-type: ^27.0.1 - jest-util: ^27.0.2 - pretty-format: ^27.0.2 - checksum: c0451c12830927b3709e72cd8bb35ab2276c507e682ed662878a31b9a0c9281c00e96447a0e85b195d0914f4ff2c5d081e31982a5a929659de3fbfac62501e0d + jest-get-type: ^27.0.6 + jest-util: ^27.0.6 + pretty-format: ^27.0.6 + checksum: c80b77920856664a031f30b0c5121355dcdbbad254f3ce85d69fd7e0b850a69b15f1b98263d39e6d2c1b758e59906a16826ca42721e505934be25e134c62d707 languageName: node linkType: hard -"jest-environment-jsdom@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-environment-jsdom@npm:27.0.5" +"jest-environment-jsdom@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-environment-jsdom@npm:27.0.6" dependencies: - "@jest/environment": ^27.0.5 - "@jest/fake-timers": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/environment": ^27.0.6 + "@jest/fake-timers": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" - jest-mock: ^27.0.3 - jest-util: ^27.0.2 + jest-mock: ^27.0.6 + jest-util: ^27.0.6 jsdom: ^16.6.0 - checksum: d60229b28528dbe3a3b967aec41436679bd9f74d194653c28b3382dbcdeff88c87428a88a1cd4f22233eb4796ce123c2e107ab9734f72e0e6f44fc1de4357eb4 + checksum: d92d47ab5605654c2b9121705f3688592e6676b8a5a285bb3cf5fa3a8781bdb42bb58b283157bb632a98f1f3f2f2e4d4949ec1c9887fd371d84f8603c4098976 languageName: node linkType: hard -"jest-environment-node@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-environment-node@npm:27.0.5" +"jest-environment-node@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-environment-node@npm:27.0.6" dependencies: - "@jest/environment": ^27.0.5 - "@jest/fake-timers": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/environment": ^27.0.6 + "@jest/fake-timers": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" - jest-mock: ^27.0.3 - jest-util: ^27.0.2 - checksum: 45aba68c4e6c7c3f18a6068f166109028e1ba38663b071a78437265032a212243afb472e3052fda7064769acf30b7f9cd639a3853cd5a4f04ff989518f9a0350 + jest-mock: ^27.0.6 + jest-util: ^27.0.6 + checksum: beafa40be831db7268544be0a5d5914e9901bb1c3987557ab9b4b2b9a6798b659bae83acc4d668b1869e23f16f0cea93f12b67174fa098e9868aa62c8437c541 languageName: node linkType: hard @@ -5277,60 +4955,60 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-get-type@npm:^27.0.1": - version: 27.0.1 - resolution: "jest-get-type@npm:27.0.1" - checksum: bb816bd1e5bf64848448cceb8c441cd5a41881eb744a255ee76833b5bac3e32e4f3ac2735b7af2f5f541cabe4d8eb72937c50bc54349a3db2477969c01f92f54 +"jest-get-type@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-get-type@npm:27.0.6" + checksum: ec2669ab967ae86b079052532596b27b367b7b665047aff2bb9f98c888076902e1e3c8a5626b0e6ae73eda50a502a87033bc4142154070d77fa9058fb15ba505 languageName: node linkType: hard -"jest-haste-map@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-haste-map@npm:27.0.5" +"jest-haste-map@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-haste-map@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 "@types/graceful-fs": ^4.1.2 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.4 - jest-regex-util: ^27.0.1 - jest-serializer: ^27.0.1 - jest-util: ^27.0.2 - jest-worker: ^27.0.2 + jest-regex-util: ^27.0.6 + jest-serializer: ^27.0.6 + jest-util: ^27.0.6 + jest-worker: ^27.0.6 micromatch: ^4.0.4 walker: ^1.0.7 dependenciesMeta: fsevents: optional: true - checksum: 7237fd4275c6d7272db46d3d3ccd01d2552dee80e793eab7a012897f934b32697f57b0c00cc902a66fafbe71b696a41da5d886109bfab23bd6d926c0d72483f3 + checksum: 95357f845703c5de276db8da38c16bf697753d39781ab8200d4c0819c063337e2a6250642636d52e0e3c85c6885f1750dcce4b3ed28709e1958e69ab84e63e53 languageName: node linkType: hard -"jest-jasmine2@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-jasmine2@npm:27.0.5" +"jest-jasmine2@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-jasmine2@npm:27.0.6" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^27.0.5 - "@jest/source-map": ^27.0.1 - "@jest/test-result": ^27.0.2 - "@jest/types": ^27.0.2 + "@jest/environment": ^27.0.6 + "@jest/source-map": ^27.0.6 + "@jest/test-result": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^27.0.2 + expect: ^27.0.6 is-generator-fn: ^2.0.0 - jest-each: ^27.0.2 - jest-matcher-utils: ^27.0.2 - jest-message-util: ^27.0.2 - jest-runtime: ^27.0.5 - jest-snapshot: ^27.0.5 - jest-util: ^27.0.2 - pretty-format: ^27.0.2 + jest-each: ^27.0.6 + jest-matcher-utils: ^27.0.6 + jest-message-util: ^27.0.6 + jest-runtime: ^27.0.6 + jest-snapshot: ^27.0.6 + jest-util: ^27.0.6 + pretty-format: ^27.0.6 throat: ^6.0.1 - checksum: 120ea4fa3d91ced091eca1e55a095b711aede1c11aed98df0062419e17214f011c154d58ae0c8d536bd92d88b702debf3a686799df93a9c1b1673cdc4088e6ee + checksum: 490f13c8758beb9a621662b166d62f16200b7db6188da4cdc82213e9310c9fa22978b756055f90f07aa3952e0b336f8b4447f3a075fce6c0a42ea23452e50aaf languageName: node linkType: hard @@ -5346,52 +5024,52 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-leak-detector@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-leak-detector@npm:27.0.2" +"jest-leak-detector@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-leak-detector@npm:27.0.6" dependencies: - jest-get-type: ^27.0.1 - pretty-format: ^27.0.2 - checksum: 6ebd03ecaf4aca3045e5c6fe205bb478b7046db362d1ababa97b6e65dd74bd4849cdec3f1179d41ef809192a7da93d661fa38016c85a54852aa5053679ab3a85 + jest-get-type: ^27.0.6 + pretty-format: ^27.0.6 + checksum: 58c2de614403b2c7dde58ad608645d981a4c1d2050b0afaf35844e807f2ad13b7c4413e4f7934b8373c35c7f6c9445b2ab77f191e7f6fc7f28b484ab63cccd89 languageName: node linkType: hard -"jest-matcher-utils@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-matcher-utils@npm:27.0.2" +"jest-matcher-utils@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-matcher-utils@npm:27.0.6" dependencies: chalk: ^4.0.0 - jest-diff: ^27.0.2 - jest-get-type: ^27.0.1 - pretty-format: ^27.0.2 - checksum: b2c0cc40c35d2101bca3ee2f057a65f346aee210232f6fcb14fb18abf1a6c91a031848e71eaa00afa4c6a40105aa1e8957dc3e0cfda583089325eb81827d1c74 + jest-diff: ^27.0.6 + jest-get-type: ^27.0.6 + pretty-format: ^27.0.6 + checksum: c5299dd3046b1d3a2a20d7ebad3ddd52c2ca5c8e3852b77b51ce57e07f3305626e71118b6ddcb35f75f94c503013706852c1476064df70255752bc5e5caabbca languageName: node linkType: hard -"jest-message-util@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-message-util@npm:27.0.2" +"jest-message-util@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-message-util@npm:27.0.6" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.4 micromatch: ^4.0.4 - pretty-format: ^27.0.2 + pretty-format: ^27.0.6 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: a94309f9f184ad1ed8d2da5cefc9a3949ec0c36caee88e5801961a51c7db4c2122ebdb0db19217892a31cdc2ef2eb3599af1fe4e58cad59b01310be1c762e18e + checksum: 8b929c44ea693b48d8fe92974fb5b37ee25ec5220681472e67cac709e928669b86cc0aeadb5731299add3f3661da8acafeed333df4d5f6baf5cf50e560ae9e72 languageName: node linkType: hard -"jest-mock@npm:^27.0.3": - version: 27.0.3 - resolution: "jest-mock@npm:27.0.3" +"jest-mock@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-mock@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 "@types/node": "*" - checksum: 59ac90d5fed90384065d306cadb43b96f6f6182fa624b3b60cc2cf2d9a0a48ddabff48f60bc002d4c7a56e9677997b7be93af9836538d5f5da374a4cf937141c + checksum: 15bbd62694f1eeaaef651cca1ff31b34540496d8ec99c5c625e6429ffe43a136931a8f8f63247ed38c1038abb3fbbeebd3ad5ebcd7f8daef07c51aae9c4fd672 languageName: node linkType: hard @@ -5407,83 +5085,83 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-regex-util@npm:^27.0.1": - version: 27.0.1 - resolution: "jest-regex-util@npm:27.0.1" - checksum: 8240b7ca4a240eb5a28149e11b3a559f39f5067ff27032ed20ded5e50d91334ade58a616ddf7803eda85dd36c8ea39c9aa99430cb7a08f814ef67fa1a89e9f68 +"jest-regex-util@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-regex-util@npm:27.0.6" + checksum: dc11996d50200bfcae1d0594a6134f9fb33e4a4bc38dddcda9d840ffdc99356e8c545e38dc7b04aef98bff670e61ddb7b7571b44eef254dd09c6c5f6f110bea0 languageName: node linkType: hard -"jest-resolve-dependencies@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-resolve-dependencies@npm:27.0.5" +"jest-resolve-dependencies@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-resolve-dependencies@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 - jest-regex-util: ^27.0.1 - jest-snapshot: ^27.0.5 - checksum: acff97306ac4fa481c4dfb4b94cf0ebba66863bd152ff2e01fc3aa2cb64e30b6ebb06a407f8f46e7cecd55de687d099e58360fd9d5aeae8f52c7fc5958de88b1 + "@jest/types": ^27.0.6 + jest-regex-util: ^27.0.6 + jest-snapshot: ^27.0.6 + checksum: b45e37b74a95cdfca261e0168ca779a4eccb4d164889b856435a7b99b6dd0b772be7c3fe03ba55d9dacc7a59a41090d8be4705dc1ddccc120dc804483b6040cc languageName: node linkType: hard -"jest-resolve@npm:27.0.5, jest-resolve@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-resolve@npm:27.0.5" +"jest-resolve@npm:27.0.6, jest-resolve@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-resolve@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 chalk: ^4.0.0 escalade: ^3.1.1 graceful-fs: ^4.2.4 jest-pnp-resolver: ^1.2.2 - jest-util: ^27.0.2 - jest-validate: ^27.0.2 + jest-util: ^27.0.6 + jest-validate: ^27.0.6 resolve: ^1.20.0 slash: ^3.0.0 - checksum: 2f7c249558c7cd18e45eb0752c0a02767f07656267c797252d56f8d6b675d3085243fec60c68cda2f8fced0a266d6e5d902f0c1b10f85afb82452985e865666e + checksum: 1f20485652be1d561e06093f7898f556e043d87c371854ff81cf20ab015c63169608279634da31d1f2b6b9572172f21e0e3b779eb1da470242dfae41081b89e5 languageName: node linkType: hard -"jest-runner@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-runner@npm:27.0.5" +"jest-runner@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-runner@npm:27.0.6" dependencies: - "@jest/console": ^27.0.2 - "@jest/environment": ^27.0.5 - "@jest/test-result": ^27.0.2 - "@jest/transform": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/console": ^27.0.6 + "@jest/environment": ^27.0.6 + "@jest/test-result": ^27.0.6 + "@jest/transform": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-docblock: ^27.0.1 - jest-environment-jsdom: ^27.0.5 - jest-environment-node: ^27.0.5 - jest-haste-map: ^27.0.5 - jest-leak-detector: ^27.0.2 - jest-message-util: ^27.0.2 - jest-resolve: ^27.0.5 - jest-runtime: ^27.0.5 - jest-util: ^27.0.2 - jest-worker: ^27.0.2 + jest-docblock: ^27.0.6 + jest-environment-jsdom: ^27.0.6 + jest-environment-node: ^27.0.6 + jest-haste-map: ^27.0.6 + jest-leak-detector: ^27.0.6 + jest-message-util: ^27.0.6 + jest-resolve: ^27.0.6 + jest-runtime: ^27.0.6 + jest-util: ^27.0.6 + jest-worker: ^27.0.6 source-map-support: ^0.5.6 throat: ^6.0.1 - checksum: 4cc1f2ac861da59932cc880c3b18758ec0978fd2cf332ed64748b38f445ddff4f845144ecc209427b5e44bd17d949fdbb9a89fee074754488eb136871a70788e + checksum: 869fa1f86bb499dd060ea7ecf69a68147ccdc9193e6a27652701767b8f00e50fa79187026c04c4f4f8b1e77cbbfd1f84d75c1dac4216b072afee34084aa96337 languageName: node linkType: hard -"jest-runtime@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-runtime@npm:27.0.5" +"jest-runtime@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-runtime@npm:27.0.6" dependencies: - "@jest/console": ^27.0.2 - "@jest/environment": ^27.0.5 - "@jest/fake-timers": ^27.0.5 - "@jest/globals": ^27.0.5 - "@jest/source-map": ^27.0.1 - "@jest/test-result": ^27.0.2 - "@jest/transform": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/console": ^27.0.6 + "@jest/environment": ^27.0.6 + "@jest/fake-timers": ^27.0.6 + "@jest/globals": ^27.0.6 + "@jest/source-map": ^27.0.6 + "@jest/test-result": ^27.0.6 + "@jest/transform": ^27.0.6 + "@jest/types": ^27.0.6 "@types/yargs": ^16.0.0 chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 @@ -5491,34 +5169,34 @@ fsevents@^1.2.7: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^27.0.5 - jest-message-util: ^27.0.2 - jest-mock: ^27.0.3 - jest-regex-util: ^27.0.1 - jest-resolve: ^27.0.5 - jest-snapshot: ^27.0.5 - jest-util: ^27.0.2 - jest-validate: ^27.0.2 + jest-haste-map: ^27.0.6 + jest-message-util: ^27.0.6 + jest-mock: ^27.0.6 + jest-regex-util: ^27.0.6 + jest-resolve: ^27.0.6 + jest-snapshot: ^27.0.6 + jest-util: ^27.0.6 + jest-validate: ^27.0.6 slash: ^3.0.0 strip-bom: ^4.0.0 yargs: ^16.0.3 - checksum: 9632adad32bce5a5c9abb9c89cccf9f6ca74dbc957a2c1130f30defc3631068359f857d8f69a8dbe6dc99c92e5cd59ce4850881e83fdec8473be56da494da7f5 + checksum: 291f57285ba8900ee5e2b613f2cbcdde35ff8ad1051e054685b1989b574abcf69cbcea26b5436cf588b88b40379b3cdb60f98d84cba299d09c4f763230243484 languageName: node linkType: hard -"jest-serializer@npm:^27.0.1": - version: 27.0.1 - resolution: "jest-serializer@npm:27.0.1" +"jest-serializer@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-serializer@npm:27.0.6" dependencies: "@types/node": "*" graceful-fs: ^4.2.4 - checksum: 4f8812fdae263382887ad1fa75547191cb1e8ce4a840e813732eaf0ab8768e8897d92e96af1340c6ad3ebb8cd88ca6ef0a6d3607f1e7be169b592bc438d4a163 + checksum: 9f5a8e86a3ad986307f9efef401a7d7196269738594e9fd43ff408c019fb581e053e9de8b83010c08b87167ac800e601d6dc63dd7644e64c66b8f02cc8f457d5 languageName: node linkType: hard -"jest-snapshot@npm:^27.0.5": - version: 27.0.5 - resolution: "jest-snapshot@npm:27.0.5" +"jest-snapshot@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-snapshot@npm:27.0.6" dependencies: "@babel/core": ^7.7.2 "@babel/generator": ^7.7.2 @@ -5526,89 +5204,89 @@ fsevents@^1.2.7: "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/transform": ^27.0.5 - "@jest/types": ^27.0.2 + "@jest/transform": ^27.0.6 + "@jest/types": ^27.0.6 "@types/babel__traverse": ^7.0.4 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^27.0.2 + expect: ^27.0.6 graceful-fs: ^4.2.4 - jest-diff: ^27.0.2 - jest-get-type: ^27.0.1 - jest-haste-map: ^27.0.5 - jest-matcher-utils: ^27.0.2 - jest-message-util: ^27.0.2 - jest-resolve: ^27.0.5 - jest-util: ^27.0.2 + jest-diff: ^27.0.6 + jest-get-type: ^27.0.6 + jest-haste-map: ^27.0.6 + jest-matcher-utils: ^27.0.6 + jest-message-util: ^27.0.6 + jest-resolve: ^27.0.6 + jest-util: ^27.0.6 natural-compare: ^1.4.0 - pretty-format: ^27.0.2 + pretty-format: ^27.0.6 semver: ^7.3.2 - checksum: 14d96822833f9fd450f17c54da942ea7849fb8bc2db6d894b3943c5a393615e1f015aa325255d6f2e1e556709f399855f3f23e6efde39eb93fb0fbfc2db559b4 + checksum: 8a55b9ef9e90991b0a900e59db8134dbeedd4e9a601bff5411628fd1d428191b256dc0b14874f7600e3028f5503146c9c11c7badf302938b47532eb9d222b113 languageName: node linkType: hard -"jest-util@npm:^27.0.0, jest-util@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-util@npm:27.0.2" +"jest-util@npm:^27.0.0, jest-util@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-util@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 "@types/node": "*" chalk: ^4.0.0 graceful-fs: ^4.2.4 is-ci: ^3.0.0 picomatch: ^2.2.3 - checksum: 5a4b50711989aab8b0403c93f3f747daabb3dde90d2a93ffe6ee3e28cae6760ec8107032742e146cbe7f0ec18112f8894caeaf5821b76cd624d6bbe7935dafe7 + checksum: a62ab3304ad58eb5fa130d66680d987890fca8c0505857a1b8bbcc8cf1de35eb3b82e19bdc5084dd10f68b3ce373234723f57f6e83781d4a4f66be1b647b488d languageName: node linkType: hard -"jest-validate@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-validate@npm:27.0.2" +"jest-validate@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-validate@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^27.0.1 + jest-get-type: ^27.0.6 leven: ^3.1.0 - pretty-format: ^27.0.2 - checksum: ec4799a88425c59c8baf897e2f4508a8aed37556b78067f838c914546789b8367911efff55193906f83ea555de677580cc9a315aed1e7ab0d66e0cbca6d1e1d6 + pretty-format: ^27.0.6 + checksum: 3d44c72e107bb9ab5e606b839ca640c1481d1395851858adb797be5cd1b9215a73fa2e2fe5123f8bb591073279a80c7fa9c1673351c577b07e6d7985eb7e7600 languageName: node linkType: hard -"jest-watcher@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-watcher@npm:27.0.2" +"jest-watcher@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-watcher@npm:27.0.6" dependencies: - "@jest/test-result": ^27.0.2 - "@jest/types": ^27.0.2 + "@jest/test-result": ^27.0.6 + "@jest/types": ^27.0.6 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^27.0.2 + jest-util: ^27.0.6 string-length: ^4.0.1 - checksum: f55c41487c5964263753fcc1e35922bbd61193f7d4feac288b1ad96ffa8907bb44e78616b8f021d6fbce61d44e50a2a0dce253d53469c0b1af150eec4c9f02aa + checksum: 9042163b3a0860bb9b569c1a1cdc887f51f8676aafea273ae15615d8018bbaa0655d0f719fb93bd3fd60216ff24ed01978e04d6f576be969cca22b45b7fe5a27 languageName: node linkType: hard -"jest-worker@npm:^27.0.2": - version: 27.0.2 - resolution: "jest-worker@npm:27.0.2" +"jest-worker@npm:^27.0.6": + version: 27.0.6 + resolution: "jest-worker@npm:27.0.6" dependencies: "@types/node": "*" merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: bfbfd3d0af94a5505e841719bba4f57823305a3333b3dcecad333eea517c18ee3ba528e8fab017444ad93666ca15b73f1969b71fe0ba9f9abec8843a74b081e7 + checksum: 8d7ab8cdf6e66fd676b933f142191158be3541bcdc29c4f839e4b9e03ef755dc8741623645758f75ee23acc98038b28f6e9141e49ec7ffef56c51561f7db06f6 languageName: node linkType: hard "jest@npm:^27.0.5": - version: 27.0.5 - resolution: "jest@npm:27.0.5" + version: 27.0.6 + resolution: "jest@npm:27.0.6" dependencies: - "@jest/core": ^27.0.5 + "@jest/core": ^27.0.6 import-local: ^3.0.2 - jest-cli: ^27.0.5 + jest-cli: ^27.0.6 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -5616,7 +5294,7 @@ fsevents@^1.2.7: optional: true bin: jest: bin/jest.js - checksum: 58643ee29ddaf71d0dd89ac54813d291090867993a8249010af2adbc1b26bb426527ef4a8dafa6e0cb4c74292f49c5bd4c517788dd9c36605d00cbfab6ccaa80 + checksum: 12b355eaa0f8f034086abbaff1e324d453891195a16d26ab2776e5df960f521d6cd7b2c4e710854aa0fc6851d3d7457106d90addfeba46d274ec8bbda641fccb languageName: node linkType: hard @@ -5639,13 +5317,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jsbn@npm:~0.1.0": - version: 0.1.1 - resolution: "jsbn@npm:0.1.1" - checksum: b530d48a64e6aff9523407856a54c5b9beee30f34a410612057f4fa097d90072fc8403c49604dacf0c3e7620dca43c2b7f0de3f954af611e43716a254c46f6f5 - languageName: node - linkType: hard - "jsdom@npm:^16.6.0": version: 16.6.0 resolution: "jsdom@npm:16.6.0" @@ -5716,13 +5387,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"json-schema@npm:0.2.3": - version: 0.2.3 - resolution: "json-schema@npm:0.2.3" - checksum: d382ea841f0af5cf6ae3b63043c6ddbd144086de52342b5dd32d8966872dce1e0ed280f6b27c5fba97e50cf8640f27b593e039cb95df365718ada03ef0feb9f2 - languageName: node - linkType: hard - "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -5730,13 +5394,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"json-stringify-safe@npm:~5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 261dfb8eb3e72c8b0dda11fd7c20c151ffc1d1b03e529245d51708c8dd8d8c6a225880464adf41a570dff6e5c805fd9d1f47fed948cfb526e4fbe5a67ce4e5f4 - languageName: node - linkType: hard - "json5@npm:2.x, json5@npm:^2.1.2": version: 2.2.0 resolution: "json5@npm:2.2.0" @@ -5773,18 +5430,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jsprim@npm:^1.2.2": - version: 1.4.1 - resolution: "jsprim@npm:1.4.1" - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.2.3 - verror: 1.10.0 - checksum: ee0177b7ef39e6becf18c586d31fabe15d62be88e7867d3aff86466e4a3de9a2cd47b6e597417aebc1cd3c2d43bc662e79ab5eecdadf3ce0643e909432ed6d2c - languageName: node - linkType: hard - "just-debounce@npm:^1.0.0": version: 1.1.0 resolution: "just-debounce@npm:1.1.0" @@ -5944,8 +5589,8 @@ fsevents@^1.2.7: linkType: hard "listr2@npm:^3.8.2": - version: 3.9.0 - resolution: "listr2@npm:3.9.0" + version: 3.10.0 + resolution: "listr2@npm:3.10.0" dependencies: cli-truncate: ^2.1.0 colorette: ^1.2.2 @@ -5956,7 +5601,7 @@ fsevents@^1.2.7: wrap-ansi: ^7.0.0 peerDependencies: enquirer: ">= 2.3.0 < 3" - checksum: 64eac7b5f8eb4fd1377a6dd0f50a7145c9f13e6d6361f4189b7d2641e5017fb6283502f8a8d407f0cd12702b524592e755c595886afc0834fe9f332f28f8fd2d + checksum: 943a47f7fec0050a56bc47c5a55a723bb8633aa5092b344ea65c117b0a4fec8cd6aa76b92323a4bd70b14b3fdfd78ea1e4a16f91efe63d1f0addd2b069323933 languageName: node linkType: hard @@ -5996,13 +5641,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"lodash.sortby@npm:^4.7.0": - version: 4.7.0 - resolution: "lodash.sortby@npm:4.7.0" - checksum: 43cde11276c66da7b3eda5e9f00dc6edc276d2bcf0a5969ffc62b612cd1c4baf2eff5e84cee11383005722c460a9ca0f521fad4fa1cd2dc1ef013ee4da2dfe63 - languageName: node - linkType: hard - "lodash.truncate@npm:^4.4.2": version: 4.4.2 resolution: "lodash.truncate@npm:4.4.2" @@ -6010,7 +5648,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"lodash@npm:4.x, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.7.0": +"lodash@npm:4.x, lodash@npm:^4.17.20, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 @@ -6064,6 +5702,29 @@ fsevents@^1.2.7: languageName: node linkType: hard +"make-fetch-happen@npm:^8.0.14": + version: 8.0.14 + resolution: "make-fetch-happen@npm:8.0.14" + dependencies: + agentkeepalive: ^4.1.3 + cacache: ^15.0.5 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^6.0.0 + minipass: ^3.1.3 + minipass-collect: ^1.0.2 + minipass-fetch: ^1.3.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + promise-retry: ^2.0.1 + socks-proxy-agent: ^5.0.0 + ssri: ^8.0.0 + checksum: 0847aca9a33544ffe153346343756edfb8065ee6497675c50e99a8b8252bbce4a574b5a2d008e8004de5f1c235205e9c7f2889adc68a8d2019691b4b66f223f4 + languageName: node + linkType: hard + "make-iterator@npm:^1.0.0": version: 1.0.1 resolution: "make-iterator@npm:1.0.1" @@ -6145,16 +5806,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"micromatch@npm:^4.0.2": - version: 4.0.2 - resolution: "micromatch@npm:4.0.2" - dependencies: - braces: ^3.0.1 - picomatch: ^2.0.5 - checksum: 0cb0e11d647cbb65e398a0a8a1340a7fb751ae2722346219c435704cfac8b3275a94a6464236fe867f52ad46a24046d3bc4ac11b3d21ddb73bc44e27cf1e4904 - languageName: node - linkType: hard - "micromatch@npm:^4.0.4": version: 4.0.4 resolution: "micromatch@npm:4.0.4" @@ -6165,19 +5816,19 @@ fsevents@^1.2.7: languageName: node linkType: hard -"mime-db@npm:1.46.0": - version: 1.46.0 - resolution: "mime-db@npm:1.46.0" - checksum: 4e137ac502ca5ba6c583e552c5fa6abd0c2157592f647824ba7246b771eb42c65c2a1816fc52b27afdbb88a026127f1d5fba354f9dcde591b3b464be07c3d27e +"mime-db@npm:1.48.0": + version: 1.48.0 + resolution: "mime-db@npm:1.48.0" + checksum: 346d5df2ff2f501bdeff07e88a28d205f9cd27bccd3b8604847d3aee6ce73d4ecf88e943bbbce46c167d404487f46cdf09d57354c51b6f08a4d5833bcaafa59f languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": - version: 2.1.29 - resolution: "mime-types@npm:2.1.29" +"mime-types@npm:^2.1.12": + version: 2.1.31 + resolution: "mime-types@npm:2.1.31" dependencies: - mime-db: 1.46.0 - checksum: 744d72b2a24c64d2aacc1ead86bfc827c2c4f1bb6f3b4bf6d8684b82f5ddd0b75a5c0eff128a888c09080f9ad7979400b64a697889690fca3c42de80c8f5e187 + mime-db: 1.48.0 + checksum: 0373e58e3826802e462cf0c180ca5556fd0990acaf123d421d5f8643f0ca61d2126ea57eb6f4ba96f9ef07d3e627c06261825418a6549b0671261cc1bb4219b4 languageName: node linkType: hard @@ -6211,7 +5862,58 @@ fsevents@^1.2.7: languageName: node linkType: hard -"minipass@npm:^3.0.0": +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 529ef6212333e6b9afc6aa4487a246df6fd28a28e42060533491ebf58fddb349f9b044f017725bddf3e13cae3986c58c24ee2531832f62e6d97379846e04e0a8 + languageName: node + linkType: hard + +"minipass-fetch@npm:^1.3.2": + version: 1.3.3 + resolution: "minipass-fetch@npm:1.3.3" + dependencies: + encoding: ^0.1.12 + minipass: ^3.1.0 + minipass-sized: ^1.0.3 + minizlib: ^2.0.0 + dependenciesMeta: + encoding: + optional: true + checksum: cc93f86391795279b5681a2bbd5bb55cceabdae959c4ff0cb85e767427edb0d7e8bde49b6897afd386c2e47965ecc304b96bb7c2af0dbb9da7dfa67da140757e + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: ^3.0.0 + checksum: d354ca0da834e3e79a1f0372d1cb86ba043a96b495624ed6360f7cd1f549e5685d9b292d4193a963497efcf4a4db8563e188cda565b119b8acc00852259e286c + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: ^3.0.0 + checksum: 001d5a4a0c14816230984e684e8458d972b92dae52255f17fbc2dae74965f544c3c64f93146c218413004e72acec7f57d0f6ee10a49377ad715cf7d389af710c + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: ^3.0.0 + checksum: 747cb22e8a65dc84b819f8cdea4398ac30a3105d47f1db654ecd0b4c8124afddc58cbbd1166905d5279d89708692c0326689538b9795468e28bd330113e0d3c0 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": version: 3.1.3 resolution: "minipass@npm:3.1.3" dependencies: @@ -6220,7 +5922,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"minizlib@npm:^2.1.1": +"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -6263,6 +5965,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"ms@npm:^2.0.0": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 6e721e648a544154d5de4c114b32f573d8027ca8ec505cf6c1105e505986d6ac46934a1256735aa0eece8eb2f5b2a1230503b2dddd3b100f9f016fd8a4f15f33 + languageName: node + linkType: hard + "mute-stdout@npm:^1.0.0": version: 1.0.1 resolution: "mute-stdout@npm:1.0.1" @@ -6320,22 +6029,22 @@ fsevents@^1.2.7: linkType: hard "node-gyp@npm:latest": - version: 7.1.2 - resolution: "node-gyp@npm:7.1.2" + version: 8.1.0 + resolution: "node-gyp@npm:8.1.0" dependencies: env-paths: ^2.2.0 glob: ^7.1.4 - graceful-fs: ^4.2.3 + graceful-fs: ^4.2.6 + make-fetch-happen: ^8.0.14 nopt: ^5.0.0 npmlog: ^4.1.2 - request: ^2.88.2 rimraf: ^3.0.2 - semver: ^7.3.2 - tar: ^6.0.2 + semver: ^7.3.5 + tar: ^6.1.0 which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: fca9ecb1be01f707b76c2aec01f0f2ef4ff45c4e24df378c01a4a2c93b4a8172b47ad59f07af91c54a797a8a77fc72e087e29a97a52c892df507245530c46bfa + checksum: 6e014ff491cc4fdd25c41e38f9f92ab665d3b2e1ef7cd18e292aff9b293ef485c6bb93194461a5538d3bfa4b678258df974800660dd7d40865866ef3188c5481 languageName: node linkType: hard @@ -6353,17 +6062,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"node-releases@npm:^1.1.70": - version: 1.1.71 - resolution: "node-releases@npm:1.1.71" - checksum: 9e283003f1deafd0ca7f9bbde9c4b5b05d880ca165217f5227b37406626d6689a246a5c4c72f9a8512be65cd51b13cc7d0f5d8bc68ad36089b620f1810292340 - languageName: node - linkType: hard - "node-releases@npm:^1.1.71": - version: 1.1.72 - resolution: "node-releases@npm:1.1.72" - checksum: a9ded860baa3c90fa6fde2e1be597959b238940cda1e5bbeceb5de6a16faa1db81982b629429fd6ebbec98f7dd241378cda5918a57c9baf68cb6a6e002b4fc15 + version: 1.1.73 + resolution: "node-releases@npm:1.1.73" + checksum: 8dbc7dd438c4e0a01e546cf73b8d3cc766f1ba3c40848d5cc8c6027eb8d87d54c4617eae036bed3c02e16f25e241ee2a4bd48fa528ebf6fe97d2c86c71ddfedc languageName: node linkType: hard @@ -6399,7 +6101,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": +"normalize-path@npm:^3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" checksum: 215a701b471948884193628f3e38910353abf445306b519c42c2a30144b8beb8ca0a684da97bfc2ee11eb168c35c776d484274da4bd8f213d2b22f70579380ee @@ -6450,13 +6152,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"oauth-sign@npm:~0.9.0": - version: 0.9.0 - resolution: "oauth-sign@npm:0.9.0" - checksum: af1ab60297c3a687d1d2de5c43c6453c4df6939de3e6114ada4a486ac51fa7ab1769f33000b94c0e8ffced5ae4c57c4f5d36b517792d83e9e9742578a728682e - languageName: node - linkType: hard - "object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -6718,6 +6413,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" @@ -6763,9 +6472,9 @@ fsevents@^1.2.7: linkType: hard "path-parse@npm:^1.0.6": - version: 1.0.6 - resolution: "path-parse@npm:1.0.6" - checksum: 2eee4b93fb3ae13600e3fca18390d9933bbbcf725a624f6b8df020d87515a74872ff6c58072190d6dc75a5584a683dc6ae5c385ad4e4f4efb6e66af040d56c67 + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 6de0bfa37b4f09af465ff3900fb4104ca9cb1e1fa5cbe869c40cedd10d5d625d04c284afc34967830eee780bf83fd69c017d72a23ffd35718ec861192ec91dd9 languageName: node linkType: hard @@ -6803,21 +6512,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"performance-now@npm:^2.1.0": - version: 2.1.0 - resolution: "performance-now@npm:2.1.0" - checksum: bb4ebed0b03d6c3ad3ae4eddd1182c895d385cff9096af441c19c130aaae3ea70229438ebc3297dfc52c86022f6becf177a810050823d01bf5280779cd2de624 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.0.5, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": - version: 2.2.2 - resolution: "picomatch@npm:2.2.2" - checksum: 20fa75e0a58b39d83425b3db68744d5f6f361fd4fd66ec7745d884036d502abba0d553a637703af79939b844164b13e60eea339ccb043d7fbd74c3da2592b864 - languageName: node - linkType: hard - -"picomatch@npm:^2.2.3": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3": version: 2.3.0 resolution: "picomatch@npm:2.3.0" checksum: 80113a0fb70cfa62730d5aa3fd3d45b76bf3985f8494080ab2de1cc1fa3ba96d77990c7553a81401e16c51c0eb19c27cf5bc94f2196155090f26c8a167968001 @@ -6856,12 +6551,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 @@ -6988,15 +6683,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pretty-format@npm:^27.0.2": - version: 27.0.2 - resolution: "pretty-format@npm:27.0.2" +"pretty-format@npm:^27.0.6": + version: 27.0.6 + resolution: "pretty-format@npm:27.0.6" dependencies: - "@jest/types": ^27.0.2 + "@jest/types": ^27.0.6 ansi-regex: ^5.0.0 ansi-styles: ^5.0.0 react-is: ^17.0.1 - checksum: d55daeb15770d46953e2e58b1f7568f91a0b8d4b4e4ccc788fcfa81a7638eb0f024181616da1f30073136d595137fcfef400413d7e0c2387baeb094dc72b0a0b + checksum: 29baf8d88a35c04ef81e310e3e239c6fe4f5b0827c9bd8f660df78e94632a9677bd113a64be78cc95c52945a4369b85828f32559cfd86c1b591aa3cc39d0798d languageName: node linkType: hard @@ -7021,17 +6716,34 @@ fsevents@^1.2.7: languageName: node linkType: hard -"prompts@npm:^2.0.1": - version: 2.4.0 - resolution: "prompts@npm:2.4.0" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: fd375679ad53bb6a85ac1edf6d3f48b4a120a9aac87d3f0e50756c02013f1e9ee835f10ba18edc2f21048cf8423a986aff8f75ee42f03ce1ebf1d1c65f5ef3cf +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: c06bce0fc60b1c7979f291e489b9017db9c15f872d5cef0dfbb2b56694e9db574bc5c28f332a7033cdbd3a1d6417c5a1ee03889743638f0241e82e5a6b9c277f languageName: node linkType: hard -"psl@npm:^1.1.28, psl@npm:^1.1.33": +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: 325e99d059fc624129c020507047a9aeadb988d03fd2165829af7c43af9c6d0510f2ccddb68efa0bac607d4c43591b3af8b1207db132986bfa458f78549ea4f1 + languageName: node + linkType: hard + +"prompts@npm:^2.0.1": + version: 2.4.1 + resolution: "prompts@npm:2.4.1" + dependencies: + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: 705eae8c359edd7c5ba47404ef349d239334ebde0f55420588dd98449c52b38e35b52800ef55ad5804bb8c3b98b3b834beb749813f89e896d058ee18aa0d6c2c + languageName: node + linkType: hard + +"psl@npm:^1.1.33": version: 1.8.0 resolution: "psl@npm:1.8.0" checksum: 92d47c6257456878bfa8190d76b84de69bcefdc129eeee3f9fe204c15fd08d35fe5b8627033f39b455e40a9375a1474b25ff4ab2c5448dd8c8f75da692d0f5b4 @@ -7073,13 +6785,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"qs@npm:~6.5.2": - version: 6.5.2 - resolution: "qs@npm:6.5.2" - checksum: fa0410eff2c05ce3328e11f82db4015e7819c986ee056d6b62b06ae112f4929af09ea3b879ca168ff9f0338f50972bba487ad0e46c879e42bfaf63c3c2ea7f09 - languageName: node - linkType: hard - "querystring@npm:0.2.0": version: 0.2.0 resolution: "querystring@npm:0.2.0" @@ -7088,16 +6793,16 @@ fsevents@^1.2.7: linkType: hard "queue-microtask@npm:^1.2.2": - version: 1.2.2 - resolution: "queue-microtask@npm:1.2.2" - checksum: 563abf1b1d0916842c017a4c0784fffebd0dd7d5685ffd65356dfee8f084e34e2a9b449aa788dddb2767f7dc79d1834545bb75f8f643b8aa85aea20a9efabbec + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 0f88d794d4d825d39cdc2cda2fa701722858fc8de9567ad612776fce0d113376a3fc67f6a0091f31c9142b28f0c14fef08e9f92422b49f2372d5537e250fbfad languageName: node linkType: hard "react-is@npm:^17.0.1": - version: 17.0.1 - resolution: "react-is@npm:17.0.1" - checksum: 5a83dfc78e7adcb93d632bf367b0733db650e3abd2e9c57c33b87e50d201212c1884b0d7bcf13e692f1556189fa1b87f9f3e0ba10fe858fd6aebe83ed4fcd1ea + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 3eff23f410d40ab9bc5177f147a92c7f42c356a21ecea340e0554566956d67e5e1ba56f26cc7fa22339ac3c7151744177bd6305eaa26d3cbf15f354358c9d9b6 languageName: node linkType: hard @@ -7148,15 +6853,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 7da2fe8d5abf17ae0bf97a052718e16d29fa185f3e461153035728d93642326ae8e44c17b9a9b3a5fa616dff160e96be3184e0323efaac7211f80c0aab5f622b - languageName: node - linkType: hard - "rechoir@npm:^0.6.2": version: 0.6.2 resolution: "rechoir@npm:0.6.2" @@ -7177,9 +6873,9 @@ fsevents@^1.2.7: linkType: hard "regexpp@npm:^3.1.0": - version: 3.1.0 - resolution: "regexpp@npm:3.1.0" - checksum: 69d0ce6b449cf35d3732d6341a1e70850360ffc619f8eef10629871c462e614853fffb80d3f00fc17cd0bb5b8f34b0cde5be4b434e72c0eb3fbba2360c8b5ac4 + version: 3.2.0 + resolution: "regexpp@npm:3.2.0" + checksum: 91aaccadd046fc1b60477df4f44bb69d61aeca81082f2ebf879a32ff25cd7bcb7067fcd69eb9a0987ca0a3e8e2d837b2737e80961c14a504a912bed4c51c8e3e languageName: node linkType: hard @@ -7212,9 +6908,9 @@ fsevents@^1.2.7: linkType: hard "repeat-element@npm:^1.1.2": - version: 1.1.3 - resolution: "repeat-element@npm:1.1.3" - checksum: 6a59b879efdd3512a786be5de1bc05c110822fec6820bb5a38dfdfdd4488e7ba0cf6d15b28da21544e6f072ae60762ee9efa784f2988128e656c97a8b0be46cb + version: 1.1.4 + resolution: "repeat-element@npm:1.1.4" + checksum: 44db9550826d4101f1db2deccd1afe226e77a137c94b899b98505409703513894ef5195fcd0fccb9f0979f3ab7d582cac7c19ff4cf8b606c2f0754488e164c70 languageName: node linkType: hard @@ -7250,34 +6946,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"request@npm:^2.88.2": - version: 2.88.2 - resolution: "request@npm:2.88.2" - dependencies: - aws-sign2: ~0.7.0 - aws4: ^1.8.0 - caseless: ~0.12.0 - combined-stream: ~1.0.6 - extend: ~3.0.2 - forever-agent: ~0.6.1 - form-data: ~2.3.2 - har-validator: ~5.1.3 - http-signature: ~1.2.0 - is-typedarray: ~1.0.0 - isstream: ~0.1.2 - json-stringify-safe: ~5.0.1 - mime-types: ~2.1.19 - oauth-sign: ~0.9.0 - performance-now: ^2.1.0 - qs: ~6.5.2 - safe-buffer: ^5.1.2 - tough-cookie: ~2.5.0 - tunnel-agent: ^0.6.0 - uuid: ^3.3.2 - checksum: 7a74841f3024cac21d8c3cca7f7f2e4243fbd62464d2f291fddb94008a9d010e20c4a1488f4224b03412a4438a699db2a3de11019e486c8e656f86b0b79bf022 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -7395,6 +7063,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 51f2fddddb2f157a0738c53c515682813a881df566da36992f3cf0a975ea84a19434c5abbc682056e97351540bcc7ea38fce2622d0b191c3b5cc1020b71ea0f2 + languageName: node + linkType: hard + "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -7430,8 +7105,8 @@ fsevents@^1.2.7: linkType: hard "rollup@npm:^2.52.3": - version: 2.52.3 - resolution: "rollup@npm:2.52.3" + version: 2.52.4 + resolution: "rollup@npm:2.52.4" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -7439,7 +7114,7 @@ fsevents@^1.2.7: optional: true bin: rollup: dist/bin/rollup - checksum: 63113f59a649fb174075e36ea938944a2d9931a55cb763c64c8cdfad9aaf1443461d441129c63abb2ec8207c9a26bfccd174e84616ae8a2bd2d0dcca18407be1 + checksum: 4f6ef073bcef6f1878f717b19c7dc682d8c183c6838c7e2dc56cbbfa39a72097acbb8f51c28e9f12bf918fb2b9e4362cee5979c12baaf9750e00e6dd85b07834 languageName: node linkType: hard @@ -7461,7 +7136,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": +"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" checksum: 2708587c1b5e70a5e420714ceb59f30f5791c6e831d39812125a008eca63a4ac18578abd020a0776ea497ff03b4543f2b2a223a7b9073bf2d6c7af9ec6829218 @@ -7477,7 +7152,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 549ba83f5b314b59898efe3422120ce1ca7987a6eae5925a5fa5db930dc414d4a9dde0a5594f89638cd6ea60b6840ea961872908933ac2428d1726489db46fa5 @@ -7529,23 +7204,14 @@ fsevents@^1.2.7: languageName: node linkType: hard -"semver@npm:7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" - bin: - semver: bin/semver.js - checksum: 5162b31e9902be1d51d63523eb21d28164d632f527cb0dc439a58d6eaf1a2f3c49c4e2a0f7cf8d650f673638ae34ac7e0c7c2048ff66bc5dc1298ef8551575b5 - languageName: node - linkType: hard - -"semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2": - version: 7.3.4 - resolution: "semver@npm:7.3.4" +"semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.5": + version: 7.3.5 + resolution: "semver@npm:7.3.5" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: f2c7f9aeb976d1484b2f39aa7afc8332a1d21fd32ca4a6fbf650e1423455ebf3e7029f6e2e7ba0cd71935b85942521f1ec25b6cc2c031b953c8ca4ff2d7a823d + checksum: c53624ddf4b9779bcbf55a1eb8b37074cc44bfeca416f3cc263429408202a8a3c59b00eef8c647d697303bc39b95c022a5c61959221d3814bfb1270ff7c14986 languageName: node linkType: hard @@ -7558,17 +7224,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"semver@npm:^7.3.5": - version: 7.3.5 - resolution: "semver@npm:7.3.5" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: c53624ddf4b9779bcbf55a1eb8b37074cc44bfeca416f3cc263429408202a8a3c59b00eef8c647d697303bc39b95c022a5c61959221d3814bfb1270ff7c14986 - languageName: node - linkType: hard - "set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -7647,6 +7302,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"smart-buffer@npm:^4.1.0": + version: 4.1.0 + resolution: "smart-buffer@npm:4.1.0" + checksum: 00a23d82a20eced9622cbba18ba781f9f8968ccfa70af7a33336ae55f54651c073aa072084c521f7e78199767e5b3584a0bbf3a47bb60e3e5b79ea4fc1ca61a1 + languageName: node + linkType: hard + "snapdragon-node@npm:^2.0.1": version: 2.1.1 resolution: "snapdragon-node@npm:2.1.1" @@ -7683,6 +7345,53 @@ 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 + +"socks-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "socks-proxy-agent@npm:5.0.1" + dependencies: + agent-base: ^6.0.2 + debug: 4 + socks: ^2.3.3 + checksum: 0f3a80ce09b9bca2ac091f9cd5c1f02ca4ebc70cc8eeaaf4e515ec97b224f04b9a4645377c2bf65a6c48df7d0c95684250d4e30184b39975fa556d7fcc913388 + languageName: node + linkType: hard + +"socks@npm:^2.3.3": + version: 2.6.1 + resolution: "socks@npm:2.6.1" + dependencies: + ip: ^1.1.5 + smart-buffer: ^4.1.0 + checksum: 9a5735cf9be6f756006b4c5ed23f17c15ffbfc0afb04b5d1b49516b7a27818c807a6a5b5419a65a140a1964149ec9ebb6cd8f0e06d7c60282912204d781371db + languageName: node + linkType: hard + "source-map-resolve@npm:^0.5.0": version: 0.5.3 resolution: "source-map-resolve@npm:0.5.3" @@ -7769,9 +7478,9 @@ fsevents@^1.2.7: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.7 - resolution: "spdx-license-ids@npm:3.0.7" - checksum: 21e38ec5dd970643f78d37700b6c6ebd42d68c0e4618db914a56cabd2fe4cc1608404ce6abc7535d5165c6555560e821553d06edf6af6ae439617883cf932c0e + version: 3.0.9 + resolution: "spdx-license-ids@npm:3.0.9" + checksum: a4d970d859bc5eeef3a95d7597fa39b36b2c046153d3d2c9876293d84457b0456a56aef7f45e1d3c3129cf7557c35305dffaddbcff630f7df72cb359aed78ce1 languageName: node linkType: hard @@ -7791,24 +7500,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"sshpk@npm:^1.7.0": - version: 1.16.1 - resolution: "sshpk@npm:1.16.1" +"ssri@npm:^8.0.0, ssri@npm:^8.0.1": + version: 8.0.1 + resolution: "ssri@npm:8.0.1" dependencies: - asn1: ~0.2.3 - assert-plus: ^1.0.0 - bcrypt-pbkdf: ^1.0.0 - dashdash: ^1.12.0 - ecc-jsbn: ~0.1.1 - getpass: ^0.1.1 - jsbn: ~0.1.0 - safer-buffer: ^2.0.2 - tweetnacl: ~0.14.0 - bin: - sshpk-conv: bin/sshpk-conv - sshpk-sign: bin/sshpk-sign - sshpk-verify: bin/sshpk-verify - checksum: 4bd7422634ec3730404186179e5d9ba913accc64449f18d594b3a757a3b81000719adc94cf0c93a7b3da42487ae42404a1f37bfaa7908a60743d4478382b9d78 + minipass: ^3.1.1 + checksum: d45f9a1d5676f8ebd888a3ae469772d75858e4095087217c2361a6b07a6eefd5a85350bb0fed63128b0025fdf242e81813be0979e6cb956a38dbf26295dca09c languageName: node linkType: hard @@ -7860,12 +7557,12 @@ fsevents@^1.2.7: linkType: hard "string-length@npm:^4.0.1": - version: 4.0.1 - resolution: "string-length@npm:4.0.1" + version: 4.0.2 + resolution: "string-length@npm:4.0.2" dependencies: char-regex: ^1.0.2 strip-ansi: ^6.0.0 - checksum: afc433824703f1fe3d7e34a980055eb376e9f52ed69b90196c7520819cbc5550b9b1a6abaa22704f4f01c7b40191f22a5e7fe3885a005959b4487d89c7e94b94 + checksum: e27dd1b5d759d734d7e4dd6ae0c56d1cad479799452bfeefb6565bb4785cd3d076dea71e9257edd49a051374f3b8492567eb495c306711ae7226ef971a0f1f81 languageName: node linkType: hard @@ -7891,13 +7588,13 @@ fsevents@^1.2.7: linkType: hard "string-width@npm:^4.1.0, string-width@npm:^4.2.0": - version: 4.2.1 - resolution: "string-width@npm:4.2.1" + version: 4.2.2 + resolution: "string-width@npm:4.2.2" dependencies: emoji-regex: ^8.0.0 is-fullwidth-code-point: ^3.0.0 strip-ansi: ^6.0.0 - checksum: 26e340b1c28c80ba9a8dfd93bc6dba6e408f6f42728d2cf172a721031ccc93b192801d3ddb70bd38d333bf0b078d208b3c10295dc8918c3686a5345621d3d7c4 + checksum: d42484f5fdc50b4a573be784a06bc971e124d3fdc08779848a58d632bc88b349a33af54d1f0e1904dbd5dcbbe50651e4b39938799ebb1011a730421af1381892 languageName: node linkType: hard @@ -8015,12 +7712,12 @@ fsevents@^1.2.7: linkType: hard "supports-hyperlinks@npm:^2.0.0": - version: 2.1.0 - resolution: "supports-hyperlinks@npm:2.1.0" + version: 2.2.0 + resolution: "supports-hyperlinks@npm:2.2.0" dependencies: has-flag: ^4.0.0 supports-color: ^7.0.0 - checksum: 8b3b6d71ee298d7f9a3ff4bfb928bd037c0b691b01bdfebb77deb3384976cd78c180d564dc3689ce5fe254d323252f7064efa1364bf24ab81efa6b080e51eddb + checksum: 91af5f206c55fe38c5acacafca8e13bee8ddf59f817178d3cb83388bd85d3ec181a59c446439b63aafa0375e579a7e8d8ec044a0ed1143137ba12f303eb76c6a languageName: node linkType: hard @@ -8055,7 +7752,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"tar@npm:^6.0.2": +"tar@npm:^6.0.2, tar@npm:^6.1.0": version: 6.1.0 resolution: "tar@npm:6.1.0" dependencies: @@ -8138,10 +7835,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 @@ -8229,22 +7926,12 @@ fsevents@^1.2.7: languageName: node linkType: hard -"tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" - dependencies: - psl: ^1.1.28 - punycode: ^2.1.1 - checksum: bf5d6fac5ce0bebc5876cb9b9a79d3d9ea21c9e4099f3d3e64701d6ba170a052cb88cece6737ec2473bac4f0a4f6c75d46ec17985be8587c6bbdd38d91625cb4 - languageName: node - linkType: hard - -"tr46@npm:^2.0.2": - version: 2.0.2 - resolution: "tr46@npm:2.0.2" +"tr46@npm:^2.1.0": + version: 2.1.0 + resolution: "tr46@npm:2.1.0" dependencies: punycode: ^2.1.1 - checksum: c8c221907944e8b577c4fff14d180a213c21a29b54a12a031aa6986cbb711a5d470588b556a7be9c7844f09142e12deef6b76fe10f6bd4d274b54f1a7e0aac9e + checksum: d6da91f2463fa8d30c938331d02bebf01bd96af68016bc233ad37c9e4bc7e607a46065f5eab2034076aab5fdac362c02421b34c29c57095d0d310d3833e2736f languageName: node linkType: hard @@ -8299,17 +7986,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"tsutils@npm:^3.17.1": - version: 3.20.0 - resolution: "tsutils@npm:3.20.0" - dependencies: - tslib: ^1.8.1 - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 9245072f9c0d511e3a30c52ec0bfd5ad91495f85d819426ad5283931d09bbdffe515c5c708ba99a4c2424e4576d37200d3e62df66f0027ca29fcfa76794e9610 - languageName: node - linkType: hard - "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -8321,22 +7997,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"tunnel-agent@npm:^0.6.0": - version: 0.6.0 - resolution: "tunnel-agent@npm:0.6.0" - dependencies: - safe-buffer: ^5.0.1 - checksum: 03db75a4f994fee610d3485c492e95105ed265a9fecd49d14c98e9982f973ecc0220d0c1bc264e37802e423a1274bb63788a873e4e07009408ae3ac517347fd7 - languageName: node - linkType: hard - -"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": - version: 0.14.5 - resolution: "tweetnacl@npm:0.14.5" - checksum: e1c9d52e2e9f582fd0df9ea26ba5a9ab88b9a38b69625d8e55c5e8870a4832ac8c32f8854b41fce7b59f97258bb103535363f9eda7050aa70e75824b972c7dde - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -8362,13 +8022,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"type-fest@npm:^0.11.0": - version: 0.11.0 - resolution: "type-fest@npm:0.11.0" - checksum: 02e5cadf13590a5724cacf8d9133320efd173f6fb1b695fcb29e56551a315bf0f07ca988a780a1999b7b55bb3eaaa7f37223615207236d393af17bba6749dc95 - languageName: node - linkType: hard - "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -8376,6 +8029,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: bbe5f5c60e8da4e0b0fe290c31821b10c2fd935768802cd659784cb5e792c7a31bb25a89174d3b42dde3bf8eb9d301ede7456a274c1068280b7698438e250f49 + languageName: node + linkType: hard + "type@npm:^1.0.1": version: 1.2.0 resolution: "type@npm:1.2.0" @@ -8384,9 +8044,9 @@ fsevents@^1.2.7: linkType: hard "type@npm:^2.0.0": - version: 2.3.0 - resolution: "type@npm:2.3.0" - checksum: e4976037e71df2550cbd84a5e3ff764f3706ebcb21b7c10deb671db5a2d58468cc6604633cf480b816d7649832d9d78a5edad40019b0fa48051e5f3d4bcc8038 + version: 2.5.0 + resolution: "type@npm:2.5.0" + checksum: 56dd61c60ed02dc75bae7029f95d1e457a9b174f60a75025ce9dc911a01e3918df29a9a29f0bc58d88a2baf18fa399f3898f2fa26d512d61cf9726c2c69920a0 languageName: node linkType: hard @@ -8406,13 +8066,13 @@ fsevents@^1.2.7: languageName: node linkType: hard -typescript@^4.1.4: - version: 4.2.2 - resolution: "typescript@npm:4.2.2" +typescript@^4.1.6: + version: 4.3.5 + resolution: "typescript@npm:4.3.5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: b2e3d5551a12c51b6b7a14f0e78d2664c136fab4dfb3eecaaf7a6e8e7e608f2cf43c6ebe81387d194db2588793b769720d2df523d445a1664b7585c5b9a85984 + checksum: d9a8e78d72dd19896e6bfa73ab2a0fcea6eca2700d1d6e7c33f67a970af54a3e0fed8f715a8c4e6a0ff7fc0995067b394b2003518ab0aa84cd396377e54b760c languageName: node linkType: hard @@ -8426,13 +8086,13 @@ 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" +"typescript@patch:typescript@^4.1.6#builtin": + version: 4.3.5 + resolution: "typescript@patch:typescript@npm%3A4.3.5#builtin::version=4.3.5&hash=ddfc1b" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: aa60765443932c0aa294cf24295a8bba163dd791735b20e2e43dffe2d21f6bf80de8342c9ab9c4338c59e36f4bcae179195fdfaae1cae4678821994e77199d34 + checksum: 7f0b8343f71ecac18095be1476b398aca420ab60dc207cc1efe078f381eef5527b80a518297720257114cdbda65612f8839e4b63e85dc95e67ac5cbbade8bdf0 languageName: node linkType: hard @@ -8447,11 +8107,11 @@ typescript@^4.3.4: linkType: hard "uglify-js@npm:^3.1.4": - version: 3.13.0 - resolution: "uglify-js@npm:3.13.0" + version: 3.13.10 + resolution: "uglify-js@npm:3.13.10" bin: uglifyjs: bin/uglifyjs - checksum: bb35cfe5ce9735a9707b33628dbbef02ab4b62bdd3650a02e14dfe42f4ac3fe5e9d616352476605706ab651561abc66ef2877c3dcabf4bde5bf66cecec94f3e8 + checksum: 2c8467faf68a0ba4da7a9539026dc996804f0e89f184ce0a6ceaa9a9c7e4e2ab78399caee8ebbebcd3df64a45b049585c4125e144f1c5992f9b61e81864d9535 languageName: node linkType: hard @@ -8499,6 +8159,24 @@ typescript@^4.3.4: languageName: node linkType: hard +"unique-filename@npm:^1.1.1": + version: 1.1.1 + resolution: "unique-filename@npm:1.1.1" + dependencies: + unique-slug: ^2.0.0 + checksum: 0e674206bdda0c949b4ef86b073ba614f11de6141310834a236860888e592826da988837a7277f91a943752a691c5ab7ab939a19e7c0a5d7fcf1b7265720bf86 + languageName: node + linkType: hard + +"unique-slug@npm:^2.0.0": + version: 2.0.2 + resolution: "unique-slug@npm:2.0.2" + dependencies: + imurmurhash: ^0.1.4 + checksum: 3b17dabc13b3cc41897715e106d4403b88c225739e70bbb6d1142e0fb680261b20574cae133b0ac0eedcf514fc19766d6fa37411f9e9ee038daaa4ae83e7cd70 + languageName: node + linkType: hard + "unique-stream@npm:^2.0.2": version: 2.3.1 resolution: "unique-stream@npm:2.3.1" @@ -8580,15 +8258,6 @@ typescript@^4.3.4: languageName: node linkType: hard -"uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 1ce3f37e214d6d0dc94a6a9663a0365013ace66bc3fd5b203e6f5d2eeb978aaee1192367222386345d30b4c6a447928c501121aa84c637724bf105ef57284949 - languageName: node - linkType: hard - "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -8599,9 +8268,9 @@ typescript@^4.3.4: linkType: hard "v8-compile-cache@npm:^2.0.3": - version: 2.2.0 - resolution: "v8-compile-cache@npm:2.2.0" - checksum: 1efc9946401fcad7a67619b520d8d12e31c7138090ffd9f98af9b919461fa23d947ecef0eab89cca4037c01d29d25a389ab6c0fac70ee4ed030443b08cdf6cff + version: 2.3.0 + resolution: "v8-compile-cache@npm:2.3.0" + checksum: b56f83d9ff14187562badc4955dadeef53ff3abde478ce60759539dd8d5472a91fce9db6083fc2450e54cef6f2110c1a28d8c12162dbf575a6cfcb846986904b languageName: node linkType: hard @@ -8642,17 +8311,6 @@ typescript@^4.3.4: languageName: node linkType: hard -"verror@npm:1.10.0": - version: 1.10.0 - resolution: "verror@npm:1.10.0" - dependencies: - assert-plus: ^1.0.0 - core-util-is: 1.0.2 - extsprintf: ^1.2.0 - checksum: 38ea80312cb42e5e8b4ac562d108d675b2354a79f8f125d363671f692657461b9181fd26f4fc9acdca433f8afee099cb78058806e1303e6b15b8fb022affba94 - languageName: node - linkType: hard - "vinyl-fs@npm:^3.0.0": version: 3.0.3 resolution: "vinyl-fs@npm:3.0.3" @@ -8773,25 +8431,14 @@ typescript@^4.3.4: languageName: node linkType: hard -"whatwg-url@npm:^8.0.0": - version: 8.4.0 - resolution: "whatwg-url@npm:8.4.0" - dependencies: - lodash.sortby: ^4.7.0 - tr46: ^2.0.2 - webidl-conversions: ^6.1.0 - checksum: c85dfbedd2554e76d05eba467509db3a0ed5740e3bf1069a10ca302da531d64399693e4952c61be67d119a6b7f634f3ff65fbe59555b30474f849a7e0ce2a4c6 - languageName: node - linkType: hard - -"whatwg-url@npm:^8.5.0": - version: 8.5.0 - resolution: "whatwg-url@npm:8.5.0" +"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": + version: 8.7.0 + resolution: "whatwg-url@npm:8.7.0" dependencies: lodash: ^4.7.0 - tr46: ^2.0.2 + tr46: ^2.1.0 webidl-conversions: ^6.1.0 - checksum: a070c4be45bd09e9f1593d678e798fb66cd2cbccd2a604a7453063c68ab4bb80b4a9e2a0a80562264e5963eb589311c6467599fdac9fb6a4112cd786397920e4 + checksum: ca6a7bc409484c91c595767fc36116cfca03bc1d01ae83d9830342ab1c51ecffc20e7036546d0d3225445b20ffa599b50d32603983cc4a47564f1f5cc9af5b62 languageName: node linkType: hard @@ -8899,6 +8546,21 @@ typescript@^4.3.4: linkType: hard "ws@npm:^7.4.5": + version: 7.5.1 + resolution: "ws@npm:7.5.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: e56541a73cac1d5b4b5e81ddd7e9925e84e45abaab6f3ee5e088e0089b5518f862d8429897243e12482b118971ad8a9a75b1d4900769bce3877878a0a7470043 + languageName: node + linkType: hard + +"ws@npm:~7.4.2": version: 7.4.6 resolution: "ws@npm:7.4.6" peerDependencies: @@ -8949,9 +8611,9 @@ typescript@^4.3.4: linkType: hard "y18n@npm:^5.0.5": - version: 5.0.5 - resolution: "y18n@npm:5.0.5" - checksum: a7d41b0cccca1c98ebab270a944df48eb3b5352d3be0affb8afc8369823f6aa97a5fbead2c5b35e59a5650cb786b2b37627b45be5ff31f02a80dd3b881aceb17 + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 56275bfa72a8a585c4d2905b086862fb881dfe7871adcefe4ecf4c1a6a78c6389b459b427c0a8672ccdb09731a78143acc71f0bcc8dc8d8427869fafe7f18b95 languageName: node linkType: hard @@ -8963,26 +8625,26 @@ typescript@^4.3.4: linkType: hard "yaml@npm:^1.10.0": - version: 1.10.0 - resolution: "yaml@npm:1.10.0" - checksum: d4cc9f9724f8d0aebc2cf52e4e6aa7059f12d50deb54b5225d103462fb2af36e5c0bb419101ca4b1f0cd3b4db9e4139cf2c690e863ac6227648d39d6f4e2522c + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 8d72062ea3dbfd8fae3d6ddd5b741c2aeb5835a31b0719bf14fac71dd84adde0829763d6fbac46387309da00af1440194c796da5efc349b0baf9de39d82ae69e languageName: node linkType: hard "yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2": - version: 20.2.6 - resolution: "yargs-parser@npm:20.2.6" - checksum: ed21fc0f35290dc9ce1714e6a3e656ca1901ff59432f3dd43668244879b2cca6acff0bff66df9cfbcd934d4db6e98e57cae6def2700ca823e85449f2fb664660 + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 3c58da6f6142f93c5207e309764bd90f723b9d7ed43f2e8aad0da1cefab83ee8ebf311dee2e81102646b74450c899e35b35053800b91fac23e6f433056f4c4cf languageName: node linkType: hard -"yargs-parser@npm:5.0.0-security.0": - version: 5.0.0-security.0 - resolution: "yargs-parser@npm:5.0.0-security.0" +"yargs-parser@npm:^5.0.1": + version: 5.0.1 + resolution: "yargs-parser@npm:5.0.1" dependencies: camelcase: ^3.0.0 object.assign: ^4.1.0 - checksum: b351d8dff2ae692815171b4c4d321812767ce903a50284177bbbb79aeadf7312d7d3c9d89605e1077e8d8ee8565123e5a344ed015a719d620a834bd8a060aed5 + checksum: 3fc2fb1a561c87e2c2b303c85b7b35219ffb4a20fefcfe47014e26ba0f936a12428c61ec1b6b4e2addcb1113d08eebfdd5b2043cb206b6e930ac4a7bce3d4e39 languageName: node linkType: hard @@ -9017,8 +8679,8 @@ typescript@^4.3.4: linkType: hard "yargs@npm:^7.1.0": - version: 7.1.1 - resolution: "yargs@npm:7.1.1" + version: 7.1.2 + resolution: "yargs@npm:7.1.2" dependencies: camelcase: ^3.0.0 cliui: ^3.2.0 @@ -9032,7 +8694,14 @@ typescript@^4.3.4: string-width: ^1.0.2 which-module: ^1.0.0 y18n: ^3.2.1 - yargs-parser: 5.0.0-security.0 - checksum: 62bb2345031bbb3dd99626a62fd94caa0c13610c53b3d914792f387432c7c7d49432d85ea9eb6339092aca5788a2f1184507826f98c3af277e1e2202ae1d9341 + yargs-parser: ^5.0.1 + checksum: 584b402e914284428224d7c6222593dc66f66fbeb6db834c8d951219c402ecb7d1124520244ce98238f314bc9dd9477301d808f77156997a9c0b8ded675e48ee + 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