From 3a4992633ee62d5edfbb484d9c6bcb3cf158489d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 31 Jul 2023 14:34:36 +0200 Subject: 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) --- support/doc/api/embeds.md | 2 +- support/doc/api/openapi.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'support/doc/api') diff --git a/support/doc/api/embeds.md b/support/doc/api/embeds.md index fd5507e38..989c8e98e 100644 --- a/support/doc/api/embeds.md +++ b/support/doc/api/embeds.md @@ -20,7 +20,7 @@ yarn add @peertube/embed-api Now just use the `PeerTubePlayer` class exported by the module: ```typescript -import { PeerTubePlayer } from '@peertube/embed-api' +import { PeerTubePlayer } from '@peertube/embed-api.js' ... ``` diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 0cbc58678..5d54a7a51 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -53,7 +53,7 @@ info: } ``` - We provide error `type` values for [a growing number of cases](https://github.com/Chocobozzz/PeerTube/blob/develop/shared/models/server/server-error-code.enum.ts), + We provide error `type` values for [a growing number of cases](https://github.com/Chocobozzz/PeerTube/blob/develop/packages/models/server/server-error-code.enum.ts), but it is still optional. Types are used to disambiguate errors that bear the same status code and are non-obvious: @@ -8752,7 +8752,7 @@ components: password: $ref: '#/components/schemas/password' UpdateMe: - # see shared/models/users/user-update-me.model.ts: + # see packages/models/users/user-update-me.model.ts: properties: password: $ref: '#/components/schemas/password' -- cgit v1.2.3