mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-03 09:49:20 +02:00
Migrate server to ESM
Sorry for the very big commit that may lead to git log issues and merge conflicts, but it's a major step forward: * Server can be faster at startup because imports() are async and we can easily lazy import big modules * Angular doesn't seem to support ES import (with .js extension), so we had to correctly organize peertube into a monorepo: * Use yarn workspace feature * Use typescript reference projects for dependencies * Shared projects have been moved into "packages", each one is now a node module (with a dedicated package.json/tsconfig.json) * server/tools have been moved into apps/ and is now a dedicated app bundled and published on NPM so users don't have to build peertube cli tools manually * server/tests have been moved into packages/ so we don't compile them every time we want to run the server * Use isolatedModule option: * Had to move from const enum to const (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums) * Had to explictely specify "type" imports when used in decorators * Prefer tsx (that uses esbuild under the hood) instead of ts-node to load typescript files (tests with mocha or scripts): * To reduce test complexity as esbuild doesn't support decorator metadata, we only test server files that do not import server models * We still build tests files into js files for a faster CI * Remove unmaintained peertube CLI import script * Removed some barrels to speed up execution (less imports)
This commit is contained in:
parent
04d1da5621
commit
3a4992633e
2196 changed files with 12690 additions and 11574 deletions
31
.github/CONTRIBUTING.md
vendored
31
.github/CONTRIBUTING.md
vendored
|
@ -53,13 +53,25 @@ interested in, user interface, design, decentralized architecture...
|
|||
You can help to write the documentation of the REST API, code, architecture,
|
||||
demonstrations.
|
||||
|
||||
For the REST API you can see the documentation in [/support/doc/api](https://github.com/Chocobozzz/PeerTube/tree/develop/support/doc/api) directory.
|
||||
Then, you can just open the `openapi.yaml` file in a special editor like [http://editor.swagger.io/](http://editor.swagger.io/) to easily see and edit the documentation. You can also use [redoc-cli](https://github.com/Redocly/redoc/blob/master/cli/README.md) and run `redoc-cli serve --watch support/doc/api/openapi.yaml` to see the final result.
|
||||
### User documentation
|
||||
|
||||
The official user documentation is available on https://docs.joinpeertube.org/
|
||||
|
||||
You can update it by writing markdown files in the following repository: https://framagit.org/framasoft/peertube/documentation/
|
||||
|
||||
### REST API documentation
|
||||
|
||||
The [REST API documentation](https://docs.joinpeertube.org/api-rest-reference.html) is generated from `support/doc/api/openapi.yaml` file.
|
||||
To quickly get a preview of your changes, you can generate the documentation *on the fly* using the following command:
|
||||
|
||||
```
|
||||
npx @redocly/cli preview-docs ./support/doc/api/openapi.yaml
|
||||
```
|
||||
|
||||
Some hints:
|
||||
* Routes are defined in [/server/controllers/](https://github.com/Chocobozzz/PeerTube/tree/develop/server/controllers) directory
|
||||
* Parameters validators are defined in [/server/middlewares/validators](https://github.com/Chocobozzz/PeerTube/tree/develop/server/middlewares/validators) directory
|
||||
* Models sent/received by the controllers are defined in [/shared/models](https://github.com/Chocobozzz/PeerTube/tree/develop/shared/models) directory
|
||||
* Routes are defined in [/server/server/controllers/](https://github.com/Chocobozzz/PeerTube/tree/develop/server/server/controllers) directory
|
||||
* Parameters validators are defined in [/server/server/middlewares/validators](https://github.com/Chocobozzz/PeerTube/tree/develop/server/server/middlewares/validators) directory
|
||||
* Models sent/received by the controllers are defined in [/packages/models](https://github.com/Chocobozzz/PeerTube/tree/develop/packages/models) directory
|
||||
|
||||
|
||||
## Improve the website
|
||||
|
@ -242,15 +254,6 @@ To test emails with PeerTube:
|
|||
* Run [mailslurper](http://mailslurper.com/)
|
||||
* Run PeerTube using mailslurper SMTP port: `NODE_CONFIG='{ "smtp": { "hostname": "localhost", "port": 2500, "tls": false } }' NODE_ENV=dev node dist/server`
|
||||
|
||||
### OpenAPI documentation
|
||||
|
||||
The [REST API documentation](https://docs.joinpeertube.org/api-rest-reference.html) is generated from `support/doc/api/openapi.yaml` file.
|
||||
To quickly get a preview of your changes, you can generate the documentation *on the fly* using the following command:
|
||||
|
||||
```
|
||||
npx @redocly/cli preview-docs ./support/doc/api/openapi.yaml
|
||||
```
|
||||
|
||||
### Environment variables
|
||||
|
||||
PeerTube can be configured using environment variables.
|
||||
|
|
|
@ -32,4 +32,12 @@ runs:
|
|||
|
||||
- name: Install peertube runner dependencies
|
||||
shell: bash
|
||||
run: cd packages/peertube-runner && yarn install --frozen-lockfile
|
||||
run: cd apps/peertube-runner && yarn install --frozen-lockfile
|
||||
|
||||
- name: Install peertube CLI dependencies
|
||||
shell: bash
|
||||
run: cd apps/peertube-cli && yarn install --frozen-lockfile
|
||||
|
||||
- name: Display PeerTube dependencies
|
||||
shell: bash
|
||||
run: ls -l node_modules/@peertube
|
||||
|
|
2
.github/workflows/benchmark.yml
vendored
2
.github/workflows/benchmark.yml
vendored
|
@ -71,7 +71,7 @@ jobs:
|
|||
|
||||
- name: Run benchmark
|
||||
run: |
|
||||
node dist/scripts/benchmark.js -o benchmark.json
|
||||
npm run benchmark-server -- -o benchmark.json
|
||||
|
||||
- name: Display result
|
||||
run: |
|
||||
|
|
2
.github/workflows/codeql/codeql-config.yml
vendored
2
.github/workflows/codeql/codeql-config.yml
vendored
|
@ -1,4 +1,4 @@
|
|||
name: "PeerTube CodeQL config"
|
||||
|
||||
paths-ignore:
|
||||
- server/tests
|
||||
- packages/tests
|
||||
|
|
4
.github/workflows/stats.yml
vendored
4
.github/workflows/stats.yml
vendored
|
@ -36,12 +36,12 @@ jobs:
|
|||
run: |
|
||||
wget "https://github.com/boyter/scc/releases/download/v3.0.0/scc-3.0.0-x86_64-unknown-linux.zip"
|
||||
unzip "scc-3.0.0-x86_64-unknown-linux.zip"
|
||||
./scc --format=json --exclude-dir .git,node_modules,client/node_modules,client/dist,dist,yarn.lock,client/yarn.lock,client/src/locale,test1,test2,test3,client/src/assets/images,config,storage,server/tests/fixtures,support/openapi,.idea,.vscode,docker-volume,ffmpeg-3,ffmpeg-4 > ./scc.json
|
||||
./scc --format=json --exclude-dir .git,node_modules,client/node_modules,client/dist,dist,yarn.lock,client/yarn.lock,client/src/locale,test1,test2,test3,client/src/assets/images,config,storage,packages/tests/fixtures,support/openapi,.idea,.vscode,docker-volume,ffmpeg-3,ffmpeg-4 > ./scc.json
|
||||
|
||||
- name: PeerTube client stats
|
||||
if: github.event_name != 'pull_request'
|
||||
run: |
|
||||
node dist/scripts/client-build-stats.js > client-build-stats.json
|
||||
npm run client:build-stats > client-build-stats.json
|
||||
|
||||
- name: PeerTube client lighthouse report
|
||||
if: github.event_name != 'pull_request'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue