Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
b5a7d0d
[IMP] recording
ThanhDodeurOdoo Sep 22, 2025
5292710
fixup
ThanhDodeurOdoo Sep 24, 2025
19047dc
[IMP] wip/poc
ThanhDodeurOdoo Oct 21, 2025
f64b870
[IMP] rec addr
ThanhDodeurOdoo Oct 23, 2025
10432af
[IMP] fixup
ThanhDodeurOdoo Oct 23, 2025
659892f
[IMP] wip
ThanhDodeurOdoo Oct 29, 2025
e00d452
[IMP] wip
ThanhDodeurOdoo Oct 30, 2025
9e88cc3
[WIP] discuss: folder move
ThanhDodeurOdoo Nov 4, 2025
123690d
[WIP] recording: state broadcasting, updated tests
ThanhDodeurOdoo Nov 4, 2025
e769b53
[WIP] recording: ts version bump, bundle, simpler rec api
ThanhDodeurOdoo Nov 5, 2025
6d1cd01
[IMP] discuss: wip recording
ThanhDodeurOdoo Nov 5, 2025
e9c7425
[IMP] discuss: better bus types
ThanhDodeurOdoo Nov 5, 2025
677eb3a
[WIP] fixup deferred
ThanhDodeurOdoo Nov 10, 2025
23de8d0
[WIP] recorder API
ThanhDodeurOdoo Nov 12, 2025
688881f
[IMP] discuss: wip recording task
ThanhDodeurOdoo Nov 12, 2025
33a2ad0
[WIP] support transcription in recorder.ts
ThanhDodeurOdoo Nov 13, 2025
5639213
[wip] recording async management spec
ThanhDodeurOdoo Nov 13, 2025
c2b6d65
[wip] more transcript support
ThanhDodeurOdoo Nov 14, 2025
e469177
[wip] more recording task typing
ThanhDodeurOdoo Nov 18, 2025
f759eda
[wip] transcription front API
ThanhDodeurOdoo Nov 18, 2025
01aebf5
[wip] update audit fix
ThanhDodeurOdoo Nov 18, 2025
bc88ddf
[wip] no window reference in client
ThanhDodeurOdoo Nov 18, 2025
b19b9d7
[wip] f
ThanhDodeurOdoo Nov 18, 2025
c202c67
[wip] session add/remove listeners on recorder
ThanhDodeurOdoo Nov 18, 2025
4040f1c
[wip] eslint for relative root dir
ThanhDodeurOdoo Nov 18, 2025
f1fa76e
[wip] recorder/task
ThanhDodeurOdoo Nov 19, 2025
656e2a1
[wip] jest config file lint
ThanhDodeurOdoo Nov 20, 2025
8e27ff1
[wip] fixup
ThanhDodeurOdoo Nov 21, 2025
4616aaf
[wip] private style
ThanhDodeurOdoo Nov 21, 2025
fb3b524
[wip] recording_task/transport lifecycle
ThanhDodeurOdoo Nov 21, 2025
081d53a
[wip] some fixes
ThanhDodeurOdoo Nov 21, 2025
8e2c1a3
[wip] rtp abstraction
ThanhDodeurOdoo Nov 22, 2025
ad5e01c
[wip] folder creation
ThanhDodeurOdoo Nov 22, 2025
e18dc94
[wip] folder seal error handling
ThanhDodeurOdoo Nov 22, 2025
eb92f05
[wip] timetags
ThanhDodeurOdoo Nov 24, 2025
8e07bfb
[wip]
ThanhDodeurOdoo Nov 25, 2025
8b70d97
[wip] media output model
ThanhDodeurOdoo Nov 25, 2025
fb4c4b9
[wip] save file ext, routing interface,...
ThanhDodeurOdoo Nov 26, 2025
a6ad85b
[wip] fixup
ThanhDodeurOdoo Nov 26, 2025
323c6c5
[wip] recording path
ThanhDodeurOdoo Nov 27, 2025
65c4ea2
[wip] version update
ThanhDodeurOdoo Nov 28, 2025
3b22325
[wip] fixup
ThanhDodeurOdoo Nov 28, 2025
ed8fc34
f
ThanhDodeurOdoo Nov 28, 2025
c71d03a
[wip]
ThanhDodeurOdoo Nov 28, 2025
77d7d97
[wip] recording saved
ThanhDodeurOdoo Nov 28, 2025
78beff0
[wip] recording raw ready
ThanhDodeurOdoo Nov 28, 2025
7a8611f
[wip] cleanup
ThanhDodeurOdoo Nov 28, 2025
ba47213
[wip] directories
ThanhDodeurOdoo Nov 28, 2025
2bbed49
[wip] producer lifecycle
ThanhDodeurOdoo Nov 28, 2025
16f9e74
[wip] cleanup
ThanhDodeurOdoo Nov 28, 2025
1df9313
[wip] fixup, only mkdir if recording
ThanhDodeurOdoo Nov 28, 2025
9b896f4
[wip] fixup
ThanhDodeurOdoo Dec 1, 2025
6af1c74
[wip] timestamps plain array
ThanhDodeurOdoo Dec 4, 2025
0ccc9ff
[wip] test with custom env
ThanhDodeurOdoo Dec 4, 2025
ff41634
[wip] fixup
ThanhDodeurOdoo Dec 4, 2025
7de74fc
[wip] test down the ffpmeg layer
ThanhDodeurOdoo Dec 4, 2025
aa25dee
[imp] tests with temp directory
ThanhDodeurOdoo Dec 4, 2025
c5c7a3b
[wip] more http test
ThanhDodeurOdoo Dec 4, 2025
35cf3f4
[wip] test some route edge cases
ThanhDodeurOdoo Dec 4, 2025
ff81162
[wip] cleanup
ThanhDodeurOdoo Dec 5, 2025
2f69e6d
[wip] test api when not connected
ThanhDodeurOdoo Dec 5, 2025
63a67be
[wip] remove arbitrary delay in test
ThanhDodeurOdoo Dec 5, 2025
cb9d79d
[wip] test disconnect disallowed
ThanhDodeurOdoo Dec 5, 2025
df52a63
[wip] test worker recovery
ThanhDodeurOdoo Dec 5, 2025
1547254
[wip] fixup
ThanhDodeurOdoo Dec 5, 2025
2e305c7
[wip] async recording termination
ThanhDodeurOdoo Dec 5, 2025
5ca38e4
[wip] testing codec env variables
ThanhDodeurOdoo Dec 5, 2025
b935561
[fix] early return in handle management
ThanhDodeurOdoo Dec 5, 2025
c5ef92e
[wip] timestamps for file state
ThanhDodeurOdoo Dec 5, 2025
a1037b7
[wip] overload better typing
ThanhDodeurOdoo Dec 5, 2025
da57b84
[fix] log location
ThanhDodeurOdoo Dec 5, 2025
a607887
[wip] cleanup
ThanhDodeurOdoo Dec 5, 2025
55d37a6
[fix] preserve metadata
ThanhDodeurOdoo Dec 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
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"],
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