aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/middlewares/validators/search.ts
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2023-07-31 14:34:36 +0200
committerChocobozzz <me@florianbigard.com>2023-08-11 15:02:33 +0200
commit3a4992633ee62d5edfbb484d9c6bcb3cf158489d (patch)
treee4510b39bdac9c318fdb4b47018d08f15368b8f0 /server/middlewares/validators/search.ts
parent04d1da5621d25d59bd5fa1543b725c497bf5d9a8 (diff)
downloadPeerTube-3a4992633ee62d5edfbb484d9c6bcb3cf158489d.tar.gz
PeerTube-3a4992633ee62d5edfbb484d9c6bcb3cf158489d.tar.zst
PeerTube-3a4992633ee62d5edfbb484d9c6bcb3cf158489d.zip
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)
Diffstat (limited to 'server/middlewares/validators/search.ts')
-rw-r--r--server/middlewares/validators/search.ts112
1 files changed, 0 insertions, 112 deletions
diff --git a/server/middlewares/validators/search.ts b/server/middlewares/validators/search.ts
deleted file mode 100644
index a63fd0893..000000000
--- a/server/middlewares/validators/search.ts
+++ /dev/null
@@ -1,112 +0,0 @@
1import express from 'express'
2import { query } from 'express-validator'
3import { isSearchTargetValid } from '@server/helpers/custom-validators/search'
4import { isHostValid } from '@server/helpers/custom-validators/servers'
5import { areUUIDsValid, isDateValid, isNotEmptyStringArray, toCompleteUUIDs } from '../../helpers/custom-validators/misc'
6import { areValidationErrors } from './shared'
7
8const videosSearchValidator = [
9 query('search')
10 .optional()
11 .not().isEmpty(),
12
13 query('host')
14 .optional()
15 .custom(isHostValid),
16
17 query('startDate')
18 .optional()
19 .custom(isDateValid).withMessage('Should have a start date that conforms to ISO 8601'),
20 query('endDate')
21 .optional()
22 .custom(isDateValid).withMessage('Should have a end date that conforms to ISO 8601'),
23
24 query('originallyPublishedStartDate')
25 .optional()
26 .custom(isDateValid).withMessage('Should have a published start date that conforms to ISO 8601'),
27 query('originallyPublishedEndDate')
28 .optional()
29 .custom(isDateValid).withMessage('Should have a published end date that conforms to ISO 8601'),
30
31 query('durationMin')
32 .optional()
33 .isInt(),
34 query('durationMax')
35 .optional()
36 .isInt(),
37
38 query('uuids')
39 .optional()
40 .toArray()
41 .customSanitizer(toCompleteUUIDs)
42 .custom(areUUIDsValid).withMessage('Should have valid array of uuid'),
43
44 query('searchTarget')
45 .optional()
46 .custom(isSearchTargetValid),
47
48 (req: express.Request, res: express.Response, next: express.NextFunction) => {
49 if (areValidationErrors(req, res)) return
50
51 return next()
52 }
53]
54
55const videoChannelsListSearchValidator = [
56 query('search')
57 .optional()
58 .not().isEmpty(),
59
60 query('host')
61 .optional()
62 .custom(isHostValid),
63
64 query('searchTarget')
65 .optional()
66 .custom(isSearchTargetValid),
67
68 query('handles')
69 .optional()
70 .toArray()
71 .custom(isNotEmptyStringArray).withMessage('Should have valid array of handles'),
72
73 (req: express.Request, res: express.Response, next: express.NextFunction) => {
74 if (areValidationErrors(req, res)) return
75
76 return next()
77 }
78]
79
80const videoPlaylistsListSearchValidator = [
81 query('search')
82 .optional()
83 .not().isEmpty(),
84
85 query('host')
86 .optional()
87 .custom(isHostValid),
88
89 query('searchTarget')
90 .optional()
91 .custom(isSearchTargetValid),
92
93 query('uuids')
94 .optional()
95 .toArray()
96 .customSanitizer(toCompleteUUIDs)
97 .custom(areUUIDsValid).withMessage('Should have valid array of uuid'),
98
99 (req: express.Request, res: express.Response, next: express.NextFunction) => {
100 if (areValidationErrors(req, res)) return
101
102 return next()
103 }
104]
105
106// ---------------------------------------------------------------------------
107
108export {
109 videosSearchValidator,
110 videoChannelsListSearchValidator,
111 videoPlaylistsListSearchValidator
112}