aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/core-utils
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
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')
-rw-r--r--shared/core-utils/crypto.ts14
-rw-r--r--shared/core-utils/index.ts2
-rw-r--r--shared/core-utils/path.ts34
-rw-r--r--shared/core-utils/uuid.ts32
4 files changed, 82 insertions, 0 deletions
diff --git a/shared/core-utils/crypto.ts b/shared/core-utils/crypto.ts
new file mode 100644
index 000000000..d6d1150d0
--- /dev/null
+++ b/shared/core-utils/crypto.ts
@@ -0,0 +1,14 @@
1import { BinaryToTextEncoding, createHash } from 'crypto'
2
3function sha256 (str: string | Buffer, encoding: BinaryToTextEncoding = 'hex') {
4 return createHash('sha256').update(str).digest(encoding)
5}
6
7function sha1 (str: string | Buffer, encoding: BinaryToTextEncoding = 'hex') {
8 return createHash('sha1').update(str).digest(encoding)
9}
10
11export {
12 sha256,
13 sha1
14}
diff --git a/shared/core-utils/index.ts b/shared/core-utils/index.ts
index e0a6a8087..ee5cd4412 100644
--- a/shared/core-utils/index.ts
+++ b/shared/core-utils/index.ts
@@ -1,8 +1,10 @@
1export * from './abuse' 1export * from './abuse'
2export * from './common' 2export * from './common'
3export * from './i18n' 3export * from './i18n'
4export * from './path'
4export * from './plugins' 5export * from './plugins'
5export * from './renderer' 6export * from './renderer'
6export * from './users' 7export * from './users'
7export * from './utils' 8export * from './utils'
8export * from './videos' 9export * from './videos'
10export * from './uuid'
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}
diff --git a/shared/core-utils/uuid.ts b/shared/core-utils/uuid.ts
new file mode 100644
index 000000000..f3c80e046
--- /dev/null
+++ b/shared/core-utils/uuid.ts
@@ -0,0 +1,32 @@
1import short, { uuid } from 'short-uuid'
2
3const translator = short()
4
5function buildUUID () {
6 return uuid()
7}
8
9function uuidToShort (uuid: string) {
10 if (!uuid) return uuid
11
12 return translator.fromUUID(uuid)
13}
14
15function shortToUUID (shortUUID: string) {
16 if (!shortUUID) return shortUUID
17
18 return translator.toUUID(shortUUID)
19}
20
21function isShortUUID (value: string) {
22 if (!value) return false
23
24 return value.length === translator.maxLength
25}
26
27export {
28 buildUUID,
29 uuidToShort,
30 shortToUUID,
31 isShortUUID
32}