From db3cad909e93b5799fbcd131f7c4cc8dabf16cd6 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Thu, 24 Jul 2025 20:23:42 -0600
Subject: [PATCH 001/140] Add a systemFilePath handlebars helper for better
file path referencing
---
module/handlebarsHelpers/_index.mjs | 5 +++++
module/hooks/init.mjs | 5 ++++-
2 files changed, 9 insertions(+), 1 deletion(-)
create mode 100644 module/handlebarsHelpers/_index.mjs
diff --git a/module/handlebarsHelpers/_index.mjs b/module/handlebarsHelpers/_index.mjs
new file mode 100644
index 0000000..d0923e8
--- /dev/null
+++ b/module/handlebarsHelpers/_index.mjs
@@ -0,0 +1,5 @@
+import { filePath } from "../consts.mjs";
+
+export default {
+ systemFilePath: filePath,
+};
diff --git a/module/hooks/init.mjs b/module/hooks/init.mjs
index 6f1c54e..e57a6c6 100644
--- a/module/hooks/init.mjs
+++ b/module/hooks/init.mjs
@@ -13,6 +13,7 @@ import { registerWorldSettings } from "../settings/world.mjs";
// Utils
import { __ID__ } from "../consts.mjs";
+import helpers from "../handlebarsHelpers/_index.mjs";
import { Logger } from "../utils/Logger.mjs";
import { registerCustomComponents } from "../apps/elements/_index.mjs";
@@ -33,6 +34,8 @@ Hooks.on(`init`, () => {
},
);
- registerCustomComponents();
registerWorldSettings();
+
+ registerCustomComponents();
+ Handlebars.registerHelper(helpers);
});
From 02b49687cfec732561136be3d388390fb63c5c2f Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Thu, 24 Jul 2025 20:33:07 -0600
Subject: [PATCH 002/140] Cleanup logger statements
---
module/apps/AttributeManager.mjs | 2 --
module/documents/Actor.mjs | 3 ---
module/documents/Token.mjs | 4 +---
3 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/module/apps/AttributeManager.mjs b/module/apps/AttributeManager.mjs
index d3874ba..2029e0d 100644
--- a/module/apps/AttributeManager.mjs
+++ b/module/apps/AttributeManager.mjs
@@ -1,6 +1,5 @@
import { __ID__, filePath } from "../consts.mjs";
import { attributeSorter } from "../utils/attributeSort.mjs";
-import { Logger } from "../utils/Logger.mjs";
import { toID } from "../utils/toID.mjs";
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
@@ -133,7 +132,6 @@ export class AttributeManager extends HandlebarsApplicationMixin(ApplicationV2)
};
};
- Logger.debug(`Updating ${binding} value to ${value}`);
setProperty(this.#attributes, binding, value);
await this.render({ parts: [ `attributes` ]});
};
diff --git a/module/documents/Actor.mjs b/module/documents/Actor.mjs
index de78395..ff72c77 100644
--- a/module/documents/Actor.mjs
+++ b/module/documents/Actor.mjs
@@ -1,10 +1,7 @@
-import { Logger } from "../utils/Logger.mjs";
-
const { Actor } = foundry.documents;
export class TAFActor extends Actor {
async modifyTokenAttribute(attribute, value, isDelta = false, isBar = true) {
- Logger.table({ attribute, value, isDelta, isBar });
const attr = foundry.utils.getProperty(this.system, attribute);
const current = isBar ? attr.value : attr;
const update = isDelta ? current + value : value;
diff --git a/module/documents/Token.mjs b/module/documents/Token.mjs
index b6baf2d..068c737 100644
--- a/module/documents/Token.mjs
+++ b/module/documents/Token.mjs
@@ -1,5 +1,3 @@
-import { Logger } from "../utils/Logger.mjs";
-
const { TokenDocument } = foundry.documents;
const { getProperty, getType, hasProperty, isSubclass } = foundry.utils;
@@ -61,7 +59,7 @@ export class TAFTokenDocument extends TokenDocument {
*/
getBarAttribute(barName, {alternative} = {}) {
const attribute = alternative || this[barName]?.attribute;
- Logger.log(barName, attribute);
+
if (!attribute || !this.actor) {
return null;
};
From 44a88cc7b52cb4a8fc34dacfb80042f47dbc982d Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Thu, 24 Jul 2025 20:34:17 -0600
Subject: [PATCH 003/140] Add DialogManager to a global API and create the Ask
dialog for the user
---
module/api.mjs | 30 ++++++++
module/apps/Ask.mjs | 115 +++++++++++++++++++++++++++++++
module/main.mjs | 1 +
module/utils/DialogManager.mjs | 106 ++++++++++++++++++++++++++++
styles/Apps/Ask.css | 40 +++++++++++
styles/main.css | 3 +-
templates/Ask/controls.hbs | 13 ++++
templates/Ask/inputs.hbs | 12 ++++
templates/Ask/inputs/details.hbs | 3 +
templates/Ask/inputs/input.hbs | 12 ++++
10 files changed, 334 insertions(+), 1 deletion(-)
create mode 100644 module/api.mjs
create mode 100644 module/apps/Ask.mjs
create mode 100644 module/utils/DialogManager.mjs
create mode 100644 styles/Apps/Ask.css
create mode 100644 templates/Ask/controls.hbs
create mode 100644 templates/Ask/inputs.hbs
create mode 100644 templates/Ask/inputs/details.hbs
create mode 100644 templates/Ask/inputs/input.hbs
diff --git a/module/api.mjs b/module/api.mjs
new file mode 100644
index 0000000..b139ef9
--- /dev/null
+++ b/module/api.mjs
@@ -0,0 +1,30 @@
+// Apps
+import { Ask } from "./apps/Ask.mjs";
+import { AttributeManager } from "./apps/AttributeManager.mjs";
+import { PlayerSheet } from "./apps/PlayerSheet.mjs";
+
+// Utils
+import { attributeSorter } from "./utils/attributeSort.mjs";
+import { DialogManager } from "./utils/DialogManager.mjs";
+import { toID } from "./utils/toID.mjs";
+
+const { deepFreeze } = foundry.utils;
+
+Object.defineProperty(
+ globalThis,
+ `taf`,
+ {
+ value: deepFreeze({
+ DialogManager,
+ Apps: {
+ Ask,
+ AttributeManager,
+ PlayerSheet,
+ },
+ utils: {
+ attributeSorter,
+ toID,
+ },
+ }),
+ },
+);
diff --git a/module/apps/Ask.mjs b/module/apps/Ask.mjs
new file mode 100644
index 0000000..bcd5f4a
--- /dev/null
+++ b/module/apps/Ask.mjs
@@ -0,0 +1,115 @@
+import { __ID__, filePath } from "../consts.mjs";
+
+const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
+
+export class Ask extends HandlebarsApplicationMixin(ApplicationV2) {
+ static DEFAULT_OPTIONS = {
+ tag: `dialog`,
+ classes: [
+ __ID__,
+ `dialog`, // accesses some Foundry-provided styling
+ `Ask`,
+ ],
+ position: {
+ width: 330,
+ },
+ window: {
+ title: `Questions`,
+ resizable: true,
+ minimizable: true,
+ contentTag: `form`,
+ },
+ form: {
+ closeOnSubmit: true,
+ submitOnChange: false,
+ handler: this.#submit,
+ },
+ actions: {
+ cancel: this.#cancel,
+ },
+ };
+
+ static PARTS = {
+ inputs: {
+ template: filePath(`templates/Ask/inputs.hbs`),
+ templates: [
+ filePath(`templates/Ask/inputs/input.hbs`),
+ filePath(`templates/Ask/inputs/details.hbs`),
+ ],
+ },
+ controls: {
+ template: filePath(`templates/Ask/controls.hbs`),
+ },
+ };
+
+ _inputs = [];
+ alwaysUseAnswerObject = false;
+
+ /** @type {string | undefined} */
+ _description = undefined;
+
+ /** @type {Function | undefined} */
+ _userOnConfirm;
+
+ /** @type {Function | undefined} */
+ _userOnCancel;
+
+ /** @type {Function | undefined} */
+ _userOnClose;
+
+ constructor({
+ inputs = [],
+ description = undefined,
+ onConfirm,
+ onCancel,
+ onClose,
+ alwaysUseAnswerObject,
+ ...options
+ } = {}) {
+ super(options);
+ this.alwaysUseAnswerObject = alwaysUseAnswerObject;
+ this._inputs = inputs;
+ this._description = description;
+ this._userOnCancel = onCancel;
+ this._userOnConfirm = onConfirm;
+ this._userOnClose = onClose;
+ };
+
+ // #region Lifecycle
+ async _onFirstRender() {
+ super._onFirstRender();
+ this.element.show();
+ };
+
+ async _prepareContext() {
+ return {
+ inputs: this._inputs,
+ description: this._description,
+ };
+ };
+
+ async _onClose() {
+ super._onClose();
+ this._userOnClose?.();
+ };
+ // #endregion Lifecycle
+
+ // #region Actions
+ /** @this {AskDialog} */
+ static async #submit(_event, _element, formData) {
+ const answers = formData.object;
+ const keys = Object.keys(answers);
+ if (keys.length === 1 && !this.alwaysUseAnswerObject) {
+ this._userOnConfirm?.(answers[keys[0]]);
+ return;
+ };
+ this._userOnConfirm?.(answers);
+ };
+
+ /** @this {AskDialog} */
+ static async #cancel() {
+ this._userOnCancel?.();
+ this.close();
+ };
+ // #endregion Actions
+};
diff --git a/module/main.mjs b/module/main.mjs
index 8f3b5cc..abde62f 100644
--- a/module/main.mjs
+++ b/module/main.mjs
@@ -1 +1,2 @@
+import "./api.mjs";
import "./hooks/init.mjs";
diff --git a/module/utils/DialogManager.mjs b/module/utils/DialogManager.mjs
new file mode 100644
index 0000000..772f02b
--- /dev/null
+++ b/module/utils/DialogManager.mjs
@@ -0,0 +1,106 @@
+import { Ask } from "../apps/Ask.mjs";
+
+export class DialogManager {
+ /** @type {Map} */
+ static #promises = new Map();
+ static #dialogs = new Map();
+
+ static async close(id) {
+ this.#dialogs.get(id)?.close();
+ this.#dialogs.delete(id);
+ this.#promises.delete(id);
+ };
+
+ /**
+ * Asks the user to provide a simple piece of information, this is primarily
+ * intended to be used within macros so that it can have better info gathering
+ * as needed. This returns an object of input keys/labels to the value the user
+ * input for that label, if there is only one input, this will return the value
+ * without an object wrapper, allowing for easier access.
+ *
+ * @param {AskConfig} data
+ * @param {AskOptions} opts
+ * @returns {AskResult}
+ */
+ static async ask(
+ data,
+ {
+ onlyOneWaiting = true,
+ alwaysUseAnswerObject = true,
+ } = {},
+ ) {
+ if (!data.id) {
+ return {
+ state: `errored`,
+ error: `An ID must be provided`,
+ };
+ };
+ if (!data.inputs.length) {
+ return {
+ state: `errored`,
+ error: `At least one input must be provided`,
+ };
+ };
+ const id = data.id;
+
+ // Don't do multi-thread waiting
+ if (this.#dialogs.has(id)) {
+ const app = this.#dialogs.get(id);
+ app.bringToFront();
+ if (onlyOneWaiting) {
+ return { state: `fronted` };
+ } else {
+ return this.#promises.get(id);
+ };
+ };
+
+ let autofocusClaimed = false;
+ for (const i of data.inputs) {
+ i.id ??= foundry.utils.randomID(16);
+ i.key ??= i.label;
+
+ switch (i.type) {
+ case `input`: {
+ i.inputType ??= `text`;
+ }
+ }
+
+ // Only ever allow one input to claim autofocus
+ i.autofocus &&= !autofocusClaimed;
+ autofocusClaimed ||= i.autofocus;
+
+ // Set the value's attribute name if it isn't specified explicitly
+ if (!i.valueAttribute) {
+ switch (i.inputType) {
+ case `checkbox`:
+ i.valueAttribute = `checked`;
+ break;
+ default:
+ i.valueAttribute = `value`;
+ };
+ };
+ };
+
+ const promise = new Promise((resolve) => {
+ const app = new Ask({
+ ...data,
+ alwaysUseAnswerObject,
+ onClose: () => {
+ this.#dialogs.delete(id);
+ this.#promises.delete(id);
+ resolve({ state: `prompted` });
+ },
+ onConfirm: (answers) => resolve({ state: `prompted`, answers }),
+ });
+ app.render({ force: true });
+ this.#dialogs.set(id, app);
+ });
+
+ this.#promises.set(id, promise);
+ return promise;
+ };
+
+ static get size() {
+ return this.#dialogs.size;
+ };
+};
diff --git a/styles/Apps/Ask.css b/styles/Apps/Ask.css
new file mode 100644
index 0000000..e58bcaa
--- /dev/null
+++ b/styles/Apps/Ask.css
@@ -0,0 +1,40 @@
+.taf.Ask {
+ min-width: 330px;
+
+ .prompt {
+ display: grid;
+ grid-template-columns: 1fr 2fr;
+ gap: 1rem;
+ align-items: center;
+ }
+
+ .window-content {
+ gap: 1rem;
+ overflow: auto;
+ }
+
+ .dialog-content {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ }
+
+ .control-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 1rem;
+
+ button {
+ flex-grow: 1;
+ }
+ }
+
+ label {
+ color: var(--color-form-label);
+ font-weight: bold;
+ }
+
+ p {
+ margin: 0;
+ }
+}
diff --git a/styles/main.css b/styles/main.css
index a07aa4f..bf6264b 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -12,5 +12,6 @@
/* Apps */
@import url("./Apps/common.css") layer(apps);
-@import url("./Apps/PlayerSheet.css") layer(apps);
+@import url("./Apps/Ask.css") layer(apps);
@import url("./Apps/AttributeManager.css") layer(apps);
+@import url("./Apps/PlayerSheet.css") layer(apps);
diff --git a/templates/Ask/controls.hbs b/templates/Ask/controls.hbs
new file mode 100644
index 0000000..a619549
--- /dev/null
+++ b/templates/Ask/controls.hbs
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/templates/Ask/inputs.hbs b/templates/Ask/inputs.hbs
new file mode 100644
index 0000000..f5bdac4
--- /dev/null
+++ b/templates/Ask/inputs.hbs
@@ -0,0 +1,12 @@
+
+ {{#if description}}
+
+ {{ description }}
+
+ {{/if}}
+ {{#each inputs as | i |}}
+
+ {{> (concat (systemFilePath "templates/Ask/inputs/" ) i.type ".hbs") i}}
+
+ {{/each}}
+
diff --git a/templates/Ask/inputs/details.hbs b/templates/Ask/inputs/details.hbs
new file mode 100644
index 0000000..fec6878
--- /dev/null
+++ b/templates/Ask/inputs/details.hbs
@@ -0,0 +1,3 @@
+
+ {{{ details }}}
+
diff --git a/templates/Ask/inputs/input.hbs b/templates/Ask/inputs/input.hbs
new file mode 100644
index 0000000..196b12d
--- /dev/null
+++ b/templates/Ask/inputs/input.hbs
@@ -0,0 +1,12 @@
+
+
From 47e5d5168b96cb133467d868ac25183943fde2cb Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Thu, 24 Jul 2025 20:44:55 -0600
Subject: [PATCH 004/140] Version bump
---
system.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system.json b/system.json
index f2639c0..4252d2e 100644
--- a/system.json
+++ b/system.json
@@ -2,7 +2,7 @@
"id": "taf",
"title": "Text-Based Actors",
"description": "An intentionally minimalist system that enables you to play rules-light games without getting in your way!",
- "version": "2.1.0",
+ "version": "2.2.0",
"download": "https://github.com/Oliver-Akins/Text-Actors-Foundry/releases/latest/download/release.zip",
"manifest": "https://github.com/Oliver-Akins/Text-Actors-Foundry/releases/latest/download/system.json",
"url": "https://github.com/Oliver-Akins/Text-Actors-Foundry",
From fa8dc7d037568ddeba5203340d50e8394bc594d0 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Fri, 25 Jul 2025 21:11:30 -0600
Subject: [PATCH 005/140] Fix the build step to include the assets folder
---
.github/workflows/draft-release.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/draft-release.yaml b/.github/workflows/draft-release.yaml
index bbae45e..000d9e6 100644
--- a/.github/workflows/draft-release.yaml
+++ b/.github/workflows/draft-release.yaml
@@ -42,7 +42,7 @@ jobs:
run: cat system.temp.json | jq -r --tab '.download = "https://github.com/${{ github.repository }}/releases/download/v${{ steps.version.outputs.version }}/release.zip"' > system.json
- name: Create the zip
- run: zip -r release.zip langs module styles templates system.json README.md
+ run: zip -r release.zip langs module styles templates system.json README.md assets
- name: Create the draft release
uses: ncipollo/release-action@v1
From 08a90776ae6283f898376c611794de38d58a2cb8 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Fri, 25 Jul 2025 21:11:44 -0600
Subject: [PATCH 006/140] Add an auto-generated badge to the release content
---
.github/workflows/draft-release.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/draft-release.yaml b/.github/workflows/draft-release.yaml
index 000d9e6..1ac8e85 100644
--- a/.github/workflows/draft-release.yaml
+++ b/.github/workflows/draft-release.yaml
@@ -50,5 +50,6 @@ jobs:
tag: "v${{ steps.version.outputs.version }}"
commit: ${{ github.ref }}
draft: true
+ body:
generateReleaseNotes: true
artifacts: "release.zip,system.json"
From 7d3e6d365396a29b33588b2a9075dbe968cad9e9 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Fri, 25 Jul 2025 22:00:56 -0600
Subject: [PATCH 007/140] Tweak what element is required to be used in order to
drag an attribute
---
module/apps/AttributeManager.mjs | 5 +++--
templates/AttributeManager/attribute-list.hbs | 1 +
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/module/apps/AttributeManager.mjs b/module/apps/AttributeManager.mjs
index 2029e0d..d677606 100644
--- a/module/apps/AttributeManager.mjs
+++ b/module/apps/AttributeManager.mjs
@@ -71,7 +71,7 @@ export class AttributeManager extends HandlebarsApplicationMixin(ApplicationV2)
};
new DragDrop.implementation({
- dragSelector: `[data-attribute]`,
+ dragSelector: `.draggable`,
permissions: {
dragstart: this._canDragStart.bind(this),
drop: this._canDragDrop.bind(this),
@@ -194,7 +194,7 @@ export class AttributeManager extends HandlebarsApplicationMixin(ApplicationV2)
};
_onDragStart(event) {
- const target = event.currentTarget;
+ const target = event.currentTarget.closest(`[data-attribute]`);
if (`link` in event.target.dataset) { return };
let dragData;
@@ -208,6 +208,7 @@ export class AttributeManager extends HandlebarsApplicationMixin(ApplicationV2)
};
if (!dragData) { return };
+ event.dataTransfer.setDragImage(target, 16, 23);
event.dataTransfer.setData(`text/plain`, JSON.stringify(dragData));
};
diff --git a/templates/AttributeManager/attribute-list.hbs b/templates/AttributeManager/attribute-list.hbs
index 6bb3c33..5899acb 100644
--- a/templates/AttributeManager/attribute-list.hbs
+++ b/templates/AttributeManager/attribute-list.hbs
@@ -8,6 +8,7 @@
name="icons/drag-handle"
var:stroke="currentColor"
var:fill="currentColor"
+ class="draggable"
>
{{#if attr.isNew}}
Date: Fri, 25 Jul 2025 22:01:16 -0600
Subject: [PATCH 008/140] Improve the styling of the dragged element a lil bit
to make it retain a background
---
styles/Apps/AttributeManager.css | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/styles/Apps/AttributeManager.css b/styles/Apps/AttributeManager.css
index 4a4bb0c..5bb8567 100644
--- a/styles/Apps/AttributeManager.css
+++ b/styles/Apps/AttributeManager.css
@@ -23,6 +23,11 @@
flex-direction: column;
}
}
+
+ /* Used to style the actual element as dragging */
+ &:has(taf-icon:active) {
+ background: var(--background);
+ }
}
taf-icon {
From 196da71c1d37934e9dc3f2ff1e6d48eec75fef8f Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Fri, 25 Jul 2025 22:14:31 -0600
Subject: [PATCH 009/140] Ensure newly created attributes save properly without
needing to reorder them first
---
module/apps/AttributeManager.mjs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/apps/AttributeManager.mjs b/module/apps/AttributeManager.mjs
index 2029e0d..c0f4834 100644
--- a/module/apps/AttributeManager.mjs
+++ b/module/apps/AttributeManager.mjs
@@ -141,7 +141,7 @@ export class AttributeManager extends HandlebarsApplicationMixin(ApplicationV2)
const id = randomID();
this.#attributes[id] = {
name: ``,
- sort: Number.POSITIVE_INFINITY,
+ sort: Number.MAX_SAFE_INTEGER,
isRange: false,
isNew: true,
};
From d7efa2c4def91649c010cf341f3a3b41fa4f55ef Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Fri, 25 Jul 2025 22:21:56 -0600
Subject: [PATCH 010/140] Make sure the details block types span the full width
of the ask modal
---
styles/Apps/Ask.css | 2 ++
1 file changed, 2 insertions(+)
diff --git a/styles/Apps/Ask.css b/styles/Apps/Ask.css
index e58bcaa..74ddc20 100644
--- a/styles/Apps/Ask.css
+++ b/styles/Apps/Ask.css
@@ -36,5 +36,7 @@
p {
margin: 0;
+ grid-column: 1 / -1;
+ text-indent: 1em;
}
}
From 27dbc2db47358134b85aa7e71f9ffd58a5cada7b Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Fri, 25 Jul 2025 22:26:50 -0600
Subject: [PATCH 011/140] Make checkbox inputs can default to unchecked
---
module/apps/Ask.mjs | 3 ++-
templates/Ask/inputs/checkbox.hbs | 12 ++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 templates/Ask/inputs/checkbox.hbs
diff --git a/module/apps/Ask.mjs b/module/apps/Ask.mjs
index bcd5f4a..472cfbf 100644
--- a/module/apps/Ask.mjs
+++ b/module/apps/Ask.mjs
@@ -33,8 +33,9 @@ export class Ask extends HandlebarsApplicationMixin(ApplicationV2) {
inputs: {
template: filePath(`templates/Ask/inputs.hbs`),
templates: [
- filePath(`templates/Ask/inputs/input.hbs`),
+ filePath(`templates/Ask/inputs/checkbox.hbs`),
filePath(`templates/Ask/inputs/details.hbs`),
+ filePath(`templates/Ask/inputs/input.hbs`),
],
},
controls: {
diff --git a/templates/Ask/inputs/checkbox.hbs b/templates/Ask/inputs/checkbox.hbs
new file mode 100644
index 0000000..cdca5e1
--- /dev/null
+++ b/templates/Ask/inputs/checkbox.hbs
@@ -0,0 +1,12 @@
+
+
From 392923a497d50c0359af931c8b58c479ebe12646 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Fri, 25 Jul 2025 22:36:27 -0600
Subject: [PATCH 012/140] Make the checkbox inputs right-aligned
---
styles/Apps/Ask.css | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/styles/Apps/Ask.css b/styles/Apps/Ask.css
index e58bcaa..1a2fdaa 100644
--- a/styles/Apps/Ask.css
+++ b/styles/Apps/Ask.css
@@ -37,4 +37,10 @@
p {
margin: 0;
}
+
+ input[type="checkbox"] {
+ align-self: center;
+ justify-self: right;
+ margin: 0;
+ }
}
From 40820988dad054b4a81689b3c17929f66256a56b Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 10:51:55 -0600
Subject: [PATCH 013/140] Add my typical options helper for ease of use
---
module/handlebarsHelpers/_index.mjs | 2 ++
module/handlebarsHelpers/options.mjs | 34 ++++++++++++++++++++++++++++
2 files changed, 36 insertions(+)
create mode 100644 module/handlebarsHelpers/options.mjs
diff --git a/module/handlebarsHelpers/_index.mjs b/module/handlebarsHelpers/_index.mjs
index d0923e8..b613f61 100644
--- a/module/handlebarsHelpers/_index.mjs
+++ b/module/handlebarsHelpers/_index.mjs
@@ -1,5 +1,7 @@
import { filePath } from "../consts.mjs";
+import { options } from "./options.mjs";
export default {
systemFilePath: filePath,
+ "taf-options": options,
};
diff --git a/module/handlebarsHelpers/options.mjs b/module/handlebarsHelpers/options.mjs
new file mode 100644
index 0000000..664aaa6
--- /dev/null
+++ b/module/handlebarsHelpers/options.mjs
@@ -0,0 +1,34 @@
+/**
+ * @typedef {object} Option
+ * @property {string} [label]
+ * @property {string|number} value
+ * @property {boolean} [disabled]
+ */
+
+/**
+ * @param {string | number} selected The selected value
+ * @param {Array`,
+ );
+ };
+ return new Handlebars.SafeString(htmlOptions.join(`\n`));
+};
From 7796c829625ce8e7b2afc12d72c087206626194d Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 10:52:55 -0600
Subject: [PATCH 014/140] Move the prompt wrapper into each block partial so
that those which don't need it can leave it out
---
templates/Ask/inputs.hbs | 4 +---
templates/Ask/inputs/checkbox.hbs | 26 ++++++++++++++------------
templates/Ask/inputs/details.hbs | 2 +-
templates/Ask/inputs/input.hbs | 26 ++++++++++++++------------
4 files changed, 30 insertions(+), 28 deletions(-)
diff --git a/templates/Ask/inputs.hbs b/templates/Ask/inputs.hbs
index f5bdac4..36c1ea9 100644
--- a/templates/Ask/inputs.hbs
+++ b/templates/Ask/inputs.hbs
@@ -5,8 +5,6 @@
{{/if}}
{{#each inputs as | i |}}
-
- {{> (concat (systemFilePath "templates/Ask/inputs/" ) i.type ".hbs") i}}
-
+ {{> (concat (systemFilePath "templates/Ask/inputs/" ) i.type ".hbs") i}}
{{/each}}
diff --git a/templates/Ask/inputs/checkbox.hbs b/templates/Ask/inputs/checkbox.hbs
index cdca5e1..ce8fd88 100644
--- a/templates/Ask/inputs/checkbox.hbs
+++ b/templates/Ask/inputs/checkbox.hbs
@@ -1,12 +1,14 @@
-
-
+
+
+
+
diff --git a/templates/Ask/inputs/details.hbs b/templates/Ask/inputs/details.hbs
index fec6878..f84af5d 100644
--- a/templates/Ask/inputs/details.hbs
+++ b/templates/Ask/inputs/details.hbs
@@ -1,3 +1,3 @@
-
+
{{{ details }}}
diff --git a/templates/Ask/inputs/input.hbs b/templates/Ask/inputs/input.hbs
index 196b12d..98922df 100644
--- a/templates/Ask/inputs/input.hbs
+++ b/templates/Ask/inputs/input.hbs
@@ -1,12 +1,14 @@
-
-
+
+
+
+
From ce65e3a516d34d583870d43608ae2e591319f18f Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 10:53:37 -0600
Subject: [PATCH 015/140] Add an error block and validation to help ensure
users know when they messed up the block type
---
module/apps/Ask.mjs | 22 +++++++++++++++++-----
styles/Apps/Ask.css | 13 ++++++++++++-
templates/Ask/inputs/error.hbs | 3 +++
3 files changed, 32 insertions(+), 6 deletions(-)
create mode 100644 templates/Ask/inputs/error.hbs
diff --git a/module/apps/Ask.mjs b/module/apps/Ask.mjs
index 472cfbf..3aa2a5d 100644
--- a/module/apps/Ask.mjs
+++ b/module/apps/Ask.mjs
@@ -2,6 +2,14 @@ import { __ID__, filePath } from "../consts.mjs";
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
+const validInputTypes = [
+ `checkbox`,
+ `details`,
+ `error`,
+ `input`,
+ `select`,
+];
+
export class Ask extends HandlebarsApplicationMixin(ApplicationV2) {
static DEFAULT_OPTIONS = {
tag: `dialog`,
@@ -32,11 +40,7 @@ export class Ask extends HandlebarsApplicationMixin(ApplicationV2) {
static PARTS = {
inputs: {
template: filePath(`templates/Ask/inputs.hbs`),
- templates: [
- filePath(`templates/Ask/inputs/checkbox.hbs`),
- filePath(`templates/Ask/inputs/details.hbs`),
- filePath(`templates/Ask/inputs/input.hbs`),
- ],
+ templates: validInputTypes.map(type => filePath(`templates/Ask/inputs/${type}.hbs`)),
},
controls: {
template: filePath(`templates/Ask/controls.hbs`),
@@ -69,6 +73,14 @@ export class Ask extends HandlebarsApplicationMixin(ApplicationV2) {
} = {}) {
super(options);
this.alwaysUseAnswerObject = alwaysUseAnswerObject;
+
+ for (const input of inputs) {
+ if (!validInputTypes.includes(input.type)) {
+ input.details = `Invalid input type provided: ${input.type}`;
+ input.type = `error`;
+ };
+ };
+
this._inputs = inputs;
this._description = description;
this._userOnCancel = onCancel;
diff --git a/styles/Apps/Ask.css b/styles/Apps/Ask.css
index f0fb24e..f7bb78e 100644
--- a/styles/Apps/Ask.css
+++ b/styles/Apps/Ask.css
@@ -36,8 +36,19 @@
p {
margin: 0;
- grid-column: 1 / -1;
text-indent: 1em;
+
+ &.error {
+ font-size: 1.1rem;
+ padding: 6px 8px;
+ box-shadow: 0 0 10px var(--color-shadow-dark);
+ color: var(--color-text-light-1);
+ border-radius: 5px;
+ text-align: center;
+ background: var(--color-level-error-bg);
+ border: 1px solid var(--color-level-error);
+ text-indent: 0;
+ }
}
input[type="checkbox"] {
diff --git a/templates/Ask/inputs/error.hbs b/templates/Ask/inputs/error.hbs
new file mode 100644
index 0000000..6fb1086
--- /dev/null
+++ b/templates/Ask/inputs/error.hbs
@@ -0,0 +1,3 @@
+
+ {{ details }}
+
\ No newline at end of file
From 1cdf03fe361172ce8daa5974034177d0bdd291b1 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 10:54:06 -0600
Subject: [PATCH 016/140] Add the handlebars for the select block
---
templates/Ask/inputs/select.hbs | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 templates/Ask/inputs/select.hbs
diff --git a/templates/Ask/inputs/select.hbs b/templates/Ask/inputs/select.hbs
new file mode 100644
index 0000000..9d64e34
--- /dev/null
+++ b/templates/Ask/inputs/select.hbs
@@ -0,0 +1,13 @@
+
+
+
+
From fe022b2d43ca3fcd32a9c1c06973b68a89b2bb73 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 11:03:17 -0600
Subject: [PATCH 017/140] Remove unused CSS reset
---
styles/resets/inputs.css | 5 -----
1 file changed, 5 deletions(-)
delete mode 100644 styles/resets/inputs.css
diff --git a/styles/resets/inputs.css b/styles/resets/inputs.css
deleted file mode 100644
index aa6e6b7..0000000
--- a/styles/resets/inputs.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.taf > .window-content {
- button, input {
- all: initial;
- }
-}
From 08fb6768adbcdbf13d24faca3fa9a00f02d27d80 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 11:06:05 -0600
Subject: [PATCH 018/140] Add a divider block type
---
module/apps/Ask.mjs | 1 +
styles/elements/hr.css | 7 +++++++
styles/main.css | 4 ++++
styles/resets/hr.css | 3 +++
templates/Ask/inputs/divider.hbs | 1 +
5 files changed, 16 insertions(+)
create mode 100644 styles/elements/hr.css
create mode 100644 styles/resets/hr.css
create mode 100644 templates/Ask/inputs/divider.hbs
diff --git a/module/apps/Ask.mjs b/module/apps/Ask.mjs
index 3aa2a5d..f3d009a 100644
--- a/module/apps/Ask.mjs
+++ b/module/apps/Ask.mjs
@@ -5,6 +5,7 @@ const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
const validInputTypes = [
`checkbox`,
`details`,
+ `divider`,
`error`,
`input`,
`select`,
diff --git a/styles/elements/hr.css b/styles/elements/hr.css
new file mode 100644
index 0000000..2f87ec9
--- /dev/null
+++ b/styles/elements/hr.css
@@ -0,0 +1,7 @@
+.taf > .window-content hr {
+ height: 1px;
+ background: rebeccapurple;
+ border-radius: 0;
+ margin: 0;
+ padding: 0;
+}
diff --git a/styles/main.css b/styles/main.css
index bf6264b..45fc73d 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -1,11 +1,15 @@
@layer resets, themes, elements, components, partials, apps, exceptions;
+/* Resets */
+@import url("./resets/hr.css") layer(resets);
+
/* Themes */
@import url("./themes/dark.css") layer(themes);
@import url("./themes/light.css") layer(themes);
/* Elements */
@import url("./elements/headers.css") layer(elements);
+@import url("./elements/hr.css") layer(elements);
@import url("./elements/input.css") layer(elements);
@import url("./elements/p.css") layer(elements);
@import url("./elements/prose-mirror.css") layer(elements);
diff --git a/styles/resets/hr.css b/styles/resets/hr.css
new file mode 100644
index 0000000..2ab3970
--- /dev/null
+++ b/styles/resets/hr.css
@@ -0,0 +1,3 @@
+.taf > .window-content hr {
+ all: initial;
+}
diff --git a/templates/Ask/inputs/divider.hbs b/templates/Ask/inputs/divider.hbs
new file mode 100644
index 0000000..e123ba7
--- /dev/null
+++ b/templates/Ask/inputs/divider.hbs
@@ -0,0 +1 @@
+
From daa88fb272b6caf19ad67ab1ff71e556dc43633b Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 22:36:37 -0600
Subject: [PATCH 019/140] Add better styling for checkboxes to make them more
distinct
---
styles/elements/input.css | 50 +++++++++++++++++++++++++++++++++++++++
styles/main.css | 1 +
styles/resets/inputs.css | 8 +++++++
3 files changed, 59 insertions(+)
create mode 100644 styles/resets/inputs.css
diff --git a/styles/elements/input.css b/styles/elements/input.css
index 9b72811..4c6c747 100644
--- a/styles/elements/input.css
+++ b/styles/elements/input.css
@@ -3,4 +3,54 @@
--input-height: 2.5rem;
font-size: 1.75rem;
}
+
+ &[type="checkbox"] {
+ --checkbox-checked-color: var(--color-warm-1);
+ width: var(--checkbox-size);
+ height: var(--checkbox-size);
+ background: var(--input-background-color);
+ border: 2px solid var(--color-cool-3);
+ position: relative;
+ border-radius: 4px;
+ cursor: pointer;
+
+ &::before, &::after {
+ display: none;
+ }
+
+ &:focus-visible {
+ outline: 2px solid var(--checkbox-checked-color);
+ outline-offset: 3px;
+ }
+
+ &:checked::after {
+ display: block;
+ position: absolute;
+ inset: 4px;
+ z-index: 1;
+ content: "";
+ border-radius: 4px;
+ background: var(--checkbox-checked-color);
+ cursor: pointer;
+ }
+
+ &:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+
+ &::before {
+ display: block;
+ position: absolute;
+ inset: 0;
+ content: "";
+ background: var(--color-level-error-bg);
+ border-radius: 2px;
+ cursor: not-allowed;
+ }
+
+ &::after {
+ cursor: not-allowed;
+ }
+ }
+ }
}
diff --git a/styles/main.css b/styles/main.css
index 45fc73d..16de3e5 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -2,6 +2,7 @@
/* Resets */
@import url("./resets/hr.css") layer(resets);
+@import url("./resets/inputs.css") layer(resets);
/* Themes */
@import url("./themes/dark.css") layer(themes);
diff --git a/styles/resets/inputs.css b/styles/resets/inputs.css
new file mode 100644
index 0000000..0a7928f
--- /dev/null
+++ b/styles/resets/inputs.css
@@ -0,0 +1,8 @@
+.taf > .window-content {
+ input[type="checkbox"] {
+ all: initial;
+ &::after, &::before {
+ all: initial;
+ }
+ }
+}
From c8d1259e6fa6beaaeaa315c84154b37af446c197 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 22:44:14 -0600
Subject: [PATCH 020/140] Ensure attribute values remain centered when the
attribute name is long
---
styles/Apps/PlayerSheet.css | 1 +
1 file changed, 1 insertion(+)
diff --git a/styles/Apps/PlayerSheet.css b/styles/Apps/PlayerSheet.css
index cb81dbd..525f01b 100644
--- a/styles/Apps/PlayerSheet.css
+++ b/styles/Apps/PlayerSheet.css
@@ -30,6 +30,7 @@
align-items: center;
gap: 4px;
width: 100px;
+ margin: 0 auto;
> input {
text-align: center;
From d66402f5cf86463899f0ad337fe8f5e970ce0919 Mon Sep 17 00:00:00 2001
From: Oliver-Akins
Date: Sat, 26 Jul 2025 22:45:14 -0600
Subject: [PATCH 021/140] Version bump
---
system.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system.json b/system.json
index 4252d2e..8c1dfca 100644
--- a/system.json
+++ b/system.json
@@ -2,7 +2,7 @@
"id": "taf",
"title": "Text-Based Actors",
"description": "An intentionally minimalist system that enables you to play rules-light games without getting in your way!",
- "version": "2.2.0",
+ "version": "2.2.1",
"download": "https://github.com/Oliver-Akins/Text-Actors-Foundry/releases/latest/download/release.zip",
"manifest": "https://github.com/Oliver-Akins/Text-Actors-Foundry/releases/latest/download/system.json",
"url": "https://github.com/Oliver-Akins/Text-Actors-Foundry",
From 5cc94f9185fe85912259dfcfd7a37ba66a7655bb Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Mon, 1 Sep 2025 22:46:43 -0600
Subject: [PATCH 022/140] Allow read-mode on Actor sheets
---
styles/elements/prose-mirror.css | 3 ++-
templates/PlayerSheet/content.hbs | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/styles/elements/prose-mirror.css b/styles/elements/prose-mirror.css
index 8b6189d..85420d7 100644
--- a/styles/elements/prose-mirror.css
+++ b/styles/elements/prose-mirror.css
@@ -1,8 +1,9 @@
.taf > .window-content prose-mirror {
background: var(--prosemirror-background);
+ gap: 0;
.editor-content {
- padding: 0 8px 8px;
+ padding: 8px;
}
.tableWrapper th,
diff --git a/templates/PlayerSheet/content.hbs b/templates/PlayerSheet/content.hbs
index 4d89fb2..c7b547d 100644
--- a/templates/PlayerSheet/content.hbs
+++ b/templates/PlayerSheet/content.hbs
@@ -6,6 +6,7 @@
value="{{system.content}}"
collaborate="true"
data-document-uuid="{{actor.uuid}}"
+ toggled="true"
>
{{{ enriched.system.content }}}
From 865bf87b25769d55ba04b2e0cd5e1acaf6079b18 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Thu, 4 Sep 2025 18:48:38 -0600
Subject: [PATCH 023/140] Add tooltips for the attribute names on the player
sheet
---
templates/PlayerSheet/attributes.hbs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/templates/PlayerSheet/attributes.hbs b/templates/PlayerSheet/attributes.hbs
index 80d6085..c52b575 100644
--- a/templates/PlayerSheet/attributes.hbs
+++ b/templates/PlayerSheet/attributes.hbs
@@ -12,6 +12,7 @@
name="{{attr.path}}.value"
value="{{attr.value}}"
aria-label="Current value"
+ data-tooltip="@{{ attr.id }}{{#if attr.isRange}}.value{{/if}}"
>
{{#if attr.isRange}}
/
@@ -21,6 +22,7 @@
name="{{attr.path}}.max"
value="{{attr.max}}"
aria-label="Maximum value"
+ data-tooltip="@{{ attr.id }}.max"
>
{{/if}}
From 92e7ec1c72080b0ce9a3f2f5251a9f0f25d1eefb Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Thu, 4 Sep 2025 19:35:11 -0600
Subject: [PATCH 024/140] Prevent item creation and hide the item tab
---
module/documents/Item.mjs | 7 +++++++
module/hooks/init.mjs | 5 +++++
2 files changed, 12 insertions(+)
create mode 100644 module/documents/Item.mjs
diff --git a/module/documents/Item.mjs b/module/documents/Item.mjs
new file mode 100644
index 0000000..683187e
--- /dev/null
+++ b/module/documents/Item.mjs
@@ -0,0 +1,7 @@
+const { Item } = foundry.documents;
+
+export class TAFItem extends Item {
+ async _preCreate() {
+ return false;
+ };
+};
diff --git a/module/hooks/init.mjs b/module/hooks/init.mjs
index e57a6c6..ecf09b9 100644
--- a/module/hooks/init.mjs
+++ b/module/hooks/init.mjs
@@ -6,6 +6,7 @@ import { PlayerData } from "../data/Player.mjs";
// Documents
import { TAFActor } from "../documents/Actor.mjs";
+import { TAFItem } from "../documents/Item.mjs";
import { TAFTokenDocument } from "../documents/Token.mjs";
// Settings
@@ -25,6 +26,10 @@ Hooks.on(`init`, () => {
CONFIG.Actor.dataModels.player = PlayerData;
+ // We disable items in the system for now
+ CONFIG.Item.documentClass = TAFItem;
+ delete CONFIG.ui.sidebar.TABS.items;
+
foundry.documents.collections.Actors.registerSheet(
__ID__,
PlayerSheet,
From cd3f076b7d3123fb41cda7416e760a8659715287 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Thu, 4 Sep 2025 19:37:18 -0600
Subject: [PATCH 025/140] Improve handling of checkbox inputs within the
DialogManager.ask
---
module/utils/DialogManager.mjs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/module/utils/DialogManager.mjs b/module/utils/DialogManager.mjs
index 772f02b..fdf6e8b 100644
--- a/module/utils/DialogManager.mjs
+++ b/module/utils/DialogManager.mjs
@@ -73,7 +73,9 @@ export class DialogManager {
if (!i.valueAttribute) {
switch (i.inputType) {
case `checkbox`:
- i.valueAttribute = `checked`;
+ i.type = `checkbox`;
+ delete i.valueAttribute;
+ delete i.inputType;
break;
default:
i.valueAttribute = `value`;
From df9a63073a8f98f0aa0b6fceda2ea3838018dda9 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Thu, 4 Sep 2025 20:21:06 -0600
Subject: [PATCH 026/140] Ensure AttributeManager is a singleton per actor
---
module/apps/PlayerSheet.mjs | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/module/apps/PlayerSheet.mjs b/module/apps/PlayerSheet.mjs
index 23b1082..eecd4ff 100644
--- a/module/apps/PlayerSheet.mjs
+++ b/module/apps/PlayerSheet.mjs
@@ -54,6 +54,12 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
return controls;
};
+
+ async close() {
+ this.attributeManager?.close();
+ this.attributeManager = null;
+ return super.close();
+ };
// #endregion Lifecycle
// #region Data Prep
@@ -103,10 +109,16 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
// #endregion Data Prep
// #region Actions
+ attributeManager = null;
+
/** @this {PlayerSheet} */
static async #manageAttributes() {
- const app = new AttributeManager({ document: this.actor });
- await app.render({ force: true });
+ this.attributeManager ??= new AttributeManager({ document: this.actor });
+ if (this.attributeManager.rendered) {
+ await this.attributeManager.bringToFront();
+ } else {
+ await this.attributeManager.render({ force: true });
+ }
};
// #endregion Actions
};
From ca267868a129bfc2d48c74ec91f86fb60ce3172d Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 6 Sep 2025 18:59:07 -0600
Subject: [PATCH 027/140] Update the draft release procedure to use a different
text replacement method (closes #41)
---
.github/workflows/draft-release.yaml | 14 +++++++-------
system.json | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/draft-release.yaml b/.github/workflows/draft-release.yaml
index 1ac8e85..ad2b271 100644
--- a/.github/workflows/draft-release.yaml
+++ b/.github/workflows/draft-release.yaml
@@ -1,7 +1,7 @@
name: Create Draft Release
on: [workflow_dispatch]
jobs:
- everything:
+ draft:
runs-on: ubuntu-latest
steps:
# Checkout the repository
@@ -33,13 +33,13 @@ jobs:
- run: npm run build
- run: node scripts/buildCompendia.mjs
- - name: Move system.json to a temp file
- id: manifest-move
- run: mv system.json system.temp.json
-
- - name: Update the download property in the manifest
+ - name: Update the manifest with the relevant properties
id: manifest-update
- run: cat system.temp.json | jq -r --tab '.download = "https://github.com/${{ github.repository }}/releases/download/v${{ steps.version.outputs.version }}/release.zip"' > system.json
+ uses: microsoft/variable-substitution@v1
+ with:
+ files: "system.json"
+ env:
+ download: "https://github.com/${{ github.repository }}/releases/download/v${{ steps.version.outputs.version }}/release.zip"
- name: Create the zip
run: zip -r release.zip langs module styles templates system.json README.md assets
diff --git a/system.json b/system.json
index 8c1dfca..e3bb983 100644
--- a/system.json
+++ b/system.json
@@ -3,7 +3,7 @@
"title": "Text-Based Actors",
"description": "An intentionally minimalist system that enables you to play rules-light games without getting in your way!",
"version": "2.2.1",
- "download": "https://github.com/Oliver-Akins/Text-Actors-Foundry/releases/latest/download/release.zip",
+ "download": "#{DOWNLOAD}#",
"manifest": "https://github.com/Oliver-Akins/Text-Actors-Foundry/releases/latest/download/system.json",
"url": "https://github.com/Oliver-Akins/Text-Actors-Foundry",
"compatibility": {
From 171a133563f6356037c7cd167410973a341f89f7 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Mon, 15 Sep 2025 21:57:09 -0600
Subject: [PATCH 028/140] Update manifest data
---
system.json | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/system.json b/system.json
index e3bb983..1b806a5 100644
--- a/system.json
+++ b/system.json
@@ -4,18 +4,15 @@
"description": "An intentionally minimalist system that enables you to play rules-light games without getting in your way!",
"version": "2.2.1",
"download": "#{DOWNLOAD}#",
- "manifest": "https://github.com/Oliver-Akins/Text-Actors-Foundry/releases/latest/download/system.json",
- "url": "https://github.com/Oliver-Akins/Text-Actors-Foundry",
+ "manifest": "https://github.com/Eldritch-Oliver/Text-Actors-Foundry/releases/latest/download/system.json",
+ "url": "https://github.com/Eldritch-Oliver/Text-Actors-Foundry",
"compatibility": {
"minimum": 13,
"verified": 13,
"maximum": 13
},
"authors": [
- {
- "name": "Oliver Akins",
- "url": "https://oliver.akins.me"
- }
+ { "name": "Oliver" }
],
"esmodules": [
"./module/main.mjs"
From a98af33477977906f09c5141e47712c31dac3da9 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Tue, 16 Sep 2025 00:35:05 -0600
Subject: [PATCH 029/140] Tweak indentation to be more consistent with other
applications
---
module/apps/AttributeManager.mjs | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/module/apps/AttributeManager.mjs b/module/apps/AttributeManager.mjs
index b5f9ce7..c81bb1a 100644
--- a/module/apps/AttributeManager.mjs
+++ b/module/apps/AttributeManager.mjs
@@ -34,12 +34,8 @@ export class AttributeManager extends HandlebarsApplicationMixin(ApplicationV2)
};
static PARTS = {
- attributes: {
- template: filePath(`templates/AttributeManager/attribute-list.hbs`),
- },
- controls: {
- template: filePath(`templates/AttributeManager/controls.hbs`),
- },
+ attributes: { template: filePath(`templates/AttributeManager/attribute-list.hbs`) },
+ controls: { template: filePath(`templates/AttributeManager/controls.hbs`) },
};
// #endregion Options
From c50e88e4836bbfe62576981205fc724c1067cc77 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Tue, 16 Sep 2025 00:45:08 -0600
Subject: [PATCH 030/140] Add an application for controlling the size settings.
---
module/apps/ResizeControlManager.mjs | 67 +++++++++++++++++++++
styles/Apps/ResizeControlManager.css | 10 +++
styles/main.css | 1 +
templates/ResizeControlManager/controls.hbs | 7 +++
templates/ResizeControlManager/settings.hbs | 29 +++++++++
5 files changed, 114 insertions(+)
create mode 100644 module/apps/ResizeControlManager.mjs
create mode 100644 styles/Apps/ResizeControlManager.css
create mode 100644 templates/ResizeControlManager/controls.hbs
create mode 100644 templates/ResizeControlManager/settings.hbs
diff --git a/module/apps/ResizeControlManager.mjs b/module/apps/ResizeControlManager.mjs
new file mode 100644
index 0000000..3a42290
--- /dev/null
+++ b/module/apps/ResizeControlManager.mjs
@@ -0,0 +1,67 @@
+import { __ID__, filePath } from "../consts.mjs";
+
+const { HandlebarsApplicationMixin, DocumentSheetV2 } = foundry.applications.api;
+const { getProperty } = foundry.utils;
+
+export class ResizeControlManager extends HandlebarsApplicationMixin(DocumentSheetV2) {
+
+ // #region Options
+ static DEFAULT_OPTIONS = {
+ classes: [
+ __ID__,
+ `ResizeControlManager`,
+ ],
+ position: {
+ width: 400,
+ height: `auto`,
+ },
+ window: {
+ resizable: true,
+ },
+ form: {
+ submitOnChange: false,
+ closeOnSubmit: true,
+ },
+ actions: {},
+ };
+
+ static PARTS = {
+ settings: { template: filePath(`templates/ResizeControlManager/settings.hbs`) },
+ controls: { template: filePath(`templates/ResizeControlManager/controls.hbs`) },
+ };
+ // #endregion Options
+
+ // #region Instance Data
+ get title() {
+ return `Sizing Settings For : ${this.document.name}`;
+ };
+ // #endregion Instance Data
+
+ // #region Lifecycle
+ async _onRender(context, options) {
+ await super._onRender(context, options);
+ };
+ // #endregion Lifecycle
+
+ // #region Data Prep
+ async _prepareContext() {
+ const sizing = getProperty(this.document, `flags.${__ID__}.PlayerSheet.size`) ?? {};
+
+ const ctx = {
+ meta: {
+ idp: this.id,
+ },
+ width: sizing.width,
+ height: sizing.height,
+ resizable: sizing.resizable,
+ resizeOptions: [
+ { label: `Default`, value: `` },
+ { label: `Resizable`, value: `true` },
+ { label: `No Resizing`, value: `false` },
+ ],
+ };
+
+ return ctx;
+ };
+ // #endregion Data Prep
+};
diff --git a/styles/Apps/ResizeControlManager.css b/styles/Apps/ResizeControlManager.css
new file mode 100644
index 0000000..8ccd047
--- /dev/null
+++ b/styles/Apps/ResizeControlManager.css
@@ -0,0 +1,10 @@
+.taf.ResizeControlManager {
+ fieldset {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
+ align-items: center;
+ gap: 8px;
+ border: 1px solid rebeccapurple;
+ border-radius: 4px;
+ }
+}
diff --git a/styles/main.css b/styles/main.css
index 16de3e5..bc257ab 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -20,3 +20,4 @@
@import url("./Apps/Ask.css") layer(apps);
@import url("./Apps/AttributeManager.css") layer(apps);
@import url("./Apps/PlayerSheet.css") layer(apps);
+@import url("./Apps/ResizeControlManager.css") layer(apps);
diff --git a/templates/ResizeControlManager/controls.hbs b/templates/ResizeControlManager/controls.hbs
new file mode 100644
index 0000000..6f62afb
--- /dev/null
+++ b/templates/ResizeControlManager/controls.hbs
@@ -0,0 +1,7 @@
+
+
+
diff --git a/templates/ResizeControlManager/settings.hbs b/templates/ResizeControlManager/settings.hbs
new file mode 100644
index 0000000..39a1f20
--- /dev/null
+++ b/templates/ResizeControlManager/settings.hbs
@@ -0,0 +1,29 @@
+
From dff8a46ebbe02d6459530da246b9740bcfca064d Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Tue, 16 Sep 2025 00:45:48 -0600
Subject: [PATCH 031/140] Make the size settings apply to the application when
it is constructed
---
module/apps/PlayerSheet.mjs | 65 ++++++++++++++++++++++++++++++++-----
1 file changed, 56 insertions(+), 9 deletions(-)
diff --git a/module/apps/PlayerSheet.mjs b/module/apps/PlayerSheet.mjs
index eecd4ff..54c7d44 100644
--- a/module/apps/PlayerSheet.mjs
+++ b/module/apps/PlayerSheet.mjs
@@ -1,9 +1,11 @@
import { __ID__, filePath } from "../consts.mjs";
import { AttributeManager } from "./AttributeManager.mjs";
import { attributeSorter } from "../utils/attributeSort.mjs";
+import { ResizeControlManager } from "./ResizeControlManager.mjs";
const { HandlebarsApplicationMixin } = foundry.applications.api;
const { ActorSheetV2 } = foundry.applications.sheets;
+const { getProperty } = foundry.utils;
export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
@@ -26,6 +28,7 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
},
actions: {
manageAttributes: this.#manageAttributes,
+ sizeSettings: this.#configureSizeSettings,
},
};
@@ -37,6 +40,31 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
// #endregion Options
// #region Lifecycle
+ constructor(options) {
+ if (options.document) {
+ const sizing = getProperty(options.document, `flags.${__ID__}.PlayerSheet.size`) ?? {};
+
+ options.window ??= {};
+ switch (sizing.resizable) {
+ case `false`:
+ options.window.resizable ??= false;
+ break;
+ case `true`:
+ options.window.resizable ??= true;
+ break;
+ };
+
+ options.position ??= {};
+ if (sizing.width) {
+ options.position.width ??= sizing.width;
+ }
+ if (sizing.height) {
+ options.position.height ??= sizing.height;
+ }
+ };
+ super(options);
+ };
+
_getHeaderControls() {
const controls = super._getHeaderControls();
@@ -51,13 +79,22 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
return isGM || (allowPlayerEdits && editable);
},
});
+ controls.push({
+ icon: `fa-solid fa-crop-simple`,
+ label: `Configure Size`,
+ action: `sizeSettings`,
+ visible: () => {
+ const isGM = game.user.isGM;
+ return isGM;
+ },
+ });
return controls;
};
async close() {
- this.attributeManager?.close();
- this.attributeManager = null;
+ this.#attributeManager?.close();
+ this.#attributeManager = null;
return super.close();
};
// #endregion Lifecycle
@@ -109,16 +146,26 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
// #endregion Data Prep
// #region Actions
- attributeManager = null;
-
+ #attributeManager = null;
/** @this {PlayerSheet} */
static async #manageAttributes() {
- this.attributeManager ??= new AttributeManager({ document: this.actor });
- if (this.attributeManager.rendered) {
- await this.attributeManager.bringToFront();
+ this.#attributeManager ??= new AttributeManager({ document: this.actor });
+ if (this.#attributeManager.rendered) {
+ await this.#attributeManager.bringToFront();
} else {
- await this.attributeManager.render({ force: true });
- }
+ await this.#attributeManager.render({ force: true });
+ };
+ };
+
+ #sizeSettings = null;
+ /** @this {PlayerSheet} */
+ static async #configureSizeSettings() {
+ this.#sizeSettings ??= new ResizeControlManager({ document: this.actor });
+ if (this.#sizeSettings.rendered) {
+ await this.#sizeSettings.bringToFront();
+ } else {
+ await this.#sizeSettings.render({ force: true });
+ };
};
// #endregion Actions
};
From c29fa3e0174cd1da47de80da0b9c54d3499a98af Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 17 Sep 2025 19:12:23 -0600
Subject: [PATCH 032/140] Update the size settings to apply without using the
constructor
---
module/apps/PlayerSheet.mjs | 41 ++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 21 deletions(-)
diff --git a/module/apps/PlayerSheet.mjs b/module/apps/PlayerSheet.mjs
index 54c7d44..e9caf53 100644
--- a/module/apps/PlayerSheet.mjs
+++ b/module/apps/PlayerSheet.mjs
@@ -40,29 +40,28 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
// #endregion Options
// #region Lifecycle
- constructor(options) {
- if (options.document) {
- const sizing = getProperty(options.document, `flags.${__ID__}.PlayerSheet.size`) ?? {};
+ _initializeApplicationOptions(options) {
+ const sizing = getProperty(options.document, `flags.${__ID__}.PlayerSheet.size`) ?? {};
- options.window ??= {};
- switch (sizing.resizable) {
- case `false`:
- options.window.resizable ??= false;
- break;
- case `true`:
- options.window.resizable ??= true;
- break;
- };
-
- options.position ??= {};
- if (sizing.width) {
- options.position.width ??= sizing.width;
- }
- if (sizing.height) {
- options.position.height ??= sizing.height;
- }
+ options.window ??= {};
+ switch (sizing.resizable) {
+ case `false`:
+ options.window.resizable ??= false;
+ break;
+ case `true`:
+ options.window.resizable ??= true;
+ break;
};
- super(options);
+
+ options.position ??= {};
+ if (sizing.width) {
+ options.position.width ??= sizing.width;
+ };
+ if (sizing.height) {
+ options.position.height ??= sizing.height;
+ };
+
+ return super._initializeApplicationOptions(options);
};
_getHeaderControls() {
From baaafcccfc8aaa1faac871a41dcb7bd765bffd3a Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 17 Sep 2025 19:13:22 -0600
Subject: [PATCH 033/140] Make the styling of the save button more consistent
---
styles/Apps/ResizeControlManager.css | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/styles/Apps/ResizeControlManager.css b/styles/Apps/ResizeControlManager.css
index 8ccd047..7783d40 100644
--- a/styles/Apps/ResizeControlManager.css
+++ b/styles/Apps/ResizeControlManager.css
@@ -7,4 +7,14 @@
border: 1px solid rebeccapurple;
border-radius: 4px;
}
+
+ .controls {
+ display: flex;
+ flex-direction: row;
+ gap: 8px;
+
+ button {
+ flex-grow: 1;
+ }
+ }
}
From b683e8b5a04440fa411f02aaf86555c8cf6e810e Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 17 Sep 2025 19:20:49 -0600
Subject: [PATCH 034/140] Remove unneeded _onRender method
---
module/apps/ResizeControlManager.mjs | 6 ------
1 file changed, 6 deletions(-)
diff --git a/module/apps/ResizeControlManager.mjs b/module/apps/ResizeControlManager.mjs
index 3a42290..3bd2b08 100644
--- a/module/apps/ResizeControlManager.mjs
+++ b/module/apps/ResizeControlManager.mjs
@@ -37,12 +37,6 @@ export class ResizeControlManager extends HandlebarsApplicationMixin(DocumentShe
};
// #endregion Instance Data
- // #region Lifecycle
- async _onRender(context, options) {
- await super._onRender(context, options);
- };
- // #endregion Lifecycle
-
// #region Data Prep
async _prepareContext() {
const sizing = getProperty(this.document, `flags.${__ID__}.PlayerSheet.size`) ?? {};
From cb266b3c1efb69cdfb5936b9183ec20e944c22bc Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 17 Sep 2025 19:23:34 -0600
Subject: [PATCH 035/140] Version bump for release
---
system.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system.json b/system.json
index 1b806a5..0f4d84a 100644
--- a/system.json
+++ b/system.json
@@ -2,7 +2,7 @@
"id": "taf",
"title": "Text-Based Actors",
"description": "An intentionally minimalist system that enables you to play rules-light games without getting in your way!",
- "version": "2.2.1",
+ "version": "2.3.0",
"download": "#{DOWNLOAD}#",
"manifest": "https://github.com/Eldritch-Oliver/Text-Actors-Foundry/releases/latest/download/system.json",
"url": "https://github.com/Eldritch-Oliver/Text-Actors-Foundry",
From 65cc95c35c8e13a49528f8cbe072edb002c8a0dc Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 27 Sep 2025 11:48:04 -0600
Subject: [PATCH 036/140] Begin working on a symlink script to make
intellisense better
---
.env.template | 2 +
.gitignore | 1 +
.vscode/settings.json | 1 +
package-lock.json | 181 ++++------------------------------------
package.json | 6 +-
scripts/linkFoundry.mjs | 10 +++
6 files changed, 31 insertions(+), 170 deletions(-)
create mode 100644 .env.template
create mode 100644 scripts/linkFoundry.mjs
diff --git a/.env.template b/.env.template
new file mode 100644
index 0000000..180dbd6
--- /dev/null
+++ b/.env.template
@@ -0,0 +1,2 @@
+# The absolute path to the Foundry installation to create symlinks to
+FOUNDRY_ROOT=""
diff --git a/.gitignore b/.gitignore
index b22745b..7ab2098 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
node_modules/
deprecated
+.env
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 3f6e97a..70ee187 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -11,6 +11,7 @@
".styles": false,
"node_modules": true,
"packs": true,
+ "foundry": false
},
"html.customData": [
"./.vscode/components.html-data.json"
diff --git a/package-lock.json b/package-lock.json
index 961d542..050c8aa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,9 +9,9 @@
"@foundryvtt/foundryvtt-cli": "^1.0.3",
"@league-of-foundry-developers/foundry-vtt-types": "^9.280.0",
"@stylistic/eslint-plugin": "^2.6.1",
+ "dotenv": "^17.2.2",
"eslint": "^9.8.0",
- "globals": "^15.9.0",
- "sass": "^1.77.8"
+ "globals": "^15.9.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
@@ -2743,31 +2743,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/anymatch/node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -2830,18 +2805,6 @@
}
]
},
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2941,42 +2904,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.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"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/classic-level": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz",
@@ -3098,6 +3025,19 @@
"node": ">=8"
}
},
+ "node_modules/dotenv": {
+ "version": "17.2.2",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.2.tgz",
+ "integrity": "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
"node_modules/earcut": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
@@ -3460,20 +3400,6 @@
"is-callable": "^1.1.3"
}
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -3701,12 +3627,6 @@
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
"dev": true
},
- "node_modules/immutable": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
- "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
- "dev": true
- },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -3754,18 +3674,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-buffer": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
@@ -4133,15 +4041,6 @@
"node-gyp-build-test": "build-test.js"
}
},
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -4505,30 +4404,6 @@
}
]
},
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/readdirp/node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -4590,23 +4465,6 @@
"queue-microtask": "^1.2.2"
}
},
- "node_modules/sass": {
- "version": "1.77.8",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
- "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
- "dev": true,
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/semver": {
"version": "7.6.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
@@ -4723,15 +4581,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
diff --git a/package.json b/package.json
index b58c939..4804900 100644
--- a/package.json
+++ b/package.json
@@ -4,13 +4,11 @@
"@foundryvtt/foundryvtt-cli": "^1.0.3",
"@league-of-foundry-developers/foundry-vtt-types": "^9.280.0",
"@stylistic/eslint-plugin": "^2.6.1",
+ "dotenv": "^17.2.2",
"eslint": "^9.8.0",
- "globals": "^15.9.0",
- "sass": "^1.77.8"
+ "globals": "^15.9.0"
},
"scripts": {
- "css": "sass --watch --embed-source-map --no-error-css styles/:.styles/",
- "build": "sass --embed-source-map --no-error-css styles/:.styles/",
"lint": "eslint --fix",
"lint:nofix": "eslint"
}
diff --git a/scripts/linkFoundry.mjs b/scripts/linkFoundry.mjs
new file mode 100644
index 0000000..2ed162f
--- /dev/null
+++ b/scripts/linkFoundry.mjs
@@ -0,0 +1,10 @@
+import { config } from "dotenv";
+config();
+
+console.log(process.env)
+const root = process.env.FOUNDRY_ROOT;
+
+// Early exit
+if (!root) { process.exit(1) };
+
+// Assert root exists
From 6866bea13160c996e375b463d6b52f415449e8fd Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sun, 28 Sep 2025 00:34:49 -0600
Subject: [PATCH 037/140] Update scripts to allow auto-linking of Foundry
source for intellisense
---
.gitignore | 1 +
.vscode/settings.json | 2 +-
augments.d.ts | 5 +++++
eslint.config.mjs | 2 +-
jsconfig.json | 16 +++++++++++++--
package.json | 3 +++
scripts/linkFoundry.mjs | 45 +++++++++++++++++++++++++++++++++++++----
7 files changed, 66 insertions(+), 8 deletions(-)
diff --git a/.gitignore b/.gitignore
index 7ab2098..f3a0af4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules/
deprecated
.env
+/foundry
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 70ee187..aa3ed17 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -11,7 +11,7 @@
".styles": false,
"node_modules": true,
"packs": true,
- "foundry": false
+ "foundry": true
},
"html.customData": [
"./.vscode/components.html-data.json"
diff --git a/augments.d.ts b/augments.d.ts
index df16590..a08bb60 100644
--- a/augments.d.ts
+++ b/augments.d.ts
@@ -1,3 +1,8 @@
+declare global {
+ class Hooks extends foundry.helpers.Hooks {};
+ const fromUuid = foundry.utils.fromUuid;
+}
+
interface Actor {
/** The system-specific data */
system: any;
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 454af9e..55aea5c 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -4,7 +4,7 @@ import stylistic from "@stylistic/eslint-plugin";
export default [
// Tell eslint to ignore files that I don't mind being formatted slightly differently
- { ignores: [ `scripts/` ] },
+ { ignores: [ `scripts/`, `foundry/*` ] },
{
languageOptions: {
globals: globals.browser,
diff --git a/jsconfig.json b/jsconfig.json
index 231558c..fd36906 100644
--- a/jsconfig.json
+++ b/jsconfig.json
@@ -1,7 +1,19 @@
{
"compilerOptions": {
+ "module": "es2022",
+ "target": "es2022",
"types": [
"./augments.d.ts"
- ]
- }
+ ],
+ "paths": {
+ "@client/*": ["./foundry/client/*"],
+ "@common/*": ["./foundry/common/*"],
+ }
+ },
+ "include": [
+ "module/main.mjs",
+ "foundry/client/client.mjs",
+ "foundry/client/global.d.mts",
+ "foundry/common/primitives/global.d.mts"
+ ]
}
diff --git a/package.json b/package.json
index 4804900..c2b1830 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,9 @@
"globals": "^15.9.0"
},
"scripts": {
+ "build": "node scripts/buildCompendia.mjs",
+ "extract": "node scripts/extractCompendia.mjs",
+ "link": "node scripts/linkFoundry.mjs",
"lint": "eslint --fix",
"lint:nofix": "eslint"
}
diff --git a/scripts/linkFoundry.mjs b/scripts/linkFoundry.mjs
index 2ed162f..1cbb71a 100644
--- a/scripts/linkFoundry.mjs
+++ b/scripts/linkFoundry.mjs
@@ -1,10 +1,47 @@
+import { existsSync } from "fs";
+import { symlink, unlink } from "fs/promises";
+import { join } from "path";
import { config } from "dotenv";
-config();
-console.log(process.env)
+config({ quiet: true });
+
const root = process.env.FOUNDRY_ROOT;
// Early exit
-if (!root) { process.exit(1) };
+if (!root) {
+ console.error(`Must provide a FOUNDRY_ROOT environment variable`);
+ process.exit(1);
+};
-// Assert root exists
+// Assert Foundry exists
+if (!existsSync(root)) {
+ console.error(`Foundry root not found.`);
+ process.exit(1);
+};
+
+// Removing existing symlink
+if (existsSync(`foundry`)) {
+ console.log(`Attempting to unlink foundry instance`);
+ try {
+ await unlink(`foundry`);
+ } catch {
+ console.error(`Failed to unlink foundry folder.`);
+ process.exit(1);
+ };
+};
+
+// Account for if the root is pointing at an Electron install
+let targetRoot = root;
+if (existsSync(join(root, `resources`, `app`))) {
+ console.log(`Switching to use the "${root}/resources/app" directory`);
+ targetRoot = join(root, `resources`, `app`);
+};
+
+// Create symlink
+console.log(`Linking foundry source into folder`)
+try {
+ await symlink(targetRoot, `foundry`);
+} catch (e) {
+ console.error(e);
+ process.exit(1);
+};
From 48e40538dce3d5f4b89725e5e06e028780095e34 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 1 Oct 2025 00:38:17 -0600
Subject: [PATCH 038/140] Restore intellisense for the module code
---
jsconfig.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/jsconfig.json b/jsconfig.json
index fd36906..6811918 100644
--- a/jsconfig.json
+++ b/jsconfig.json
@@ -11,7 +11,7 @@
}
},
"include": [
- "module/main.mjs",
+ "module/**/*",
"foundry/client/client.mjs",
"foundry/client/global.d.mts",
"foundry/common/primitives/global.d.mts"
From c7c0deaec7477b312c6b05c02fb4515ce12e2c30 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 1 Oct 2025 20:52:42 -0600
Subject: [PATCH 039/140] Make the hotReload target the correct styles
directory
---
system.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system.json b/system.json
index 0f4d84a..1aaa3a5 100644
--- a/system.json
+++ b/system.json
@@ -44,7 +44,7 @@
"flags": {
"hotReload": {
"extensions": ["css", "hbs", "json", "js", "mjs", "svg"],
- "paths": ["templates", "langs", ".styles", "module", "assets"]
+ "paths": ["templates", "langs", "styles", "module", "assets"]
}
}
}
From 6081b8f9e89ad0de218c851e44d1abd42ba70647 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 4 Oct 2025 19:40:37 -0600
Subject: [PATCH 040/140] Add a custom DocumentSheetConfig that supports
tab-based configuration for my system-specific stuff
---
langs/en-ca.json | 18 ++
module/apps/TAFDocumentSheetConfig.mjs | 171 +++++++++++++++++++
module/utils/getSizing.mjs | 32 ++++
styles/Apps/TAFDocumentSheetConfig.css | 15 ++
styles/main.css | 2 +-
templates/TAFDocumentSheetConfig/foundry.hbs | 4 +
templates/TAFDocumentSheetConfig/system.hbs | 48 ++++++
7 files changed, 289 insertions(+), 1 deletion(-)
create mode 100644 module/apps/TAFDocumentSheetConfig.mjs
create mode 100644 module/utils/getSizing.mjs
create mode 100644 styles/Apps/TAFDocumentSheetConfig.css
create mode 100644 templates/TAFDocumentSheetConfig/foundry.hbs
create mode 100644 templates/TAFDocumentSheetConfig/system.hbs
diff --git a/langs/en-ca.json b/langs/en-ca.json
index 99de0b3..de83d02 100644
--- a/langs/en-ca.json
+++ b/langs/en-ca.json
@@ -13,6 +13,24 @@
},
"sheet-names": {
"PlayerSheet": "Player Sheet"
+ },
+ "Apps": {
+ "TAFDocumentSheetConfig": {
+ "Sizing": "Sizing",
+ "Width": {
+ "label": "Width"
+ },
+ "Height": {
+ "label": "Height"
+ },
+ "Resizable": {
+ "label": "Resizable"
+ },
+ "tabs": {
+ "foundry": "Foundry",
+ "system": "Text-Based Actors"
+ }
+ }
}
}
}
diff --git a/module/apps/TAFDocumentSheetConfig.mjs b/module/apps/TAFDocumentSheetConfig.mjs
new file mode 100644
index 0000000..760e462
--- /dev/null
+++ b/module/apps/TAFDocumentSheetConfig.mjs
@@ -0,0 +1,171 @@
+import { __ID__, filePath } from "../consts.mjs";
+import { getDefaultSizing } from "../utils/getSizing.mjs";
+
+const { diffObject, expandObject, flattenObject } = foundry.utils;
+const { DocumentSheetConfig } = foundry.applications.apps;
+const { CONST } = foundry;
+
+export class TAFDocumentSheetConfig extends DocumentSheetConfig {
+
+ // #region Options
+ static DEFAULT_OPTIONS = {
+ classes: [`taf`],
+ form: {
+ handler: this.#onSubmit,
+ },
+ };
+
+ static get PARTS() {
+ const { form, footer } = super.PARTS;
+ return {
+ tabs: { template: `templates/generic/tab-navigation.hbs` },
+ foundryTab: {
+ ...form,
+ template: filePath(`templates/TAFDocumentSheetConfig/foundry.hbs`),
+ templates: [ `templates/sheets/document-sheet-config.hbs` ],
+ },
+ systemTab: {
+ template: filePath(`templates/TAFDocumentSheetConfig/system.hbs`),
+ classes: [`standard-form`],
+ },
+ footer,
+ };
+ };
+
+ static TABS = {
+ main: {
+ initial: `system`,
+ labelPrefix: `taf.Apps.TAFDocumentSheetConfig.tabs`,
+ tabs: [
+ { id: `system` },
+ { id: `foundry` },
+ ],
+ },
+ };
+ // #endregion Options
+
+ // #region Data Prep
+ async _preparePartContext(partID, context, options) {
+ this._prepareTabs(`main`);
+
+ context.meta = {
+ idp: this.id,
+ };
+
+ switch (partID) {
+ case `foundryTab`: {
+ await this._prepareFormContext(context, options);
+ break;
+ };
+ case `systemTab`: {
+ await this._prepareSystemSettingsContext(context, options);
+ break;
+ };
+ case `footer`: {
+ await this._prepareFooterContext(context, options);
+ break;
+ };
+ };
+ return context;
+ };
+
+ async _prepareSystemSettingsContext(context, _options) {
+ // Inherited values for placeholders
+ const defaults = getDefaultSizing();
+ context.placeholders = {
+ ...defaults,
+ resizable: defaults.resizable ? `Resizable` : `Not Resizable`,
+ };
+
+ // Custom values from document itself
+ const sheetConfig = this.document.getFlag(__ID__, `PlayerSheet`) ?? {};
+ const sizing = sheetConfig.size ?? {};
+ context.values = {
+ width: sizing.width,
+ height: sizing.height,
+ resizable: sizing.resizable ?? ``,
+ };
+
+ // Static prep
+ context.resizeOptions = [
+ { label: `Default (${context.placeholders.resizable})`, value: `` },
+ { label: `Resizable`, value: `true` },
+ { label: `No Resizing`, value: `false` },
+ ];
+ };
+ // #endregion Data Prep
+
+ // #region Actions
+ /** @this {TAFDocumentSheetConfig} */
+ static async #onSubmit(event, form, formData) {
+ const foundryReopen = await TAFDocumentSheetConfig.#submitFoundry.call(this, event, form, formData);
+ const systemReopen = await TAFDocumentSheetConfig.#submitSystem.call(this, event, form, formData);
+ if (foundryReopen || systemReopen) {
+ this.document._onSheetChange({ sheetOpen: true });
+ };
+ };
+
+ /**
+ * This method is mostly the form submission handler that foundry uses in
+ * DocumentSheetConfig, however because we clobber that in order to save our
+ * own config stuff as well, we need to duplicate Foundry's handling and tweak
+ * it a bit to make it work nicely with our custom saving.
+ *
+ * @this {TAFDocumentSheetConfig}
+ */
+ static async #submitFoundry(_event, _form, formData) {
+ const { object } = formData;
+ const { documentName, type = CONST.BASE_DOCUMENT_TYPE } = this.document;
+
+ // Update themes.
+ const themes = game.settings.get(`core`, `sheetThemes`);
+ const defaultTheme = foundry.utils.getProperty(themes, `defaults.${documentName}.${type}`);
+ const documentTheme = themes.documents?.[this.document.uuid];
+ const themeChanged = (object.defaultTheme !== defaultTheme) || (object.theme !== documentTheme);
+ if (themeChanged) {
+ foundry.utils.setProperty(themes, `defaults.${documentName}.${type}`, object.defaultTheme);
+ themes.documents ??= {};
+ themes.documents[this.document.uuid] = object.theme;
+ await game.settings.set(`core`, `sheetThemes`, themes);
+ }
+
+ // Update sheets.
+ const { defaultClass } = this.constructor.getSheetClassesForSubType(documentName, type);
+ const sheetClass = this.document.getFlag(`core`, `sheetClass`) ?? ``;
+ const defaultSheetChanged = object.defaultClass !== defaultClass;
+ const documentSheetChanged = object.sheetClass !== sheetClass;
+
+ if (themeChanged || (game.user.isGM && defaultSheetChanged)) {
+ if (game.user.isGM && defaultSheetChanged) {
+ const setting = game.settings.get(`core`, `sheetClasses`);
+ foundry.utils.setProperty(setting, `${documentName}.${type}`, object.defaultClass);
+ await game.settings.set(`core`, `sheetClasses`, setting);
+ }
+
+ // This causes us to manually rerender the sheet due to the theme or default
+ // sheet class changing resulting in no update making it to the client-document's
+ // _onUpdate handling
+ if (!documentSheetChanged) {
+ return true;
+ }
+ }
+
+ // Update the document-specific override.
+ if (documentSheetChanged) {
+ this.document.setFlag(`core`, `sheetClass`, object.sheetClass);
+ };
+ return false;
+ };
+
+ /** @this {TAFDocumentSheetConfig} */
+ static async #submitSystem(_event, _form, formData) {
+ const { FLAGS: flags } = expandObject(formData.object);
+ const diff = flattenObject(diffObject(this.document.flags, flags));
+ const hasChanges = Object.keys(diff).length > 0;
+ if (hasChanges) {
+ await this.document.update({ flags });
+ };
+ return hasChanges;
+ };
+ // #endregion Actions
+};
diff --git a/module/utils/getSizing.mjs b/module/utils/getSizing.mjs
new file mode 100644
index 0000000..63e6822
--- /dev/null
+++ b/module/utils/getSizing.mjs
@@ -0,0 +1,32 @@
+import { PlayerSheet } from "../apps/PlayerSheet.mjs";
+
+/**
+ * @typedef SheetSizing
+ * @property {number} width The initial width of the application
+ * @property {number} height The initial height of the application
+ * @property {boolean} resizable Whether or not the application
+ * is able to be resized with a drag handle.
+ */
+
+/**
+ * Retrieves the computed default sizing data based on world settings
+ * and the sheet class' DEFAULT_OPTIONS
+ * @returns {SheetSizing}
+ */
+export function getDefaultSizing() {
+ /** @type {SheetSizing} */
+ const sizing = {
+ width: undefined,
+ height: undefined,
+ resizable: undefined,
+ };
+
+ // TODO: defaults from world settings
+
+ // Defaults from the sheet class itself
+ sizing.height ||= PlayerSheet.DEFAULT_OPTIONS.position.height;
+ sizing.width ||= PlayerSheet.DEFAULT_OPTIONS.position.width;
+ sizing.resizable ||= PlayerSheet.DEFAULT_OPTIONS.window.resizable;
+
+ return sizing;
+};
diff --git a/styles/Apps/TAFDocumentSheetConfig.css b/styles/Apps/TAFDocumentSheetConfig.css
new file mode 100644
index 0000000..247c8fd
--- /dev/null
+++ b/styles/Apps/TAFDocumentSheetConfig.css
@@ -0,0 +1,15 @@
+.taf.sheet-config {
+
+ section {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ }
+
+ .tab {
+ display: none;
+ }
+ .tab.active {
+ display: unset;
+ }
+}
diff --git a/styles/main.css b/styles/main.css
index bc257ab..10ea6ec 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -20,4 +20,4 @@
@import url("./Apps/Ask.css") layer(apps);
@import url("./Apps/AttributeManager.css") layer(apps);
@import url("./Apps/PlayerSheet.css") layer(apps);
-@import url("./Apps/ResizeControlManager.css") layer(apps);
+@import url("./Apps/TAFDocumentSheetConfig.css") layer(apps);
diff --git a/templates/TAFDocumentSheetConfig/foundry.hbs b/templates/TAFDocumentSheetConfig/foundry.hbs
new file mode 100644
index 0000000..c23dc90
--- /dev/null
+++ b/templates/TAFDocumentSheetConfig/foundry.hbs
@@ -0,0 +1,4 @@
+{{log this}}
+
+ {{> "templates/sheets/document-sheet-config.hbs" }}
+
diff --git a/templates/TAFDocumentSheetConfig/system.hbs b/templates/TAFDocumentSheetConfig/system.hbs
new file mode 100644
index 0000000..a39e0c8
--- /dev/null
+++ b/templates/TAFDocumentSheetConfig/system.hbs
@@ -0,0 +1,48 @@
+
+
+
From 4e304f7d229cecb76d0768f4b78a512232406b48 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 4 Oct 2025 19:41:24 -0600
Subject: [PATCH 041/140] Override the default configureSheet action in order
to open the custom DocumentSheetConfig
---
module/apps/PlayerSheet.mjs | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/module/apps/PlayerSheet.mjs b/module/apps/PlayerSheet.mjs
index e9caf53..56b8744 100644
--- a/module/apps/PlayerSheet.mjs
+++ b/module/apps/PlayerSheet.mjs
@@ -1,7 +1,7 @@
import { __ID__, filePath } from "../consts.mjs";
import { AttributeManager } from "./AttributeManager.mjs";
import { attributeSorter } from "../utils/attributeSort.mjs";
-import { ResizeControlManager } from "./ResizeControlManager.mjs";
+import { TAFDocumentSheetConfig } from "./TAFDocumentSheetConfig.mjs";
const { HandlebarsApplicationMixin } = foundry.applications.api;
const { ActorSheetV2 } = foundry.applications.sheets;
@@ -28,7 +28,7 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
},
actions: {
manageAttributes: this.#manageAttributes,
- sizeSettings: this.#configureSizeSettings,
+ configureSheet: this.#configureSheet,
},
};
@@ -156,15 +156,18 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
};
};
- #sizeSettings = null;
- /** @this {PlayerSheet} */
- static async #configureSizeSettings() {
- this.#sizeSettings ??= new ResizeControlManager({ document: this.actor });
- if (this.#sizeSettings.rendered) {
- await this.#sizeSettings.bringToFront();
- } else {
- await this.#sizeSettings.render({ force: true });
- };
+ static async #configureSheet(event) {
+ event.stopPropagation();
+ if ( event.detail > 1 ) { return }
+
+ // const docSheetConfigWidth = TAFDocumentSheetConfig.DEFAULT_OPTIONS.position.width;
+ new TAFDocumentSheetConfig({
+ document: this.document,
+ position: {
+ top: this.position.top + 40,
+ left: this.position.left + ((this.position.width - 60) / 2),
+ },
+ }).render({ force: true });
};
// #endregion Actions
};
From 72ebc0354df7646a99af51b4b7b08fc8dea3f292 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 4 Oct 2025 19:41:53 -0600
Subject: [PATCH 042/140] Remove old application that is no longer used by
anything
---
module/apps/ResizeControlManager.mjs | 61 ---------------------
styles/Apps/ResizeControlManager.css | 20 -------
templates/ResizeControlManager/controls.hbs | 7 ---
templates/ResizeControlManager/settings.hbs | 29 ----------
4 files changed, 117 deletions(-)
delete mode 100644 module/apps/ResizeControlManager.mjs
delete mode 100644 styles/Apps/ResizeControlManager.css
delete mode 100644 templates/ResizeControlManager/controls.hbs
delete mode 100644 templates/ResizeControlManager/settings.hbs
diff --git a/module/apps/ResizeControlManager.mjs b/module/apps/ResizeControlManager.mjs
deleted file mode 100644
index 3bd2b08..0000000
--- a/module/apps/ResizeControlManager.mjs
+++ /dev/null
@@ -1,61 +0,0 @@
-import { __ID__, filePath } from "../consts.mjs";
-
-const { HandlebarsApplicationMixin, DocumentSheetV2 } = foundry.applications.api;
-const { getProperty } = foundry.utils;
-
-export class ResizeControlManager extends HandlebarsApplicationMixin(DocumentSheetV2) {
-
- // #region Options
- static DEFAULT_OPTIONS = {
- classes: [
- __ID__,
- `ResizeControlManager`,
- ],
- position: {
- width: 400,
- height: `auto`,
- },
- window: {
- resizable: true,
- },
- form: {
- submitOnChange: false,
- closeOnSubmit: true,
- },
- actions: {},
- };
-
- static PARTS = {
- settings: { template: filePath(`templates/ResizeControlManager/settings.hbs`) },
- controls: { template: filePath(`templates/ResizeControlManager/controls.hbs`) },
- };
- // #endregion Options
-
- // #region Instance Data
- get title() {
- return `Sizing Settings For : ${this.document.name}`;
- };
- // #endregion Instance Data
-
- // #region Data Prep
- async _prepareContext() {
- const sizing = getProperty(this.document, `flags.${__ID__}.PlayerSheet.size`) ?? {};
-
- const ctx = {
- meta: {
- idp: this.id,
- },
- width: sizing.width,
- height: sizing.height,
- resizable: sizing.resizable,
- resizeOptions: [
- { label: `Default`, value: `` },
- { label: `Resizable`, value: `true` },
- { label: `No Resizing`, value: `false` },
- ],
- };
-
- return ctx;
- };
- // #endregion Data Prep
-};
diff --git a/styles/Apps/ResizeControlManager.css b/styles/Apps/ResizeControlManager.css
deleted file mode 100644
index 7783d40..0000000
--- a/styles/Apps/ResizeControlManager.css
+++ /dev/null
@@ -1,20 +0,0 @@
-.taf.ResizeControlManager {
- fieldset {
- display: grid;
- grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
- align-items: center;
- gap: 8px;
- border: 1px solid rebeccapurple;
- border-radius: 4px;
- }
-
- .controls {
- display: flex;
- flex-direction: row;
- gap: 8px;
-
- button {
- flex-grow: 1;
- }
- }
-}
diff --git a/templates/ResizeControlManager/controls.hbs b/templates/ResizeControlManager/controls.hbs
deleted file mode 100644
index 6f62afb..0000000
--- a/templates/ResizeControlManager/controls.hbs
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
diff --git a/templates/ResizeControlManager/settings.hbs b/templates/ResizeControlManager/settings.hbs
deleted file mode 100644
index 39a1f20..0000000
--- a/templates/ResizeControlManager/settings.hbs
+++ /dev/null
@@ -1,29 +0,0 @@
-
From 696f9e8261aa351147260f06ad2cc6125edb3581 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 4 Oct 2025 19:42:27 -0600
Subject: [PATCH 043/140] Remove context menu action that is deprecated
---
module/apps/PlayerSheet.mjs | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/module/apps/PlayerSheet.mjs b/module/apps/PlayerSheet.mjs
index 56b8744..257182a 100644
--- a/module/apps/PlayerSheet.mjs
+++ b/module/apps/PlayerSheet.mjs
@@ -78,15 +78,6 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
return isGM || (allowPlayerEdits && editable);
},
});
- controls.push({
- icon: `fa-solid fa-crop-simple`,
- label: `Configure Size`,
- action: `sizeSettings`,
- visible: () => {
- const isGM = game.user.isGM;
- return isGM;
- },
- });
return controls;
};
From a7f91babf73cd404a17932b8b791415f150de38e Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sun, 5 Oct 2025 11:58:58 -0600
Subject: [PATCH 044/140] Remove log
---
templates/TAFDocumentSheetConfig/foundry.hbs | 1 -
1 file changed, 1 deletion(-)
diff --git a/templates/TAFDocumentSheetConfig/foundry.hbs b/templates/TAFDocumentSheetConfig/foundry.hbs
index c23dc90..5c0644d 100644
--- a/templates/TAFDocumentSheetConfig/foundry.hbs
+++ b/templates/TAFDocumentSheetConfig/foundry.hbs
@@ -1,4 +1,3 @@
-{{log this}}
{{> "templates/sheets/document-sheet-config.hbs" }}
From 8632054e63e269ec41e36c52f9528a9139dcdfa7 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 15 Oct 2025 16:40:53 -0600
Subject: [PATCH 045/140] Switch to using pnpm
---
package-lock.json | 4907 ---------------------------------------------
pnpm-lock.yaml | 2119 ++++++++++++++++++++
2 files changed, 2119 insertions(+), 4907 deletions(-)
delete mode 100644 package-lock.json
create mode 100644 pnpm-lock.yaml
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 050c8aa..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,4907 +0,0 @@
-{
- "name": "Text-Actors-Foundry",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "devDependencies": {
- "@eslint/js": "^9.8.0",
- "@foundryvtt/foundryvtt-cli": "^1.0.3",
- "@league-of-foundry-developers/foundry-vtt-types": "^9.280.0",
- "@stylistic/eslint-plugin": "^2.6.1",
- "dotenv": "^17.2.2",
- "eslint": "^9.8.0",
- "globals": "^15.9.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
- "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/config-array": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz",
- "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==",
- "dev": true,
- "dependencies": {
- "@eslint/object-schema": "^2.1.4",
- "debug": "^4.3.1",
- "minimatch": "^3.1.2"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
- "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^10.0.1",
- "globals": "^14.0.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
- "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
- "dev": true,
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/js": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz",
- "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==",
- "dev": true,
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@eslint/object-schema": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
- "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
- "dev": true,
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- }
- },
- "node_modules/@foundryvtt/foundryvtt-cli": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@foundryvtt/foundryvtt-cli/-/foundryvtt-cli-1.0.3.tgz",
- "integrity": "sha512-M8NrMXFYpOEsLAbgRWfuMvUa9F6HwrROLtqhhBljqfVS1lgm0RJJY/7MObuXsTJOC6+Uu+QOPZTlw4k+hguG7w==",
- "dev": true,
- "dependencies": {
- "chalk": "^5.2.0",
- "classic-level": "^1.2.0",
- "esm": "^3.2.25",
- "js-yaml": "^4.1.0",
- "mkdirp": "^3.0.0",
- "nedb-promises": "^6.2.1",
- "yargs": "^17.7.1"
- },
- "bin": {
- "fvtt": "fvtt.mjs"
- },
- "engines": {
- "node": ">17.0.0"
- }
- },
- "node_modules/@foundryvtt/foundryvtt-cli/node_modules/chalk": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
- "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
- "dev": true,
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/retry": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz",
- "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==",
- "dev": true,
- "engines": {
- "node": ">=18.18"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@league-of-foundry-developers/foundry-vtt-types": {
- "version": "9.280.0",
- "resolved": "https://registry.npmjs.org/@league-of-foundry-developers/foundry-vtt-types/-/foundry-vtt-types-9.280.0.tgz",
- "integrity": "sha512-Dv8/+kgAnI2F5snSWcnMnZsgO/87AFyBruflluZkWDbP7Pm5qi32GlNYCDEg7HMKybzyKmgLV2qXMmYPHtCT7w==",
- "dev": true,
- "dependencies": {
- "@pixi/graphics-smooth": "0.0.22",
- "@types/jquery": "~3.5.9",
- "@types/simple-peer": "~9.11.1",
- "handlebars": "4.7.7",
- "pixi-particles": "4.3.1",
- "pixi.js": "5.3.11",
- "socket.io-client": "4.3.2",
- "tinymce": "5.10.1"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@pixi/accessibility": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-5.3.11.tgz",
- "integrity": "sha512-/oSizd8/g6KUCeAlknMLJ9CRxBt+vWs6e2DrOctMoRupEHcmhICCjIyAp5GF6RZy9T9gNHDOU5p7vo7qEyVxgQ==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/accessibility/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/app": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/app/-/app-5.3.11.tgz",
- "integrity": "sha512-ZWrOjGvVl+lK5OJQT3OqSnSRtU2XgQSe/ULg2uGsSWUqMkJews33JIGOjvk4tIsjm4ekSKiPZRMdYFHzPfgEJg==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11"
- }
- },
- "node_modules/@pixi/app/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/app/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/app/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/app/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/app/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/app/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/app/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/app/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/constants": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-6.5.10.tgz",
- "integrity": "sha512-PUF2Y9YISRu5eVrVVHhHCWpc/KmxQTg3UH8rIUs8UI9dCK41/wsPd3pEahzf7H47v7x1HCohVZcFO3XQc1bUDw==",
- "dev": true,
- "peer": true
- },
- "node_modules/@pixi/core": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-6.5.10.tgz",
- "integrity": "sha512-Gdzp5ENypyglvsh5Gv3teUZnZnmizo4xOsL+QqmWALdFlJXJwLJMVhKVThV/q/095XR6i4Ou54oshn+m4EkuFw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/offscreencanvas": "^2019.6.4"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- },
- "peerDependencies": {
- "@pixi/constants": "6.5.10",
- "@pixi/extensions": "6.5.10",
- "@pixi/math": "6.5.10",
- "@pixi/runner": "6.5.10",
- "@pixi/settings": "6.5.10",
- "@pixi/ticker": "6.5.10",
- "@pixi/utils": "6.5.10"
- }
- },
- "node_modules/@pixi/display": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-6.5.10.tgz",
- "integrity": "sha512-NxFdDDxlbH5fQkzGHraLGoTMucW9pVgXqQm13TSmkA3NWIi/SItHL4qT2SI8nmclT9Vid1VDEBCJFAbdeuQw1Q==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "@pixi/constants": "6.5.10",
- "@pixi/math": "6.5.10",
- "@pixi/settings": "6.5.10",
- "@pixi/utils": "6.5.10"
- }
- },
- "node_modules/@pixi/extensions": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-6.5.10.tgz",
- "integrity": "sha512-EIUGza+E+sCy3dupuIjvRK/WyVyfSzHb5XsxRaxNrPwvG1iIUIqNqZ3owLYCo4h17fJWrj/yXVufNNtUKQccWQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@pixi/extract": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-5.3.11.tgz",
- "integrity": "sha512-YeBrpIO3E5HUgcdKEldCUqwwDNHm5OBe98YFcdLr5Z0+dQaHnxp9Dm4n75/NojoGb5guYdrV00x+gU2UPHsVdw==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/extract/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/extract/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/extract/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/extract/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/extract/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/extract/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/extract/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/filter-alpha": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-5.3.11.tgz",
- "integrity": "sha512-HC4PbiEqDWSi3A715av7knFqD3knSXRxPJKG9mWat2CU9eCizSw+JxXp/okMU/fL4ewooiqQWVU2l1wXOHhVFw==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-alpha/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/filter-alpha/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/filter-alpha/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/filter-alpha/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/filter-alpha/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/filter-alpha/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-alpha/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/filter-blur": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-5.3.11.tgz",
- "integrity": "sha512-iW5cOMEcDiJidOV95bUfhxdcvwM9JzCoWAd+92gAie8L+ElRSHpu1jxXbKHjo/QczQV1LulOlheyDaJNpaBCDg==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-blur/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/filter-blur/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/filter-blur/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/filter-blur/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/filter-blur/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/filter-blur/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-blur/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/filter-color-matrix": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-5.3.11.tgz",
- "integrity": "sha512-u9NT4+N1I3XV9ygwsmF8/jIwCLqNCLeFOdM4f73kbw/UmakZZ6i6xjjJMc5YFUpC25qDr1TFlqgdGGGHAPl4ug==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-color-matrix/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/filter-color-matrix/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/filter-color-matrix/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/filter-color-matrix/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/filter-color-matrix/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/filter-color-matrix/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-color-matrix/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/filter-displacement": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-5.3.11.tgz",
- "integrity": "sha512-CTIy7C/L9I1X3VNx4nMzQbMFvznsGk2viQh0dSo8r5NLgmaAdxhkGI0KUpNjLBz30278tzFfNuRe59K1y1kHuw==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/math": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-displacement/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/filter-displacement/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/filter-displacement/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/filter-displacement/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/filter-displacement/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/filter-displacement/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-displacement/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/filter-fxaa": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-5.3.11.tgz",
- "integrity": "sha512-0ahjui5385e1vRvd7zCc0n5W8ULtNI1uVbDJHP9ueeiF25TKC0GqtZzntNwrQPoU46q8zXdnIGjzMpikbbAasg==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-fxaa/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/filter-fxaa/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/filter-fxaa/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/filter-fxaa/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/filter-fxaa/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/filter-fxaa/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-fxaa/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/filter-noise": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-5.3.11.tgz",
- "integrity": "sha512-98WC9Nd5u2F03Ned9T3vnbmO/YF1jLSioZ623z9wjqpd5DosZgRtYTSGxjVcXTSfpviIuiJpkyF+X097pbVprg==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-noise/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/filter-noise/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/filter-noise/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/filter-noise/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/filter-noise/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/filter-noise/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/filter-noise/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/graphics": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-6.5.10.tgz",
- "integrity": "sha512-KPHGJ910fi8bRQQ+VcTIgrK+bKIm8yAQaZKPqMtm14HzHPGcES6HkgeNY1sd7m8J4aS9btm5wOSyFu0p5IzTpA==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "@pixi/constants": "6.5.10",
- "@pixi/core": "6.5.10",
- "@pixi/display": "6.5.10",
- "@pixi/math": "6.5.10",
- "@pixi/sprite": "6.5.10",
- "@pixi/utils": "6.5.10"
- }
- },
- "node_modules/@pixi/graphics-smooth": {
- "version": "0.0.22",
- "resolved": "https://registry.npmjs.org/@pixi/graphics-smooth/-/graphics-smooth-0.0.22.tgz",
- "integrity": "sha512-qq2u+BJBIDBuuSTc2Xzm1D/8RiiKBdxnVDiMb7Go5v8achnV5ctC6m+rf8Mq0sWm66mbOqu1aq/9efT4A4sPrA==",
- "dev": true,
- "engines": {
- "node": ">=14",
- "npm": ">=7"
- },
- "peerDependencies": {
- "@pixi/constants": "^6.0.4",
- "@pixi/core": "^6.0.4",
- "@pixi/display": "^6.0.4",
- "@pixi/graphics": "^6.0.4",
- "@pixi/math": "^6.0.4",
- "@pixi/utils": "^6.0.4"
- }
- },
- "node_modules/@pixi/interaction": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-5.3.11.tgz",
- "integrity": "sha512-n2K99CYyBcrf8NPxpzmZ5IlJ9TEplsSZfJ/uzMNOEnTObKl4wAhxs51Nb58raH3Ouzwu14YHOpqYrBTEoT1yPA==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/interaction/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/loaders": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-5.3.11.tgz",
- "integrity": "sha512-1HAeb/NFXyhNhZWAbVkngsTPBGpjZEPhQflBTrKycRaub7XDSZ8F0fwPltpKKVRWNDT+HBgU/zDNE2fpjzqfYg==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/utils": "5.3.11",
- "resource-loader": "^3.0.1"
- }
- },
- "node_modules/@pixi/loaders/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/loaders/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/loaders/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/loaders/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/loaders/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/loaders/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/loaders/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/math": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-6.5.10.tgz",
- "integrity": "sha512-fxeu7ykVbMGxGV2S3qRTupHToeo1hdWBm8ihyURn3BMqJZe2SkZEECPd5RyvIuuNUtjRnmhkZRnF3Jsz2S+L0g==",
- "dev": true,
- "peer": true
- },
- "node_modules/@pixi/mesh": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-5.3.11.tgz",
- "integrity": "sha512-KWKKksEr0YuUX1uz1FmpIa/Y37b/0pvFUS+87LoyYq0mRtGbKsTY5i3lBPG/taHwN7a2DQAX3JZpw6yhGKoGpA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mesh-extras": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-5.3.11.tgz",
- "integrity": "sha512-1GTCMMUW1xv/72x26cxRysblBXW0wU77TNgqtSIMZ1M6JbleObChklWTvwi9MzQO2vQ3S6Hvcsa5m5EiM2hSPQ==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/mesh": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mesh-extras/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/mesh-extras/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/mesh-extras/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/mesh-extras/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/mesh-extras/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/mesh-extras/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/mesh-extras/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/mesh/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/mixin-cache-as-bitmap": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-5.3.11.tgz",
- "integrity": "sha512-uQUxatGTTD5zfQ0pWdjibVjT+xEEZJ/xZDZtm/GxC7HSHd4jgoJBcTXWVhbhzwpLPVTnD8+sMnRrGlhoKcpTpQ==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/sprite": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/sprite": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.11.tgz",
- "integrity": "sha512-RM6Sp8kqzsBdX/hDAO25HZywe9VU4uhOronUOQ5Ve0zRe+trdBWQYfi7+5kAcvzqkp25Izc0C+e+4YCqe5OaHQ==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-cache-as-bitmap/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/mixin-get-child-by-name": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-5.3.11.tgz",
- "integrity": "sha512-fWFVxWtMYcwJttrgDNmZ4CJrx316p8ToNliC2ILmJZW77me7I4GzJ57gSHQU1xFwdHoOYRC4fnlrZoK5qJ9lDw==",
- "dev": true,
- "dependencies": {
- "@pixi/display": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-get-child-by-name/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/mixin-get-child-by-name/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-get-child-by-name/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/mixin-get-child-by-name/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/mixin-get-child-by-name/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/mixin-get-global-position": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-5.3.11.tgz",
- "integrity": "sha512-wrS9i+UUodLM5XL2N0Y+XSKiqLRdJV3ltFUWG6+jPT5yoP0HsKtx3sFAzX526RwIYwRzRusbc/quxHfRA4tvgg==",
- "dev": true,
- "dependencies": {
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-get-global-position/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/mixin-get-global-position/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/mixin-get-global-position/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/mixin-get-global-position/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/mixin-get-global-position/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/particles": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/particles/-/particles-5.3.11.tgz",
- "integrity": "sha512-+mkt/inWXtRrxQc07RZ29uNIDWV1oMsrRBVBIvHgpR92Kn8EjIDRgoSXNu0jiZ18gRKKCBhwsS4dCXGsZRQ/sA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/particles/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/particles/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/particles/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/particles/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/particles/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/particles/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/particles/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/particles/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/polyfill": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/polyfill/-/polyfill-5.3.11.tgz",
- "integrity": "sha512-yQOngcnn+2/L7n6L/g45hCnIDLWdnWmmcCY3UKJrOgbNX+JtLru1RR8AGLifkdsa0R5u48x584YQGqkTAChWVA==",
- "dev": true,
- "dependencies": {
- "es6-promise-polyfill": "^1.2.0",
- "object-assign": "^4.1.1"
- }
- },
- "node_modules/@pixi/prepare": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-5.3.11.tgz",
- "integrity": "sha512-TvjGeg7xPKjv5NxbM5NXReno9yxUCw/N0HtDEtEFRVeBLN3u0Q/dZsXxL6gIvkHoS09NFW+7AwsYQLZrVbppjA==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/graphics": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/text": "5.3.11",
- "@pixi/ticker": "5.3.11"
- }
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/graphics": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-5.3.11.tgz",
- "integrity": "sha512-HLu53LV6mRlY0uFSIM2OrCuL7xqXzeJs5d2QfmUJfKJVVZ9sbHDS+6/N/f0tXzvkRPYhSKXvcNPsNn4HmlIE9w==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/sprite": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/sprite": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.11.tgz",
- "integrity": "sha512-RM6Sp8kqzsBdX/hDAO25HZywe9VU4uhOronUOQ5Ve0zRe+trdBWQYfi7+5kAcvzqkp25Izc0C+e+4YCqe5OaHQ==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/prepare/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/runner": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-6.5.10.tgz",
- "integrity": "sha512-4HiHp6diCmigJT/DSbnqQP62OfWKmZB7zPWMdV1AEdr4YT1QxzXAW1wHg7dkoEfyTHqZKl0tm/zcqKq/iH7tMA==",
- "dev": true,
- "peer": true
- },
- "node_modules/@pixi/settings": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-6.5.10.tgz",
- "integrity": "sha512-ypAS5L7pQ2Qb88yQK72bXtc7sD8OrtLWNXdZ/gnw5kwSWCFaOSoqhKqJCXrR5DQtN98+RQefwbEAmMvqobhFyw==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "@pixi/constants": "6.5.10"
- }
- },
- "node_modules/@pixi/sprite": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-6.5.10.tgz",
- "integrity": "sha512-UiK+8LgM9XQ/SBDKjRgZ8WggdOSlFRXqiWjEZVmNkiyU8HvXeFzWPRhpc8RR1zDwAUhZWKtMhF8X/ba9m+z2lg==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "@pixi/constants": "6.5.10",
- "@pixi/core": "6.5.10",
- "@pixi/display": "6.5.10",
- "@pixi/math": "6.5.10",
- "@pixi/settings": "6.5.10",
- "@pixi/utils": "6.5.10"
- }
- },
- "node_modules/@pixi/sprite-animated": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-5.3.11.tgz",
- "integrity": "sha512-xU1b6H8nJ1l05h7cBGw2DGo4QdLj7xootstZUx2BrTVX5ZENn5mjAGVD0uRpk8yt7Q6Bj7M+PS7ktzAgBW/hmQ==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/sprite": "5.3.11",
- "@pixi/ticker": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/sprite": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.11.tgz",
- "integrity": "sha512-RM6Sp8kqzsBdX/hDAO25HZywe9VU4uhOronUOQ5Ve0zRe+trdBWQYfi7+5kAcvzqkp25Izc0C+e+4YCqe5OaHQ==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-animated/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/sprite-tiling": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-5.3.11.tgz",
- "integrity": "sha512-KUiWsIumjrnp9QKGMe1BqtrV9Hxm91KoaiOlCBk/gw8753iKvuMmH+/Z0RnzeZylJ1sJsdonTWy/IaLi1jnd0g==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/sprite": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/sprite": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.11.tgz",
- "integrity": "sha512-RM6Sp8kqzsBdX/hDAO25HZywe9VU4uhOronUOQ5Ve0zRe+trdBWQYfi7+5kAcvzqkp25Izc0C+e+4YCqe5OaHQ==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/sprite-tiling/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/spritesheet": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-5.3.11.tgz",
- "integrity": "sha512-Y9Wiwcz/YOuS1v73Ij9KWQakYBzZfldEy3H8T4GPLK+S19/sypntdkNtRZbmR2wWfhJ4axYEB2/Df86aOAU2qA==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/loaders": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/spritesheet/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/spritesheet/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/spritesheet/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/spritesheet/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/spritesheet/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/spritesheet/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/spritesheet/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/text": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/text/-/text-5.3.11.tgz",
- "integrity": "sha512-PmWvJv0wiKyyz3fahnxM19+m8IbF2vpDKIImqb5472WyxRGzKyVBW90xrADf5202tdKMk4b8hqvpof2XULr5PA==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/sprite": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/text-bitmap": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-5.3.11.tgz",
- "integrity": "sha512-Bjc/G4VHaPXc9HJsvyYOm5cNTHdqmX6AgzBAlCfltuMAlnveUgUPuX8D/MJHRRnoVSDHSmCBtnJgTc0y/nIeCw==",
- "dev": true,
- "dependencies": {
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/loaders": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/mesh": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/text": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/text-bitmap/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/text/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/@pixi/text/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/@pixi/text/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/text/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/@pixi/text/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/@pixi/text/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/@pixi/text/node_modules/@pixi/sprite": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.11.tgz",
- "integrity": "sha512-RM6Sp8kqzsBdX/hDAO25HZywe9VU4uhOronUOQ5Ve0zRe+trdBWQYfi7+5kAcvzqkp25Izc0C+e+4YCqe5OaHQ==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/@pixi/text/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/@pixi/text/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/@pixi/ticker": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-6.5.10.tgz",
- "integrity": "sha512-UqX1XYtzqFSirmTOy8QAK4Ccg4KkIZztrBdRPKwFSOEiKAJoGDCSBmyQBo/9aYQKGObbNnrJ7Hxv3/ucg3/1GA==",
- "dev": true,
- "peer": true,
- "peerDependencies": {
- "@pixi/extensions": "6.5.10",
- "@pixi/settings": "6.5.10"
- }
- },
- "node_modules/@pixi/utils": {
- "version": "6.5.10",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-6.5.10.tgz",
- "integrity": "sha512-4f4qDMmAz9IoSAe08G2LAxUcEtG9jSdudfsMQT2MG+OpfToirboE6cNoO0KnLCvLzDVE/mfisiQ9uJbVA9Ssdw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@types/earcut": "^2.1.0",
- "earcut": "^2.2.4",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- },
- "peerDependencies": {
- "@pixi/constants": "6.5.10",
- "@pixi/settings": "6.5.10"
- }
- },
- "node_modules/@seald-io/binary-search-tree": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.3.tgz",
- "integrity": "sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==",
- "dev": true
- },
- "node_modules/@seald-io/nedb": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@seald-io/nedb/-/nedb-4.0.4.tgz",
- "integrity": "sha512-CUNcMio7QUHTA+sIJ/DC5JzVNNsHe743TPmC4H5Gij9zDLMbmrCT2li3eVB72/gF63BPS8pWEZrjlAMRKA8FDw==",
- "dev": true,
- "dependencies": {
- "@seald-io/binary-search-tree": "^1.0.3",
- "localforage": "^1.9.0",
- "util": "^0.12.4"
- }
- },
- "node_modules/@socket.io/component-emitter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz",
- "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==",
- "dev": true
- },
- "node_modules/@stylistic/eslint-plugin": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.6.1.tgz",
- "integrity": "sha512-UT0f4t+3sQ/GKW7875NiIIjZJ1Bh4gd7JNfoIkwIQyWqO7wGd0Pqzu0Ho30Ka8MNF5lm++SkVeqAk26vGxoUpg==",
- "dev": true,
- "dependencies": {
- "@stylistic/eslint-plugin-js": "2.6.1",
- "@stylistic/eslint-plugin-jsx": "2.6.1",
- "@stylistic/eslint-plugin-plus": "2.6.1",
- "@stylistic/eslint-plugin-ts": "2.6.1",
- "@types/eslint": "^9.6.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
- }
- },
- "node_modules/@stylistic/eslint-plugin-js": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.1.tgz",
- "integrity": "sha512-iLOiVzcvqzDGD9U0EuVOX680v+XOPiPAjkxWj+Q6iV2GLOM5NB27tKVOpJY7AzBhidwpRbaLTgg3T4UzYx09jw==",
- "dev": true,
- "dependencies": {
- "@types/eslint": "^9.6.0",
- "acorn": "^8.12.1",
- "eslint-visitor-keys": "^4.0.0",
- "espree": "^10.1.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
- }
- },
- "node_modules/@stylistic/eslint-plugin-jsx": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.6.1.tgz",
- "integrity": "sha512-5qHLXqxfY6jubAQfDqrifv41fx7gaqA9svDaChxMI6JiHpEBfh+PXxmm3g+B8gJCYVBTC62Rjl0Ny5QabK58bw==",
- "dev": true,
- "dependencies": {
- "@stylistic/eslint-plugin-js": "^2.6.1",
- "@types/eslint": "^9.6.0",
- "estraverse": "^5.3.0",
- "picomatch": "^4.0.2"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
- }
- },
- "node_modules/@stylistic/eslint-plugin-plus": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.6.1.tgz",
- "integrity": "sha512-z/IYu/q8ipApzNam5utSU+BrXg4pK/Gv9xNbr4eWv/bZppvTWJU62xCO4nw/6r2dHNPnqc7uCHEC7GMlBnPY0A==",
- "dev": true,
- "dependencies": {
- "@types/eslint": "^9.6.0",
- "@typescript-eslint/utils": "^8.0.0"
- },
- "peerDependencies": {
- "eslint": "*"
- }
- },
- "node_modules/@stylistic/eslint-plugin-ts": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.6.1.tgz",
- "integrity": "sha512-Mxl1VMorEG1Hc6oBYPD0+KIJOWkjEF1R0liL7wWgKfwpqOkgmnh5lVdZBrYyfRKOE4RlGcwEFTNai1IW6orgVg==",
- "dev": true,
- "dependencies": {
- "@stylistic/eslint-plugin-js": "2.6.1",
- "@types/eslint": "^9.6.0",
- "@typescript-eslint/utils": "^8.0.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
- }
- },
- "node_modules/@types/earcut": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz",
- "integrity": "sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@types/eslint": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz",
- "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==",
- "dev": true,
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
- },
- "node_modules/@types/jquery": {
- "version": "3.5.30",
- "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz",
- "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==",
- "dev": true,
- "dependencies": {
- "@types/sizzle": "*"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "22.4.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.1.tgz",
- "integrity": "sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==",
- "dev": true,
- "dependencies": {
- "undici-types": "~6.19.2"
- }
- },
- "node_modules/@types/offscreencanvas": {
- "version": "2019.7.3",
- "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz",
- "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==",
- "dev": true,
- "peer": true
- },
- "node_modules/@types/simple-peer": {
- "version": "9.11.8",
- "resolved": "https://registry.npmjs.org/@types/simple-peer/-/simple-peer-9.11.8.tgz",
- "integrity": "sha512-rvqefdp2rvIA6wiomMgKWd2UZNPe6LM2EV5AuY3CPQJF+8TbdrL5TjYdMf0VAjGczzlkH4l1NjDkihwbj3Xodw==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/sizzle": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz",
- "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==",
- "dev": true
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz",
- "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "8.0.1",
- "@typescript-eslint/visitor-keys": "8.0.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz",
- "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==",
- "dev": true,
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz",
- "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "8.0.1",
- "@typescript-eslint/visitor-keys": "8.0.1",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
- "ts-api-utils": "^1.3.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz",
- "integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.0.1",
- "@typescript-eslint/types": "8.0.1",
- "@typescript-eslint/typescript-estree": "8.0.1"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz",
- "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "8.0.1",
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/abstract-level": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz",
- "integrity": "sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==",
- "dev": true,
- "dependencies": {
- "buffer": "^6.0.3",
- "catering": "^2.1.0",
- "is-buffer": "^2.0.5",
- "level-supports": "^4.0.0",
- "level-transcoder": "^1.0.1",
- "module-error": "^1.0.1",
- "queue-microtask": "^1.2.3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/acorn": {
- "version": "8.12.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
- "dev": true,
- "dependencies": {
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==",
- "dev": true
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/catering": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz",
- "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/classic-level": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz",
- "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "abstract-level": "^1.0.2",
- "catering": "^2.1.0",
- "module-error": "^1.0.1",
- "napi-macros": "^2.2.2",
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/debug": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
- "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dotenv": {
- "version": "17.2.2",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.2.tgz",
- "integrity": "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
- "node_modules/earcut": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
- "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==",
- "dev": true
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/engine.io-client": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.0.3.tgz",
- "integrity": "sha512-IH8ZhDIwiLv0d/wXVzmjfV9Y82hbJIDhCGSVUV8o1kcpDe2I6Y3bZA3ZbJy4Ls7k7IVmcy/qn4k9RKWFhUGf5w==",
- "dev": true,
- "dependencies": {
- "@socket.io/component-emitter": "~3.0.0",
- "debug": "~4.3.1",
- "engine.io-parser": "~5.0.0",
- "has-cors": "1.1.0",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "ws": "~8.2.3",
- "xmlhttprequest-ssl": "~2.0.0",
- "yeast": "0.1.2"
- }
- },
- "node_modules/engine.io-parser": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz",
- "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es6-promise-polyfill": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz",
- "integrity": "sha512-HHb0vydCpoclpd0ySPkRXMmBw80MRt1wM4RBJBlXkux97K7gleabZdsR0gvE1nNPM9mgOZIBTzjjXiPxf4lIqQ==",
- "dev": true
- },
- "node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz",
- "integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.11.0",
- "@eslint/config-array": "^0.17.1",
- "@eslint/eslintrc": "^3.1.0",
- "@eslint/js": "9.8.0",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@humanwhocodes/retry": "^0.3.0",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^8.0.2",
- "eslint-visitor-keys": "^4.0.0",
- "espree": "^10.1.0",
- "esquery": "^1.5.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^8.0.0",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://eslint.org/donate"
- }
- },
- "node_modules/eslint-scope": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz",
- "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
- "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
- "dev": true,
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esm": {
- "version": "3.2.25",
- "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
- "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/espree": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
- "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.12.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^4.0.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eventemitter3": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
- "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
- "dev": true
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
- "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
- "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^4.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
- "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.4"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/flatted": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
- "dev": true
- },
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/globals": {
- "version": "15.9.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz",
- "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==",
- "dev": true,
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.0",
- "source-map": "^0.6.1",
- "wordwrap": "^1.0.0"
- },
- "bin": {
- "handlebars": "bin/handlebars"
- },
- "engines": {
- "node": ">=0.4.7"
- },
- "optionalDependencies": {
- "uglify-js": "^3.1.4"
- }
- },
- "node_modules/has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==",
- "dev": true
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/is-arguments": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
- "dev": true,
- "dependencies": {
- "which-typed-array": "^1.1.14"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/ismobilejs": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz",
- "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/level-supports": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz",
- "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/level-transcoder": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz",
- "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==",
- "dev": true,
- "dependencies": {
- "buffer": "^6.0.3",
- "module-error": "^1.0.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lie": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
- "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==",
- "dev": true,
- "dependencies": {
- "immediate": "~3.0.5"
- }
- },
- "node_modules/localforage": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
- "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
- "dev": true,
- "dependencies": {
- "lie": "3.1.1"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
- "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/micromatch/node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/mini-signals": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mini-signals/-/mini-signals-1.2.0.tgz",
- "integrity": "sha512-alffqMkGCjjTSwvYMVLx+7QeJ6sTuxbXqBkP21my4iWU5+QpTQAJt3h7htA1OKm9F3BpMM0vnu72QIoiJakrLA==",
- "dev": true
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/mkdirp": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
- "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
- "dev": true,
- "bin": {
- "mkdirp": "dist/cjs/src/bin.js"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/module-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz",
- "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/napi-macros": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz",
- "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==",
- "dev": true
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/nedb-promises": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/nedb-promises/-/nedb-promises-6.2.3.tgz",
- "integrity": "sha512-enq0IjNyBz9Qy9W/QPCcLGh/QORGBjXbIeZeWvIjO3OMLyAvlKT3hiJubP2BKEiFniUlR3L01o18ktqgn5jxqA==",
- "dev": true,
- "dependencies": {
- "@seald-io/nedb": "^4.0.2"
- }
- },
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "node_modules/node-gyp-build": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
- "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
- "dev": true,
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
- "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
- "dev": true,
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-uri": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/parse-uri/-/parse-uri-1.0.9.tgz",
- "integrity": "sha512-YZfRHHkEZa6qTfPF/xgZ1ErQYCABfud/Vcqp1Q1GNa7RKwv6Oe0YaxXfQQMnQsGdNTo3fwaT0GbVEX7dMAr7tw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/parseqs": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
- "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==",
- "dev": true
- },
- "node_modules/parseuri": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
- "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==",
- "dev": true
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pixi-particles": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/pixi-particles/-/pixi-particles-4.3.1.tgz",
- "integrity": "sha512-XSqDFgYwm/7FRCgP5I2Fc57d98qvb1ql/x4uTjdP4uXDUGgjdO8OW/2A0HVWS1CkOht/1x6dQzsM1oCJAUlaow==",
- "dev": true,
- "peerDependencies": {
- "pixi.js": ">=4.0.0"
- }
- },
- "node_modules/pixi.js": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-5.3.11.tgz",
- "integrity": "sha512-/9td6IHDQqG0Po5lyQ5aKDzrnEVD1SvGourI4Nqp0mvNI0Cbm74tMHLjk1V5foqGPAS9pochENr6Y3ft/2cDiQ==",
- "dev": true,
- "dependencies": {
- "@pixi/accessibility": "5.3.11",
- "@pixi/app": "5.3.11",
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/extract": "5.3.11",
- "@pixi/filter-alpha": "5.3.11",
- "@pixi/filter-blur": "5.3.11",
- "@pixi/filter-color-matrix": "5.3.11",
- "@pixi/filter-displacement": "5.3.11",
- "@pixi/filter-fxaa": "5.3.11",
- "@pixi/filter-noise": "5.3.11",
- "@pixi/graphics": "5.3.11",
- "@pixi/interaction": "5.3.11",
- "@pixi/loaders": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/mesh": "5.3.11",
- "@pixi/mesh-extras": "5.3.11",
- "@pixi/mixin-cache-as-bitmap": "5.3.11",
- "@pixi/mixin-get-child-by-name": "5.3.11",
- "@pixi/mixin-get-global-position": "5.3.11",
- "@pixi/particles": "5.3.11",
- "@pixi/polyfill": "5.3.11",
- "@pixi/prepare": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/sprite": "5.3.11",
- "@pixi/sprite-animated": "5.3.11",
- "@pixi/sprite-tiling": "5.3.11",
- "@pixi/spritesheet": "5.3.11",
- "@pixi/text": "5.3.11",
- "@pixi/text-bitmap": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/pixi.js/node_modules/@pixi/constants": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.11.tgz",
- "integrity": "sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==",
- "dev": true
- },
- "node_modules/pixi.js/node_modules/@pixi/core": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.11.tgz",
- "integrity": "sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/runner": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/ticker": "5.3.11",
- "@pixi/utils": "5.3.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/pixijs"
- }
- },
- "node_modules/pixi.js/node_modules/@pixi/display": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.11.tgz",
- "integrity": "sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==",
- "dev": true,
- "dependencies": {
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/pixi.js/node_modules/@pixi/graphics": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-5.3.11.tgz",
- "integrity": "sha512-HLu53LV6mRlY0uFSIM2OrCuL7xqXzeJs5d2QfmUJfKJVVZ9sbHDS+6/N/f0tXzvkRPYhSKXvcNPsNn4HmlIE9w==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/sprite": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/pixi.js/node_modules/@pixi/math": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.11.tgz",
- "integrity": "sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==",
- "dev": true
- },
- "node_modules/pixi.js/node_modules/@pixi/runner": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.11.tgz",
- "integrity": "sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==",
- "dev": true
- },
- "node_modules/pixi.js/node_modules/@pixi/settings": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.11.tgz",
- "integrity": "sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==",
- "dev": true,
- "dependencies": {
- "ismobilejs": "^1.1.0"
- }
- },
- "node_modules/pixi.js/node_modules/@pixi/sprite": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.11.tgz",
- "integrity": "sha512-RM6Sp8kqzsBdX/hDAO25HZywe9VU4uhOronUOQ5Ve0zRe+trdBWQYfi7+5kAcvzqkp25Izc0C+e+4YCqe5OaHQ==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/core": "5.3.11",
- "@pixi/display": "5.3.11",
- "@pixi/math": "5.3.11",
- "@pixi/settings": "5.3.11",
- "@pixi/utils": "5.3.11"
- }
- },
- "node_modules/pixi.js/node_modules/@pixi/ticker": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.11.tgz",
- "integrity": "sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==",
- "dev": true,
- "dependencies": {
- "@pixi/settings": "5.3.11"
- }
- },
- "node_modules/pixi.js/node_modules/@pixi/utils": {
- "version": "5.3.11",
- "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.11.tgz",
- "integrity": "sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==",
- "dev": true,
- "dependencies": {
- "@pixi/constants": "5.3.11",
- "@pixi/settings": "5.3.11",
- "earcut": "^2.1.5",
- "eventemitter3": "^3.1.0",
- "url": "^0.11.0"
- }
- },
- "node_modules/possible-typed-array-names": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
- "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.6"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resource-loader": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/resource-loader/-/resource-loader-3.0.1.tgz",
- "integrity": "sha512-fBuCRbEHdLCI1eglzQhUv9Rrdcmqkydr1r6uHE2cYHvRBrcLXeSmbE/qI/urFt8rPr/IGxir3BUwM5kUK8XoyA==",
- "dev": true,
- "dependencies": {
- "mini-signals": "^1.2.0",
- "parse-uri": "^1.0.0"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/set-function-length": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dev": true,
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/socket.io-client": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.3.2.tgz",
- "integrity": "sha512-2B9LqSunN60yV8F7S84CCEEcgbYNfrn7ejIInZtLZ7ppWtiX8rGZAjvdCvbnC8bqo/9RlCNOUsORLyskxSFP1g==",
- "dev": true,
- "dependencies": {
- "@socket.io/component-emitter": "~3.0.0",
- "backo2": "~1.0.2",
- "debug": "~4.3.2",
- "engine.io-client": "~6.0.1",
- "parseuri": "0.0.6",
- "socket.io-parser": "~4.1.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/socket.io-parser": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.2.tgz",
- "integrity": "sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==",
- "dev": true,
- "dependencies": {
- "@socket.io/component-emitter": "~3.0.0",
- "debug": "~4.3.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/tinymce": {
- "version": "5.10.1",
- "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.1.tgz",
- "integrity": "sha512-aIsFTYiuESpoYkCgkoojpVtPwrSvYBxp4mMEGsj20CnUruLCWosywkbYHDII+j7KlQZZn3p+xK89f5gT3QyuGw==",
- "dev": true
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/ts-api-utils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
- "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
- "dev": true,
- "engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "typescript": ">=4.2.0"
- }
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/typescript": {
- "version": "5.5.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
- "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
- "dev": true,
- "peer": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/uglify-js": {
- "version": "3.19.2",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.2.tgz",
- "integrity": "sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==",
- "dev": true,
- "optional": true,
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/undici-types": {
- "version": "6.19.6",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz",
- "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==",
- "dev": true
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/url": {
- "version": "0.11.4",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
- "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
- "dev": true,
- "dependencies": {
- "punycode": "^1.4.1",
- "qs": "^6.12.3"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/url/node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true
- },
- "node_modules/util": {
- "version": "0.12.5",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
- "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "which-typed-array": "^1.1.2"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/ws": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
- "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xmlhttprequest-ssl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
- "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==",
- "dev": true
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..78cc67b
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,2119 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+devDependencies:
+ '@eslint/js':
+ specifier: ^9.8.0
+ version: 9.37.0
+ '@foundryvtt/foundryvtt-cli':
+ specifier: ^1.0.3
+ version: 1.1.0
+ '@league-of-foundry-developers/foundry-vtt-types':
+ specifier: ^9.280.0
+ version: 9.280.1(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/graphics@6.5.10)(@pixi/math@6.5.10)(@pixi/utils@6.5.10)
+ '@playwright/test':
+ specifier: ^1.56.0
+ version: 1.56.0
+ '@stylistic/eslint-plugin':
+ specifier: ^2.6.1
+ version: 2.13.0(eslint@9.37.0)(typescript@5.9.3)
+ '@types/node':
+ specifier: ^24.7.2
+ version: 24.7.2
+ dotenv:
+ specifier: ^17.2.2
+ version: 17.2.3
+ eslint:
+ specifier: ^9.8.0
+ version: 9.37.0
+ globals:
+ specifier: ^15.9.0
+ version: 15.15.0
+
+packages:
+
+ /@eslint-community/eslint-utils@4.9.0(eslint@9.37.0):
+ resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ dependencies:
+ eslint: 9.37.0
+ eslint-visitor-keys: 3.4.3
+ dev: true
+
+ /@eslint-community/regexpp@4.12.1:
+ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ dev: true
+
+ /@eslint/config-array@0.21.0:
+ resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@eslint/object-schema': 2.1.6
+ debug: 4.4.3
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@eslint/config-helpers@0.4.0:
+ resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@eslint/core': 0.16.0
+ dev: true
+
+ /@eslint/core@0.16.0:
+ resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@types/json-schema': 7.0.15
+ dev: true
+
+ /@eslint/eslintrc@3.3.1:
+ resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.3
+ espree: 10.4.0
+ globals: 14.0.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@eslint/js@9.37.0:
+ resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dev: true
+
+ /@eslint/object-schema@2.1.6:
+ resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dev: true
+
+ /@eslint/plugin-kit@0.4.0:
+ resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@eslint/core': 0.16.0
+ levn: 0.4.1
+ dev: true
+
+ /@foundryvtt/foundryvtt-cli@1.1.0:
+ resolution: {integrity: sha512-ergKZDUSgQ79168r38ORyN4v/UTliA40rxElaUh5iS27Qw9H8Ep/ll8j3/HfiikO3XUDwYxZLfDJfbcyj2i9TQ==}
+ engines: {node: '>17.0.0'}
+ hasBin: true
+ dependencies:
+ chalk: 5.6.2
+ classic-level: 1.4.1
+ esm: 3.2.25
+ js-yaml: 4.1.0
+ mkdirp: 3.0.1
+ nedb-promises: 6.2.3
+ yargs: 17.7.2
+ dev: true
+
+ /@humanfs/core@0.19.1:
+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ engines: {node: '>=18.18.0'}
+ dev: true
+
+ /@humanfs/node@0.16.7:
+ resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
+ engines: {node: '>=18.18.0'}
+ dependencies:
+ '@humanfs/core': 0.19.1
+ '@humanwhocodes/retry': 0.4.3
+ dev: true
+
+ /@humanwhocodes/module-importer@1.0.1:
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+ dev: true
+
+ /@humanwhocodes/retry@0.4.3:
+ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
+ engines: {node: '>=18.18'}
+ dev: true
+
+ /@league-of-foundry-developers/foundry-vtt-types@9.280.1(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/graphics@6.5.10)(@pixi/math@6.5.10)(@pixi/utils@6.5.10):
+ resolution: {integrity: sha512-o7+hUxUgCR0wlIQR+fdYYl/n+k/HYWPcqJhJpzm+p4YjMIivVrLf7XOut2wwFUDpUHvcJn85Nlj9dvf3PEQnHw==}
+ dependencies:
+ '@pixi/graphics-smooth': 0.0.22(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/graphics@6.5.10)(@pixi/math@6.5.10)(@pixi/utils@6.5.10)
+ '@types/jquery': 3.5.33
+ '@types/simple-peer': 9.11.8
+ handlebars: 4.7.7
+ pixi-particles: 4.3.1(pixi.js@5.3.11)
+ pixi.js: 5.3.11
+ socket.io-client: 4.3.2
+ tinymce: 5.10.1
+ transitivePeerDependencies:
+ - '@pixi/constants'
+ - '@pixi/core'
+ - '@pixi/display'
+ - '@pixi/graphics'
+ - '@pixi/math'
+ - '@pixi/utils'
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /@nodelib/fs.scandir@2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat@2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk@1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.19.1
+ dev: true
+
+ /@pixi/accessibility@5.3.11:
+ resolution: {integrity: sha512-/oSizd8/g6KUCeAlknMLJ9CRxBt+vWs6e2DrOctMoRupEHcmhICCjIyAp5GF6RZy9T9gNHDOU5p7vo7qEyVxgQ==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/app@5.3.11:
+ resolution: {integrity: sha512-ZWrOjGvVl+lK5OJQT3OqSnSRtU2XgQSe/ULg2uGsSWUqMkJews33JIGOjvk4tIsjm4ekSKiPZRMdYFHzPfgEJg==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ dev: true
+
+ /@pixi/constants@5.3.11:
+ resolution: {integrity: sha512-KwutCRu8dRYn3956ygPJlvglHjJM99OS2Qhp4QYG8a4BsPcwfpInsHUtGHngtsTZbnx32pxCd3pg9nPiV8EuVA==}
+ dev: true
+
+ /@pixi/constants@6.5.10:
+ resolution: {integrity: sha512-PUF2Y9YISRu5eVrVVHhHCWpc/KmxQTg3UH8rIUs8UI9dCK41/wsPd3pEahzf7H47v7x1HCohVZcFO3XQc1bUDw==}
+ dev: true
+
+ /@pixi/core@5.3.11:
+ resolution: {integrity: sha512-U71OiC3rNt45/h8kaLGAQL4XsNh/ISoZtxVQNbtKTXlgjEAy1Q01Ht80yl0UJdiVxYQFlanCS/IG4++OkygioA==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/runner': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/ticker': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/core@6.5.10(@pixi/constants@6.5.10)(@pixi/extensions@6.5.10)(@pixi/math@6.5.10)(@pixi/runner@6.5.10)(@pixi/settings@6.5.10)(@pixi/ticker@6.5.10)(@pixi/utils@6.5.10):
+ resolution: {integrity: sha512-Gdzp5ENypyglvsh5Gv3teUZnZnmizo4xOsL+QqmWALdFlJXJwLJMVhKVThV/q/095XR6i4Ou54oshn+m4EkuFw==}
+ peerDependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/extensions': 6.5.10
+ '@pixi/math': 6.5.10
+ '@pixi/runner': 6.5.10
+ '@pixi/settings': 6.5.10
+ '@pixi/ticker': 6.5.10
+ '@pixi/utils': 6.5.10
+ dependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/extensions': 6.5.10
+ '@pixi/math': 6.5.10
+ '@pixi/runner': 6.5.10
+ '@pixi/settings': 6.5.10(@pixi/constants@6.5.10)
+ '@pixi/ticker': 6.5.10(@pixi/extensions@6.5.10)(@pixi/settings@6.5.10)
+ '@pixi/utils': 6.5.10(@pixi/constants@6.5.10)(@pixi/settings@6.5.10)
+ '@types/offscreencanvas': 2019.7.3
+ dev: true
+
+ /@pixi/display@5.3.11:
+ resolution: {integrity: sha512-rxUyB+RMJ7esEa11HdvzsularDGkYlRqpUn1ju9ZsRuB/Qo9JiVolywvWGSWxN/WnDGfrU2GjDpq9id10nwiag==}
+ dependencies:
+ '@pixi/math': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/display@6.5.10(@pixi/constants@6.5.10)(@pixi/math@6.5.10)(@pixi/settings@6.5.10)(@pixi/utils@6.5.10):
+ resolution: {integrity: sha512-NxFdDDxlbH5fQkzGHraLGoTMucW9pVgXqQm13TSmkA3NWIi/SItHL4qT2SI8nmclT9Vid1VDEBCJFAbdeuQw1Q==}
+ peerDependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/math': 6.5.10
+ '@pixi/settings': 6.5.10
+ '@pixi/utils': 6.5.10
+ dependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/math': 6.5.10
+ '@pixi/settings': 6.5.10(@pixi/constants@6.5.10)
+ '@pixi/utils': 6.5.10(@pixi/constants@6.5.10)(@pixi/settings@6.5.10)
+ dev: true
+
+ /@pixi/extensions@6.5.10:
+ resolution: {integrity: sha512-EIUGza+E+sCy3dupuIjvRK/WyVyfSzHb5XsxRaxNrPwvG1iIUIqNqZ3owLYCo4h17fJWrj/yXVufNNtUKQccWQ==}
+ dev: true
+
+ /@pixi/extract@5.3.11:
+ resolution: {integrity: sha512-YeBrpIO3E5HUgcdKEldCUqwwDNHm5OBe98YFcdLr5Z0+dQaHnxp9Dm4n75/NojoGb5guYdrV00x+gU2UPHsVdw==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/filter-alpha@5.3.11:
+ resolution: {integrity: sha512-HC4PbiEqDWSi3A715av7knFqD3knSXRxPJKG9mWat2CU9eCizSw+JxXp/okMU/fL4ewooiqQWVU2l1wXOHhVFw==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ dev: true
+
+ /@pixi/filter-blur@5.3.11:
+ resolution: {integrity: sha512-iW5cOMEcDiJidOV95bUfhxdcvwM9JzCoWAd+92gAie8L+ElRSHpu1jxXbKHjo/QczQV1LulOlheyDaJNpaBCDg==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/settings': 5.3.11
+ dev: true
+
+ /@pixi/filter-color-matrix@5.3.11:
+ resolution: {integrity: sha512-u9NT4+N1I3XV9ygwsmF8/jIwCLqNCLeFOdM4f73kbw/UmakZZ6i6xjjJMc5YFUpC25qDr1TFlqgdGGGHAPl4ug==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ dev: true
+
+ /@pixi/filter-displacement@5.3.11:
+ resolution: {integrity: sha512-CTIy7C/L9I1X3VNx4nMzQbMFvznsGk2viQh0dSo8r5NLgmaAdxhkGI0KUpNjLBz30278tzFfNuRe59K1y1kHuw==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/math': 5.3.11
+ dev: true
+
+ /@pixi/filter-fxaa@5.3.11:
+ resolution: {integrity: sha512-0ahjui5385e1vRvd7zCc0n5W8ULtNI1uVbDJHP9ueeiF25TKC0GqtZzntNwrQPoU46q8zXdnIGjzMpikbbAasg==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ dev: true
+
+ /@pixi/filter-noise@5.3.11:
+ resolution: {integrity: sha512-98WC9Nd5u2F03Ned9T3vnbmO/YF1jLSioZ623z9wjqpd5DosZgRtYTSGxjVcXTSfpviIuiJpkyF+X097pbVprg==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ dev: true
+
+ /@pixi/graphics-smooth@0.0.22(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/graphics@6.5.10)(@pixi/math@6.5.10)(@pixi/utils@6.5.10):
+ resolution: {integrity: sha512-qq2u+BJBIDBuuSTc2Xzm1D/8RiiKBdxnVDiMb7Go5v8achnV5ctC6m+rf8Mq0sWm66mbOqu1aq/9efT4A4sPrA==}
+ peerDependencies:
+ '@pixi/constants': ^6.0.4
+ '@pixi/core': ^6.0.4
+ '@pixi/display': ^6.0.4
+ '@pixi/graphics': ^6.0.4
+ '@pixi/math': ^6.0.4
+ '@pixi/utils': ^6.0.4
+ dependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/core': 6.5.10(@pixi/constants@6.5.10)(@pixi/extensions@6.5.10)(@pixi/math@6.5.10)(@pixi/runner@6.5.10)(@pixi/settings@6.5.10)(@pixi/ticker@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/display': 6.5.10(@pixi/constants@6.5.10)(@pixi/math@6.5.10)(@pixi/settings@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/graphics': 6.5.10(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/math@6.5.10)(@pixi/sprite@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/math': 6.5.10
+ '@pixi/utils': 6.5.10(@pixi/constants@6.5.10)(@pixi/settings@6.5.10)
+ dev: true
+
+ /@pixi/graphics@5.3.11:
+ resolution: {integrity: sha512-HLu53LV6mRlY0uFSIM2OrCuL7xqXzeJs5d2QfmUJfKJVVZ9sbHDS+6/N/f0tXzvkRPYhSKXvcNPsNn4HmlIE9w==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/sprite': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/graphics@6.5.10(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/math@6.5.10)(@pixi/sprite@6.5.10)(@pixi/utils@6.5.10):
+ resolution: {integrity: sha512-KPHGJ910fi8bRQQ+VcTIgrK+bKIm8yAQaZKPqMtm14HzHPGcES6HkgeNY1sd7m8J4aS9btm5wOSyFu0p5IzTpA==}
+ peerDependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/core': 6.5.10
+ '@pixi/display': 6.5.10
+ '@pixi/math': 6.5.10
+ '@pixi/sprite': 6.5.10
+ '@pixi/utils': 6.5.10
+ dependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/core': 6.5.10(@pixi/constants@6.5.10)(@pixi/extensions@6.5.10)(@pixi/math@6.5.10)(@pixi/runner@6.5.10)(@pixi/settings@6.5.10)(@pixi/ticker@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/display': 6.5.10(@pixi/constants@6.5.10)(@pixi/math@6.5.10)(@pixi/settings@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/math': 6.5.10
+ '@pixi/sprite': 6.5.10(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/math@6.5.10)(@pixi/settings@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/utils': 6.5.10(@pixi/constants@6.5.10)(@pixi/settings@6.5.10)
+ dev: true
+
+ /@pixi/interaction@5.3.11:
+ resolution: {integrity: sha512-n2K99CYyBcrf8NPxpzmZ5IlJ9TEplsSZfJ/uzMNOEnTObKl4wAhxs51Nb58raH3Ouzwu14YHOpqYrBTEoT1yPA==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/ticker': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/loaders@5.3.11:
+ resolution: {integrity: sha512-1HAeb/NFXyhNhZWAbVkngsTPBGpjZEPhQflBTrKycRaub7XDSZ8F0fwPltpKKVRWNDT+HBgU/zDNE2fpjzqfYg==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/utils': 5.3.11
+ resource-loader: 3.0.1
+ dev: true
+
+ /@pixi/math@5.3.11:
+ resolution: {integrity: sha512-GAupgFWVuOKxh8A322x8IctNgKi0/pLTJAXxmsLxcUw5PIQGgDw894HvzUriI+C0fsa9cEZHUbOCfyBKPQDLzw==}
+ dev: true
+
+ /@pixi/math@6.5.10:
+ resolution: {integrity: sha512-fxeu7ykVbMGxGV2S3qRTupHToeo1hdWBm8ihyURn3BMqJZe2SkZEECPd5RyvIuuNUtjRnmhkZRnF3Jsz2S+L0g==}
+ dev: true
+
+ /@pixi/mesh-extras@5.3.11:
+ resolution: {integrity: sha512-1GTCMMUW1xv/72x26cxRysblBXW0wU77TNgqtSIMZ1M6JbleObChklWTvwi9MzQO2vQ3S6Hvcsa5m5EiM2hSPQ==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/core': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/mesh': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/mesh@5.3.11:
+ resolution: {integrity: sha512-KWKKksEr0YuUX1uz1FmpIa/Y37b/0pvFUS+87LoyYq0mRtGbKsTY5i3lBPG/taHwN7a2DQAX3JZpw6yhGKoGpA==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/mixin-cache-as-bitmap@5.3.11:
+ resolution: {integrity: sha512-uQUxatGTTD5zfQ0pWdjibVjT+xEEZJ/xZDZtm/GxC7HSHd4jgoJBcTXWVhbhzwpLPVTnD8+sMnRrGlhoKcpTpQ==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/sprite': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/mixin-get-child-by-name@5.3.11:
+ resolution: {integrity: sha512-fWFVxWtMYcwJttrgDNmZ4CJrx316p8ToNliC2ILmJZW77me7I4GzJ57gSHQU1xFwdHoOYRC4fnlrZoK5qJ9lDw==}
+ dependencies:
+ '@pixi/display': 5.3.11
+ dev: true
+
+ /@pixi/mixin-get-global-position@5.3.11:
+ resolution: {integrity: sha512-wrS9i+UUodLM5XL2N0Y+XSKiqLRdJV3ltFUWG6+jPT5yoP0HsKtx3sFAzX526RwIYwRzRusbc/quxHfRA4tvgg==}
+ dependencies:
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ dev: true
+
+ /@pixi/particles@5.3.11:
+ resolution: {integrity: sha512-+mkt/inWXtRrxQc07RZ29uNIDWV1oMsrRBVBIvHgpR92Kn8EjIDRgoSXNu0jiZ18gRKKCBhwsS4dCXGsZRQ/sA==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/polyfill@5.3.11:
+ resolution: {integrity: sha512-yQOngcnn+2/L7n6L/g45hCnIDLWdnWmmcCY3UKJrOgbNX+JtLru1RR8AGLifkdsa0R5u48x584YQGqkTAChWVA==}
+ dependencies:
+ es6-promise-polyfill: 1.2.0
+ object-assign: 4.1.1
+ dev: true
+
+ /@pixi/prepare@5.3.11:
+ resolution: {integrity: sha512-TvjGeg7xPKjv5NxbM5NXReno9yxUCw/N0HtDEtEFRVeBLN3u0Q/dZsXxL6gIvkHoS09NFW+7AwsYQLZrVbppjA==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/graphics': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/text': 5.3.11
+ '@pixi/ticker': 5.3.11
+ dev: true
+
+ /@pixi/runner@5.3.11:
+ resolution: {integrity: sha512-Mtb0rnSG+6KOIbr/48AtrILr8PZQepYwqYixVEXM6UHl+7+Z5NIx9fOByiicdjEKJvHIAYveu8yp2/L1vkF+qw==}
+ dev: true
+
+ /@pixi/runner@6.5.10:
+ resolution: {integrity: sha512-4HiHp6diCmigJT/DSbnqQP62OfWKmZB7zPWMdV1AEdr4YT1QxzXAW1wHg7dkoEfyTHqZKl0tm/zcqKq/iH7tMA==}
+ dev: true
+
+ /@pixi/settings@5.3.11:
+ resolution: {integrity: sha512-ny/rjSmP+64WqxwmoY17KsFplxpuWbiMQ5SNAgkpi36z6k+utIGT05nIIhyMx3AAGSY+6dRbKmLeKyqCj8q4zw==}
+ dependencies:
+ ismobilejs: 1.1.1
+ dev: true
+
+ /@pixi/settings@6.5.10(@pixi/constants@6.5.10):
+ resolution: {integrity: sha512-ypAS5L7pQ2Qb88yQK72bXtc7sD8OrtLWNXdZ/gnw5kwSWCFaOSoqhKqJCXrR5DQtN98+RQefwbEAmMvqobhFyw==}
+ peerDependencies:
+ '@pixi/constants': 6.5.10
+ dependencies:
+ '@pixi/constants': 6.5.10
+ dev: true
+
+ /@pixi/sprite-animated@5.3.11:
+ resolution: {integrity: sha512-xU1b6H8nJ1l05h7cBGw2DGo4QdLj7xootstZUx2BrTVX5ZENn5mjAGVD0uRpk8yt7Q6Bj7M+PS7ktzAgBW/hmQ==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/sprite': 5.3.11
+ '@pixi/ticker': 5.3.11
+ dev: true
+
+ /@pixi/sprite-tiling@5.3.11:
+ resolution: {integrity: sha512-KUiWsIumjrnp9QKGMe1BqtrV9Hxm91KoaiOlCBk/gw8753iKvuMmH+/Z0RnzeZylJ1sJsdonTWy/IaLi1jnd0g==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/sprite': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/sprite@5.3.11:
+ resolution: {integrity: sha512-RM6Sp8kqzsBdX/hDAO25HZywe9VU4uhOronUOQ5Ve0zRe+trdBWQYfi7+5kAcvzqkp25Izc0C+e+4YCqe5OaHQ==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/sprite@6.5.10(@pixi/constants@6.5.10)(@pixi/core@6.5.10)(@pixi/display@6.5.10)(@pixi/math@6.5.10)(@pixi/settings@6.5.10)(@pixi/utils@6.5.10):
+ resolution: {integrity: sha512-UiK+8LgM9XQ/SBDKjRgZ8WggdOSlFRXqiWjEZVmNkiyU8HvXeFzWPRhpc8RR1zDwAUhZWKtMhF8X/ba9m+z2lg==}
+ peerDependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/core': 6.5.10
+ '@pixi/display': 6.5.10
+ '@pixi/math': 6.5.10
+ '@pixi/settings': 6.5.10
+ '@pixi/utils': 6.5.10
+ dependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/core': 6.5.10(@pixi/constants@6.5.10)(@pixi/extensions@6.5.10)(@pixi/math@6.5.10)(@pixi/runner@6.5.10)(@pixi/settings@6.5.10)(@pixi/ticker@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/display': 6.5.10(@pixi/constants@6.5.10)(@pixi/math@6.5.10)(@pixi/settings@6.5.10)(@pixi/utils@6.5.10)
+ '@pixi/math': 6.5.10
+ '@pixi/settings': 6.5.10(@pixi/constants@6.5.10)
+ '@pixi/utils': 6.5.10(@pixi/constants@6.5.10)(@pixi/settings@6.5.10)
+ dev: true
+
+ /@pixi/spritesheet@5.3.11:
+ resolution: {integrity: sha512-Y9Wiwcz/YOuS1v73Ij9KWQakYBzZfldEy3H8T4GPLK+S19/sypntdkNtRZbmR2wWfhJ4axYEB2/Df86aOAU2qA==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/loaders': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/text-bitmap@5.3.11:
+ resolution: {integrity: sha512-Bjc/G4VHaPXc9HJsvyYOm5cNTHdqmX6AgzBAlCfltuMAlnveUgUPuX8D/MJHRRnoVSDHSmCBtnJgTc0y/nIeCw==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/loaders': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/mesh': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/text': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/text@5.3.11:
+ resolution: {integrity: sha512-PmWvJv0wiKyyz3fahnxM19+m8IbF2vpDKIImqb5472WyxRGzKyVBW90xrADf5202tdKMk4b8hqvpof2XULr5PA==}
+ dependencies:
+ '@pixi/core': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/sprite': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /@pixi/ticker@5.3.11:
+ resolution: {integrity: sha512-J1CChbSo1SQib1zL5f+FcFJZ6wN7LnWpztJVpKKYy3ZM/v4HSh48UnrGDKn5SLwSq4K7BxvZduwMQ8m4Paz1gQ==}
+ dependencies:
+ '@pixi/settings': 5.3.11
+ dev: true
+
+ /@pixi/ticker@6.5.10(@pixi/extensions@6.5.10)(@pixi/settings@6.5.10):
+ resolution: {integrity: sha512-UqX1XYtzqFSirmTOy8QAK4Ccg4KkIZztrBdRPKwFSOEiKAJoGDCSBmyQBo/9aYQKGObbNnrJ7Hxv3/ucg3/1GA==}
+ peerDependencies:
+ '@pixi/extensions': 6.5.10
+ '@pixi/settings': 6.5.10
+ dependencies:
+ '@pixi/extensions': 6.5.10
+ '@pixi/settings': 6.5.10(@pixi/constants@6.5.10)
+ dev: true
+
+ /@pixi/utils@5.3.11:
+ resolution: {integrity: sha512-25ZSCTrfV8da28IzvLnTK0BGWB4dHpq5P9IEgFymJvVLK7sAyT+RPz18ewRbBHgALHsszDpfC+qrHp3i+VZP0Q==}
+ dependencies:
+ '@pixi/constants': 5.3.11
+ '@pixi/settings': 5.3.11
+ earcut: 2.2.4
+ eventemitter3: 3.1.2
+ url: 0.11.4
+ dev: true
+
+ /@pixi/utils@6.5.10(@pixi/constants@6.5.10)(@pixi/settings@6.5.10):
+ resolution: {integrity: sha512-4f4qDMmAz9IoSAe08G2LAxUcEtG9jSdudfsMQT2MG+OpfToirboE6cNoO0KnLCvLzDVE/mfisiQ9uJbVA9Ssdw==}
+ peerDependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/settings': 6.5.10
+ dependencies:
+ '@pixi/constants': 6.5.10
+ '@pixi/settings': 6.5.10(@pixi/constants@6.5.10)
+ '@types/earcut': 2.1.4
+ earcut: 2.2.4
+ eventemitter3: 3.1.2
+ url: 0.11.4
+ dev: true
+
+ /@playwright/test@1.56.0:
+ resolution: {integrity: sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==}
+ engines: {node: '>=18'}
+ hasBin: true
+ dependencies:
+ playwright: 1.56.0
+ dev: true
+
+ /@seald-io/binary-search-tree@1.0.3:
+ resolution: {integrity: sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==}
+ dev: true
+
+ /@seald-io/nedb@4.1.2:
+ resolution: {integrity: sha512-bDr6TqjBVS2rDyYM9CPxAnotj5FuNL9NF8o7h7YyFXM7yruqT4ddr+PkSb2mJvvw991bqdftazkEo38gykvaww==}
+ dependencies:
+ '@seald-io/binary-search-tree': 1.0.3
+ localforage: 1.10.0
+ util: 0.12.5
+ dev: true
+
+ /@socket.io/component-emitter@3.0.0:
+ resolution: {integrity: sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==}
+ dev: true
+
+ /@stylistic/eslint-plugin@2.13.0(eslint@9.37.0)(typescript@5.9.3):
+ resolution: {integrity: sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: '>=8.40.0'
+ dependencies:
+ '@typescript-eslint/utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3)
+ eslint: 9.37.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
+ estraverse: 5.3.0
+ picomatch: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@types/earcut@2.1.4:
+ resolution: {integrity: sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==}
+ dev: true
+
+ /@types/estree@1.0.8:
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ dev: true
+
+ /@types/jquery@3.5.33:
+ resolution: {integrity: sha512-SeyVJXlCZpEki5F0ghuYe+L+PprQta6nRZqhONt9F13dWBtR/ftoaIbdRQ7cis7womE+X2LKhsDdDtkkDhJS6g==}
+ dependencies:
+ '@types/sizzle': 2.3.10
+ dev: true
+
+ /@types/json-schema@7.0.15:
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ dev: true
+
+ /@types/node@24.7.2:
+ resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==}
+ dependencies:
+ undici-types: 7.14.0
+ dev: true
+
+ /@types/offscreencanvas@2019.7.3:
+ resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==}
+ dev: true
+
+ /@types/simple-peer@9.11.8:
+ resolution: {integrity: sha512-rvqefdp2rvIA6wiomMgKWd2UZNPe6LM2EV5AuY3CPQJF+8TbdrL5TjYdMf0VAjGczzlkH4l1NjDkihwbj3Xodw==}
+ dependencies:
+ '@types/node': 24.7.2
+ dev: true
+
+ /@types/sizzle@2.3.10:
+ resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==}
+ dev: true
+
+ /@typescript-eslint/project-service@8.46.1(typescript@5.9.3):
+ resolution: {integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.1
+ debug: 4.4.3
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/scope-manager@8.46.1:
+ resolution: {integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/visitor-keys': 8.46.1
+ dev: true
+
+ /@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.9.3):
+ resolution: {integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+ dependencies:
+ typescript: 5.9.3
+ dev: true
+
+ /@typescript-eslint/types@8.46.1:
+ resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dev: true
+
+ /@typescript-eslint/typescript-estree@8.46.1(typescript@5.9.3):
+ resolution: {integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+ dependencies:
+ '@typescript-eslint/project-service': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/visitor-keys': 8.46.1
+ debug: 4.4.3
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.7.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3):
+ resolution: {integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0)
+ '@typescript-eslint/scope-manager': 8.46.1
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3)
+ eslint: 9.37.0
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/visitor-keys@8.46.1:
+ resolution: {integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ '@typescript-eslint/types': 8.46.1
+ eslint-visitor-keys: 4.2.1
+ dev: true
+
+ /abstract-level@1.0.4:
+ resolution: {integrity: sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==}
+ engines: {node: '>=12'}
+ dependencies:
+ buffer: 6.0.3
+ catering: 2.1.1
+ is-buffer: 2.0.5
+ level-supports: 4.0.1
+ level-transcoder: 1.0.1
+ module-error: 1.0.2
+ queue-microtask: 1.2.3
+ dev: true
+
+ /acorn-jsx@5.3.2(acorn@8.15.0):
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.15.0
+ dev: true
+
+ /acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: true
+
+ /ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ /argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ dev: true
+
+ /available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ possible-typed-array-names: 1.1.0
+ dev: true
+
+ /backo2@1.0.2:
+ resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==}
+ dev: true
+
+ /balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ dev: true
+
+ /base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ dev: true
+
+ /brace-expansion@1.1.12:
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: true
+
+ /brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+ dependencies:
+ balanced-match: 1.0.2
+ dev: true
+
+ /braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.1.1
+ dev: true
+
+ /buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+ dev: true
+
+ /call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ dev: true
+
+ /call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+ dev: true
+
+ /call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+ dev: true
+
+ /callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /catering@2.1.1:
+ resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /chalk@5.6.2:
+ resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ dev: true
+
+ /classic-level@1.4.1:
+ resolution: {integrity: sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==}
+ engines: {node: '>=12'}
+ requiresBuild: true
+ dependencies:
+ abstract-level: 1.0.4
+ catering: 2.1.1
+ module-error: 1.0.2
+ napi-macros: 2.2.2
+ node-gyp-build: 4.8.4
+ dev: true
+
+ /cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ dev: true
+
+ /cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: true
+
+ /debug@4.3.7:
+ resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ dev: true
+
+ /define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+ dev: true
+
+ /dotenv@17.2.3:
+ resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+ dev: true
+
+ /earcut@2.2.4:
+ resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
+ dev: true
+
+ /emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /engine.io-client@6.0.3:
+ resolution: {integrity: sha512-IH8ZhDIwiLv0d/wXVzmjfV9Y82hbJIDhCGSVUV8o1kcpDe2I6Y3bZA3ZbJy4Ls7k7IVmcy/qn4k9RKWFhUGf5w==}
+ dependencies:
+ '@socket.io/component-emitter': 3.0.0
+ debug: 4.3.7
+ engine.io-parser: 5.0.7
+ has-cors: 1.1.0
+ parseqs: 0.0.6
+ parseuri: 0.0.6
+ ws: 8.2.3
+ xmlhttprequest-ssl: 2.0.0
+ yeast: 0.1.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /engine.io-parser@5.0.7:
+ resolution: {integrity: sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==}
+ engines: {node: '>=10.0.0'}
+ dev: true
+
+ /es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ dev: true
+
+ /es6-promise-polyfill@1.2.0:
+ resolution: {integrity: sha512-HHb0vydCpoclpd0ySPkRXMmBw80MRt1wM4RBJBlXkux97K7gleabZdsR0gvE1nNPM9mgOZIBTzjjXiPxf4lIqQ==}
+ dev: true
+
+ /escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /eslint-scope@8.4.0:
+ resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+ dev: true
+
+ /eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
+ /eslint-visitor-keys@4.2.1:
+ resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dev: true
+
+ /eslint@9.37.0:
+ resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0)
+ '@eslint-community/regexpp': 4.12.1
+ '@eslint/config-array': 0.21.0
+ '@eslint/config-helpers': 0.4.0
+ '@eslint/core': 0.16.0
+ '@eslint/eslintrc': 3.3.1
+ '@eslint/js': 9.37.0
+ '@eslint/plugin-kit': 0.4.0
+ '@humanfs/node': 0.16.7
+ '@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.4.3
+ '@types/estree': 1.0.8
+ '@types/json-schema': 7.0.15
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.3
+ escape-string-regexp: 4.0.0
+ eslint-scope: 8.4.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 8.0.0
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ json-stable-stringify-without-jsonify: 1.0.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /esm@3.2.25:
+ resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /espree@10.4.0:
+ resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dependencies:
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
+ eslint-visitor-keys: 4.2.1
+ dev: true
+
+ /esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /eventemitter3@3.1.2:
+ resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==}
+ dev: true
+
+ /fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: true
+
+ /fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+ dev: true
+
+ /fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
+
+ /fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ dev: true
+
+ /fastq@1.19.1:
+ resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+ dependencies:
+ reusify: 1.1.0
+ dev: true
+
+ /file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
+ dependencies:
+ flat-cache: 4.0.1
+ dev: true
+
+ /fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
+ dependencies:
+ flatted: 3.3.3
+ keyv: 4.5.4
+ dev: true
+
+ /flatted@3.3.3:
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ dev: true
+
+ /for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ dev: true
+
+ /fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ dev: true
+
+ /generator-function@2.0.1:
+ resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
+
+ /get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+ dev: true
+
+ /get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+ dev: true
+
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
+ dev: true
+
+ /globals@15.15.0:
+ resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
+ engines: {node: '>=18'}
+ dev: true
+
+ /gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /handlebars@4.7.7:
+ resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==}
+ engines: {node: '>=0.4.7'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ neo-async: 2.6.2
+ source-map: 0.6.1
+ wordwrap: 1.0.0
+ optionalDependencies:
+ uglify-js: 3.19.3
+ dev: true
+
+ /has-cors@1.1.0:
+ resolution: {integrity: sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==}
+ dev: true
+
+ /has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ dependencies:
+ es-define-property: 1.0.1
+ dev: true
+
+ /has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.1.0
+ dev: true
+
+ /hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ function-bind: 1.1.2
+ dev: true
+
+ /ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ dev: true
+
+ /ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+ dev: true
+
+ /import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ dev: true
+
+ /imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+ dev: true
+
+ /inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: true
+
+ /is-arguments@1.2.0:
+ resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-buffer@2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-generator-function@1.1.2:
+ resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ generator-function: 2.0.1
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+ dev: true
+
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-regex@1.2.1:
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+ dev: true
+
+ /is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ which-typed-array: 1.1.19
+ dev: true
+
+ /isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ dev: true
+
+ /ismobilejs@1.1.1:
+ resolution: {integrity: sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==}
+ dev: true
+
+ /js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ dev: true
+
+ /json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ dev: true
+
+ /json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ dev: true
+
+ /json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ dev: true
+
+ /keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ dependencies:
+ json-buffer: 3.0.1
+ dev: true
+
+ /level-supports@4.0.1:
+ resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /level-transcoder@1.0.1:
+ resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==}
+ engines: {node: '>=12'}
+ dependencies:
+ buffer: 6.0.3
+ module-error: 1.0.2
+ dev: true
+
+ /levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: true
+
+ /lie@3.1.1:
+ resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==}
+ dependencies:
+ immediate: 3.0.6
+ dev: true
+
+ /localforage@1.10.0:
+ resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
+ dependencies:
+ lie: 3.1.1
+ dev: true
+
+ /locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+ dev: true
+
+ /lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: true
+
+ /math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+ dev: true
+
+ /mini-signals@1.2.0:
+ resolution: {integrity: sha512-alffqMkGCjjTSwvYMVLx+7QeJ6sTuxbXqBkP21my4iWU5+QpTQAJt3h7htA1OKm9F3BpMM0vnu72QIoiJakrLA==}
+ dev: true
+
+ /minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.12
+ dev: true
+
+ /minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ brace-expansion: 2.0.2
+ dev: true
+
+ /minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ dev: true
+
+ /mkdirp@3.0.1:
+ resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
+ /module-error@1.0.2:
+ resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: true
+
+ /napi-macros@2.2.2:
+ resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==}
+ dev: true
+
+ /natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ dev: true
+
+ /nedb-promises@6.2.3:
+ resolution: {integrity: sha512-enq0IjNyBz9Qy9W/QPCcLGh/QORGBjXbIeZeWvIjO3OMLyAvlKT3hiJubP2BKEiFniUlR3L01o18ktqgn5jxqA==}
+ dependencies:
+ '@seald-io/nedb': 4.1.2
+ dev: true
+
+ /neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+ dev: true
+
+ /node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
+ dev: true
+
+ /object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+ dev: true
+
+ /p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+ dev: true
+
+ /p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+ dev: true
+
+ /parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+ dev: true
+
+ /parse-uri@1.0.16:
+ resolution: {integrity: sha512-WMX9ygt2zzbtd3UlChi8S2Uj/dZa0N9QaotTkyRD7v06c50dor4qEWrM5ZvHiiaZYpXal4otRS9hynwwX0DVoA==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /parseqs@0.0.6:
+ resolution: {integrity: sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==}
+ dev: true
+
+ /parseuri@0.0.6:
+ resolution: {integrity: sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==}
+ dev: true
+
+ /path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /pixi-particles@4.3.1(pixi.js@5.3.11):
+ resolution: {integrity: sha512-XSqDFgYwm/7FRCgP5I2Fc57d98qvb1ql/x4uTjdP4uXDUGgjdO8OW/2A0HVWS1CkOht/1x6dQzsM1oCJAUlaow==}
+ peerDependencies:
+ pixi.js: '>=4.0.0'
+ dependencies:
+ pixi.js: 5.3.11
+ dev: true
+
+ /pixi.js@5.3.11:
+ resolution: {integrity: sha512-/9td6IHDQqG0Po5lyQ5aKDzrnEVD1SvGourI4Nqp0mvNI0Cbm74tMHLjk1V5foqGPAS9pochENr6Y3ft/2cDiQ==}
+ dependencies:
+ '@pixi/accessibility': 5.3.11
+ '@pixi/app': 5.3.11
+ '@pixi/constants': 5.3.11
+ '@pixi/core': 5.3.11
+ '@pixi/display': 5.3.11
+ '@pixi/extract': 5.3.11
+ '@pixi/filter-alpha': 5.3.11
+ '@pixi/filter-blur': 5.3.11
+ '@pixi/filter-color-matrix': 5.3.11
+ '@pixi/filter-displacement': 5.3.11
+ '@pixi/filter-fxaa': 5.3.11
+ '@pixi/filter-noise': 5.3.11
+ '@pixi/graphics': 5.3.11
+ '@pixi/interaction': 5.3.11
+ '@pixi/loaders': 5.3.11
+ '@pixi/math': 5.3.11
+ '@pixi/mesh': 5.3.11
+ '@pixi/mesh-extras': 5.3.11
+ '@pixi/mixin-cache-as-bitmap': 5.3.11
+ '@pixi/mixin-get-child-by-name': 5.3.11
+ '@pixi/mixin-get-global-position': 5.3.11
+ '@pixi/particles': 5.3.11
+ '@pixi/polyfill': 5.3.11
+ '@pixi/prepare': 5.3.11
+ '@pixi/runner': 5.3.11
+ '@pixi/settings': 5.3.11
+ '@pixi/sprite': 5.3.11
+ '@pixi/sprite-animated': 5.3.11
+ '@pixi/sprite-tiling': 5.3.11
+ '@pixi/spritesheet': 5.3.11
+ '@pixi/text': 5.3.11
+ '@pixi/text-bitmap': 5.3.11
+ '@pixi/ticker': 5.3.11
+ '@pixi/utils': 5.3.11
+ dev: true
+
+ /playwright-core@1.56.0:
+ resolution: {integrity: sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+ dev: true
+
+ /playwright@1.56.0:
+ resolution: {integrity: sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==}
+ engines: {node: '>=18'}
+ hasBin: true
+ dependencies:
+ playwright-core: 1.56.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /possible-typed-array-names@1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /punycode@1.4.1:
+ resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
+ dev: true
+
+ /punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+ dependencies:
+ side-channel: 1.1.0
+ dev: true
+
+ /queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /resource-loader@3.0.1:
+ resolution: {integrity: sha512-fBuCRbEHdLCI1eglzQhUv9Rrdcmqkydr1r6uHE2cYHvRBrcLXeSmbE/qI/urFt8rPr/IGxir3BUwM5kUK8XoyA==}
+ dependencies:
+ mini-signals: 1.2.0
+ parse-uri: 1.0.16
+ dev: true
+
+ /reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /safe-regex-test@1.1.0:
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+ dev: true
+
+ /semver@7.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
+ /set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+ dev: true
+
+ /shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ dev: true
+
+ /side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ dev: true
+
+ /side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+ dev: true
+
+ /side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+ dev: true
+
+ /socket.io-client@4.3.2:
+ resolution: {integrity: sha512-2B9LqSunN60yV8F7S84CCEEcgbYNfrn7ejIInZtLZ7ppWtiX8rGZAjvdCvbnC8bqo/9RlCNOUsORLyskxSFP1g==}
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ '@socket.io/component-emitter': 3.0.0
+ backo2: 1.0.2
+ debug: 4.3.7
+ engine.io-client: 6.0.3
+ parseuri: 0.0.6
+ socket.io-parser: 4.1.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /socket.io-parser@4.1.2:
+ resolution: {integrity: sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog==}
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ '@socket.io/component-emitter': 3.0.0
+ debug: 4.3.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+ dev: true
+
+ /strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: true
+
+ /strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /tinymce@5.10.1:
+ resolution: {integrity: sha512-aIsFTYiuESpoYkCgkoojpVtPwrSvYBxp4mMEGsj20CnUruLCWosywkbYHDII+j7KlQZZn3p+xK89f5gT3QyuGw==}
+ dev: true
+
+ /to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /ts-api-utils@2.1.0(typescript@5.9.3):
+ resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
+ engines: {node: '>=18.12'}
+ peerDependencies:
+ typescript: '>=4.8.4'
+ dependencies:
+ typescript: 5.9.3
+ dev: true
+
+ /type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ dev: true
+
+ /typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+ dev: true
+
+ /uglify-js@3.19.3:
+ resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /undici-types@7.14.0:
+ resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==}
+ dev: true
+
+ /uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
+ /url@0.11.4:
+ resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ punycode: 1.4.1
+ qs: 6.14.0
+ dev: true
+
+ /util@0.12.5:
+ resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
+ dependencies:
+ inherits: 2.0.4
+ is-arguments: 1.2.0
+ is-generator-function: 1.1.2
+ is-typed-array: 1.1.15
+ which-typed-array: 1.1.19
+ dev: true
+
+ /which-typed-array@1.1.19:
+ resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /wordwrap@1.0.0:
+ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
+ dev: true
+
+ /wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /ws@8.2.3:
+ resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: true
+
+ /xmlhttprequest-ssl@2.0.0:
+ resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+ dev: true
+
+ /yeast@0.1.2:
+ resolution: {integrity: sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==}
+ dev: true
+
+ /yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+ dev: true
From ce6ac8a93b4ac64d2ecc150a42aba522615c4138 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Wed, 5 Nov 2025 22:41:53 -0700
Subject: [PATCH 046/140] Add foundations for the data request sockets
---
langs/en-ca.json | 7 +++++++
module/hooks/init.mjs | 2 ++
module/sockets/_index.mjs | 34 ++++++++++++++++++++++++++++++++
module/sockets/cancelRequest.mjs | 1 +
module/sockets/createNotif.mjs | 1 +
module/sockets/dataRequest.mjs | 1 +
module/sockets/submitRequest.mjs | 1 +
system.json | 1 +
8 files changed, 48 insertions(+)
create mode 100644 module/sockets/_index.mjs
create mode 100644 module/sockets/cancelRequest.mjs
create mode 100644 module/sockets/createNotif.mjs
create mode 100644 module/sockets/dataRequest.mjs
create mode 100644 module/sockets/submitRequest.mjs
diff --git a/langs/en-ca.json b/langs/en-ca.json
index de83d02..425e065 100644
--- a/langs/en-ca.json
+++ b/langs/en-ca.json
@@ -31,6 +31,13 @@
"system": "Text-Based Actors"
}
}
+ },
+ "notifs": {
+ "error": {
+ "invalid-socket": "Invalid socket data received, this means a module or system bug is present.",
+ "unknown-socket-event": "An unknown socket event was received: {event}",
+ "malformed-socket-payload": "Socket event \"{event}\" received with malformed payload. Details: {details}"
+ }
}
}
}
diff --git a/module/hooks/init.mjs b/module/hooks/init.mjs
index ecf09b9..f3db2fb 100644
--- a/module/hooks/init.mjs
+++ b/module/hooks/init.mjs
@@ -17,6 +17,7 @@ import { __ID__ } from "../consts.mjs";
import helpers from "../handlebarsHelpers/_index.mjs";
import { Logger } from "../utils/Logger.mjs";
import { registerCustomComponents } from "../apps/elements/_index.mjs";
+import { registerSockets } from "../sockets/_index.mjs";
Hooks.on(`init`, () => {
Logger.debug(`Initializing`);
@@ -41,6 +42,7 @@ Hooks.on(`init`, () => {
registerWorldSettings();
+ registerSockets();
registerCustomComponents();
Handlebars.registerHelper(helpers);
});
diff --git a/module/sockets/_index.mjs b/module/sockets/_index.mjs
new file mode 100644
index 0000000..1f34107
--- /dev/null
+++ b/module/sockets/_index.mjs
@@ -0,0 +1,34 @@
+import { cancelRequest } from "./cancelRequest.mjs";
+import { createNotif } from "./createNotif.mjs";
+import { dataRequest } from "./dataRequest.mjs";
+import { localizer } from "../utils/Localizer.mjs";
+import { Logger } from "../utils/Logger.mjs";
+import { submitRequest } from "./submitRequest.mjs";
+
+const events = {
+ // Data Request sockets
+ cancelRequest,
+ createNotif,
+ dataRequest,
+ submitRequest,
+};
+
+export function registerSockets() {
+ Logger.info(`Setting up socket listener`);
+
+ game.socket.on(`system.taf`, (data, userID) => {
+ const { event, payload } = data ?? {};
+ if (event == null || payload === undefined) {
+ ui.notifications.error(localizer(`taf.notifs.error.invalid-socket`));
+ return;
+ };
+
+ if (events[event] == null) {
+ ui.notifications.error(localizer(`taf.notifs.error.unknown-socket-event`, { event }));
+ return;
+ };
+
+ const user = game.users.get(userID);
+ events[event](payload, user);
+ });
+};
diff --git a/module/sockets/cancelRequest.mjs b/module/sockets/cancelRequest.mjs
new file mode 100644
index 0000000..865071a
--- /dev/null
+++ b/module/sockets/cancelRequest.mjs
@@ -0,0 +1 @@
+export function cancelRequest() {};
diff --git a/module/sockets/createNotif.mjs b/module/sockets/createNotif.mjs
new file mode 100644
index 0000000..55b72a1
--- /dev/null
+++ b/module/sockets/createNotif.mjs
@@ -0,0 +1 @@
+export function createNotif() {};
diff --git a/module/sockets/dataRequest.mjs b/module/sockets/dataRequest.mjs
new file mode 100644
index 0000000..e75521f
--- /dev/null
+++ b/module/sockets/dataRequest.mjs
@@ -0,0 +1 @@
+export function dataRequest() {};
diff --git a/module/sockets/submitRequest.mjs b/module/sockets/submitRequest.mjs
new file mode 100644
index 0000000..44ebf1d
--- /dev/null
+++ b/module/sockets/submitRequest.mjs
@@ -0,0 +1 @@
+export function submitRequest() {};
diff --git a/system.json b/system.json
index 1aaa3a5..2283284 100644
--- a/system.json
+++ b/system.json
@@ -41,6 +41,7 @@
},
"Item": {}
},
+ "socket": true,
"flags": {
"hotReload": {
"extensions": ["css", "hbs", "json", "js", "mjs", "svg"],
From 36811b268ce18656c626623fa4813d751ab23a75 Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 8 Nov 2025 00:40:33 -0700
Subject: [PATCH 047/140] Add a QueryManager helper class
---
module/api.mjs | 2 +
module/utils/QueryManager.mjs | 77 +++++++++++++++++++++++++++++++++++
2 files changed, 79 insertions(+)
create mode 100644 module/utils/QueryManager.mjs
diff --git a/module/api.mjs b/module/api.mjs
index b139ef9..8655eb3 100644
--- a/module/api.mjs
+++ b/module/api.mjs
@@ -6,6 +6,7 @@ import { PlayerSheet } from "./apps/PlayerSheet.mjs";
// Utils
import { attributeSorter } from "./utils/attributeSort.mjs";
import { DialogManager } from "./utils/DialogManager.mjs";
+import { QueryManager } from "./utils/QueryManager.mjs";
import { toID } from "./utils/toID.mjs";
const { deepFreeze } = foundry.utils;
@@ -16,6 +17,7 @@ Object.defineProperty(
{
value: deepFreeze({
DialogManager,
+ QueryManager,
Apps: {
Ask,
AttributeManager,
diff --git a/module/utils/QueryManager.mjs b/module/utils/QueryManager.mjs
new file mode 100644
index 0000000..2dfc381
--- /dev/null
+++ b/module/utils/QueryManager.mjs
@@ -0,0 +1,77 @@
+/**
+ * @typedef Apple
+ * @property {string[]} users
+ * @property {Function} resolve
+ * @property {Record} responses
+ */
+
+const { randomID } = foundry.utils;
+
+export class QueryManager {
+ static #queries = new Map();
+ static #promises = new Map();
+
+ static has(requestID) {
+ return this.#queries.has(requestID);
+ };
+
+ static async query(request, users = null, config = undefined) {
+ request.id ??= randomID();
+
+ game.socket.emit(`system.taf`, {
+ event: `query.prompt`,
+ payload: {
+ id: request.id,
+ users,
+ request,
+ config,
+ },
+ });
+
+ if (this.#promises.has(request.id)) {
+ return null;
+ };
+
+ const promise = new Promise((resolve) => {
+ this.#queries.set(
+ request.id,
+ {
+ users: users ?? game.users.filter(u => u.id !== game.user.id),
+ resolve,
+ responses: {},
+ },
+ );
+ });
+ return promise;
+ };
+
+ static async submit(requestID, answers) {
+ game.socket.emit(`system.taf`, {
+ event: `query.submit`,
+ payload: {
+ id: requestID,
+ answers,
+ },
+ });
+ };
+
+ static async addResponse(requestID, userID, answers) {
+ const data = this.#queries.get(requestID);
+ data.responses[userID] = answers;
+
+ // Validate for responses from everyone
+ if (data.users.length === Object.keys(data.responses).length) {
+ data.resolve(data.responses);
+ };
+ };
+
+ static async cancel(requestID) {
+ // prevent cancelling other people's queries
+ if (!this.#queries.has(requestID)) { return };
+
+ game.socket.emit(`system.taf`, {
+ event: `query.cancel`,
+ payload: { id: requestID },
+ });
+ };
+};
From bfd408ef0be1d26e14f393999482996340b8e6cc Mon Sep 17 00:00:00 2001
From: Eldritch-Oliver
Date: Sat, 8 Nov 2025 00:40:48 -0700
Subject: [PATCH 048/140] Begin implementing the socket event handlers
---
module/sockets/_index.mjs | 11 ++++----
module/sockets/dataRequest.mjs | 46 +++++++++++++++++++++++++++++++-
module/sockets/submitRequest.mjs | 23 +++++++++++++++-
3 files changed, 72 insertions(+), 8 deletions(-)
diff --git a/module/sockets/_index.mjs b/module/sockets/_index.mjs
index 1f34107..259834d 100644
--- a/module/sockets/_index.mjs
+++ b/module/sockets/_index.mjs
@@ -1,16 +1,15 @@
import { cancelRequest } from "./cancelRequest.mjs";
import { createNotif } from "./createNotif.mjs";
import { dataRequest } from "./dataRequest.mjs";
-import { localizer } from "../utils/Localizer.mjs";
import { Logger } from "../utils/Logger.mjs";
import { submitRequest } from "./submitRequest.mjs";
const events = {
// Data Request sockets
- cancelRequest,
createNotif,
- dataRequest,
- submitRequest,
+ "query.cancel": cancelRequest,
+ "query.prompt": dataRequest,
+ "query.submit": submitRequest,
};
export function registerSockets() {
@@ -19,12 +18,12 @@ export function registerSockets() {
game.socket.on(`system.taf`, (data, userID) => {
const { event, payload } = data ?? {};
if (event == null || payload === undefined) {
- ui.notifications.error(localizer(`taf.notifs.error.invalid-socket`));
+ ui.notifications.error(game.i18n.format(`taf.notifs.error.invalid-socket`));
return;
};
if (events[event] == null) {
- ui.notifications.error(localizer(`taf.notifs.error.unknown-socket-event`, { event }));
+ ui.notifications.error(game.i18n.format(`taf.notifs.error.unknown-socket-event`, { event }));
return;
};
diff --git a/module/sockets/dataRequest.mjs b/module/sockets/dataRequest.mjs
index e75521f..a4e6cbf 100644
--- a/module/sockets/dataRequest.mjs
+++ b/module/sockets/dataRequest.mjs
@@ -1 +1,45 @@
-export function dataRequest() {};
+import { DialogManager } from "../utils/DialogManager.mjs";
+
+export async function dataRequest(payload) {
+ const {
+ id,
+ users,
+ config,
+ request,
+ } = payload;
+
+ if (!id) {
+ ui.notifications.error(game.i18n.format(
+ `taf.notifs.error.malformed-socket-payload`,
+ {
+ event: `query.prompt`,
+ details: `A request ID must be provided`,
+ }),
+ );
+ return;
+ };
+
+ // null/undefined is a special case for "all users but me" by default
+ if (!Array.isArray(users) || users != null) {
+ ui.notifications.error(game.i18n.format(
+ `taf.notifs.error.malformed-socket-payload`,
+ {
+ event: `query.prompt`,
+ details: ``,
+ }),
+ );
+ return;
+ };
+
+ if (!users.includes(game.user.id)) { return };
+
+ request.id = id;
+ const result = await DialogManager.ask(request, config);
+ if (result.state === `fronted`) { return };
+ if (result.state === `errored`) {
+ ui.notifications.error(result.error);
+ return;
+ };
+
+
+};
diff --git a/module/sockets/submitRequest.mjs b/module/sockets/submitRequest.mjs
index 44ebf1d..91dfbc3 100644
--- a/module/sockets/submitRequest.mjs
+++ b/module/sockets/submitRequest.mjs
@@ -1 +1,22 @@
-export function submitRequest() {};
+import { QueryManager } from "../utils/QueryManager.mjs";
+
+export function submitRequest(payload, user) {
+ const {
+ id,
+ answers,
+ } = payload;
+
+ if (!id) {
+ ui.notifications.error(game.i18n.format(
+ `taf.notifs.error.malformed-socket-payload`,
+ {
+ event: `query.submit`,
+ details: `A request ID must be provided`,
+ }),
+ );
+ return;
+ };
+
+ if (!QueryManager.has(id)) { return };
+ QueryManager.addResponse(id, user.id, answers);
+};
From b6ab0a229ad748c41dbea8ce6858258114ade343 Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sat, 8 Nov 2025 19:06:01 -0700
Subject: [PATCH 049/140] Rename the notification event name
---
module/sockets/_index.mjs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/sockets/_index.mjs b/module/sockets/_index.mjs
index 259834d..a133c06 100644
--- a/module/sockets/_index.mjs
+++ b/module/sockets/_index.mjs
@@ -6,8 +6,8 @@ import { submitRequest } from "./submitRequest.mjs";
const events = {
// Data Request sockets
- createNotif,
"query.cancel": cancelRequest,
+ "query.notify": createNotif,
"query.prompt": dataRequest,
"query.submit": submitRequest,
};
From bd301d69fb1e99017fd4151468bf32101847820d Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sat, 8 Nov 2025 19:06:19 -0700
Subject: [PATCH 050/140] Implement the chat notification for the player
---
module/sockets/createNotif.mjs | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/module/sockets/createNotif.mjs b/module/sockets/createNotif.mjs
index 55b72a1..8ec4c2f 100644
--- a/module/sockets/createNotif.mjs
+++ b/module/sockets/createNotif.mjs
@@ -1 +1,19 @@
-export function createNotif() {};
+export function createNotif(payload) {
+ const { userID, content, includeGM } = payload;
+
+ if (userID !== game.user.id) { return };
+
+ // TODO: prevent this from working if the user hasn't submitted a query response
+
+ let whisper = [game.user.id];
+ if (includeGM) {
+ whisper = game.users.filter(u => u.isGM).map(u => u.id);
+ };
+
+ ChatMessage.implementation.create({
+ flavor: `Data Query Notification`,
+ content,
+ whisper,
+ style: CONST.CHAT_MESSAGE_STYLES.OOC,
+ });
+};
From 723bcf873528f21a47a963453794e005f2e81734 Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sat, 8 Nov 2025 19:07:01 -0700
Subject: [PATCH 051/140] Add notification and submission tracking for the
QueryManager
---
langs/en-ca.json | 1 +
module/utils/QueryManager.mjs | 53 ++++++++++++++++++++++++++---------
2 files changed, 40 insertions(+), 14 deletions(-)
diff --git a/langs/en-ca.json b/langs/en-ca.json
index 425e065..1854bf9 100644
--- a/langs/en-ca.json
+++ b/langs/en-ca.json
@@ -34,6 +34,7 @@
},
"notifs": {
"error": {
+ "missing-id": "An ID must be provided",
"invalid-socket": "Invalid socket data received, this means a module or system bug is present.",
"unknown-socket-event": "An unknown socket event was received: {event}",
"malformed-socket-payload": "Socket event \"{event}\" received with malformed payload. Details: {details}"
diff --git a/module/utils/QueryManager.mjs b/module/utils/QueryManager.mjs
index 2dfc381..b56b813 100644
--- a/module/utils/QueryManager.mjs
+++ b/module/utils/QueryManager.mjs
@@ -1,13 +1,24 @@
/**
- * @typedef Apple
+ * @typedef QueryData
* @property {string[]} users
* @property {Function} resolve
* @property {Record} responses
+ * @property {(() => Promise)|null} onSubmit
*/
-const { randomID } = foundry.utils;
+import { filePath } from "../consts.mjs";
+
+async function sendBasicNotification(userID, answers) {
+ const content = await foundry.applications.handlebars.renderTemplate(
+ filePath(`templates/query-response.hbs`),
+ { answers },
+ );
+
+ QueryManager.notify(userID, content, { includeGM: false });
+};
export class QueryManager {
+ /** @type {Map} */
static #queries = new Map();
static #promises = new Map();
@@ -15,8 +26,18 @@ export class QueryManager {
return this.#queries.has(requestID);
};
- static async query(request, users = null, config = undefined) {
- request.id ??= randomID();
+ static async query(
+ request,
+ {
+ onSubmit = sendBasicNotification,
+ users = null,
+ config = undefined,
+ } = {},
+ ) {
+ if (!request.id) {
+ ui.notifications.error(game.i18n.localize(`taf.notifs.error.missing-id`));
+ return;
+ };
game.socket.emit(`system.taf`, {
event: `query.prompt`,
@@ -39,32 +60,36 @@ export class QueryManager {
users: users ?? game.users.filter(u => u.id !== game.user.id),
resolve,
responses: {},
+ onSubmit,
},
);
});
return promise;
};
- static async submit(requestID, answers) {
- game.socket.emit(`system.taf`, {
- event: `query.submit`,
- payload: {
- id: requestID,
- answers,
- },
- });
- };
-
static async addResponse(requestID, userID, answers) {
const data = this.#queries.get(requestID);
data.responses[userID] = answers;
+ await data.onSubmit?.(userID, answers);
+
// Validate for responses from everyone
if (data.users.length === Object.keys(data.responses).length) {
data.resolve(data.responses);
};
};
+ static async notify(userID, content, { includeGM = false } = {}) {
+ game.socket.emit(`system.taf`, {
+ event: `query.notify`,
+ payload: {
+ userID,
+ content,
+ includeGM,
+ },
+ });
+ }
+
static async cancel(requestID) {
// prevent cancelling other people's queries
if (!this.#queries.has(requestID)) { return };
From db4f57fc905662592ef138f23a7406e19fbc0dd4 Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sat, 8 Nov 2025 19:11:52 -0700
Subject: [PATCH 052/140] Add the special case for prompting all but the
requesting user
---
module/sockets/dataRequest.mjs | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/module/sockets/dataRequest.mjs b/module/sockets/dataRequest.mjs
index a4e6cbf..34cd39f 100644
--- a/module/sockets/dataRequest.mjs
+++ b/module/sockets/dataRequest.mjs
@@ -20,26 +20,32 @@ export async function dataRequest(payload) {
};
// null/undefined is a special case for "all users but me" by default
- if (!Array.isArray(users) || users != null) {
+ if (users != null && !Array.isArray(users)) {
ui.notifications.error(game.i18n.format(
`taf.notifs.error.malformed-socket-payload`,
{
event: `query.prompt`,
- details: ``,
+ details: `A list of users must be provided`,
}),
);
return;
};
- if (!users.includes(game.user.id)) { return };
+ if (users != null && !users.includes(game.user.id)) { return };
request.id = id;
const result = await DialogManager.ask(request, config);
- if (result.state === `fronted`) { return };
- if (result.state === `errored`) {
- ui.notifications.error(result.error);
+ if (result.state === `fronted`) {
return;
+ } else if (result.state === `errored`) {
+ ui.notifications.error(result.error);
+ } else if (result.state === `prompted`) {
+ game.socket.emit(`system.taf`, {
+ event: `query.submit`,
+ payload: {
+ id: request.id,
+ answers: result.answers,
+ },
+ });
};
-
-
};
From e79bd4d505a6d16acbe2ecdf432fde351526f589 Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sat, 8 Nov 2025 19:12:19 -0700
Subject: [PATCH 053/140] Add the template and styles for the chat notification
---
styles/elements/table.css | 21 +++++++++++++++++++++
styles/main.css | 1 +
templates/query-response.hbs | 16 ++++++++++++++++
3 files changed, 38 insertions(+)
create mode 100644 styles/elements/table.css
create mode 100644 templates/query-response.hbs
diff --git a/styles/elements/table.css b/styles/elements/table.css
new file mode 100644
index 0000000..5f9310c
--- /dev/null
+++ b/styles/elements/table.css
@@ -0,0 +1,21 @@
+/*
+This styling is unscoped in order to make it so that it still applies
+to the chat messages which are not within a scope I control.
+*/
+table.taf-query-summary {
+ margin: 0px;
+
+ tr:hover > td {
+ background-color: var(--table-header-border-highlight);
+ }
+
+ td {
+ padding: 4px 8px;
+ border: 1px solid var(--table-header-border-color);
+ width: 40%;
+
+ &:first-of-type {
+ width: 60%;
+ }
+ }
+}
diff --git a/styles/main.css b/styles/main.css
index 10ea6ec..40f4ed2 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -14,6 +14,7 @@
@import url("./elements/input.css") layer(elements);
@import url("./elements/p.css") layer(elements);
@import url("./elements/prose-mirror.css") layer(elements);
+@import url("./elements/table.css") layer(elements);
/* Apps */
@import url("./Apps/common.css") layer(apps);
diff --git a/templates/query-response.hbs b/templates/query-response.hbs
new file mode 100644
index 0000000..c2e1219
--- /dev/null
+++ b/templates/query-response.hbs
@@ -0,0 +1,16 @@
+{{#if answers}}
+
+
+ | Key |
+ Value |
+
+ {{#each answers as | answer |}}
+
+ | {{ @key }} |
+ {{ answer }} |
+
+ {{/each}}
+
+{{else}}
+No data submitted
+{{/if}}
From 47b68621c12689c752de683774da18a9256a796f Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sat, 8 Nov 2025 19:12:30 -0700
Subject: [PATCH 054/140] Add CONST as a readonly global
---
eslint.config.mjs | 1 +
1 file changed, 1 insertion(+)
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 55aea5c..d5f0390 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -16,6 +16,7 @@ export default [
languageOptions: {
globals: {
CONFIG: `writable`,
+ CONST: `readonly`,
game: `readonly`,
Handlebars: `readonly`,
Hooks: `readonly`,
From a242101b5b4609680e38b726e19c23573f2ef70a Mon Sep 17 00:00:00 2001
From: Oliver
Date: Sun, 9 Nov 2025 00:31:04 -0700
Subject: [PATCH 055/140] Begin working on the QueryStatus application for the
requestor to monitor user responses
---
module/api.mjs | 2 +
module/apps/QueryStatus.mjs | 75 +++++++++++++++++++++++++++++++++
module/utils/QueryManager.mjs | 11 +++++
styles/elements/span.css | 44 +++++++++++++++++++
styles/main.css | 1 +
templates/QueryStatus/users.hbs | 21 +++++++++
6 files changed, 154 insertions(+)
create mode 100644 module/apps/QueryStatus.mjs
create mode 100644 styles/elements/span.css
create mode 100644 templates/QueryStatus/users.hbs
diff --git a/module/api.mjs b/module/api.mjs
index 8655eb3..dc38c3d 100644
--- a/module/api.mjs
+++ b/module/api.mjs
@@ -2,6 +2,7 @@
import { Ask } from "./apps/Ask.mjs";
import { AttributeManager } from "./apps/AttributeManager.mjs";
import { PlayerSheet } from "./apps/PlayerSheet.mjs";
+import { QueryStatus } from "./apps/QueryStatus.mjs";
// Utils
import { attributeSorter } from "./utils/attributeSort.mjs";
@@ -22,6 +23,7 @@ Object.defineProperty(
Ask,
AttributeManager,
PlayerSheet,
+ QueryStatus,
},
utils: {
attributeSorter,
diff --git a/module/apps/QueryStatus.mjs b/module/apps/QueryStatus.mjs
new file mode 100644
index 0000000..bcae4ce
--- /dev/null
+++ b/module/apps/QueryStatus.mjs
@@ -0,0 +1,75 @@
+import { __ID__, filePath } from "../consts.mjs";
+import { QueryManager } from "../utils/QueryManager.mjs";
+
+const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
+
+export class QueryStatus extends HandlebarsApplicationMixin(ApplicationV2) {
+ // #region Options
+ static DEFAULT_OPTIONS = {
+ classes: [
+ __ID__,
+ `QueryStatus`,
+ ],
+ };
+
+ static PARTS = {
+ users: {
+ template: filePath(`templates/QueryStatus/users.hbs`),
+ },
+ // controls: {
+ // template: filePath(`templates/QueryStatus/controls.hbs`),
+ // },
+ };
+ // #endregion Options
+
+ // #region Instance
+ constructor({
+ requestID,
+ ...opts
+ }) {
+ super(opts);
+ this.requestID = requestID;
+ };
+ // #endregion Instance
+
+ // #region Lifecycle
+ async _preparePartContext(partID) {
+ const ctx = {};
+
+ switch (partID) {
+ case `users`: {
+ this._prepareUsers(ctx);
+ break;
+ };
+ case `controls`: {
+ this._prepareControls(ctx);
+ break;
+ };
+ };
+
+ return ctx;
+ };
+
+ async _prepareUsers(ctx) {
+ const query = QueryManager.get(this.requestID);
+ if (!query) { return };
+
+ const users = [];
+ for (const userID of query.users) {
+ const user = game.users.get(userID);
+ users.push({
+ id: userID,
+ name: user.name,
+ colour: user.color,
+ answers: query.responses[userID] ?? null,
+ });
+ };
+ ctx.users = users;
+ };
+
+ async _prepareControls(ctx) {};
+ // #endregion Lifecycle
+
+ // #region Actions
+ // #endregion Actions
+};
diff --git a/module/utils/QueryManager.mjs b/module/utils/QueryManager.mjs
index b56b813..35ece0a 100644
--- a/module/utils/QueryManager.mjs
+++ b/module/utils/QueryManager.mjs
@@ -26,6 +26,17 @@ export class QueryManager {
return this.#queries.has(requestID);
};
+ static get(requestID) {
+ if (!this.#queries.has(requestID)) { return null };
+ const query = this.#queries.get(requestID);
+ const cloned = foundry.utils.deepClone(query);
+
+ delete cloned.onSubmit;
+ delete cloned.resolve;
+
+ return cloned;
+ };
+
static async query(
request,
{
diff --git a/styles/elements/span.css b/styles/elements/span.css
new file mode 100644
index 0000000..da5c58a
--- /dev/null
+++ b/styles/elements/span.css
@@ -0,0 +1,44 @@
+@keyframes rotate {
+ 0% { transform: rotate(0deg); }
+ 50% { transform: rotate(360deg); }
+ 100% { transform: rotate(720deg); }
+}
+
+@keyframes prixClipFix {
+ 0%, 100% {
+ clip-path: polygon(50% 50%,0 0,0 0,0 0,0 0,0 0);
+ }
+ 25%, 63% {
+ clip-path: polygon(50% 50%,0 0,100% 0,100% 0,100% 0,100% 0);
+ }
+ 37%, 50% {
+ clip-path: polygon(50% 50%,0 0,100% 0,100% 100%,100% 100%,100% 100%);
+ }
+}
+
+.taf > .window-content span {
+ &.loader {
+ width: 48px;
+ height: 48px;
+ border-radius: 50%;
+ position: relative;
+ animation: rotate 2s linear infinite;
+ display: block;
+
+ &::before, &::after {
+ content: "";
+ box-sizing: border-box;
+ position: absolute;
+ inset: 0px;
+ border-radius: 50%;
+ border: 5px solid #FFF;
+ animation: prixClipFix 4s linear infinite;
+ }
+
+ &::after{
+ inset: 8px;
+ transform: rotate3d(90, 90, 0, 180deg );
+ border-color: #FF3D00; /* This can be the user colour */
+ }
+ }
+}
diff --git a/styles/main.css b/styles/main.css
index 40f4ed2..28a27a4 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -14,6 +14,7 @@
@import url("./elements/input.css") layer(elements);
@import url("./elements/p.css") layer(elements);
@import url("./elements/prose-mirror.css") layer(elements);
+@import url("./elements/span.css") layer(elements);
@import url("./elements/table.css") layer(elements);
/* Apps */
diff --git a/templates/QueryStatus/users.hbs b/templates/QueryStatus/users.hbs
new file mode 100644
index 0000000..ca9049f
--- /dev/null
+++ b/templates/QueryStatus/users.hbs
@@ -0,0 +1,21 @@
+
From 5770abb7e81d77d767e9ae257096c5dfaec9f8bc Mon Sep 17 00:00:00 2001
From: Oliver
Date: Wed, 12 Nov 2025 00:08:49 -0700
Subject: [PATCH 056/140] Add a disconnected icon for the purposes of the
QueryStatus app
---
assets/icons/disconnected.svg | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 assets/icons/disconnected.svg
diff --git a/assets/icons/disconnected.svg b/assets/icons/disconnected.svg
new file mode 100644
index 0000000..c47a732
--- /dev/null
+++ b/assets/icons/disconnected.svg
@@ -0,0 +1,3 @@
+
From 03623424196c7f9f4f24fb660db84d6814ee0bbe Mon Sep 17 00:00:00 2001
From: Oliver
Date: Wed, 12 Nov 2025 00:09:52 -0700
Subject: [PATCH 057/140] Get the QueryStatus application displaying the status
more appropriately
---
langs/en-ca.json | 3 ++
module/apps/QueryStatus.mjs | 20 +++++++++++---
module/hooks/userConnected.mjs | 5 ++++
module/main.mjs | 1 +
module/utils/QueryManager.mjs | 44 ++++++++++++++++++++++++++++--
styles/Apps/QueryStatus.css | 20 ++++++++++++++
styles/elements/span.css | 7 +++--
styles/elements/utils.css | 3 ++
styles/main.css | 2 ++
templates/QueryStatus/controls.hbs | 8 ++++++
templates/QueryStatus/users.hbs | 18 +++++++++---
11 files changed, 117 insertions(+), 14 deletions(-)
create mode 100644 module/hooks/userConnected.mjs
create mode 100644 styles/Apps/QueryStatus.css
create mode 100644 styles/elements/utils.css
create mode 100644 templates/QueryStatus/controls.hbs
diff --git a/langs/en-ca.json b/langs/en-ca.json
index 1854bf9..24dc2cb 100644
--- a/langs/en-ca.json
+++ b/langs/en-ca.json
@@ -15,6 +15,9 @@
"PlayerSheet": "Player Sheet"
},
"Apps": {
+ "QueryStatus": {
+ "user-disconnected-tooltip": "This user is not logged in to Foundry"
+ },
"TAFDocumentSheetConfig": {
"Sizing": "Sizing",
"Width": {
diff --git a/module/apps/QueryStatus.mjs b/module/apps/QueryStatus.mjs
index bcae4ce..e5ce09b 100644
--- a/module/apps/QueryStatus.mjs
+++ b/module/apps/QueryStatus.mjs
@@ -1,4 +1,5 @@
import { __ID__, filePath } from "../consts.mjs";
+import { Logger } from "../utils/Logger.mjs";
import { QueryManager } from "../utils/QueryManager.mjs";
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
@@ -10,15 +11,22 @@ export class QueryStatus extends HandlebarsApplicationMixin(ApplicationV2) {
__ID__,
`QueryStatus`,
],
+ position: {
+ width: 300,
+ height: `auto`,
+ },
+ window: {
+ resizable: true,
+ },
};
static PARTS = {
users: {
template: filePath(`templates/QueryStatus/users.hbs`),
},
- // controls: {
- // template: filePath(`templates/QueryStatus/controls.hbs`),
- // },
+ controls: {
+ template: filePath(`templates/QueryStatus/controls.hbs`),
+ },
};
// #endregion Options
@@ -27,6 +35,10 @@ export class QueryStatus extends HandlebarsApplicationMixin(ApplicationV2) {
requestID,
...opts
}) {
+ if (!requestID) {
+ Logger.error(`A requestID must be provided for QueryStatus applications`);
+ return null;
+ };
super(opts);
this.requestID = requestID;
};
@@ -60,7 +72,7 @@ export class QueryStatus extends HandlebarsApplicationMixin(ApplicationV2) {
users.push({
id: userID,
name: user.name,
- colour: user.color,
+ active: user.active,
answers: query.responses[userID] ?? null,
});
};
diff --git a/module/hooks/userConnected.mjs b/module/hooks/userConnected.mjs
new file mode 100644
index 0000000..750417e
--- /dev/null
+++ b/module/hooks/userConnected.mjs
@@ -0,0 +1,5 @@
+import { QueryManager } from "../utils/QueryManager.mjs";
+
+Hooks.on(`userConnected`, (user) => {
+ QueryManager.userActivity(user.id);
+});
diff --git a/module/main.mjs b/module/main.mjs
index abde62f..05cf7d9 100644
--- a/module/main.mjs
+++ b/module/main.mjs
@@ -1,2 +1,3 @@
import "./api.mjs";
import "./hooks/init.mjs";
+import "./hooks/userConnected.mjs";
diff --git a/module/utils/QueryManager.mjs b/module/utils/QueryManager.mjs
index 35ece0a..9adce82 100644
--- a/module/utils/QueryManager.mjs
+++ b/module/utils/QueryManager.mjs
@@ -4,9 +4,12 @@
* @property {Function} resolve
* @property {Record} responses
* @property {(() => Promise)|null} onSubmit
+ * @property {QueryStatus|null} app
*/
import { filePath } from "../consts.mjs";
+import { Logger } from "./Logger.mjs";
+import { QueryStatus } from "../apps/QueryStatus.mjs";
async function sendBasicNotification(userID, answers) {
const content = await foundry.applications.handlebars.renderTemplate(
@@ -34,7 +37,7 @@ export class QueryManager {
delete cloned.onSubmit;
delete cloned.resolve;
- return cloned;
+ return foundry.utils.deepFreeze(cloned);
};
static async query(
@@ -42,7 +45,8 @@ export class QueryManager {
{
onSubmit = sendBasicNotification,
users = null,
- config = undefined,
+ showStatusApp = true,
+ ...config
} = {},
) {
if (!request.id) {
@@ -68,13 +72,21 @@ export class QueryManager {
this.#queries.set(
request.id,
{
- users: users ?? game.users.filter(u => u.id !== game.user.id),
+ users: users ?? game.users.filter(u => u.id !== game.user.id).map(u => u.id),
resolve,
responses: {},
onSubmit,
+ app: null,
},
);
});
+
+ if (showStatusApp) {
+ const app = new QueryStatus({ requestID: request.id });
+ app.render({ force: true });
+ this.#queries.get(request.id).app = app;
+ };
+
return promise;
};
@@ -86,7 +98,10 @@ export class QueryManager {
// Validate for responses from everyone
if (data.users.length === Object.keys(data.responses).length) {
+ data.app.close();
data.resolve(data.responses);
+ } else {
+ data.app?.render({ parts: [ `users` ] });
};
};
@@ -110,4 +125,27 @@ export class QueryManager {
payload: { id: requestID },
});
};
+
+ static async setApplication(requestID, app) {
+ if (!this.#queries.has(requestID)) { return };
+ if (!(app instanceof QueryStatus)) { return };
+ const query = this.#queries.get(requestID);
+ if (query.app) {
+ Logger.error(`Cannot set an application for a query that has one already`);
+ return;
+ };
+ query.app = app;
+ };
+
+ static async userActivity(userID) {
+ for (const query of this.#queries.values()) {
+ if (query.users.includes(userID)) {
+ query.app.render({ parts: [ `users` ] });
+
+ // TODO: if the user is connecting, we want to open
+ // the ask modal on their browser so that they can
+ // actually fill in the data
+ };
+ };
+ };
};
diff --git a/styles/Apps/QueryStatus.css b/styles/Apps/QueryStatus.css
new file mode 100644
index 0000000..fbbc60e
--- /dev/null
+++ b/styles/Apps/QueryStatus.css
@@ -0,0 +1,20 @@
+.taf.QueryStatus {
+ .user-list {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+
+ li {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ margin: 0;
+ border: 1px solid yellowgreen;
+ border-radius: 4px;
+ padding: 4px 8px;
+ }
+ }
+}
diff --git a/styles/elements/span.css b/styles/elements/span.css
index da5c58a..1ce99fe 100644
--- a/styles/elements/span.css
+++ b/styles/elements/span.css
@@ -18,8 +18,9 @@
.taf > .window-content span {
&.loader {
- width: 48px;
- height: 48px;
+ --size: 40px;
+ width: var(--size);
+ height: var(--size);
border-radius: 50%;
position: relative;
animation: rotate 2s linear infinite;
@@ -38,7 +39,7 @@
&::after{
inset: 8px;
transform: rotate3d(90, 90, 0, 180deg );
- border-color: #FF3D00; /* This can be the user colour */
+ border-color: var(--spinner-inner-colour, #FF3D00);
}
}
}
diff --git a/styles/elements/utils.css b/styles/elements/utils.css
new file mode 100644
index 0000000..f99356f
--- /dev/null
+++ b/styles/elements/utils.css
@@ -0,0 +1,3 @@
+.taf > .window-content {
+ .grow { flex-grow: 1; }
+}
\ No newline at end of file
diff --git a/styles/main.css b/styles/main.css
index 28a27a4..6994e85 100644
--- a/styles/main.css
+++ b/styles/main.css
@@ -9,6 +9,7 @@
@import url("./themes/light.css") layer(themes);
/* Elements */
+@import url("./elements/utils.css") layer(elements);
@import url("./elements/headers.css") layer(elements);
@import url("./elements/hr.css") layer(elements);
@import url("./elements/input.css") layer(elements);
@@ -22,4 +23,5 @@
@import url("./Apps/Ask.css") layer(apps);
@import url("./Apps/AttributeManager.css") layer(apps);
@import url("./Apps/PlayerSheet.css") layer(apps);
+@import url("./Apps/QueryStatus.css") layer(apps);
@import url("./Apps/TAFDocumentSheetConfig.css") layer(apps);
diff --git a/templates/QueryStatus/controls.hbs b/templates/QueryStatus/controls.hbs
new file mode 100644
index 0000000..363c828
--- /dev/null
+++ b/templates/QueryStatus/controls.hbs
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/templates/QueryStatus/users.hbs b/templates/QueryStatus/users.hbs
index ca9049f..640bfdd 100644
--- a/templates/QueryStatus/users.hbs
+++ b/templates/QueryStatus/users.hbs
@@ -1,7 +1,9 @@
-