Compare commits
12 Commits
98c73f61a0
...
Readme-Cre
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bf8b60716 | |||
| 8a77b150a8 | |||
| 5068bc162d | |||
| ee7ec290ba | |||
| 5f005609b8 | |||
| a4a3fc0382 | |||
| 909c9d99d5 | |||
| 4c2b3141d7 | |||
| 78423da39e | |||
| 1562e5394d | |||
| cfa902a343 | |||
| 549c504712 |
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"generator": "dense",
|
||||
"rules": [
|
||||
"remove_comments",
|
||||
"remove_spaces",
|
||||
"compute_expression",
|
||||
"convert_luau_number",
|
||||
"group_local_assignment",
|
||||
"remove_empty_do",
|
||||
"remove_function_call_parens",
|
||||
"remove_nil_declaration",
|
||||
"remove_unused_if_branch",
|
||||
"remove_unused_variable"
|
||||
]
|
||||
}
|
||||
"generator": "dense",
|
||||
"rules": [
|
||||
"remove_comments",
|
||||
"remove_spaces",
|
||||
"compute_expression",
|
||||
"convert_luau_number",
|
||||
"group_local_assignment",
|
||||
"remove_empty_do",
|
||||
"remove_function_call_parens",
|
||||
"remove_nil_declaration",
|
||||
"remove_unused_if_branch",
|
||||
"remove_unused_variable"
|
||||
]
|
||||
}
|
||||
|
||||
22
.gitea/workflows/lint.yml
Normal file
22
.gitea/workflows/lint.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
name: CI
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v5
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
cache: true
|
||||
- name: Install node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: latest
|
||||
cache: "pnpm"
|
||||
- run: pnpm install
|
||||
- run: pnpm prettier . --check
|
||||
- run: pnpm eslint .
|
||||
2
.prettierignore
Normal file
2
.prettierignore
Normal file
@@ -0,0 +1,2 @@
|
||||
pnpm-lock.yaml
|
||||
.pnpm-store/
|
||||
@@ -3,4 +3,4 @@
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "all",
|
||||
"useTabs": true
|
||||
}
|
||||
}
|
||||
|
||||
7
.vscode/extensions.json
vendored
7
.vscode/extensions.json
vendored
@@ -1,6 +1,3 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"roblox-ts.vscode-roblox-ts",
|
||||
"dbaeumer.vscode-eslint"
|
||||
]
|
||||
}
|
||||
"recommendations": ["roblox-ts.vscode-roblox-ts", "dbaeumer.vscode-eslint"]
|
||||
}
|
||||
|
||||
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -17,4 +17,4 @@
|
||||
"files.associations": {
|
||||
"*.luau": "lua"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
21
README.md
Normal file
21
README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# 🥀 Aconit
|
||||
Aconit is an asymmetric horror game that is available on Roblox. The project is open source, so you can contribute to help develop it.
|
||||
|
||||
[]() [](https://discord.gg/QpAUUTJm3h) [](roblox.com/games/76850012177914/Aconit) [](https://roblox-ts.com) [](https://flamework.fireboltofdeath.dev/)
|
||||
|
||||
## 🪛 Developement Setup
|
||||
I am describing this for people who have never used Node.js before. If you are already familiar with it, you may find it repetitive.
|
||||
This project is based on roblox-ts and flamework.
|
||||
|
||||
### 🪢 Node.js and pnpm
|
||||
First of all you need to install [node.js](https://pnpm.io/) and [pnpm](https://pnpm.io/).
|
||||
Node.js is used for building the project, and pnpm is the package manager.
|
||||
|
||||
### 📦 Depencies installation
|
||||
For install all depencies simply run ``pnpm install``.
|
||||
|
||||
### 📝 Developement help
|
||||
Don't hesitate to check [roblox-ts](https://roblox-ts.com) and [flamework](https://flamework.fireboltofdeath.dev/) docs or send a message on our [discord server](https://discord.gg/QpAUUTJm3h).
|
||||
|
||||
### 🔨 Builds
|
||||
Builds are automatic with gitea actions.
|
||||
59
build.project.json
Normal file
59
build.project.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"name": "roblox-ts-game",
|
||||
"globIgnorePaths": ["**/package.json", "**/tsconfig.json"],
|
||||
"tree": {
|
||||
"$className": "DataModel",
|
||||
"ServerScriptService": {
|
||||
"$className": "ServerScriptService",
|
||||
"TS": {
|
||||
"$path": "out/server"
|
||||
}
|
||||
},
|
||||
"ReplicatedStorage": {
|
||||
"$className": "ReplicatedStorage",
|
||||
"rbxts_include": {
|
||||
"$path": "include",
|
||||
"node_modules": {
|
||||
"$className": "Folder",
|
||||
"@rbxts": {
|
||||
"$path": "node_modules/@rbxts"
|
||||
},
|
||||
"@flamework": {
|
||||
"$path": "node_modules/@flamework"
|
||||
}
|
||||
}
|
||||
},
|
||||
"TS": {
|
||||
"$path": "out/shared"
|
||||
}
|
||||
},
|
||||
"StarterPlayer": {
|
||||
"$className": "StarterPlayer",
|
||||
"StarterPlayerScripts": {
|
||||
"$className": "StarterPlayerScripts",
|
||||
"TS": {
|
||||
"$path": "out/client"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Workspace": {
|
||||
"$className": "Workspace",
|
||||
"$properties": {
|
||||
"FilteringEnabled": true
|
||||
}
|
||||
},
|
||||
"HttpService": {
|
||||
"$className": "HttpService",
|
||||
"$properties": {
|
||||
"HttpEnabled": true
|
||||
}
|
||||
},
|
||||
"SoundService": {
|
||||
"$className": "SoundService",
|
||||
"$properties": {
|
||||
"RespectFilteringEnabled": true
|
||||
}
|
||||
},
|
||||
"$path": "map.rbxlx"
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"name": "roblox-ts-game",
|
||||
"globIgnorePaths": [
|
||||
"**/package.json",
|
||||
"**/tsconfig.json"
|
||||
],
|
||||
"globIgnorePaths": ["**/package.json", "**/tsconfig.json"],
|
||||
"tree": {
|
||||
"$className": "DataModel",
|
||||
"ServerScriptService": {
|
||||
@@ -58,4 +55,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +1,25 @@
|
||||
import { defineConfig, globalIgnores } from "eslint/config";
|
||||
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
||||
// import robloxTs from "eslint-plugin-roblox-ts";
|
||||
import prettier from "eslint-plugin-prettier";
|
||||
import tsParser from "@typescript-eslint/parser";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
// @ts-check
|
||||
import js from "@eslint/js";
|
||||
import { FlatCompat } from "@eslint/eslintrc";
|
||||
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
|
||||
import roblox from "eslint-plugin-roblox-ts";
|
||||
import { defineConfig } from "eslint/config";
|
||||
import ts from "typescript-eslint";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
recommendedConfig: js.configs.recommended,
|
||||
allConfig: js.configs.all,
|
||||
});
|
||||
|
||||
export default defineConfig([
|
||||
globalIgnores(["out"]),
|
||||
export default defineConfig(
|
||||
js.configs.recommended,
|
||||
ts.configs.recommended,
|
||||
roblox.configs.recommended,
|
||||
eslintPluginPrettierRecommended,
|
||||
{
|
||||
extends: compat.extends(
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:roblox-ts/recommended-legacy",
|
||||
"plugin:prettier/recommended",
|
||||
),
|
||||
|
||||
plugins: {
|
||||
"@typescript-eslint": typescriptEslint,
|
||||
// "roblox-ts": robloxTs,
|
||||
prettier,
|
||||
},
|
||||
|
||||
languageOptions: {
|
||||
parser: tsParser,
|
||||
ecmaVersion: 2018,
|
||||
sourceType: "module",
|
||||
|
||||
parserOptions: {
|
||||
jsx: true,
|
||||
useJSXTextNode: true,
|
||||
project: "./tsconfig.json",
|
||||
},
|
||||
},
|
||||
|
||||
rules: {
|
||||
"prettier/prettier": "warn",
|
||||
"@typescript-eslint/no-unused-vars": ["error", {
|
||||
"varsIgnorePattern": "^[A-Z].*(Service|Controller|Component)$"
|
||||
}]
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
varsIgnorePattern: "^[A-Z].*(Service|Controller|Component)$",
|
||||
},
|
||||
],
|
||||
"@typescript-eslint/no-empty-object-type": "off",
|
||||
},
|
||||
},
|
||||
]);
|
||||
);
|
||||
|
||||
90
package.json
90
package.json
@@ -1,47 +1,45 @@
|
||||
{
|
||||
"name": "aconit",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "rbxtsc",
|
||||
"watch": "rbxtsc -w",
|
||||
"lint": "eslint",
|
||||
"production": "darklua minify out out"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "Aconit team",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"devDependencies": {
|
||||
"@eslint/eslintrc": "^3.3.1",
|
||||
"@eslint/js": "^9.37.0",
|
||||
"@rbxts/compiler-types": "^3.0.0-types.0",
|
||||
"@rbxts/services": "^1.5.5",
|
||||
"@rbxts/signal": "^1.1.1",
|
||||
"@rbxts/t": "^3.2.1",
|
||||
"@rbxts/types": "^1.0.882",
|
||||
"@typescript-eslint/eslint-plugin": "^8.44.0",
|
||||
"@typescript-eslint/parser": "^8.44.0",
|
||||
"eslint": "^9.36.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.4",
|
||||
"eslint-plugin-roblox-ts": "^1.2.1",
|
||||
"prettier": "^3.6.2",
|
||||
"rbxts-transformer-flamework": "^1.3.2",
|
||||
"rbxts-transformer-instances": "^1.0.1",
|
||||
"rbxts-transformer-services": "^1.1.1",
|
||||
"rbxts-transformer-t-new-new": "^0.2.0",
|
||||
"roblox-ts": "^3.0.0",
|
||||
"typescript": "~5.5.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@flamework/components": "^1.3.2",
|
||||
"@flamework/core": "^1.3.2",
|
||||
"@flamework/networking": "^1.3.2",
|
||||
"@rbxts/object-utils": "^1.0.4",
|
||||
"@rbxts/pretty-react-hooks": "^0.6.4",
|
||||
"@rbxts/react": "^17.2.3",
|
||||
"@rbxts/react-roblox": "^17.2.3"
|
||||
}
|
||||
}
|
||||
"name": "aconit",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "rbxtsc",
|
||||
"watch": "rbxtsc -w",
|
||||
"lint": "eslint",
|
||||
"prettier": "prettier",
|
||||
"production": "darklua minify out out"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "Aconit team",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.39.1",
|
||||
"@rbxts/compiler-types": "3.0.0-types.0",
|
||||
"@rbxts/services": "^1.6.0",
|
||||
"@rbxts/signal": "^1.1.1",
|
||||
"@rbxts/t": "^3.2.1",
|
||||
"@rbxts/types": "^1.0.896",
|
||||
"eslint": "^9.39.1",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.4",
|
||||
"eslint-plugin-roblox-ts": "^1.3.0",
|
||||
"prettier": "^3.7.4",
|
||||
"rbxts-transformer-flamework": "^1.3.2",
|
||||
"rbxts-transformer-instances": "^1.0.1",
|
||||
"rbxts-transformer-services": "^1.1.1",
|
||||
"roblox-ts": "^3.0.0",
|
||||
"typescript": "~5.5.4",
|
||||
"typescript-eslint": "^8.49.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@flamework/components": "^1.3.2",
|
||||
"@flamework/core": "^1.3.2",
|
||||
"@flamework/networking": "^1.3.2",
|
||||
"@rbxts/object-utils": "^1.0.4",
|
||||
"@rbxts/pretty-react-hooks": "^0.6.4",
|
||||
"@rbxts/react": "^17.2.3",
|
||||
"@rbxts/react-roblox": "^17.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
501
pnpm-lock.yaml
generated
501
pnpm-lock.yaml
generated
@@ -30,17 +30,14 @@ importers:
|
||||
specifier: ^17.2.3
|
||||
version: 17.2.3
|
||||
devDependencies:
|
||||
'@eslint/eslintrc':
|
||||
specifier: ^3.3.1
|
||||
version: 3.3.1
|
||||
'@eslint/js':
|
||||
specifier: ^9.37.0
|
||||
version: 9.38.0
|
||||
specifier: ^9.39.1
|
||||
version: 9.39.1
|
||||
'@rbxts/compiler-types':
|
||||
specifier: ^3.0.0-types.0
|
||||
specifier: 3.0.0-types.0
|
||||
version: 3.0.0-types.0
|
||||
'@rbxts/services':
|
||||
specifier: ^1.5.5
|
||||
specifier: ^1.6.0
|
||||
version: 1.6.0
|
||||
'@rbxts/signal':
|
||||
specifier: ^1.1.1
|
||||
@@ -49,29 +46,23 @@ importers:
|
||||
specifier: ^3.2.1
|
||||
version: 3.2.1
|
||||
'@rbxts/types':
|
||||
specifier: ^1.0.882
|
||||
version: 1.0.887
|
||||
'@typescript-eslint/eslint-plugin':
|
||||
specifier: ^8.44.0
|
||||
version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.5.4))(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/parser':
|
||||
specifier: ^8.44.0
|
||||
version: 8.46.2(eslint@9.38.0)(typescript@5.5.4)
|
||||
specifier: ^1.0.896
|
||||
version: 1.0.896
|
||||
eslint:
|
||||
specifier: ^9.36.0
|
||||
version: 9.38.0
|
||||
specifier: ^9.39.1
|
||||
version: 9.39.1
|
||||
eslint-config-prettier:
|
||||
specifier: ^10.1.8
|
||||
version: 10.1.8(eslint@9.38.0)
|
||||
version: 10.1.8(eslint@9.39.1)
|
||||
eslint-plugin-prettier:
|
||||
specifier: ^5.5.4
|
||||
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.38.0))(eslint@9.38.0)(prettier@3.6.2)
|
||||
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.1))(eslint@9.39.1)(prettier@3.7.4)
|
||||
eslint-plugin-roblox-ts:
|
||||
specifier: ^1.2.1
|
||||
version: 1.2.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.5.4))(eslint@9.38.0)(typescript@5.5.4)
|
||||
specifier: ^1.3.0
|
||||
version: 1.3.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.5.4))(eslint@9.39.1)(typescript@5.5.4)
|
||||
prettier:
|
||||
specifier: ^3.6.2
|
||||
version: 3.6.2
|
||||
specifier: ^3.7.4
|
||||
version: 3.7.4
|
||||
rbxts-transformer-flamework:
|
||||
specifier: ^1.3.2
|
||||
version: 1.3.2(typescript@5.5.4)
|
||||
@@ -81,15 +72,15 @@ importers:
|
||||
rbxts-transformer-services:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1(typescript@5.5.4)
|
||||
rbxts-transformer-t-new-new:
|
||||
specifier: ^0.2.0
|
||||
version: 0.2.0
|
||||
roblox-ts:
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0
|
||||
typescript:
|
||||
specifier: ~5.5.3
|
||||
specifier: ~5.5.4
|
||||
version: 5.5.4
|
||||
typescript-eslint:
|
||||
specifier: ^8.49.0
|
||||
version: 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
|
||||
packages:
|
||||
|
||||
@@ -107,28 +98,28 @@ packages:
|
||||
resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/config-helpers@0.4.1':
|
||||
resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==}
|
||||
'@eslint/config-helpers@0.4.2':
|
||||
resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/core@0.16.0':
|
||||
resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
|
||||
'@eslint/core@0.17.0':
|
||||
resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/eslintrc@3.3.1':
|
||||
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
|
||||
'@eslint/eslintrc@3.3.3':
|
||||
resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/js@9.38.0':
|
||||
resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==}
|
||||
'@eslint/js@9.39.1':
|
||||
resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/object-schema@2.1.7':
|
||||
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@eslint/plugin-kit@0.4.0':
|
||||
resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==}
|
||||
'@eslint/plugin-kit@0.4.1':
|
||||
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@flamework/components@1.3.2':
|
||||
@@ -218,12 +209,15 @@ packages:
|
||||
'@rbxts/t@3.2.1':
|
||||
resolution: {integrity: sha512-/fnf2QSx+TI3HSJ6QW2ikvGQk0mlx/63UXo60pLAKGqbxXiAuTJh88bpKpHw6aCzfFLJAwrVIcgCUOokLMPcag==}
|
||||
|
||||
'@rbxts/types@1.0.887':
|
||||
resolution: {integrity: sha512-vhp4vIKEfl1TaBcKxBxU5dTFsVNqLkvefoF9pw/Epb+Jk9T+0g4SFQQtBdCu3UdZcBGK/PWk/IJeEyoRNDMkSw==}
|
||||
'@rbxts/types@1.0.896':
|
||||
resolution: {integrity: sha512-zuw1lpvW8hfnHxUmkoEjJ/NDrfpDjqzKWV1iU18DRoM0VsMleLfUv/t7giN70ST/KnGS6S6ubH8la+JTEl6aRw==}
|
||||
|
||||
'@roblox-ts/luau-ast@2.0.0':
|
||||
resolution: {integrity: sha512-cmMi093IdwBOLVxwuordhM8AmtbyTIyRpsTbB0D/JauidW4SXsQRQowSwWjHo4QP0DRJBXvOIlxtqEQi50uNzQ==}
|
||||
|
||||
'@roblox-ts/luau-ast@2.0.1':
|
||||
resolution: {integrity: sha512-jej2mzRGwhR9wu4woAtgTwqsKADlegZYlQ+M5qVHRojvjoyJVFkLrSbhBKRr8HR+fVW5nCz0qX7kNa0tSpAY+A==}
|
||||
|
||||
'@roblox-ts/path-translator@1.1.0':
|
||||
resolution: {integrity: sha512-D0akTmnNYqBw+ZIek5JxocT3BjmbgGOuOy0x1nIIxHBPNLGCpzseToY8jyYs/0mlvnN2xnSP/k8Tv+jvGOQSwQ==}
|
||||
|
||||
@@ -236,107 +230,107 @@ packages:
|
||||
'@types/json-schema@7.0.15':
|
||||
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.46.2':
|
||||
resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==}
|
||||
'@typescript-eslint/eslint-plugin@8.49.0':
|
||||
resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': ^8.46.2
|
||||
'@typescript-eslint/parser': ^8.49.0
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/parser@8.46.2':
|
||||
resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==}
|
||||
'@typescript-eslint/parser@8.49.0':
|
||||
resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/project-service@8.44.0':
|
||||
resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==}
|
||||
'@typescript-eslint/project-service@8.46.4':
|
||||
resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/project-service@8.46.2':
|
||||
resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==}
|
||||
'@typescript-eslint/project-service@8.49.0':
|
||||
resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/scope-manager@8.44.0':
|
||||
resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==}
|
||||
'@typescript-eslint/scope-manager@8.46.4':
|
||||
resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/scope-manager@8.46.2':
|
||||
resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==}
|
||||
'@typescript-eslint/scope-manager@8.49.0':
|
||||
resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.44.0':
|
||||
resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==}
|
||||
'@typescript-eslint/tsconfig-utils@8.46.4':
|
||||
resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.46.2':
|
||||
resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==}
|
||||
'@typescript-eslint/tsconfig-utils@8.49.0':
|
||||
resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/type-utils@8.44.0':
|
||||
resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==}
|
||||
'@typescript-eslint/type-utils@8.46.4':
|
||||
resolution: {integrity: sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/type-utils@8.46.2':
|
||||
resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==}
|
||||
'@typescript-eslint/type-utils@8.49.0':
|
||||
resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/types@8.44.0':
|
||||
resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==}
|
||||
'@typescript-eslint/types@8.46.4':
|
||||
resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/types@8.46.2':
|
||||
resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==}
|
||||
'@typescript-eslint/types@8.49.0':
|
||||
resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.44.0':
|
||||
resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==}
|
||||
'@typescript-eslint/typescript-estree@8.46.4':
|
||||
resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.46.2':
|
||||
resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==}
|
||||
'@typescript-eslint/typescript-estree@8.49.0':
|
||||
resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/utils@8.44.0':
|
||||
resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==}
|
||||
'@typescript-eslint/utils@8.46.4':
|
||||
resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/utils@8.46.2':
|
||||
resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==}
|
||||
'@typescript-eslint/utils@8.49.0':
|
||||
resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.44.0':
|
||||
resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==}
|
||||
'@typescript-eslint/visitor-keys@8.46.4':
|
||||
resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.46.2':
|
||||
resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==}
|
||||
'@typescript-eslint/visitor-keys@8.49.0':
|
||||
resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
acorn-jsx@5.3.2:
|
||||
@@ -460,8 +454,8 @@ packages:
|
||||
eslint-config-prettier:
|
||||
optional: true
|
||||
|
||||
eslint-plugin-roblox-ts@1.2.1:
|
||||
resolution: {integrity: sha512-B6PyXsz2urPJIr2TxZBD3qQwCM0FN6lUOoddJTk1AcdRkWSTe1Vc6VuNP593u7Tbq9sStjW2k2iYjI1G5CFNiQ==}
|
||||
eslint-plugin-roblox-ts@1.3.0:
|
||||
resolution: {integrity: sha512-J67YmWK1SVWWa5mtWCm+9LnK8uN5Snhe0hwDnCKc93LWDzX4YL37PyFQhhlP+oS5I6eM6ZdLMg3rvJURLQn5cQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=22.5.1}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': '>=6.0.0'
|
||||
@@ -480,8 +474,8 @@ packages:
|
||||
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
eslint@9.38.0:
|
||||
resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==}
|
||||
eslint@9.39.1:
|
||||
resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -510,10 +504,6 @@ packages:
|
||||
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
expand-tilde@2.0.2:
|
||||
resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
fast-deep-equal@3.1.3:
|
||||
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
|
||||
|
||||
@@ -536,6 +526,15 @@ packages:
|
||||
fastq@1.19.1:
|
||||
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
|
||||
|
||||
fdir@6.5.0:
|
||||
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
peerDependencies:
|
||||
picomatch: ^3 || ^4
|
||||
peerDependenciesMeta:
|
||||
picomatch:
|
||||
optional: true
|
||||
|
||||
file-entry-cache@8.0.0:
|
||||
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
@@ -578,10 +577,6 @@ packages:
|
||||
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
|
||||
engines: {node: 6.* || 8.* || >= 10.*}
|
||||
|
||||
get-installed-path@4.0.8:
|
||||
resolution: {integrity: sha512-PmANK1xElIHlHH2tXfOoTnSDUjX1X3GvKK6ZyLbUnSCCn1pADwu67eVWttuPzJWrXDDT2MfO6uAaKILOFfitmA==}
|
||||
engines: {node: '>=6', npm: '>=5', yarn: '>=1'}
|
||||
|
||||
glob-parent@5.1.2:
|
||||
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
||||
engines: {node: '>= 6'}
|
||||
@@ -594,14 +589,6 @@ packages:
|
||||
resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
|
||||
engines: {node: '>=16 || 14 >=14.17'}
|
||||
|
||||
global-modules@1.0.0:
|
||||
resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
global-prefix@1.0.2:
|
||||
resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
globals@14.0.0:
|
||||
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -609,9 +596,6 @@ packages:
|
||||
graceful-fs@4.2.11:
|
||||
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
||||
|
||||
graphemer@1.4.0:
|
||||
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
|
||||
|
||||
has-flag@4.0.0:
|
||||
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -623,10 +607,6 @@ packages:
|
||||
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
homedir-polyfill@1.0.3:
|
||||
resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
hosted-git-info@4.1.0:
|
||||
resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -647,9 +627,6 @@ packages:
|
||||
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
|
||||
engines: {node: '>=0.8.19'}
|
||||
|
||||
ini@1.3.8:
|
||||
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
|
||||
|
||||
is-binary-path@2.1.0:
|
||||
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -674,15 +651,11 @@ packages:
|
||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||
engines: {node: '>=0.12.0'}
|
||||
|
||||
is-windows@1.0.2:
|
||||
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
isexe@2.0.0:
|
||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||
|
||||
js-yaml@4.1.0:
|
||||
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
||||
js-yaml@4.1.1:
|
||||
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
|
||||
hasBin: true
|
||||
|
||||
json-buffer@3.0.1:
|
||||
@@ -782,10 +755,6 @@ packages:
|
||||
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
parse-passwd@1.0.0:
|
||||
resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
path-exists@4.0.0:
|
||||
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -805,6 +774,10 @@ packages:
|
||||
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
||||
engines: {node: '>=8.6'}
|
||||
|
||||
picomatch@4.0.3:
|
||||
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
prelude-ls@1.2.1:
|
||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
@@ -813,8 +786,8 @@ packages:
|
||||
resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
prettier@3.6.2:
|
||||
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
|
||||
prettier@3.7.4:
|
||||
resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
@@ -838,9 +811,6 @@ packages:
|
||||
peerDependencies:
|
||||
typescript: ^5.2.2
|
||||
|
||||
rbxts-transformer-t-new-new@0.2.0:
|
||||
resolution: {integrity: sha512-IS3z/SBv78ft/eDMu46boB5eyl2hBAffVoJzUeIzuVBe6z38mz9L/c7OvCvgEX9QGRZI+LmEJA/mgPR6gH7Bsw==}
|
||||
|
||||
readdirp@3.6.0:
|
||||
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
|
||||
engines: {node: '>=8.10.0'}
|
||||
@@ -853,10 +823,6 @@ packages:
|
||||
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
resolve-dir@1.0.1:
|
||||
resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
resolve-from@4.0.0:
|
||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -926,6 +892,10 @@ packages:
|
||||
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
|
||||
tinyglobby@0.2.15:
|
||||
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
|
||||
engines: {node: '>=8.0'}
|
||||
@@ -940,6 +910,13 @@ packages:
|
||||
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
||||
typescript-eslint@8.49.0:
|
||||
resolution: {integrity: sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
typescript@5.5.3:
|
||||
resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==}
|
||||
engines: {node: '>=14.17'}
|
||||
@@ -964,10 +941,6 @@ packages:
|
||||
validate-npm-package-license@3.0.4:
|
||||
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
|
||||
|
||||
which@1.3.1:
|
||||
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
|
||||
hasBin: true
|
||||
|
||||
which@2.0.2:
|
||||
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
|
||||
engines: {node: '>= 8'}
|
||||
@@ -1002,9 +975,9 @@ packages:
|
||||
|
||||
snapshots:
|
||||
|
||||
'@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)':
|
||||
'@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)':
|
||||
dependencies:
|
||||
eslint: 9.38.0
|
||||
eslint: 9.39.1
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@eslint-community/regexpp@4.12.2': {}
|
||||
@@ -1017,15 +990,15 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint/config-helpers@0.4.1':
|
||||
'@eslint/config-helpers@0.4.2':
|
||||
dependencies:
|
||||
'@eslint/core': 0.16.0
|
||||
'@eslint/core': 0.17.0
|
||||
|
||||
'@eslint/core@0.16.0':
|
||||
'@eslint/core@0.17.0':
|
||||
dependencies:
|
||||
'@types/json-schema': 7.0.15
|
||||
|
||||
'@eslint/eslintrc@3.3.1':
|
||||
'@eslint/eslintrc@3.3.3':
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
debug: 4.4.3
|
||||
@@ -1033,19 +1006,19 @@ snapshots:
|
||||
globals: 14.0.0
|
||||
ignore: 5.3.2
|
||||
import-fresh: 3.3.1
|
||||
js-yaml: 4.1.0
|
||||
js-yaml: 4.1.1
|
||||
minimatch: 3.1.2
|
||||
strip-json-comments: 3.1.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint/js@9.38.0': {}
|
||||
'@eslint/js@9.39.1': {}
|
||||
|
||||
'@eslint/object-schema@2.1.7': {}
|
||||
|
||||
'@eslint/plugin-kit@0.4.0':
|
||||
'@eslint/plugin-kit@0.4.1':
|
||||
dependencies:
|
||||
'@eslint/core': 0.16.0
|
||||
'@eslint/core': 0.17.0
|
||||
levn: 0.4.1
|
||||
|
||||
'@flamework/components@1.3.2(@flamework/core@1.3.2)':
|
||||
@@ -1136,10 +1109,12 @@ snapshots:
|
||||
|
||||
'@rbxts/t@3.2.1': {}
|
||||
|
||||
'@rbxts/types@1.0.887': {}
|
||||
'@rbxts/types@1.0.896': {}
|
||||
|
||||
'@roblox-ts/luau-ast@2.0.0': {}
|
||||
|
||||
'@roblox-ts/luau-ast@2.0.1': {}
|
||||
|
||||
'@roblox-ts/path-translator@1.1.0':
|
||||
dependencies:
|
||||
ajv: 8.17.1
|
||||
@@ -1154,16 +1129,15 @@ snapshots:
|
||||
|
||||
'@types/json-schema@7.0.15': {}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.5.4))(eslint@9.38.0)(typescript@5.5.4)':
|
||||
'@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.5.4))(eslint@9.39.1)(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.12.2
|
||||
'@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/scope-manager': 8.46.2
|
||||
'@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/visitor-keys': 8.46.2
|
||||
eslint: 9.38.0
|
||||
graphemer: 1.4.0
|
||||
'@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
'@typescript-eslint/scope-manager': 8.49.0
|
||||
'@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
'@typescript-eslint/visitor-keys': 8.49.0
|
||||
eslint: 9.39.1
|
||||
ignore: 7.0.5
|
||||
natural-compare: 1.4.0
|
||||
ts-api-utils: 2.1.0(typescript@5.5.4)
|
||||
@@ -1171,88 +1145,88 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.5.4)':
|
||||
'@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 8.46.2
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/typescript-estree': 8.46.2(typescript@5.5.4)
|
||||
'@typescript-eslint/visitor-keys': 8.46.2
|
||||
'@typescript-eslint/scope-manager': 8.49.0
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
'@typescript-eslint/typescript-estree': 8.49.0(typescript@5.5.4)
|
||||
'@typescript-eslint/visitor-keys': 8.49.0
|
||||
debug: 4.4.3
|
||||
eslint: 9.38.0
|
||||
eslint: 9.39.1
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/project-service@8.44.0(typescript@5.5.4)':
|
||||
'@typescript-eslint/project-service@8.46.4(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
debug: 4.4.3
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/project-service@8.46.2(typescript@5.5.4)':
|
||||
'@typescript-eslint/project-service@8.49.0(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
debug: 4.4.3
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/scope-manager@8.44.0':
|
||||
'@typescript-eslint/scope-manager@8.46.4':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.44.0
|
||||
'@typescript-eslint/visitor-keys': 8.44.0
|
||||
'@typescript-eslint/types': 8.46.4
|
||||
'@typescript-eslint/visitor-keys': 8.46.4
|
||||
|
||||
'@typescript-eslint/scope-manager@8.46.2':
|
||||
'@typescript-eslint/scope-manager@8.49.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/visitor-keys': 8.46.2
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
'@typescript-eslint/visitor-keys': 8.49.0
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.5.4)':
|
||||
'@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.5.4)':
|
||||
dependencies:
|
||||
typescript: 5.5.4
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.5.4)':
|
||||
'@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.5.4)':
|
||||
dependencies:
|
||||
typescript: 5.5.4
|
||||
|
||||
'@typescript-eslint/type-utils@8.44.0(eslint@9.38.0)(typescript@5.5.4)':
|
||||
'@typescript-eslint/type-utils@8.46.4(eslint@9.39.1)(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.44.0
|
||||
'@typescript-eslint/typescript-estree': 8.44.0(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.44.0(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.46.4
|
||||
'@typescript-eslint/typescript-estree': 8.46.4(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.46.4(eslint@9.39.1)(typescript@5.5.4)
|
||||
debug: 4.4.3
|
||||
eslint: 9.38.0
|
||||
eslint: 9.39.1
|
||||
ts-api-utils: 2.1.0(typescript@5.5.4)
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/type-utils@8.46.2(eslint@9.38.0)(typescript@5.5.4)':
|
||||
'@typescript-eslint/type-utils@8.49.0(eslint@9.39.1)(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/typescript-estree': 8.46.2(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
'@typescript-eslint/typescript-estree': 8.49.0(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
debug: 4.4.3
|
||||
eslint: 9.38.0
|
||||
eslint: 9.39.1
|
||||
ts-api-utils: 2.1.0(typescript@5.5.4)
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/types@8.44.0': {}
|
||||
'@typescript-eslint/types@8.46.4': {}
|
||||
|
||||
'@typescript-eslint/types@8.46.2': {}
|
||||
'@typescript-eslint/types@8.49.0': {}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.44.0(typescript@5.5.4)':
|
||||
'@typescript-eslint/typescript-estree@8.46.4(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@typescript-eslint/project-service': 8.44.0(typescript@5.5.4)
|
||||
'@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.44.0
|
||||
'@typescript-eslint/visitor-keys': 8.44.0
|
||||
'@typescript-eslint/project-service': 8.46.4(typescript@5.5.4)
|
||||
'@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.46.4
|
||||
'@typescript-eslint/visitor-keys': 8.46.4
|
||||
debug: 4.4.3
|
||||
fast-glob: 3.3.3
|
||||
is-glob: 4.0.3
|
||||
@@ -1263,52 +1237,51 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.46.2(typescript@5.5.4)':
|
||||
'@typescript-eslint/typescript-estree@8.49.0(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@typescript-eslint/project-service': 8.46.2(typescript@5.5.4)
|
||||
'@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/visitor-keys': 8.46.2
|
||||
'@typescript-eslint/project-service': 8.49.0(typescript@5.5.4)
|
||||
'@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.5.4)
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
'@typescript-eslint/visitor-keys': 8.49.0
|
||||
debug: 4.4.3
|
||||
fast-glob: 3.3.3
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.7.3
|
||||
tinyglobby: 0.2.15
|
||||
ts-api-utils: 2.1.0(typescript@5.5.4)
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.44.0(eslint@9.38.0)(typescript@5.5.4)':
|
||||
'@typescript-eslint/utils@8.46.4(eslint@9.39.1)(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0)
|
||||
'@typescript-eslint/scope-manager': 8.44.0
|
||||
'@typescript-eslint/types': 8.44.0
|
||||
'@typescript-eslint/typescript-estree': 8.44.0(typescript@5.5.4)
|
||||
eslint: 9.38.0
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
|
||||
'@typescript-eslint/scope-manager': 8.46.4
|
||||
'@typescript-eslint/types': 8.46.4
|
||||
'@typescript-eslint/typescript-estree': 8.46.4(typescript@5.5.4)
|
||||
eslint: 9.39.1
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.5.4)':
|
||||
'@typescript-eslint/utils@8.49.0(eslint@9.39.1)(typescript@5.5.4)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0)
|
||||
'@typescript-eslint/scope-manager': 8.46.2
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/typescript-estree': 8.46.2(typescript@5.5.4)
|
||||
eslint: 9.38.0
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
|
||||
'@typescript-eslint/scope-manager': 8.49.0
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
'@typescript-eslint/typescript-estree': 8.49.0(typescript@5.5.4)
|
||||
eslint: 9.39.1
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.44.0':
|
||||
'@typescript-eslint/visitor-keys@8.46.4':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.44.0
|
||||
'@typescript-eslint/types': 8.46.4
|
||||
eslint-visitor-keys: 4.2.1
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.46.2':
|
||||
'@typescript-eslint/visitor-keys@8.49.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.46.2
|
||||
'@typescript-eslint/types': 8.49.0
|
||||
eslint-visitor-keys: 4.2.1
|
||||
|
||||
acorn-jsx@5.3.2(acorn@8.15.0):
|
||||
@@ -1412,25 +1385,26 @@ snapshots:
|
||||
|
||||
escape-string-regexp@4.0.0: {}
|
||||
|
||||
eslint-config-prettier@10.1.8(eslint@9.38.0):
|
||||
eslint-config-prettier@10.1.8(eslint@9.39.1):
|
||||
dependencies:
|
||||
eslint: 9.38.0
|
||||
eslint: 9.39.1
|
||||
|
||||
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.38.0))(eslint@9.38.0)(prettier@3.6.2):
|
||||
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.1))(eslint@9.39.1)(prettier@3.7.4):
|
||||
dependencies:
|
||||
eslint: 9.38.0
|
||||
prettier: 3.6.2
|
||||
eslint: 9.39.1
|
||||
prettier: 3.7.4
|
||||
prettier-linter-helpers: 1.0.0
|
||||
synckit: 0.11.11
|
||||
optionalDependencies:
|
||||
eslint-config-prettier: 10.1.8(eslint@9.38.0)
|
||||
eslint-config-prettier: 10.1.8(eslint@9.39.1)
|
||||
|
||||
eslint-plugin-roblox-ts@1.2.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.5.4))(eslint@9.38.0)(typescript@5.5.4):
|
||||
eslint-plugin-roblox-ts@1.3.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.5.4))(eslint@9.39.1)(typescript@5.5.4):
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/type-utils': 8.44.0(eslint@9.38.0)(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.44.0(eslint@9.38.0)(typescript@5.5.4)
|
||||
eslint: 9.38.0
|
||||
'@roblox-ts/luau-ast': 2.0.1
|
||||
'@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
'@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1)(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.46.4(eslint@9.39.1)(typescript@5.5.4)
|
||||
eslint: 9.39.1
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -1444,16 +1418,16 @@ snapshots:
|
||||
|
||||
eslint-visitor-keys@4.2.1: {}
|
||||
|
||||
eslint@9.38.0:
|
||||
eslint@9.39.1:
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0)
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
|
||||
'@eslint-community/regexpp': 4.12.2
|
||||
'@eslint/config-array': 0.21.1
|
||||
'@eslint/config-helpers': 0.4.1
|
||||
'@eslint/core': 0.16.0
|
||||
'@eslint/eslintrc': 3.3.1
|
||||
'@eslint/js': 9.38.0
|
||||
'@eslint/plugin-kit': 0.4.0
|
||||
'@eslint/config-helpers': 0.4.2
|
||||
'@eslint/core': 0.17.0
|
||||
'@eslint/eslintrc': 3.3.3
|
||||
'@eslint/js': 9.39.1
|
||||
'@eslint/plugin-kit': 0.4.1
|
||||
'@humanfs/node': 0.16.7
|
||||
'@humanwhocodes/module-importer': 1.0.1
|
||||
'@humanwhocodes/retry': 0.4.3
|
||||
@@ -1501,10 +1475,6 @@ snapshots:
|
||||
|
||||
esutils@2.0.3: {}
|
||||
|
||||
expand-tilde@2.0.2:
|
||||
dependencies:
|
||||
homedir-polyfill: 1.0.3
|
||||
|
||||
fast-deep-equal@3.1.3: {}
|
||||
|
||||
fast-diff@1.3.0: {}
|
||||
@@ -1527,6 +1497,10 @@ snapshots:
|
||||
dependencies:
|
||||
reusify: 1.1.0
|
||||
|
||||
fdir@6.5.0(picomatch@4.0.3):
|
||||
optionalDependencies:
|
||||
picomatch: 4.0.3
|
||||
|
||||
file-entry-cache@8.0.0:
|
||||
dependencies:
|
||||
flat-cache: 4.0.1
|
||||
@@ -1568,10 +1542,6 @@ snapshots:
|
||||
|
||||
get-caller-file@2.0.5: {}
|
||||
|
||||
get-installed-path@4.0.8:
|
||||
dependencies:
|
||||
global-modules: 1.0.0
|
||||
|
||||
glob-parent@5.1.2:
|
||||
dependencies:
|
||||
is-glob: 4.0.3
|
||||
@@ -1587,26 +1557,10 @@ snapshots:
|
||||
minipass: 4.2.8
|
||||
path-scurry: 1.11.1
|
||||
|
||||
global-modules@1.0.0:
|
||||
dependencies:
|
||||
global-prefix: 1.0.2
|
||||
is-windows: 1.0.2
|
||||
resolve-dir: 1.0.1
|
||||
|
||||
global-prefix@1.0.2:
|
||||
dependencies:
|
||||
expand-tilde: 2.0.2
|
||||
homedir-polyfill: 1.0.3
|
||||
ini: 1.3.8
|
||||
is-windows: 1.0.2
|
||||
which: 1.3.1
|
||||
|
||||
globals@14.0.0: {}
|
||||
|
||||
graceful-fs@4.2.11: {}
|
||||
|
||||
graphemer@1.4.0: {}
|
||||
|
||||
has-flag@4.0.0: {}
|
||||
|
||||
hashids@2.3.0: {}
|
||||
@@ -1615,10 +1569,6 @@ snapshots:
|
||||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
|
||||
homedir-polyfill@1.0.3:
|
||||
dependencies:
|
||||
parse-passwd: 1.0.0
|
||||
|
||||
hosted-git-info@4.1.0:
|
||||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
@@ -1634,8 +1584,6 @@ snapshots:
|
||||
|
||||
imurmurhash@0.1.4: {}
|
||||
|
||||
ini@1.3.8: {}
|
||||
|
||||
is-binary-path@2.1.0:
|
||||
dependencies:
|
||||
binary-extensions: 2.3.0
|
||||
@@ -1654,11 +1602,9 @@ snapshots:
|
||||
|
||||
is-number@7.0.0: {}
|
||||
|
||||
is-windows@1.0.2: {}
|
||||
|
||||
isexe@2.0.0: {}
|
||||
|
||||
js-yaml@4.1.0:
|
||||
js-yaml@4.1.1:
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
|
||||
@@ -1756,8 +1702,6 @@ snapshots:
|
||||
dependencies:
|
||||
callsites: 3.1.0
|
||||
|
||||
parse-passwd@1.0.0: {}
|
||||
|
||||
path-exists@4.0.0: {}
|
||||
|
||||
path-key@3.1.1: {}
|
||||
@@ -1771,13 +1715,15 @@ snapshots:
|
||||
|
||||
picomatch@2.3.1: {}
|
||||
|
||||
picomatch@4.0.3: {}
|
||||
|
||||
prelude-ls@1.2.1: {}
|
||||
|
||||
prettier-linter-helpers@1.0.0:
|
||||
dependencies:
|
||||
fast-diff: 1.3.0
|
||||
|
||||
prettier@3.6.2: {}
|
||||
prettier@3.7.4: {}
|
||||
|
||||
punycode@2.3.1: {}
|
||||
|
||||
@@ -1803,12 +1749,6 @@ snapshots:
|
||||
dependencies:
|
||||
typescript: 5.5.4
|
||||
|
||||
rbxts-transformer-t-new-new@0.2.0:
|
||||
dependencies:
|
||||
'@rbxts/t': 3.2.1
|
||||
get-installed-path: 4.0.8
|
||||
typescript: 5.5.4
|
||||
|
||||
readdirp@3.6.0:
|
||||
dependencies:
|
||||
picomatch: 2.3.1
|
||||
@@ -1817,11 +1757,6 @@ snapshots:
|
||||
|
||||
require-from-string@2.0.2: {}
|
||||
|
||||
resolve-dir@1.0.1:
|
||||
dependencies:
|
||||
expand-tilde: 2.0.2
|
||||
global-modules: 1.0.0
|
||||
|
||||
resolve-from@4.0.0: {}
|
||||
|
||||
resolve@1.22.11:
|
||||
@@ -1892,6 +1827,11 @@ snapshots:
|
||||
dependencies:
|
||||
'@pkgr/core': 0.2.9
|
||||
|
||||
tinyglobby@0.2.15:
|
||||
dependencies:
|
||||
fdir: 6.5.0(picomatch@4.0.3)
|
||||
picomatch: 4.0.3
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
@@ -1904,6 +1844,17 @@ snapshots:
|
||||
dependencies:
|
||||
prelude-ls: 1.2.1
|
||||
|
||||
typescript-eslint@8.49.0(eslint@9.39.1)(typescript@5.5.4):
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.5.4))(eslint@9.39.1)(typescript@5.5.4)
|
||||
'@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
'@typescript-eslint/typescript-estree': 8.49.0(typescript@5.5.4)
|
||||
'@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.5.4)
|
||||
eslint: 9.39.1
|
||||
typescript: 5.5.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
typescript@5.5.3: {}
|
||||
|
||||
typescript@5.5.4: {}
|
||||
@@ -1921,10 +1872,6 @@ snapshots:
|
||||
spdx-correct: 3.2.0
|
||||
spdx-expression-parse: 3.0.1
|
||||
|
||||
which@1.3.1:
|
||||
dependencies:
|
||||
isexe: 2.0.0
|
||||
|
||||
which@2.0.2:
|
||||
dependencies:
|
||||
isexe: 2.0.0
|
||||
|
||||
@@ -6,3 +6,4 @@
|
||||
[tools]
|
||||
darklua = "seaofvoices/darklua@0.17.2"
|
||||
rojo = "rojo-rbx/rojo@7.6.1"
|
||||
rbxcloud = "Sleitnick/rbxcloud@0.17.0"
|
||||
|
||||
@@ -3,7 +3,7 @@ import React from "@rbxts/react";
|
||||
import { StrictMode } from "@rbxts/react";
|
||||
import { createPortal, createRoot } from "@rbxts/react-roblox";
|
||||
import { Players, StarterGui } from "@rbxts/services";
|
||||
import PlayersBoard from "shared/gui/players_board";
|
||||
import PlayersBoard from "client/gui/players_board";
|
||||
|
||||
@Controller()
|
||||
class GuiController implements OnStart {
|
||||
@@ -12,7 +12,9 @@ class GuiController implements OnStart {
|
||||
StarterGui.SetCoreGuiEnabled(Enum.CoreGuiType.Chat, true);
|
||||
try {
|
||||
StarterGui.SetCore("ResetButtonCallback", true);
|
||||
} catch (error) {}
|
||||
} catch (err) {
|
||||
error(err);
|
||||
}
|
||||
|
||||
const root = createRoot(new Instance("Folder"));
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { lerp, useMotion } from "@rbxts/pretty-react-hooks";
|
||||
import React, { Component, ReactNode, StrictMode, useEffect, useState } from "@rbxts/react";
|
||||
import { useKeyPress, useMotion } from "@rbxts/pretty-react-hooks";
|
||||
import React, { useEffect, useState } from "@rbxts/react";
|
||||
import { Players } from "@rbxts/services";
|
||||
import Profile from "./profile";
|
||||
|
||||
@@ -55,6 +55,9 @@ function PlayerEntry({
|
||||
export default function PlayersBoard() {
|
||||
const [players, setPlayers] = useState<Player[]>(Players.GetPlayers());
|
||||
const [selectedPlayer, setSelectedPlayer] = useState<Player>();
|
||||
const [activated, setActivated] = useState(true);
|
||||
const tabPressed = useKeyPress(["Tab"]);
|
||||
|
||||
useEffect(() => {
|
||||
const playerAdded = Players.PlayerAdded.Connect(() => {
|
||||
setPlayers(Players.GetPlayers());
|
||||
@@ -68,6 +71,10 @@ export default function PlayersBoard() {
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (tabPressed) setActivated(!activated);
|
||||
}, [tabPressed]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<frame
|
||||
@@ -75,6 +82,7 @@ export default function PlayersBoard() {
|
||||
Position={UDim2.fromScale(0.8, 0.1)}
|
||||
BackgroundColor3={new Color3(0, 0.72, 1)}
|
||||
BackgroundTransparency={0.7}
|
||||
Visible={activated}
|
||||
>
|
||||
<frame
|
||||
BorderColor3={new Color3(1, 1, 1)}
|
||||
@@ -1,25 +1,47 @@
|
||||
import React, { useEffect, useRef, useState } from "@rbxts/react";
|
||||
import { LocalizationService, Players } from "@rbxts/services";
|
||||
import { LocalizationService, Players, RunService } from "@rbxts/services";
|
||||
import { ProfileClientEvents } from "client/networking";
|
||||
|
||||
function TimePlayed({ targetTime }: { targetTime: number }) {
|
||||
const [time, setTime] = useState();
|
||||
const [id, setId] = useState<DateTime>();
|
||||
function TimePlayed({
|
||||
targetTime,
|
||||
reeloffset,
|
||||
timeOrigin,
|
||||
}: {
|
||||
targetTime: number;
|
||||
timeOrigin: number;
|
||||
reeloffset: number;
|
||||
}) {
|
||||
const [time, setTime] = useState<number>(0);
|
||||
useEffect(() => {
|
||||
let killed = false;
|
||||
setId(DateTime.fromUnixTimestamp(targetTime));
|
||||
task.spawn(() => {
|
||||
while (true) {
|
||||
if (killed) return;
|
||||
}
|
||||
const connection = RunService.PreRender.Connect(() => {
|
||||
setTime(targetTime + os.time() - timeOrigin);
|
||||
});
|
||||
return () => {
|
||||
killed = true;
|
||||
};
|
||||
return () => connection.Disconnect();
|
||||
}, [targetTime]);
|
||||
|
||||
return (
|
||||
<textlabel
|
||||
Text={
|
||||
targetTime === -1
|
||||
? "XX:XX:XX"
|
||||
: DateTime.fromUnixTimestamp(time).FormatUniversalTime(
|
||||
"HH:mm:ss",
|
||||
LocalizationService.RobloxLocaleId,
|
||||
)
|
||||
}
|
||||
Size={new UDim2(1, -reeloffset, 0.3, 0)}
|
||||
BackgroundTransparency={1}
|
||||
TextScaled={true}
|
||||
Position={new UDim2(0, reeloffset, 0.45, 0)}
|
||||
TextColor3={new Color3(0, 0, 0)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Profile({ player }: { player: Player }) {
|
||||
const [userIcon, setUserIcon] = useState<string>();
|
||||
const [timePlayed, setTimePlayed] = useState<number>(-1);
|
||||
const [timeOrigin, setTimeOrigin] = useState<number>(-1);
|
||||
const ref = useRef<ImageLabel>();
|
||||
useEffect(() => {
|
||||
const [image] = Players.GetUserThumbnailAsync(
|
||||
@@ -28,6 +50,12 @@ export default function Profile({ player }: { player: Player }) {
|
||||
Enum.ThumbnailSize.Size180x180,
|
||||
);
|
||||
setUserIcon(image);
|
||||
if (RunService.IsRunning()) {
|
||||
ProfileClientEvents.getPlayerStartTime(player.UserId).then((value) => {
|
||||
setTimePlayed(value[0]);
|
||||
setTimeOrigin(value[1]);
|
||||
});
|
||||
}
|
||||
}, [player]);
|
||||
const reeloffset = ref.current?.AbsoluteSize.X ?? 0;
|
||||
return (
|
||||
@@ -72,14 +100,7 @@ export default function Profile({ player }: { player: Player }) {
|
||||
Position={new UDim2(0, reeloffset, 0.25, 0)}
|
||||
TextColor3={new Color3(0.13, 0.13, 0.13)}
|
||||
/>
|
||||
<textlabel
|
||||
Text={DateTime.fromUnixTimestamp().FormatLocalTime("LTS", LocalizationService.RobloxLocaleId)}
|
||||
Size={new UDim2(1, -reeloffset, 0.3, 0)}
|
||||
BackgroundTransparency={1}
|
||||
TextScaled={true}
|
||||
Position={new UDim2(0, reeloffset, 0.45, 0)}
|
||||
TextColor3={new Color3(0, 0, 0)}
|
||||
/>
|
||||
<TimePlayed reeloffset={reeloffset} targetTime={timePlayed} timeOrigin={timeOrigin} />
|
||||
<textlabel
|
||||
Text={`Lev : ${0}`}
|
||||
Size={new UDim2(1, -reeloffset, 0.3, 0)}
|
||||
@@ -1,3 +1,4 @@
|
||||
import { GameplayEvents } from "shared/networking";
|
||||
import { GameplayEvents, ProfileEvents } from "shared/networking";
|
||||
|
||||
export const GameplayClientEvents = GameplayEvents.createClient({});
|
||||
export const ProfileClientEvents = ProfileEvents.createClient({});
|
||||
|
||||
@@ -20,7 +20,7 @@ export class Doors extends BaseComponent<{}, DoorInstance> implements OnStart {
|
||||
}
|
||||
onStart(): void {
|
||||
const doororigin = this.instance.WorldPivot.Position;
|
||||
while (task.wait(0.5)) {
|
||||
while (task.wait(0.5) !== 0) {
|
||||
let actived = false;
|
||||
Players.GetPlayers().forEach((player) => {
|
||||
const character = player.Character;
|
||||
|
||||
@@ -9,7 +9,7 @@ interface Attribute {
|
||||
@Component({
|
||||
tag: "Random_Decoration",
|
||||
})
|
||||
class RandomDecoration extends BaseComponent<Attribute, Part> implements OnStart {
|
||||
class RandomDecorationComponent extends BaseComponent<Attribute, Part> implements OnStart {
|
||||
onStart(): void {
|
||||
const decoration = this.getRandomDecoration(this.attributes.Type);
|
||||
decoration.Parent = this.instance.Parent;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { GameplayEvents } from "shared/networking";
|
||||
import { GameplayEvents, ProfileEvents } from "shared/networking";
|
||||
|
||||
export const GameplayServerEvents = GameplayEvents.createServer({});
|
||||
export const ProfileServerEvents = ProfileEvents.createServer({});
|
||||
|
||||
@@ -15,7 +15,7 @@ class CommandsService implements OnStart {
|
||||
ragdollCommand.PrimaryAlias = "/ragdoll";
|
||||
ragdollCommand.Triggered.Connect((TextSource) => {
|
||||
const player = Players.GetPlayerByUserId(TextSource.UserId);
|
||||
this.ragdollService.ragdoll(player?.Character!);
|
||||
this.ragdollService.ragdoll(player!.Character!);
|
||||
});
|
||||
|
||||
const unragdollCommand = new TextChatCommand();
|
||||
@@ -23,7 +23,7 @@ class CommandsService implements OnStart {
|
||||
unragdollCommand.PrimaryAlias = "/unragdoll";
|
||||
unragdollCommand.Triggered.Connect((TextSource) => {
|
||||
const player = Players.GetPlayerByUserId(TextSource.UserId);
|
||||
this.ragdollService.ragdoll(player?.Character!);
|
||||
this.ragdollService.ragdoll(player!.Character!);
|
||||
});
|
||||
|
||||
const takeownerCommand = new TextChatCommand();
|
||||
|
||||
@@ -40,7 +40,7 @@ export class RagdollService implements OnPlayerJoined, OnStart {
|
||||
//#endregion
|
||||
|
||||
//#region Private functions.
|
||||
private getRagdollPhysic(character: Model) {
|
||||
private getRagdollPhysic(character: Model): [Set<Motor6D>, Set<BallSocketConstraint>] {
|
||||
const motors = new Set<Motor6D>();
|
||||
const constraints = new Set<BallSocketConstraint>();
|
||||
character.GetDescendants().forEach((descendant) => {
|
||||
@@ -51,7 +51,7 @@ export class RagdollService implements OnPlayerJoined, OnStart {
|
||||
constraints.add(descendant);
|
||||
}
|
||||
});
|
||||
return $tuple(motors, constraints);
|
||||
return [motors, constraints];
|
||||
}
|
||||
|
||||
private prepareRagdoll(character: Model) {
|
||||
|
||||
@@ -63,7 +63,9 @@ export class SprintService implements OnStart, OnPlayerJoined {
|
||||
GameplayServerEvents.sprint.connect((player, enabled) => {
|
||||
if (this.timeout.has(player.UserId) && !this.cant_run.has(player.UserId)) return;
|
||||
const character = player.Character;
|
||||
enabled ? this.is_running.add(player.UserId) : this.is_running.delete(player.UserId);
|
||||
if (enabled) {
|
||||
this.is_running.add(player.UserId);
|
||||
} else this.is_running.delete(player.UserId);
|
||||
if (character) {
|
||||
const humanoid = character.FindFirstChildOfClass("Humanoid");
|
||||
if (humanoid) {
|
||||
@@ -145,6 +147,8 @@ export class SprintService implements OnStart, OnPlayerJoined {
|
||||
|
||||
setRunningInterdiction(player: Player, enabled: boolean) {
|
||||
this.setRunning(player, !enabled);
|
||||
enabled ? this.cant_run.add(player.UserId) : this.cant_run.delete(player.UserId);
|
||||
if (enabled) {
|
||||
this.cant_run.add(player.UserId);
|
||||
} else this.cant_run.delete(player.UserId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,32 @@
|
||||
import { Modding, OnStart, Service } from "@flamework/core";
|
||||
import { Players } from "@rbxts/services";
|
||||
import { OnPlayerJoined } from "shared/modding/player_events";
|
||||
import { OnPlayerJoined, OnPlayerQuit } from "shared/modding/player_events";
|
||||
|
||||
@Service()
|
||||
class PlayerJoinService implements OnStart {
|
||||
onStart() {
|
||||
const listeners = new Set<OnPlayerJoined>();
|
||||
const playerJoinListener = new Set<OnPlayerJoined>();
|
||||
const playerQuitListener = new Set<OnPlayerQuit>();
|
||||
|
||||
Modding.onListenerAdded<OnPlayerJoined>((object) => listeners.add(object));
|
||||
Modding.onListenerRemoved<OnPlayerJoined>((object) => listeners.delete(object));
|
||||
Modding.onListenerAdded<OnPlayerJoined>((object) => playerJoinListener.add(object));
|
||||
Modding.onListenerRemoved<OnPlayerJoined>((object) => playerJoinListener.delete(object));
|
||||
Modding.onListenerAdded<OnPlayerQuit>((object) => playerQuitListener.add(object));
|
||||
Modding.onListenerRemoved<OnPlayerQuit>((object) => playerQuitListener.delete(object));
|
||||
|
||||
Players.PlayerAdded.Connect((player) => {
|
||||
for (const listener of listeners) {
|
||||
for (const listener of playerJoinListener) {
|
||||
task.spawn(() => listener.onPlayerJoined(player));
|
||||
}
|
||||
});
|
||||
|
||||
Players.PlayerRemoving.Connect((player) => {
|
||||
for (const listener of playerQuitListener) {
|
||||
task.spawn(() => listener.onPlayerQuit(player));
|
||||
}
|
||||
});
|
||||
|
||||
for (const player of Players.GetPlayers()) {
|
||||
for (const listener of listeners) {
|
||||
for (const listener of playerJoinListener) {
|
||||
task.spawn(() => listener.onPlayerJoined(player));
|
||||
}
|
||||
}
|
||||
|
||||
43
src/server/services/stats.ts
Normal file
43
src/server/services/stats.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { OnStart, Service } from "@flamework/core";
|
||||
import { DataStoreService } from "@rbxts/services";
|
||||
import { t } from "@rbxts/t";
|
||||
import { ProfileServerEvents } from "server/networking";
|
||||
import { OnPlayerJoined, OnPlayerQuit } from "shared/modding/player_events";
|
||||
|
||||
@Service()
|
||||
class StatsService implements OnPlayerJoined, OnStart, OnPlayerQuit {
|
||||
firstJoinStoreCache = new Map<number, [number, number]>();
|
||||
firstJoinStore!: DataStore;
|
||||
|
||||
onStart(): void {
|
||||
this.firstJoinStore = DataStoreService.GetDataStore("Stats_Players_Played_Time");
|
||||
|
||||
ProfileServerEvents.getPlayerStartTime.setCallback((_, playerId) => {
|
||||
const playedtime = this.getPlayerPlayedTime(playerId);
|
||||
return playedtime!;
|
||||
});
|
||||
}
|
||||
|
||||
onPlayerJoined(player: Player): void {
|
||||
const playerId = tostring(player.UserId);
|
||||
const [value] = this.firstJoinStore.GetAsync(playerId);
|
||||
|
||||
if (!t.optional(t.number)(value)) throw `Bad Data in DataBase for ${player.UserId}`;
|
||||
|
||||
if (value === undefined) {
|
||||
this.firstJoinStore.SetAsync(playerId, 0);
|
||||
}
|
||||
|
||||
this.firstJoinStoreCache.set(player.UserId, [value ?? 0, os.time()]);
|
||||
}
|
||||
|
||||
getPlayerPlayedTime(playerId: number) {
|
||||
return this.firstJoinStoreCache.get(playerId);
|
||||
}
|
||||
|
||||
onPlayerQuit(player: Player): void {
|
||||
const [value, time] = this.firstJoinStoreCache.get(player.UserId)!;
|
||||
const t = value + os.time() - time;
|
||||
this.firstJoinStore.SetAsync(tostring(player.UserId), t, [player.UserId]);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
// TODO
|
||||
|
||||
import { TupleType } from "typescript";
|
||||
import { AbilityType } from "./main";
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
export interface OnPlayerJoined {
|
||||
onPlayerJoined(player: Player): void;
|
||||
onPlayerJoined(player: Player): void;
|
||||
}
|
||||
|
||||
export interface OnPlayerQuit {
|
||||
onPlayerQuit(player: Player): void;
|
||||
}
|
||||
|
||||
@@ -6,4 +6,11 @@ interface GameplayClient {
|
||||
|
||||
interface GameplayServer {}
|
||||
|
||||
interface ProfileClient {
|
||||
getPlayerStartTime(playerId: number): [number, number];
|
||||
}
|
||||
|
||||
interface ProfileServer {}
|
||||
|
||||
export const GameplayEvents = Networking.createEvent<GameplayClient, GameplayServer>();
|
||||
export const ProfileEvents = Networking.createFunction<ProfileClient, ProfileServer>();
|
||||
|
||||
@@ -15,10 +15,7 @@
|
||||
"moduleDetection": "force",
|
||||
"strict": true,
|
||||
"target": "ESNext",
|
||||
"typeRoots": [
|
||||
"node_modules/@rbxts",
|
||||
"node_modules/@flamework",
|
||||
],
|
||||
"typeRoots": ["node_modules/@rbxts", "node_modules/@flamework"],
|
||||
// configurable
|
||||
"rootDir": "src",
|
||||
"outDir": "out",
|
||||
@@ -27,22 +24,16 @@
|
||||
"tsBuildInfoFile": "out/tsconfig.tsbuildinfo",
|
||||
"plugins": [
|
||||
{
|
||||
"transform": "rbxts-transformer-flamework",
|
||||
"transform": "rbxts-transformer-flamework"
|
||||
},
|
||||
{
|
||||
"transform": "rbxts-transformer-instances"
|
||||
},
|
||||
{
|
||||
"transform": "rbxts-transformer-services"
|
||||
},
|
||||
{
|
||||
"transform": "rbxts-transformer-t-new-new"
|
||||
}
|
||||
],
|
||||
"removeComments": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*",
|
||||
"node_modules/rbxts-transformer-instances"
|
||||
]
|
||||
}
|
||||
"include": ["src/**/*", "node_modules/rbxts-transformer-instances"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user