mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 17:19:37 +02:00
Merge pull request #6258 from overleaf/bg-improve-routes-tool
[web] format output from bin/routes using escodegen GitOrigin-RevId: a2a3d4ffb044dfb214d167c411dd1b55fa18a3dd
This commit is contained in:
@@ -5,7 +5,8 @@ const acornWalk = require('acorn-walk')
|
||||
const fs = require('fs')
|
||||
const _ = require('lodash')
|
||||
const glob = require('glob')
|
||||
print = console.log
|
||||
const escodegen = require('escodegen')
|
||||
const print = console.log
|
||||
|
||||
const Methods = new Set([
|
||||
'get',
|
||||
@@ -16,7 +17,7 @@ const Methods = new Set([
|
||||
'connect',
|
||||
'options',
|
||||
'trace',
|
||||
'patch'
|
||||
'patch',
|
||||
])
|
||||
|
||||
const isMethod = str => {
|
||||
@@ -32,14 +33,15 @@ const routerCall = callExpression => {
|
||||
return false
|
||||
}
|
||||
const routerName = callee.object.name
|
||||
if ( // Match known names for the Express routers: app, webRouter, whateverRouter, etc...
|
||||
if (
|
||||
// Match known names for the Express routers: app, webRouter, whateverRouter, etc...
|
||||
isMethod(property.name) &&
|
||||
(routerName === 'app' || routerName.match('^.*[rR]outer$'))
|
||||
) {
|
||||
return {
|
||||
routerName: routerName,
|
||||
method: property.name,
|
||||
args: args
|
||||
args: args,
|
||||
}
|
||||
} else {
|
||||
return null
|
||||
@@ -47,10 +49,7 @@ const routerCall = callExpression => {
|
||||
}
|
||||
|
||||
const formatMethodCall = expression => {
|
||||
if (!expression.object || !expression.property) {
|
||||
return '????'
|
||||
}
|
||||
return `${expression.object.name}.${expression.property.name}`
|
||||
return escodegen.generate(expression, { format: { compact: true } })
|
||||
}
|
||||
|
||||
const parseAndPrintRoutesSync = path => {
|
||||
@@ -62,12 +61,11 @@ const parseAndPrintRoutesSync = path => {
|
||||
const call = routerCall(node)
|
||||
if (call) {
|
||||
const firstArg = _.first(call.args)
|
||||
const lastArg = _.last(call.args)
|
||||
try {
|
||||
print(
|
||||
` ${formatRouterName(call.routerName)}\t .${call.method} \t: ${
|
||||
firstArg.value
|
||||
} => ${formatMethodCall(lastArg)}`
|
||||
} => ${call.args.slice(1).map(formatMethodCall).join(' => ')}`
|
||||
)
|
||||
} catch (e) {
|
||||
print('>> Error')
|
||||
@@ -76,15 +74,15 @@ const parseAndPrintRoutesSync = path => {
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
const routerNameMapping = {
|
||||
'privateApiRouter': 'privateApi',
|
||||
'publicApiRouter': 'publicApi'
|
||||
privateApiRouter: 'privateApi',
|
||||
publicApiRouter: 'publicApi',
|
||||
}
|
||||
const formatRouterName = (name) => {
|
||||
const formatRouterName = name => {
|
||||
return routerNameMapping[name] || name
|
||||
}
|
||||
|
||||
@@ -92,7 +90,7 @@ const main = () => {
|
||||
// Take an optional filter to apply to file names
|
||||
const filter = process.argv[2] || null
|
||||
|
||||
if (filter && (filter === '--help' || filter == 'help')) {
|
||||
if (filter && (filter === '--help' || filter === 'help')) {
|
||||
print('')
|
||||
print(' Usage: bin/routes [filter]')
|
||||
print(' Examples:')
|
||||
@@ -104,7 +102,11 @@ const main = () => {
|
||||
|
||||
// Find all routers
|
||||
glob('*[rR]outer.js', { matchBase: true }, (err, files) => {
|
||||
for (file of files) {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
process.exit(1)
|
||||
}
|
||||
for (const file of files) {
|
||||
if (file.match('^node_modules.*$') || file.match('.*/public/.*')) {
|
||||
continue
|
||||
}
|
||||
|
||||
22
services/web/package-lock.json
generated
22
services/web/package-lock.json
generated
@@ -18859,9 +18859,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"estraverse": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
|
||||
"integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
|
||||
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
@@ -26506,7 +26506,7 @@
|
||||
"levn": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||
"integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
|
||||
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prelude-ls": "~1.1.2",
|
||||
@@ -29917,17 +29917,17 @@
|
||||
"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA=="
|
||||
},
|
||||
"optionator": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
|
||||
"integrity": "sha512-oCOQ8AIC2ciLy/sE2ehafRBleBgDLvzGhBRRev87sP7ovnbvQfqpc3XFI0DhHey2OfVoNV91W+GPC6B3540/5Q==",
|
||||
"version": "0.8.3",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
|
||||
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"deep-is": "~0.1.3",
|
||||
"fast-levenshtein": "~2.0.4",
|
||||
"fast-levenshtein": "~2.0.6",
|
||||
"levn": "~0.3.0",
|
||||
"prelude-ls": "~1.1.2",
|
||||
"type-check": "~0.3.2",
|
||||
"wordwrap": "~1.0.0"
|
||||
"word-wrap": "~1.2.3"
|
||||
}
|
||||
},
|
||||
"ordered-read-streams": {
|
||||
@@ -31645,7 +31645,7 @@
|
||||
"prelude-ls": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||
"integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
|
||||
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
||||
"dev": true
|
||||
},
|
||||
"prepend-http": {
|
||||
@@ -38050,7 +38050,7 @@
|
||||
"type-check": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
||||
"integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
|
||||
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prelude-ls": "~1.1.2"
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
"lint:fix": "eslint --fix .",
|
||||
"extract-translations": "i18next-scanner",
|
||||
"migrations": "east",
|
||||
"storybook": "start-storybook -p 6006 -s ./public"
|
||||
"storybook": "start-storybook -p 6006 -s ./public",
|
||||
"routes": "bin/routes"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 1 year",
|
||||
@@ -226,6 +227,7 @@
|
||||
"copy-webpack-plugin": "^5.1.1",
|
||||
"css-loader": "^3.5.2",
|
||||
"es6-promise": "^4.2.8",
|
||||
"escodegen": "^2.0.0",
|
||||
"eslint": "^8.2.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-config-standard": "^16.0.3",
|
||||
@@ -288,4 +290,4 @@
|
||||
"webpack-merge": "^4.2.2",
|
||||
"worker-loader": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user