Useful to avoid circular dependencies.
*/
-import { join } from 'path'
-import { pseudoRandomBytes } from 'crypto'
-import {
- readdir,
- readFile,
- rename,
- unlink,
- writeFile,
- access,
- stat,
- Stats
-} from 'fs'
-import * as mkdirp from 'mkdirp'
import * as bcrypt from 'bcrypt'
import * as createTorrent from 'create-torrent'
-import * as rimraf from 'rimraf'
+import { pseudoRandomBytes } from 'crypto'
+import { readdir, readFile, rename, stat, Stats, unlink, writeFile } from 'fs'
+import * as mkdirp from 'mkdirp'
+import { join } from 'path'
import * as pem from 'pem'
-import * as jsonld from 'jsonld'
-import * as jsig from 'jsonld-signatures'
-jsig.use('jsonld', jsonld)
+import * as rimraf from 'rimraf'
+import { URL } from 'url'
+
+function sanitizeUrl (url: string) {
+ const urlObject = new URL(url)
+
+ if (urlObject.protocol === 'https:' && urlObject.port === '443') {
+ urlObject.port = ''
+ } else if (urlObject.protocol === 'http:' && urlObject.port === '80') {
+ urlObject.port = ''
+ }
+
+ return urlObject.href.replace(/\/$/, '')
+}
+
+// Don't import remote scheme from constants because we are in core utils
+function sanitizeHost (host: string, remoteScheme: string) {
+ const toRemove = remoteScheme === 'https' ? 443 : 80
+
+ return host.replace(new RegExp(`:${toRemove}$`), '')
+}
function isTestInstance () {
return process.env.NODE_ENV === 'test'
}
}
-const readFilePromise = promisify2<string, string, string>(readFile)
const readFileBufferPromise = promisify1<string, Buffer>(readFile)
const unlinkPromise = promisify1WithVoid<string>(unlink)
const renamePromise = promisify2WithVoid<string, string>(rename)
const readdirPromise = promisify1<string, string[]>(readdir)
const mkdirpPromise = promisify1<string, string>(mkdirp)
const pseudoRandomBytesPromise = promisify1<number, Buffer>(pseudoRandomBytes)
-const accessPromise = promisify1WithVoid<string | Buffer>(access)
const createPrivateKey = promisify1<number, { key: string }>(pem.createPrivateKey)
const getPublicKey = promisify1<string, { publicKey: string }>(pem.getPublicKey)
const bcryptComparePromise = promisify2<any, string, boolean>(bcrypt.compare)
const createTorrentPromise = promisify2<string, any, any>(createTorrent)
const rimrafPromise = promisify1WithVoid<string>(rimraf)
const statPromise = promisify1<string, Stats>(stat)
-const jsonldSignPromise = promisify2<object, { privateKeyPem: string, creator: string }, object>(jsig.sign)
-const jsonldVerifyPromise = promisify2<object, object, object>(jsig.verify)
// ---------------------------------------------------------------------------
root,
escapeHTML,
pageToStartAndCount,
+ sanitizeUrl,
+ sanitizeHost,
promisify0,
promisify1,
readdirPromise,
- readFilePromise,
readFileBufferPromise,
unlinkPromise,
renamePromise,
writeFilePromise,
mkdirpPromise,
pseudoRandomBytesPromise,
- accessPromise,
createPrivateKey,
getPublicKey,
bcryptComparePromise,
bcryptHashPromise,
createTorrentPromise,
rimrafPromise,
- statPromise,
- jsonldSignPromise,
- jsonldVerifyPromise
+ statPromise
}