aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/models/activitypub/objects/common-objects.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 /shared/models/activitypub/objects/common-objects.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 'shared/models/activitypub/objects/common-objects.ts')
-rw-r--r--shared/models/activitypub/objects/common-objects.ts130
1 files changed, 0 insertions, 130 deletions
diff --git a/shared/models/activitypub/objects/common-objects.ts b/shared/models/activitypub/objects/common-objects.ts
deleted file mode 100644
index db9c73658..000000000
--- a/shared/models/activitypub/objects/common-objects.ts
+++ /dev/null
@@ -1,130 +0,0 @@
1import { AbusePredefinedReasonsString } from '../../moderation/abuse/abuse-reason.model'
2
3export interface ActivityIdentifierObject {
4 identifier: string
5 name: string
6 url?: string
7}
8
9export interface ActivityIconObject {
10 type: 'Image'
11 url: string
12 mediaType: string
13 width?: number
14 height?: number
15}
16
17export type ActivityVideoUrlObject = {
18 type: 'Link'
19 mediaType: 'video/mp4' | 'video/webm' | 'video/ogg'
20 href: string
21 height: number
22 size: number
23 fps: number
24}
25
26export type ActivityPlaylistSegmentHashesObject = {
27 type: 'Link'
28 name: 'sha256'
29 mediaType: 'application/json'
30 href: string
31}
32
33export type ActivityVideoFileMetadataUrlObject = {
34 type: 'Link'
35 rel: [ 'metadata', any ]
36 mediaType: 'application/json'
37 height: number
38 href: string
39 fps: number
40}
41
42export type ActivityTrackerUrlObject = {
43 type: 'Link'
44 rel: [ 'tracker', 'websocket' | 'http' ]
45 name: string
46 href: string
47}
48
49export type ActivityStreamingPlaylistInfohashesObject = {
50 type: 'Infohash'
51 name: string
52}
53
54export type ActivityPlaylistUrlObject = {
55 type: 'Link'
56 mediaType: 'application/x-mpegURL'
57 href: string
58 tag?: ActivityTagObject[]
59}
60
61export type ActivityBitTorrentUrlObject = {
62 type: 'Link'
63 mediaType: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet'
64 href: string
65 height: number
66}
67
68export type ActivityMagnetUrlObject = {
69 type: 'Link'
70 mediaType: 'application/x-bittorrent;x-scheme-handler/magnet'
71 href: string
72 height: number
73}
74
75export type ActivityHtmlUrlObject = {
76 type: 'Link'
77 mediaType: 'text/html'
78 href: string
79}
80
81export interface ActivityHashTagObject {
82 type: 'Hashtag'
83 href?: string
84 name: string
85}
86
87export interface ActivityMentionObject {
88 type: 'Mention'
89 href?: string
90 name: string
91}
92
93export interface ActivityFlagReasonObject {
94 type: 'Hashtag'
95 name: AbusePredefinedReasonsString
96}
97
98export type ActivityTagObject =
99 ActivityPlaylistSegmentHashesObject
100 | ActivityStreamingPlaylistInfohashesObject
101 | ActivityVideoUrlObject
102 | ActivityHashTagObject
103 | ActivityMentionObject
104 | ActivityBitTorrentUrlObject
105 | ActivityMagnetUrlObject
106 | ActivityVideoFileMetadataUrlObject
107
108export type ActivityUrlObject =
109 ActivityVideoUrlObject
110 | ActivityPlaylistUrlObject
111 | ActivityBitTorrentUrlObject
112 | ActivityMagnetUrlObject
113 | ActivityHtmlUrlObject
114 | ActivityVideoFileMetadataUrlObject
115 | ActivityTrackerUrlObject
116
117export type ActivityPubAttributedTo = { type: 'Group' | 'Person', id: string } | string
118
119export interface ActivityTombstoneObject {
120 '@context'?: any
121 id: string
122 url?: string
123 type: 'Tombstone'
124 name?: string
125 formerType?: string
126 inReplyTo?: string
127 published: string
128 updated: string
129 deleted: string
130}