Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
57e9a6c
[IMP] recording
ThanhDodeurOdoo Sep 22, 2025
f22ceba
fixup
ThanhDodeurOdoo Sep 24, 2025
e5aaa79
[IMP] wip/poc
ThanhDodeurOdoo Oct 21, 2025
acd9ceb
[IMP] rec addr
ThanhDodeurOdoo Oct 23, 2025
4abe114
[IMP] fixup
ThanhDodeurOdoo Oct 23, 2025
e855f75
[IMP] wip
ThanhDodeurOdoo Oct 29, 2025
886f009
[IMP] wip
ThanhDodeurOdoo Oct 30, 2025
358ce98
[WIP] discuss: folder move
ThanhDodeurOdoo Nov 4, 2025
27d7693
[WIP] recording: state broadcasting, updated tests
ThanhDodeurOdoo Nov 4, 2025
a183da5
[WIP] recording: ts version bump, bundle, simpler rec api
ThanhDodeurOdoo Nov 5, 2025
010f54e
[IMP] discuss: wip recording
ThanhDodeurOdoo Nov 5, 2025
b8749e8
[IMP] discuss: better bus types
ThanhDodeurOdoo Nov 5, 2025
9041566
[WIP] fixup deferred
ThanhDodeurOdoo Nov 10, 2025
6dbb1f7
[WIP] recorder API
ThanhDodeurOdoo Nov 12, 2025
e9dbbd4
[IMP] discuss: wip recording task
ThanhDodeurOdoo Nov 12, 2025
0f7fc5e
[WIP] support transcription in recorder.ts
ThanhDodeurOdoo Nov 13, 2025
8b94058
[wip] recording async management spec
ThanhDodeurOdoo Nov 13, 2025
0c48872
[wip] more transcript support
ThanhDodeurOdoo Nov 14, 2025
1c8d058
[wip] more recording task typing
ThanhDodeurOdoo Nov 18, 2025
cf61d0c
[wip] transcription front API
ThanhDodeurOdoo Nov 18, 2025
dd3194b
[wip] update audit fix
ThanhDodeurOdoo Nov 18, 2025
1418dd8
[wip] no window reference in client
ThanhDodeurOdoo Nov 18, 2025
56d2f36
[wip] f
ThanhDodeurOdoo Nov 18, 2025
62c27f1
[wip] session add/remove listeners on recorder
ThanhDodeurOdoo Nov 18, 2025
5bb85bc
[wip] eslint for relative root dir
ThanhDodeurOdoo Nov 18, 2025
4c5b93d
[wip] recorder/task
ThanhDodeurOdoo Nov 19, 2025
e33d90a
[wip] jest config file lint
ThanhDodeurOdoo Nov 20, 2025
c92a06a
[wip] fixup
ThanhDodeurOdoo Nov 21, 2025
ac61218
[wip] private style
ThanhDodeurOdoo Nov 21, 2025
0dddfde
[wip] recording_task/transport lifecycle
ThanhDodeurOdoo Nov 21, 2025
ce8de00
[wip] some fixes
ThanhDodeurOdoo Nov 21, 2025
bc83be8
[wip] rtp abstraction
ThanhDodeurOdoo Nov 22, 2025
44c40cb
[wip] folder creation
ThanhDodeurOdoo Nov 22, 2025
ecc142d
[wip] folder seal error handling
ThanhDodeurOdoo Nov 22, 2025
08a80a2
[wip] timetags
ThanhDodeurOdoo Nov 24, 2025
64e8c42
[wip]
ThanhDodeurOdoo Nov 25, 2025
a6692a3
[wip] media output model
ThanhDodeurOdoo Nov 25, 2025
53cb828
[wip] save file ext, routing interface,...
ThanhDodeurOdoo Nov 26, 2025
aab6a16
[wip] fixup
ThanhDodeurOdoo Nov 26, 2025
4bf4097
[wip] recording path
ThanhDodeurOdoo Nov 27, 2025
5638c54
[wip] version update
ThanhDodeurOdoo Nov 28, 2025
60e9ecc
[wip] fixup
ThanhDodeurOdoo Nov 28, 2025
724d972
f
ThanhDodeurOdoo Nov 28, 2025
297378d
[wip]
ThanhDodeurOdoo Nov 28, 2025
b689663
[wip] recording saved
ThanhDodeurOdoo Nov 28, 2025
2109a14
[wip] recording raw ready
ThanhDodeurOdoo Nov 28, 2025
941b980
[wip] cleanup
ThanhDodeurOdoo Nov 28, 2025
95cae28
[wip] directories
ThanhDodeurOdoo Nov 28, 2025
a677a27
[wip] producer lifecycle
ThanhDodeurOdoo Nov 28, 2025
be697ef
[wip] cleanup
ThanhDodeurOdoo Nov 28, 2025
d4f4826
[wip] fixup, only mkdir if recording
ThanhDodeurOdoo Nov 28, 2025
d21d5df
[wip] fixup
ThanhDodeurOdoo Dec 1, 2025
b940d53
[wip] timestamps plain array
ThanhDodeurOdoo Dec 4, 2025
f17d10d
[wip] test with custom env
ThanhDodeurOdoo Dec 4, 2025
1df4407
[wip] fixup
ThanhDodeurOdoo Dec 4, 2025
e489bba
[wip] test down the ffpmeg layer
ThanhDodeurOdoo Dec 4, 2025
4c34942
[imp] tests with temp directory
ThanhDodeurOdoo Dec 4, 2025
459f43c
[wip] more http test
ThanhDodeurOdoo Dec 4, 2025
e94cfec
[wip] test some route edge cases
ThanhDodeurOdoo Dec 4, 2025
c53d483
[wip] cleanup
ThanhDodeurOdoo Dec 5, 2025
9b28957
[wip] test api when not connected
ThanhDodeurOdoo Dec 5, 2025
fe9072f
[wip] remove arbitrary delay in test
ThanhDodeurOdoo Dec 5, 2025
3368193
[wip] test disconnect disallowed
ThanhDodeurOdoo Dec 5, 2025
3da49e9
[wip] test worker recovery
ThanhDodeurOdoo Dec 5, 2025
f159147
[wip] fixup
ThanhDodeurOdoo Dec 5, 2025
5da2d9c
[wip] async recording termination
ThanhDodeurOdoo Dec 5, 2025
bd8295d
[wip] testing codec env variables
ThanhDodeurOdoo Dec 5, 2025
8fc0541
[fix] early return in handle management
ThanhDodeurOdoo Dec 5, 2025
7933cd6
[wip] timestamps for file state
ThanhDodeurOdoo Dec 5, 2025
68aaba3
[wip] overload better typing
ThanhDodeurOdoo Dec 5, 2025
bf7bda3
[fix] log location
ThanhDodeurOdoo Dec 5, 2025
99bbf7d
[wip] cleanup
ThanhDodeurOdoo Dec 5, 2025
f27f71d
[fix] preserve metadata
ThanhDodeurOdoo Dec 5, 2025
31e87d5
[wip] rollup lint config
ThanhDodeurOdoo Dec 6, 2025
739ce0e
[wip] more tests
ThanhDodeurOdoo Dec 6, 2025
02c77e3
[wip] test ffmpeg no spawn on paused producer
ThanhDodeurOdoo Dec 6, 2025
90d10be
[wip] config upd
ThanhDodeurOdoo Dec 6, 2025
5c7e812
[wip] RtcWorker type
ThanhDodeurOdoo Dec 6, 2025
f030689
[wip] event names as static
ThanhDodeurOdoo Dec 6, 2025
10b0199
[wip] channel startup
ThanhDodeurOdoo Dec 6, 2025
78894d7
[wip] misc typing
ThanhDodeurOdoo Dec 7, 2025
d7e6240
[wip] mark, no runtime type check
ThanhDodeurOdoo Dec 7, 2025
4ef7d10
[wip] folder by stream type
ThanhDodeurOdoo Dec 7, 2025
afe9d39
[fixup] package with updt sfu version
ThanhDodeurOdoo Dec 7, 2025
363c488
[wip] cleanup
ThanhDodeurOdoo Dec 8, 2025
01fe7c2
[wip] recording folder
ThanhDodeurOdoo Dec 8, 2025
aa77d79
[wip] readme and recording termination flow
ThanhDodeurOdoo Dec 8, 2025
4513647
[wip] cleanup
ThanhDodeurOdoo Dec 8, 2025
b52a9eb
[wip] ts imports
ThanhDodeurOdoo Dec 8, 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
97 changes: 97 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
module.exports = {
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:node/recommended",
"plugin:prettier/recommended"
],
parserOptions: {
ecmaVersion: 2022,
sourceType: "module",
project: "./tsconfig.json",
tsconfigRootDir: __dirname
},
env: {
node: true,
browser: false,
es2022: true
},
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
overrides: [
{
files: [".eslintrc.cjs", "jest.config.cjs", "rollup.config.js"],
parserOptions: {
project: null
}
},
{
files: ["tests/utils/*.ts", "tests/*.ts"],
plugins: ["jest", "import"],
env: {
jest: true,
"jest/globals": true
},
extends: ["plugin:jest/recommended"]
},
{
files: ["src/client.ts"],
env: {
browser: true,
node: false
}
},
{
files: ["src/shared/*.ts"],
env: {
browser: true,
node: true
}
}
],
ignorePatterns: "dist/*",
rules: {
"prettier/prettier": [
"error",
{
tabWidth: 4,
semi: true,
singleQuote: false,
printWidth: 100,
endOfLine: "auto",
trailingComma: "none"
}
],
"node/no-unsupported-features/es-syntax": "off",
"node/no-missing-import": "off",
"comma-dangle": "off",
"no-console": "error",
"no-undef": "error",
"no-restricted-globals": ["error", "event", "self"],
"no-const-assign": ["error"],
"no-debugger": ["error"],
"no-dupe-class-members": ["error"],
"no-dupe-keys": ["error"],
"no-dupe-args": ["error"],
"no-dupe-else-if": ["error"],
"no-unsafe-negation": ["error"],
"no-duplicate-imports": ["error"],
"valid-typeof": ["error"],
"@typescript-eslint/no-unused-vars": [
"error",
{ vars: "all", args: "none", ignoreRestSiblings: false, caughtErrors: "all" }
],
curly: ["error", "all"],
"no-restricted-syntax": ["error", "PrivateIdentifier"],
"prefer-const": [
"error",
{
destructuring: "all",
ignoreReadBeforeAssign: true
}
]
},
globals: {
NodeJS: "readonly"
}
};
82 changes: 0 additions & 82 deletions .eslintrc.json

