aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/core-utils/path.ts
diff options
context:
space:
mode:
authorlutangar <johan.dufour@gmail.com>2021-11-02 19:11:20 +0100
committerChocobozzz <chocobozzz@cpy.re>2021-12-16 10:08:43 +0100
commit06aad80165d09a8863ab8103149a8ff518b10641 (patch)
treea97fa31f3ade29ff807ca1b77704eb47085ab99d /shared/core-utils/path.ts
parent854f533c12bd2b88c70f9d5aeab770059e9a6861 (diff)
downloadPeerTube-06aad80165d09a8863ab8103149a8ff518b10641.tar.gz
PeerTube-06aad80165d09a8863ab8103149a8ff518b10641.tar.zst
PeerTube-06aad80165d09a8863ab8103149a8ff518b10641.zip
chore(refactor): remove shared folder dependencies to the server
Many files from the `shared` folder were importing files from the `server` folder. When attempting to use Typescript project references to describe dependencies, it highlighted a circular dependency beetween `shared` <-> `server`. The Typescript project forbid such usages. Using project references greatly improve performance by rebuilding only the updated project and not all source files. > see https://www.typescriptlang.org/docs/handbook/project-references.html
Diffstat (limited to 'shared/core-utils/path.ts')
-rw-r--r--shared/core-utils/path.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/shared/core-utils/path.ts b/shared/core-utils/path.ts
new file mode 100644
index 000000000..b1a45d69b
--- /dev/null
+++ b/shared/core-utils/path.ts
@@ -0,0 +1,34 @@
1import { basename, extname, isAbsolute, join, resolve } from 'path'
2
3let rootPath: string
4
5function root () {
6 if (rootPath) return rootPath
7
8 rootPath = __dirname
9
10 if (basename(rootPath) === 'core-utils') rootPath = resolve(rootPath, '..')
11 if (basename(rootPath) === 'shared') rootPath = resolve(rootPath, '..')
12 if (basename(rootPath) === 'server') rootPath = resolve(rootPath, '..')
13 if (basename(rootPath) === 'dist') rootPath = resolve(rootPath, '..')
14
15 return rootPath
16}
17
18function buildPath (path: string) {
19 if (isAbsolute(path)) return path
20
21 return join(root(), path)
22}
23
24function getLowercaseExtension (filename: string) {
25 const ext = extname(filename) || ''
26
27 return ext.toLowerCase()
28}
29
30export {
31 root,
32 buildPath,
33 getLowercaseExtension
34}