From f1151b1b0cf32b64df3d7bf54d8589bcf7cd0aca Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Sun, 4 Jun 2023 04:46:43 +0200 Subject: [PATCH 1/9] fix main. --- src/types/session.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/types/session.ts b/src/types/session.ts index af61fdc3..10ed78ea 100644 --- a/src/types/session.ts +++ b/src/types/session.ts @@ -25,3 +25,7 @@ export interface Session { freePrivate: number; fullReset: number; } + +export interface FindSessionRequest { + [key: string]: any; +} -- 2.47.2 From 0c146d85d4add7b055a25832ea185fde68336292 Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Mon, 5 Jun 2023 00:13:21 +0200 Subject: [PATCH 2/9] fix some ship things --- src/controllers/api/getShipController.ts | 15 +++------ src/models/shipModel.ts | 43 ++++++++++++++---------- src/services/shipService.ts | 6 ++-- src/types/shipTypes.ts | 14 ++++---- static/fixed_responses/postShip.json | 33 ------------------ static/fixed_responses/ship.json | 32 ++++++++++++++++++ 6 files changed, 71 insertions(+), 72 deletions(-) delete mode 100644 static/fixed_responses/postShip.json create mode 100644 static/fixed_responses/ship.json diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index 2da6f8b2..7439acf1 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -1,20 +1,13 @@ -import { Account } from "@/src/models/loginModel"; import { Ship } from "@/src/models/shipModel"; -import { createShip } from "@/src/services/shipService"; import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises -const getShipController: RequestHandler = async (_req, res) => { - const accountId = _req.query.accountId; +const getShipController: RequestHandler = async (req, res) => { + const accountId = req.query.accountId; const ship = await Ship.findOne({ ShipOwnerId: accountId }); if (!ship) { - const account = await Account.findOne({ _id: accountId }); - if (account) { - await createShip(account._id); - const new_ship = await Ship.findOne({ ShipOwnerId: accountId }); - res.json(new_ship); - return; - } + res.status(500).json({ error: "error finding a corresponding ship" }); + return; } res.json(ship); }; diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index d782d917..463a95c2 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,46 +1,53 @@ import { Schema, model } from "mongoose"; -import { IShipDatabase } from "../types/shipTypes"; +import { IShip } from "../types/shipTypes"; import { Oid } from "../types/commonTypes"; -const roomSchema = new Schema({ - Name: String, - MaxCapacity: Number -}); - -roomSchema.set("toJSON", { - transform(_document, returnedObject) { - delete returnedObject._id; - } -}); +const roomSchema = new Schema( + { + Name: String, + MaxCapacity: Number + }, + { _id: false } +); const shipSchema = new Schema({ Rooms: [roomSchema], - Features: [Schema.Types.Mixed], + Features: [String], ContentUrlSignature: String }); +shipSchema.set("toJSON", { + transform(_document, returnedObject) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; + delete returnedObject._id; + } +}); + const apartmentSchema = new Schema({ Rooms: [roomSchema], FavouriteLoadouts: [Schema.Types.Mixed] }); +apartmentSchema.set("toJSON", { + transform(_document, returnedObject) { + delete returnedObject._id; + } +}); + const shipDatabaseSchema = new Schema({ - ShipOwnerId: String, + ShipOwnerId: Schema.Types.ObjectId, Ship: shipSchema, Apartment: apartmentSchema }); shipDatabaseSchema.set("toJSON", { transform(_document, returnedObject) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.Ship.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; - delete returnedObject.Ship._id; - delete returnedObject.Apartment._id; delete returnedObject.__v; } }); -const Ship = model("Ship", shipDatabaseSchema); +const Ship = model("Ship", shipDatabaseSchema); export { Ship }; diff --git a/src/services/shipService.ts b/src/services/shipService.ts index 8d131f1a..bce95805 100644 --- a/src/services/shipService.ts +++ b/src/services/shipService.ts @@ -1,5 +1,5 @@ import { Ship } from "@/src/models/shipModel"; -import new_ship from "@/static/fixed_responses/postShip.json"; +import new_ship from "@/static/fixed_responses/ship.json"; import { Types } from "mongoose"; const createShip = async (accountOwnerId: Types.ObjectId) => { @@ -8,9 +8,9 @@ const createShip = async (accountOwnerId: Types.ObjectId) => { await ship.save(); } catch (error) { if (error instanceof Error) { - throw new Error(`error creating inventory" ${error.message}`); + throw new Error(`error creating ship" ${error.message}`); } - throw new Error("error creating inventory that is not of instance Error"); + throw new Error("error creating ship that is not of instance Error"); } }; diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index 7a180521..1c7a1d58 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -1,19 +1,19 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Types } from "mongoose"; -import { Oid } from "./inventoryTypes"; +import { Oid } from "@/src/types/commonTypes"; -export type IShipDatabase = IShipResponse; - -export interface IShipResponse { +export interface IShip { ShipOwnerId: Types.ObjectId; - Ship: IShipClass; + Ship: IShipClassResponse; Apartment: IApartmentClass; } -export interface IShipClass { - Rooms: IRoomsClass[]; +export interface IShipClassResponse extends IShipClassDatabase { ShipId: Oid; +} +export interface IShipClassDatabase { + Rooms: IRoomsClass[]; Features: string[]; ContentUrlSignature: string; } diff --git a/static/fixed_responses/postShip.json b/static/fixed_responses/postShip.json deleted file mode 100644 index aeb53b93..00000000 --- a/static/fixed_responses/postShip.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "ShipOwnerId": "removed", - "Ship": { - "Features": [ - "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", - "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem" - ], - "ShipId": { "$oid": "removed" }, - "Rooms": [ - { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, - { "Name": "BridgeRoom", "MaxCapacity": 1600 }, - { "Name": "LisetRoom", "MaxCapacity": 1000 }, - { "Name": "OperatorChamberRoom", "MaxCapacity": 1600 }, - { "Name": "OutsideRoom", "MaxCapacity": 1600 }, - { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } - ], - "ContentUrlSignature": "removed" - }, - "Apartment": { - "Rooms": [ - { "Name": "ElevatorLanding", "MaxCapacity": 1600 }, - { "Name": "ApartmentRoomA", "MaxCapacity": 1000 }, - { "Name": "ApartmentRoomB", "MaxCapacity": 1600 }, - { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, - { "Name": "DuviriHallway", "MaxCapacity": 1600 } - ], - "FavouriteLoadouts": [] - } -} diff --git a/static/fixed_responses/ship.json b/static/fixed_responses/ship.json new file mode 100644 index 00000000..8ed911c1 --- /dev/null +++ b/static/fixed_responses/ship.json @@ -0,0 +1,32 @@ +{ + "Ship": { + "Features": [ + "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem", + "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem" + ], + "ShipId": { "$oid": "removed" }, + "Rooms": [ + { "Name": "AlchemyRoom", "MaxCapacity": 1600 }, + { "Name": "BridgeRoom", "MaxCapacity": 1600 }, + { "Name": "LisetRoom", "MaxCapacity": 1000 }, + { "Name": "OperatorChamberRoom", "MaxCapacity": 1600 }, + { "Name": "OutsideRoom", "MaxCapacity": 1600 }, + { "Name": "PersonalQuartersRoom", "MaxCapacity": 1600 } + ], + "ContentUrlSignature": "removed" + }, + "Apartment": { + "Rooms": [ + { "Name": "ElevatorLanding", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomA", "MaxCapacity": 1000 }, + { "Name": "ApartmentRoomB", "MaxCapacity": 1600 }, + { "Name": "ApartmentRoomC", "MaxCapacity": 1600 }, + { "Name": "DuviriHallway", "MaxCapacity": 1600 } + ], + "FavouriteLoadouts": [] + } +} -- 2.47.2 From 9c436699f954a5dacc71abd1edd2167023609f07 Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Wed, 14 Jun 2023 01:41:24 +0200 Subject: [PATCH 3/9] Basic purchasing + custom purchasing API Endpoint for custom API: https://localhost:443/custom/addItem example request: { "type": "Weapon", "internalName": "/Lotus/Weapons/Grineer/Pistols/GrineerMicrowavegun/GrnMicrowavePistol", "accountId": "6488fd2e7bec200069ca4242" } --- package-lock.json | 8 +- package.json | 3 +- src/app.ts | 2 +- src/controllers/api/inventoryController.ts | 1 - src/controllers/api/purchaseController.ts | 11 +- src/controllers/api/saveLoadout.ts | 13 ++ src/controllers/custom/addItemController.ts | 26 +++ .../custom/createAccountController.ts | 3 +- src/helpers/customHelpers/addItemHelpers.ts | 55 +++++++ .../{ => customHelpers}/customHelpers.ts | 3 +- src/helpers/inventoryHelpers.ts | 2 +- src/helpers/purchaseHelpers.ts | 59 +++++++ src/helpers/stringHelpers.ts | 18 +++ src/models/inventoryModel.ts | 126 ++++++++++++--- src/models/t.ts | 17 -- src/routes/api.ts | 2 + src/routes/cache.ts | 4 - src/routes/custom.ts | 2 + src/services/inventoryService.ts | 85 +++++++++- src/services/purchaseService.ts | 110 +++++++++++++ src/types/inventoryTypes/SuitTypes.ts | 44 +++++ .../inventoryTypes/commonInventoryTypes.ts | 42 +++++ .../{ => inventoryTypes}/inventoryTypes.ts | 153 ++---------------- src/types/inventoryTypes/weaponTypes.ts | 39 +++++ src/types/purchaseTypes.ts | 43 +++++ 25 files changed, 675 insertions(+), 196 deletions(-) create mode 100644 src/controllers/api/saveLoadout.ts create mode 100644 src/controllers/custom/addItemController.ts create mode 100644 src/helpers/customHelpers/addItemHelpers.ts rename src/helpers/{ => customHelpers}/customHelpers.ts (94%) create mode 100644 src/helpers/purchaseHelpers.ts create mode 100644 src/helpers/stringHelpers.ts delete mode 100644 src/models/t.ts create mode 100644 src/services/purchaseService.ts create mode 100644 src/types/inventoryTypes/SuitTypes.ts create mode 100644 src/types/inventoryTypes/commonInventoryTypes.ts rename src/types/{ => inventoryTypes}/inventoryTypes.ts (89%) create mode 100644 src/types/inventoryTypes/weaponTypes.ts create mode 100644 src/types/purchaseTypes.ts diff --git a/package-lock.json b/package-lock.json index 44a892f2..e1c51c62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,8 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" + "mongoose": "^7.1.1", + "warframe-items": "1.1260.50" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -3140,6 +3141,11 @@ "node": ">= 0.8" } }, + "node_modules/warframe-items": { + "version": "1.1260.50", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.50.tgz", + "integrity": "sha512-03oNB6Yg61yUd7glewUUg0avnaGaAqc9oVPJk+1THFB0o/d4ppQSgL38yTUxMwmw0avCrqd+8z5TMrfXtvPDXQ==" + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index 8f7a8281..9be67021 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "dependencies": { "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1" + "mongoose": "^7.1.1", + "warframe-items": "1.1260.50" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", diff --git a/src/app.ts b/src/app.ts index d523d8fb..3ca8bfc8 100644 --- a/src/app.ts +++ b/src/app.ts @@ -23,7 +23,7 @@ app.use(bodyParser.raw()); app.use(express.json()); app.use(bodyParser.text()); app.use(morgan("dev")); -app.use(requestLogger); +//app.use(requestLogger); app.use("/api", apiRouter); //app.use("/test", testRouter); diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index badf79ad..c3ad296a 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -13,7 +13,6 @@ const inventoryController: RequestHandler = async (request: Request, response: R response.status(400).json({ error: "accountId was not provided" }); return; } - console.log(accountId); const inventory = await Inventory.findOne({ accountOwnerId: accountId }); diff --git a/src/controllers/api/purchaseController.ts b/src/controllers/api/purchaseController.ts index 7f0902e2..c73581ca 100644 --- a/src/controllers/api/purchaseController.ts +++ b/src/controllers/api/purchaseController.ts @@ -1,8 +1,13 @@ -import purchase from "@/static/fixed_responses/purchase.json"; +import { parseString } from "@/src/helpers/general"; +import { toPurchaseRequest } from "@/src/helpers/purchaseHelpers"; +import { handlePurchase } from "@/src/services/purchaseService"; import { Request, Response } from "express"; -const purchaseController = (_req: Request, res: Response): void => { - res.json(purchase); +const purchaseController = async (req: Request, res: Response) => { + const purchaseRequest = toPurchaseRequest(JSON.parse(String(req.body))); + const accountId = parseString(req.query.accountId); + const response = await handlePurchase(purchaseRequest, accountId); + res.json(response); }; export { purchaseController }; diff --git a/src/controllers/api/saveLoadout.ts b/src/controllers/api/saveLoadout.ts new file mode 100644 index 00000000..b83ad6b1 --- /dev/null +++ b/src/controllers/api/saveLoadout.ts @@ -0,0 +1,13 @@ +import { Inventory } from "@/src/models/inventoryModel"; +import { RequestHandler } from "express"; +import util from "util"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const saveLoadoutController: RequestHandler = async (req, res) => { + const body = JSON.parse(req.body); + console.log(util.inspect(body, { showHidden: false, depth: null, colors: true })); + + res.sendStatus(200); +}; + +export { saveLoadoutController }; diff --git a/src/controllers/custom/addItemController.ts b/src/controllers/custom/addItemController.ts new file mode 100644 index 00000000..504d539e --- /dev/null +++ b/src/controllers/custom/addItemController.ts @@ -0,0 +1,26 @@ +import { ItemType, toAddItemRequest } from "@/src/helpers/customHelpers/addItemHelpers"; +import { getWeaponType } from "@/src/helpers/purchaseHelpers"; +import { addPowerSuit, addWeapon } from "@/src/services/inventoryService"; +import { RequestHandler } from "express"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const addItemController: RequestHandler = async (req, res) => { + const request = toAddItemRequest(req.body); + + switch (request.type) { + case ItemType.Powersuit: + const powersuit = await addPowerSuit(request.InternalName, request.accountId); + res.json(powersuit); + return; + case ItemType.Weapon: + const weaponType = getWeaponType(request.InternalName); + const weapon = await addWeapon(weaponType, request.InternalName, request.accountId); + res.json(weapon); + break; + default: + res.status(400).json({ error: "something went wrong" }); + break; + } +}; + +export { addItemController }; diff --git a/src/controllers/custom/createAccountController.ts b/src/controllers/custom/createAccountController.ts index 0d0d567d..bece119c 100644 --- a/src/controllers/custom/createAccountController.ts +++ b/src/controllers/custom/createAccountController.ts @@ -1,7 +1,8 @@ -import { toCreateAccount, toDatabaseAccount } from "@/src/helpers/customHelpers"; +import { toCreateAccount, toDatabaseAccount } from "@/src/helpers/customHelpers/customHelpers"; import { createAccount } from "@/src/services/loginService"; import { RequestHandler } from "express"; +// eslint-disable-next-line @typescript-eslint/no-misused-promises const createAccountController: RequestHandler = async (req, res) => { const createAccountData = toCreateAccount(req.body); const databaseAccount = toDatabaseAccount(createAccountData); diff --git a/src/helpers/customHelpers/addItemHelpers.ts b/src/helpers/customHelpers/addItemHelpers.ts new file mode 100644 index 00000000..efc517c3 --- /dev/null +++ b/src/helpers/customHelpers/addItemHelpers.ts @@ -0,0 +1,55 @@ +import { isString, parseString } from "@/src/helpers/general"; +import { items } from "@/static/data/items"; + +export enum ItemType { + Powersuit = "Powersuit", + Weapon = "Weapon" +} + +export const isItemType = (itemType: string): itemType is ItemType => { + return Object.keys(ItemType).includes(itemType); +}; + +const parseItemType = (itemType: unknown): ItemType => { + if (!itemType || !isString(itemType) || !isItemType(itemType)) { + throw new Error("incorrect item type"); + } + + return itemType; +}; + +interface IAddItemRequest { + type: ItemType; + InternalName: string; + accountId: string; +} +export const isInternalName = (internalName: string): boolean => { + const item = items.find(i => i.uniqueName === internalName); + return Boolean(item); +}; + +const parseInternalName = (internalName: unknown): string => { + if (!isString(internalName) || !isInternalName(internalName)) { + throw new Error("incorrect internal name"); + } + + return internalName; +}; + +const toAddItemRequest = (body: unknown): IAddItemRequest => { + if (!body || typeof body !== "object") { + throw new Error("incorrect or missing add item request data"); + } + + if ("type" in body && "internalName" in body && "accountId" in body) { + return { + type: parseItemType(body.type), + InternalName: parseInternalName(body.internalName), + accountId: parseString(body.accountId) + }; + } + + throw new Error("malformed add item request"); +}; + +export { toAddItemRequest }; diff --git a/src/helpers/customHelpers.ts b/src/helpers/customHelpers/customHelpers.ts similarity index 94% rename from src/helpers/customHelpers.ts rename to src/helpers/customHelpers/customHelpers.ts index ebdde463..d96c7680 100644 --- a/src/helpers/customHelpers.ts +++ b/src/helpers/customHelpers/customHelpers.ts @@ -1,7 +1,7 @@ import { IAccountCreation } from "@/src/types/customTypes"; import { IDatabaseAccount } from "@/src/types/loginTypes"; import crypto from "crypto"; -import { isString, parseEmail, parseString } from "./general"; +import { isString, parseEmail, parseString } from "../general"; const getWhirlpoolHash = (rawPassword: string): string => { const whirlpool = crypto.createHash("whirlpool"); @@ -30,7 +30,6 @@ const toAccountCreation = (accountCreation: unknown): IAccountCreation => { "CountryCode" in accountCreation ) { const rawPassword = parsePassword(accountCreation.password); - console.log("email", accountCreation.email); return { email: parseEmail(accountCreation.email), password: getWhirlpoolHash(rawPassword), diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts index 7879c007..7ecb6f92 100644 --- a/src/helpers/inventoryHelpers.ts +++ b/src/helpers/inventoryHelpers.ts @@ -1,4 +1,4 @@ -import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes"; +import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes"; const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => { // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/src/helpers/purchaseHelpers.ts b/src/helpers/purchaseHelpers.ts new file mode 100644 index 00000000..2dee9668 --- /dev/null +++ b/src/helpers/purchaseHelpers.ts @@ -0,0 +1,59 @@ +import { parseBoolean, parseNumber, parseString } from "@/src/helpers/general"; +import { WeaponTypeInternal } from "@/src/services/inventoryService"; +import { IPurchaseRequest } from "@/src/types/purchaseTypes"; +import { weapons } from "@/static/data/items"; + +const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => { + if (!purchaseRequest || typeof purchaseRequest !== "object") { + throw new Error("incorrect or missing purchase request data"); + } + + if ( + "PurchaseParams" in purchaseRequest && + "buildLabel" in purchaseRequest && + purchaseRequest.PurchaseParams && + typeof purchaseRequest.PurchaseParams === "object" && + "Source" in purchaseRequest.PurchaseParams && + "StoreItem" in purchaseRequest.PurchaseParams && + "StorePage" in purchaseRequest.PurchaseParams && + "SearchTerm" in purchaseRequest.PurchaseParams && + "CurrentLocation" in purchaseRequest.PurchaseParams && + "Quantity" in purchaseRequest.PurchaseParams && + "UsePremium" in purchaseRequest.PurchaseParams && + "ExpectedPrice" in purchaseRequest.PurchaseParams + ) { + return { + PurchaseParams: { + Source: parseNumber(purchaseRequest.PurchaseParams.Source), + StoreItem: parseString(purchaseRequest.PurchaseParams.StoreItem), + StorePage: parseString(purchaseRequest.PurchaseParams.StorePage), + SearchTerm: parseString(purchaseRequest.PurchaseParams.SearchTerm), + CurrentLocation: parseString(purchaseRequest.PurchaseParams.CurrentLocation), + Quantity: parseNumber(purchaseRequest.PurchaseParams.Quantity), + UsePremium: parseBoolean(purchaseRequest.PurchaseParams.UsePremium), + ExpectedPrice: parseNumber(purchaseRequest.PurchaseParams.ExpectedPrice) + }, + buildLabel: parseString(purchaseRequest.buildLabel) + }; + } + + throw new Error("invalid purchaseRequest"); +}; + +const getWeaponType = (weaponName: string) => { + const weaponInfo = weapons.find(i => i.uniqueName === weaponName); + + if (!weaponInfo) { + throw new Error(`unknown weapon ${weaponName}`); + } + + const weaponType = weaponInfo.productCategory as WeaponTypeInternal; + + if (!weaponType) { + throw new Error(`unknown weapon category for item ${weaponName}`); + } + + return weaponType; +}; + +export { toPurchaseRequest, getWeaponType }; diff --git a/src/helpers/stringHelpers.ts b/src/helpers/stringHelpers.ts new file mode 100644 index 00000000..67995382 --- /dev/null +++ b/src/helpers/stringHelpers.ts @@ -0,0 +1,18 @@ +const getJSONfromString = (str: string): any => { + const jsonSubstring = str.substring(0, str.lastIndexOf("}") + 1); + return JSON.parse(jsonSubstring); +}; + +export const getSubstringFromKeyword = (str: string, keyword: string): string => { + const index = str.indexOf(keyword); + if (index == -1) { + throw new Error(`keyword ${keyword} not found in string ${str}`); + } + return str.substring(index); +}; + +export const getSubstringFromKeywordToKeyword = (str: string, keywordBegin: string, keywordEnd: string): string => { + const beginIndex = str.lastIndexOf(keywordBegin) + 1; + const endIndex = str.indexOf(keywordEnd); + return str.substring(beginIndex, endIndex + 1); +}; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index bed6c50c..ee9c6e25 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,17 +1,13 @@ -import { Schema, model } from "mongoose"; -import { IInventoryDatabase, ISuitDatabase } from "../types/inventoryTypes"; +import { Model, Schema, SchemaType, Types, model } from "mongoose"; +import { FlavourItem, IInventoryDatabase } from "../types/inventoryTypes/inventoryTypes"; import { Oid } from "../types/commonTypes"; - -const polaritySchema = new Schema({ - Slot: Number, - Value: String -}); +import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; +import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; const abilityOverrideSchema = new Schema({ Ability: String, Index: Number }); - const colorSchema = new Schema({ t0: Number, t1: Number, @@ -23,6 +19,67 @@ const colorSchema = new Schema({ m1: Number }); +const longGunConfigSchema = new Schema({ + Skins: [String], + pricol: colorSchema, + attcol: colorSchema, + eyecol: colorSchema, + sigcol: colorSchema, + Upgrades: [String], + Songs: [ + { + m: String, + b: String, + p: String, + s: String + } + ], + Name: String, + AbilityOverride: abilityOverrideSchema, + PvpUpgrades: [String], + ugly: Boolean +}); + +// longGunConfigSchema.set("toJSON", { +// transform(_document, returnedObject: ISuitDocument) { +// // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call +// returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; +// delete returnedObject._id; +// delete returnedObject.__v; +// } +// }); + +const WeaponSchema = new Schema({ + ItemType: String, + Configs: [longGunConfigSchema], + UpgradeVer: Number, + XP: Number, + Features: Number, + Polarized: Number, + Polarity: Schema.Types.Mixed, //todo + FocusLens: String, + ModSlotPurchases: Number, + UpgradeType: Schema.Types.Mixed, //todo + UpgradeFingerprint: String, + ItemName: String, + ModularParts: [String], + UnlockLevel: Number +}); + +WeaponSchema.set("toJSON", { + transform(_document, returnedObject: ISuitDocument) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const polaritySchema = new Schema({ + Slot: Number, + Value: String +}); + const suitConfigSchema = new Schema({ Skins: [String], pricol: colorSchema, @@ -51,7 +108,7 @@ suitConfigSchema.set("toJSON", { } }); -const suitSchema = new Schema({ +const suitSchema = new Schema({ ItemType: String, Configs: [suitConfigSchema], UpgradeVer: Number, @@ -66,7 +123,7 @@ const suitSchema = new Schema({ }); suitSchema.set("toJSON", { - transform(_document, returnedObject) { + transform(_document, returnedObject: ISuitDocument) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; @@ -74,7 +131,25 @@ suitSchema.set("toJSON", { } }); -const inventorySchema = new Schema({ +const slotsBinSchema = new Schema( + { + Slots: Number + }, + { _id: false } +); + +const FlavourItemSchema = new Schema({ + ItemType: String +}); + +FlavourItemSchema.set("toJSON", { + transform(_document, returnedObject: ISuitDocument) { + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const inventorySchema = new Schema({ accountOwnerId: Schema.Types.ObjectId, SubscribedToEmails: Number, Created: Schema.Types.Mixed, @@ -83,9 +158,9 @@ const inventorySchema = new Schema({ PremiumCredits: Number, PremiumCreditsFree: Number, FusionPoints: Number, - SuitBin: Schema.Types.Mixed, - WeaponBin: Schema.Types.Mixed, - SentinelBin: Schema.Types.Mixed, + SuitBin: slotsBinSchema, + WeaponBin: slotsBinSchema, + SentinelBin: slotsBinSchema, SpaceSuitBin: Schema.Types.Mixed, SpaceWeaponBin: Schema.Types.Mixed, PvpBonusLoadoutBin: Schema.Types.Mixed, @@ -104,12 +179,12 @@ const inventorySchema = new Schema({ RawUpgrades: [Schema.Types.Mixed], ReceivedStartingGear: Boolean, Suits: [suitSchema], - LongGuns: [Schema.Types.Mixed], - Pistols: [Schema.Types.Mixed], - Melee: [Schema.Types.Mixed], + LongGuns: [WeaponSchema], + Pistols: [WeaponSchema], + Melee: [WeaponSchema], Ships: [Schema.Types.Mixed], QuestKeys: [Schema.Types.Mixed], - FlavourItems: [Schema.Types.Mixed], + FlavourItems: [FlavourItemSchema], Scoops: [Schema.Types.Mixed], TrainingRetriesLeft: Number, LoadOutPresets: Schema.Types.Mixed, @@ -253,7 +328,16 @@ inventorySchema.set("toJSON", { } }); -const Suit = model("Suit", suitSchema); -const Inventory = model("Inventory", inventorySchema); +type InventoryDocumentProps = { + Suits: Types.DocumentArray; + LongGuns: Types.DocumentArray; + Pistols: Types.DocumentArray; + Melee: Types.DocumentArray; + FlavourItems: Types.DocumentArray; +}; -export { Inventory, Suit }; +type InventoryModelType = Model; + +const Inventory = model("Inventory", inventorySchema); + +export { Inventory }; diff --git a/src/models/t.ts b/src/models/t.ts deleted file mode 100644 index c59908c1..00000000 --- a/src/models/t.ts +++ /dev/null @@ -1,17 +0,0 @@ -import mongoose from "mongoose"; - -const accountSchema = new mongoose.Schema({ - data: JSON -}); - -// personSchema.set("toJSON", { -// transform: (document, returnedObject:) => { -// returnedObject.id = returnedObject._id.toString(); -// delete returnedObject._id; -// delete returnedObject.__v; -// }, -// }); - -const Account = mongoose.model("account", accountSchema); - -export { Account }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 1a5d8a11..91d96fd2 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -28,6 +28,7 @@ import { updateChallengeProgressController } from "@/src/controllers/api/updateC import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController"; import { viewController } from "@/src/controllers/api/viewController"; import { joinSessionController } from "@/src/controllers/api/joinSessionController"; +import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; import express from "express"; @@ -68,4 +69,5 @@ apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController); apiRouter.post("/genericUpdate.php", genericUpdateController); apiRouter.post("/rerollRandomMod.php", rerollRandomModController); apiRouter.post("/joinSession.php", joinSessionController); +apiRouter.post("/saveLoadout.php", saveLoadoutController); export { apiRouter }; diff --git a/src/routes/cache.ts b/src/routes/cache.ts index bb69a6db..803331c3 100644 --- a/src/routes/cache.ts +++ b/src/routes/cache.ts @@ -4,18 +4,14 @@ import config from "@/config.json"; const cacheRouter = express.Router(); cacheRouter.get("/B.Cache.Dx11.bin.*", (_req, res) => { - //console.log("asd", path.join(__dirname, "../data")); res.sendFile("static/data/B.Cache.Dx11_33.0.6.bin", { root: "./" }); }); cacheRouter.get("/B.Cache.Windows_en.bin*", (_req, res) => { - //console.log("asd", path.join(__dirname, "../data")); res.sendFile("static/data/B.Cache.Windows_en_33.0.10.bin", { root: "./" }); }); cacheRouter.get(/^\/origin\/([a-zA-Z0-9]+)\/H\.Cache\.bin.*$/, (_req, res) => { - // console.log("asd", path.join(__dirname, "../data")); - // console.log("asd", __dirname); res.sendFile(`static/data/H.Cache_${config.version}.bin`, { root: "./" }); }); diff --git a/src/routes/custom.ts b/src/routes/custom.ts index 3495e17f..1ab4ff2c 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -1,8 +1,10 @@ +import { addItemController } from "@/src/controllers/custom/addItemController"; import { createAccountController } from "@/src/controllers/custom/createAccountController"; import express from "express"; const customRouter = express.Router(); customRouter.post("/createAccount", createAccountController); +customRouter.post("/addItem", addItemController); export { customRouter }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 36f49d06..6a947c9a 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2,6 +2,9 @@ import { Inventory } from "@/src/models/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import config from "@/config.json"; import { Types } from "mongoose"; +import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; +import { SlotType } from "@/src/types/purchaseTypes"; +import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -22,4 +25,84 @@ const createInventory = async (accountOwnerId: Types.ObjectId) => { } }; -export { createInventory }; +//const updateInventory = async (accountOwnerId: Types.ObjectId, inventoryChanges: any) => {}; + +const getInventory = async (accountOwnerId: string) => { + const inventory = await Inventory.findOne({ accountOwnerId: accountOwnerId }); + + if (!inventory) { + throw new Error(`Didn't find an inventory for ${accountOwnerId}`); + } + + return inventory; +}; + +const addPowerSuit = async (powersuitName: string, accountId: string): Promise => { + const inventory = await getInventory(accountId); + const suitIndex = inventory.Suits.push({ ItemType: powersuitName, Configs: [], UpgradeVer: 101, XP: 0 }); + const changedInventory = await inventory.save(); + return changedInventory.Suits[suitIndex - 1].toJSON(); +}; + +export const updateSlots = async (slotType: SlotType, accountId: string, slots: number) => { + const inventory = await getInventory(accountId); + + switch (slotType) { + case SlotType.SUIT: + inventory.SuitBin.Slots += slots; + break; + case SlotType.WEAPON: + inventory.WeaponBin.Slots += slots; + break; + default: + throw new Error("invalid slot type"); + } + await inventory.save(); +}; + +export const updateCurrency = async (price: number, usePremium: boolean, accountId: string) => { + const currencyName = usePremium ? "PremiumCredits" : "RegularCredits"; + + const inventory = await getInventory(accountId); + inventory[currencyName] = inventory[currencyName] - price; + await inventory.save(); + return { [currencyName]: -price }; +}; + +export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; + +export const addWeapon = async ( + weaponType: WeaponTypeInternal, + weaponName: string, + accountId: string +): Promise => { + const inventory = await getInventory(accountId); + + let weaponIndex; + switch (weaponType) { + case "LongGuns": + weaponIndex = inventory.LongGuns.push({ ItemType: weaponName, Configs: [], XP: 0 }); + break; + case "Pistols": + weaponIndex = inventory.Pistols.push({ ItemType: weaponName, Configs: [], XP: 0 }); + break; + case "Melee": + weaponIndex = inventory.Melee.push({ ItemType: weaponName, Configs: [], XP: 0 }); + break; + default: + throw new Error("unknown weapon type"); + } + + const changedInventory = await inventory.save(); + return changedInventory[weaponType][weaponIndex - 1].toJSON(); +}; + +export const addCustomization = async (customizatonName: string, accountId: string) => { + const inventory = await getInventory(accountId); + + const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; + const changedInventory = await inventory.save(); + return changedInventory.FlavourItems[flavourItemIndex].toJSON(); +}; + +export { createInventory, addPowerSuit }; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts new file mode 100644 index 00000000..76d35017 --- /dev/null +++ b/src/services/purchaseService.ts @@ -0,0 +1,110 @@ +import { getWeaponType } from "@/src/helpers/purchaseHelpers"; +import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; +import { addCustomization, addPowerSuit, addWeapon, updateSlots } from "@/src/services/inventoryService"; +import { IPurchaseRequest, SlotType } from "@/src/types/purchaseTypes"; + +export const getStoreItemCategory = (storeItem: string) => { + const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); + const storeItemElements = storeItemString.split("/"); + return storeItemElements[1]; +}; + +export const getStoreItemTypesCategory = (typesItem: string) => { + const typesString = getSubstringFromKeyword(typesItem, "Types"); + const typeElements = typesString.split("/"); + if (typesItem.includes("StoreItems")) { + return typeElements[2]; + } + return typeElements[1]; +}; + +export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountId: string) => { + console.log(purchaseRequest); + const storeCategory = getStoreItemCategory(purchaseRequest.PurchaseParams.StoreItem); + const internalName = purchaseRequest.PurchaseParams.StoreItem.replace("/StoreItems", ""); + console.log("Store category", storeCategory); + + let purchaseResponse; + switch (storeCategory) { + case "Powersuits": + purchaseResponse = await handlePowersuitPurchase(internalName, accountId); + break; + case "Weapons": + purchaseResponse = await handleWeaponsPurchase(internalName, accountId); + break; + case "Types": + purchaseResponse = await handleTypesPurchase(internalName, accountId); + break; + + default: + throw new Error(`unknown store category: ${storeCategory} not implemented or new`); + } + + // const currencyResponse = await updateCurrency( + // purchaseRequest.PurchaseParams.ExpectedPrice, + // purchaseRequest.PurchaseParams.UsePremium, + // accountId + // ); + + // (purchaseResponse as IPurchaseResponse).InventoryChanges = { + // ...purchaseResponse.InventoryChanges, + // ...currencyResponse + // }; + + return purchaseResponse; +}; + +const handleWeaponsPurchase = async (weaponName: string, accountId: string) => { + const weaponType = getWeaponType(weaponName); + const addedWeapon = await addWeapon(weaponType, weaponName, accountId); + + await updateSlots(SlotType.WEAPON, accountId, -1); + + return { + InventoryChanges: { + WeaponBin: { count: 1, platinum: 0, Slots: -1 }, + [weaponType]: [addedWeapon] + } + }; +}; + +const handlePowersuitPurchase = async (powersuitName: string, accountId: string) => { + const suit = await addPowerSuit(powersuitName, accountId); + await updateSlots(SlotType.WEAPON, accountId, -1); + + return { + InventoryChanges: { + SuitBin: { + count: 1, + platinum: 0, + Slots: -1 + }, + Suits: [suit] + } + }; +}; + +const handleTypesPurchase = async (typesName: string, accountId: string) => { + const typeCategory = getStoreItemTypesCategory(typesName); + console.log("type category", typeCategory); + switch (typeCategory) { + case "SuitCustomizations": + return await handleSuitCustomizationsPurchase(typesName, accountId); + // case "Recipes": + // break; + // case "Sentinels": + // break; + default: + throw new Error(`unknown Types category: ${typeCategory} not implemented or new`); + } +}; + +const handleSuitCustomizationsPurchase = async (customizationName: string, accountId: string) => { + const customization = await addCustomization(customizationName, accountId); + + return { + InventoryChanges: { + FlavourItems: [customization] + } + }; +}; diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts new file mode 100644 index 00000000..187d5ab1 --- /dev/null +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -0,0 +1,44 @@ +import { Oid } from "@/src/types/commonTypes"; +import { AbilityOverride, Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { Document } from "mongoose"; + +export interface ISuitDocument extends ISuitResponse, Document {} + +export interface ISuitResponse extends ISuitDatabase { + ItemId: Oid; +} + +export interface ISuitDatabase { + ItemType: string; + Configs: SuitConfig[]; + UpgradeVer?: number; + XP?: number; + InfestationDate?: Date; + Features?: number; + Polarity?: Polarity[]; + Polarized?: number; + ModSlotPurchases?: number; + FocusLens?: string; + UnlockLevel?: number; +} + +export interface SuitConfig { + Skins?: string[]; + pricol?: Color; + attcol?: Color; + eyecol?: Color; + sigcol?: Color; + Upgrades?: string[]; + Songs?: Song[]; + Name?: string; + AbilityOverride?: AbilityOverride; + PvpUpgrades?: string[]; + ugly?: boolean; +} + +export interface Song { + m?: string; + b?: string; + p?: string; + s: string; +} diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts new file mode 100644 index 00000000..fd59073c --- /dev/null +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -0,0 +1,42 @@ +export interface Polarity { + Slot: number; + Value: FocusSchool; +} + +export enum FocusSchool { + ApAny = "AP_ANY", + ApAttack = "AP_ATTACK", + ApDefense = "AP_DEFENSE", + ApPower = "AP_POWER", + ApPrecept = "AP_PRECEPT", + ApTactic = "AP_TACTIC", + ApUmbra = "AP_UMBRA", + ApUniversal = "AP_UNIVERSAL", + ApWard = "AP_WARD" +} + +export interface Color { + t0?: number; + t1?: number; + t2?: number; + t3?: number; + en?: number; + e1?: number; + m0?: number; + m1?: number; +} + +export interface AbilityOverride { + Ability: string; + Index: number; +} + +export interface SlotsBin { + Slots: number; +} + +export interface sigcol { + t0: number; + t1: number; + en: number; +} diff --git a/src/types/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts similarity index 89% rename from src/types/inventoryTypes.ts rename to src/types/inventoryTypes/inventoryTypes.ts index 6a428931..938ac651 100644 --- a/src/types/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,12 +1,17 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; -import { Oid } from "./commonTypes"; +import { Oid } from "../commonTypes"; +import { AbilityOverride, Color, FocusSchool, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { OperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; export interface IInventoryDatabase extends IInventoryResponse { accountOwnerId: Types.ObjectId; } +export interface IInventoryDatabaseDocument extends IInventoryDatabase, Document {} + export interface IInventoryResponse { SubscribedToEmails: number; Created: Date; @@ -36,9 +41,9 @@ export interface IInventoryResponse { RawUpgrades: RawUpgrade[]; ReceivedStartingGear: boolean; Suits: ISuitDatabase[]; - LongGuns: LongGun[]; - Pistols: LongGun[]; - Melee: Melee[]; + LongGuns: IWeaponDatabase[]; + Pistols: IWeaponDatabase[]; + Melee: IWeaponDatabase[]; Ships: Ship[]; QuestKeys: QuestKey[]; FlavourItems: FlavourItem[]; @@ -188,17 +193,6 @@ export interface AdultOperatorLoadOut { ItemId: Oid; } -export interface Color { - t0?: number; - t1?: number; - t2?: number; - t3?: number; - en?: number; - e1?: number; - m0?: number; - m1?: number; -} - export interface Affiliation { Initiated?: boolean; Standing: number; @@ -319,23 +313,6 @@ export interface CrewShipHarnessConfig { Upgrades?: string[]; } -export interface Polarity { - Slot: number; - Value: FocusSchool; -} - -export enum FocusSchool { - ApAny = "AP_ANY", - ApAttack = "AP_ATTACK", - ApDefense = "AP_DEFENSE", - ApPower = "AP_POWER", - ApPrecept = "AP_PRECEPT", - ApTactic = "AP_TACTIC", - ApUmbra = "AP_UMBRA", - ApUniversal = "AP_UNIVERSAL", - ApWard = "AP_WARD" -} - export interface CrewShipSalvageBinClass { Extra: number; Slots: number; @@ -359,7 +336,7 @@ export interface CrewShipWeapon { export interface CrewShip { ItemType: string; Configs: CrewShipConfig[]; - Weapon: Weapon; + Weapon: CrewshipWeapon; Customization: Customization; ItemName: string; RailjackImage: FlavourItem; @@ -400,7 +377,7 @@ export interface FlavourItem { ItemType: string; } -export interface Weapon { +export interface CrewshipWeapon { PILOT: Pilot; PORT_GUNS: PortGuns; } @@ -713,33 +690,6 @@ export interface Normal { ItemId: Oid; } -export interface LongGun { - ItemType: string; - Configs: LongGunConfig[]; - UpgradeVer?: number; - XP?: number; - Features?: number; - ItemId: Oid; - Polarized?: number; - Polarity?: Polarity[]; - FocusLens?: string; - ModSlotPurchases?: number; - UpgradeType?: UpgradeType; - UpgradeFingerprint?: string; - ItemName?: string; - ModularParts?: string[]; - UnlockLevel?: number; -} - -export interface LongGunConfig { - Upgrades?: string[]; - Skins?: string[]; - pricol?: Color; - attcol?: Color; - PvpUpgrades?: string[]; - Name?: string; -} - export enum UpgradeType { LotusWeaponsGrineerKuvaLichUpgradesInnateDamageRandomMod = "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" } @@ -774,40 +724,6 @@ export interface MechSuit { ItemId: Oid; } -export interface Melee { - ItemType: string; - Configs: MeleeConfig[]; - UpgradeVer?: number; - XP?: number; - Features?: number; - Polarity?: Polarity[]; - Polarized?: number; - ModSlotPurchases?: number; - ItemId: Oid; - FocusLens?: string; - ModularParts?: string[]; - ItemName?: string; - UpgradeType?: UpgradeType; - UpgradeFingerprint?: string; - UnlockLevel?: number; -} - -export interface MeleeConfig { - Skins?: string[]; - pricol?: Color; - Upgrades?: string[]; - attcol?: Color; - eyecol?: OperatorLoadOutSigcol; - Name?: string; - PvpUpgrades?: string[]; -} - -export interface OperatorLoadOutSigcol { - t0?: number; - t1?: number; - en?: number; -} - export interface Mission { Completes: number; Tier?: number; @@ -885,11 +801,6 @@ export interface OperatorLoadOut { ItemId: Oid; } -export interface AbilityOverride { - Ability: string; - Index: number; -} - export interface PendingCoupon { Expiry: Date; Discount: number; @@ -1159,48 +1070,6 @@ export interface NotePacks { PERCUSSION: string; } -export interface ISuitDocument extends ISuitDatabase, Document {} - -export interface ISuitResponse extends ISuitDatabase { - ItemId: Oid; -} - -export interface ISuitDatabase { - ItemType: string; - Configs: SuitConfig[]; - UpgradeVer?: number; - XP?: number; - InfestationDate?: Date; - Features?: number; - Polarity?: Polarity[]; - Polarized?: number; - ModSlotPurchases?: number; - ItemId: Oid; - FocusLens?: string; - UnlockLevel?: number; -} - -export interface SuitConfig { - Skins?: string[]; - pricol?: Color; - attcol?: Color; - eyecol?: Color; - sigcol?: Color; - Upgrades?: string[]; - Songs?: Song[]; - Name?: string; - AbilityOverride?: AbilityOverride; - PvpUpgrades?: string[]; - ugly?: boolean; -} - -export interface Song { - m?: string; - b?: string; - p?: string; - s: string; -} - export interface TauntHistory { node: string; state: string; diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts new file mode 100644 index 00000000..3c561e2d --- /dev/null +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -0,0 +1,39 @@ +import { Oid } from "@/src/types/commonTypes"; +import { Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; + +export interface IWeaponResponse extends IWeaponDatabase { + ItemId: Oid; +} + +export interface IWeaponDatabase { + ItemType: string; + Configs: WeaponConfig[]; + UpgradeVer?: number; + XP?: number; + Features?: number; + Polarized?: number; + Polarity?: Polarity[]; + FocusLens?: string; + ModSlotPurchases?: number; + UpgradeType?: string; + UpgradeFingerprint?: string; + ItemName?: string; + ModularParts?: string[]; + UnlockLevel?: number; +} + +export interface WeaponConfig { + Skins?: string[]; + pricol?: Color; + Upgrades?: string[]; + attcol?: Color; + eyecol?: OperatorLoadOutSigcol; + Name?: string; + PvpUpgrades?: string[]; +} + +export interface OperatorLoadOutSigcol { + t0?: number; + t1?: number; + en?: number; +} diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts new file mode 100644 index 00000000..1add87cc --- /dev/null +++ b/src/types/purchaseTypes.ts @@ -0,0 +1,43 @@ +/* eslint-disable prettier/prettier */ +import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; + +export interface IPurchaseRequest { + PurchaseParams: IPurchaseParams; + buildLabel: string; +} + +export interface IPurchaseParams { + Source: number; + StoreItem: string; + StorePage: string; + SearchTerm: string; + CurrentLocation: string; + Quantity: number; + UsePremium: boolean; + ExpectedPrice: number; +} + +export interface IPurchaseResponse { + InventoryChanges: { + SuitBin?: IBinChanges; + WeaponBin?: IBinChanges; + Suits?: ISuitDatabase[]; + LongGuns?: IWeaponResponse[]; + Pistols?: IWeaponResponse[]; + Melee?: IWeaponResponse[]; + PremiumCredits?: number; + RegularCredits?: number; + }; +} + +export type IBinChanges = { + count: number; + platinum: number; + Slots: number; +}; + +export enum SlotType { + SUIT = "SuitBin", + WEAPON = "WeaponBin" +} -- 2.47.2 From f8601e3bd32b52a6834386538ec4395f4b5e369a Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Wed, 14 Jun 2023 02:00:21 +0200 Subject: [PATCH 4/9] something --- src/models/inventoryModel.ts | 2 +- src/routes/api.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index ee9c6e25..37290960 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,4 +1,4 @@ -import { Model, Schema, SchemaType, Types, model } from "mongoose"; +import { Model, Schema, Types, model } from "mongoose"; import { FlavourItem, IInventoryDatabase } from "../types/inventoryTypes/inventoryTypes"; import { Oid } from "../types/commonTypes"; import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; diff --git a/src/routes/api.ts b/src/routes/api.ts index 91d96fd2..c52a8056 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -59,6 +59,7 @@ apiRouter.get("/logout.php", logoutController); // post apiRouter.post("/findSessions.php", findSessionsController); +// eslint-disable-next-line @typescript-eslint/no-misused-promises apiRouter.post("/purchase.php", purchaseController); apiRouter.post("/login.php", loginController); apiRouter.post("/getAlliance.php", getAllianceController); -- 2.47.2 From 6dd190b6eb3e11f9a587360c696107bad397d7f2 Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Wed, 14 Jun 2023 02:08:42 +0200 Subject: [PATCH 5/9] prettier --- package-lock.json | 6464 ++++++++++++++++++++++----------------------- package.json | 72 +- 2 files changed, 3268 insertions(+), 3268 deletions(-) diff --git a/package-lock.json b/package-lock.json index e1c51c62..8ee83e57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,3236 +1,3236 @@ { - "name": "wf-emulator", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "wf-emulator", - "version": "0.1.0", - "license": "GNU", - "dependencies": { - "dotenv": "^16.1.3", - "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1", - "warframe-items": "1.1260.50" - }, - "devDependencies": { - "@tsconfig/node20": "^1.0.0", - "@types/express": "^4.17.17", - "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.8", - "@typescript-eslint/parser": "^5.59.8", - "eslint": "^8.41.0", - "eslint-plugin-prettier": "^4.2.1", - "morgan": "^1.10.0", - "prettier": "^2.8.8", - "ts-node-dev": "^2.0.0", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" - }, - "engines": { - "node": ">=18.15.0", - "npm": ">=9.5.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@eslint/js": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", - "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@tsconfig/node20": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", - "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/morgan": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", - "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", - "dev": true - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.8.tgz", - "integrity": "sha512-JDMOmhXteJ4WVKOiHXGCoB96ADWg9q7efPWHRViT/f09bA8XOMLAVHHju3l0MkZnG1izaWXYmgvQcUjTRcpShQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/type-utils": "5.59.8", - "@typescript-eslint/utils": "5.59.8", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.8.tgz", - "integrity": "sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/typescript-estree": "5.59.8", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz", - "integrity": "sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/visitor-keys": "5.59.8" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.8.tgz", - "integrity": "sha512-+5M518uEIHFBy3FnyqZUF3BMP+AXnYn4oyH8RF012+e7/msMY98FhGL5SrN29NQ9xDgvqCgYnsOiKp1VjZ/fpA==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.8", - "@typescript-eslint/utils": "5.59.8", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/types": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.8.tgz", - "integrity": "sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz", - "integrity": "sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/visitor-keys": "5.59.8", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.8.tgz", - "integrity": "sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.8", - "@typescript-eslint/types": "5.59.8", - "@typescript-eslint/typescript-estree": "5.59.8", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.8", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", - "integrity": "sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.8", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/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/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "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-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/body-parser": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", - "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/body-parser/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bson": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", - "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", - "engines": { - "node": ">=14.20.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "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" - }, - "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/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", - "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", - "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", - "dev": true, - "dependencies": { - "xtend": "^4.0.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", - "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.41.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "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.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.0.0-beta.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", - "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "3.0.0", - "body-parser": "2.0.0-beta.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "3.1.0", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "mime-types": "~2.1.34", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-is-absolute": "1.0.1", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "router": "2.0.0-beta.1", - "safe-buffer": "5.2.1", - "send": "1.0.0-beta.1", - "serve-static": "2.0.0-beta.1", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/express/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "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-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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==", - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", - "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", - "dependencies": { - "bson": "^5.2.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongoose": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", - "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", - "dependencies": { - "bson": "^5.2.0", - "kareem": "2.5.1", - "mongodb": "5.3.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mquery/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mquery/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==" - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "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/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "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/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/router": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", - "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", - "dependencies": { - "array-flatten": "3.0.0", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "3.2.0", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", - "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", - "dependencies": { - "debug": "3.1.0", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime-types": "~2.1.34", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", - "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "1.0.0-beta.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "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/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.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-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node-dev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", - "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^10.4.0", - "tsconfig": "^7.0.0" - }, - "bin": { - "ts-node-dev": "lib/bin.js", - "tsnd": "lib/bin.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "node-notifier": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/ts-node-dev/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/warframe-items": { - "version": "1.1260.50", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.50.tgz", - "integrity": "sha512-03oNB6Yg61yUd7glewUUg0avnaGaAqc9oVPJk+1THFB0o/d4ppQSgL38yTUxMwmw0avCrqd+8z5TMrfXtvPDXQ==" - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "name": "wf-emulator", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "wf-emulator", + "version": "0.1.0", + "license": "GNU", + "dependencies": { + "dotenv": "^16.1.3", + "express": "^5.0.0-beta.1", + "mongoose": "^7.1.1", + "warframe-items": "1.1260.50" + }, + "devDependencies": { + "@tsconfig/node20": "^1.0.0", + "@types/express": "^4.17.17", + "@types/morgan": "^1.9.4", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "eslint": "^8.41.0", + "eslint-plugin-prettier": "^4.2.1", + "morgan": "^1.10.0", + "prettier": "^2.8.8", + "ts-node-dev": "^2.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.1.3" + }, + "engines": { + "node": ">=18.15.0", + "npm": ">=9.5.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@tsconfig/node20": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-1.0.0.tgz", + "integrity": "sha512-AwbXtpWEaRUjbGVwdlusNqwet+jeSk3Nnqf/8+77WJ1/9d6xnqs2QpE9Pdwv8RCoXxtMedWEtlmWY+/irBPcUw==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/morgan": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/morgan/-/morgan-1.9.4.tgz", + "integrity": "sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "18.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", + "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.8.tgz", + "integrity": "sha512-JDMOmhXteJ4WVKOiHXGCoB96ADWg9q7efPWHRViT/f09bA8XOMLAVHHju3l0MkZnG1izaWXYmgvQcUjTRcpShQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/type-utils": "5.59.8", + "@typescript-eslint/utils": "5.59.8", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.8.tgz", + "integrity": "sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/typescript-estree": "5.59.8", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz", + "integrity": "sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.8.tgz", + "integrity": "sha512-+5M518uEIHFBy3FnyqZUF3BMP+AXnYn4oyH8RF012+e7/msMY98FhGL5SrN29NQ9xDgvqCgYnsOiKp1VjZ/fpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.8", + "@typescript-eslint/utils": "5.59.8", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.8.tgz", + "integrity": "sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz", + "integrity": "sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/visitor-keys": "5.59.8", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.8.tgz", + "integrity": "sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.8", + "@typescript-eslint/types": "5.59.8", + "@typescript-eslint/typescript-estree": "5.59.8", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.8", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz", + "integrity": "sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.8", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/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/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "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-flatten": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.0-beta.1.tgz", + "integrity": "sha512-I1v2bt2OdYqtmk8nEFZuEf+9Opb30DphYwTPDbgg/OorSAoJOuTpWyDrZaSWQw7FdoevbBRCP2+9z/halXSWcA==", + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/body-parser/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bson": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.2.0.tgz", + "integrity": "sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg==", + "engines": { + "node": ">=14.20.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "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/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", + "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dynamic-dedupe": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", + "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", + "dev": true, + "dependencies": { + "xtend": "^4.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "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.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.0.0-beta.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.0-beta.1.tgz", + "integrity": "sha512-KPtBrlZoQu2Ps0Ce/Imqtq73AB0KBJ8Gx59yZQ3pmDJU2/LhcoZETo03oSgtTQufbcLXt/WBITk/jMjl/WMyrQ==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "3.0.0", + "body-parser": "2.0.0-beta.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "3.1.0", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "mime-types": "~2.1.34", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-is-absolute": "1.0.1", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "router": "2.0.0-beta.1", + "safe-buffer": "5.2.1", + "send": "1.0.0-beta.1", + "serve-static": "2.0.0-beta.1", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/express/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "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-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz", + "integrity": "sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ==", + "dependencies": { + "bson": "^5.2.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz", + "integrity": "sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA==", + "dependencies": { + "bson": "^5.2.0", + "kareem": "2.5.1", + "mongodb": "5.3.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/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==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "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/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/router": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0-beta.1.tgz", + "integrity": "sha512-GLoYgkhAGAiwVda5nt6Qd4+5RAPuQ4WIYLlZ+mxfYICI+22gnIB3eCfmhgV8+uJNPS1/39DOYi/vdrrz0/ouKA==", + "dependencies": { + "array-flatten": "3.0.0", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "3.2.0", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.0.0-beta.1.tgz", + "integrity": "sha512-OKTRokcl/oo34O8+6aUpj8Jf2Bjw2D0tZzmX0/RvyfVC9ZOZW+HPAWAlhS817IsRaCnzYX1z++h2kHFr2/KNRg==", + "dependencies": { + "debug": "3.1.0", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime-types": "~2.1.34", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.0.0-beta.1.tgz", + "integrity": "sha512-DEJ9on/tQeFO2Omj7ovT02lCp1YgP4Kb8W2lv2o/4keTFAbgc8HtH3yPd47++2wv9lvQeqiA7FHFDe5+8c4XpA==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "1.0.0-beta.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, + "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/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.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-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", + "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.1", + "dynamic-dedupe": "^0.3.0", + "minimist": "^1.2.6", + "mkdirp": "^1.0.4", + "resolve": "^1.0.0", + "rimraf": "^2.6.1", + "source-map-support": "^0.5.12", + "tree-kill": "^1.2.2", + "ts-node": "^10.4.0", + "tsconfig": "^7.0.0" + }, + "bin": { + "ts-node-dev": "lib/bin.js", + "tsnd": "lib/bin.js" + }, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "node-notifier": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/ts-node-dev/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/warframe-items": { + "version": "1.1260.50", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.50.tgz", + "integrity": "sha512-03oNB6Yg61yUd7glewUUg0avnaGaAqc9oVPJk+1THFB0o/d4ppQSgL38yTUxMwmw0avCrqd+8z5TMrfXtvPDXQ==" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } + } } diff --git a/package.json b/package.json index 9be67021..c4d88a17 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,38 @@ { - "name": "wf-emulator", - "version": "0.1.0", - "description": "WF Emulator", - "main": "index.ts", - "scripts": { - "start": "node build/index.js", - "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts", - "build": "tsc", - "lint": "eslint --ext .ts .", - "prettier": "prettier --write ." - }, - "license": "GNU", - "dependencies": { - "dotenv": "^16.1.3", - "express": "^5.0.0-beta.1", - "mongoose": "^7.1.1", - "warframe-items": "1.1260.50" - }, - "devDependencies": { - "@tsconfig/node20": "^1.0.0", - "@types/express": "^4.17.17", - "@types/morgan": "^1.9.4", - "@typescript-eslint/eslint-plugin": "^5.59.8", - "@typescript-eslint/parser": "^5.59.8", - "eslint": "^8.41.0", - "eslint-plugin-prettier": "^4.2.1", - "morgan": "^1.10.0", - "prettier": "^2.8.8", - "ts-node-dev": "^2.0.0", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" - }, - "engines": { - "node": ">=18.15.0", - "npm": ">=9.5.0" - } + "name": "wf-emulator", + "version": "0.1.0", + "description": "WF Emulator", + "main": "index.ts", + "scripts": { + "start": "node build/index.js", + "dev": "ts-node-dev --openssl-legacy-provider -r tsconfig-paths/register src/index.ts", + "build": "tsc", + "lint": "eslint --ext .ts .", + "prettier": "prettier --write ." + }, + "license": "GNU", + "dependencies": { + "dotenv": "^16.1.3", + "express": "^5.0.0-beta.1", + "mongoose": "^7.1.1", + "warframe-items": "1.1260.50" + }, + "devDependencies": { + "@tsconfig/node20": "^1.0.0", + "@types/express": "^4.17.17", + "@types/morgan": "^1.9.4", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.8", + "eslint": "^8.41.0", + "eslint-plugin-prettier": "^4.2.1", + "morgan": "^1.10.0", + "prettier": "^2.8.8", + "ts-node-dev": "^2.0.0", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.1.3" + }, + "engines": { + "node": ">=18.15.0", + "npm": ">=9.5.0" + } } -- 2.47.2 From a0be6b0368f129fa76c7e3ff8010cca86165f75f Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Wed, 14 Jun 2023 16:23:12 +0200 Subject: [PATCH 6/9] fix ignoring static/data files, except .bin --- .gitignore | 2 +- src/services/inventoryService.ts | 5 +++-- src/services/purchaseService.ts | 10 ++++++++-- src/types/purchaseTypes.ts | 2 ++ static/data/items.ts | 18 ++++++++++++++++++ 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 static/data/items.ts diff --git a/.gitignore b/.gitignore index 05465bae..ee9cbba6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,5 @@ /build /.env -/static/data/* +/static/data/*.bin yarn.lock diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 6a947c9a..41b22959 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -5,6 +5,7 @@ import { Types } from "mongoose"; import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; +import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -97,12 +98,12 @@ export const addWeapon = async ( return changedInventory[weaponType][weaponIndex - 1].toJSON(); }; -export const addCustomization = async (customizatonName: string, accountId: string) => { +export const addCustomization = async (customizatonName: string, accountId: string): Promise => { const inventory = await getInventory(accountId); const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; const changedInventory = await inventory.save(); - return changedInventory.FlavourItems[flavourItemIndex].toJSON(); + return changedInventory.FlavourItems[flavourItemIndex].toJSON(); //mongoose bug forces as FlavourItem }; export { createInventory, addPowerSuit }; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 76d35017..16716573 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -1,7 +1,13 @@ import { getWeaponType } from "@/src/helpers/purchaseHelpers"; import { getSubstringFromKeyword } from "@/src/helpers/stringHelpers"; -import { addCustomization, addPowerSuit, addWeapon, updateSlots } from "@/src/services/inventoryService"; -import { IPurchaseRequest, SlotType } from "@/src/types/purchaseTypes"; +import { + addCustomization, + addPowerSuit, + addWeapon, + updateCurrency, + updateSlots +} from "@/src/services/inventoryService"; +import { IPurchaseRequest, IPurchaseResponse, SlotType } from "@/src/types/purchaseTypes"; export const getStoreItemCategory = (storeItem: string) => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index 1add87cc..f6860189 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -1,5 +1,6 @@ /* eslint-disable prettier/prettier */ import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; +import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; export interface IPurchaseRequest { @@ -28,6 +29,7 @@ export interface IPurchaseResponse { Melee?: IWeaponResponse[]; PremiumCredits?: number; RegularCredits?: number; + FlavourItems?: FlavourItem[]; }; } diff --git a/static/data/items.ts b/static/data/items.ts new file mode 100644 index 00000000..dd4c6622 --- /dev/null +++ b/static/data/items.ts @@ -0,0 +1,18 @@ +import Items, { Item, Weapon } from "warframe-items"; + +type MinWeapon = Omit; +type MinItem = Omit; + +export const weapons: MinWeapon[] = (new Items({ category: ["Primary", "Secondary", "Melee"] }) as Weapon[]).map( + item => { + const next = { ...item }; + delete next.patchlogs; + return next; + } +); + +export const items: MinItem[] = new Items({ category: ["All"] }).map(item => { + const next = { ...item }; + delete next.patchlogs; + return next; +}); -- 2.47.2 From ee0ffea5aba1592e82468683f66f5eed41c74f62 Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Tue, 11 Jul 2023 18:03:40 +0200 Subject: [PATCH 7/9] update to 33.5.6 --- config.json | 8 +- static/fixed_responses/worldState.json | 3262 ++++++++++++------------ 2 files changed, 1622 insertions(+), 1648 deletions(-) diff --git a/config.json b/config.json index 7ce17384..0c03092a 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,9 @@ { "autoCreateAccount": true, - "buildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", - "matchmakingBuildId": "4920386201513015989", - "version": "33.0.14", - "worldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", + "buildLabel": "2023.07.06.16.50/isrcmLv6J3FZS839QAenoQ", + "matchmakingBuildId": "7784392807453928214", + "version": "33.5.6", + "worldSeed": "HOI4Qm0LmuvK+UonXmubrYk/CGif1pdPWzrv0u4ZHmg62Vaulo04cEzutzZ06vGXvuje01HP7/2YoRgjwUj3MwLpomK+TbN3O8dRxHqvFzh9w+jxKKdZEpE4K1mrIH/7hHteU6/GOM0uJ2yoptjRucSvq2wc4Ntwnxqb8l8CfxFP5Dc1XaeHz39gYd1f92Sde3wqfSpO7mwNXrJxn/qDZ5Y0iTOpiLjlACiU6Brmth9EExyuaxjSNXAyunhDQLoU/9YXrKUhDZ/AbE/jAVQ8+fW8ROIMdrGhSMXgpmhtUjGj5q9IIcTd8GRE9JTzzhhp/htmP35Sd0SVV824GN0jVw==", "skipStoryModeChoice": true, "skipTutorial": true, "testMission": true, diff --git a/static/fixed_responses/worldState.json b/static/fixed_responses/worldState.json index 30cbd618..96fc656b 100644 --- a/static/fixed_responses/worldState.json +++ b/static/fixed_responses/worldState.json @@ -1,9 +1,9 @@ { - "WorldSeed": "GWvLyHiw7/Qr/60056xmAmDrn0Y9et2S3BYlLSkLDNBMtumSr3KxWV8He5Jz72yYq3tsY+cd53QeTf+bb54+llGTbYiQF+64BtiLWMVhWP1IUaP4SxWHXojlpQC13op/udHI1whc+8zrxEzzZmv/QlpvigAAbjBDtwu97Df0vgn+YrOKi4G3OhgIkTRocAAzD1P/BGbT8gaKE01H8rXl3+Gq6jCA1O1v800SL6DwKOgMsXVvWp7g2n/tPxJe/j9bmu4XFG0bSa5y5hikLKxvntA/5ut+iogv4MyMBe+TydVxjPqNbkKnby5l4KAL+3inpuPraeg4jcNMt0AwKG8NIQ==", + "WorldSeed": "HOI4Qm0LmuvK+UonXmubrYk/CGif1pdPWzrv0u4ZHmg62Vaulo04cEzutzZ06vGXvuje01HP7/2YoRgjwUj3MwLpomK+TbN3O8dRxHqvFzh9w+jxKKdZEpE4K1mrIH/7hHteU6/GOM0uJ2yoptjRucSvq2wc4Ntwnxqb8l8CfxFP5Dc1XaeHz39gYd1f92Sde3wqfSpO7mwNXrJxn/qDZ5Y0iTOpiLjlACiU6Brmth9EExyuaxjSNXAyunhDQLoU/9YXrKUhDZ/AbE/jAVQ8+fW8ROIMdrGhSMXgpmhtUjGj5q9IIcTd8GRE9JTzzhhp/htmP35Sd0SVV824GN0jVw==", "Version": 10, - "MobileVersion": "4.15.13.1", - "BuildLabel": "2023.05.25.13.39/oZkc-RIme5c1CCltUfg2gQ", - "Time": 1685550327, + "MobileVersion": "4.15.16.0", + "BuildLabel": "2023.07.06.16.50/isrcmLv6J3FZS839QAenoQ", + "Time": 1689090336, "Events": [ { "_id": { "$oid": "62d31b87106360aa5703954d" }, @@ -105,14 +105,7 @@ "Priority": true, "MobileOnly": false }, - { - "_id": { "$oid": "63a23acc1336bb81640a63dd" }, - "Messages": [], - "Prop": "", - "Date": { "$date": { "$numberLong": "1671576240000" } }, - "Priority": false, - "MobileOnly": false - }, + { "_id": { "$oid": "63a23acc1336bb81640a63dd" }, "Messages": [], "Prop": "", "Date": { "$date": { "$numberLong": "1671576240000" } }, "Priority": false, "MobileOnly": false }, { "_id": { "$oid": "63c84f910ee5a50a18071a24" }, "Messages": [{ "LanguageCode": "tr", "Message": "Sentient Rehberi" }], @@ -122,30 +115,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64120cec5ca90487bf075d73" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Hildryn Prime Access is now available!" }, - { "LanguageCode": "fr", "Message": "Le Prime Access Hildryn Prime est maintenant disponible !" }, - { "LanguageCode": "it", "Message": "L'Accesso Hildryn Prime è ora disponibile!" }, - { "LanguageCode": "de", "Message": "Hildryn Prime Access ist jetzt verfügbar!" }, - { "LanguageCode": "es", "Message": "¡Prime Access de Hildryn ya está disponible!" }, - { "LanguageCode": "pt", "Message": "O Prime Access da Hildryn Prime já está disponível!" }, - { "LanguageCode": "ru", "Message": "Доступ Хильдрин Прайм уже открыт!" }, - { "LanguageCode": "pl", "Message": "Hildryn Prime Access już dostępny!" }, - { "LanguageCode": "uk", "Message": "Гільдрина-прайм уже доступна!" }, - { "LanguageCode": "tr", "Message": "Hildryn Prime Access şimdi sizlerle!" }, - { "LanguageCode": "ja", "Message": "Hildryn Prime Accessが登場!" }, - { "LanguageCode": "zh", "Message": "Hildryn Prime Access 现已登场!" }, - { "LanguageCode": "ko", "Message": "힐드린 프라임 액세스를 지금 만나보세요!" }, - { "LanguageCode": "tc", "Message": "Hildryn Prime Access 現已登場!" } - ], - "Prop": "https://www.warframe.com/news/hildryn-prime-access?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-03-HildrynPrimeAccessIGNLaunch", - "Date": { "$date": { "$numberLong": "1678904400000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/8260dab07e051d35bcef1a2a82c22965_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "64134e23bf2682c23b0214ad" }, "Messages": [{ "LanguageCode": "es", "Message": "Programas de terceros y tú" }], @@ -175,16 +144,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64493dd93b9ce09dd509b136" }, - "Messages": [{ "LanguageCode": "ja", "Message": "「デュヴィリ・パラドックス」パッチノート" }], - "Prop": "https://bit.ly/3AxYiNW", - "Date": { "$date": { "$numberLong": "1682521440000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/0c1fb4674583e7e29bf36784b28f3476.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "64493fde2b02c323ce07ec73" }, "Messages": [{ "LanguageCode": "pl", "Message": "Aktualizacja 33: Paradoks Duviri" }], @@ -198,12 +157,7 @@ "_id": { "$oid": "64494dc72c44d78bab079685" }, "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33: 두비리의 역설" }], "Prop": "", - "Links": [ - { - "LanguageCode": "ko", - "Link": "https://forums.warframe.com/topic/1346037-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-33-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%97%AD%EC%84%A4/" - } - ], + "Links": [{ "LanguageCode": "ko", "Link": "https://forums.warframe.com/topic/1346037-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-33-%EB%91%90%EB%B9%84%EB%A6%AC%EC%9D%98-%EC%97%AD%EC%84%A4/" }], "Date": { "$date": { "$numberLong": "1682525580000" } }, "Priority": false, "MobileOnly": false @@ -217,74 +171,6 @@ "MobileOnly": false, "Community": true }, - { - "_id": { "$oid": "64517606c429f4f85d0f069d" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Nora's Mix Vol. 3 終了日 + Nightwaveの今後について" }], - "Prop": "https://bit.ly/3AJu8HT", - "Date": { "$date": { "$numberLong": "1683060000000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6453f7bf20df842a150d8316" }, - "Messages": [{ "LanguageCode": "en", "Message": "Have your Dojo featured on the Star Chart!" }], - "Prop": "https://forums.warframe.com/topic/1349495-star-chart-dojo-showcase-spring-2023/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Spring-dojo-contest", - "Date": { "$date": { "$numberLong": "1683224460000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6453fc4380fb13ff9a072376" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Now Available: Nova Prime and Trinity Prime" }, - { "LanguageCode": "fr", "Message": "Maintenant disponible : Nova Prime et Trinity Prime" }, - { "LanguageCode": "it", "Message": "Ora Disponibili: Nova Prime e Trinity Prime" }, - { "LanguageCode": "de", "Message": "Jetzt erhältlich: Nova Prime und Trinity Prime" }, - { "LanguageCode": "es", "Message": "Disponible ya: Nova Prime y Trinity Prime" }, - { "LanguageCode": "pt", "Message": "Já Disponível: Nova Prime e Trinity Prime" }, - { "LanguageCode": "ru", "Message": "Уже доступны: Нова Прайм и Тринити Прайм" }, - { "LanguageCode": "pl", "Message": "Już dostępne: Nova Prime i Trinity Prime" }, - { "LanguageCode": "uk", "Message": "Уже доступні: Нова-прайм і Трініті-прайм\t" }, - { "LanguageCode": "tr", "Message": "Şimdi Sizlerle: Nova Prime ve Trinity Prime" }, - { "LanguageCode": "ja", "Message": "Nova PrimeとTrinity Primeをゲットしよう" }, - { "LanguageCode": "zh", "Message": "现已登场:Nova Prime 和 Trinity Prime" }, - { "LanguageCode": "ko", "Message": "지금 바로 구매 가능: 노바 프라임 및 트리니티 프라임" }, - { "LanguageCode": "tc", "Message": "現已登場:Nova Prime 以及 Trinity Prime" } - ], - "Prop": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-PrimeResurgenceNovaTrinity-Launch", - "Date": { "$date": { "$numberLong": "1683222960000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685937600000" } }, - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/thumbnails/3dde851b071ff5295e58f24d68b43760_800x450.png", - "Priority": false, - "MobileOnly": false, - "HideEndDateModifier": true - }, - { - "_id": { "$oid": "646646aad048b740ec04753c" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Refer a Friend Program Changes" }, - { "LanguageCode": "fr", "Message": "Modification du programme de parrainage" }, - { "LanguageCode": "it", "Message": "Cambiamenti al Programma Riferisci un Amico" }, - { "LanguageCode": "de", "Message": "Programmaktualisierung für 'Freunde rekrutieren'" }, - { "LanguageCode": "es", "Message": "Cambios en el programa \"Refiere a un amigo\"" }, - { "LanguageCode": "pt", "Message": "Mudanças no Programa de Indicação de Amigos" }, - { "LanguageCode": "pl", "Message": "Zmiany programu \"Zaproś Znajomego\"" }, - { "LanguageCode": "uk", "Message": "Зміни в програмі «Запросіть друга»" }, - { "LanguageCode": "tr", "Message": "Arkadaş Daveti Referans Programı Değişiklikleri" }, - { "LanguageCode": "ja", "Message": "お友達紹介プログラム更新" }, - { "LanguageCode": "zh", "Message": "「邀请好友计划」更新" }, - { "LanguageCode": "ko", "Message": "친구 초대 프로그램의 변화" } - ], - "Prop": "https://www.warframe.com/referral", - "Date": { "$date": { "$numberLong": "1684421760000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684393200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/fe49a80950256bf393fa2aa0b9303a_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "6466726e06ca85f0e202e343" }, "Messages": [ @@ -326,52 +212,11 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "64668cd31137f75bf70d0e09" }, - "Messages": [ - { "LanguageCode": "en", "Message": "May in Warframe Roundup" }, - { "LanguageCode": "fr", "Message": "Tour d'horizon du mois de mai dans Warframe" }, - { "LanguageCode": "it", "Message": "Maggio in Warframe: Riepilogo" }, - { "LanguageCode": "de", "Message": "Mai-Zusammenfassung für Warframe" }, - { "LanguageCode": "es", "Message": "Mayo en Warframe: Resumen" }, - { "LanguageCode": "pt", "Message": "Resumo do mês de maio no Warframe" }, - { "LanguageCode": "pl", "Message": "Maj w Warframe" }, - { "LanguageCode": "uk", "Message": "Травнева добірка у Warframe" }, - { "LanguageCode": "tr", "Message": "Mayıs Ayı Warframe Özeti" }, - { "LanguageCode": "ja", "Message": "5月の『Warframe』振り返り" }, - { "LanguageCode": "zh", "Message": "《Warframe》的五月摘要" }, - { "LanguageCode": "ko", "Message": "5월의 워프레임 요약" }, - { "LanguageCode": "tc", "Message": "Warframe 5 月份總結" } - ], - "Prop": "https://www.warframe.com/news/may-in-warframe-roundup?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-MayWarframeRoundup", - "Date": { "$date": { "$numberLong": "1684440240000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684440000000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/8f08145f560b43a4cafadc7bb9c5748_1600x900.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64677ce96fba686c8a06bd24" }, - "Messages": [ - { - "LanguageCode": "en", - "Message": "May 25 Charity Stream: Warframe x Covenant House! Click To Learn More. 6 p.m. EST " - } - ], - "Prop": "https://wrfr.me/chmm23", - "Date": { "$date": { "$numberLong": "1684503360000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, { "_id": { "$oid": "6467baa3db8bd174db0b163b" }, "Messages": [ { "LanguageCode": "en", "Message": "Pre-order 10 Year Anniversary Merch!" }, - { - "LanguageCode": "fr", - "Message": "Précommandez la Collection de produits dérivés du 10e Anniversaire !" - }, + { "LanguageCode": "fr", "Message": "Précommandez la Collection de produits dérivés du 10e Anniversaire !" }, { "LanguageCode": "it", "Message": "Preordina il Merch per il 10° Anniversario!" }, { "LanguageCode": "de", "Message": "Bestellt die Merch-Kollektion zum 10. Jubiläum vor!" }, { "LanguageCode": "es", "Message": "¡Reserva los productos del 10° aniversario!" }, @@ -390,41 +235,6 @@ "Priority": false, "MobileOnly": false }, - { - "_id": { "$oid": "646e55122b97d301df08b65a" }, - "Messages": [{ "LanguageCode": "ja", "Message": "Devstream 第171回のお知らせ" }], - "Prop": "https://bit.ly/426QXR5", - "Date": { "$date": { "$numberLong": "1684952280000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/4e0d4b80256c0b05a5a9643664799beb.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "646e5cc6af17a161c20d79a4" }, - "Messages": [ - { "LanguageCode": "en", "Message": "Nora’s Mix Vol. 4 has begun" }, - { "LanguageCode": "fr", "Message": "Le Mix de Nora Vol. 4 est disponible" }, - { "LanguageCode": "it", "Message": "Mix di Nora Vol. 4 è iniziato" }, - { "LanguageCode": "de", "Message": "Noras Mix - Vol. 4 hat begonnen" }, - { "LanguageCode": "es", "Message": "Comenzó el Mix de Nora Vol. 4" }, - { "LanguageCode": "pt", "Message": "O Mix da Nora Vol. 4 começou" }, - { "LanguageCode": "ru", "Message": "Микс Норы: Диск 4 уже в начался" }, - { "LanguageCode": "pl", "Message": "Składanka Nory cz. 4 już dostępna" }, - { "LanguageCode": "uk", "Message": "Вибірка Нори 4 уже в грі" }, - { "LanguageCode": "tr", "Message": "Nora'nın Derlemesi - 4. Seri şimdi sizlerle" }, - { "LanguageCode": "ja", "Message": "Nora's Mix Vol.4 開催!" }, - { "LanguageCode": "zh", "Message": "《Nora 的混选 Vol. 4》现已开始!" }, - { "LanguageCode": "ko", "Message": "노라의 믹스 Vol. 4가 시작되었습니다" }, - { "LanguageCode": "tc", "Message": "Nora 合輯 VI 已登場" } - ], - "Prop": "https://www.warframe.com/news/noras-mix-vol-4?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-NightwaveVol4Launch", - "Date": { "$date": { "$numberLong": "1684953960000" } }, - "EventStartDate": { "$date": { "$numberLong": "1684951200000" } }, - "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/42721390b8812fe65296ce5eee7d862_1600x900.png", - "Priority": false, - "MobileOnly": false - }, { "_id": { "$oid": "646e6a4cf16914573401c77b" }, "Messages": [{ "LanguageCode": "tr", "Message": "Nora’nın Derlemesi - 3. Seri Tamamlandı + 4. Seri Sizlerle!" }], @@ -435,273 +245,667 @@ "Community": true }, { - "_id": { "$oid": "646fbefdeaa2199bc406b117" }, - "Messages": [{ "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.11 + Revisión 33.0.12" }], - "Prop": "https://forums.warframe.com/topic/1354406-la-paradoja-de-duviri-revisi%C3%B3n-33011-revisi%C3%B3n-33012/", - "Date": { "$date": { "$numberLong": "1685044920000" } }, + "_id": { "$oid": "648b4a319960e4f3f507aafb" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Submit your cover of 'We All Lift Together'!" }, + { "LanguageCode": "fr", "Message": "Soumettez votre reprise de \"We All Lift Together\" !" }, + { "LanguageCode": "it", "Message": "Invia la tua cover di 'We All Lift Together'!" }, + { "LanguageCode": "de", "Message": "Reicht eure Cover-Version von 'We All Lift Together' ein!" }, + { "LanguageCode": "es", "Message": "¡Envía tu cover de \"We All Lift Together\"!" }, + { "LanguageCode": "pt", "Message": "Envie a sua versão cover de ''We All Lift Together''!" }, + { "LanguageCode": "ru", "Message": "Отправьте свой кавер на песню «We All Lift Together»!" }, + { "LanguageCode": "pl", "Message": "Prześlij swój cover utworu \"We All Lift Together\"!" }, + { "LanguageCode": "tr", "Message": "We All Lift Together' şarkısı aranjmanını gönder!" }, + { "LanguageCode": "ja", "Message": "「We All Lift Together」のカバー曲を投稿しよう!" }, + { "LanguageCode": "zh", "Message": "提交你对《我们共度时艰》的二次创作!" }, + { "LanguageCode": "ko", "Message": "여러분만의 버전으로 부른 'We All Lift Together' 커버곡을 응모해주세요!" }, + { "LanguageCode": "tc", "Message": "提交你的「我們共舉時艱」二次創作!" } + ], + "Prop": "https://forms.gle/cCdQFq1dkutnQmXu5", + "Date": { "$date": { "$numberLong": "1686849540000" } }, + "EventStartDate": { "$date": { "$numberLong": "1686801600000" } }, + "EventEndDate": { "$date": { "$numberLong": "1689393600000" } }, "Priority": false, "MobileOnly": false, - "Community": true + "GameOnly": true }, { - "_id": { "$oid": "6471f7ad49b3f286420543a4" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #171 : version FR" }], - "Prop": "https://forums.warframe.com/topic/1354587-r%C3%A9sum%C3%A9-devstream-171-version-fr/", - "Date": { "$date": { "$numberLong": "1685190540000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.3fa3bb18a3cd29a7ee623ec88bf72429.png", + "_id": { "$oid": "648c4202bc8c61a6f2063075" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Надішліть свій переспів «We All Life Together»" }], + "Prop": "https://forms.gle/cCdQFq1dkutnQmXu5", + "Date": { "$date": { "$numberLong": "1686913380000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.527ab75a6e11c92d58cd8e26c0fbea5c.png", "Priority": false, "MobileOnly": false }, { - "_id": { "$oid": "6475055203028af6f5076925" }, - "Messages": [{ "LanguageCode": "en", "Message": "The Duviri Paradox: Hotfix 33.0.14" }], - "Prop": "https://www.warframe.com/updates/pc/33-0-14", - "Date": { "$date": { "$numberLong": "1685387100000" } }, - "Priority": true, - "MobileOnly": false - }, - { - "_id": { "$oid": "64751514ef6fa74efd0b624e" }, - "Messages": [{ "LanguageCode": "en", "Message": " PSA: Hotfix pause until The 7 Crimes of Kullervo Update" }], - "Prop": "https://forums.warframe.com/topic/1355007-psa-hotfixing-paused-until-the-7-crimes-of-kullervo/", - "Date": { "$date": { "$numberLong": "1685394600000" } }, - "Priority": true, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "647516f0fefde43d790ad0ed" }, - "Messages": [{ "LanguageCode": "en", "Message": "Coming Soon: Prime Time #352!" }], - "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", - "Date": { "$date": { "$numberLong": "1685395080000" } }, - "EventStartDate": { "$date": { "$numberLong": "1685656800000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685664000000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframe/", + "_id": { "$oid": "64931f8ca8ed97840d05728a" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Notes : Les 7 Crimes de Kullervo" }], + "Prop": "https://forums.warframe.com/topic/1357229-mise-%C3%A0-jour-335%C2%A0-les-sept-crimes-de-kullervo/", + "Date": { "$date": { "$numberLong": "1687363260000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/77b1a0663839e804bedd36ba71e0147a.png", "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "6475175603028af6f50769e3" }, - "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: Community Stream Schedule May 29 to June 2!" }], - "Prop": "https://forums.warframe.com/topic/1355012-community-stream-schedule-may-29-june-2/?utm_medium=in-game&utm_source=in-game&utm_campaign=2023-05-Community-Streams-29", - "Date": { "$date": { "$numberLong": "1685395200000" } }, + "_id": { "$oid": "64932af048a7518e5801b9a3" }, + "Messages": [{ "LanguageCode": "en", "Message": "PSA: Known Issues - The Seven Crimes of Kullervo" }], + "Prop": "https://forums.warframe.com/topic/1357249-psa-the-seven-crimes-of-kullervo-known-issues-thread/?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1687366320000" } }, "Priority": false, "MobileOnly": false, "Community": true }, { - "_id": { "$oid": "6475ddac402fe7be5c0f0efb" }, - "Messages": [{ "LanguageCode": "ja", "Message": "5月29日~6月2日の配信スケジュール" }], - "Prop": "https://bit.ly/43eU1f4", - "Date": { "$date": { "$numberLong": "1685446020000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "647624dc351728a45207bd67" }, - "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: Programa de streams de la comunidad" }], - "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", - "Date": { "$date": { "$numberLong": "1685464200000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - }, - { - "_id": { "$oid": "6476250bedcc8797810215de" }, - "Messages": [{ "LanguageCode": "es", "Message": "¡Emisión Tenno con sorteo de Hildryn Prime Access + Twitch Drop!" }], - "Prop": "https://forums.warframe.com/topic/1355104-programa-de-streams-y-twitch-drops-29-de-mayo-2-de-junio/", - "Date": { "$date": { "$numberLong": "1685464260000" } }, - "EventStartDate": { "$date": { "$numberLong": "1685559600000" } }, - "EventEndDate": { "$date": { "$numberLong": "1685563200000" } }, - "EventLiveUrl": "https://www.twitch.tv/warframeinternational", - "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/uploads/1c2a55a07ef0fcf121b6b4633b92c060.jpg", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "647632c88f764656130e1824" }, - "Messages": [{ "LanguageCode": "fr", "Message": "Streams : 29 mai - 2 juin" }], - "Prop": "https://forums.warframe.com/topic/1355110-streams-communautaires-29-mai-2-juin/", - "Date": { "$date": { "$numberLong": "1685467800000" } }, - "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_05/image.png.eb417555a2adffbc4be60fb4548694f0.png", - "Priority": false, - "MobileOnly": false - }, - { - "_id": { "$oid": "64764bd4931e7ae47f0d1a60" }, - "Messages": [{ "LanguageCode": "es", "Message": "La Paradoja de Duviri: Revisión 33.0.13 + Revisión 33.0.14" }], - "Prop": "https://forums.warframe.com/topic/1355129-la-paradoja-de-duviri-revisi%C3%B3n-33013-revisi%C3%B3n-33014/", - "Date": { "$date": { "$numberLong": "1685474220000" } }, - "Priority": false, - "MobileOnly": false, - "Community": true - } - ], - "Goals": [ - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1684512000000" } }, - "Expiry": { "$date": { "$numberLong": "1685721600000" } }, - "Node": "SolNode129", - "ScoreVar": "FissuresClosed", - "ScoreLocTag": "/Lotus/Language/G1Quests/HeatFissuresEventScore", - "Count": 24, - "HealthPct": 0.24, - "Regions": [1], - "Desc": "/Lotus/Language/G1Quests/HeatFissuresEventName", - "ToolTip": "/Lotus/Language/G1Quests/HeatFissuresEventDesc", - "OptionalInMission": true, - "Tag": "HeatFissure", - "UpgradeIds": [{ "$oid": "64667809d9c6963e382d9546" }, { "$oid": "64667809d9c6963e382d9547" }], - "Personal": true, - "Community": true, - "Goal": 100, - "Reward": { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Weapons/Corpus/LongGuns/CrpBFG/Vandal/VandalCrpBFG"], - "countedItems": [] - }, - "InterimGoals": [5, 25, 50, 75], - "InterimRewards": [ + "_id": { "$oid": "649332b411f8afb670001c2d" }, + "Messages": [{ "LanguageCode": "ko", "Message": "업데이트 33.5: 쿨레르보의 일곱 가지 죄" }], + "Prop": "", + "Links": [ { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Skins/Clan/OrbBadgeItem"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Shotgun/ShotgunMedicMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Rifle/SerratedRushMod"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Mods/DualSource/Pistol/MultishotDodgeMod", "/Lotus/StoreItems/Upgrades/Mods/DualSource/Melee/CritDamageChargeSpeedMod"], - "countedItems": [] - }, - { - "credits": 0, - "xp": 0, - "items": ["/Lotus/StoreItems/Upgrades/Skins/Sigils/OrbSigil"], - "countedItems": [] + "LanguageCode": "ko", + "Link": "https://forums.warframe.com/topic/1357281-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-335-%EC%BF%A8%EB%A0%88%EB%A5%B4%EB%B3%B4%EC%9D%98-%EC%9D%BC%EA%B3%B1-%EA%B0%80%EC%A7%80-%EC%A3%84/" } - ] + ], + "Date": { "$date": { "$numberLong": "1687368300000" } }, + "Priority": false, + "MobileOnly": false }, { - "_id": { "$oid": "64663a0c0483e3f5b70ff0b2" }, - "Activation": { "$date": { "$numberLong": "1684508400000" } }, - "Expiry": { "$date": { "$numberLong": "1685717940000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode27", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2018D", - "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", - "Tag": "Anniversary2018TacAlert", - "Reward": { - "items": ["/Lotus/StoreItems/Upgrades/Skins/Scarves/DexScarf", "/Lotus/StoreItems/Types/Game/CatbrowPet/CatbrowGeneticSignature"] - } + "_id": { "$oid": "6493614fa93624418f0e5380" }, + "Messages": [{ "LanguageCode": "es", "Message": "Actualización 33.5: Los Siete Crímenes de Kullervo" }], + "Prop": "https://forums.warframe.com/topic/1357383-actualizaci%C3%B3n-335-los-siete-cr%C3%ADmenes-de-kullervo/", + "Date": { "$date": { "$numberLong": "1687380240000" } }, + "Priority": false, + "MobileOnly": false }, { - "_id": { "$oid": "64663a3c866d9fe65c012364" }, - "Activation": { "$date": { "$numberLong": "1684508400000" } }, - "Expiry": { "$date": { "$numberLong": "1685717940000" } }, - "Count": 0, - "Goal": 1, - "Success": 0, - "Personal": true, - "ClampNodeScores": true, - "Node": "EventNode24", - "MissionKeyName": "/Lotus/Types/Keys/TacAlertKeyAnniversary2023k", - "Desc": "/Lotus/Language/G1Quests/Anniversary2017MissionTitle", - "Icon": "/Lotus/Interface/Icons/Player/GlyphLotus10Anniversary.png", - "Tag": "Anniversary2018TacAlert", - "Reward": { - "items": ["/Lotus/StoreItems/Upgrades/Skins/Wisp/DexWispSkin", "/Lotus/StoreItems/Types/StoreItems/SlotItems/TwoSentinelSlotItem"] - } + "_id": { "$oid": "64936b6d66571ada400474c0" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Оновлення 33.5: Сім злочинів Куллерво" }], + "Prop": "https://forums.warframe.com/topic/1357411-%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-335-%D1%81%D1%96%D0%BC-%D0%B7%D0%BB%D0%BE%D1%87%D0%B8%D0%BD%D1%96%D0%B2-%D0%BA%D1%83%D0%BB%D0%BB%D0%B5%D1%80%D0%B2%D0%BE/", + "Date": { "$date": { "$numberLong": "1687382820000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/77b1a0663839e804bedd36ba71e0147a.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649c87e59da048ca2202161a" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Drops Twitch : campagne des 10 ans" }], + "Prop": "https://forums.warframe.com/topic/1358811-drops-twitch-campagne-du-10e-anniversaire-%C3%A0-partir-du-1er-juillet-%C3%A0-9h-he/", + "Date": { "$date": { "$numberLong": "1687979940000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649c8f594706538b1002f50b" }, + "Messages": [{ "LanguageCode": "tr", "Message": "Twitch Dropları: 10. Yıl Dönümü Kampanyası, 1 Temmuz TSİ 16:00'da başlıyor!" }], + "Prop": "https://forums.warframe.com/topic/1358816-twitch-droplar%C4%B1-10-y%C4%B1l-d%C3%B6n%C3%BCm%C3%BC-kampanyas%C4%B1-1-temmuz-tsi%CC%87-1600da-ba%C5%9Fl%C4%B1yor/", + "Date": { "$date": { "$numberLong": "1687981740000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649c95a6afb787b1360ce40e" }, + "Messages": [{ "LanguageCode": "ja", "Message": "10周年記念Twitchキャンペーン! " }], + "Prop": "https://bit.ly/3CREpmc", + "Date": { "$date": { "$numberLong": "1687983420000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.b3a0a9eb925dba65d3fa345689293aff.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649db9a52021d217f20e64dc" }, + "Messages": [ + { "LanguageCode": "en", "Message": "The Summer Mega Sale is now live!" }, + { "LanguageCode": "fr", "Message": "Les méga soldes d'été sont maintenant disponibles !" }, + { "LanguageCode": "it", "Message": "Le Mega-Offerte Estive sono ora disponibili!" }, + { "LanguageCode": "de", "Message": "Die Warframe Sommer Mega-Rabatte sind jetzt live!" }, + { "LanguageCode": "es", "Message": "¡La megaoferta de verano ya está disponible!" }, + { "LanguageCode": "pt", "Message": "A Mega Promoção de Verão já está disponível!" }, + { "LanguageCode": "ru", "Message": "Летняя мега-распродажа началась!" }, + { "LanguageCode": "pl", "Message": "Letnia Wyprzedaż już dostępna!" }, + { "LanguageCode": "uk", "Message": "Літній розпродаж у Warframe уже розпочався!" }, + { "LanguageCode": "tr", "Message": "Mega Yaz İndirimi şimdi sizlerle!" }, + { "LanguageCode": "ja", "Message": "夏のメガセールが開催中!" }, + { "LanguageCode": "zh", "Message": "夏季大促销已上线!" }, + { "LanguageCode": "ko", "Message": "여름 폭탄 세일을 지금 만나보세요!" }, + { "LanguageCode": "tc", "Message": "夏季超級特賣現已登場!" } + ], + "Prop": "https://www.warframe.com/news/warframe-summer-mega-sale?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688058000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e350d7dd6952975b050b24c21fd397eb_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649dbd9d3448be0aa107c931" }, + "Messages": [{ "LanguageCode": "es", "Message": "Los Siete Crímenes de Kullervo: Revisión 33.5.3 + Revisión 33.5.4" }], + "Prop": "https://forums.warframe.com/topic/1358928-los-siete-cr%C3%ADmenes-de-kullervo-revisi%C3%B3n-3353-revisi%C3%B3n-3354/", + "Date": { "$date": { "$numberLong": "1688059260000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649dd1e36230bdfdfd04fc12" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Recall: Ten-Zero begins July 19" }, + { "LanguageCode": "fr", "Message": "Le Rappel : Ten-Zero commence le 19 juillet" }, + { "LanguageCode": "it", "Message": "La Rievocazione: Ten-Zero inizia il 19 Luglio" }, + { "LanguageCode": "de", "Message": "\"Rückruf: Ten-Zero\" beginnt am 19. Juli" }, + { "LanguageCode": "es", "Message": "El Recuerdo: Diez-Cero comienza el 19 de julio" }, + { "LanguageCode": "pt", "Message": "A Reiteração: 10-0 começa no dia 19 de julho" }, + { "LanguageCode": "ru", "Message": "«Воспоминания: Десять-ноль» начинаются 19 июля" }, + { "LanguageCode": "pl", "Message": "Powrót: Ten-Zero wraca 19 lipca" }, + { "LanguageCode": "uk", "Message": "«Спогад: 10-0» — із 19 липня" }, + { "LanguageCode": "tr", "Message": "Geri Dönüş: Ten-Zero, 19 Temmuz'da başlıyor" }, + { "LanguageCode": "ja", "Message": "リコール:Ten-Zeroが7月20日から開幕" }, + { "LanguageCode": "zh", "Message": "「召回:10-0」将于美东夏令时间 7 月 19 日推出" }, + { "LanguageCode": "ko", "Message": "회상: 10-0가 북미 시각 7월 19일에 시작됩니다" }, + { "LanguageCode": "tc", "Message": "「召回:10-0」從 7 月 19 日開始" } + ], + "Prop": "", + "Links": [ + { "LanguageCode": "en", "Link": "https://www.warframe.com/news/recall-ten-zero" }, + { "LanguageCode": "fr", "Link": "https://www.warframe.com/fr/news/recall-ten-zero" }, + { "LanguageCode": "it", "Link": "https://www.warframe.com/it/news/recall-ten-zero" }, + { "LanguageCode": "de", "Link": "https://www.warframe.com/de/news/recall-ten-zero" }, + { "LanguageCode": "es", "Link": "https://www.warframe.com/es/news/recall-ten-zero" }, + { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/news/recall-ten-zero" }, + { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/news/recall-ten-zero" }, + { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/news/recall-ten-zero" }, + { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/news/recall-ten-zero" }, + { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/news/recall-ten-zero" }, + { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/news/recall-ten-zero" }, + { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/news/recall-ten-zero" }, + { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/news/recall-ten-zero" }, + { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/news/recall-ten-zero" } + ], + "Date": { "$date": { "$numberLong": "1688061120000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688011200000" } }, + "ImageUrl": "https://n9e5v4d8.ssl.hwcdn.net/images/promo/anniversary/tenyears/masthead-keyart.jpg", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649ddf316230bdfdfd04fe07" }, + "Messages": [{ "LanguageCode": "en", "Message": "TennoCon Livestream Schedule" }], + "Prop": "https://www.warframe.com/news/tennocon-2023-schedule-revealed", + "Date": { "$date": { "$numberLong": "1688067780000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688011200000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/bfb40fef22a8110c690e49459bb3ba41_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "649ef1dc87ca60af0e0071a9" }, + "Messages": [{ "LanguageCode": "fr", "Message": "Résumé Devstream #172" }], + "Prop": "https://forums.warframe.com/topic/1358985-r%C3%A9sum%C3%A9-devstream-172-version-fr/", + "Date": { "$date": { "$numberLong": "1688138100000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/e32ae5312b58b8d47c91aa20528f62df_1600x900.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "649f0b25bcf880cade0fdb85" }, + "Messages": [{ "LanguageCode": "en", "Message": "Twitch Drops: 10 Year Anniversary Campaign!" }], + "Prop": "https://forums.warframe.com/topic/1358802-twitch-drops-10-year-anniversary-campaign-starting-july-1st-9am-et/?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688144520000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EventEndDate": { "$date": { "$numberLong": "1690030800000" } }, + "EventLiveUrl": "https://forums.warframe.com/topic/1358802-twitch-drops-10-year-anniversary-campaign-starting-july-1st-9am-et/?utm_medium=in-game&utm_source=in-game", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a3243ea597a863880a0362" }, + "Messages": [{ "LanguageCode": "es", "Message": "Twitch Drops: ¡Campaña del 10º aniversario de Warframe!" }], + "Prop": "https://forums.warframe.com/topic/1359351-twitch-drops-%C2%A1campa%C3%B1a-de-aniversario-de-10-a%C3%B1os-a-partir-del-1-de-julio-a-las-9-a-m-et/", + "Date": { "$date": { "$numberLong": "1688413140000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EventEndDate": { "$date": { "$numberLong": "1690030800000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a3338a35b3be7f8c093585" }, + "Messages": [{ "LanguageCode": "en", "Message": "July Community Stream Schedule " }], + "Prop": "https://forums.warframe.com/topic/1359355-community-stream-schedule-july-3-20th/?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688417100000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a33c11f6aa71b88501f6dc" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Предмети з Twitch Drop: кампанія до 10-річчя." }], + "Prop": "https://forums.warframe.com/topic/1359358-%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%B8-%D0%B7-twitch-drop-%D0%BA%D0%B0%D0%BC%D0%BF%D0%B0%D0%BD%D1%96%D1%8F-%D0%B4%D0%BE-10-%D1%80%D1%96%D1%87%D1%87%D1%8F-%D0%B7-1-%D0%BB%D0%B8%D0%BF%D0%BD%D1%8F-1600-%D0%B7%D0%B0-%D0%BA%D0%B8%D1%97%D0%B2%D1%81%D1%8C%D0%BA%D0%B8%D0%BC-%D1%87%D0%B0%D1%81%D0%BE%D0%BC/", + "Date": { "$date": { "$numberLong": "1688419260000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.b3a0a9eb925dba65d3fa345689293aff.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a3866532a2ec5e600aeb0a" }, + "Messages": [{ "LanguageCode": "ja", "Message": "7月3日~7月20日の配信スケジュール" }], + "Prop": "https://bit.ly/46MfONF", + "Date": { "$date": { "$numberLong": "1688438220000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.png.6a687cc14b5bcf6ec16d67babd5d9331.png", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a4016f670fa8a76f08f43b" }, + "Messages": [{ "LanguageCode": "uk", "Message": "Трансляції від спільноти: 3 — 20 липня!" }], + "Prop": "https://forums.warframe.com/topic/1359408-%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D1%96%D1%97-%D0%B2%D1%96%D0%B4-%D1%81%D0%BF%D1%96%D0%BB%D1%8C%D0%BD%D0%BE%D1%82%D0%B8-3-%E2%80%94-20-%D0%BB%D0%B8%D0%BF%D0%BD%D1%8F/", + "Date": { "$date": { "$numberLong": "1688469840000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2023_06/image.thumb.png.79e9944db3a2d2c9ce9fcc88f2129ae3.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a709a2dd0a98de5402437c" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Now Available: Banshee Prime & Mirage Prime" }, + { "LanguageCode": "fr", "Message": "Maintenant disponibles : Banshee Prime et Mirage Prime" }, + { "LanguageCode": "it", "Message": "Ora Disponibili: Banshee Prime e Mirage Prime" }, + { "LanguageCode": "de", "Message": "Jetzt erhältlich: Banshee Prime und Mirage Prime" }, + { "LanguageCode": "es", "Message": "Ya disponible: Banshee Prime y Mirage Prime" }, + { "LanguageCode": "pt", "Message": "Já Disponível: Banshee Prime e Mirage Prime" }, + { "LanguageCode": "ru", "Message": "Уже доступны: Банши Прайм и Мираж Прайм" }, + { "LanguageCode": "pl", "Message": "Już dostępne: Banshee Prime i Mirage Prime" }, + { "LanguageCode": "uk", "Message": "Уже доступні: Банші-прайм і Міраж-прайм" }, + { "LanguageCode": "tr", "Message": "Şimdi Sizlerle: Banshee Prime ve Mirage Prime" }, + { "LanguageCode": "ja", "Message": "Banshee PrimeとMirage Primeをゲットしよう" }, + { "LanguageCode": "zh", "Message": "现已登场:Banshee Prime 和 Mirage Prime" }, + { "LanguageCode": "ko", "Message": "지금 만나보세요: 밴쉬 프라임 및 미라지 프라임" }, + { "LanguageCode": "tc", "Message": "現已登場:Banshee Prime 以及 Mirage Prime" } + ], + "Prop": "", + "Links": [ + { "LanguageCode": "en", "Link": "https://www.warframe.com/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "fr", "Link": "https://www.warframe.com//fre/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "it", "Link": "https://www.warframe.com/it/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "de", "Link": "https://www.warframe.com/de/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "es", "Link": "https://www.warframe.com/es/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "pt", "Link": "https://www.warframe.com/pt-br/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "ru", "Link": "https://www.warframe.com/ru/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "pl", "Link": "https://www.warframe.com/pl/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "uk", "Link": "https://www.warframe.com/uk/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "tr", "Link": "https://www.warframe.com/tr/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "ja", "Link": "https://www.warframe.com/ja/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "zh", "Link": "https://www.warframe.com/zh-hans/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "ko", "Link": "https://www.warframe.com/ko/prime-resurgence?utm_medium=in-game&utm_source=in-game" }, + { "LanguageCode": "tc", "Link": "https://www.warframe.com/zh-hant/prime-resurgence?utm_medium=in-game&utm_source=in-game" } + ], + "Date": { "$date": { "$numberLong": "1688667360000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/cf6e94b58b0e6f4166e9f5d9a50842a8_800x450.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a70e1b7d879cc23f092b4a" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Get the Kronen Iridos Weapon Bundle" }, + { "LanguageCode": "fr", "Message": "Obtenez le Bundle d'arme Kronen Iridos" }, + { "LanguageCode": "it", "Message": "Ottieni il Pacchetto Arma Kronen Iridos" }, + { "LanguageCode": "de", "Message": "Holt euch das Waffen-Paket: Kronen Iridos" }, + { "LanguageCode": "es", "Message": "Obtén el Paquete de arma Kronen Iridos" }, + { "LanguageCode": "pt", "Message": "Obtenha o Conjunto da Arma Kronen Iridos" }, + { "LanguageCode": "pl", "Message": "Zdobądź zestaw broni: Kronen Iridos" }, + { "LanguageCode": "uk", "Message": "Отримайте комплект «Іридій» для Кронена" }, + { "LanguageCode": "tr", "Message": "Kronen Iridos Silah Paketini Al" }, + { "LanguageCode": "ja", "Message": "Kronen Iridos武器バンドルをゲット" } + ], + "Prop": "https://www.warframe.com/news/prime-gaming-iridos-collection?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688669160000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688666400000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/1e27d24da6fdef2db2c316b2bf31cfc2_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a718d5d0f273eec4094531" }, + "Messages": [{ "LanguageCode": "ja", "Message": "[重要]エンドユーザー使用許諾契約が改定されます" }], + "Prop": "https://bit.ly/46OHtxo", + "Date": { "$date": { "$numberLong": "1688672400000" } }, + "ImageUrl": "https://content.invisioncic.com/Mwarframe/monthly_2021_01/Wiki-background.thumb.jpg.f568775e1b4eab008c7c6d3802c942aa.jpg", + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a82148f306ef37280e6ac7" }, + "Messages": [{ "LanguageCode": "en", "Message": "The Seven Crimes of Kullervo: Hotfix 33.5.6" }], + "Prop": "https://www.warframe.com/updates/pc/33-5-6", + "Date": { "$date": { "$numberLong": "1688740140000" } }, + "Priority": true, + "MobileOnly": false + }, + { + "_id": { "$oid": "64a837164f857f32740d8bf2" }, + "Messages": [{ "LanguageCode": "es", "Message": "Los Siete Crímenes de Kullervo: Revisión 33.5.5 + Revisión 33.5.6" }], + "Prop": "https://forums.warframe.com/topic/1359741-los-siete-cr%C3%ADmenes-de-kullervo-revisi%C3%B3n-3355-revisi%C3%B3n-3356/", + "Date": { "$date": { "$numberLong": "1688745660000" } }, + "Priority": false, + "MobileOnly": false, + "Community": true + }, + { + "_id": { "$oid": "64a84e66280dd26c2c0efa87" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Hildryn Prime Access Ending Soon" }, + { "LanguageCode": "fr", "Message": "Le Prime Access Hildryn Prime se termine bientôt" }, + { "LanguageCode": "it", "Message": "L'Accesso Hildryn Prime Terminerà Presto" }, + { "LanguageCode": "de", "Message": "Hildryn Prime Access endet bald" }, + { "LanguageCode": "es", "Message": "Prime Access de Hildryn está por terminar" }, + { "LanguageCode": "pt", "Message": "O Prime Access da Hildryn Prime terminará em breve" }, + { "LanguageCode": "ru", "Message": "Доступ Хильдрин Прайм скоро закончится" }, + { "LanguageCode": "pl", "Message": "Hildryn Prime Access wkrótce się skończy" }, + { "LanguageCode": "uk", "Message": "Доступ до Гільдрини-прайм невдовзі завершується" }, + { "LanguageCode": "tr", "Message": "Hildryn Prime Access Yakında Sona Eriyor" }, + { "LanguageCode": "ja", "Message": "Hildryn Prime Accessが近日終了" }, + { "LanguageCode": "zh", "Message": "Hildryn Prime Access 即将结束" }, + { "LanguageCode": "ko", "Message": "힐드린 프라임 액세스가 곧 종료됩니다" }, + { "LanguageCode": "tc", "Message": "Hildryn Prime Access 即將結束" } + ], + "Prop": "https://www.warframe.com/news/hildryn-prime-access?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688751300000" } }, + "EventEndDate": { "$date": { "$numberLong": "1690344000000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/8260dab07e051d35bcef1a2a82c22965_1600x900.png", + "Priority": false, + "MobileOnly": false + }, + { + "_id": { "$oid": "64ac2714c715cfb44009da9b" }, + "Messages": [ + { "LanguageCode": "en", "Message": "Alienware Arena Giveaways!" }, + { "LanguageCode": "fr", "Message": "Giveaway Alienware Arena !" }, + { "LanguageCode": "it", "Message": "Giveaway Alienware Arena!" }, + { "LanguageCode": "de", "Message": "Alienware Arena Giveaways!" }, + { "LanguageCode": "es", "Message": "¡Sorteo de Alienware Arena!" }, + { "LanguageCode": "pt", "Message": "Brindes e Sorteio da Alienware Arena!" }, + { "LanguageCode": "ru", "Message": "Розыгрыши Alienware Arena!" }, + { "LanguageCode": "pl", "Message": "Rozdanie Alienware Arena!" }, + { "LanguageCode": "uk", "Message": "Розіграші від Alienware Arena!" }, + { "LanguageCode": "tr", "Message": "Alienware Arena Çekilişleri!" }, + { "LanguageCode": "ja", "Message": "Alienware Arenaプレゼントキャンペーン!" }, + { "LanguageCode": "zh", "Message": "Alienware Arena 赠礼!" }, + { "LanguageCode": "ko", "Message": "Alienware Arena 경품 행사!" }, + { "LanguageCode": "tc", "Message": "Alienware Arena 贈禮!" } + ], + "Prop": "https://www.warframe.com/news/alienware-arena-giveaways?utm_medium=in-game&utm_source=in-game", + "Date": { "$date": { "$numberLong": "1688997120000" } }, + "EventStartDate": { "$date": { "$numberLong": "1688997600000" } }, + "ImageUrl": "https://warframe-web-assets.nyc3.cdn.digitaloceanspaces.com/uploads/thumbnails/604ecbcc3704d5ef4d7fa585f31f29f9_1600x900.png", + "Priority": false, + "MobileOnly": false } ], + "Goals": [], "Alerts": [], "Sorties": [ { - "_id": { "$oid": "64776b7eba82e08c76d6cb9b" }, - "Activation": { "$date": { "$numberLong": "1685548800000" } }, - "Expiry": { "$date": { "$numberLong": "1685635200000" } }, + "_id": { "$oid": "64ac277ee0be1ec801ded16b" }, + "Activation": { "$date": { "$numberLong": "1689004800000" } }, + "Expiry": { "$date": { "$numberLong": "1689091200000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", - "Seed": 28971, - "Boss": "SORTIE_BOSS_ALAD", + "Seed": 58490, + "Boss": "SORTIE_BOSS_HYENA", "ExtraDrops": [], "Variants": [ - { - "missionType": "MT_MOBILE_DEFENSE", - "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", - "node": "SolNode53", - "tileset": "CorpusGasCityTileset" - }, - { - "missionType": "MT_RESCUE", - "modifierType": "SORTIE_MODIFIER_IMPACT", - "node": "SolNode107", - "tileset": "CorpusOutpostTileset" - }, - { - "missionType": "MT_EXTERMINATION", - "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", - "node": "SolNode304", - "tileset": "OrokinMoonTilesetCorpus" - } + { "missionType": "MT_RESCUE", "modifierType": "SORTIE_MODIFIER_SLASH", "node": "SolNode6", "tileset": "CorpusOutpostTileset" }, + { "missionType": "MT_INTEL", "modifierType": "SORTIE_MODIFIER_EXIMUS", "node": "SolNode215", "tileset": "CorpusShipTileset" }, + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode102", "tileset": "CorpusShipTileset" } ], "Twitter": true + }, + { + "_id": { "$oid": "64ad78fdfcacab999d728e66" }, + "Activation": { "$date": { "$numberLong": "1689091200000" } }, + "Expiry": { "$date": { "$numberLong": "1689177600000" } }, + "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", + "Seed": 58954, + "Boss": "SORTIE_BOSS_CORRUPTED_VOR", + "ExtraDrops": [], + "Variants": [ + { "missionType": "MT_TERRITORY", "modifierType": "SORTIE_MODIFIER_LOW_ENERGY", "node": "SolNode404", "tileset": "OrokinVoidTileset" }, + { "missionType": "MT_EXTERMINATION", "modifierType": "SORTIE_MODIFIER_FREEZE", "node": "SolNode407", "tileset": "OrokinVoidTileset" }, + { "missionType": "MT_MOBILE_DEFENSE", "modifierType": "SORTIE_MODIFIER_HAZARD_RADIATION", "node": "SolNode408", "tileset": "OrokinVoidTileset" } + ] } ], "LiteSorties": [ { - "_id": { "$oid": "6473e77dfff198b17e47812d" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, + "_id": { "$oid": "64ab467d8122f2d5a857b947" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", - "Seed": 62757, + "Seed": 67504, "Boss": "SORTIE_BOSS_AMAR", "Missions": [ - { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode30" }, - { "missionType": "MT_EXCAVATE", "node": "SolNode11" }, + { "missionType": "MT_MOBILE_DEFENSE", "node": "SolNode11" }, + { "missionType": "MT_EXCAVATE", "node": "SolNode45" }, { "missionType": "MT_ASSASSINATION", "node": "SolNode99" } ] } ], "SyndicateMissions": [ { - "_id": { "$oid": "64775ff00000000000000002" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ac2ac5e63fe1ba9ba984b6" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "ArbitersSyndicate", + "Seed": 58490, + "Nodes": ["SolNode107", "SolNode89", "SolNode147", "SolNode130", "SolNode171", "SolNode4", "SolNode1"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984b8" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "NecraloidSyndicate", + "Seed": 61357, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac5e63fe1ba9ba984b7" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "CephalonSudaSyndicate", + "Seed": 62817, + "Nodes": ["SolNode36", "SolNode101", "SolNode79", "SolNode103", "SolNode122", "SolNode93", "SolNode137"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984ba" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "KahlSyndicate", + "Seed": 63524, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984b9" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "EventSyndicate", + "Seed": 8133, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bc" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "QuillsSyndicate", + "Seed": 25301, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bb" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "NewLokaSyndicate", + "Seed": 58704, + "Nodes": ["SolNode109", "SolNode224", "SolNode139", "SolNode63", "SolNode74", "SolNode19", "SolNode211"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bd" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "PerrinSyndicate", + "Seed": 41057, + "Nodes": ["SolNode14", "SolNode85", "SettlementNode1", "SolNode42", "SolNode128", "SolNode162", "SolNode119"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984be" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegion2Syndicate", + "Seed": 82961, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c3" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission5Syndicate", + "Seed": 25479, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c6" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission8Syndicate", + "Seed": 19817, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c0" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission2Syndicate", + "Seed": 80910, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c5" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission7Syndicate", + "Seed": 50640, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984bf" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegion3Syndicate", + "Seed": 47689, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c7" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermissionSyndicate", + "Seed": 38660, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c4" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission6Syndicate", + "Seed": 3659, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c1" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission3Syndicate", + "Seed": 65648, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c2" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionIntermission4Syndicate", + "Seed": 14558, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c8" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RadioLegionSyndicate", + "Seed": 97600, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984ca" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "VentKidsSyndicate", + "Seed": 64315, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984c9" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "RedVeilSyndicate", + "Seed": 5590, + "Nodes": ["SolNode226", "SolNode61", "SolNode710", "SolNode25", "SolNode217", "SettlementNode11", "SolNode70"] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984cb" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "VoxSyndicate", + "Seed": 18807, + "Nodes": [] + }, + { + "_id": { "$oid": "64ac2ac6e63fe1ba9ba984cc" }, + "Activation": { "$date": { "$numberLong": "1689004741892" } }, + "Expiry": { "$date": { "$numberLong": "1689091140000" } }, + "Tag": "SteelMeridianSyndicate", + "Seed": 41173, + "Nodes": ["SolNode59", "SolNode223", "SolNode23", "SolNode146", "SolNode189", "SolNode172", "SolNode402"] + }, + { + "_id": { "$oid": "64ad569e0000000000000002" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, "Tag": "EntratiSyndicate", - "Seed": 20831, + "Seed": 61243, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [5, 5, 5] + "xpAmounts": [6, 6, 6] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableARewards", "masteryReq": 1, "minEnemyLevel": 15, "maxEnemyLevel": 25, - "xpAmounts": [11, 11, 11] + "xpAmounts": [8, 8, 8] }, { "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", @@ -714,23 +918,23 @@ "xpAmounts": [14, 14, 14] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", - "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableBRewards", "masteryReq": 2, "minEnemyLevel": 30, "maxEnemyLevel": 40, - "xpAmounts": [19, 19, 19, 29] + "xpAmounts": [19, 19, 19, 28] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosExcavateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 3, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [20, 20, 20, 20, 39] + "xpAmounts": [21, 21, 21, 21, 41] }, { - "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAssassinateBounty", + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, @@ -767,56 +971,64 @@ ] }, { - "_id": { "$oid": "64775ff00000000000000022" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ad569e0000000000000026" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, + "Tag": "ZarimanSyndicate", + "Seed": 61244, + "Nodes": [] + }, + { + "_id": { "$oid": "64ad569e0000000000000022" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, "Tag": "SolarisSyndicate", - "Seed": 20831, + "Seed": 61243, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobCaches", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [350, 350, 350] + "xpAmounts": [420, 420, 420] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableARewards", "masteryReq": 1, "minEnemyLevel": 10, "maxEnemyLevel": 30, - "xpAmounts": [680, 680, 680] + "xpAmounts": [720, 720, 720] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobAssassinate", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [610, 610, 610, 890] + "xpAmounts": [590, 590, 590, 870] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobRecovery", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [580, 580, 580, 580, 1140] + "xpAmounts": [550, 550, 550, 550, 1090] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [680, 680, 680, 680, 1340] + "xpAmounts": [690, 690, 690, 690, 1350] }, { - "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobExcavation", - "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusPreservationJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -824,65 +1036,65 @@ }, { "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobExterminate", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", "masteryReq": 0, "minEnemyLevel": 50, "maxEnemyLevel": 70, - "xpAmounts": [760, 760, 760, 760, 1500] + "xpAmounts": [820, 820, 820, 820, 1610] } ] }, { - "_id": { "$oid": "64775ff00000000000000007" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ad569e0000000000000007" }, + "Activation": { "$date": { "$numberLong": "1689081502472" } }, + "Expiry": { "$date": { "$numberLong": "1689090501346" } }, "Tag": "CetusSyndicate", - "Seed": 20831, + "Seed": 61243, "Nodes": [], "Jobs": [ { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableARewards", "masteryReq": 0, "minEnemyLevel": 5, "maxEnemyLevel": 15, - "xpAmounts": [420, 420, 420] - }, - { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", - "masteryReq": 1, - "minEnemyLevel": 10, - "maxEnemyLevel": 30, - "xpAmounts": [690, 690, 690] + "xpAmounts": [360, 360, 360] }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableARewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [710, 710, 710] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableARewards", "masteryReq": 2, "minEnemyLevel": 20, "maxEnemyLevel": 40, - "xpAmounts": [590, 590, 590, 870] + "xpAmounts": [610, 610, 610, 900] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/RescueBountyResc", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableARewards", "masteryReq": 3, "minEnemyLevel": 30, "maxEnemyLevel": 50, - "xpAmounts": [550, 550, 550, 550, 1080] + "xpAmounts": [560, 560, 560, 560, 1090] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyLib", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 5, "minEnemyLevel": 40, "maxEnemyLevel": 60, - "xpAmounts": [690, 690, 690, 690, 1350] + "xpAmounts": [700, 700, 700, 700, 1380] }, { - "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/CaptureBountyCapTwo", - "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountySab", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableARewards", "masteryReq": 10, "minEnemyLevel": 100, "maxEnemyLevel": 100, @@ -890,6 +1102,159 @@ }, { "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableARewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [770, 770, 770, 770, 1510] + } + ] + }, + { + "_id": { "$oid": "64ad79c50000000000000002" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, + "Tag": "EntratiSyndicate", + "Seed": 47401, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [6, 6, 6] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosCrpSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierCTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 15, + "maxEnemyLevel": 25, + "xpAmounts": [10, 10, 10] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosEndlessPurifyBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierBTableARewards", + "masteryReq": 5, + "minEnemyLevel": 25, + "maxEnemyLevel": 30, + "endless": true, + "bonusXpMultiplier": 0.15000001, + "xpAmounts": [14, 14, 14] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosKeyPiecesBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierDTableARewards", + "masteryReq": 2, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [16, 16, 16, 25] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosAreaDefenseBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 3, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [20, 20, 20, 20, 40] + }, + { + "jobType": "/Lotus/Types/Gameplay/InfestedMicroplanet/Jobs/DeimosGrnSurvivorBounty", + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/TierETableARewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [25, 25, 25, 25, 50] + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierATableARewards", + "masteryReq": 5, + "minEnemyLevel": 30, + "maxEnemyLevel": 40, + "xpAmounts": [2, 2, 2, 4], + "locationTag": "ChamberB", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierBTableARewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 50, + "xpAmounts": [4, 4, 4, 5], + "locationTag": "ChamberA", + "isVault": true + }, + { + "rewards": "/Lotus/Types/Game/MissionDecks/DeimosMissionRewards/VaultBountyTierCTableARewards", + "masteryReq": 5, + "minEnemyLevel": 50, + "maxEnemyLevel": 60, + "xpAmounts": [5, 5, 5, 7], + "locationTag": "ChamberC", + "isVault": true + } + ] + }, + { + "_id": { "$oid": "64ad79c50000000000000007" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, + "Tag": "CetusSyndicate", + "Seed": 47401, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [490, 490, 490] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyTheft", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [700, 700, 700] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AttritionBountyExt", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [670, 670, 670, 980] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [630, 630, 630, 630, 1230] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/ReclamationBountyCache", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [680, 680, 680, 680, 1330] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/TierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Eidolon/Jobs/Narmer/AssassinateBountyAss", "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", "masteryReq": 0, "minEnemyLevel": 50, @@ -899,460 +1264,298 @@ ] }, { - "_id": { "$oid": "64775ff00000000000000026" }, - "Activation": { "$date": { "$numberLong": "1685544944674" } }, - "Expiry": { "$date": { "$numberLong": "1685553943548" } }, + "_id": { "$oid": "64ad79c50000000000000022" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, + "Tag": "SolarisSyndicate", + "Seed": 47401, + "Nodes": [], + "Jobs": [ + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusHelpingJobSpy", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierATableBRewards", + "masteryReq": 0, + "minEnemyLevel": 5, + "maxEnemyLevel": 15, + "xpAmounts": [400, 400, 400] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusTheftJobExcavation", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierBTableBRewards", + "masteryReq": 1, + "minEnemyLevel": 10, + "maxEnemyLevel": 30, + "xpAmounts": [710, 710, 710] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusWetworkJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierCTableBRewards", + "masteryReq": 2, + "minEnemyLevel": 20, + "maxEnemyLevel": 40, + "xpAmounts": [610, 610, 610, 890] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusArtifactJobAmbush", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierDTableBRewards", + "masteryReq": 3, + "minEnemyLevel": 30, + "maxEnemyLevel": 50, + "xpAmounts": [570, 570, 570, 570, 1120] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusChaosJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 5, + "minEnemyLevel": 40, + "maxEnemyLevel": 60, + "xpAmounts": [760, 760, 760, 760, 1490] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/VenusCullJobResource", + "rewards": "/Lotus/Types/Game/MissionDecks/VenusJobMissionRewards/VenusTierETableBRewards", + "masteryReq": 10, + "minEnemyLevel": 100, + "maxEnemyLevel": 100, + "xpAmounts": [840, 840, 840, 840, 1660] + }, + { + "jobType": "/Lotus/Types/Gameplay/Venus/Jobs/Narmer/NarmerVenusCullJobAssassinate", + "rewards": "/Lotus/Types/Game/MissionDecks/EidolonJobMissionRewards/NarmerTableBRewards", + "masteryReq": 0, + "minEnemyLevel": 50, + "maxEnemyLevel": 70, + "xpAmounts": [800, 800, 800, 800, 1580] + } + ] + }, + { + "_id": { "$oid": "64ad79c50000000000000026" }, + "Activation": { "$date": { "$numberLong": "1689090501347" } }, + "Expiry": { "$date": { "$numberLong": "1689099500220" } }, "Tag": "ZarimanSyndicate", - "Seed": 20831, + "Seed": 47401, "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4de" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "ArbitersSyndicate", - "Seed": 28971, - "Nodes": ["SolNode36", "SolNode123", "SolNode225", "SolNode709", "SolNode137", "SolNode195", "SolNode81"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4df" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "CephalonSudaSyndicate", - "Seed": 25969, - "Nodes": ["SolNode79", "SolNode41", "SettlementNode1", "SolNode132", "SolNode166", "SolNode72", "SolNode23"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e0" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "NecraloidSyndicate", - "Seed": 81067, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e1" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "EventSyndicate", - "Seed": 28897, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e2" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "KahlSyndicate", - "Seed": 92441, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e4" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "QuillsSyndicate", - "Seed": 61214, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e3" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "NewLokaSyndicate", - "Seed": 21393, - "Nodes": ["SolNode68", "SolNode2", "SolNode82", "SolNode217", "SolNode409", "SolNode139", "SolNode75"] - }, - { - "_id": { "$oid": "64776ec5e72990bfd5fea4e5" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "PerrinSyndicate", - "Seed": 72469, - "Nodes": ["SolNode39", "SolNode12", "SolNode146", "SolNode101", "SolNode121", "SolNode408", "SolNode96"] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e6" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegion2Syndicate", - "Seed": 13526, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ea" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission4Syndicate", - "Seed": 20328, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4eb" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission5Syndicate", - "Seed": 87241, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ec" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission6Syndicate", - "Seed": 54438, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e7" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegion3Syndicate", - "Seed": 20666, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e9" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission3Syndicate", - "Seed": 7709, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4e8" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission2Syndicate", - "Seed": 33027, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ee" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission8Syndicate", - "Seed": 21780, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ef" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermissionSyndicate", - "Seed": 95381, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4ed" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionIntermission7Syndicate", - "Seed": 53091, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f0" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RadioLegionSyndicate", - "Seed": 60623, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f1" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "RedVeilSyndicate", - "Seed": 78309, - "Nodes": ["SolNode15", "SolNode106", "SettlementNode3", "SolNode224", "SolNode401", "SolNode76", "SolNode62"] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f3" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "VoxSyndicate", - "Seed": 52842, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f2" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "VentKidsSyndicate", - "Seed": 49149, - "Nodes": [] - }, - { - "_id": { "$oid": "64776ec6e72990bfd5fea4f4" }, - "Activation": { "$date": { "$numberLong": "1685548741732" } }, - "Expiry": { "$date": { "$numberLong": "1685635140000" } }, - "Tag": "SteelMeridianSyndicate", - "Seed": 9289, - "Nodes": ["SolNode130", "SolNode61", "SolNode30", "SolNode10", "SolNode102", "SolNode64", "SolNode50"] } ], "ActiveMissions": [ { - "_id": { "$oid": "64775c05cab187e046c3d277" }, - "Region": 12, - "Seed": 94704, - "Activation": { "$date": { "$numberLong": "1685543941731" } }, - "Expiry": { "$date": { "$numberLong": "1685550975969" } }, - "Node": "SolNode184", - "MissionType": "MT_SABOTAGE", + "_id": { "$oid": "64ad6025357b495f180d5564" }, + "Region": 9, + "Seed": 22195, + "Activation": { "$date": { "$numberLong": "1689083941869" } }, + "Expiry": { "$date": { "$numberLong": "1689090872723" } }, + "Node": "SolNode72", + "MissionType": "MT_DEFENSE", "Modifier": "VoidT4", "Hard": true }, { - "_id": { "$oid": "647761698afaf76e50461fc8" }, + "_id": { "$oid": "64ad6062d99ca7575a305f42" }, + "Region": 3, + "Seed": 32236, + "Activation": { "$date": { "$numberLong": "1689084002029" } }, + "Expiry": { "$date": { "$numberLong": "1689090850537" } }, + "Node": "SolNode85", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64ad6062d99ca7575a305f43" }, + "Region": 2, + "Seed": 39346, + "Activation": { "$date": { "$numberLong": "1689084002029" } }, + "Expiry": { "$date": { "$numberLong": "1689091164336" } }, + "Node": "SolNode101", + "MissionType": "MT_EXCAVATE", + "Modifier": "VoidT1", + "Hard": true + }, + { + "_id": { "$oid": "64ad618eb13490a6d19830ef" }, + "Region": 2, + "Seed": 99258, + "Activation": { "$date": { "$numberLong": "1689084302097" } }, + "Expiry": { "$date": { "$numberLong": "1689090769276" } }, + "Node": "SolNode23", + "MissionType": "MT_TERRITORY", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "64ad618eb13490a6d19830f0" }, + "Region": 3, + "Seed": 96081, + "Activation": { "$date": { "$numberLong": "1689084302097" } }, + "Expiry": { "$date": { "$numberLong": "1689090997241" } }, + "Node": "SolNode63", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT1" + }, + { + "_id": { "$oid": "64ad681eee7e23fc36cde3d3" }, + "Region": 8, + "Seed": 52707, + "Activation": { "$date": { "$numberLong": "1689085981981" } }, + "Expiry": { "$date": { "$numberLong": "1689090851874" } }, + "Node": "SolNode84", + "MissionType": "MT_INTEL", + "Modifier": "VoidT3", + "Hard": true + }, + { + "_id": { "$oid": "64ad690def6919bc8761fda1" }, "Region": 19, - "Seed": 58268, - "Activation": { "$date": { "$numberLong": "1685545321337" } }, - "Expiry": { "$date": { "$numberLong": "1685551434577" } }, + "Seed": 8693, + "Activation": { "$date": { "$numberLong": "1689086221185" } }, + "Expiry": { "$date": { "$numberLong": "1689092771610" } }, + "Node": "SolNode748", + "MissionType": "MT_RESCUE", + "Modifier": "VoidT5", + "Hard": true + }, + { + "_id": { "$oid": "64ad690def6919bc8761fda2" }, + "Region": 19, + "Seed": 1298, + "Activation": { "$date": { "$numberLong": "1689086221185" } }, + "Expiry": { "$date": { "$numberLong": "1689091440901" } }, "Node": "SolNode746", "MissionType": "MT_EXTERMINATION", "Modifier": "VoidT5", "Hard": true }, { - "_id": { "$oid": "6477630df698f676b0b32282" }, + "_id": { "$oid": "64ad6b29ae39dea52d96affa" }, + "Region": 8, + "Seed": 1701, + "Activation": { "$date": { "$numberLong": "1689086761492" } }, + "Expiry": { "$date": { "$numberLong": "1689092517218" } }, + "Node": "SolNode17", + "MissionType": "MT_DEFENSE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64ad6b29ae39dea52d96affb" }, "Region": 15, - "Seed": 70123, - "Activation": { "$date": { "$numberLong": "1685545741655" } }, - "Expiry": { "$date": { "$numberLong": "1685550886528" } }, - "Node": "SolNode412", - "MissionType": "MT_TERRITORY", + "Seed": 74243, + "Activation": { "$date": { "$numberLong": "1689086761492" } }, + "Expiry": { "$date": { "$numberLong": "1689092588164" } }, + "Node": "SolNode401", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT3" + }, + { + "_id": { "$oid": "64ad6bde8a2dfd7a7a7c4e1c" }, + "Region": 16, + "Seed": 96734, + "Activation": { "$date": { "$numberLong": "1689086942013" } }, + "Expiry": { "$date": { "$numberLong": "1689092198860" } }, + "Node": "SettlementNode2", + "MissionType": "MT_CAPTURE", + "Modifier": "VoidT2" + }, + { + "_id": { "$oid": "64ad6fd909d8a47e49f35ca7" }, + "Region": 11, + "Seed": 1317, + "Activation": { "$date": { "$numberLong": "1689087961663" } }, + "Expiry": { "$date": { "$numberLong": "1689092929978" } }, + "Node": "SolNode162", + "MissionType": "MT_CAPTURE", "Modifier": "VoidT4" }, { - "_id": { "$oid": "6477630df698f676b0b32283" }, - "Region": 9, - "Seed": 15094, - "Activation": { "$date": { "$numberLong": "1685545741655" } }, - "Expiry": { "$date": { "$numberLong": "1685550459337" } }, - "Node": "SolNode56", - "MissionType": "MT_SABOTAGE", - "Modifier": "VoidT4" - }, - { - "_id": { "$oid": "647764ed12544a97c96618a5" }, - "Region": 15, - "Seed": 66090, - "Activation": { "$date": { "$numberLong": "1685546221415" } }, - "Expiry": { "$date": { "$numberLong": "1685553063549" } }, - "Node": "SolNode405", - "MissionType": "MT_SURVIVAL", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "647764ed12544a97c96618a6" }, - "Region": 13, - "Seed": 19703, - "Activation": { "$date": { "$numberLong": "1685546221415" } }, - "Expiry": { "$date": { "$numberLong": "1685550448683" } }, - "Node": "SolNode216", - "MissionType": "MT_EXCAVATE", - "Modifier": "VoidT3", - "Hard": true - }, - { - "_id": { "$oid": "64776565dc85a669dae19b38" }, - "Region": 3, - "Seed": 90150, - "Activation": { "$date": { "$numberLong": "1685546341763" } }, - "Expiry": { "$date": { "$numberLong": "1685552506487" } }, - "Node": "SolNode89", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64776565dc85a669dae19b39" }, - "Region": 2, - "Seed": 11253, - "Activation": { "$date": { "$numberLong": "1685546341763" } }, - "Expiry": { "$date": { "$numberLong": "1685550810452" } }, - "Node": "SolNode128", - "MissionType": "MT_EXTERMINATION", - "Modifier": "VoidT1", - "Hard": true - }, - { - "_id": { "$oid": "64776655b191713293c08dfe" }, + "_id": { "$oid": "64ad750111c35eaa5a3823e7" }, "Region": 5, - "Seed": 67983, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685553220288" } }, - "Node": "SolNode97", - "MissionType": "MT_INTEL", - "Modifier": "VoidT2", - "Hard": true - }, - { - "_id": { "$oid": "64776655b191713293c08dff" }, - "Region": 10, - "Seed": 74682, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685551010303" } }, - "Node": "SolNode135", + "Seed": 30425, + "Activation": { "$date": { "$numberLong": "1689089281936" } }, + "Expiry": { "$date": { "$numberLong": "1689093260478" } }, + "Node": "SolNode10", "MissionType": "MT_SABOTAGE", "Modifier": "VoidT2", "Hard": true }, { - "_id": { "$oid": "64776655b191713293c08e00" }, - "Region": 6, - "Seed": 15538, - "Activation": { "$date": { "$numberLong": "1685546581712" } }, - "Expiry": { "$date": { "$numberLong": "1685551799194" } }, - "Node": "SolNode18", + "_id": { "$oid": "64ad750111c35eaa5a3823e8" }, + "Region": 10, + "Seed": 12845, + "Activation": { "$date": { "$numberLong": "1689089281936" } }, + "Expiry": { "$date": { "$numberLong": "1689093452186" } }, + "Node": "SolNode147", "MissionType": "MT_TERRITORY", "Modifier": "VoidT2", "Hard": true }, { - "_id": { "$oid": "64776ec5752b9bd0c871fa7c" }, - "Region": 4, - "Seed": 47626, - "Activation": { "$date": { "$numberLong": "1685548741727" } }, - "Expiry": { "$date": { "$numberLong": "1685553411719" } }, - "Node": "SolNode36", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT1" - }, - { - "_id": { "$oid": "647770a68bb595254a64c26e" }, - "Region": 7, - "Seed": 86090, - "Activation": { "$date": { "$numberLong": "1685549222143" } }, - "Expiry": { "$date": { "$numberLong": "1685556263692" } }, - "Node": "SolNode122", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "647770a68bb595254a64c26f" }, - "Region": 13, - "Seed": 39703, - "Activation": { "$date": { "$numberLong": "1685549222143" } }, - "Expiry": { "$date": { "$numberLong": "1685553504151" } }, - "Node": "SolNode212", - "MissionType": "MT_DEFENSE", - "Modifier": "VoidT3" - }, - { - "_id": { "$oid": "6477720ec9dd724c888eff5b" }, + "_id": { "$oid": "64ad7759415742cb718802f1" }, "Region": 19, - "Seed": 2767, - "Activation": { "$date": { "$numberLong": "1685549582078" } }, - "Expiry": { "$date": { "$numberLong": "1685554300277" } }, - "Node": "SolNode744", - "MissionType": "MT_SURVIVAL", + "Seed": 17280, + "Activation": { "$date": { "$numberLong": "1689089881941" } }, + "Expiry": { "$date": { "$numberLong": "1689095284623" } }, + "Node": "SolNode741", + "MissionType": "MT_ASSAULT", "Modifier": "VoidT5" }, { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7c" }, - "Region": 10, - "Seed": 84581, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685554027918" } }, - "Node": "SolNode149", + "_id": { "$oid": "64ad7759415742cb718802f2" }, + "Region": 19, + "Seed": 31988, + "Activation": { "$date": { "$numberLong": "1689089881941" } }, + "Expiry": { "$date": { "$numberLong": "1689093504669" } }, + "Node": "SolNode742", "MissionType": "MT_DEFENSE", - "Modifier": "VoidT2" + "Modifier": "VoidT5" }, { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7d" }, - "Region": 16, - "Seed": 50951, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685553961019" } }, - "Node": "SettlementNode12", - "MissionType": "MT_RESCUE", - "Modifier": "VoidT2" - }, - { - "_id": { "$oid": "647772fd22c01cbb6ccb9e7e" }, - "Region": 5, - "Seed": 37897, - "Activation": { "$date": { "$numberLong": "1685549821318" } }, - "Expiry": { "$date": { "$numberLong": "1685556218772" } }, - "Node": "SolNode73", - "MissionType": "MT_CAPTURE", - "Modifier": "VoidT2" + "_id": { "$oid": "64ad7759415742cb718802f3" }, + "Region": 19, + "Seed": 71464, + "Activation": { "$date": { "$numberLong": "1689089881941" } }, + "Expiry": { "$date": { "$numberLong": "1689095100161" } }, + "Node": "SolNode745", + "MissionType": "MT_ARTIFACT", + "Modifier": "VoidT5" } ], "GlobalUpgrades": [], "FlashSales": [ - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", - "StartDate": { "$date": { "$numberLong": "1654560000000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", - "StartDate": { "$date": { "$numberLong": "1661173200000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0 - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/VeilbreakerSupporterPack", "StartDate": { "$date": { "$numberLong": "1662422400000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": false, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 999, - "Discount": 0, + "Discount": 35, "RegularOverride": 0, - "PremiumOverride": 1, + "PremiumOverride": 0, + "BogoBuy": 0, + "BogoGet": 0 + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackA", + "StartDate": { "$date": { "$numberLong": "1654560000000" } }, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 40, + "RegularOverride": 0, + "PremiumOverride": 0, "BogoBuy": 0, "BogoGet": 0 }, { "TypeName": "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", "StartDate": { "$date": { "$numberLong": "1667347200000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": true, - "Popular": false, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": true, - "VoidEclipse": false, - "BannerIndex": 5, - "Discount": 0, + "Discount": 25, "RegularOverride": 0, - "PremiumOverride": 1, + "PremiumOverride": 0, "BogoBuy": 0, "BogoGet": 0 }, @@ -1360,14 +1563,9 @@ "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 80, "Discount": 0, "RegularOverride": 0, "PremiumOverride": 195, @@ -1375,18 +1573,26 @@ "BogoGet": 0, "UrlOverride": "" }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB", + "StartDate": { "$date": { "$numberLong": "1661173200000" } }, + "EndDate": { "$date": { "$numberLong": "1689267600000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": true, + "Discount": 45, + "RegularOverride": 0, + "PremiumOverride": 0, + "BogoBuy": 0, + "BogoGet": 0 + }, { "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/XakuLotusDeluxeSkinBundle", "StartDate": { "$date": { "$numberLong": "1675036800000" } }, "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, "ShowInMarket": true, "HideFromMarket": false, - "ShowWithRecommended": true, "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 85, "Discount": 0, "RegularOverride": 0, "PremiumOverride": 430, @@ -1394,206 +1600,6 @@ "BogoGet": 0, "UrlOverride": "" }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 90, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 90, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 95, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 260, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 105, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 20, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 100, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 325, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 110, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 35, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 115, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 80, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", - "StartDate": { "$date": { "$numberLong": "1675036800000" } }, - "EndDate": { "$date": { "$numberLong": "1703980800000" } }, - "Featured": false, - "Popular": true, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 120, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 165, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693494000000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 1, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", - "StartDate": { "$date": { "$numberLong": "1678838400000" } }, - "EndDate": { "$date": { "$numberLong": "1693440000000" } }, - "Featured": false, - "Popular": false, - "ShowInMarket": true, - "HideFromMarket": false, - "ShowWithRecommended": true, - "SupporterPack": false, - "VoidEclipse": false, - "BannerIndex": 2, - "Discount": 0, - "RegularOverride": 0, - "PremiumOverride": 1, - "BogoBuy": 0, - "BogoGet": 0, - "UrlOverride": "" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1683828000000" } }, - "EndDate": { "$date": { "$numberLong": "1687110900000" } }, - "DefaultPremium": 1, - "DefaulRegular": 0, - "LocalizedItemName": "FREE WITH PRIME GAMING" - }, - { - "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", - "ShowInMarket": true, - "HideFromMarket": false, - "SupporterPack": false, - "Discount": 0, - "BogoBuy": 0, - "BogoGet": 0, - "PremiumOverride": 1, - "RegularOverride": 0, - "StartDate": { "$date": { "$numberLong": "1683828000000" } }, - "EndDate": { "$date": { "$numberLong": "1687110900000" } } - }, { "TypeName": "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", "ShowInMarket": true, @@ -1606,53 +1612,276 @@ "RegularOverride": 0, "StartDate": { "$date": { "$numberLong": "1684432800000" } }, "EndDate": { "$date": { "$numberLong": "1693504800000" } } + }, + { + "TypeName": "/Lotus/Powersuits/Werewolf/Werewolf", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 325, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1AccessoryStoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693440000000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/Items/MiscItems/OrokinCatalyst", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 20, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Saryn/SarynLunarNewYearSkin", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 165, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/DeluxeBundles/MesaVoltDeluxeSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 260, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/PrimeAccess1Tier3StoreItem", + "StartDate": { "$date": { "$numberLong": "1678838400000" } }, + "EndDate": { "$date": { "$numberLong": "1693494000000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 1, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Upgrades/Skins/Effects/NarmerEvolvingEphemeraA", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 80, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/VorunaVoidshellSkinBundle", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 90, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/FormaPack", + "StartDate": { "$date": { "$numberLong": "1675036800000" } }, + "EndDate": { "$date": { "$numberLong": "1703980800000" } }, + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "RegularOverride": 0, + "PremiumOverride": 35, + "BogoBuy": 0, + "BogoGet": 0, + "UrlOverride": "" + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeMantisIridosLandingCraftStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1686247200000" } }, + "EndDate": { "$date": { "$numberLong": "1689530100000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeMantisIridosLandingCraftStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "RegularOverride": 0, + "StartDate": { "$date": { "$numberLong": "1686247200000" } }, + "EndDate": { "$date": { "$numberLong": "1689530100000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 70, + "StartDate": { "$date": { "$numberLong": "1688216400000" } }, + "EndDate": { "$date": { "$numberLong": "1722171600000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/AvatarImages/Community10YearOrdisGlyph", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 20, + "StartDate": { "$date": { "$numberLong": "1688209260000" } }, + "EndDate": { "$date": { "$numberLong": "1690801260000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Community10YearRoyalPratDisplay", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 30, + "StartDate": { "$date": { "$numberLong": "1688209320000" } }, + "EndDate": { "$date": { "$numberLong": "1690801320000" } } + }, + { + "TypeName": "/Lotus/Types/Items/ShipDecos/Community10YearDasterDisplay", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 30, + "StartDate": { "$date": { "$numberLong": "1688209320000" } }, + "EndDate": { "$date": { "$numberLong": "1690801320000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItemNoLogo", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1688652120000" } }, + "EndDate": { "$date": { "$numberLong": "1691952900000" } } + }, + { + "TypeName": "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItem", + "ShowInMarket": true, + "HideFromMarket": false, + "SupporterPack": false, + "Discount": 0, + "BogoBuy": 0, + "BogoGet": 0, + "PremiumOverride": 1, + "StartDate": { "$date": { "$numberLong": "1688666400000" } }, + "EndDate": { "$date": { "$numberLong": "1691952900000" } } } ], "InGameMarket": { "LandingPage": { "Categories": [ - { - "CategoryName": "POPULAR", - "Name": "/Lotus/Language/Menu/StorePopular", - "Icon": "popular", - "Items": [ - "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItem", - "/Lotus/Types/StoreItems/Packages/TwitchPrimeUdyatIridosSyandanaStoreItemNoLogo", - "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", - "/Lotus/Types/StoreItems/Packages/WarframeBundles/WolfFrameBundle", - "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/EmberDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/RailjackVoidrigBundle", - "/Lotus/StoreItems/Powersuits/Werewolf/Werewolf", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", - "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/FormaPack", - "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" - ] - }, { "CategoryName": "DUVIRI_PARADOX", "Name": "/Lotus/Language/Store/Store_DuviriParadox", "Icon": "duviriparadox", "AddToMenu": true, "Items": [ + "/Lotus/Types/StoreItems/Packages/WarframeBundles/PaxDuviricusItemsBundle", + "/Lotus/Types/StoreItems/Packages/HorseCrownBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/GaussDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/GaussDeluxeHorseAccessoriesBundle", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit3ABundle", + "/Lotus/StoreItems/Upgrades/Skins/PaxDuviricus/KullervoTwoHandedSwordSkin", "/Lotus/Types/StoreItems/Packages/RoyalSteedBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/DeluxeBundles/WispDeluxeSkinBundle", - "/Lotus/Types/StoreItems/Packages/VoidAdornmentIVBundle", "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", "/Lotus/Types/StoreItems/Packages/DuviriWeaponsBundle", - "/Lotus/StoreItems/Upgrades/Skins/Duviri/DuviriSwordTowerShieldSkin", - "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitOutfit1ABundle", - "/Lotus/StoreItems/Weapons/Tenno/Bows/DaxDuviriAsymetricalBow/DaxDuviriAsymmetricalLongBowPlayerWeapon", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAetigo", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundlePsyacus", - "/Lotus/Types/StoreItems/Packages/DuviriHorseBundleAccessories", - "/Lotus/Types/StoreItems/Packages/Tattoo/TattooBundleDuviri", - "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle" + ] + }, + { + "CategoryName": "POPULAR", + "Name": "/Lotus/Language/Menu/StorePopular", + "Icon": "popular", + "AddToMenu": true, + "Items": [ + "/Lotus/Types/StoreItems/Packages/Tennocon2023StoreItem", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItemNoLogo", + "/Lotus/Types/StoreItems/Packages/TwitchPrimeKronenIridosStoreItem", + "/Lotus/Types/StoreItems/Packages/InitiateIIIPCPack", + "/Lotus/Types/StoreItems/Packages/TenYearAnniversaryCommunityArtPack", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/ZephyrDlxOperatorBundle", + "/Lotus/Types/StoreItems/Packages/AdultOperatorSuitArabicBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/TitaniaDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/DuviriBundleFabledWarrior", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/BaruukDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/ProtovyreCosmeticsBundle", + "/Lotus/StoreItems/Powersuits/PaxDuviricus/PaxDuviricus", + "/Lotus/Types/StoreItems/Packages/NekrosDeluxeSkinBundle", + "/Lotus/Types/StoreItems/Packages/DeluxeBundles/EmberDeluxeIISkinBundle", + "/Lotus/Types/StoreItems/Packages/VampireKavatStarterKit", + "/Lotus/Types/StoreItems/Packages/FormaPack", + "/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst" ] }, { @@ -1660,21 +1889,17 @@ "Name": "/Lotus/Language/Menu/Store_Tennogen", "Icon": "tennogen", "Items": [ - "/Lotus/StoreItems/Upgrades/Skins/Runner/SWGaussNitrolystSkin", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWRetrorolystSyandana", - "/Lotus/StoreItems/Upgrades/Skins/BrokenFrame/SWXakuDeatheaSkin", - "/Lotus/StoreItems/Upgrades/Skins/Sentient/SWCalibanScionHelmet", - "/Lotus/StoreItems/Upgrades/Skins/Scarves/SWAlocanaSyandana", - "/Lotus/StoreItems/Upgrades/Skins/Operator/Accessories/SWKatixEarAcc" + "/Lotus/StoreItems/Upgrades/Skins/SteamWorkshop/Melee/Katana/SWKrtrimaKatanaSkin", + "/Lotus/StoreItems/Upgrades/Skins/Necro/SWNekrosAusirylystSkin", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorA", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWVikasaAegisArmor/SWVikasaAegisArmorC", + "/Lotus/StoreItems/Upgrades/Skins/Liset/SWHerulystLisetSkin", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorC", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWZhiviraShoulderArmor/SWZhiviraShoulderArmorA", + "/Lotus/StoreItems/Upgrades/Skins/Armor/SWKrtrimaArmor/SWKrtrimaArmorL" ] }, - { - "CategoryName": "DUVIRI_CHOICES", - "Name": "/Lotus/Language/Store/Store_DuviriChoices", - "Icon": "duvirichoices", - "AddToMenu": true, - "Items": [] - }, + { "CategoryName": "DUVIRI_CHOICES", "Name": "/Lotus/Language/Store/Store_DuviriChoices", "Icon": "duvirichoices", "AddToMenu": true, "Items": [] }, { "CategoryName": "PREMIUM_BUNDLES", "Name": "/Lotus/Language/Store/Store_PremiumBundles", @@ -1688,145 +1913,90 @@ "/Lotus/Types/StoreItems/Packages/AOTZSupporterPackB" ] }, - { - "CategoryName": "WISH_LIST", - "Name": "/Lotus/Language/Menu/Store_Wishlist", - "Icon": "wishlist", - "Items": [] - } + { "CategoryName": "WISH_LIST", "Name": "/Lotus/Language/Menu/Store_Wishlist", "Icon": "wishlist", "Items": [] } ] } }, "Invasions": [ { - "_id": { "$oid": "6471a5c11c84d8991785ccc1" }, - "Faction": "FC_GRINEER", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode4", - "Count": -35500, - "Goal": 43000, - "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "646e00f1d08856975bb476fe" }, - "AttackerReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] - }, - "AttackerMissionInfo": { "seed": 573551, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 810078, "faction": "FC_GRINEER" }, - "Activation": { "$date": { "$numberLong": "1685170489276" } } - }, - { - "_id": { "$oid": "64729729ea6b289e0f440b37" }, + "_id": { "$oid": "64aba56adc4108eb211cf4ce" }, "Faction": "FC_CORPUS", "DefenderFaction": "FC_GRINEER", - "Node": "SolNode177", - "Count": -40065, - "Goal": 40000, + "Node": "SolNode181", + "Count": -36759, + "Goal": 41000, "LocTag": "/Lotus/Language/Menu/CorpusInvasionGeneric", - "Completed": true, - "ChainID": { "$oid": "646fdcb95a219384bdbbd5f1" }, - "AttackerReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/SnipetronVandalBlueprint", "ItemCount": 1 }] - }, - "AttackerMissionInfo": { "seed": 181914, "faction": "FC_GRINEER" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/GrineerCombatKnifeHilt", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 197505, "faction": "FC_CORPUS" }, - "Activation": { "$date": { "$numberLong": "1685232025336" } } + "Completed": false, + "ChainID": { "$oid": "64a438a15c82690bba01da1f" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/SnipetronVandalBarrel", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 630071, "faction": "FC_GRINEER" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/StrunWraithReceiver", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 503172, "faction": "FC_CORPUS" }, + "Activation": { "$date": { "$numberLong": "1688971153359" } } }, { - "_id": { "$oid": "64764c611959704d82e095f8" }, + "_id": { "$oid": "64a9d42d2c6f2607fde359bf" }, + "Faction": "FC_GRINEER", + "DefenderFaction": "FC_CORPUS", + "Node": "SettlementNode3", + "Count": 35249, + "Goal": 48000, + "LocTag": "/Lotus/Language/Menu/GrineerInvasionGeneric", + "Completed": false, + "ChainID": { "$oid": "64a9d42d2c6f2607fde359bf" }, + "AttackerReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/WeaponParts/TwinVipersWraithReceiver", "ItemCount": 1 }] }, + "AttackerMissionInfo": { "seed": 1418, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Recipes/Weapons/DeraVandalBlueprint", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 408470, "faction": "FC_GRINEER" }, + "Activation": { "$date": { "$numberLong": "1688919293530" } } + }, + { + "_id": { "$oid": "64ab5235aadd8aa4a525c297" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", "Node": "SolNode127", - "Count": -19265, + "Count": -30072, "Goal": 30000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", - "Completed": false, - "ChainID": { "$oid": "647612f5b75e9d02362f0c6c" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 995781, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 978707, "faction": "FC_INFESTATION", "missionReward": [] }, - "Activation": { "$date": { "$numberLong": "1685474401909" } } - }, - { - "_id": { "$oid": "6476ba8aca0663ae5a22b6bb" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_GRINEER", - "Node": "SolNode68", - "Count": -33274, - "Goal": 33000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": true, - "ChainID": { "$oid": "6476ba8aca0663ae5a22b6bb" }, + "ChainID": { "$oid": "64ab1b21b464ebac66cacb05" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 512950, "faction": "FC_GRINEER" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/ChemComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 160228, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685508708793" } } + "AttackerMissionInfo": { "seed": 776594, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/MiscItems/InfestedAladCoordinate", "ItemCount": 1 }] }, + "DefenderMissionInfo": { "seed": 318162, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1688949301919" } } }, { - "_id": { "$oid": "647730e50ecf58593d735cb0" }, + "_id": { "$oid": "64abda258c51f909e8841ceb" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode107", - "Count": -17526, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, + "Node": "SolNode53", + "Count": -30086, + "Goal": 30000, + "LocTag": "/Lotus/Language/Menu/InfestedInvasionBoss", + "Completed": true, + "ChainID": { "$oid": "64aba7c127ac32a450c4b81b" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 640989, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 53442, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685537906204" } } + "AttackerMissionInfo": { "seed": 214951, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 479771, "faction": "FC_INFESTATION", "missionReward": [] }, + "Activation": { "$date": { "$numberLong": "1688984101482" } } }, { - "_id": { "$oid": "64775e991d3a1c5c0a181494" }, + "_id": { "$oid": "64ad5a8592d04a20de1198bb" }, "Faction": "FC_INFESTATION", "DefenderFaction": "FC_CORPUS", - "Node": "SolNode66", - "Count": -1218, - "Goal": 45000, + "Node": "SolNode220", + "Count": -136, + "Goal": 37000, "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, + "ChainID": { "$oid": "64ad5a8592d04a20de1198bb" }, "AttackerReward": [], - "AttackerMissionInfo": { "seed": 563164, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] - }, - "DefenderMissionInfo": { "seed": 203755, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685544601696" } } - }, - { - "_id": { "$oid": "64775e991d3a1c5c0a181495" }, - "Faction": "FC_INFESTATION", - "DefenderFaction": "FC_CORPUS", - "Node": "SolNode22", - "Count": -1490, - "Goal": 36000, - "LocTag": "/Lotus/Language/Menu/InfestedInvasionGeneric", - "Completed": false, - "ChainID": { "$oid": "647730e50ecf58593d735cb0" }, - "AttackerReward": [], - "AttackerMissionInfo": { "seed": 933714, "faction": "FC_CORPUS" }, - "DefenderReward": { - "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/BioComponent", "ItemCount": 1 }] - }, - "DefenderMissionInfo": { "seed": 693132, "faction": "FC_INFESTATION" }, - "Activation": { "$date": { "$numberLong": "1685544601696" } } + "AttackerMissionInfo": { "seed": 233680, "faction": "FC_CORPUS" }, + "DefenderReward": { "countedItems": [{ "ItemType": "/Lotus/Types/Items/Research/EnergyComponent", "ItemCount": 3 }] }, + "DefenderMissionInfo": { "seed": 674168, "faction": "FC_INFESTATION" }, + "Activation": { "$date": { "$numberLong": "1689089072159" } } } ], "HubEvents": [], @@ -1834,7 +2004,7 @@ { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, - { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9507716 }, + { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9564278 }, { "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, "Node": "EarthHUB", @@ -1848,207 +2018,49 @@ "Hide": true, "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", "Activation": { "$date": { "$numberLong": "1563030000000" } } - }, - { - "_id": { "$oid": "5c7cb0d00000000000000000" }, - "Activation": { "$date": { "$numberLong": "1684512000000" } }, - "Expiry": { "$date": { "$numberLong": "1685721600000" } }, - "Node": "SolNode129", - "Faction": "FC_CORPUS", - "CustomNpcEncounters": ["/Lotus/Types/Gameplay/Venus/Encounters/Heists/ExploiterHeistFissure"] } ], "VoidTraders": [ { "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, - "Activation": { "$date": { "$numberLong": "1685710800000" } }, - "Expiry": { "$date": { "$numberLong": "1685883600000" } }, + "Activation": { "$date": { "$numberLong": "1689339600000" } }, + "Expiry": { "$date": { "$numberLong": "1689512400000" } }, "Id": "5d1e07a0a38e4a4fdd7cefca", "Character": "Baro'Ki Teel", - "Node": "SaturnHUB" + "Node": "MercuryHUB" } ], "PrimeVaultTraders": [ { "_id": { "$oid": "631f8c4ac36af423770eaa97" }, - "Activation": { "$date": { "$numberLong": "1683223200000" } }, + "Activation": { "$date": { "$numberLong": "1688666400000" } }, "Completed": false, "InitialStartDate": { "$date": { "$numberLong": "1662738144266" } }, "Node": "TradeHUB1", "Manifest": [ - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaTrinityPrimeDualPack", - "PrimePrice": 10 - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosOberonPrimeDualPack", - "PrimePrice": 10, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVOberonPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNekrosPrimeSinglePack", - "PrimePrice": 6, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVTrinityPrimeSinglePack", - "PrimePrice": 6 - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNovaPrimeSinglePack", - "PrimePrice": 6 - }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Paladin/PaladinPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeOberonCape", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/SurakaPrimeDangle", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeSilvaAegis/PrimeSilvaAegis", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSybaris/PrimeSybarisRifle", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Powersuits/Necro/NekrosPrime", - "PrimePrice": 3, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/UruPrimeScarf", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAcanthusPrimeArmorSet", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeTigris/PrimeTigris", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/PrimeGalatine/PrimeGalatine", - "PrimePrice": 2, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { "ItemType": "/Lotus/StoreItems/Powersuits/Trinity/TrinityPrime", "PrimePrice": 3 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVKavasaPrimeKubrowArmor", - "PrimePrice": 2 - }, - { - "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/ScrollingPrimeMeleeDangle", - "PrimePrice": 1 - }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeDualKamas/PrimeDualKamas", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Powersuits/AntiMatter/NovaPrime", "PrimePrice": 3 }, - { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEdoPrimeArmorSet", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/PrimeAccessSigilFive", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeSoma/PrimeSomaRifle", "PrimePrice": 2 }, - { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeVasto/PrimeVastoPistol", "PrimePrice": 2 }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/OberonPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NekrosPrimeBobbleHead", - "PrimePrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/NovaPrimeBobbleHead", "PrimePrice": 1 }, - { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/TrinityPrimeBobbleHead", "PrimePrice": 1 }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionOberonNekrosVaultBBronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionOberonNekrosVaultBBronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionOberonNekrosVaultABronze", - "RegularPrice": 1, - "StartDate": { "$date": { "$numberLong": "1684508400000" } }, - "EndDate": { "$date": { "$numberLong": "1685718000000" } } - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - }, - { - "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionNovaTrinityVaultABronze", - "RegularPrice": 1 - } + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheePrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack", "PrimePrice": 10 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVMiragePrimeSinglePack", "PrimePrice": 6 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Banshee/BansheePrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfF", "PrimePrice": 2 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVIctusPrimeSentAccessories", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Sentinels/SentinelPowersuits/PrimeHeliosPowerSuit", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/AllNew1hSG/AllNew1hSG", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Powersuits/Harlequin/MiragePrime", "PrimePrice": 3 }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAtavistPrimeArmorSet", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeScarfG", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Melee/PrimeKogake/KogakePrimeKnuckles", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeAkbolto/PrimeAkBoltoWeapon", "PrimePrice": 2 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/BansheePrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Items/ShipDecos/MiragePrimeBobbleHead", "PrimePrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T2VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T3VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultABronze", "RegularPrice": 1 }, + { "ItemType": "/Lotus/StoreItems/Types/Game/Projections/T4VoidProjectionBansheeMirageVaultBBronze", "RegularPrice": 1 } ], - "Expiry": { "$date": { "$numberLong": "1685718000000" } }, + "Expiry": { "$date": { "$numberLong": "1691085600000" } }, "EvergreenManifest": [ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/LongGuns/PrimeBurston/PrimeBurston", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Rifle/BratonPrime", "PrimePrice": 1 }, @@ -2056,33 +2068,21 @@ { "ItemType": "/Lotus/StoreItems/Weapons/Tenno/Pistols/PrimeLex/PrimeLex", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Types/Game/ShipScenes/PrimeLisetFiligreeScene", "PrimePrice": 1 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVAviaPrimeArmorSet", "PrimePrice": 2 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVayasPrimeAccessories", - "PrimePrice": 2 - }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVayasPrimeAccessories", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/MeleeDangles/TwitchPrimeMeleeDangle", "PrimePrice": 1 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeAviaSyandana", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/PrimeTwitchScarf", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/TwitchPrimeScarf", "PrimePrice": 2 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Sigils/TwitchPrimeSigil", "PrimePrice": 1 }, - { - "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNecraloidBundle", - "RegularPrice": 10 - }, + { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVNecraloidBundle", "RegularPrice": 10 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Liset/LisetSkinTwitchPrime", "RegularPrice": 10 }, { "ItemType": "/Lotus/StoreItems/Upgrades/Skins/Scarves/InfMembraneCape", "RegularPrice": 10 }, { "ItemType": "/Lotus/StoreItems/Types/Items/MiscItems/PrimeBucks", "RegularPrice": 1 }, { "ItemType": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVVoidTraceBundle", "RegularPrice": 1 } ], "ScheduleInfo": [ - { - "Expiry": { "$date": { "$numberLong": "1667498400000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" - }, - { - "Expiry": { "$date": { "$numberLong": "1669921200000" } }, - "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack" - }, + { "Expiry": { "$date": { "$numberLong": "1667498400000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVEquinoxWukongPrimeDualPack" }, + { "Expiry": { "$date": { "$numberLong": "1669921200000" } }, "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVValkyrSarynPrimeDualPack" }, { "Expiry": { "$date": { "$numberLong": "1672945200000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1668711600000" } }, @@ -2120,94 +2120,98 @@ }, { "Expiry": { "$date": { "$numberLong": "1691085600000" } }, - "PreviewHiddenUntil": { "$date": { "$numberLong": "1691085600000" } } - } + "PreviewHiddenUntil": { "$date": { "$numberLong": "1687456800000" } }, + "FeaturedItem": "/Lotus/Types/StoreItems/Packages/MegaPrimeVault/MPVBansheeMiragePrimeDualPack" + }, + { "Expiry": { "$date": { "$numberLong": "1694109600000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1694109600000" } } }, + { "Expiry": { "$date": { "$numberLong": "1696528800000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1696532400000" } } }, + { "Expiry": { "$date": { "$numberLong": "1698948000000" } }, "PreviewHiddenUntil": { "$date": { "$numberLong": "1698948000000" } } } ] } ], "VoidStorms": [ { - "_id": { "$oid": "64775c416894d083a29b8872" }, - "Node": "CrewBattleNode511", - "Activation": { "$date": { "$numberLong": "1685546401825" } }, - "Expiry": { "$date": { "$numberLong": "1685551801825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "64775c416894d083a29b8871" }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15f8" }, "Node": "CrewBattleNode509", - "Activation": { "$date": { "$numberLong": "1685546401821" } }, - "Expiry": { "$date": { "$numberLong": "1685551801821" } }, + "Activation": { "$date": { "$numberLong": "1689085201821" } }, + "Expiry": { "$date": { "$numberLong": "1689090601821" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "64775c416894d083a29b8874" }, - "Node": "CrewBattleNode521", - "Activation": { "$date": { "$numberLong": "1685546401829" } }, - "Expiry": { "$date": { "$numberLong": "1685551801829" } }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fb" }, + "Node": "CrewBattleNode516", + "Activation": { "$date": { "$numberLong": "1689085201829" } }, + "Expiry": { "$date": { "$numberLong": "1689090601829" } }, "ActiveMissionTier": "VoidT3" }, { - "_id": { "$oid": "64775c416894d083a29b8873" }, - "Node": "CrewBattleNode530", - "Activation": { "$date": { "$numberLong": "1685546401827" } }, - "Expiry": { "$date": { "$numberLong": "1685551801827" } }, - "ActiveMissionTier": "VoidT2" - }, - { - "_id": { "$oid": "64775c416894d083a29b8876" }, - "Node": "CrewBattleNode543", - "Activation": { "$date": { "$numberLong": "1685546401834" } }, - "Expiry": { "$date": { "$numberLong": "1685551801834" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "64775c416894d083a29b8875" }, - "Node": "CrewBattleNode527", - "Activation": { "$date": { "$numberLong": "1685546401832" } }, - "Expiry": { "$date": { "$numberLong": "1685551801832" } }, - "ActiveMissionTier": "VoidT4" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3db" }, - "Node": "CrewBattleNode519", - "Activation": { "$date": { "$numberLong": "1685550001821" } }, - "Expiry": { "$date": { "$numberLong": "1685555401821" } }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15f9" }, + "Node": "CrewBattleNode512", + "Activation": { "$date": { "$numberLong": "1689085201825" } }, + "Expiry": { "$date": { "$numberLong": "1689090601825" } }, "ActiveMissionTier": "VoidT1" }, { - "_id": { "$oid": "647765a1dcb87be34e0ce3de" }, - "Node": "CrewBattleNode524", - "Activation": { "$date": { "$numberLong": "1685550001829" } }, - "Expiry": { "$date": { "$numberLong": "1685555401829" } }, - "ActiveMissionTier": "VoidT3" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3dd" }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fa" }, "Node": "CrewBattleNode535", - "Activation": { "$date": { "$numberLong": "1685550001827" } }, - "Expiry": { "$date": { "$numberLong": "1685555401827" } }, + "Activation": { "$date": { "$numberLong": "1689085201827" } }, + "Expiry": { "$date": { "$numberLong": "1689090601827" } }, "ActiveMissionTier": "VoidT2" }, { - "_id": { "$oid": "647765a1dcb87be34e0ce3dc" }, - "Node": "CrewBattleNode503", - "Activation": { "$date": { "$numberLong": "1685550001825" } }, - "Expiry": { "$date": { "$numberLong": "1685555401825" } }, - "ActiveMissionTier": "VoidT1" - }, - { - "_id": { "$oid": "647765a1dcb87be34e0ce3e0" }, - "Node": "CrewBattleNode542", - "Activation": { "$date": { "$numberLong": "1685550001834" } }, - "Expiry": { "$date": { "$numberLong": "1685555401834" } }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fc" }, + "Node": "CrewBattleNode527", + "Activation": { "$date": { "$numberLong": "1689085201832" } }, + "Expiry": { "$date": { "$numberLong": "1689090601832" } }, "ActiveMissionTier": "VoidT4" }, { - "_id": { "$oid": "647765a1dcb87be34e0ce3df" }, + "_id": { "$oid": "64ad5bb1f7dbfff5eebd15fd" }, + "Node": "CrewBattleNode554", + "Activation": { "$date": { "$numberLong": "1689085201834" } }, + "Expiry": { "$date": { "$numberLong": "1689090601834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b13" }, + "Node": "CrewBattleNode522", + "Activation": { "$date": { "$numberLong": "1689088801821" } }, + "Expiry": { "$date": { "$numberLong": "1689094201821" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b14" }, + "Node": "CrewBattleNode503", + "Activation": { "$date": { "$numberLong": "1689088801825" } }, + "Expiry": { "$date": { "$numberLong": "1689094201825" } }, + "ActiveMissionTier": "VoidT1" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b15" }, + "Node": "CrewBattleNode530", + "Activation": { "$date": { "$numberLong": "1689088801827" } }, + "Expiry": { "$date": { "$numberLong": "1689094201827" } }, + "ActiveMissionTier": "VoidT2" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b16" }, + "Node": "CrewBattleNode521", + "Activation": { "$date": { "$numberLong": "1689088801829" } }, + "Expiry": { "$date": { "$numberLong": "1689094201829" } }, + "ActiveMissionTier": "VoidT3" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b18" }, + "Node": "CrewBattleNode553", + "Activation": { "$date": { "$numberLong": "1689088801834" } }, + "Expiry": { "$date": { "$numberLong": "1689094201834" } }, + "ActiveMissionTier": "VoidT4" + }, + { + "_id": { "$oid": "64ad651275833d8933e29b17" }, "Node": "CrewBattleNode536", - "Activation": { "$date": { "$numberLong": "1685550001832" } }, - "Expiry": { "$date": { "$numberLong": "1685555401832" } }, + "Activation": { "$date": { "$numberLong": "1689088801832" } }, + "Expiry": { "$date": { "$numberLong": "1689094201832" } }, "ActiveMissionTier": "VoidT4" } ], @@ -2216,23 +2220,23 @@ "PrimeTokenAvailability": true, "DailyDeals": [ { - "StoreItem": "/Lotus/StoreItems/Upgrades/Focus/AttackLensGreater", - "Activation": { "$date": { "$numberLong": "1685480400000" } }, - "Expiry": { "$date": { "$numberLong": "1685574000000" } }, - "Discount": 20, - "OriginalPrice": 40, - "SalePrice": 32, + "StoreItem": "/Lotus/StoreItems/Weapons/Tenno/Melee/Gauntlet/Gauntlet", + "Activation": { "$date": { "$numberLong": "1689037200000" } }, + "Expiry": { "$date": { "$numberLong": "1689130800000" } }, + "Discount": 30, + "OriginalPrice": 125, + "SalePrice": 87, "AmountTotal": 125, - "AmountSold": 125 + "AmountSold": 9 } ], "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, "PVPChallengeInstances": [ { - "_id": { "$oid": "6470fd0132c7efc24f00caf0" }, + "_id": { "$oid": "64a860b14248d4428ac6e7c8" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2240,10 +2244,10 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6470fd0132c7efc24f00caf1" }, + "_id": { "$oid": "64a860b14248d4428ac6e7c9" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, "params": [{ "n": "ScriptParamValue", "v": 20 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2251,10 +2255,21 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6470fd0132c7efc24f00caf2" }, + "_id": { "$oid": "64a860b14248d4428ac6e7cb" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, + "params": [{ "n": "ScriptParamValue", "v": 0 }], + "isGenerated": true, + "PVPMode": "PVPMODE_NONE", + "subChallenges": [{ "$oid": "64a860b14248d4428ac6e7c8" }, { "$oid": "64a860b14248d4428ac6e7c9" }, { "$oid": "64a860b14248d4428ac6e7ca" }], + "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + }, + { + "_id": { "$oid": "64a860b14248d4428ac6e7ca" }, "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, + "startDate": { "$date": { "$numberLong": "1688756401177" } }, + "endDate": { "$date": { "$numberLong": "1689361201177" } }, "params": [{ "n": "ScriptParamValue", "v": 10 }], "isGenerated": true, "PVPMode": "PVPMODE_ALL", @@ -2262,21 +2277,32 @@ "Category": "PVPChallengeTypeCategory_WEEKLY" }, { - "_id": { "$oid": "6470fd0132c7efc24f00caf3" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", - "startDate": { "$date": { "$numberLong": "1685126401676" } }, - "endDate": { "$date": { "$numberLong": "1685731201676" } }, - "params": [{ "n": "ScriptParamValue", "v": 0 }], + "_id": { "$oid": "64ad70c987228ffe420d764f" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 2 }], "isGenerated": true, - "PVPMode": "PVPMODE_NONE", - "subChallenges": [{ "$oid": "6470fd0132c7efc24f00caf0" }, { "$oid": "6470fd0132c7efc24f00caf1" }, { "$oid": "6470fd0132c7efc24f00caf2" }], - "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfb8" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "_id": { "$oid": "64ad70c987228ffe420d7650" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], + "isGenerated": true, + "PVPMode": "PVPMODE_TEAMDEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ad70c987228ffe420d764d" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagCaptureMEDIUM", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, "params": [{ "n": "ScriptParamValue", "v": 4 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2284,10 +2310,21 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfb9" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "_id": { "$oid": "64ad70c987228ffe420d7651" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPrimaryHARD", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], + "isGenerated": true, + "PVPMode": "PVPMODE_DEATHMATCH", + "subChallenges": [], + "Category": "PVPChallengeTypeCategory_DAILY" + }, + { + "_id": { "$oid": "64ad70c987228ffe420d764e" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_CAPTURETHEFLAG", @@ -2295,65 +2332,32 @@ "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfbc" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], + "_id": { "$oid": "64ad70c987228ffe420d7652" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsHeadShotsEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 1 }], "isGenerated": true, "PVPMode": "PVPMODE_DEATHMATCH", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfbb" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 2 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfba" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsSecondaryEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_TEAMDEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbf" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballGoalsMEDIUM", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 6 }], + "_id": { "$oid": "64ad70c987228ffe420d7654" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesEASY", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, + "params": [{ "n": "ScriptParamValue", "v": 3 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", "subChallenges": [], "Category": "PVPChallengeTypeCategory_DAILY" }, { - "_id": { "$oid": "6477498105719ffc9780dfbd" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileSlidingEASY", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, - "params": [{ "n": "ScriptParamValue", "v": 1 }], - "isGenerated": true, - "PVPMode": "PVPMODE_DEATHMATCH", - "subChallenges": [], - "Category": "PVPChallengeTypeCategory_DAILY" - }, - { - "_id": { "$oid": "6477498105719ffc9780dfbe" }, - "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsHARD", - "startDate": { "$date": { "$numberLong": "1685539201381" } }, - "endDate": { "$date": { "$numberLong": "1685625601381" } }, + "_id": { "$oid": "64ad70c987228ffe420d7653" }, + "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballPassesMEDIUM", + "startDate": { "$date": { "$numberLong": "1689088201386" } }, + "endDate": { "$date": { "$numberLong": "1689174601386" } }, "params": [{ "n": "ScriptParamValue", "v": 6 }], "isGenerated": true, "PVPMode": "PVPMODE_SPEEDBALL", @@ -2364,52 +2368,22 @@ "PersistentEnemies": [], "PVPAlternativeModes": [], "PVPActiveTournaments": [], - "ProjectPct": [55.93717913052773, 90.86309625235785, 0], + "ProjectPct": [95.66978602549699, 23.79055975443198, 0], "ConstructionProjects": [], "TwitchPromos": [], "ExperimentRecommended": [], "EndlessXpChoices": [ - { "Category": "EXC_NORMAL", "Choices": ["Hydroid", "Mirage", "Limbo"] }, - { "Category": "EXC_HARD", "Choices": ["Zylok", "Sibear", "Dread", "Despair", "Hate"] } + { "Category": "EXC_NORMAL", "Choices": ["Garuda", "Baruuk", "Hildryn"] }, + { "Category": "EXC_HARD", "Choices": ["AckAndBrunt", "Soma", "Vasto", "NamiSolo", "Burston"] } ], "ForceLogoutVersion": 0, "FeaturedGuilds": [ - { - "_id": { "$oid": "5303c4bd06c56f4168b5fed9" }, - "Name": "Miau after Tomorrow", - "Tier": 1, - "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, - "Emblem": true - }, - { - "_id": { "$oid": "56ab8b2407c56fd145c91aa5" }, - "Name": "Slayers of Darkness", - "Tier": 2, - "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, - "Emblem": true - }, - { - "_id": { "$oid": "57ed05cb08c56ffd67386105" }, - "Name": "Nazaryk", - "Tier": 3, - "AllianceId": { "$oid": "5fdcf602fc5cef2d337800e0" }, - "Emblem": true - }, - { "_id": { "$oid": "570f9bda08c56f0887fb6db5" }, "Name": "GentleManz", "Tier": 4, "Emblem": true }, - { - "_id": { "$oid": "56d8b39408c56fd89a1799ec" }, - "Name": "Phantom Vanguard", - "Tier": 5, - "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, - "Emblem": true - }, - { - "_id": { "$oid": "54e44a5006c56f7eab0d5aa9" }, - "Name": "Violet Church", - "Tier": 3, - "AllianceId": { "$oid": "56c44d0b08c56f5c367b4665" }, - "Emblem": true - } + { "_id": { "$oid": "5d6e8383a38e4ab3d87910b4" }, "Name": "KHAO SAN ROAD", "Tier": 1, "AllianceId": { "$oid": "62ca246ada801e95e10faef5" }, "Emblem": true }, + { "_id": { "$oid": "56ab8b2407c56fd145c91aa5" }, "Name": "Slayers of Darkness", "Tier": 2, "AllianceId": { "$oid": "53f9876c07c56f85b1c24ed7" }, "Emblem": true }, + { "_id": { "$oid": "5ad6ae822183db51113cad5a" }, "Name": "Ascension of Immortals", "Tier": 3, "AllianceId": { "$oid": "5f95b2a34c0af225c816a3ed" }, "Emblem": true }, + { "_id": { "$oid": "5b6961f7283a00373e55937f" }, "Name": "FOREVER SUMMER", "Tier": 4, "AllianceId": { "$oid": "62ef727a50f3d0a965003de2" }, "Emblem": true }, + { "_id": { "$oid": "60871578cc2e694df27157a8" }, "Name": "Twelve_Olympians", "Tier": 4, "Emblem": true, "AllianceId": { "$oid": "64857275eb6c266f67034392" } }, + { "_id": { "$oid": "53480a9007c56f925e90f861" }, "Name": "The Remnants of the Void", "Tier": 5, "AllianceId": { "$oid": "55e270f706c56f2e2f0bb7d6" }, "Emblem": true } ], "SeasonInfo": { "Activation": { "$date": { "$numberLong": "1684951200000" } }, @@ -2420,69 +2394,69 @@ "Params": "", "ActiveChallenges": [ { - "_id": { "$oid": "001100020000000000000022" }, + "_id": { "$oid": "001100070000000000000098" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685577600000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithElectricity" + "Activation": { "$date": { "$numberLong": "1688860800000" } }, + "Expiry": { "$date": { "$numberLong": "1689120000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyCollectHundredResources" }, { - "_id": { "$oid": "001100020000000000000023" }, + "_id": { "$oid": "001100080000000000000106" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1685404800000" } }, - "Expiry": { "$date": { "$numberLong": "1685664000000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTransmuteMods" + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689206400000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySlideKills" }, { - "_id": { "$oid": "001100020000000000000024" }, + "_id": { "$oid": "001100080000000000000107" }, "Daily": true, - "Activation": { "$date": { "$numberLong": "1685491200000" } }, - "Expiry": { "$date": { "$numberLong": "1685750400000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailySolveCiphers" + "Activation": { "$date": { "$numberLong": "1689033600000" } }, + "Expiry": { "$date": { "$numberLong": "1689292800000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyPickUpMedallion" }, { - "_id": { "$oid": "001100020000000000000015" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteRescue" + "_id": { "$oid": "001100080000000000000099" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteNightmareMissions" }, { - "_id": { "$oid": "001100020000000000000016" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteKuva" + "_id": { "$oid": "001100080000000000000100" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillArchgunEnemies" }, { - "_id": { "$oid": "001100020000000000000017" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyKillEximus" + "_id": { "$oid": "001100080000000000000101" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPlainsBounties" }, { - "_id": { "$oid": "001100020000000000000018" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPerfectAnimalCapture" + "_id": { "$oid": "001100080000000000000102" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyRailjackHijackDestroyThree" }, { - "_id": { "$oid": "001100020000000000000019" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyUnlockRelics" + "_id": { "$oid": "001100080000000000000103" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyCompleteMobileDefense" }, { - "_id": { "$oid": "001100020000000000000020" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardKillEnemies" + "_id": { "$oid": "001100080000000000000104" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFallenAngel" }, { - "_id": { "$oid": "001100020000000000000021" }, - "Activation": { "$date": { "$numberLong": "1685318400000" } }, - "Expiry": { "$date": { "$numberLong": "1685923200000" } }, - "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardFastCapture" + "_id": { "$oid": "001100080000000000000105" }, + "Activation": { "$date": { "$numberLong": "1688947200000" } }, + "Expiry": { "$date": { "$numberLong": "1689552000000" } }, + "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteNightmareMissions" } ] }, - "Tmp": "{\"sfn\":555}" + "Tmp": "{\"prisbegin\":\"1687363200\",\"prisend\":\"1688572800\",\"sfn\":554}" } -- 2.47.2 From 305b43a78137d5ce62d032cc52a05634c46cf1a5 Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 27 Jul 2023 22:12:32 +0200 Subject: [PATCH 8/9] fix transform method calls Transform has changed in a recent mongoose update and as dependabot updated mongoose the calls were broken. returnedObject is now a Record which is the same as an any object. --- src/models/inventoryModel.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index 37290960..b305fcf7 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -67,7 +67,7 @@ const WeaponSchema = new Schema({ }); WeaponSchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; @@ -123,7 +123,7 @@ const suitSchema = new Schema({ }); suitSchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; delete returnedObject._id; @@ -143,7 +143,8 @@ const FlavourItemSchema = new Schema({ }); FlavourItemSchema.set("toJSON", { - transform(_document, returnedObject: ISuitDocument) { + transform(_document, returnedObject) { + returnedObject.ItemType; delete returnedObject._id; delete returnedObject.__v; } -- 2.47.2 From e86ac26334556bf4bba3bdeedc0a775f9557b89a Mon Sep 17 00:00:00 2001 From: Ordis <134585663+OrdisPrime@users.noreply.github.com> Date: Thu, 27 Jul 2023 22:14:28 +0200 Subject: [PATCH 9/9] remove unused --- src/models/inventoryModel.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index b305fcf7..552cc1f3 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -144,7 +144,6 @@ const FlavourItemSchema = new Schema({ FlavourItemSchema.set("toJSON", { transform(_document, returnedObject) { - returnedObject.ItemType; delete returnedObject._id; delete returnedObject.__v; } -- 2.47.2