mirror of
https://github.com/Kvan7/Exiled-Exchange-2.git
synced 2025-10-30 14:17:55 +00:00
feat(Update to 2): Adds dev + replace with poe 2
Adds my dev files and replaces instances of "POE" with "POE2" maybe a lot
This commit is contained in:
@@ -1,28 +1,32 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"name": "renderer",
|
||||
"path": "renderer"
|
||||
},
|
||||
{
|
||||
"name": "main",
|
||||
"path": "main"
|
||||
},
|
||||
{
|
||||
"name": "docs",
|
||||
"path": "docs"
|
||||
},
|
||||
{
|
||||
"name": "root",
|
||||
"path": "."
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"files.exclude": {
|
||||
"main/": true,
|
||||
"renderer/": true,
|
||||
"docs/": true,
|
||||
"dist/": true
|
||||
}
|
||||
}
|
||||
"folders": [
|
||||
{
|
||||
"name": "renderer",
|
||||
"path": "renderer"
|
||||
},
|
||||
{
|
||||
"name": "main",
|
||||
"path": "main"
|
||||
},
|
||||
{
|
||||
"name": "docs",
|
||||
"path": "docs"
|
||||
},
|
||||
{
|
||||
"name": "root",
|
||||
"path": "."
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"files.exclude": {
|
||||
"main/": true,
|
||||
"renderer/": true,
|
||||
"docs/": true,
|
||||
"dist/": true
|
||||
},
|
||||
"editor.tabSize": 2,
|
||||
"conventionalCommits.scopes": [
|
||||
"Update to 2"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ const BASE = '/awakened-poe-trade/'
|
||||
|
||||
export default defineConfig({
|
||||
title: 'Awakened PoE Trade',
|
||||
description: 'App for price-checking items in Path of Exile',
|
||||
description: 'App for price-checking items in Path of Exile 2',
|
||||
base: BASE,
|
||||
mpa: true,
|
||||
head: [
|
||||
|
||||
@@ -4,7 +4,7 @@ title: FAQ
|
||||
|
||||
- **Where can I change settings, league?**
|
||||
|
||||
Open Path of Exile and press overlay key `Shift + Space`. Click on the button with cog icon there.
|
||||
Open Path of Exile 2 and press overlay key `Shift + Space`. Click on the button with cog icon there.
|
||||

|
||||
|
||||
- **Where can I find the logs?**
|
||||
|
||||
@@ -4,7 +4,7 @@ title: Quick Start
|
||||
|
||||
#### First of all, how does it work? {:style="margin-top: 0;"}
|
||||
|
||||
When you press `Ctrl + C` Path of Exile copies the item's text (under cursor, if any) to the clipboard.
|
||||
When you press `Ctrl + C` Path of Exile 2 copies the item's text (under cursor, if any) to the clipboard.
|
||||
All that remains is to parse text in Awakened PoE Trade and show to you in a fancy way.
|
||||
|
||||
### Usage
|
||||
|
||||
@@ -1,70 +1,70 @@
|
||||
import path from 'path'
|
||||
import { app, Tray, Menu, shell, nativeImage, dialog } from 'electron'
|
||||
import type { ServerEvents } from './server'
|
||||
import path from "path";
|
||||
import { app, Tray, Menu, shell, nativeImage, dialog } from "electron";
|
||||
import type { ServerEvents } from "./server";
|
||||
|
||||
export class AppTray {
|
||||
public overlayKey = 'Shift + Space'
|
||||
private tray: Tray
|
||||
serverPort = 0
|
||||
public overlayKey = "Shift + Space";
|
||||
private tray: Tray;
|
||||
serverPort = 0;
|
||||
|
||||
constructor (server: ServerEvents) {
|
||||
constructor(server: ServerEvents) {
|
||||
let trayImage = nativeImage.createFromPath(
|
||||
path.join(
|
||||
__dirname,
|
||||
process.env.STATIC!,
|
||||
process.platform === "win32" ? "icon.ico" : "icon.png"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (process.platform === 'darwin') {
|
||||
if (process.platform === "darwin") {
|
||||
// Mac image size needs to be smaller, or else it looks huge. Size
|
||||
// guideline is from https://iconhandbook.co.uk/reference/chart/osx/
|
||||
trayImage = trayImage.resize({ width: 22, height: 22 })
|
||||
trayImage = trayImage.resize({ width: 22, height: 22 });
|
||||
}
|
||||
|
||||
this.tray = new Tray(trayImage)
|
||||
this.tray.setToolTip(`Awakened PoE Trade v${app.getVersion()}`)
|
||||
this.rebuildMenu()
|
||||
this.tray = new Tray(trayImage);
|
||||
this.tray.setToolTip(`Awakened PoE Trade v${app.getVersion()}`);
|
||||
this.rebuildMenu();
|
||||
|
||||
server.onEventAnyClient('CLIENT->MAIN::user-action', ({ action }) => {
|
||||
if (action === 'quit') {
|
||||
app.quit()
|
||||
server.onEventAnyClient("CLIENT->MAIN::user-action", ({ action }) => {
|
||||
if (action === "quit") {
|
||||
app.quit();
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
rebuildMenu () {
|
||||
rebuildMenu() {
|
||||
const contextMenu = Menu.buildFromTemplate([
|
||||
{
|
||||
label: 'Settings/League',
|
||||
label: "Settings/League",
|
||||
click: () => {
|
||||
dialog.showMessageBox({
|
||||
title: 'Settings',
|
||||
message: `Open Path of Exile and press "${this.overlayKey}". Click on the button with cog icon there.`
|
||||
})
|
||||
}
|
||||
title: "Settings",
|
||||
message: `Open Path of Exile 2 and press "${this.overlayKey}". Click on the button with cog icon there.`,
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Open in Browser',
|
||||
label: "Open in Browser",
|
||||
click: () => {
|
||||
shell.openExternal(`http://localhost:${this.serverPort}`)
|
||||
}
|
||||
shell.openExternal(`http://localhost:${this.serverPort}`);
|
||||
},
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: 'Open config folder',
|
||||
label: "Open config folder",
|
||||
click: () => {
|
||||
shell.openPath(path.join(app.getPath('userData'), 'apt-data'))
|
||||
}
|
||||
shell.openPath(path.join(app.getPath("userData"), "apt-data"));
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Quit',
|
||||
label: "Quit",
|
||||
click: () => {
|
||||
app.quit()
|
||||
}
|
||||
}
|
||||
])
|
||||
app.quit();
|
||||
},
|
||||
},
|
||||
]);
|
||||
|
||||
this.tray.setContextMenu(contextMenu)
|
||||
this.tray.setContextMenu(contextMenu);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,100 +1,131 @@
|
||||
import fs from 'fs/promises'
|
||||
import path from 'path'
|
||||
import ini from 'ini'
|
||||
import { app } from 'electron'
|
||||
import { hotkeyToString, CodeToKey } from '../../../ipc/KeyToCode'
|
||||
import { guessFileLocation } from './utils'
|
||||
import type { Logger } from '../RemoteLogger'
|
||||
import type { ServerEvents } from '../server'
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import ini from "ini";
|
||||
import { app } from "electron";
|
||||
import { hotkeyToString, CodeToKey } from "../../../ipc/KeyToCode";
|
||||
import { guessFileLocation } from "./utils";
|
||||
import type { Logger } from "../RemoteLogger";
|
||||
import type { ServerEvents } from "../server";
|
||||
|
||||
const POSSIBLE_PATH =
|
||||
(process.platform === 'win32') ? [
|
||||
path.join(app.getPath('documents'), 'My Games\\Path of Exile\\production_Config.ini')
|
||||
] : (process.platform === 'linux') ? [
|
||||
path.join(app.getPath('documents'), 'My Games/Path of Exile/production_Config.ini'),
|
||||
path.join(app.getPath('home'), '.local/share/Steam/steamapps/compatdata/238960/pfx/drive_c/users/steamuser/Documents/My Games/Path of Exile/production_Config.ini')
|
||||
] : (process.platform === 'darwin') ? [
|
||||
path.join(app.getPath('appData'), 'Path of Exile/Preferences/production_Config.ini')
|
||||
] : []
|
||||
process.platform === "win32"
|
||||
? [
|
||||
path.join(
|
||||
app.getPath("documents"),
|
||||
"My Games\\Path of Exile 2\\production_Config.ini"
|
||||
),
|
||||
]
|
||||
: process.platform === "linux"
|
||||
? [
|
||||
path.join(
|
||||
app.getPath("documents"),
|
||||
"My Games/Path of Exile 2/production_Config.ini"
|
||||
),
|
||||
path.join(
|
||||
app.getPath("home"),
|
||||
".local/share/Steam/steamapps/compatdata/238960/pfx/drive_c/users/steamuser/Documents/My Games/Path of Exile 2/production_Config.ini"
|
||||
),
|
||||
]
|
||||
: process.platform === "darwin"
|
||||
? [
|
||||
path.join(
|
||||
app.getPath("appData"),
|
||||
"Path of Exile 2/Preferences/production_Config.ini"
|
||||
),
|
||||
]
|
||||
: [];
|
||||
|
||||
export class GameConfig {
|
||||
private _wantedPath: string | null = null
|
||||
private _actualPath: string | null = null
|
||||
get actualPath () { return this._actualPath }
|
||||
private _wantedPath: string | null = null;
|
||||
private _actualPath: string | null = null;
|
||||
get actualPath() {
|
||||
return this._actualPath;
|
||||
}
|
||||
|
||||
private _showModsKey: string | null = null
|
||||
get showModsKeyNullable () { return this._showModsKey }
|
||||
get showModsKey () { return this._showModsKey ?? 'Alt' }
|
||||
private _showModsKey: string | null = null;
|
||||
get showModsKeyNullable() {
|
||||
return this._showModsKey;
|
||||
}
|
||||
get showModsKey() {
|
||||
return this._showModsKey ?? "Alt";
|
||||
}
|
||||
|
||||
constructor (
|
||||
private server: ServerEvents,
|
||||
private logger: Logger
|
||||
) {}
|
||||
constructor(private server: ServerEvents, private logger: Logger) {}
|
||||
|
||||
async readConfig (filePath: string) {
|
||||
async readConfig(filePath: string) {
|
||||
if (this._wantedPath !== filePath) {
|
||||
this._wantedPath = filePath
|
||||
this._actualPath = null
|
||||
this._wantedPath = filePath;
|
||||
this._actualPath = null;
|
||||
} else {
|
||||
return
|
||||
return;
|
||||
}
|
||||
|
||||
if (!filePath.length) {
|
||||
const guessedPath = await guessFileLocation(POSSIBLE_PATH)
|
||||
const guessedPath = await guessFileLocation(POSSIBLE_PATH);
|
||||
if (guessedPath != null) {
|
||||
filePath = guessedPath
|
||||
filePath = guessedPath;
|
||||
} else {
|
||||
this.logger.write('error [GameConfig] Failed to find game configuration file in the default location.')
|
||||
return
|
||||
this.logger.write(
|
||||
"error [GameConfig] Failed to find game configuration file in the default location."
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
let contents = await fs.readFile(filePath, { encoding: 'utf-8', flag: 'r' })
|
||||
contents = contents.trimStart() // remove BOM
|
||||
const parsed = ini.parse(contents)
|
||||
let contents = await fs.readFile(filePath, {
|
||||
encoding: "utf-8",
|
||||
flag: "r",
|
||||
});
|
||||
contents = contents.trimStart(); // remove BOM
|
||||
const parsed = ini.parse(contents);
|
||||
|
||||
this._showModsKey = this.parseConfigHotkey(
|
||||
parsed['ACTION_KEYS']?.['show_advanced_item_descriptions'])
|
||||
parsed["ACTION_KEYS"]?.["show_advanced_item_descriptions"]
|
||||
);
|
||||
|
||||
this._actualPath = filePath
|
||||
this._actualPath = filePath;
|
||||
} catch {
|
||||
this.logger.write('error [GameConfig] Failed to read game configuration file.')
|
||||
this.logger.write(
|
||||
"error [GameConfig] Failed to read game configuration file."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private parseConfigHotkey (cfgKey?: string): string | null {
|
||||
if (!cfgKey) return null
|
||||
private parseConfigHotkey(cfgKey?: string): string | null {
|
||||
if (!cfgKey) return null;
|
||||
|
||||
const [keyMain, keyMod] = cfgKey.split(' ')
|
||||
const [keyMain, keyMod] = cfgKey.split(" ");
|
||||
|
||||
let key1: string
|
||||
let key1: string;
|
||||
if (CodeToKey[keyMain]) {
|
||||
key1 = CodeToKey[keyMain]
|
||||
key1 = CodeToKey[keyMain];
|
||||
} else {
|
||||
this.logger.write(`error [GameConfig] Failed to read key: ${cfgKey}.`)
|
||||
return null
|
||||
this.logger.write(`error [GameConfig] Failed to read key: ${cfgKey}.`);
|
||||
return null;
|
||||
}
|
||||
|
||||
let key2: string | undefined
|
||||
let key2: string | undefined;
|
||||
if (keyMod) {
|
||||
if (keyMod === '1') {
|
||||
key2 = 'Shift'
|
||||
} else if (keyMod === '2') {
|
||||
key2 = 'Ctrl'
|
||||
} else if (keyMod === '3') {
|
||||
key2 = 'Alt'
|
||||
if (keyMod === "1") {
|
||||
key2 = "Shift";
|
||||
} else if (keyMod === "2") {
|
||||
key2 = "Ctrl";
|
||||
} else if (keyMod === "3") {
|
||||
key2 = "Alt";
|
||||
} else {
|
||||
this.logger.write(`error [GameConfig] Failed to read modifier key: ${cfgKey}.`)
|
||||
return null
|
||||
this.logger.write(
|
||||
`error [GameConfig] Failed to read modifier key: ${cfgKey}.`
|
||||
);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return hotkeyToString(
|
||||
[key1],
|
||||
key2 === 'Ctrl',
|
||||
key2 === 'Shift',
|
||||
key2 === 'Alt'
|
||||
)
|
||||
key2 === "Ctrl",
|
||||
key2 === "Shift",
|
||||
key2 === "Alt"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,101 +1,118 @@
|
||||
import { promises as fs, watchFile, unwatchFile } from 'fs'
|
||||
import path from 'path'
|
||||
import { app } from 'electron'
|
||||
import { guessFileLocation } from './utils'
|
||||
import { ServerEvents } from '../server'
|
||||
import { Logger } from '../RemoteLogger'
|
||||
import { promises as fs, watchFile, unwatchFile } from "fs";
|
||||
import path from "path";
|
||||
import { app } from "electron";
|
||||
import { guessFileLocation } from "./utils";
|
||||
import { ServerEvents } from "../server";
|
||||
import { Logger } from "../RemoteLogger";
|
||||
|
||||
const POSSIBLE_PATH =
|
||||
(process.platform === 'win32') ? [
|
||||
'C:\\Program Files (x86)\\Grinding Gear Games\\Path of Exile\\logs\\Client.txt',
|
||||
'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Path of Exile\\logs\\Client.txt'
|
||||
] : (process.platform === 'linux') ? [
|
||||
path.join(app.getPath('home'), '.wine/drive_c/Program Files (x86)/Grinding Gear Games/Path of Exile/logs/Client.txt'),
|
||||
path.join(app.getPath('home'), '.local/share/Steam/steamapps/common/Path of Exile/logs/Client.txt')
|
||||
] : (process.platform === 'darwin') ? [
|
||||
path.join(app.getPath('home'), 'Library/Caches/com.GGG.PathOfExile/Logs/Client.txt')
|
||||
] : []
|
||||
process.platform === "win32"
|
||||
? [
|
||||
"C:\\Program Files (x86)\\Grinding Gear Games\\Path of Exile 2\\logs\\Client.txt",
|
||||
"C:\\Program Files (x86)\\Steam\\steamapps\\common\\Path of Exile 2\\logs\\Client.txt",
|
||||
]
|
||||
: process.platform === "linux"
|
||||
? [
|
||||
path.join(
|
||||
app.getPath("home"),
|
||||
".wine/drive_c/Program Files (x86)/Grinding Gear Games/Path of Exile 2/logs/Client.txt"
|
||||
),
|
||||
path.join(
|
||||
app.getPath("home"),
|
||||
".local/share/Steam/steamapps/common/Path of Exile 2/logs/Client.txt"
|
||||
),
|
||||
]
|
||||
: process.platform === "darwin"
|
||||
? [
|
||||
path.join(
|
||||
app.getPath("home"),
|
||||
"Library/Caches/com.GGG.PathOfExile/Logs/Client.txt"
|
||||
),
|
||||
]
|
||||
: [];
|
||||
|
||||
export class GameLogWatcher {
|
||||
private _wantedPath: string | null = null
|
||||
get actualPath () { return this._state?.path ?? null }
|
||||
private _wantedPath: string | null = null;
|
||||
get actualPath() {
|
||||
return this._state?.path ?? null;
|
||||
}
|
||||
private _state: {
|
||||
offset: number
|
||||
path: string
|
||||
file: fs.FileHandle
|
||||
isReading: boolean
|
||||
readBuff: Buffer
|
||||
} | null = null
|
||||
offset: number;
|
||||
path: string;
|
||||
file: fs.FileHandle;
|
||||
isReading: boolean;
|
||||
readBuff: Buffer;
|
||||
} | null = null;
|
||||
|
||||
constructor (
|
||||
private server: ServerEvents,
|
||||
private logger: Logger,
|
||||
) {}
|
||||
constructor(private server: ServerEvents, private logger: Logger) {}
|
||||
|
||||
async restart (logFile: string) {
|
||||
async restart(logFile: string) {
|
||||
if (this._wantedPath !== logFile) {
|
||||
this._wantedPath = logFile
|
||||
this._wantedPath = logFile;
|
||||
if (this._state) {
|
||||
unwatchFile(this._state.path)
|
||||
await this._state.file.close()
|
||||
this._state = null
|
||||
unwatchFile(this._state.path);
|
||||
await this._state.file.close();
|
||||
this._state = null;
|
||||
}
|
||||
} else {
|
||||
return
|
||||
return;
|
||||
}
|
||||
|
||||
if (!logFile.length) {
|
||||
const guessedPath = await guessFileLocation(POSSIBLE_PATH)
|
||||
const guessedPath = await guessFileLocation(POSSIBLE_PATH);
|
||||
if (guessedPath != null) {
|
||||
logFile = guessedPath
|
||||
logFile = guessedPath;
|
||||
} else {
|
||||
return
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const file = await fs.open(logFile, 'r')
|
||||
const stats = await file.stat()
|
||||
watchFile(logFile, { interval: 450 }, this.handleFileChange.bind(this))
|
||||
const file = await fs.open(logFile, "r");
|
||||
const stats = await file.stat();
|
||||
watchFile(logFile, { interval: 450 }, this.handleFileChange.bind(this));
|
||||
this._state = {
|
||||
path: logFile,
|
||||
file: file,
|
||||
offset: stats.size,
|
||||
isReading: false,
|
||||
readBuff: Buffer.allocUnsafe(64 * 1024),
|
||||
}
|
||||
};
|
||||
} catch {
|
||||
this.logger.write('error [GameLogWatcher] Failed to watch file.')
|
||||
this.logger.write("error [GameLogWatcher] Failed to watch file.");
|
||||
}
|
||||
}
|
||||
|
||||
private handleFileChange () {
|
||||
private handleFileChange() {
|
||||
if (this._state && !this._state.isReading) {
|
||||
this._state.isReading = true
|
||||
this.readToEOF()
|
||||
this._state.isReading = true;
|
||||
this.readToEOF();
|
||||
}
|
||||
}
|
||||
|
||||
private async readToEOF () {
|
||||
if (!this._state) return
|
||||
private async readToEOF() {
|
||||
if (!this._state) return;
|
||||
|
||||
const { file, readBuff, offset } = this._state
|
||||
const { bytesRead } = await file.read(readBuff, 0, readBuff.length, offset)
|
||||
const { file, readBuff, offset } = this._state;
|
||||
const { bytesRead } = await file.read(readBuff, 0, readBuff.length, offset);
|
||||
|
||||
if (bytesRead) {
|
||||
const str = readBuff.toString('utf8', 0, bytesRead)
|
||||
const lines = str.split('\n').map(line => line.trim()).filter(line => line.length)
|
||||
this.server.sendEventTo('broadcast', {
|
||||
name: 'MAIN->CLIENT::game-log',
|
||||
payload: { lines }
|
||||
})
|
||||
const str = readBuff.toString("utf8", 0, bytesRead);
|
||||
const lines = str
|
||||
.split("\n")
|
||||
.map((line) => line.trim())
|
||||
.filter((line) => line.length);
|
||||
this.server.sendEventTo("broadcast", {
|
||||
name: "MAIN->CLIENT::game-log",
|
||||
payload: { lines },
|
||||
});
|
||||
}
|
||||
|
||||
if (bytesRead) {
|
||||
this._state.offset += bytesRead
|
||||
this.readToEOF()
|
||||
this._state.offset += bytesRead;
|
||||
this.readToEOF();
|
||||
} else {
|
||||
this._state.isReading = false
|
||||
this._state.isReading = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,172 +1,188 @@
|
||||
import path from 'path'
|
||||
import { BrowserWindow, dialog, shell, Menu, WebContents } from 'electron'
|
||||
import { OverlayController, OVERLAY_WINDOW_OPTS } from 'electron-overlay-window'
|
||||
import type { ServerEvents } from '../server'
|
||||
import type { Logger } from '../RemoteLogger'
|
||||
import type { GameWindow } from './GameWindow'
|
||||
import path from "path";
|
||||
import { BrowserWindow, dialog, shell, Menu, WebContents } from "electron";
|
||||
import {
|
||||
OverlayController,
|
||||
OVERLAY_WINDOW_OPTS,
|
||||
} from "electron-overlay-window";
|
||||
import type { ServerEvents } from "../server";
|
||||
import type { Logger } from "../RemoteLogger";
|
||||
import type { GameWindow } from "./GameWindow";
|
||||
|
||||
export class OverlayWindow {
|
||||
public isInteractable = false
|
||||
public wasUsedRecently = true
|
||||
private window?: BrowserWindow
|
||||
private overlayKey: string = 'Shift + Space'
|
||||
private isOverlayKeyUsed = false
|
||||
public isInteractable = false;
|
||||
public wasUsedRecently = true;
|
||||
private window?: BrowserWindow;
|
||||
private overlayKey: string = "Shift + Space";
|
||||
private isOverlayKeyUsed = false;
|
||||
|
||||
constructor (
|
||||
constructor(
|
||||
private server: ServerEvents,
|
||||
private logger: Logger,
|
||||
private poeWindow: GameWindow,
|
||||
private poeWindow: GameWindow
|
||||
) {
|
||||
this.server.onEventAnyClient('OVERLAY->MAIN::focus-game', this.assertGameActive)
|
||||
this.poeWindow.on('active-change', this.handlePoeWindowActiveChange)
|
||||
this.poeWindow.onAttach(this.handleOverlayAttached)
|
||||
this.server.onEventAnyClient(
|
||||
"OVERLAY->MAIN::focus-game",
|
||||
this.assertGameActive
|
||||
);
|
||||
this.poeWindow.on("active-change", this.handlePoeWindowActiveChange);
|
||||
this.poeWindow.onAttach(this.handleOverlayAttached);
|
||||
|
||||
this.server.onEventAnyClient('CLIENT->MAIN::used-recently', (e) => {
|
||||
this.wasUsedRecently = e.isOverlay
|
||||
})
|
||||
this.server.onEventAnyClient("CLIENT->MAIN::used-recently", (e) => {
|
||||
this.wasUsedRecently = e.isOverlay;
|
||||
});
|
||||
|
||||
if (process.argv.includes('--no-overlay')) return
|
||||
if (process.argv.includes("--no-overlay")) return;
|
||||
|
||||
this.window = new BrowserWindow({
|
||||
icon: path.join(__dirname, process.env.STATIC!, 'icon.png'),
|
||||
icon: path.join(__dirname, process.env.STATIC!, "icon.png"),
|
||||
...OVERLAY_WINDOW_OPTS,
|
||||
width: 800,
|
||||
height: 600,
|
||||
webPreferences: {
|
||||
allowRunningInsecureContent: false,
|
||||
webviewTag: true,
|
||||
spellcheck: false
|
||||
spellcheck: false,
|
||||
},
|
||||
});
|
||||
|
||||
this.window.setMenu(
|
||||
Menu.buildFromTemplate([
|
||||
{ role: "editMenu" },
|
||||
{ role: "reload" },
|
||||
{ role: "toggleDevTools" },
|
||||
])
|
||||
);
|
||||
|
||||
this.window.webContents.on("before-input-event", this.handleExtraCommands);
|
||||
this.window.webContents.on(
|
||||
"did-attach-webview",
|
||||
(_, webviewWebContents) => {
|
||||
webviewWebContents.on("before-input-event", this.handleExtraCommands);
|
||||
}
|
||||
})
|
||||
|
||||
this.window.setMenu(Menu.buildFromTemplate([
|
||||
{ role: 'editMenu' },
|
||||
{ role: 'reload' },
|
||||
{ role: 'toggleDevTools' }
|
||||
]))
|
||||
|
||||
this.window.webContents.on('before-input-event', this.handleExtraCommands)
|
||||
this.window.webContents.on('did-attach-webview', (_, webviewWebContents) => {
|
||||
webviewWebContents.on('before-input-event', this.handleExtraCommands)
|
||||
})
|
||||
);
|
||||
|
||||
this.window.webContents.setWindowOpenHandler((details) => {
|
||||
shell.openExternal(details.url)
|
||||
return { action: 'deny' }
|
||||
})
|
||||
shell.openExternal(details.url);
|
||||
return { action: "deny" };
|
||||
});
|
||||
}
|
||||
|
||||
loadAppPage (port: number) {
|
||||
const url = process.env.VITE_DEV_SERVER_URL ||
|
||||
`http://localhost:${port}/index.html`
|
||||
loadAppPage(port: number) {
|
||||
const url =
|
||||
process.env.VITE_DEV_SERVER_URL || `http://localhost:${port}/index.html`;
|
||||
|
||||
if (!this.window) {
|
||||
shell.openExternal(url)
|
||||
return
|
||||
shell.openExternal(url);
|
||||
return;
|
||||
}
|
||||
|
||||
if (process.env.VITE_DEV_SERVER_URL) {
|
||||
this.window.loadURL(url)
|
||||
this.window.webContents.openDevTools({ mode: 'detach', activate: false })
|
||||
this.window.loadURL(url);
|
||||
this.window.webContents.openDevTools({ mode: "detach", activate: false });
|
||||
} else {
|
||||
this.window.loadURL(url)
|
||||
this.window.loadURL(url);
|
||||
}
|
||||
}
|
||||
|
||||
assertOverlayActive = () => {
|
||||
if (!this.isInteractable) {
|
||||
this.isInteractable = true
|
||||
OverlayController.activateOverlay()
|
||||
this.poeWindow.isActive = false
|
||||
this.isInteractable = true;
|
||||
OverlayController.activateOverlay();
|
||||
this.poeWindow.isActive = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
assertGameActive = () => {
|
||||
if (this.isInteractable) {
|
||||
this.isInteractable = false
|
||||
OverlayController.focusTarget()
|
||||
this.poeWindow.isActive = true
|
||||
this.isInteractable = false;
|
||||
OverlayController.focusTarget();
|
||||
this.poeWindow.isActive = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
toggleActiveState = () => {
|
||||
this.isOverlayKeyUsed = true
|
||||
this.isOverlayKeyUsed = true;
|
||||
if (this.isInteractable) {
|
||||
this.assertGameActive()
|
||||
this.assertGameActive();
|
||||
} else {
|
||||
this.assertOverlayActive()
|
||||
this.assertOverlayActive();
|
||||
}
|
||||
};
|
||||
|
||||
updateOpts(overlayKey: string, windowTitle: string) {
|
||||
this.overlayKey = overlayKey;
|
||||
this.poeWindow.attach(this.window, windowTitle);
|
||||
}
|
||||
|
||||
updateOpts (overlayKey: string, windowTitle: string) {
|
||||
this.overlayKey = overlayKey
|
||||
this.poeWindow.attach(this.window, windowTitle)
|
||||
}
|
||||
private handleExtraCommands = (
|
||||
event: Electron.Event,
|
||||
input: Electron.Input
|
||||
) => {
|
||||
if (input.type !== "keyDown") return;
|
||||
|
||||
private handleExtraCommands = (event: Electron.Event, input: Electron.Input) => {
|
||||
if (input.type !== 'keyDown') return
|
||||
let { code, control: ctrlKey, shift: shiftKey, alt: altKey } = input;
|
||||
|
||||
let { code, control: ctrlKey, shift: shiftKey, alt: altKey } = input
|
||||
|
||||
if (code.startsWith('Key')) {
|
||||
code = code.slice('Key'.length)
|
||||
} else if (code.startsWith('Digit')) {
|
||||
code = code.slice('Digit'.length)
|
||||
if (code.startsWith("Key")) {
|
||||
code = code.slice("Key".length);
|
||||
} else if (code.startsWith("Digit")) {
|
||||
code = code.slice("Digit".length);
|
||||
}
|
||||
|
||||
if (shiftKey && altKey) code = `Shift + Alt + ${code}`
|
||||
else if (ctrlKey && shiftKey) code = `Ctrl + Shift + ${code}`
|
||||
else if (ctrlKey && altKey) code = `Ctrl + Alt + ${code}`
|
||||
else if (altKey) code = `Alt + ${code}`
|
||||
else if (ctrlKey) code = `Ctrl + ${code}`
|
||||
else if (shiftKey) code = `Shift + ${code}`
|
||||
if (shiftKey && altKey) code = `Shift + Alt + ${code}`;
|
||||
else if (ctrlKey && shiftKey) code = `Ctrl + Shift + ${code}`;
|
||||
else if (ctrlKey && altKey) code = `Ctrl + Alt + ${code}`;
|
||||
else if (altKey) code = `Alt + ${code}`;
|
||||
else if (ctrlKey) code = `Ctrl + ${code}`;
|
||||
else if (shiftKey) code = `Shift + ${code}`;
|
||||
|
||||
switch (code) {
|
||||
case 'Escape':
|
||||
case 'Ctrl + W': {
|
||||
event.preventDefault()
|
||||
process.nextTick(this.assertGameActive)
|
||||
break
|
||||
case "Escape":
|
||||
case "Ctrl + W": {
|
||||
event.preventDefault();
|
||||
process.nextTick(this.assertGameActive);
|
||||
break;
|
||||
}
|
||||
case this.overlayKey: {
|
||||
event.preventDefault()
|
||||
process.nextTick(this.toggleActiveState)
|
||||
break
|
||||
event.preventDefault();
|
||||
process.nextTick(this.toggleActiveState);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private handleOverlayAttached = (hasAccess?: boolean) => {
|
||||
if (hasAccess === false) {
|
||||
this.logger.write('error [Overlay] PoE is running with administrator rights')
|
||||
this.logger.write(
|
||||
"error [Overlay] PoE is running with administrator rights"
|
||||
);
|
||||
|
||||
dialog.showErrorBox(
|
||||
'PoE window - No access',
|
||||
"PoE window - No access",
|
||||
// ----------------------
|
||||
'Path of Exile is running with administrator rights.\n' +
|
||||
'\n' +
|
||||
'You need to restart Awakened PoE Trade with administrator rights.'
|
||||
)
|
||||
"Path of Exile 2 is running with administrator rights.\n" +
|
||||
"\n" +
|
||||
"You need to restart Awakened PoE Trade with administrator rights."
|
||||
);
|
||||
} else {
|
||||
this.server.sendEventTo('broadcast', {
|
||||
name: 'MAIN->OVERLAY::overlay-attached',
|
||||
payload: undefined
|
||||
})
|
||||
this.server.sendEventTo("broadcast", {
|
||||
name: "MAIN->OVERLAY::overlay-attached",
|
||||
payload: undefined,
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private handlePoeWindowActiveChange = (isActive: boolean) => {
|
||||
if (isActive && this.isInteractable) {
|
||||
this.isInteractable = false
|
||||
this.isInteractable = false;
|
||||
}
|
||||
this.server.sendEventTo('broadcast', {
|
||||
name: 'MAIN->OVERLAY::focus-change',
|
||||
this.server.sendEventTo("broadcast", {
|
||||
name: "MAIN->OVERLAY::focus-change",
|
||||
payload: {
|
||||
game: isActive,
|
||||
overlay: this.isInteractable,
|
||||
usingHotkey: this.isOverlayKeyUsed
|
||||
}
|
||||
})
|
||||
this.isOverlayKeyUsed = false
|
||||
}
|
||||
usingHotkey: this.isOverlayKeyUsed,
|
||||
},
|
||||
});
|
||||
this.isOverlayKeyUsed = false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,56 +1,60 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true
|
||||
},
|
||||
plugins: [
|
||||
'@typescript-eslint'
|
||||
// 'only-warn'
|
||||
],
|
||||
extends: [
|
||||
'plugin:vue/base',
|
||||
'standard-with-typescript'
|
||||
],
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'quote-props': ['error', 'consistent-as-needed'],
|
||||
'no-labels': ['error', { allowLoop: true }],
|
||||
'multiline-ternary': 'off',
|
||||
'no-unused-vars': 'off',
|
||||
'no-undef': 'off',
|
||||
'@typescript-eslint/no-unused-vars': ['error'],
|
||||
'@typescript-eslint/strict-boolean-expressions': 'off',
|
||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||
'@typescript-eslint/explicit-function-return-type': 'off',
|
||||
'@typescript-eslint/restrict-template-expressions': 'off',
|
||||
'@typescript-eslint/prefer-nullish-coalescing': 'off',
|
||||
'@typescript-eslint/prefer-optional-chain': 'off',
|
||||
'@typescript-eslint/prefer-readonly': 'off',
|
||||
'@typescript-eslint/no-floating-promises': 'off',
|
||||
'@typescript-eslint/no-misused-promises': 'off',
|
||||
'@typescript-eslint/prefer-reduce-type-parameter': 'off',
|
||||
'@typescript-eslint/no-invalid-void-type': 'off',
|
||||
'@typescript-eslint/consistent-indexed-object-style': 'off',
|
||||
'import/first': 'off',
|
||||
'import/no-duplicates': 'off',
|
||||
'func-call-spacing': 'off',
|
||||
// TODO: refactor IPC and enable
|
||||
'@typescript-eslint/consistent-type-assertions': 'off'
|
||||
},
|
||||
overrides: [{
|
||||
files: ['src/main/**/*'],
|
||||
root: true,
|
||||
env: {
|
||||
node: true
|
||||
}
|
||||
}, {
|
||||
files: ['*.ts'],
|
||||
node: true
|
||||
},
|
||||
plugins: [
|
||||
'@typescript-eslint',
|
||||
'prettier'
|
||||
// 'only-warn'
|
||||
],
|
||||
extends: [
|
||||
'plugin:vue/base',
|
||||
'standard-with-typescript',
|
||||
'plugin:prettier/recommended',
|
||||
'eslint-plugin-prettier/recommended',
|
||||
],
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'quote-props': ['error', 'consistent-as-needed'],
|
||||
'no-labels': ['error', { allowLoop: true }],
|
||||
'multiline-ternary': 'off',
|
||||
'no-unused-vars': 'off',
|
||||
'no-undef': 'off',
|
||||
'@typescript-eslint/no-unused-vars': ['error'],
|
||||
'@typescript-eslint/strict-boolean-expressions': 'off',
|
||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||
'@typescript-eslint/explicit-function-return-type': 'off',
|
||||
'@typescript-eslint/restrict-template-expressions': 'off',
|
||||
'@typescript-eslint/prefer-nullish-coalescing': 'off',
|
||||
'@typescript-eslint/prefer-optional-chain': 'off',
|
||||
'@typescript-eslint/prefer-readonly': 'off',
|
||||
'@typescript-eslint/no-floating-promises': 'off',
|
||||
'@typescript-eslint/no-misused-promises': 'off',
|
||||
'@typescript-eslint/prefer-reduce-type-parameter': 'off',
|
||||
'@typescript-eslint/no-invalid-void-type': 'off',
|
||||
'@typescript-eslint/consistent-indexed-object-style': 'off',
|
||||
'import/first': 'off',
|
||||
'import/no-duplicates': 'off',
|
||||
'func-call-spacing': 'off',
|
||||
// TODO: refactor IPC and enable
|
||||
'@typescript-eslint/consistent-type-assertions': 'off',
|
||||
"indent": ["error", "tab"]
|
||||
},
|
||||
overrides: [{
|
||||
files: ['src/main/**/*'],
|
||||
env: {
|
||||
node: true
|
||||
}
|
||||
}, {
|
||||
files: ['*.ts'],
|
||||
parserOptions: {
|
||||
project: './tsconfig.json'
|
||||
}
|
||||
}],
|
||||
parserOptions: {
|
||||
project: './tsconfig.json'
|
||||
parser: '@typescript-eslint/parser',
|
||||
extraFileExtensions: ['.vue']
|
||||
}
|
||||
}],
|
||||
parserOptions: {
|
||||
parser: '@typescript-eslint/parser',
|
||||
extraFileExtensions: ['.vue']
|
||||
}
|
||||
}
|
||||
|
||||
7
renderer/.prettierrc
Normal file
7
renderer/.prettierrc
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"endOfLine": "lf",
|
||||
"tabWidth": 2,
|
||||
"useTabs": true,
|
||||
"trailingComma": "es5"
|
||||
}
|
||||
314
renderer/package-lock.json
generated
314
renderer/package-lock.json
generated
@@ -33,7 +33,10 @@
|
||||
"@types/object-hash": "^3.0.0",
|
||||
"@vitejs/plugin-vue": "^4.0.0",
|
||||
"autoprefixer": "^10.0.2",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"postcss": "^8.2.14",
|
||||
"prettier": "3.4.2",
|
||||
"typescript": "5.6.x",
|
||||
"vite": "^5.0.0",
|
||||
"vue-tsc": "^2.0.0"
|
||||
@@ -502,8 +505,8 @@
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
|
||||
"integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"eslint-visitor-keys": "^3.4.3"
|
||||
},
|
||||
@@ -521,8 +524,8 @@
|
||||
"version": "4.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
|
||||
"integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
|
||||
}
|
||||
@@ -531,8 +534,8 @@
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
|
||||
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
@@ -555,8 +558,8 @@
|
||||
"version": "8.57.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
|
||||
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
@@ -575,8 +578,8 @@
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
|
||||
"integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
|
||||
"deprecated": "Use @eslint/config-array instead",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@humanwhocodes/object-schema": "^2.0.3",
|
||||
"debug": "^4.3.1",
|
||||
@@ -590,8 +593,8 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
|
||||
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=12.22"
|
||||
},
|
||||
@@ -605,8 +608,8 @@
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
|
||||
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
|
||||
"deprecated": "Use @eslint/object-schema instead",
|
||||
"license": "BSD-3-Clause",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/@intlify/core-base": {
|
||||
"version": "10.0.4",
|
||||
@@ -789,6 +792,19 @@
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@pkgr/core": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
|
||||
"integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.18.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/unts"
|
||||
}
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
||||
@@ -1383,8 +1399,8 @@
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
|
||||
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
||||
"license": "ISC",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/@vitejs/plugin-vue": {
|
||||
"version": "4.6.2",
|
||||
@@ -1739,8 +1755,8 @@
|
||||
"version": "8.14.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
|
||||
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
@@ -1752,8 +1768,8 @@
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
|
||||
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peerDependencies": {
|
||||
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
}
|
||||
@@ -1762,8 +1778,8 @@
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
@@ -1855,8 +1871,8 @@
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||
"license": "Python-2.0",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "Python-2.0"
|
||||
},
|
||||
"node_modules/array-buffer-byte-length": {
|
||||
"version": "1.0.1",
|
||||
@@ -2071,8 +2087,8 @@
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
@@ -2157,8 +2173,8 @@
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
@@ -2197,8 +2213,8 @@
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
@@ -2277,8 +2293,8 @@
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.6",
|
||||
@@ -2377,8 +2393,8 @@
|
||||
"version": "4.3.7",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
||||
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"ms": "^2.1.3"
|
||||
},
|
||||
@@ -2395,8 +2411,8 @@
|
||||
"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==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/define-data-property": {
|
||||
"version": "1.1.4",
|
||||
@@ -2463,8 +2479,8 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
|
||||
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"esutils": "^2.0.2"
|
||||
},
|
||||
@@ -2712,8 +2728,8 @@
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
|
||||
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
@@ -2726,8 +2742,8 @@
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
|
||||
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
|
||||
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.6.1",
|
||||
@@ -2778,6 +2794,19 @@
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-config-prettier": {
|
||||
"version": "9.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
|
||||
"integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"eslint-config-prettier": "bin/cli.js"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-config-standard": {
|
||||
"version": "17.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz",
|
||||
@@ -3014,6 +3043,37 @@
|
||||
"eslint": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-prettier": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
|
||||
"integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prettier-linter-helpers": "^1.0.0",
|
||||
"synckit": "^0.9.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint-plugin-prettier"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/eslint": ">=8.0.0",
|
||||
"eslint": ">=8.0.0",
|
||||
"eslint-config-prettier": "*",
|
||||
"prettier": ">=3.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/eslint": {
|
||||
"optional": true
|
||||
},
|
||||
"eslint-config-prettier": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-promise": {
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz",
|
||||
@@ -3100,8 +3160,8 @@
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
|
||||
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
@@ -3113,8 +3173,8 @@
|
||||
"version": "7.2.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
|
||||
"integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^5.2.0"
|
||||
@@ -3130,8 +3190,8 @@
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
|
||||
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
@@ -3140,8 +3200,8 @@
|
||||
"version": "9.6.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
|
||||
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.9.0",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
@@ -3158,8 +3218,8 @@
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
|
||||
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-3-Clause",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"estraverse": "^5.1.0"
|
||||
},
|
||||
@@ -3171,8 +3231,8 @@
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
|
||||
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
@@ -3181,8 +3241,8 @@
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
|
||||
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"estraverse": "^5.2.0"
|
||||
},
|
||||
@@ -3194,8 +3254,8 @@
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
|
||||
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
@@ -3220,8 +3280,8 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
||||
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@@ -3232,6 +3292,13 @@
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-diff": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
|
||||
"integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/fast-glob": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
|
||||
@@ -3264,15 +3331,15 @@
|
||||
"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==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-levenshtein": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
||||
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fastest-levenshtein": {
|
||||
"version": "1.0.16",
|
||||
@@ -3296,8 +3363,8 @@
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
|
||||
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"flat-cache": "^3.0.4"
|
||||
},
|
||||
@@ -3321,8 +3388,8 @@
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
||||
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"locate-path": "^6.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
@@ -3338,8 +3405,8 @@
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
|
||||
"integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"flatted": "^3.2.9",
|
||||
"keyv": "^4.5.3",
|
||||
@@ -3353,8 +3420,8 @@
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
|
||||
"integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
|
||||
"license": "ISC",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/for-each": {
|
||||
"version": "0.3.3",
|
||||
@@ -3400,8 +3467,8 @@
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
||||
"license": "ISC",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.3",
|
||||
@@ -3498,8 +3565,8 @@
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"deprecated": "Glob versions prior to v9 are no longer supported",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
@@ -3531,8 +3598,8 @@
|
||||
"version": "13.24.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
|
||||
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"type-fest": "^0.20.2"
|
||||
},
|
||||
@@ -3547,8 +3614,8 @@
|
||||
"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==",
|
||||
"devOptional": true,
|
||||
"license": "(MIT OR CC0-1.0)",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
@@ -3611,8 +3678,8 @@
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
|
||||
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/has-bigints": {
|
||||
"version": "1.0.2",
|
||||
@@ -3628,8 +3695,8 @@
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
@@ -3715,8 +3782,8 @@
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
|
||||
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">= 4"
|
||||
}
|
||||
@@ -3725,8 +3792,8 @@
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"parent-module": "^1.0.0",
|
||||
"resolve-from": "^4.0.0"
|
||||
@@ -3742,8 +3809,8 @@
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
||||
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=0.8.19"
|
||||
}
|
||||
@@ -3753,8 +3820,8 @@
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
@@ -3764,8 +3831,8 @@
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"license": "ISC",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/internal-slot": {
|
||||
"version": "1.0.7",
|
||||
@@ -4031,8 +4098,8 @@
|
||||
"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==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
@@ -4215,8 +4282,8 @@
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1"
|
||||
},
|
||||
@@ -4228,22 +4295,22 @@
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
|
||||
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/json-stable-stringify-without-jsonify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
|
||||
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/json5": {
|
||||
"version": "1.0.2",
|
||||
@@ -4262,8 +4329,8 @@
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
||||
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"json-buffer": "3.0.1"
|
||||
}
|
||||
@@ -4272,8 +4339,8 @@
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
||||
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"prelude-ls": "^1.2.1",
|
||||
"type-check": "~0.4.0"
|
||||
@@ -4301,8 +4368,8 @@
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"p-locate": "^5.0.0"
|
||||
},
|
||||
@@ -4324,8 +4391,8 @@
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "10.4.3",
|
||||
@@ -4377,8 +4444,8 @@
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
@@ -4409,8 +4476,8 @@
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/muggle-string": {
|
||||
"version": "0.4.1",
|
||||
@@ -4452,8 +4519,8 @@
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
|
||||
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/natural-compare-lite": {
|
||||
"version": "1.4.0",
|
||||
@@ -4629,8 +4696,8 @@
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
@@ -4639,8 +4706,8 @@
|
||||
"version": "0.9.4",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
|
||||
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"deep-is": "^0.1.3",
|
||||
"fast-levenshtein": "^2.0.6",
|
||||
@@ -4657,8 +4724,8 @@
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
||||
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"yocto-queue": "^0.1.0"
|
||||
},
|
||||
@@ -4673,8 +4740,8 @@
|
||||
"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==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"p-limit": "^3.0.2"
|
||||
},
|
||||
@@ -4695,8 +4762,8 @@
|
||||
"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==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"callsites": "^3.0.0"
|
||||
},
|
||||
@@ -4715,8 +4782,8 @@
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
@@ -4725,8 +4792,8 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@@ -4977,18 +5044,47 @@
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
|
||||
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
|
||||
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"prettier": "bin/prettier.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"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,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-diff": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/punycode": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
||||
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
@@ -5109,8 +5205,8 @@
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
@@ -5130,8 +5226,8 @@
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"deprecated": "Rimraf versions prior to v4 are no longer supported",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"glob": "^7.1.3"
|
||||
},
|
||||
@@ -5542,8 +5638,8 @@
|
||||
"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==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
@@ -5621,8 +5717,8 @@
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"has-flag": "^4.0.0"
|
||||
},
|
||||
@@ -5642,6 +5738,30 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/synckit": {
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz",
|
||||
"integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@pkgr/core": "^0.1.0",
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/unts"
|
||||
}
|
||||
},
|
||||
"node_modules/synckit/node_modules/tslib": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||
"dev": true,
|
||||
"license": "0BSD"
|
||||
},
|
||||
"node_modules/tailwindcss": {
|
||||
"version": "3.4.15",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz",
|
||||
@@ -5683,8 +5803,8 @@
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/thenify": {
|
||||
"version": "3.3.1",
|
||||
@@ -5774,8 +5894,8 @@
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
||||
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"prelude-ls": "^1.2.1"
|
||||
},
|
||||
@@ -5945,8 +6065,8 @@
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||
"devOptional": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
@@ -6251,8 +6371,8 @@
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
|
||||
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@@ -6355,8 +6475,8 @@
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"license": "ISC",
|
||||
"optional": true
|
||||
"devOptional": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/xml-name-validator": {
|
||||
"version": "4.0.0",
|
||||
@@ -6384,8 +6504,8 @@
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
|
||||
@@ -34,7 +34,10 @@
|
||||
"@types/object-hash": "^3.0.0",
|
||||
"@vitejs/plugin-vue": "^4.0.0",
|
||||
"autoprefixer": "^10.0.2",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"postcss": "^8.2.14",
|
||||
"prettier": "3.4.2",
|
||||
"typescript": "5.6.x",
|
||||
"vite": "^5.0.0",
|
||||
"vue-tsc": "^2.0.0"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -28,12 +28,12 @@
|
||||
<div class="mb-2">
|
||||
<div class="flex-1 mb-1">{{ t(':poe_log_file') }}</div>
|
||||
<input v-model.trim="clientLog"
|
||||
class="rounded bg-gray-900 px-1 block w-full font-sans" placeholder="...?/Grinding Gear Games/Path of Exile/logs/Client.txt">
|
||||
class="rounded bg-gray-900 px-1 block w-full font-sans" placeholder="...?/Grinding Gear Games/Path of Exile 2/logs/Client.txt">
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<div class="flex-1 mb-1">{{ t(':poe_cfg_file') }}</div>
|
||||
<input v-model.trim="gameConfig"
|
||||
class="rounded bg-gray-900 px-1 block w-full font-sans" placeholder="...?/My Games/Path of Exile/production_Config.ini">
|
||||
class="rounded bg-gray-900 px-1 block w-full font-sans" placeholder="...?/My Games/Path of Exile 2/production_Config.ini">
|
||||
</div>
|
||||
<hr class="mb-4 mx-8 border-gray-700">
|
||||
<div class="mb-2">
|
||||
|
||||
Reference in New Issue
Block a user