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/.forgejo/workflows/draft-release.yaml b/.forgejo/workflows/draft-release.yaml new file mode 100644 index 0000000..e667615 --- /dev/null +++ b/.forgejo/workflows/draft-release.yaml @@ -0,0 +1,96 @@ +on: [ workflow_dispatch ] +jobs: + create-artifacts: + name: "Create artifacts" + runs-on: act + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: npm clean-install + + - id: version + run: cat system.json | echo version=`jq -r ".version"` >> "$FORGEJO_OUTPUT" + + - name: Assert that the tag doesn't exist + run: node scripts/tagExists.mjs + env: + TAG_NAME: "v${{steps.version.outputs.version}}" + + # Compendia steps + - name: Build compendia + run: "npm run data:build" + - name: Remove compendia source + run: "rm -rf packs/**/_source" + + - name: Compress files + run: zip -r release.zip langs module styles templates README.md assets + + - name: Upload artifacts + uses: https://data.forgejo.org/forgejo/upload-artifact@v4 + with: + path: | + system.json + release.zip + scripts/*.mjs + package-lock.json + package.json + retention-days: 7 + if-no-files-found: error + + + forgejo-release: + name: "Create Forgejo release" + runs-on: act + needs: + - create-artifacts + if: vars.RELEASE_TO_FORGEJO == 'yes' + steps: + - name: Download artifacts + uses: https://data.forgejo.org/forgejo/download-artifact@v4 + with: + merge-multiple: true + + - name: Install dependencies + run: npm i + + - id: version + run: cat system.json | echo version=`jq -r ".version"` >> "$FORGEJO_OUTPUT" + + - name: Update manifest + run: node scripts/prepareManifest.mjs + env: + DOWNLOAD_URL: "${{forgejo.server_url}}/${{forgejo.repository}}/releases/download/v${{steps.version.outputs.version}}/release.zip" + LATEST_URL: "${{forgejo.server_url}}/${{forgejo.repository}}/releases/download/latest/system.json" + + - name: Add manifest into release archive + run: zip release.zip --update system.json + + - name: Upload archive to s3 + run: node scripts/uploadToS3.mjs + env: + TAG: "v${{steps.version.outputs.version}}" + FILE: "release.zip" + S3_BUCKET: "${{vars.S3_BUCKET}}" + S3_REGION: "${{vars.S3_REGION}}" + S3_KEY: "${{secrets.S3_KEY}}" + S3_SECRET: "${{secrets.S3_SECRET}}" + S3_ENDPOINT: "${{vars.S3_ENDPOINT}}" + + - name: Upload manifest to s3 + run: node scripts/uploadToS3.mjs + env: + TAG: "v${{steps.version.outputs.version}}" + FILE: "system.json" + S3_BUCKET: "${{vars.S3_BUCKET}}" + S3_REGION: "${{vars.S3_REGION}}" + S3_KEY: "${{secrets.S3_KEY}}" + S3_SECRET: "${{secrets.S3_SECRET}}" + S3_ENDPOINT: "${{vars.S3_ENDPOINT}}" + + - name: Create draft release + run: node scripts/createForgejoRelease.mjs + env: + TAG: "v${{steps.version.outputs.version}}" + CDN_URL: "${{vars.CDN_URL}}" diff --git a/.forgejo/workflows/publish-release.yaml b/.forgejo/workflows/publish-release.yaml new file mode 100644 index 0000000..63fa76f --- /dev/null +++ b/.forgejo/workflows/publish-release.yaml @@ -0,0 +1,9 @@ +on: + release: + types: [published] +jobs: + release-to-foundry: + runs-on: docker + steps: + - name: retrieve release URLS + - name: publish to Foundry diff --git a/.github/workflows/draft-release.yaml b/.github/workflows/draft-release.yaml deleted file mode 100644 index bbae45e..0000000 --- a/.github/workflows/draft-release.yaml +++ /dev/null @@ -1,54 +0,0 @@ -name: Create Draft Release -on: [workflow_dispatch] -jobs: - everything: - runs-on: ubuntu-latest - steps: - # Checkout the repository - - uses: actions/checkout@v4 - - # Install node and NPM - - uses: actions/setup-node@v4 - with: - node-version: "20" - - # Install required packages - - run: npm install - - - name: Reading the system.json for the version - id: "version" - run: cat system.json | echo version=`jq -r ".version"` >> "$GITHUB_OUTPUT" - - # Check that tag doesn't exist - - uses: mukunku/tag-exists-action@v1.5.0 - id: check-tag - with: - tag: "v${{ steps.version.outputs.version }}" - - - name: "Ensure that the tag doesn't exist" - if: ${{ steps.check-tag.outputs.exists == 'true' }} - run: exit 1 - - # Compile the stuff that needs to be compiled - - 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 - 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 - - - name: Create the zip - run: zip -r release.zip langs module styles templates system.json README.md - - - name: Create the draft release - uses: ncipollo/release-action@v1 - with: - tag: "v${{ steps.version.outputs.version }}" - commit: ${{ github.ref }} - draft: true - generateReleaseNotes: true - artifacts: "release.zip,system.json" diff --git a/.gitignore b/.gitignore index b22745b..f3a0af4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules/ deprecated +.env +/foundry diff --git a/.vscode/settings.json b/.vscode/settings.json index 3f6e97a..cc64012 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,9 +8,9 @@ "git.branchProtection": [], "files.exclude": { "*.lock": true, - ".styles": false, "node_modules": true, "packs": true, + "foundry": true }, "html.customData": [ "./.vscode/components.html-data.json" diff --git a/README.md b/README.md index 8d4cb08..4fca88e 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,17 @@ This is an intentionally bare-bones system that features a text-only character sheet, allowing the playing of games that may not otherwise have a Foundry system implementation. + +## Unlisted Releases +Some of the versions of Text-Based Actors are not available in the [Releases list](https://git.varify.ca/Foundry/taf/releases), +these versions are installable manually by using the appropriate manifest link +below: + +| Version | Manifest URL +| ------- | ------------ +| v2.2.1 | https://cdn.varify.ca/Foundry/taf/v2.2.1/system.json +| v2.2.0 | https://cdn.varify.ca/Foundry/taf/v2.2.0/system.json +| v2.1.0 | https://cdn.varify.ca/Foundry/taf/v2.1.0/system.json +| v2.0.0 | https://cdn.varify.ca/Foundry/taf/v2.0.0/system.json +| v1.1.0 | https://cdn.varify.ca/Foundry/taf/v1.1.0/system.json +| v1.0.0 | https://cdn.varify.ca/Foundry/taf/v1.0.0/system.json 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 @@ + + + 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..04422dc 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, @@ -16,6 +16,7 @@ export default [ languageOptions: { globals: { CONFIG: `writable`, + CONST: `readonly`, game: `readonly`, Handlebars: `readonly`, Hooks: `readonly`, @@ -72,7 +73,7 @@ export default [ "@stylistic/eol-last": `warn`, "@stylistic/operator-linebreak": [`warn`, `before`], "@stylistic/indent": [`warn`, `tab`], - "@stylistic/brace-style": [`warn`, `1tbs`, { "allowSingleLine": true }], + "@stylistic/brace-style": [`off`], "@stylistic/quotes": [`warn`, `backtick`, { "avoidEscape": true }], "@stylistic/comma-dangle": [`warn`, { arrays: `always-multiline`, objects: `always-multiline`, imports: `always-multiline`, exports: `always-multiline`, functions: `always-multiline` }], "@stylistic/comma-style": [`warn`, `last`], diff --git a/jsconfig.json b/jsconfig.json index 231558c..6811918 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/**/*", + "foundry/client/client.mjs", + "foundry/client/global.d.mts", + "foundry/common/primitives/global.d.mts" + ] } diff --git a/langs/en-ca.json b/langs/en-ca.json index 99de0b3..1136454 100644 --- a/langs/en-ca.json +++ b/langs/en-ca.json @@ -13,6 +13,48 @@ }, "sheet-names": { "PlayerSheet": "Player Sheet" + }, + "misc": { + "Key": "Key", + "Value": "Value", + "no-data-submitted": "No data submitted", + "data-query-notif-header": "Data Query Notification" + }, + "Apps": { + "QueryStatus": { + "title": "Information Request Status", + "user-disconnected-tooltip": "This user is not logged in to Foundry", + "cancel-request": "Cancel Request", + "finish-early": "Finish Request Early", + "send-request": "Send Request" + }, + "TAFDocumentSheetConfig": { + "Sizing": "Sizing", + "Width": { + "label": "Width" + }, + "Height": { + "label": "Height" + }, + "Resizable": { + "label": "Resizable" + }, + "tabs": { + "foundry": "Foundry", + "system": "Text-Based Actors" + } + } + }, + "sockets": { + "user-list-required": "A list fo users must be provided" + }, + "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/api.mjs b/module/api.mjs new file mode 100644 index 0000000..33eab44 --- /dev/null +++ b/module/api.mjs @@ -0,0 +1,36 @@ +// Apps +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"; +import { DialogManager } from "./utils/DialogManager.mjs"; +import { localizer } from "./utils/localizer.mjs"; +import { QueryManager } from "./utils/QueryManager.mjs"; +import { toID } from "./utils/toID.mjs"; + +const { deepFreeze } = foundry.utils; + +Object.defineProperty( + globalThis, + `taf`, + { + value: deepFreeze({ + DialogManager, + QueryManager, + Apps: { + Ask, + AttributeManager, + PlayerSheet, + QueryStatus, + }, + utils: { + attributeSorter, + localizer, + toID, + }, + }), + }, +); diff --git a/module/apps/Ask.mjs b/module/apps/Ask.mjs new file mode 100644 index 0000000..e6d3ce4 --- /dev/null +++ b/module/apps/Ask.mjs @@ -0,0 +1,133 @@ +import { __ID__, filePath } from "../consts.mjs"; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +const validInputTypes = [ + `checkbox`, + `details`, + `divider`, + `error`, + `input`, + `select`, +]; + +export class Ask extends HandlebarsApplicationMixin(ApplicationV2) { + // #region Options + 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: validInputTypes.map(type => filePath(`templates/Ask/inputs/${type}.hbs`)), + }, + controls: { + template: filePath(`templates/Ask/controls.hbs`), + }, + }; + // #endregion Options + + // #region Instance + _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; + + 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; + this._userOnConfirm = onConfirm; + this._userOnClose = onClose; + }; + // #endregion Instance + + // #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/apps/AttributeManager.mjs b/module/apps/AttributeManager.mjs index d3874ba..c81bb1a 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; @@ -35,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 @@ -72,7 +67,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), @@ -133,7 +128,6 @@ export class AttributeManager extends HandlebarsApplicationMixin(ApplicationV2) }; }; - Logger.debug(`Updating ${binding} value to ${value}`); setProperty(this.#attributes, binding, value); await this.render({ parts: [ `attributes` ]}); }; @@ -143,7 +137,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, }; @@ -196,7 +190,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; @@ -210,6 +204,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/module/apps/PlayerSheet.mjs b/module/apps/PlayerSheet.mjs index 23b1082..257182a 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 { TAFDocumentSheetConfig } from "./TAFDocumentSheetConfig.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, + configureSheet: this.#configureSheet, }, }; @@ -37,6 +40,30 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) { // #endregion Options // #region Lifecycle + _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; + }; + + return super._initializeApplicationOptions(options); + }; + _getHeaderControls() { const controls = super._getHeaderControls(); @@ -54,6 +81,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 +136,29 @@ 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 }); + }; + }; + + 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 }; diff --git a/module/apps/QueryStatus.mjs b/module/apps/QueryStatus.mjs new file mode 100644 index 0000000..5139bb2 --- /dev/null +++ b/module/apps/QueryStatus.mjs @@ -0,0 +1,111 @@ +import { __ID__, filePath } from "../consts.mjs"; +import { cancel, finish, get as getQuery, requery } from "../utils/QueryManager.mjs"; +import { Logger } from "../utils/Logger.mjs"; + +const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api; + +export class QueryStatus extends HandlebarsApplicationMixin(ApplicationV2) { + // #region Options + static DEFAULT_OPTIONS = { + classes: [ + __ID__, + `QueryStatus`, + ], + position: { + width: 300, + height: `auto`, + }, + window: { + title: `taf.Apps.QueryStatus.title`, + resizable: true, + }, + actions: { + promptUser: this.promptUser, + finishEarly: this.finishEarly, + cancelRequest: this.cancelRequest, + }, + }; + + static PARTS = { + users: { + template: filePath(`templates/QueryStatus/users.hbs`), + }, + controls: { + template: filePath(`templates/QueryStatus/controls.hbs`), + }, + }; + // #endregion Options + + // #region Instance + /** @type {string} */ + #requestID; + + constructor({ + requestID, + ...opts + }) { + if (!requestID) { + Logger.error(`A requestID must be provided for QueryStatus applications`); + return null; + }; + super(opts); + this.#requestID = requestID; + }; + + get requestID() { + return this.#requestID; + }; + // #endregion Instance + + // #region Lifecycle + async _preparePartContext(partID) { + const ctx = {}; + + switch (partID) { + case `users`: { + this._prepareUsers(ctx); + break; + }; + }; + + return ctx; + }; + + async _prepareUsers(ctx) { + const query = getQuery(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, + active: user.active, + answers: query.responses[userID] ?? null, + status: query.status[userID], + }); + }; + ctx.users = users; + }; + // #endregion Lifecycle + + // #region Actions + /** @this {QueryStatus} */ + static async promptUser($e, element) { + const userID = element.closest(`[data-user-id]`)?.dataset.userId; + if (!userID) { return }; + requery(this.#requestID, [ userID ]); + }; + + /** @this {QueryStatus} */ + static async cancelRequest() { + cancel(this.#requestID); + }; + + /** @this {QueryStatus} */ + static async finishEarly() { + finish(this.#requestID); + }; + // #endregion Actions +}; 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/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/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/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; }; diff --git a/module/handlebarsHelpers/_index.mjs b/module/handlebarsHelpers/_index.mjs new file mode 100644 index 0000000..b613f61 --- /dev/null +++ b/module/handlebarsHelpers/_index.mjs @@ -0,0 +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`)); +}; diff --git a/module/hooks/init.mjs b/module/hooks/init.mjs index 6f1c54e..f3db2fb 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 @@ -13,8 +14,10 @@ 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"; +import { registerSockets } from "../sockets/_index.mjs"; Hooks.on(`init`, () => { Logger.debug(`Initializing`); @@ -24,6 +27,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, @@ -33,6 +40,9 @@ Hooks.on(`init`, () => { }, ); - registerCustomComponents(); registerWorldSettings(); + + registerSockets(); + registerCustomComponents(); + Handlebars.registerHelper(helpers); }); diff --git a/module/hooks/userConnected.mjs b/module/hooks/userConnected.mjs new file mode 100644 index 0000000..ed50f34 --- /dev/null +++ b/module/hooks/userConnected.mjs @@ -0,0 +1,6 @@ +import { userActivity } from "../utils/QueryManager.mjs"; + +Hooks.on(`userConnected`, (user, connected) => { + if (user.isSelf) { return }; + userActivity(user.id, connected); +}); diff --git a/module/main.mjs b/module/main.mjs index 8f3b5cc..05cf7d9 100644 --- a/module/main.mjs +++ b/module/main.mjs @@ -1 +1,3 @@ +import "./api.mjs"; import "./hooks/init.mjs"; +import "./hooks/userConnected.mjs"; diff --git a/module/sockets/_index.mjs b/module/sockets/_index.mjs new file mode 100644 index 0000000..f824c9e --- /dev/null +++ b/module/sockets/_index.mjs @@ -0,0 +1,33 @@ +import { Logger } from "../utils/Logger.mjs"; +import { queryCancel } from "./query/cancel.mjs"; +import { queryNotify } from "./query/notify.mjs"; +import { queryPrompt } from "./query/prompt.mjs"; +import { querySubmit } from "./query/submit.mjs"; + +const events = { + // Data Request sockets + "query.cancel": queryCancel, + "query.notify": queryNotify, + "query.prompt": queryPrompt, + "query.submit": querySubmit, +}; + +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(game.i18n.format(`taf.notifs.error.invalid-socket`)); + return; + }; + + if (events[event] == null) { + ui.notifications.error(game.i18n.format(`taf.notifs.error.unknown-socket-event`, { event })); + return; + }; + + const user = game.users.get(userID); + events[event](payload, user); + }); +}; diff --git a/module/sockets/query/cancel.mjs b/module/sockets/query/cancel.mjs new file mode 100644 index 0000000..f8eeddc --- /dev/null +++ b/module/sockets/query/cancel.mjs @@ -0,0 +1,19 @@ +import { DialogManager } from "../../utils/DialogManager.mjs"; +import { localizer } from "../../utils/localizer.mjs"; + +export async function queryCancel(payload) { + const { id } = payload; + + if (!id) { + ui.notifications.error(localizer( + `taf.notifs.error.malformed-socket-payload`, + { + event: `query.cancel`, + details: `taf.notifs.error.missing-id`, + }, + )); + return; + }; + + await DialogManager.close(id); +}; diff --git a/module/sockets/query/notify.mjs b/module/sockets/query/notify.mjs new file mode 100644 index 0000000..624e7b2 --- /dev/null +++ b/module/sockets/query/notify.mjs @@ -0,0 +1,25 @@ +import { localizer } from "../../utils/localizer.mjs"; +import { respondedToQueries } from "../../utils/QueryManager.mjs"; + +export function queryNotify(payload) { + const { id, userID, content, includeGM } = payload; + + if (userID !== game.user.id) { return }; + + // Ensure that each user can only get one notification about a query + if (!respondedToQueries.has(id)) { return }; + + let whisper = [game.user.id]; + if (includeGM) { + whisper = game.users.filter(u => u.isGM).map(u => u.id); + }; + + ChatMessage.implementation.create({ + flavor: localizer(`taf.misc.data-query-notif-header`), + content, + whisper, + style: CONST.CHAT_MESSAGE_STYLES.OOC, + }); + + respondedToQueries.delete(id); +}; diff --git a/module/sockets/query/prompt.mjs b/module/sockets/query/prompt.mjs new file mode 100644 index 0000000..8b1700f --- /dev/null +++ b/module/sockets/query/prompt.mjs @@ -0,0 +1,54 @@ +import { DialogManager } from "../../utils/DialogManager.mjs"; +import { localizer } from "../../utils/localizer.mjs"; +import { respondedToQueries } from "../../utils/QueryManager.mjs"; + +export async function queryPrompt(payload) { + const { + id, + users, + config, + request, + } = payload; + + if (!id) { + ui.notifications.error(localizer( + `taf.notifs.error.malformed-socket-payload`, + { + event: `query.cancel`, + details: `taf.notifs.error.missing-id`, + }, + )); + return; + }; + + // null/undefined is a special case for "all users but me" by default + if (users != null && !Array.isArray(users)) { + ui.notifications.error(localizer( + `taf.notifs.error.malformed-socket-payload`, + { + event: `query.cancel`, + details: `taf.sockets.user-list-required`, + }, + )); + 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; + } else if (result.state === `errored`) { + ui.notifications.error(result.error); + } else if (result.state === `prompted`) { + respondedToQueries.add(request.id); + game.socket.emit(`system.taf`, { + event: `query.submit`, + payload: { + id: request.id, + answers: result.answers, + }, + }); + }; +}; diff --git a/module/sockets/query/submit.mjs b/module/sockets/query/submit.mjs new file mode 100644 index 0000000..023ed38 --- /dev/null +++ b/module/sockets/query/submit.mjs @@ -0,0 +1,23 @@ +import { addResponse, has as hasQuery } from "../../utils/QueryManager.mjs"; +import { localizer } from "../../utils/localizer.mjs"; + +export function querySubmit(payload, user) { + const { + id, + answers, + } = payload; + + if (!id) { + ui.notifications.error(localizer( + `taf.notifs.error.malformed-socket-payload`, + { + event: `query.cancel`, + details: `taf.notifs.error.missing-id`, + }, + )); + return; + }; + + if (!hasQuery(id)) { return }; + addResponse(id, user.id, answers); +}; diff --git a/module/utils/DialogManager.mjs b/module/utils/DialogManager.mjs new file mode 100644 index 0000000..ab330f3 --- /dev/null +++ b/module/utils/DialogManager.mjs @@ -0,0 +1,114 @@ +import { Ask } from "../apps/Ask.mjs"; + +/** @type {Map} */ +const promises = new Map(); + +/** @type {Map} */ +const dialogs = new Map(); + +export function close(id) { + dialogs.get(id)?.close(); + dialogs.delete(id); + 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} + */ +export async function 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 (dialogs.has(id)) { + const app = dialogs.get(id); + app.bringToFront(); + if (onlyOneWaiting) { + return { state: `fronted` }; + } else { + return 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.type = `checkbox`; + delete i.valueAttribute; + delete i.inputType; + break; + default: + i.valueAttribute = `value`; + }; + }; + }; + + const promise = new Promise((resolve) => { + const app = new Ask({ + ...data, + alwaysUseAnswerObject, + onClose: () => { + dialogs.delete(id); + promises.delete(id); + resolve({ state: `prompted` }); + }, + onConfirm: (answers) => resolve({ state: `prompted`, answers }), + }); + app.render({ force: true }); + dialogs.set(id, app); + }); + + promises.set(id, promise); + return promise; +}; + +export function size() { + return dialogs.size; +}; + +export const DialogManager = { + close, + ask, + size, +}; diff --git a/module/utils/QueryManager.mjs b/module/utils/QueryManager.mjs new file mode 100644 index 0000000..abf1096 --- /dev/null +++ b/module/utils/QueryManager.mjs @@ -0,0 +1,289 @@ +import { filePath } from "../consts.mjs"; +import { Logger } from "./Logger.mjs"; +import { QueryStatus } from "../apps/QueryStatus.mjs"; + +/** + * An object containing information about the current status for all + * users involved with the data request. + * @typedef {Record< + * string, + * "finished" | "waiting" | "disconnected" | "unprompted" + * >} UserStatus + */ + +/** + * @typedef QueryData + * @property {string[]} users + * @property {Function} resolve + * @property {Record} responses + * @property {(() => Promise)|null} onSubmit + * @property {QueryStatus|null} app + * @property {UserStatus} status + * @property {object} request The data used to form the initial request + * @property {object} config The data used to create the initial config + */ + +/** + * This internal API is used in order to prevent the query.notify event + * from being fired off in situations where the user hasn't responded, + * wasn't part of the query, or has already been notified. + * @type {Set} + */ +export const respondedToQueries = new Set(); + +/** @type {Map} */ +const queries = new Map(); + +/** @type {Map} */ +const promises = new Map(); + +async function sendBasicNotification(requestID, userID, answers) { + const content = await foundry.applications.handlebars.renderTemplate( + filePath(`templates/query-response.hbs`), + { answers }, + ); + + await notify(requestID, userID, content, { includeGM: false }); +}; + +export function has(requestID) { + return queries.has(requestID); +}; + +/** @returns {Omit} */ +export function get(requestID) { + if (!queries.has(requestID)) { return null }; + const query = queries.get(requestID); + const cloned = foundry.utils.deepClone(query); + + delete cloned.onSubmit; + delete cloned.resolve; + delete cloned.app; + + return foundry.utils.deepFreeze(cloned); +}; + +export async function query( + request, + { + onSubmit = sendBasicNotification, + users = null, + showStatusApp = true, + ...config + } = {}, +) { + if (!request.id) { + ui.notifications.error(game.i18n.localize(`taf.notifs.error.missing-id`)); + return; + }; + + game.socket.emit(`system.taf`, { + event: `query.prompt`, + payload: { + id: request.id, + users, + request, + config, + }, + }); + + if (promises.has(request.id)) { + return null; + }; + + users ??= game.users + .filter(u => u.id !== game.user.id) + .map(u => u.id); + + const promise = new Promise((resolve) => { + + /** @type {UserStatus} */ + const status = {}; + for (const user of users) { + status[user] = game.users.get(user).active ? `waiting` : `disconnected`; + }; + + queries.set( + request.id, + { + users, + request, + config, + responses: {}, + resolve, + onSubmit, + app: null, + status, + }, + ); + }); + + if (showStatusApp) { + const app = new QueryStatus({ requestID: request.id }); + app.render({ force: true }); + queries.get(request.id).app = app; + }; + + return promise; +}; + +export async function requery(requestID, users) { + const query = queries.get(requestID); + if (!query) { return }; + + game.socket.emit(`system.taf`, { + event: `query.prompt`, + payload: { + id: requestID, + users, + request: query.request, + config: query.config, + }, + }); + + for (const user of users) { + query.status[user] = `waiting`; + }; + query.app?.render({ parts: [ `users` ] }); +}; + +export async function addResponse(requestID, userID, answers) { + if (!queries.has(requestID)) { return }; + const query = queries.get(requestID); + + // User closed the popup manually + if (answers == null) { + query.status[userID] = `unprompted`; + } + + // User submitted the answers as expected + else { + query.responses[userID] = answers; + query.status[userID] = `finished`; + await query.onSubmit?.(requestID, userID, answers); + }; + + await maybeResolve(requestID); +}; + +async function maybeResolve(requestID) { + const query = queries.get(requestID); + + // Determine how many users are considered "finished" + let finishedUserCount = 0; + for (const user of query.users) { + const hasApp = query.app != null; + + switch (query.status[user]) { + case `finished`: { + finishedUserCount++; + break; + }; + case `cancelled`: + case `disconnected`: + case `unprompted`: { + if (!hasApp) { + finishedUserCount++; + }; + break; + }; + }; + }; + + // Ensure that we have a finished response from everyone prompted + if (query.users.length === finishedUserCount) { + query.app?.close(); + query.resolve(query.responses); + queries.delete(requestID); + promises.delete(requestID); + } else { + query.app?.render({ parts: [ `users` ] }); + }; +}; + +export async function notify(requestID, userID, content, { includeGM = false } = {}) { + // Prevent sending notifications for not-your queries + if (!queries.has(requestID)) { return }; + + game.socket.emit(`system.taf`, { + event: `query.notify`, + payload: { + id: requestID, + userID, + content, + includeGM, + }, + }); +}; + +export async function finish(requestID) { + // prevent finishing other people's queries + if (!queries.has(requestID)) { return }; + + const query = queries.get(requestID); + query.app?.close(); + query.resolve(query.responses); + queries.delete(requestID); + promises.delete(requestID); + + game.socket.emit(`system.taf`, { + event: `query.cancel`, + payload: { id: requestID }, + }); +}; + +export async function cancel(requestID) { + // prevent cancelling other people's queries + if (!queries.has(requestID)) { return }; + + const query = queries.get(requestID); + query.app?.close(); + query.resolve(null); + queries.delete(requestID); + promises.delete(requestID); + + game.socket.emit(`system.taf`, { + event: `query.cancel`, + payload: { id: requestID }, + }); +}; + +export async function setApplication(requestID, app) { + if (!queries.has(requestID)) { return }; + if (!(app instanceof QueryStatus)) { return }; + const query = queries.get(requestID); + if (query.app) { + Logger.error(`Cannot set an application for a query that has one already`); + return; + }; + query.app = app; +}; + +export async function userActivity(userID, connected) { + for (const [id, query] of queries.entries()) { + if (query.users.includes(userID)) { + + // Update the user's status to allow for the app to re-prompt them + if (query.status[userID] !== `finished`) { + if (connected) { + query.status[userID] = `unprompted`; + } else { + query.status[userID] = `disconnected`; + }; + maybeResolve(id); + }; + + query.app?.render({ parts: [ `users` ] }); + }; + }; +}; + +export const QueryManager = { + has, get, + query, requery, + addResponse, + notify, + finish, cancel, + setApplication, + userActivity, +}; 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/module/utils/localizer.mjs b/module/utils/localizer.mjs new file mode 100644 index 0000000..7988039 --- /dev/null +++ b/module/utils/localizer.mjs @@ -0,0 +1,32 @@ +const config = Object.preventExtensions({ + subKeyPattern: /@(?[a-zA-Z.]+)/gm, + maxDepth: 10, +}); + +export function localizer(key, args = {}, depth = 0) { + /** @type {string} */ + let localized = game.i18n.format(key, args); + const subkeys = localized.matchAll(config.subKeyPattern); + + // Short-cut to help prevent infinite recursion + if (depth > config.maxDepth) { + return localized; + }; + + /* + Helps prevent recursion on the same key so that we aren't doing excess work. + */ + const localizedSubkeys = new Map(); + for (const match of subkeys) { + const subkey = match.groups.key; + if (localizedSubkeys.has(subkey)) { continue }; + localizedSubkeys.set(subkey, localizer(subkey, args, depth + 1)); + }; + + return localized.replace( + config.subKeyPattern, + (_fullMatch, subkey) => { + return localizedSubkeys.get(subkey); + }, + ); +}; diff --git a/package-lock.json b/package-lock.json index 961d542..27b1468 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,26 +5,943 @@ "packages": { "": { "devDependencies": { + "@aws-sdk/client-s3": "^3.934.0", "@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", + "axios": "^1.13.2", + "dotenv": "^17.2.2", "eslint": "^9.8.0", - "globals": "^15.9.0", - "sass": "^1.77.8" + "globals": "^15.9.0" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.934.0.tgz", + "integrity": "sha512-dtg77FGTgt8WlqgrRriCOie/SUl0x0cx2itPgK6fkf3pRK0t1betQ0EUZM6VYQcj+hqVMzh/XRcr1TDm5n5eVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.934.0", + "@aws-sdk/credential-provider-node": "3.934.0", + "@aws-sdk/middleware-bucket-endpoint": "3.930.0", + "@aws-sdk/middleware-expect-continue": "3.930.0", + "@aws-sdk/middleware-flexible-checksums": "3.934.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-location-constraint": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.933.0", + "@aws-sdk/middleware-sdk-s3": "3.934.0", + "@aws-sdk/middleware-ssec": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.934.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/signature-v4-multi-region": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.934.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/eventstream-serde-browser": "^4.2.5", + "@smithy/eventstream-serde-config-resolver": "^4.3.5", + "@smithy/eventstream-serde-node": "^4.2.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-blob-browser": "^4.2.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/hash-stream-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/md5-js": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.934.0.tgz", + "integrity": "sha512-gsgJevqhY0j3x014ejhXtHLCA6o83FYm3rJoZG7tqoy3DnWerLv/FHaAnHI/+Q+csadqjoFkWGQTOedPoOunzA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.934.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.933.0", + "@aws-sdk/middleware-user-agent": "3.934.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.934.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.934.0.tgz", + "integrity": "sha512-b6k916ZxSrBwQPzeirncTIQXGnhps0HFOUakFt0ZEzjksePYUiEoU/SQ7VeY1j9JeAdJ24ejqddCiyLt99/3lg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.934.0.tgz", + "integrity": "sha512-bnpIGYm7Jy46dxZa1cxMQ1sF0n2iBIT+TpOPHK51sz1N2dYOicUVWUHMDgU2xIFOVcKaqV+GV4VyicMmvDBcBQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.934.0.tgz", + "integrity": "sha512-WJcfFik7MPIgjE8lmuDcCqddHKRMpifzoBzTZWqUJJWYXIy0rDfNzt6pn3/TMLwVgnCGjnXlw6dChTxLzO60RQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.934.0.tgz", + "integrity": "sha512-3vVKGe1F2S09G9kC0ZcpWh09opyrGOgQETllqWbuxlTVd7zBgrZWloItLIvneSDP+dWvdLFUbkD7WDWNCeGiig==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/credential-provider-env": "3.934.0", + "@aws-sdk/credential-provider-http": "3.934.0", + "@aws-sdk/credential-provider-process": "3.934.0", + "@aws-sdk/credential-provider-sso": "3.934.0", + "@aws-sdk/credential-provider-web-identity": "3.934.0", + "@aws-sdk/nested-clients": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.934.0.tgz", + "integrity": "sha512-nguy36xi8nbH346dJjCmwWtOgfS4VfL7yHP+EEGmma+yg+J7mxgs8kA1NGQdJ8B46GdjlJPpI1P9pm7Pmz7nOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.934.0", + "@aws-sdk/credential-provider-http": "3.934.0", + "@aws-sdk/credential-provider-ini": "3.934.0", + "@aws-sdk/credential-provider-process": "3.934.0", + "@aws-sdk/credential-provider-sso": "3.934.0", + "@aws-sdk/credential-provider-web-identity": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.934.0.tgz", + "integrity": "sha512-PhvpAgoJ88IOuqlUws9nvHuPex2jK+WS+0s00BQcRTwqPP0jtLT7eql6UfCRduwv2sIy3m1wnWDUubvbpejp/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.934.0.tgz", + "integrity": "sha512-7wO86w95V9MZSYo2dunBKruKHdAUmgg9ccOSJSYGnPip1PPBK/rgSgQ8mDlYtFAW3/82bdeM/668QcgLT4+ofA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.934.0", + "@aws-sdk/core": "3.934.0", + "@aws-sdk/token-providers": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.934.0.tgz", + "integrity": "sha512-hb+lvFxiAPcAvUorB0hrUd1kDjDRXhZgCi5426I8KUpGzZ+ALh8/ep0KXAiYe2yg9ZkyMUbMaMvYYhMFcbXRFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/nested-clients": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.930.0.tgz", + "integrity": "sha512-cnCLWeKPYgvV4yRYPFH6pWMdUByvu2cy2BAlfsPpvnm4RaVioztyvxmQj5PmVN5fvWs5w/2d6U7le8X9iye2sA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.930.0.tgz", + "integrity": "sha512-5HEQ+JU4DrLNWeY27wKg/jeVa8Suy62ivJHOSUf6e6hZdVIMx0h/kXS1fHEQNNiLu2IzSEP/bFXsKBaW7x7s0g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.934.0.tgz", + "integrity": "sha512-kAV0fhwUhh/CV8hR5iip+du5QSXvIsONERVY/iJPbiBItqsmFaWcwiZE9E+ORJPNyoT/3X17632W33pCweKGDQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", + "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.930.0.tgz", + "integrity": "sha512-QIGNsNUdRICog+LYqmtJ03PLze6h2KCORXUs5td/hAEjVP5DMmubhtrGg1KhWyctACluUH/E/yrD14p4pRXxwA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", + "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.933.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.933.0.tgz", + "integrity": "sha512-qgrMlkVKzTCAdNw2A05DC2sPBo0KRQ7wk+lbYSRJnWVzcrceJhnmhoZVV5PFv7JtchK7sHVcfm9lcpiyd+XaCA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@aws/lambda-invoke-store": "^0.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.934.0.tgz", + "integrity": "sha512-eU2R7pVOhCxnkDzq9mW+xh4WvCA3mdXVUHezIcJNFyKCKKv/c9I4WFcnMnUy+wnCWO2mzN/gwSgQxADkvxfLNQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.18.2", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.930.0.tgz", + "integrity": "sha512-N2/SvodmaDS6h7CWfuapt3oJyn1T2CBz0CsDIiTDv9cSagXAVFjPdm2g4PFJqrNBeqdDIoYBnnta336HmamWHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.934.0.tgz", + "integrity": "sha512-68giGM2Zm9K6Qas14ws3Qo5wafpn0I8/L64fS9E6Rc6Tu0k+So73hupysw+9ZOzHwQS5FEBUqLOMtbUibAcjNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.934.0.tgz", + "integrity": "sha512-kRO61EMrDR4UuPlKAkziG6urcYXlhrFW/Ce5PjWFdjkm0ZOge75OFV1vhf/vE4Pmoop9jaAONX4E5BaIYrIQfg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.934.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.933.0", + "@aws-sdk/middleware-user-agent": "3.934.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.934.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", + "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.934.0.tgz", + "integrity": "sha512-cLphxVoHapSdouAdLSDEwR2Bktjg5dc11EpSpaLo8jcFpAXhFaDllKBfDfws0EqGY6N2CMqEjqPqxDFzmmQOQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.934.0.tgz", + "integrity": "sha512-M0WEmgXDdUxapSfjplqJoVCBMcn0vQ5Jou0X/XiQwyVDbfvIyNSHUHyMXEIBAew9kVx9sfMMEYz3LXewvQxdCA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.934.0", + "@aws-sdk/nested-clients": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", + "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", + "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", + "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", + "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", + "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.934.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.934.0.tgz", + "integrity": "sha512-vPRR4PaqNmuOQJSzq4EAVwFHUaSpPtgDgCEc7AYbArIy+59fckb6JNddlrjx4w4iWbqO0d+7OC5PtRcIk0AcZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.934.0", + "@aws-sdk/types": "3.930.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", + "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.0.tgz", + "integrity": "sha512-D1jAmAZQYMoPiacfgNf7AWhg3DFN3Wq/vQv3WINt9znwjzHp2x+WzdJFxxj7xZL7V1U79As6G8f7PorMYWBKsQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.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==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } @@ -34,6 +951,7 @@ "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, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -42,21 +960,23 @@ } }, "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==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, + "license": "MIT", "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==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -64,11 +984,62 @@ "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==", + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -87,11 +1058,23 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "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, + "license": "MIT", "engines": { "node": ">=18" }, @@ -99,37 +1082,70 @@ "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==", + "node_modules/@eslint/eslintrc/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", "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==", + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@foundryvtt/foundryvtt-cli/-/foundryvtt-cli-1.1.0.tgz", + "integrity": "sha512-ergKZDUSgQ79168r38ORyN4v/UTliA40rxElaUh5iS27Qw9H8Ep/ll8j3/HfiikO3XUDwYxZLfDJfbcyj2i9TQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^5.2.0", - "classic-level": "^1.2.0", + "chalk": "^5.4.1", + "classic-level": "^1.4.1", "esm": "^3.2.25", "js-yaml": "^4.1.0", - "mkdirp": "^3.0.0", - "nedb-promises": "^6.2.1", - "yargs": "^17.7.1" + "mkdirp": "^3.0.1", + "nedb-promises": "^6.2.3", + "yargs": "^17.7.2" }, "bin": { "fvtt": "fvtt.mjs" @@ -138,16 +1154,28 @@ "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==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -155,6 +1183,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -164,10 +1193,11 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", - "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -176,27 +1206,12 @@ "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, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -210,6 +1225,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -219,6 +1235,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -227,2133 +1244,6 @@ "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", @@ -2361,67 +1251,810 @@ "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==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@seald-io/nedb/-/nedb-4.1.2.tgz", + "integrity": "sha512-bDr6TqjBVS2rDyYM9CPxAnotj5FuNL9NF8o7h7YyFXM7yruqT4ddr+PkSb2mJvvw991bqdftazkEo38gykvaww==", "dev": true, + "license": "MIT", "dependencies": { "@seald-io/binary-search-tree": "^1.0.3", - "localforage": "^1.9.0", - "util": "^0.12.4" + "localforage": "^1.10.0", + "util": "^0.12.5" } }, - "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/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", + "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.6", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", + "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", + "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", + "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", + "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", + "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", + "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", + "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", + "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", + "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", + "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", + "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.9.7", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", + "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-endpoint": "^4.3.11", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", + "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", + "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, "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==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz", + "integrity": "sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==", "dev": true, + "license": "MIT", "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", + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "estraverse": "^5.3.0", "picomatch": "^4.0.2" }, @@ -2432,113 +2065,51 @@ "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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, - "dependencies": { - "@types/sizzle": "*" - } + "license": "MIT" }, "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, + "license": "MIT" + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.4.tgz", + "integrity": "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==", + "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "@typescript-eslint/tsconfig-utils": "^8.46.4", + "@typescript-eslint/types": "^8.46.4", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "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==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", + "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1" + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2548,11 +2119,29 @@ "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==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz", + "integrity": "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==", "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -2562,67 +2151,22 @@ } }, "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==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", + "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/project-service": "8.46.4", + "@typescript-eslint/tsconfig-utils": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "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" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2632,17 +2176,42 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", + "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4" + }, + "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", + "typescript": ">=4.8.4 <6.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==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", + "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.1", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.46.4", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2652,23 +2221,12 @@ "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, + "license": "MIT", "dependencies": { "buffer": "^6.0.3", "catering": "^2.1.0", @@ -2683,10 +2241,11 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2699,6 +2258,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2708,6 +2268,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2724,6 +2285,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2733,6 +2295,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2743,51 +2306,26 @@ "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", "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" - } + "license": "Python-2.0" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2798,17 +2336,24 @@ "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/axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } }, "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 + "dev": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -2828,28 +2373,24 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, - "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==", + "node_modules/bowser": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -2857,6 +2398,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -2883,22 +2425,54 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "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" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -2912,6 +2486,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2921,68 +2496,31 @@ "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", "dev": true, + "license": "MIT", "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==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "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", "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "abstract-level": "^1.0.2", "catering": "^2.1.0", @@ -2999,6 +2537,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -3013,6 +2552,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3024,19 +2564,35 @@ "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 + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, "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 + "dev": true, + "license": "MIT" }, "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==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3047,12 +2603,13 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3067,13 +2624,15 @@ "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3086,64 +2645,57 @@ "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==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "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/dotenv": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } }, "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" - } + "license": "MIT" }, "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==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -3153,21 +2705,46 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "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/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3177,6 +2754,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3185,27 +2763,32 @@ } }, "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==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, + "license": "MIT", "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", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", - "@nodelib/fs.walk": "^1.2.8", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "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", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3215,15 +2798,11 @@ "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" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -3233,13 +2812,22 @@ }, "funding": { "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "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==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3252,10 +2840,11 @@ } }, "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==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3263,24 +2852,67 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/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, + "license": "MIT", + "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/eslint/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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", "dev": true, + "license": "MIT", "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==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.12.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3294,6 +2926,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3306,6 +2939,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3318,6 +2952,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3327,33 +2962,30 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "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 + "dev": true, + "license": "MIT" }, "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==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "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" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -3364,6 +2996,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3375,19 +3008,41 @@ "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -3397,6 +3052,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" }, @@ -3409,6 +3065,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3421,6 +3078,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3437,6 +3095,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" @@ -3446,63 +3105,41 @@ } }, "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 + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": 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==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "license": "MIT", "dependencies": { - "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", - "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" + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -3511,11 +3148,98 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "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, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3524,10 +3248,11 @@ } }, "node_modules/globals": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", - "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3535,70 +3260,25 @@ "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "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, + "license": "MIT", "engines": { "node": ">=8" } @@ -3608,6 +3288,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -3615,23 +3296,12 @@ "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3644,6 +3314,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -3659,6 +3330,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -3684,13 +3356,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -3699,19 +3373,15 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "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 + "dev": true, + "license": "MIT" }, "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==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3728,6 +3398,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -3736,16 +3407,18 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3754,18 +3427,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", @@ -3785,6 +3446,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "engines": { "node": ">=4" } @@ -3794,6 +3456,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3806,6 +3469,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3815,17 +3479,23 @@ "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, + "license": "MIT", "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==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3839,6 +3509,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -3851,26 +3522,38 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "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==", + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "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==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -3883,19 +3566,15 @@ "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 + "dev": true, + "license": "ISC" }, "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==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3907,25 +3586,29 @@ "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -3935,6 +3618,7 @@ "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -3944,6 +3628,7 @@ "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^6.0.3", "module-error": "^1.0.1" @@ -3957,6 +3642,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -3970,6 +3656,7 @@ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dev": true, + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } @@ -3979,6 +3666,7 @@ "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lie": "3.1.1" } @@ -3988,6 +3676,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -4002,22 +3691,35 @@ "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 + "dev": true, + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "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, + "license": "MIT", "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==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -4031,6 +3733,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -4038,31 +3741,43 @@ "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==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 0.6" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mkdirp": { @@ -4070,6 +3785,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -4085,89 +3801,60 @@ "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", "dev": true, + "license": "MIT", "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 + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "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==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "dev": true, + "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "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", - "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, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -4185,6 +3872,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -4200,6 +3888,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -4215,6 +3904,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -4222,32 +3912,12 @@ "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, + "license": "MIT", "engines": { "node": ">=8" } @@ -4257,24 +3927,17 @@ "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, + "license": "MIT", "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -4282,172 +3945,12 @@ "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4457,34 +3960,28 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, "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, + "license": "MIT", "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", @@ -4503,37 +4000,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "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" - } + ], + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4543,25 +4018,17 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -4586,32 +4053,35 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "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==", + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "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" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" }, "engines": { - "node": ">=14.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4624,6 +4094,7 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -4641,6 +4112,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4653,90 +4125,17 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "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/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", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4751,6 +4150,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4763,6 +4163,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -4770,11 +4171,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4782,23 +4197,12 @@ "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, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -4807,22 +4211,31 @@ } }, "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "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, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -4831,10 +4244,11 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, + "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", @@ -4844,58 +4258,22 @@ "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, + "license": "BSD-2-Clause", "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, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -4909,6 +4287,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -4920,15 +4299,18 @@ } }, "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==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", + "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" }, "engines": { @@ -4943,21 +4325,17 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "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, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4970,41 +4348,12 @@ "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, + "license": "ISC", "engines": { "node": ">=10" } @@ -5014,6 +4363,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -5032,21 +4382,17 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "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, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index b58c939..2532d39 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,18 @@ { "devDependencies": { + "@aws-sdk/client-s3": "^3.934.0", "@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", + "axios": "^1.13.2", + "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/", + "data:build": "node scripts/buildCompendia.mjs", + "data:extract": "node scripts/extractCompendia.mjs", + "link": "node scripts/linkFoundry.mjs", "lint": "eslint --fix", "lint:nofix": "eslint" } diff --git a/scripts/createForgejoRelease.mjs b/scripts/createForgejoRelease.mjs new file mode 100644 index 0000000..ce31668 --- /dev/null +++ b/scripts/createForgejoRelease.mjs @@ -0,0 +1,52 @@ +import axios from "axios"; + +const { + TAG, + FORGEJO_API_URL: API, + FORGEJO_REPOSITORY: REPO, + FORGEJO_TOKEN: TOKEN, + CDN_URL, +} = process.env; + +async function addReleaseAsset(releaseID, name) { + return axios.post( + `${API}/repos/${REPO}/releases/${releaseID}/assets`, + { external_url: `${CDN_URL}/${REPO}/${TAG}/${name}`, }, + { + headers: { + Authorization: `token ${TOKEN}`, + "Content-Type": `multipart/form-data`, + }, + params: { name }, + } + ); +}; + +async function main() { + + // Initial Release Data + const release = await axios.post( + `${API}/repos/${REPO}/releases`, + { + name: TAG, + tag_name: TAG, + draft: true, + hide_archive_links: true, + }, + { + headers: { Authorization: `token ${TOKEN}` }, + } + ); + + try { + await addReleaseAsset(release.data.id, `release.zip`); + await addReleaseAsset(release.data.id, `system.json`); + } catch (e) { + console.error(`Failed to add assets to the release`); + process.exit(1); + }; + + console.log(`Release created`); +}; + +main(); diff --git a/scripts/linkFoundry.mjs b/scripts/linkFoundry.mjs new file mode 100644 index 0000000..1cbb71a --- /dev/null +++ b/scripts/linkFoundry.mjs @@ -0,0 +1,47 @@ +import { existsSync } from "fs"; +import { symlink, unlink } from "fs/promises"; +import { join } from "path"; +import { config } from "dotenv"; + +config({ quiet: true }); + +const root = process.env.FOUNDRY_ROOT; + +// Early exit +if (!root) { + console.error(`Must provide a FOUNDRY_ROOT environment variable`); + process.exit(1); +}; + +// 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); +}; diff --git a/scripts/prepareManifest.mjs b/scripts/prepareManifest.mjs new file mode 100644 index 0000000..34f4236 --- /dev/null +++ b/scripts/prepareManifest.mjs @@ -0,0 +1,45 @@ +/* +The intent of this script is to do all of the modifications of the +manifest file that we need to do in order to release the system. +This can include removing dev-only fields/attributes that end +users will never, and should never, care about nor need. +*/ +import { readFile, writeFile } from "fs/promises"; + +const MANIFEST_PATH = `system.json`; + +const { + DOWNLOAD_URL, + LATEST_URL, +} = process.env; + +let manifest; +try { + manifest = JSON.parse(await readFile(MANIFEST_PATH, `utf-8`)); + console.log(`Manifest loaded from disk`); +} catch { + console.error(`Failed to parse manifest file.`); + process.exit(1); +}; + +console.log(`Updating download/manifest URLs`) +manifest.download = DOWNLOAD_URL; +manifest.manifest = LATEST_URL; + +// Filter out dev-only resources +if (manifest.esmodules) { + console.log(`Removing dev-only esmodules`); + manifest.esmodules = manifest.esmodules.filter( + filepath => !filepath.startsWith(`dev/`) + ); +}; + +// Remove dev flags +console.log(`Cleaning up flags`); +delete manifest.flags?.hotReload; +if (Object.keys(manifest.flags).length === 0) { + delete manifest.flags; +}; + +await writeFile(MANIFEST_PATH, JSON.stringify(manifest, undefined, `\t`)); +console.log(`Manifest written back to disk`); diff --git a/scripts/tagExists.mjs b/scripts/tagExists.mjs new file mode 100644 index 0000000..2ddcdbd --- /dev/null +++ b/scripts/tagExists.mjs @@ -0,0 +1,38 @@ +import axios from "axios"; + +const { + TAG_NAME, + FORGEJO_API_URL: API_URL, + FORGEJO_REPOSITORY: REPO, + FORGEJO_TOKEN: TOKEN, +} = process.env; + + +async function main() { + + if (!TAG_NAME) { + console.log(`Tag name must not be blank`); + process.exit(1); + }; + + const requestURL = `${API_URL}/repos/${REPO}/tags/${TAG_NAME}`; + + const response = await axios.get( + requestURL, + { + headers: { Authorization: `token ${TOKEN}` }, + validateStatus: () => true, + }, + ); + + // We actually *want* an error when the tag exists, instead of when + // it doesn't + if (response.status === 200) { + console.log(`Tag with name "${TAG_NAME}" already exists`); + process.exit(1); + }; + + console.log(`Tag with name "${TAG_NAME}" not found, proceeding`); +}; + +main(); diff --git a/scripts/uploadToS3.mjs b/scripts/uploadToS3.mjs new file mode 100644 index 0000000..50c1444 --- /dev/null +++ b/scripts/uploadToS3.mjs @@ -0,0 +1,65 @@ +import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3'; +import { createReadStream } from "fs"; + +const requiredEnvVariables = [ + `TAG`, `FILE`, + `FORGEJO_REPOSITORY`, + `S3_BUCKET`, `S3_REGION`, `S3_KEY`, `S3_SECRET`, `S3_ENDPOINT`, +]; + +async function main() { + + // Assert all of the required env variables are present + const missing = []; + for (const envVar of requiredEnvVariables) { + if (!(envVar in process.env)) { + missing.push(envVar); + }; + }; + if (missing.length > 0) { + console.error(`Missing the following required environment variables: ${missing.join(`, `)}`); + process.exit(1); + }; + + const { + TAG, + S3_ENDPOINT, + S3_REGION, + S3_KEY, + S3_SECRET, + S3_BUCKET, + FILE, + FORGEJO_REPOSITORY: REPO, + } = process.env; + + const s3Client = new S3Client({ + endpoint: S3_ENDPOINT, + forcePathStyle: false, + region: S3_REGION, + credentials: { + accessKeyId: S3_KEY, + secretAccessKey: S3_SECRET + }, + }); + + const name = FILE.split(`/`).at(-1); + + const params = { + Bucket: S3_BUCKET, + Key: `${REPO}/${TAG}/${name}`, + Body: createReadStream(FILE), + ACL: "public-read", + METADATA: { + "x-repo-version": TAG, + }, + }; + + try { + const response = await s3Client.send(new PutObjectCommand(params)); + console.log("Upload successful"); + } catch (err) { + console.error("Upload to s3 failed"); + }; +}; + +main(); \ No newline at end of file diff --git a/styles/Apps/Ask.css b/styles/Apps/Ask.css new file mode 100644 index 0000000..4aca7cc --- /dev/null +++ b/styles/Apps/Ask.css @@ -0,0 +1,55 @@ +.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; + } + + label { + color: var(--color-form-label); + font-weight: bold; + } + + p { + margin: 0; + 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"] { + align-self: center; + justify-self: right; + margin: 0; + } +} 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 { 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; diff --git a/styles/Apps/QueryStatus.css b/styles/Apps/QueryStatus.css new file mode 100644 index 0000000..4f45ff4 --- /dev/null +++ b/styles/Apps/QueryStatus.css @@ -0,0 +1,33 @@ +.taf.QueryStatus { + .user-list { + display: flex; + flex-direction: column; + gap: 4px; + list-style-type: none; + margin: 0; + padding: 0; + + li { + display: flex; + flex-direction: column; + margin: 0; + border: 1px solid rebeccapurple; + border-radius: 4px; + padding: 4px 8px; + + > .user-summary { + display: flex; + flex-direction: row; + align-items: center; + /* Same height as the icons used for loading/disconnected */ + height: 35px; + } + } + } + + .control-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1rem; + } +} 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/elements/div.css b/styles/elements/div.css new file mode 100644 index 0000000..69ebd5e --- /dev/null +++ b/styles/elements/div.css @@ -0,0 +1,20 @@ +.taf > .window-content div { + &.chip { + display: inline flex; + color: var(--chip-color); + background: var(--chip-background); + border: 1px solid var(--chip-border-color); + border-radius: 4px; + + .key { + padding: 2px 4px; + } + + .value { + padding: 2px 4px; + border-radius: 0 4px 4px 0; + color: var(--chip-value-color); + background: var(--chip-value-background); + } + } +} 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/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/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/styles/elements/span.css b/styles/elements/span.css new file mode 100644 index 0000000..fcbfef3 --- /dev/null +++ b/styles/elements/span.css @@ -0,0 +1,45 @@ +@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 { + --size: 35px; + width: var(--size); + height: var(--size); + 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 var(--spinner-outer-colour, #fff); + animation: prixClipFix 4s linear infinite; + } + + &::after{ + inset: 8px; + transform: rotate3d(90, 90, 0, 180deg ); + border-color: var(--spinner-inner-colour, #ff3d00); + } + } +} 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/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 a07aa4f..a4c4a2c 100644 --- a/styles/main.css +++ b/styles/main.css @@ -1,16 +1,29 @@ @layer resets, themes, elements, components, partials, apps, exceptions; +/* Resets */ +@import url("./resets/hr.css") layer(resets); +@import url("./resets/inputs.css") layer(resets); +@import url("./resets/button.css") layer(resets); + /* Themes */ @import url("./themes/dark.css") layer(themes); @import url("./themes/light.css") layer(themes); /* Elements */ +@import url("./elements/utils.css") layer(elements); +@import url("./elements/div.css") layer(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); +@import url("./elements/span.css") layer(elements); +@import url("./elements/table.css") layer(elements); /* 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); +@import url("./Apps/QueryStatus.css") layer(apps); +@import url("./Apps/TAFDocumentSheetConfig.css") layer(apps); diff --git a/styles/resets/button.css b/styles/resets/button.css new file mode 100644 index 0000000..d04ae6e --- /dev/null +++ b/styles/resets/button.css @@ -0,0 +1,3 @@ +.taf > .window-content button { + height: initial; +} 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/styles/resets/inputs.css b/styles/resets/inputs.css index aa6e6b7..0a7928f 100644 --- a/styles/resets/inputs.css +++ b/styles/resets/inputs.css @@ -1,5 +1,8 @@ .taf > .window-content { - button, input { + input[type="checkbox"] { all: initial; + &::after, &::before { + all: initial; + } } } diff --git a/styles/themes/dark.css b/styles/themes/dark.css index 85103f7..53552e0 100644 --- a/styles/themes/dark.css +++ b/styles/themes/dark.css @@ -1,3 +1,13 @@ .theme-dark { --prosemirror-background: var(--color-cool-5); + + --spinner-outer-colour: white; + --spinner-inner-colour: #FF3D00; + + /* Chip Variables */ + --chip-color: #fff7ed; + --chip-background: #2b3642; + --chip-value-color: #fff7ed; + --chip-value-background: #10161d; + --chip-border-color: var(--chip-value-background); } diff --git a/styles/themes/light.css b/styles/themes/light.css index fee3812..47cf1e9 100644 --- a/styles/themes/light.css +++ b/styles/themes/light.css @@ -1,3 +1,13 @@ .theme-light { --prosemirror-background: white; + + --spinner-outer-colour: black; + --spinner-inner-colour: #FF3D00; + + /* Chip Variables */ + --chip-color: #18181b; + --chip-background: #fafafa; + --chip-value-color: #18181b; + --chip-value-background: #d4d4d8aa; + --chip-border-color: var(--chip-value-background); } diff --git a/system.json b/system.json index f2639c0..d5eee96 100644 --- a/system.json +++ b/system.json @@ -2,20 +2,17 @@ "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", - "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", + "version": "2.4.0", + "download": "", + "manifest": "", + "url": "https://git.varify.ca/Foundry/taf", "compatibility": { "minimum": 13, "verified": 13, "maximum": 13 }, "authors": [ - { - "name": "Oliver Akins", - "url": "https://oliver.akins.me" - } + { "name": "Oliver" } ], "esmodules": [ "./module/main.mjs" @@ -44,10 +41,11 @@ }, "Item": {} }, + "socket": true, "flags": { "hotReload": { "extensions": ["css", "hbs", "json", "js", "mjs", "svg"], - "paths": ["templates", "langs", ".styles", "module", "assets"] + "paths": ["templates", "langs", "styles", "module", "assets"] } } } 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..36c1ea9 --- /dev/null +++ b/templates/Ask/inputs.hbs @@ -0,0 +1,10 @@ +
+ {{#if description}} +

+ {{ description }} +

+ {{/if}} + {{#each inputs as | 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 new file mode 100644 index 0000000..ce8fd88 --- /dev/null +++ b/templates/Ask/inputs/checkbox.hbs @@ -0,0 +1,14 @@ +
+ + +
diff --git a/templates/Ask/inputs/details.hbs b/templates/Ask/inputs/details.hbs new file mode 100644 index 0000000..f84af5d --- /dev/null +++ b/templates/Ask/inputs/details.hbs @@ -0,0 +1,3 @@ +

+ {{{ details }}} +

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 @@ +
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 diff --git a/templates/Ask/inputs/input.hbs b/templates/Ask/inputs/input.hbs new file mode 100644 index 0000000..98922df --- /dev/null +++ b/templates/Ask/inputs/input.hbs @@ -0,0 +1,14 @@ +
+ + +
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 @@ +
+ + +
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}} {{#if attr.isRange}} @@ -21,6 +22,7 @@ name="{{attr.path}}.max" value="{{attr.max}}" aria-label="Maximum value" + data-tooltip="@{{ attr.id }}.max" > {{/if}} 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 }}} diff --git a/templates/QueryStatus/controls.hbs b/templates/QueryStatus/controls.hbs new file mode 100644 index 0000000..d7f623f --- /dev/null +++ b/templates/QueryStatus/controls.hbs @@ -0,0 +1,8 @@ +
+ + +
diff --git a/templates/QueryStatus/users.hbs b/templates/QueryStatus/users.hbs new file mode 100644 index 0000000..e0c7922 --- /dev/null +++ b/templates/QueryStatus/users.hbs @@ -0,0 +1,46 @@ +
    + {{#each users as | user |}} +
  • +
    +
    + {{ user.name }} +
    + {{#if (eq user.status "waiting")}} + + {{else if (eq user.status "disconnected")}} + + {{else if (eq user.status "unprompted")}} + + {{/if}} +
    + {{#if (eq user.status "finished")}} +
    + {{#each user.answers as | answer |}} +
    + + {{ @key }} + + + {{ answer }} + +
    + {{/each}} +
    + {{/if}} +
  • + {{/each}} +
diff --git a/templates/TAFDocumentSheetConfig/foundry.hbs b/templates/TAFDocumentSheetConfig/foundry.hbs new file mode 100644 index 0000000..5c0644d --- /dev/null +++ b/templates/TAFDocumentSheetConfig/foundry.hbs @@ -0,0 +1,3 @@ +
+ {{> "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 @@ +
+
+ + {{ localize "taf.Apps.TAFDocumentSheetConfig.Sizing" }} + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
diff --git a/templates/query-response.hbs b/templates/query-response.hbs new file mode 100644 index 0000000..9a62311 --- /dev/null +++ b/templates/query-response.hbs @@ -0,0 +1,16 @@ +{{#if answers}} + + + + + + {{#each answers as | answer |}} + + + + + {{/each}} +
{{ localize "taf.misc.Key" }}{{ localize "taf.misc.Value" }}
{{ @key }}{{ answer }}
+{{else}} + {{ localize "taf.misc.no-data-submitted" }} +{{/if}}