mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #5349 from overleaf/jpa-no-depreacted-api
[misc] fix eslint violations for node/no-depreacted-api GitOrigin-RevId: 0f7d64984da9e789c4ab95381db34afb89fa1a94
This commit is contained in:
parent
e34c83f3f7
commit
358e8b7424
16 changed files with 50 additions and 59 deletions
|
@ -19,14 +19,13 @@ const Path = require('path')
|
|||
const fs = require('fs')
|
||||
const Settings = require('@overleaf/settings')
|
||||
const logger = require('logger-sharelatex')
|
||||
const url = require('url')
|
||||
|
||||
module.exports = ForbidSymlinks = function (staticFn, root, options) {
|
||||
const expressStatic = staticFn(root, options)
|
||||
const basePath = Path.resolve(root)
|
||||
return function (req, res, next) {
|
||||
let file, project_id, result
|
||||
const path = __guard__(url.parse(req.url), x => x.pathname)
|
||||
const path = req.url
|
||||
// check that the path is of the form /project_id_or_name/path/to/file.log
|
||||
if ((result = path.match(/^\/?([a-zA-Z0-9_-]+)\/(.*)/))) {
|
||||
project_id = result[1]
|
||||
|
|
|
@ -17,8 +17,8 @@ const request = require('request').defaults({ jar: false })
|
|||
const fs = require('fs')
|
||||
const logger = require('logger-sharelatex')
|
||||
const settings = require('@overleaf/settings')
|
||||
const URL = require('url')
|
||||
const async = require('async')
|
||||
const { URL } = require('url')
|
||||
const { promisify } = require('util')
|
||||
|
||||
const oneMinute = 60 * 1000
|
||||
|
@ -43,12 +43,12 @@ module.exports = UrlFetcher = {
|
|||
return (_callback = function () {})
|
||||
}
|
||||
|
||||
const u = URL.parse(url)
|
||||
const u = new URL(url)
|
||||
if (
|
||||
settings.filestoreDomainOveride &&
|
||||
u.host !== settings.apis.clsiPerf.host
|
||||
) {
|
||||
url = `${settings.filestoreDomainOveride}${u.path}`
|
||||
url = `${settings.filestoreDomainOveride}${u.pathname}${u.search}`
|
||||
}
|
||||
var timeoutHandler = setTimeout(
|
||||
function () {
|
||||
|
|
|
@ -20,9 +20,7 @@
|
|||
"no-var": "off",
|
||||
|
||||
// do not allow importing of implicit dependencies.
|
||||
"import/no-extraneous-dependencies": "error",
|
||||
|
||||
"node/no-deprecated-api": "off"
|
||||
"import/no-extraneous-dependencies": "error"
|
||||
},
|
||||
"overrides": [
|
||||
// NOTE: changing paths may require updating them in the Makefile too.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const settings = require('@overleaf/settings')
|
||||
const Errors = require('../Errors/Errors')
|
||||
const httpProxy = require('express-http-proxy')
|
||||
const URL = require('url')
|
||||
const { URL } = require('url')
|
||||
|
||||
module.exports = {
|
||||
call(basePath) {
|
||||
|
@ -16,7 +16,8 @@ module.exports = {
|
|||
|
||||
return httpProxy(settings.apis.analytics.url, {
|
||||
proxyReqPathResolver(req) {
|
||||
const requestPath = URL.parse(req.url).path
|
||||
const u = new URL(req.originalUrl, settings.siteUrl)
|
||||
const requestPath = u.pathname + u.search
|
||||
return `${basePath}${requestPath}`
|
||||
},
|
||||
proxyReqOptDecorator(proxyReqOpts, srcReq) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const OError = require('@overleaf/o-error')
|
||||
const url = require('url')
|
||||
const { URL } = require('url')
|
||||
const settings = require('@overleaf/settings')
|
||||
const logger = require('logger-sharelatex')
|
||||
const V1Api = require('../V1/V1Api')
|
||||
|
@ -78,5 +78,5 @@ function setV1AsHostIfRelativeURL(urlString) {
|
|||
// As it only applies if the second argument is not absolute, we can use it to transform relative URLs into
|
||||
// absolute ones using v1 as the host. If the URL is absolute (e.g. a filepicker one), then the base
|
||||
// argument is just ignored
|
||||
return url.resolve(settings.apis.v1.url, urlString)
|
||||
return new URL(urlString, settings.apis.v1.url).href
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ const request = require('request')
|
|||
const ProjectGetter = require('../Project/ProjectGetter')
|
||||
const ProjectEntityHandler = require('../Project/ProjectEntityHandler')
|
||||
const logger = require('logger-sharelatex')
|
||||
const Url = require('url')
|
||||
const { URL } = require('url')
|
||||
const OError = require('@overleaf/o-error')
|
||||
|
||||
const ClsiCookieManager = require('./ClsiCookieManager')(
|
||||
|
@ -535,7 +535,7 @@ const ClsiManager = {
|
|||
for (const file of rawOutputFiles) {
|
||||
outputFiles.push({
|
||||
path: file.path, // the clsi is now sending this to web
|
||||
url: Url.parse(file.url).path, // the location of the file on the clsi, excluding the host part
|
||||
url: new URL(file.url).pathname, // the location of the file on the clsi, excluding the host part
|
||||
type: file.type,
|
||||
build: file.build,
|
||||
contentId: file.contentId,
|
||||
|
|
|
@ -2,7 +2,7 @@ const logger = require('logger-sharelatex')
|
|||
const Settings = require('@overleaf/settings')
|
||||
const querystring = require('querystring')
|
||||
const _ = require('lodash')
|
||||
const Url = require('url')
|
||||
const { URL } = require('url')
|
||||
const Path = require('path')
|
||||
const moment = require('moment')
|
||||
const pug = require('pug-runtime')
|
||||
|
@ -221,9 +221,10 @@ module.exports = function (webRouter, privateApiRouter, publicApiRouter) {
|
|||
}
|
||||
// Don't include the query string parameters, otherwise Google
|
||||
// treats ?nocdn=true as the canonical version
|
||||
const parsedOriginalUrl = Url.parse(req.originalUrl)
|
||||
const parsedOriginalUrl = new URL(req.originalUrl, Settings.siteUrl)
|
||||
res.locals.currentUrl = parsedOriginalUrl.pathname
|
||||
res.locals.currentUrlWithQueryParams = parsedOriginalUrl.path
|
||||
res.locals.currentUrlWithQueryParams =
|
||||
parsedOriginalUrl.pathname + parsedOriginalUrl.search
|
||||
res.locals.capitalize = function (string) {
|
||||
if (string.length === 0) {
|
||||
return ''
|
||||
|
|
|
@ -2,7 +2,7 @@ const request = require('request')
|
|||
const settings = require('@overleaf/settings')
|
||||
const _ = require('underscore')
|
||||
const logger = require('logger-sharelatex')
|
||||
const URL = require('url')
|
||||
const { URL } = require('url')
|
||||
const { promisify, promisifyMultiResult } = require('../util/promises')
|
||||
|
||||
const currencyMappings = {
|
||||
|
@ -63,7 +63,7 @@ function getDetails(ip, callback) {
|
|||
}
|
||||
ip = ip.trim().split(' ')[0]
|
||||
const opts = {
|
||||
url: URL.resolve(settings.apis.geoIpLookup.url, ip),
|
||||
url: new URL(ip, settings.apis.geoIpLookup.url).href,
|
||||
timeout: 1000,
|
||||
json: true,
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ let ProxyManager
|
|||
const settings = require('@overleaf/settings')
|
||||
const logger = require('logger-sharelatex')
|
||||
const request = require('request')
|
||||
const URL = require('url')
|
||||
const { URL, URLSearchParams } = require('url')
|
||||
|
||||
module.exports = ProxyManager = {
|
||||
apply(publicApiRouter) {
|
||||
|
@ -68,12 +68,11 @@ module.exports = ProxyManager = {
|
|||
// make a URL from a proxy target.
|
||||
// if the query is specified, set/replace the target's query with the given query
|
||||
var makeTargetUrl = function (target, req) {
|
||||
const targetUrl = URL.parse(parseSettingUrl(target, req))
|
||||
const targetUrl = new URL(parseSettingUrl(target, req))
|
||||
if (req.query != null && Object.keys(req.query).length > 0) {
|
||||
targetUrl.query = req.query
|
||||
targetUrl.search = null // clear `search` as it takes precedence over `query`
|
||||
targetUrl.search = new URLSearchParams(req.query).toString()
|
||||
}
|
||||
return targetUrl.format()
|
||||
return targetUrl.href
|
||||
}
|
||||
|
||||
var parseSettingUrl = function (target, { params }) {
|
||||
|
|
|
@ -14,9 +14,7 @@
|
|||
*/
|
||||
let RedirectManager
|
||||
const settings = require('@overleaf/settings')
|
||||
const logger = require('logger-sharelatex')
|
||||
const URL = require('url')
|
||||
const querystring = require('querystring')
|
||||
const { URL } = require('url')
|
||||
|
||||
module.exports = RedirectManager = {
|
||||
apply(webRouter) {
|
||||
|
@ -76,7 +74,7 @@ module.exports = RedirectManager = {
|
|||
// have differences between Express and Rails, so safer to just pass the raw
|
||||
// string
|
||||
var getQueryString = function (req) {
|
||||
const { search } = URL.parse(req.url)
|
||||
const { search } = new URL(req.originalUrl, settings.siteUrl)
|
||||
if (search) {
|
||||
return search
|
||||
} else {
|
||||
|
|
|
@ -7,7 +7,7 @@ function unsupportedBrowserMiddleware(req, res, next) {
|
|||
if (!Settings.unsupportedBrowsers) return next()
|
||||
|
||||
// Prevent redirect loop
|
||||
const path = Url.parse(req.url).pathname
|
||||
const path = req.path
|
||||
if (path === '/unsupported-browser') return next()
|
||||
|
||||
const userAgent = req.headers['user-agent']
|
||||
|
|
|
@ -8,13 +8,13 @@ class MockClsiApi extends AbstractMockApi {
|
|||
error: null,
|
||||
outputFiles: [
|
||||
{
|
||||
url: `/project/${req.params.project_id}/build/1234/output/project.pdf`,
|
||||
url: `http://clsi:3013/project/${req.params.project_id}/build/1234/output/project.pdf`,
|
||||
path: 'project.pdf',
|
||||
type: 'pdf',
|
||||
build: 1234,
|
||||
},
|
||||
{
|
||||
url: `/project/${req.params.project_id}/build/1234/output/project.log`,
|
||||
url: `http://clsi:3013/project/${req.params.project_id}/build/1234/output/project.log`,
|
||||
path: 'project.log',
|
||||
type: 'log',
|
||||
build: 1234,
|
||||
|
|
|
@ -23,7 +23,7 @@ const modulePath = path.join(
|
|||
|
||||
describe('PasswordResetHandler', function () {
|
||||
beforeEach(function () {
|
||||
this.settings = { siteUrl: 'www.sharelatex.com' }
|
||||
this.settings = { siteUrl: 'https://www.overleaf.com' }
|
||||
this.OneTimeTokenHandler = {
|
||||
getNewToken: sinon.stub(),
|
||||
getValueFromTokenAndExpire: sinon.stub(),
|
||||
|
|
|
@ -27,7 +27,7 @@ describe('ProjectController', function () {
|
|||
url: 'chat.com',
|
||||
},
|
||||
},
|
||||
siteUrl: 'mysite.com',
|
||||
siteUrl: 'https://overleaf.com',
|
||||
algolia: {},
|
||||
}
|
||||
this.brandVariationDetails = {
|
||||
|
|
|
@ -27,7 +27,7 @@ describe('UserEmailsConfirmationHandler', function () {
|
|||
this.UserEmailsConfirmationHandler = SandboxedModule.require(modulePath, {
|
||||
requires: {
|
||||
'@overleaf/settings': (this.settings = {
|
||||
siteUrl: 'emails.example.com',
|
||||
siteUrl: 'https://emails.example.com',
|
||||
}),
|
||||
'../Security/OneTimeTokenHandler': (this.OneTimeTokenHandler = {}),
|
||||
'./UserUpdater': (this.UserUpdater = {}),
|
||||
|
@ -80,7 +80,7 @@ describe('UserEmailsConfirmationHandler', function () {
|
|||
.calledWith('confirmEmail', {
|
||||
to: this.email,
|
||||
confirmEmailUrl:
|
||||
'emails.example.com/user/emails/confirm?token=new-token',
|
||||
'https://emails.example.com/user/emails/confirm?token=new-token',
|
||||
sendingUser_id: this.user_id,
|
||||
})
|
||||
.should.equal(true)
|
||||
|
|
|
@ -82,14 +82,6 @@ describe('ProxyManager', function () {
|
|||
return this.request.reset()
|
||||
})
|
||||
|
||||
it('does not calls next when match', function () {
|
||||
const target = '/'
|
||||
this.settings.proxyUrls[this.proxyPath] = target
|
||||
this.proxyManager.createProxy(target)(this.req, this.res, this.next)
|
||||
sinon.assert.notCalled(this.next)
|
||||
return sinon.assert.called(this.request)
|
||||
})
|
||||
|
||||
it('proxy full URL', function () {
|
||||
const targetUrl = 'https://user:pass@foo.bar:123/pa/th.ext?query#hash'
|
||||
this.settings.proxyUrls[this.proxyPath] = targetUrl
|
||||
|
@ -98,31 +90,32 @@ describe('ProxyManager', function () {
|
|||
})
|
||||
|
||||
it('overwrite query', function () {
|
||||
const targetUrl = 'foo.bar/baz?query'
|
||||
const targetUrl = 'https://foo.bar/baz?query'
|
||||
this.req.query = { requestQuery: 'important' }
|
||||
this.settings.proxyUrls[this.proxyPath] = targetUrl
|
||||
this.proxyManager.createProxy(targetUrl)(this.req)
|
||||
const newTargetUrl = 'foo.bar/baz?requestQuery=important'
|
||||
const newTargetUrl = 'https://foo.bar/baz?requestQuery=important'
|
||||
return assertCalledWith(this.request, { url: newTargetUrl })
|
||||
})
|
||||
|
||||
it('handles target objects', function () {
|
||||
const target = { baseUrl: 'api.v1', path: '/pa/th' }
|
||||
const target = { baseUrl: 'https://api.v1', path: '/pa/th' }
|
||||
this.settings.proxyUrls[this.proxyPath] = target
|
||||
this.proxyManager.createProxy(target)(this.req, this.res, this.next)
|
||||
return assertCalledWith(this.request, { url: 'api.v1/pa/th' })
|
||||
return assertCalledWith(this.request, { url: 'https://api.v1/pa/th' })
|
||||
})
|
||||
|
||||
it('handles missing baseUrl', function () {
|
||||
const target = { path: '/pa/th' }
|
||||
this.settings.proxyUrls[this.proxyPath] = target
|
||||
this.proxyManager.createProxy(target)(this.req, this.res, this.next)
|
||||
return assertCalledWith(this.request, { url: 'undefined/pa/th' })
|
||||
expect(() =>
|
||||
this.proxyManager.createProxy(target)(this.req, this.res, this.next)
|
||||
).to.throw
|
||||
})
|
||||
|
||||
it('handles dynamic path', function () {
|
||||
const target = {
|
||||
baseUrl: 'api.v1',
|
||||
baseUrl: 'https://api.v1',
|
||||
path(params) {
|
||||
return `/resource/${params.id}`
|
||||
},
|
||||
|
@ -132,12 +125,14 @@ describe('ProxyManager', function () {
|
|||
this.req.route.path = '/res/:id'
|
||||
this.req.params = { id: 123 }
|
||||
this.proxyManager.createProxy(target)(this.req, this.res, this.next)
|
||||
return assertCalledWith(this.request, { url: 'api.v1/resource/123' })
|
||||
return assertCalledWith(this.request, {
|
||||
url: 'https://api.v1/resource/123',
|
||||
})
|
||||
})
|
||||
|
||||
it('set arbitrary options on request', function () {
|
||||
const target = {
|
||||
baseUrl: 'api.v1',
|
||||
baseUrl: 'https://api.v1',
|
||||
path: '/foo',
|
||||
options: { foo: 'bar' },
|
||||
}
|
||||
|
@ -146,12 +141,12 @@ describe('ProxyManager', function () {
|
|||
this.proxyManager.createProxy(target)(this.req, this.res, this.next)
|
||||
return assertCalledWith(this.request, {
|
||||
foo: 'bar',
|
||||
url: 'api.v1/foo',
|
||||
url: 'https://api.v1/foo',
|
||||
})
|
||||
})
|
||||
|
||||
it('passes cookies', function () {
|
||||
const target = { baseUrl: 'api.v1', path: '/foo' }
|
||||
const target = { baseUrl: 'https://api.v1', path: '/foo' }
|
||||
this.req.url = '/foo'
|
||||
this.req.route.path = '/foo'
|
||||
this.req.headers = { cookie: 'cookie' }
|
||||
|
@ -160,13 +155,13 @@ describe('ProxyManager', function () {
|
|||
headers: {
|
||||
Cookie: 'cookie',
|
||||
},
|
||||
url: 'api.v1/foo',
|
||||
url: 'https://api.v1/foo',
|
||||
})
|
||||
})
|
||||
|
||||
it('passes body for post', function () {
|
||||
const target = {
|
||||
baseUrl: 'api.v1',
|
||||
baseUrl: 'https://api.v1',
|
||||
path: '/foo',
|
||||
options: { method: 'post' },
|
||||
}
|
||||
|
@ -179,13 +174,13 @@ describe('ProxyManager', function () {
|
|||
foo: 'bar',
|
||||
},
|
||||
method: 'post',
|
||||
url: 'api.v1/foo',
|
||||
url: 'https://api.v1/foo',
|
||||
})
|
||||
})
|
||||
|
||||
it('passes body for put', function () {
|
||||
const target = {
|
||||
baseUrl: 'api.v1',
|
||||
baseUrl: 'https://api.v1',
|
||||
path: '/foo',
|
||||
options: { method: 'put' },
|
||||
}
|
||||
|
@ -198,7 +193,7 @@ describe('ProxyManager', function () {
|
|||
foo: 'bar',
|
||||
},
|
||||
method: 'put',
|
||||
url: 'api.v1/foo',
|
||||
url: 'https://api.v1/foo',
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue