aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/helpers/custom-jsonld-signature.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/helpers/custom-jsonld-signature.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/helpers/custom-jsonld-signature.ts')
-rw-r--r--server/helpers/custom-jsonld-signature.ts91
1 files changed, 0 insertions, 91 deletions
diff --git a/server/helpers/custom-jsonld-signature.ts b/server/helpers/custom-jsonld-signature.ts
deleted file mode 100644
index 3c706e372..000000000
--- a/server/helpers/custom-jsonld-signature.ts
+++ /dev/null
@@ -1,91 +0,0 @@
1import AsyncLRU from 'async-lru'
2import { logger } from './logger'
3
4import jsonld = require('jsonld')
5
6const CACHE = {
7 'https://w3id.org/security/v1': {
8 '@context': {
9 id: '@id',
10 type: '@type',
11
12 dc: 'http://purl.org/dc/terms/',
13 sec: 'https://w3id.org/security#',
14 xsd: 'http://www.w3.org/2001/XMLSchema#',
15
16 EcdsaKoblitzSignature2016: 'sec:EcdsaKoblitzSignature2016',
17 Ed25519Signature2018: 'sec:Ed25519Signature2018',
18 EncryptedMessage: 'sec:EncryptedMessage',
19 GraphSignature2012: 'sec:GraphSignature2012',
20 LinkedDataSignature2015: 'sec:LinkedDataSignature2015',
21 LinkedDataSignature2016: 'sec:LinkedDataSignature2016',
22 CryptographicKey: 'sec:Key',
23
24 authenticationTag: 'sec:authenticationTag',
25 canonicalizationAlgorithm: 'sec:canonicalizationAlgorithm',
26 cipherAlgorithm: 'sec:cipherAlgorithm',
27 cipherData: 'sec:cipherData',
28 cipherKey: 'sec:cipherKey',
29 created: { '@id': 'dc:created', '@type': 'xsd:dateTime' },
30 creator: { '@id': 'dc:creator', '@type': '@id' },
31 digestAlgorithm: 'sec:digestAlgorithm',
32 digestValue: 'sec:digestValue',
33 domain: 'sec:domain',
34 encryptionKey: 'sec:encryptionKey',
35 expiration: { '@id': 'sec:expiration', '@type': 'xsd:dateTime' },
36 expires: { '@id': 'sec:expiration', '@type': 'xsd:dateTime' },
37 initializationVector: 'sec:initializationVector',
38 iterationCount: 'sec:iterationCount',
39 nonce: 'sec:nonce',
40 normalizationAlgorithm: 'sec:normalizationAlgorithm',
41 owner: { '@id': 'sec:owner', '@type': '@id' },
42 password: 'sec:password',
43 privateKey: { '@id': 'sec:privateKey', '@type': '@id' },
44 privateKeyPem: 'sec:privateKeyPem',
45 publicKey: { '@id': 'sec:publicKey', '@type': '@id' },
46 publicKeyBase58: 'sec:publicKeyBase58',
47 publicKeyPem: 'sec:publicKeyPem',
48 publicKeyWif: 'sec:publicKeyWif',
49 publicKeyService: { '@id': 'sec:publicKeyService', '@type': '@id' },
50 revoked: { '@id': 'sec:revoked', '@type': 'xsd:dateTime' },
51 salt: 'sec:salt',
52 signature: 'sec:signature',
53 signatureAlgorithm: 'sec:signingAlgorithm',
54 signatureValue: 'sec:signatureValue'
55 }
56 }
57}
58
59const nodeDocumentLoader = jsonld.documentLoaders.node()
60
61const lru = new AsyncLRU({
62 max: 10,
63 load: (url, cb) => {
64 if (CACHE[url] !== undefined) {
65 logger.debug('Using cache for JSON-LD %s.', url)
66
67 return cb(null, {
68 contextUrl: null,
69 document: CACHE[url],
70 documentUrl: url
71 })
72 }
73
74 nodeDocumentLoader(url)
75 .then(value => cb(null, value))
76 .catch(err => cb(err))
77 }
78})
79
80/* eslint-disable no-import-assign */
81jsonld.documentLoader = (url) => {
82 return new Promise((res, rej) => {
83 lru.get(url, (err, value) => {
84 if (err) return rej(err)
85
86 return res(value)
87 })
88 })
89}
90
91export { jsonld }