This file was deleted.

3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ the SFU and a [client bundle/library](#client-api-bundle) to connect to it.

## Prerequisites
- [Node.js 22.16.0 (LTS)](https://nodejs.org/en/download)
- [FFmpeg 8](https://ffmpeg.org/download.html) (if using the recording feature)

## Before deployment

Expand Down Expand Up @@ -53,6 +54,8 @@ The available environment variables are:
- **MAX_BITRATE_OUT**: if set, limits the outgoing bitrate per session (user), defaults to 10mbps
- **MAX_VIDEO_BITRATE**: if set, defines the `maxBitrate` of the highest encoding layer (simulcast), defaults to 4mbps
- **CHANNEL_SIZE**: the maximum amount of users per channel, defaults to 100
- **RECORDING**: enables the recording feature, defaults to false
- **RECORDING_PATH**: the path where the recordings will be saved, defaults to `${tmpDir}/recordings`.
- **WORKER_LOG_LEVEL**: "none" | "error" | "warn" | "debug", will only work if `DEBUG` is properly set.
- **LOG_LEVEL**: "none" | "error" | "warn" | "info" | "debug" | "verbose"
- **LOG_TIMESTAMP**: adds a timestamp to the log lines, defaults to true, to disable it, set to "disable", "false", "none", "no" or "0"
Expand Down
2 changes: 1 addition & 1 deletion jest.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ module.exports = {
maxWorkers: 4,
preset: "ts-jest",
testEnvironment: "node",
extensionsToTreatAsEsm: [".ts"],
extensionsToTreatAsEsm: [".ts"]
};
Loading