Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
963943d
fix: log request headers for debugging in JwtDefaultGuard
kastov Mar 20, 2025
a64a63b
fix: improve logging of request headers in JwtDefaultGuard
kastov Mar 20, 2025
d8285af
feat: add debug log
kastov Mar 20, 2025
71f1170
chore: add restart flag "always"
mishkatik Mar 23, 2025
757ef2f
Merge pull request #3 from mishkatik/patch-1
kastov Mar 24, 2025
10baba3
chore: update dependencies for version 1.5.0
kastov Mar 26, 2025
f425fd5
refactor: change logging level for request headers in JwtDefaultGuard
kastov Mar 26, 2025
2471cd5
chore: add support for multi-platform builds in GitHub Actions workflow
kastov Mar 26, 2025
8bdda37
feat: enhance startup message with XRay service information
kastov Mar 26, 2025
a528f30
fix: filter users with non-zero uplink and downlink in GetUsersStatsR…
kastov Mar 27, 2025
cc7bccf
chore: update Xray and Node.js versions in Dockerfiles and package de…
kastov Mar 28, 2025
5bdcaee
feat: integrate supervisord-nestjs for process management
kastov Mar 29, 2025
b8aba3f
refactor: debug logging
kastov Mar 29, 2025
2a2d910
feat: add p-retry for enhanced retry logic and update logging
kastov Mar 30, 2025
cb63f68
refactor: –
kastov Mar 30, 2025
8203e97
fix: improve error handling in XrayService
kastov Mar 30, 2025
1369f79
refactor: update supervisord configuration and enhance XrayService
kastov Mar 30, 2025
d62b52f
feat: integrate XrayService into HandlerService for user management
kastov Mar 30, 2025
d885b73
chore: bump version to 0.5.0 and remove tags from RemoveUserCommand
kastov Mar 30, 2025
7b1fd1a
Merge pull request #4 from remnawave/supervisord
kastov Mar 30, 2025
bef2e45
chrome: clean up workflows
kastov Mar 30, 2025
65387ec
refactor: remove redundant process log clearing in XrayService on app…
kastov Apr 3, 2025
754d07b
refactor: reorder imports and enhance error logging in HandlerControl…
kastov Apr 3, 2025
09f3102
fix: update host address in app module for local development
kastov Apr 3, 2025
f067b4c
refactor: streamline constructor syntax in Internal, Stats, and Xray …
kastov Apr 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64
platforms: linux/amd64,linux/arm64
push: true
tags: |
remnawave/node:dev
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ RUN apk add --no-cache \
unzip \
bash \
supervisor \
&& curl -L https://raw.githubusercontent.com/remnawave/scripts/main/scripts/install-latest-xray.sh | bash -s -- v25.2.21 \
&& curl -L https://raw.githubusercontent.com/remnawave/scripts/main/scripts/install-latest-xray.sh | bash -s -- v25.3.6 \
&& apk del curl

COPY supervisord.conf /etc/supervisord.conf
Expand Down
8 changes: 4 additions & 4 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ RUN apt-get update && apt-get install -y \
ENV NVM_DIR=/root/.nvm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash \
&& . $NVM_DIR/nvm.sh \
&& nvm install v22.12.0 \
&& nvm alias default v22.12.0 \
&& nvm install v22.14.0 \
&& nvm alias default v22.14.0 \
&& nvm use default


ENV PATH="/root/.nvm/versions/node/v22.12.0/bin:${PATH}"
ENV PATH="/root/.nvm/versions/node/v22.14.0/bin:${PATH}"

# Установка Xray
RUN curl -L https://raw.githubusercontent.com/remnawave/scripts/main/scripts/install-latest-xray.sh | bash -s -- v25.2.21
RUN curl -L https://raw.githubusercontent.com/remnawave/scripts/main/scripts/install-latest-xray.sh | bash -s -- v25.3.6


RUN mkdir -p /var/log/supervisor /var/lib/rnode/xray /app \
Expand Down
1 change: 1 addition & 0 deletions docker-compose-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ services:
env_file:
- .env
network_mode: host
restart: always
163 changes: 163 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
import typescriptEslintEslintPlugin from '@typescript-eslint/eslint-plugin';
import perfectionist from 'eslint-plugin-perfectionist';
import tsParser from '@typescript-eslint/parser';
import { FlatCompat } from '@eslint/eslintrc';
import { fileURLToPath } from 'node:url';
import paths from 'eslint-plugin-paths';
import globals from 'globals';
import path from 'node:path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
});

export default [
{
ignores: ['**/.eslintrc.js', 'prisma/**/*', '.hygen.js', '.hygen/**/*'],
},
...compat.extends('plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'),
perfectionist.configs['recommended-alphabetical'],
{
plugins: {
'@typescript-eslint': typescriptEslintEslintPlugin,
paths,
},

languageOptions: {
globals: {
...globals.node,
},

parser: tsParser,
ecmaVersion: 'latest',
sourceType: 'commonjs',

parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir: __dirname,
},
},

rules: {
'perfectionist/sort-imports': [
'error',
{
type: 'line-length',
order: 'desc',
ignoreCase: true,
specialCharacters: 'keep',
internalPattern: ['^~/.+'],
tsconfigRootDir: '.',
partitionByComment: false,
partitionByNewLine: false,
newlinesBetween: 'always',
maxLineLength: undefined,
tsconfigRootDir: __dirname,

groups: [
'type',
['builtin', 'external'],
'internal-type',
'internal',
'nestJs',
'remnawave',
'aliasCommon',
{ newlinesBetween: 'never' },
'aliasLibs',
'aliasIntegrationModules',
'aliasModules',
'aliasScheduler',
'aliasQueue',
['parent-type', 'sibling-type', 'index-type'],
['parent', 'sibling', 'index'],
'object',
'unknown',
],

customGroups: {
value: {
aliasModules: '@modules/*.',
aliasCommon: '@common/*.',
aliasLibs: '@libs/*.',
aliasIntegrationModules: '@integration-modules/*.',
aliasScheduler: '@scheduler/*.',
aliasQueue: '@queue/*.',
remnawave: '@remnawave/*.',
nestJs: '@nestjs/*.',
},
},

environment: 'node',
},
],
'perfectionist/sort-decorators': [
'error',
{
groups: [
'unknown',
'httpCodes',
'filters',
'guards',
'controllers',
'nestJSMethods',
],

customGroups: {
httpCodes: ['HttpCode'],
filters: ['UseFilters'],
guards: ['UseGuards'],
controllers: ['Controller'],
nestJSMethods: ['Post', 'Get', 'Put', 'Delete', 'Patch', 'Options', 'Head'],
},
},
],

'perfectionist/sort-objects': ['off'],
'perfectionist/sort-classes': ['off'],
'perfectionist/sort-switch-case': ['off'],
'perfectionist/sort-object-types': ['off'],
'perfectionist/sort-interfaces': ['off'],
'perfectionist/sort-union-types': ['off'],
'perfectionist/sort-named-imports': ['off'],
'perfectionist/sort-modules': ['off'],
'paths/alias': 'error',
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-namespace': 'off',
'linebreak-style': 0,
'no-console': 'warn',

'prettier/prettier': [
'error',
{
bracketSpacing: true,
tabWidth: 4,
printWidth: 100,
singleQuote: true,
trailingComma: 'all',

overrides: [
{
files: ['*.js', '*.jsx', '*.ts', '*.tsx'],

options: {
parser: 'typescript',
},
},
{
files: ['*.md', '*.json', '*.yaml', '*.yml'],

options: {
tabWidth: 2,
},
},
],
},
],
},
},
];
1 change: 0 additions & 1 deletion libs/contract/commands/handler/remove-user.command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ export namespace RemoveUserCommand {
export const url = REST_API.HANDLER.REMOVE_USER;

export const RequestSchema = z.object({
tags: z.array(z.string()),
username: z.string(),
});

Expand Down
3 changes: 2 additions & 1 deletion libs/contract/constants/xray/stats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ export const XRAY_DEFAULT_STATS_MODEL = {
export const XRAY_DEFAULT_API_MODEL = {
api: {
services: ['HandlerService', 'StatsService', 'RoutingService'],
tag: 'api',
listen: '127.0.0.1:61000',
tag: 'REMNAWAVE_API',
},
} as const;

Expand Down
2 changes: 1 addition & 1 deletion libs/contract/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@remnawave/node-contract",
"version": "0.4.1",
"version": "0.5.0",
"description": "A node-contract library for Remnawave Panel",
"main": "build/index.js",
"types": "build/index.d.ts",
Expand Down
Loading