feat: setup project

This commit is contained in:
2026-09-05 15:27:53 +05:00
parent ae2a7e1ce9
commit c79681dc59
43 changed files with 2194 additions and 14 deletions
+16
View File
@@ -0,0 +1,16 @@
{
"name": "@idle/shared",
"private": true,
"version": "0.0.0",
"type": "module",
"exports": {
".": "./src/index.ts"
},
"scripts": {
"build": "tsc --noEmit",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"typescript": "^5.6.0"
}
}
+1
View File
@@ -0,0 +1 @@
export * from './protocol';
+41
View File
@@ -0,0 +1,41 @@
/**
* Протокол WS — контракт между сервером и клиентами (overlay / web).
* Клиенты зависят только от него; язык сервера можно сменить позже.
* Версия проверяется в рукопожатии (hello/welcome), чтобы OBS со старым
* бандлом не висел молча.
*/
export const PROTOCOL_VERSION = 1;
export interface AvatarState {
id: string;
name: string;
/** Цвет ника из тегов чата Twitch. */
color: string;
/** Позиция в мировых координатах, px. */
x: number;
y: number;
face: 'left' | 'right';
moving: boolean;
}
export interface WelcomeMsg {
t: 'welcome';
v: number;
/** Период тика симуляции, мс — клиенту для отрисовки прогрессов. */
tickMs: number;
}
/** M0: полный снапшот каждый тик; дельты появятся с M1. */
export interface SnapshotMsg {
t: 'snapshot';
tick: number;
avatars: AvatarState[];
}
export type ServerMessage = WelcomeMsg | SnapshotMsg;
export type ClientMessage = {
t: 'hello';
v: number;
};
+7
View File
@@ -0,0 +1,7 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"lib": ["ES2022"]
},
"include": ["src"]
}