mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-02-25 18:55:32 -06: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:
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'
|
||||
|
||||
Reference in New Issue
Block a user